/// <summary> /// Načte komponenty, získá ID události, připraví text, načte data, vyplní kalendář tučnými daty a ty pak nechá zobrazit, zapně alarm na upozorňování /// </summary> /// <param name="udalost">ID události, která s ebude upravovat</param> public Uprava(int udalost) { InitializeComponent(); Udalost = udalost; this.Text = "Úprava události ID: " + Udalost.ToString(); NactiData(); Obecne.VyplnKalendar(monthCalendar); monthCalendar.UpdateBoldedDates(); alarm.Zapnout(); }
/// <summary> /// Načte data pro kalendář, aby se vedělo co je třeba ztučnit, nevinutí si to okamžitou aktualizaci kalendáře, data budou načtena pro budoucí potřebu (například přechod na jiný měsíc) /// </summary> private void AktualizujKalendar() { Obecne.VyplnKalendar(monthCalendar, checkBoxSplnenost.Checked); }
/// <summary> /// Načte data pro kalendář, aby se vedělo co je třeba ztučnit, provede okamžité zobrazení načtených dat /// </summary> private void AktualizujKalendarNasilne() { Obecne.VyplnKalendar(monthCalendar, checkBoxSplnenost.Checked); monthCalendar.UpdateBoldedDates(); }
/// <summary> /// Obsluha události kliknutí na Uložit ve formuláři pro nové události /// </summary> private void buttonUlozit_Click(object sender, EventArgs e) { if (comboBoxTyp.SelectedIndex == -1) // Nic nebylo vybráno? Něco se vybrat musí { Obecne.ZobrazZpravu("Nevybral jsi typ události!", "Pozor", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (textBoxNadpis.Text == "") // Má ta událost nějaký název? Nějak se to musí přece jmenovat { Obecne.ZobrazZpravu("Nadpis (nebo jméno) nemůže být prázdný!", "Pozor", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (comboBoxTyp.SelectedIndex == (int)Obecne.UdalostiTypy.narozeniny) // Jsou to narozeniny? { try { int rokNarozeni = Convert.ToInt32(textBoxZprava.Text); // Pokusíme se získat rok narození z textu, přinejhorším vyhodíme vyjimku rokNarozeni = Math.Abs(rokNarozeni); // Záp**né roky nebereme textBoxZprava.Text = rokNarozeni.ToString(); // Upravený rok narození vložíme zpátky do Zprávy } catch // Pokud se převod nezdařil, tak se zobrazí info o tom { Obecne.ZobrazZpravu("Nebyl zadán platný rok narození!", "Pozor", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } string nadpis = textBoxNadpis.Text; nadpis = Obecne.OdstranProblemoveZnaky(nadpis); // Odstraníme znaky z nadpisu, jen ty které by mohly dělat problémy, případně je nahradíme vhodnějšími string zprava = textBoxZprava.Text; zprava = Obecne.OdstranProblemoveZnaky(zprava); // Odstraníme znaky z textu, jen ty které by mohly dělat problémy, případně je nahradíme vhodnějšími int hodiny; int minuty; if (comboBoxTyp.SelectedIndex != (int)Obecne.UdalostiTypy.narozeniny) // Pokud nejsou narozeniny, tak se pokusíme získat čas konání { try { hodiny = Convert.ToInt32(textBoxCasHodina.Text); // Pokusíme se získat z textu hodinu konání hodiny = hodiny % 24; // Převedeme ji na normální rozmezí } catch { hodiny = 0; // Když se nám převod nezdařil, tak hodin bude nula } try { minuty = Convert.ToInt32(textBoxCasMinuta.Text); // Pokusíme se získat z textu minutu konání minuty = minuty % 60; // Převedeme ji na normální rozmezí } catch { minuty = 0; // Když se nám převod nezdařil, tak minut bude nula } } else // Pro narozeniny bude nula minut a nula hodin { hodiny = 0; minuty = 0; } if (hodiny < 0) // Hodiny nemohou být záp**né, takže budou nejméně nula { hodiny = 0; } if (minuty < 0) // Ani minuty nemohou být záp**né, takže budou také nejméně nula { minuty = 0; } monthCalendar.SelectionStart = monthCalendar.SelectionStart.AddHours(hodiny); // Získané hodiny zaznamenáme do kalendáře monthCalendar.SelectionStart = monthCalendar.SelectionStart.AddMinutes(minuty); // Získané minuty zaznamenáme do kalendáře DateTime upozorneni; if (radioButtonVlastni.Checked == true) // Pokud si chce sám zvolit dobu upozornění { upozorneni = new DateTime(dateTimePickerUpozorneni.Value.Year, dateTimePickerUpozorneni.Value.Month, dateTimePickerUpozorneni.Value.Day, 0, 0, 0); // Získáme ji z dateTimePickeru try { hodiny = Convert.ToInt32(textBoxCasHodinaUpozorneni.Text); // Pokusíme se získat z textu hodiny if (hodiny < 0) // Hodiny nesmějí být záp**né, nejméně nulové musejí být { hodiny = 0; } hodiny = hodiny % 24; // Také by mělý být ve správném rozmezí minuty = Convert.ToInt32(textBoxCasMinutaUpozorneni.Text); // Pokusíme se získat z textu minuty if (minuty < 0) // Minuty nesmějí být záp**né, nejméně nulové musejí být { minuty = 0; } minuty = minuty % 60; // Také by měly být ve správném rozmezí } catch // Když se nějaký převod nepovedl, tak hodiny nastavíme na nula, minuty dle upozornění dopředu (ale záp**né, aby se dobře odečítaly od doby konání), upozornění se bude čerpat z doby konání { hodiny = 0; minuty = Nastaveni.UpozorneniDopredu * -1; upozorneni = new DateTime(monthCalendar.SelectionStart.Year, monthCalendar.SelectionStart.Month, monthCalendar.SelectionStart.Day, monthCalendar.SelectionStart.Hour, monthCalendar.SelectionStart.Minute, monthCalendar.SelectionStart.Second); // Získáme dobu konání } } else // Pokud chceme automatické upozornění { upozorneni = new DateTime(monthCalendar.SelectionStart.Year, monthCalendar.SelectionStart.Month, monthCalendar.SelectionStart.Day, monthCalendar.SelectionStart.Hour, monthCalendar.SelectionStart.Minute, monthCalendar.SelectionStart.Second); // Získáme dobu konání hodiny = 0; // S hodinami nebudeme hýbat minuty = Nastaveni.UpozorneniDopredu * -1; // Minuty budou mít automatickou hodnotu dle Upozornění dopředu a zápornou pro lepší odečítání } upozorneni = upozorneni.AddHours(hodiny); // K době upozornění přidáme hodiny upozorneni = upozorneni.AddMinutes(minuty); // K době upozornění přidáme minuty if (upozorneni > monthCalendar.SelectionStart) // Pokud by doba upozornění byla až po události, tak jí nastavíme automaticky před událost { upozorneni = new DateTime(monthCalendar.SelectionStart.Year, monthCalendar.SelectionStart.Month, monthCalendar.SelectionStart.Day, monthCalendar.SelectionStart.Hour, monthCalendar.SelectionStart.Minute, monthCalendar.SelectionStart.Second); upozorneni = upozorneni.AddMinutes(Nastaveni.UpozorneniDopredu * -1); } string upozornit; if (radioButtonVlastni.Checked == true) // Je zvoleno vlastní upozornění? { if (upozorneni <= DateTime.Now) // Pokud už to upozornění mělo proběhnout, tak se nastaví jako proběhlé, jinak jako vlastní neproběhlé { upozornit = ((int)Obecne.UpozorneniTypy.upozornenoVlastni).ToString(); } else { upozornit = ((int)Obecne.UpozorneniTypy.upozornitVlastni).ToString(); } } else if (radioButtonAno.Checked == true) // Je zvoleno automatické upozornění? { if (upozorneni <= DateTime.Now) // Pokud už to upozornění mělo proběhnout, tak se nastaví jako proběhlé, jinak jako automatické neproběhlé { upozornit = ((int)Obecne.UpozorneniTypy.upozornenoAutomaticky).ToString(); } else { upozornit = ((int)Obecne.UpozorneniTypy.upozornitAutomaticky).ToString(); } } else // Je zvoleno neupozorňovat? Tak se nastaví neupozorňování { upozornit = ((int)Obecne.UpozorneniTypy.neupozornit).ToString(); } if (upozorneni.Year < dateTimePickerUpozorneni.MinDate.Year) // Pokud by byla událost na hranici zobrazení dateTimePickeru, tak automatické upozornění by mohlo způsobit, že by při úpravě hlásil neplatnost data dateTimePicker, takže datum dostaneme do požadovaného rozmezí { upozorneni = upozorneni.AddYears(dateTimePickerUpozorneni.MinDate.Year - upozorneni.Year); } int navratDoRoku = monthCalendar.SelectionStart.Year; // Abychom se vrátili zpátky do správného roku, protože třeba u narozenin skočíme na rok 4 if (comboBoxTyp.SelectedIndex == (int)Obecne.UdalostiTypy.narozeniny) // Pokud ukládáme narozeniny, tak se nastaví rok 4 { monthCalendar.SelectionStart = monthCalendar.SelectionStart.AddYears(4 - monthCalendar.SelectionStart.Year); } Databaze db = new Databaze(); for (DateTime i = monthCalendar.SelectionStart; i <= monthCalendar.SelectionEnd; i = i.AddDays(1), upozorneni = upozorneni.AddDays(1)) // Postupně procházíme jednotlivé dny, které byly vybrány a vkládáme je do databáze { db.Dotaz("INSERT INTO udalosti VALUES ('NULL', '" + comboBoxTyp.SelectedIndex.ToString() + "', '" + nadpis + "', '" + zprava + "', '" + i.ToString("yyyy-MM-dd HH:mm:ss") + "', '0', '" + upozornit + "', '" + upozorneni.ToString("yyyy-MM-dd HH:mm:ss") + "');"); if (i == monthCalendar.SelectionStart && checkBoxSouvisla.Checked == true) // Jakmile jsme uložili první den, tak se vypne upozorňování pokud to je souvislá událost { i = i.AddHours(-i.Hour); i = i.AddMinutes(-i.Minute); i = i.AddSeconds(-i.Second); upozornit = ((int)Obecne.UpozorneniTypy.neupozornit).ToString(); } if (comboBoxTyp.SelectedIndex == (int)Obecne.UdalostiTypy.narozeniny) // Pokud jsou narozeniny, tak tam není dovoleno ukládat víc dní, přece člověk se narodil jen jednou { i = monthCalendar.SelectionEnd; } } db.Close(); monthCalendar.SelectionStart = monthCalendar.SelectionStart.AddYears(navratDoRoku - monthCalendar.SelectionStart.Year); // Vrátíme se zpátky do původního roku monthCalendar.SelectionStart = monthCalendar.SelectionStart.AddMinutes(-monthCalendar.SelectionStart.Minute); // Vynulujeme minuty monthCalendar.SelectionStart = monthCalendar.SelectionStart.AddHours(-monthCalendar.SelectionStart.Hour); // Vynulujeme hodiny Obecne.OnZmenaVUdalostech(); // Vyvoláme událost změny v událostech, aby se načetli znovu data if (comboBoxTyp.SelectedIndex == (int)Obecne.UdalostiTypy.narozeniny) // Pokud jsme ukládali narozeniny, tak ty v přehledu spadají i do svátků, takže je potřeba vyvolat událost pro změnu svátků { Obecne.OnZmenaVeSvatcich(); } Obecne.VyplnKalendar(monthCalendar, checkBoxSplnenost.Checked); if (Obecne.PametNadpis.Contains(textBoxNadpis.Text) == false) // Zjistíme zda se uložený nadpis nachází v kolekci nadpisů, pokud ne, tak ho tam přidáme { Obecne.PametNadpis.Add(textBoxNadpis.Text); } buttonReset.PerformClick(); // Vše vyresetujeme pomocí tlačítka reset }