/// <summary> /// Způsobí uložení změn a zavře okno /// </summary> private void buttonUložit_Click(object sender, EventArgs e) { Databaze db = new Databaze(); if (zmenyDnu.Count > 0) // Jsou nějaké změny ve významných dnech, pokud ano, tak je prostupně projdeme a uložíme do databáze { foreach (int i in zmenyDnu) { db.Dotaz("UPDATE vyznamne_dny SET Upozornit=" + JeZaskrtnuto(i, checkedListBoxVyznamneDny) + " WHERE Datum='" + ZiskejDatum(checkedListBoxVyznamneDny.Items[i].ToString()) + "'"); } } if (zmenySvatku.Count > 0) // Jsou nějaké změny ve svátcích, pokud ano, tak je prostupně projdeme a uložíme do databáze { foreach (int i in zmenySvatku) { db.Dotaz("UPDATE svatky SET Upozornit=" + JeZaskrtnuto(i, checkedListBoxSvatky) + " WHERE Datum='" + ZiskejDatum(checkedListBoxSvatky.Items[i].ToString()) + "'"); } } db.Close(); if (zmenyDnu.Count > 0 || zmenySvatku.Count > 0) // Pokud došlo k nějaké změně, tak je třeba aktualizovat svátky { Obecne.OnZmenaVeSvatcich(); } this.Close(); }
/// <summary> /// Pokud byla v nabídce vybrána možnost smazat událost, tak se smaže a bude provedeno znovunačtení událostí, případně svátků /// </summary> private void toolStripMenuItemSmazatUdalost_Click(object sender, EventArgs e) { Databaze db = new Databaze(); db.Dotaz("SELECT Nadpis FROM udalosti WHERE ID=" + udalost + ";"); // Vytáhneme název události string nadpis = ""; while (db.DalsiVysledek()) { nadpis = db.DejVysledekString("Nadpis"); } db.Dotaz("SELECT COUNT(*) AS Pocet FROM udalosti WHERE Nadpis='" + nadpis + "';"); // Spočítáme kolik událsotí sdílí tento název while (db.DalsiVysledek()) { if (db.DejVysledekInt("Pocet") < 2) // Pokud méně než dva, tak název odstraníme z kolekce našeptávače { Obecne.PametNadpis.Remove(nadpis); } } db.Dotaz("DELETE FROM udalosti WHERE ID=" + udalost + ";"); // Smažeme událost z databáze db.Close(); Obecne.OnZmenaVUdalostech(); // Informujeme o změně v událostech if (typ == (int)Obecne.UdalostiTypy.narozeniny) // V případě narozenin informujeme i o změně narozenin { Obecne.OnZmenaVeSvatcich(); } }
/// <summary> /// Obsluha kliknutí, kdy bude deaktivována ikona a vyvolán dialog úpravy události /// </summary> private void PictureBoxUprava_Click(object sender, EventArgs e) { Obecne.IkonaStav(false); // Vypneme ikonu, aby nešlo obejít dialog Uprava okno = new Uprava(Convert.ToInt32(((PictureBox)sender).Tag)); // Vytvoříme úpravu události, ke které byl svázán kliknutý PictureBox okno.StartPosition = FormStartPosition.Manual; int x = this.Parent.Parent.Parent.Location.X + this.Parent.Parent.Location.X + this.Parent.Location.X + this.Location.X; // Vypočítá se X souřadnice pro zobrazení okna int y = this.Parent.Parent.Parent.Location.Y + this.Parent.Parent.Location.Y + this.Parent.Location.Y + this.Location.Y; // Vypočítá se Y souřadnice pro zobrazení okna okno.Location = Obecne.UmisteniOkna(new System.Drawing.Point(x, y), okno.Size, 0, 0); okno.ShowDialog(); if (okno.DialogResult == DialogResult.Yes) // Pokud bylo něco upraveno, tak je třeba znovunačíst události, pokud to byly narozeniny tak i svátky { Obecne.OnZmenaVUdalostech(); if (okno.Typ == ((int)Obecne.UdalostiTypy.narozeniny)) { Obecne.OnZmenaVeSvatcich(); } } Obecne.IkonaStav(true); // Opět zapneme ikonu }
/// <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 }