Beispiel #1
0
        /// <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();
        }
Beispiel #2
0
        /// <summary>
        /// Při kliknutí na posunout provede posunutí události
        /// </summary>
        private void buttonPosunout_Click(object sender, EventArgs e)
        {
            if (comboBoxPosun.SelectedItem == null)
            {
                return;
            }
            Prehravac.Stop();
            string interval = "";

            switch (comboBoxPosun.SelectedItem.ToString())
            {
            case "Hodinu":
                interval = "HOUR";
                break;

            case "Den":
                interval = "DAY";
                break;

            case "Týden":
                interval = "WEEK";
                break;

            case "Měsíc":
                interval = "MONTH";
                break;

            case "Rok":
                interval = "YEAR";
                break;
            }
            Obecne.PresunUdalost(Udalost.ToString(), Typ, interval);
            this.Close();
        }
Beispiel #3
0
        /// <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();
            }
        }
Beispiel #4
0
        /// <summary>
        /// Zpracování kliknutí na odeslat, kdy se odešlou data, pokud je vše OK
        /// </summary>
        private void buttonOdeslat_Click(object sender, EventArgs e)
        {
            if (comboBoxTyp.SelectedIndex == -1) // Byl vybrán typ?
            {
                Obecne.ZobrazZpravu("Nevybral jsi zda se jedná o chybu, návrh nebo připomínku!", "Problém", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (richTextBoxZprava.Text == "") // Prázdné zprávy přece posílat nebudeme
            {
                Obecne.ZobrazZpravu("Prázdnou zprávu nelze poslat!", "Problém", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            string odpoved = Obecne.PosliDataNaWeb("aplikace=ukolnik&typ=" + comboBoxTyp.SelectedIndex + "&zprava=" + Obecne.OdstranProblemoveHTTPPOSTZnaky(richTextBoxZprava.Text), "http://sqee.eu/programy/ukolnik/formular.php");

            if (odpoved == "DONE") // Pokud se odeslání zdařilo, tak zavřít formulář
            {
                this.Close();
            }
            else if (odpoved == "ERROR") // Pokud nastala chyba během odesílání, tak již info bylo zobrazeno a tudíž není co zobrazovat
            {
                return;
            }
            else // Jinak zobrazit info o nezdaru
            {
                Obecne.ZobrazZpravu("Zprávu se nepodařilo odeslat, zkus to znovu", "Problém", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Beispiel #5
0
        /// <summary>
        /// V menu byla vybrána možnost Návrhy a připomínky, takže se zobrazí formulář pro jejich zadání
        /// </summary>
        private void toolStripMenuItemNavrhyPripominky_Click(object sender, EventArgs e)
        {
            Formular okno = new Formular();

            okno.StartPosition = FormStartPosition.Manual;
            okno.Location      = Obecne.UmisteniOkna(this.Location, okno.Size);
            okno.Show();
        }
Beispiel #6
0
        /// <summary>
        /// V menu byla vybrána možnost Přehled, takže se zobrazí přehled událostí
        /// </summary>
        private void ToolStripMenuItemPrehled_Click(object sender, EventArgs e)
        {
            Prehled okno = new Prehled();

            okno.StartPosition = FormStartPosition.Manual;
            okno.Location      = Obecne.UmisteniOkna(this.Location, okno.Size);
            okno.Show();
        }
Beispiel #7
0
        /// <summary>
        /// V menu byla vybrána možnost o Úkolníku, takže bude zobrazeno okno s informacemi o Úkolníku
        /// </summary>
        private void MenuItemOUkolniku_Click(object sender, EventArgs e)
        {
            OUkolniku okno = new OUkolniku();

            okno.StartPosition = FormStartPosition.Manual;
            okno.Location      = Obecne.UmisteniOkna(this.Location, okno.Size);
            okno.Show();
        }
Beispiel #8
0
        /// <summary>
        /// Zobrazí informace k události
        /// </summary>
        private void toolStripMenuItemZobrazitUdalost_Click(object sender, EventArgs e)
        {
            Podrobnosti okno = new Podrobnosti(udalost);

            okno.StartPosition = FormStartPosition.Manual;
            okno.Location      = Obecne.UmisteniOkna(((ToolStripMenuItem)sender).Owner.Location, okno.Size, 15); // Získáme pozici nabídky a u ní zobrazíme podrobnosti události
            okno.Show();
        }
Beispiel #9
0
        /// <summary>
        /// V menu byla vybrána možnost nastavení svátků, takže to nastavení se zobrazí
        /// </summary>
        private void ToolStripMenuItemSvatkyNarozeniny_Click(object sender, EventArgs e)
        {
            Svatky okno = new Svatky();

            okno.StartPosition = FormStartPosition.Manual;
            okno.Location      = Obecne.UmisteniOkna(this.Location, okno.Size);
            okno.Show();
        }
Beispiel #10
0
 /// <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();
 }
Beispiel #11
0
        /// <summary>
        /// V menu byla vybrána možnost Nastavení, vypne se nabídka ikonky a zobrazí se dialog s nastavením
        /// </summary>
        private void ToolStripMenuItemNastaveni_Click(object sender, EventArgs e)
        {
            Obecne.IkonaStav(false);
            NastavovaciOkno okno = new NastavovaciOkno();

            okno.StartPosition = FormStartPosition.Manual;
            okno.Location      = Obecne.UmisteniOkna(this.Location, okno.Size);
            okno.ShowDialog();
            Obecne.IkonaStav(true);
        }
Beispiel #12
0
 /// <summary>
 /// Načte komponenty, vytvoří dotazy, načte data pro události a svátky, vyplní kalendář, přiřadí nápovědu novým událostem, nastaví ikonu, skryje nové události, zapne sledování změn v událsotech a svátcích a zapne upozorňování
 /// </summary>
 public HlavniOkno()
 {
     InitializeComponent();
     VytvorDotazy(); // Vytvoříme dotazy a načteme data
     AktualizujSvatky();
     AktualizujKalendarNasilne();
     textBoxNadpis.AutoCompleteCustomSource = Obecne.PametNadpis; // Nastaví se našeptávač
     Obecne.IkonaNastav(notifyIcon.ContextMenuStrip);             // Nastaví se ikona, aby se mohla vypínat, když se zobrazej dialogy
     labelZobrazVic_Click(labelZobrazVic, null);                  // Schováme rozšířené okno
     Obecne.ZmenaVeSvatcich  += AktualizujSvatky;
     Obecne.ZmenaVUdalostech += AktualizujKalendarNasilne;
     alarm.Zapnout(); // Zapneme upozorňování na události
 }
Beispiel #13
0
        /// <summary>
        /// Načte svátky a narozeniny na ten den a zobrazí je, nastaví další aktualizaci (třeba začátek dalšího den)
        /// </summary>
        private void AktualizujSvatky()
        {
            timer.Stop();
            Obecne.Svatky(DateTime.Today.ToString("d-M"), labelSvatky, true, true); // Pomocná funkce, která získá požadovaný věci a uloží je do labelu v textovém provedení
            int dalsi = (23 - DateTime.Now.Hour) * 3600000 + (59 - DateTime.Now.Minute) * 60000 + (59 - DateTime.Now.Second) * 1000 + 30000;

            if (dalsi <= 0) // Předcházení několikanásobnému aktualizování během jedné sekundy
            {
                dalsi = 30000;
            }
            timer.Interval = dalsi;
            timer.Start();
        }
Beispiel #14
0
 /// <summary>
 /// Vytvoří základní nastavení pro Úkolník, bude ale nutné ho doplnit o heslo do databáze, také vytvoří spoušťák pro Úkolník při startu počítače
 /// </summary>
 public static void VytvorNastaveni()
 {
     Verze             = Obecne.DejVerzi();
     Server            = "127.0.0.1";
     Uzivatel          = "root";
     Heslo             = "";
     Databaze          = "ukolnik";
     Spousteni         = true;
     UpozorneniDopredu = 7;
     UlozNastaveni(true);
     //VytvorSpoustak();
     VytvorRegistry();
 }
Beispiel #15
0
 /// <summary>
 /// Obsluha události, kdy v kalendáři změníme datum výběru, aby se načetli nové události
 /// </summary>
 private void monthCalendar_DateChanged(object sender, DateRangeEventArgs e)
 {
     VytvorDotazy();                                                                                                                // Je potřeba vytvořit nové dotazy pro nový den
     Obecne.Svatky(monthCalendar.SelectionStart.Day.ToString() + "-" + monthCalendar.SelectionStart.Month.ToString(), labelSvatek); // Získáme přehled svátků pro nový den
     AktualizujKalendar();                                                                                                          // Aktualizujeme data v kalendáři, ale dopředu, projeví se až později, protože všechna potřebná data pro nové datum už byla načtena předem
     if ((monthCalendar.SelectionEnd - monthCalendar.SelectionStart).Days > 0 && textBoxCasHodina.Enabled == true)                  // Vypneme možnost souvislé události pokud nelze nastavovat čas, nebo není vybráno více dnů
     {
         checkBoxSouvisla.Enabled = true;
     }
     else
     {
         checkBoxSouvisla.Enabled = false;
     }
 }
Beispiel #16
0
 /// <summary>
 /// Provádí čtení konfiguráku a kontroluje aktuálnost údajů
 /// </summary>
 /// <returns>True, pokud jsou data aktuální, false pokud nejsou data aktuální</returns>
 public static bool CtiNastaveni()
 {
     System.IO.StreamReader soubor = new System.IO.StreamReader(SlozkaNastaveni + SouborNastaveni); // Otevření konfiguráku
     while (!soubor.EndOfStream)                                                                    // Dokud nejsme na samém konci konfiguráku
     {
         string radek = soubor.ReadLine();                                                          // Postupně čteme jednotlivé řádky
         if (radek.Substring(0, 4) == "ver:")                                                       // Jestliže je na začátku řádku ver: tak je to info o poslední verzi Úkolníku (důležité pro aktualizace)
         {
             Verze = radek.Remove(0, 5);                                                            // Odtrhneme začátek a získáme tak verzi
         }
         else if (radek.Substring(0, 4) == "ser:")                                                  // Jestliže je na začátku řádku ser: tak je to info o databázovém serveru
         {
             Server = radek.Remove(0, 5);                                                           // Odtrhneme začátek a získáme tak databázový server
         }
         else if (radek.Substring(0, 4) == "uzi:")                                                  // Jestliže je na začátku řádku uzi: tak je to přihlašovací jméno do databáze
         {
             Uzivatel = radek.Remove(0, 5);                                                         // Odtrhneme začátek a získáme tak uživatelské jméno pro přihlášení do databáze
         }
         else if (radek.Substring(0, 4) == "hes:")                                                  // Jestliže je na začátku řádku hes: tak je to heslo pro přihlášení do databáze
         {
             Heslo = radek.Remove(0, 5);                                                            // Odtrhneme začátek a získáme tak heslo pro přihlášení do databáze
         }
         else if (radek.Substring(0, 4) == "dab:")                                                  // Jestliže je na začátku řádku dab: tak je to info o databázi obshaující tabulky pro Úkolník
         {
             Databaze = radek.Remove(0, 5);                                                         // Odtrhneme začátek a získáme tak databázi obsahující tabulky pro Úkolník
         }
         else if (radek.Substring(0, 4) == "spo:")                                                  // Jestliže je na začátku řádku spo: tak je to info, zda se má Úkolník automaticky spouštět při startu počítače
         {
             NastavSpousteni(radek.Remove(0, 5));                                                   // Odtrhneme začátek a získáme tak, zda se má Úkolník automaticky spouštět při startu počítače
         }
         else if (radek.Substring(0, 4) == "upo:")                                                  // Jestliže je na začátku řádku upo: tak je to o kolik minut předem se má upozorňovat na události
         {
             try
             {
                 UpozorneniDopredu = Convert.ToInt32(radek.Remove(0, 5)); // Zkusíme odtrhnutím začátku a převodu na číslo získat o kolik minut dřív se má upozorňovat na události
             }
             catch (Exception exc)                                        // Pokud nastal problém a zadaná hodnota nelze předělat na číslo, tak se nastaví záklandí hodnota a vypíše se info o tomto problému
             {
                 UpozorneniDopredu = 7;
                 Vyjimky.VypisVyjimek("Chyba konfiguračním souboru, je zadána špatná hodnota pro upozornění, běž do nastavení a ulož tam novou.", exc);
             }
         }
         else if (radek.Substring(0, 4) == "pod:")         // Jestliže je na začátku řádku pod: tak je to info o tom, zda se mají zobrazovat podrobnosti u vyjimek
         {
             NastavPodrobnostiVyjimek(radek.Remove(0, 5)); // Odtrhneme začátek a a předáme ho funkci na nastavení podrobností u výpisu vyjimek
         }
     }
     soubor.Close(); // Zavřeme konfigurák
     return(Verze == Obecne.DejVerzi());
 }
Beispiel #17
0
 /// <summary>
 /// Obsluha události pokusu o zavření Hlavního okna, kdy uživatel musí potvrdit zavření hlavního okna (tím pádem i Úkolníku)
 /// </summary>
 private void HlavniOkno_FormClosing(object sender, FormClosingEventArgs e)
 {
     if (Nastaveni.StavAplikace == (int)Nastaveni.StavyAplikace.bezici && e.CloseReason.ToString() == "UserClosing")  // Zavírá uživatel? (Například když OS zavírá při vypínání, tak by to neuměl ukončit bez pomoci)
     {
         DialogResult odpoved = Obecne.ZobrazZpravu("Opravdu chceš ukončit Úkolník?", "Opravdu to chceš?", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
         if (odpoved == System.Windows.Forms.DialogResult.No) // Nechce zavřít okno, takže to zrušíme
         {
             e.Cancel = true;
             return;
         }
     }
     alarm.Vypnout(); // Vypneme alarm, už nebude třeba
     Obecne.ZmenaVeSvatcich  -= AktualizujSvatky;
     Obecne.ZmenaVUdalostech -= AktualizujKalendarNasilne;
 }
Beispiel #18
0
 /// <summary>
 /// Po stisknutí levého tlačítka na popisku se otevře okno se zobrazením události
 /// </summary>
 private void labelUdalost_Click(object sender, EventArgs e)
 {
     if (((MouseEventArgs)e).Button == System.Windows.Forms.MouseButtons.Left)
     {
         udalost = ((Label)sender).Tag.ToString();
         if (udalost != "-1") // Je to událost nebo jen informační popisek?
         {
             Podrobnosti okno = new Podrobnosti(udalost);
             okno.StartPosition = FormStartPosition.Manual;
             int x = this.ParentForm.Location.X + this.Location.X + ((MouseEventArgs)e).Location.X + ((Label)sender).Location.X; // Spočítáme X souřadnici na obrazovce tak, že získáme souřadnice nadřazených objektů a sečteme je
             int y = this.ParentForm.Location.Y + this.Location.Y + ((MouseEventArgs)e).Location.Y + ((Label)sender).Location.Y; // Spočítáme Y souřadnici na obrazovce tak, že získáme souřadnice nadřazených objektů a sečteme je
             okno.Location = Obecne.UmisteniOkna(new System.Drawing.Point(x, y), okno.Size, 0);
             okno.Show();
         }
     }
 }
Beispiel #19
0
        /// <summary>
        /// Obsluha kliknutí, kdy bude splněno nebo nesplněna událost, ke které patří tento PictureBox
        /// </summary>
        private void PictureBoxSplneno_Click(object sender, EventArgs e)
        {
            Databaze db = new Databaze();
            string   splneno;

            if ((string)((PictureBox)sender).Image.Tag == "fajfka") // Pokud tam byl obrázek fajfky, tak daná událost byla splněna kliknutím, v opačném případě byla nesplněna
            {
                splneno = "1";
            }
            else
            {
                splneno = "0";
            }
            db.Dotaz("UPDATE udalosti SET Splneno=" + splneno + " WHERE id=" + ((PictureBox)sender).Tag + ";"); // Provedeme změnu splněnosti pro danou událost
            db.Close();
            Obecne.OnZmenaVUdalostech();                                                                        // Je potřeba znovu načíst události
        }
Beispiel #20
0
 /// <summary>
 /// Provede odeslání souboru s chybama na web
 /// </summary>
 public static void OdesliChybovySoubor()
 {
     if (System.IO.File.Exists(Nastaveni.SlozkaNastaveni + SouborChyb) == false) // Pokud soubor s chybama neexistuje, tak pak není co odesílat
     {
         return;
     }
     System.IO.StreamReader           soubor = new System.IO.StreamReader(SlozkaNastaveni + SouborChyb);                                                                                                                                                                                                // Otevře soubor s chybama
     System.Security.Cryptography.MD5 hash   = System.Security.Cryptography.MD5.Create();                                                                                                                                                                                                               // Připravíme hash pro identifikaci, zda chyba vzniká na jendom a tom samém počítači nebo na různých počítačích
     byte[] zahashovano = hash.ComputeHash(System.Text.Encoding.UTF8.GetBytes(System.Environment.UserName + System.Environment.MachineName));                                                                                                                                                           // Hash bude z uživatelského jména a jména počítače
     if (Obecne.PosliDataNaWeb("aplikace=ukolnik&identifikace=" + Convert.ToBase64String(zahashovano) + "&system=" + System.Environment.OSVersion.ToString() + "&chyby=" + Obecne.OdstranProblemoveHTTPPOSTZnaky(soubor.ReadToEnd()), "http://sqee.eu/programy/ukolnik/formular.php", false) == "DONE") // Na web se odešlou data obsahující indentifikaci, OS a chyby (ze kterých byly odstraněny nevhodné znaky), pokud to proběhlo v pořádku, tak se soubor s chybama smaže, v opačném případě bude ponechán na příště
     {
         soubor.Close();
         System.IO.File.Delete(Nastaveni.SlozkaNastaveni + SouborChyb);
     }
     else
     {
         soubor.Close();
     }
 }
Beispiel #21
0
 /// <summary>
 /// Obsluha události kliknutí na ikonku Úkolníku, tedy minimalizaci Úkolníku nebo přenos Úkolníku do popředí
 /// </summary>
 private void notifyIcon_MouseClick(object sender, MouseEventArgs e)
 {
     if (Obecne.IkonaAktivni() == false) // Pokud je deaktivovaná nabídka, tak ikona nereaguje ani na kliknutí, aby se nedal obejít dialog
     {
         return;
     }
     if (e.Button == MouseButtons.Left)                     // Zda to bylo levé tlačítko, pravé tlačítko slouží pro zobrazení nabídky
     {
         if (this.WindowState == FormWindowState.Minimized) // Zda je Úkolník minimalizovaný, pokud ano, tak zobrazit ho na liště a dát do popředí, v opačném případě minimalizovat
         {
             this.ShowInTaskbar = true;
             this.WindowState   = FormWindowState.Normal;
         }
         else
         {
             this.WindowState = FormWindowState.Minimized;
         }
     }
 }
Beispiel #22
0
 /// <summary>
 /// Provede zobrazení upozornění na události, kde už je čas
 /// </summary>
 private void ZobrazAlarmy()
 {
     lock (this) // Po probuzení ze spánku by mohlo být trošku víc alarmů
     {
         Databaze db = new Databaze();
         db.Dotaz("SELECT ID FROM udalosti WHERE (Upozorneno=" + ((int)Obecne.UpozorneniTypy.upozornitAutomaticky).ToString() + " OR Upozorneno=" + ((int)Obecne.UpozorneniTypy.upozornitVlastni).ToString() + ") AND Upozorneni<=NOW() AND (Splneno=0 OR Typ=" + ((int)Obecne.UdalostiTypy.narozeniny).ToString() + ") ORDER BY Upozorneni ASC;"); // Vytáhne události, na které se má upozornit a nebylo na ně už upozorněno a také nejsou ještě splněny (splněnost v případě narozenin je ignorována, protože je využívána k přechodu na další rok), tahá je v pořadí od nejstaršího dle doby upozornění
         while (db.DalsiVysledek())
         {
             Obecne.IkonaStav(false);                                    // Aby se nedal obejít dialog ikonkou
             Upozorneni alarm = new Upozorneni(db.DejVysledekInt("ID")); // Předá se upozorněnímu ID události
             if (DialogResult.Yes == alarm.ShowDialog())                 // Pokud bylo při upozornění kliknuto na splněno, tak dojde k aktualizaci událostí
             {
                 Obecne.OnZmenaVUdalostech();
             }
             Obecne.IkonaStav(true);
         }
         db.Close();
     }
 }
Beispiel #23
0
        /// <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
        }
Beispiel #24
0
        /// <summary>
        /// Provede načtení narozenin a zobrazení kolik je komu roků
        /// </summary>
        private void NactiNarozeniny()
        {
            Obecne.PripravNarozeninyPrehled(); // Připraví narozeniny, aby seděli roky
            richTextBoxNarozeniny.Text = "";   // Vymažeme dosavadní seznam narozenin
            Databaze db = new Databaze();

            db.Dotaz("SELECT Kdy, Nadpis, Zprava, Splneno FROM udalosti WHERE Typ=" + ((int)Obecne.UdalostiTypy.narozeniny).ToString() + " ORDER BY Nadpis;"); // Získá seznam lidí, kteří maj zadané narozeniny a zobrazí je i kolik jim je
            while (db.DalsiVysledek())
            {
                richTextBoxNarozeniny.Text += db.DejVysledekString("Nadpis") + " " + db.DejVysledekDatumCas("Kdy").ToString("d.M") + "." + db.DejVysledekString("Zprava") + " (" + (DateTime.Today.Year - db.DejVysledekInt("Zprava") + -1 + db.DejVysledekInt("Splneno") + Convert.ToInt32(DateTime.Today.Day == db.DejVysledekDatumCas("Kdy").Day&& DateTime.Today.Month == db.DejVysledekDatumCas("Kdy").Month)).ToString() + ")\n";
            }
            db.Close();
            if (richTextBoxNarozeniny.Text != "") // Pokud je zobrazení narozeniny neprázdné, tak odstraníme koncový nový řádek, jinak napíšeme info o nulovém počtu narozenin
            {
                richTextBoxNarozeniny.Text = richTextBoxNarozeniny.Text.Remove(richTextBoxNarozeniny.TextLength - 1);
            }
            else
            {
                richTextBoxNarozeniny.Text = "Zatím nebyly zadány žádné narozeniny";
            }
        }
Beispiel #25
0
        static void Main()
        {
            bool prvniOtevreni; // Zda je toto první otevření Úkolníku nebo už je otevřen

            System.Threading.Mutex m = new System.Threading.Mutex(true, "Ukolnik", out prvniOtevreni);
            if (prvniOtevreni == false) // Pokud to není první otevření tak zobrazíme info, získáme proces již běžícího Úkolníku, získáme aktvní okno a to se pokusíme přenést do popředí
            {
                Obecne.ZobrazZpravu("Úkolník je již spuštěn.", "Vícenásobné spuštění není dovoleno", MessageBoxButtons.OK, MessageBoxIcon.Information);
                System.Diagnostics.Process[] procesy = System.Diagnostics.Process.GetProcessesByName("Ukolnik");
                SetForegroundWindow(procesy[0].MainWindowHandle);
                return;
            }
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Nastaveni.NastavStavAplikace((int)Nastaveni.StavyAplikace.bezici); // Úkolník běží normálně
            Nastaveni.NastaveniOtevreno = false;                               // Nastavovací okno nebylo otevřeno
            Application.Run(new Start());                                      // Spustíme startovací okno, kde se provedou nezbytné věci
            if (Nastaveni.StavAplikace == (int)Nastaveni.StavyAplikace.bezici) // Pokud je vše v pořádku, tak se spustí okno s přehledem a po jeho zavření již hlavní okno
            {
                Application.Run(new Prehled(true));
                Application.Run(new HlavniOkno());
            }
        }
Beispiel #26
0
 /// <summary>
 /// Aktualizuje svátky a samotný timer
 /// </summary>
 private void timer_Tick(object sender, EventArgs e)
 {
     AktualizujSvatky();
     Obecne.PripravNarozeninyPrehled();
     strankaNarozeniny.NactiData();
 }
Beispiel #27
0
        /// <summary>
        /// Provádí jednotlivé akce a zobrazuje postup
        /// </summary>
        private void Start_Load(object sender, EventArgs e)
        {
            Nastaveni.NastavPodrobnostiVyjimek(true);                           // V tuto chvíli nejsou načteny data z konfiguráku, takže je zapnuto vypisování vyjímek
            if (System.IO.Directory.Exists(Nastaveni.SlozkaNastaveni) == false) // Existuje složka, kde má být uložen konfigurák? Pokud ne, tak se pokusí vytvořit
            {
                try
                {
                    System.IO.Directory.CreateDirectory(Nastaveni.SlozkaNastaveni);
                }
                catch (Exception exc)
                {
                    Vyjimky.VypisVyjimek("Nepodařilo se vytvořit tuto cestu: " + Nastaveni.SlozkaNastaveni, exc);
                    Nastaveni.NastavStavAplikace((int)Nastaveni.StavyAplikace.koncici); // Vynucené okamžité ukončení aplikace
                    this.Close();
                    return;
                }
            }
            if (System.IO.File.Exists(Nastaveni.SlozkaNastaveni + Nastaveni.SouborNastaveni) == false) // Existuje konfigurák? Pokud ne, tak ho vytvořit (v té době je ochrana proti zobrazování chyb), pokud ano, tak ho přečíst
            {
                try
                {
                    Nastaveni.PraveVytvorenKonfigurak = true;
                    Nastaveni.VytvorNastaveni();
                }
                catch (Exception exc)
                {
                    Vyjimky.VypisVyjimek("Nepodařilo se vytvořit konfigurační soubor v této složce: \n" + Nastaveni.SlozkaNastaveni, exc);
                    Nastaveni.NastavStavAplikace((int)Nastaveni.StavyAplikace.koncici); // Vynucené okamžité ukončení aplikace
                    this.Close();
                    return;
                }
            }
            else
            {
                if (Nastaveni.CtiNastaveni() == false)
                {
                    if (DialogResult.Abort == new Aktualizace().ShowDialog()) // Zda nedošlo k chybě při aktualizaci
                    {
                        Obecne.ZobrazZpravu("Nezdařila se konfigurace aplikace po provedení aktualizace, aplikace nemůže dál pokračovat a bude tudíž ukončena. Opětovné spuštění by mělo problém vyřešit. Pokud ne, tak jsou na vině internetové problémy, které snad brzo budou vyřešeny.", "Problém s konfigurací", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        Nastaveni.NastavStavAplikace((int)Nastaveni.StavyAplikace.koncici);
                        this.Close();
                        return;
                    }
                }
            }
            progressBarStart.Value += 1;
            if (Nastaveni.StavAplikace != (int)Nastaveni.StavyAplikace.bezici) // Pokud nastala chyba při čtení konfiguráku
            {
                this.Close();
                return;
            }
            new System.Threading.Thread(Nastaveni.OdesliChybovySoubor).Start(); // Pokusí se odeslat soubor s chybama - má vlastní vlákno, aby nezdržovalo start aplikace
            progressBarStart.Value += 1;
            Databaze db = new Databaze();

            db.Dotaz("UPDATE udalosti SET Splneno=1 WHERE Splneno=0 AND Typ=" + ((int)Obecne.UdalostiTypy.udalost).ToString() + " AND Kdy <= NOW();");       // Staré události automaticky splnění (když se mělo něco udát, tak se to událo)
            progressBarStart.Value += 1;
            alarm.AlarmKontrola();                                                                                                                           // Aktivuje alarm, aby se upozornilo na případné blížící se události
            progressBarStart.Value += 1;
            db.Dotaz("SELECT COUNT(*) as Pocet FROM udalosti WHERE Splneno=0 AND Typ=" + ((int)Obecne.UdalostiTypy.ukol).ToString() + " AND Kdy <= NOW();"); // Získá nesplněné úkoly, který už měly být splněny
            while (db.DalsiVysledek())
            {
                if (db.DejVysledekInt("Pocet") > 0) // Pokud jsou nesplněné úkoly, které měly být splněny, tak se zobrazé dialog s jejich výpisem
                {
                    StareUdalosti okno = new StareUdalosti((int)Obecne.UdalostiTypy.ukol);
                    okno.ShowDialog();
                }
            }
            progressBarStart.Value += 1;
            db.Dotaz("SELECT COUNT(*) as Pocet FROM udalosti WHERE Splneno=0 AND Typ=" + ((int)Obecne.UdalostiTypy.pisemka).ToString() + " AND Kdy <= NOW();"); // Získá nesplněné písemky, který už měly být splněny
            while (db.DalsiVysledek())
            {
                if (db.DejVysledekInt("Pocet") > 0) // Pokud jsou nesplněné písemky, které měly být splněny, tak se zobrazé dialog s jejich výpisem
                {
                    StareUdalosti okno = new StareUdalosti((int)Obecne.UdalostiTypy.pisemka);
                    okno.ShowDialog();
                }
            }
            progressBarStart.Value += 1;
            Obecne.PametNadpis      = new AutoCompleteStringCollection(); // Vytvoříme novou nápovědní kolekci nadpisů
            db.Dotaz("SELECT DISTINCT Nadpis FROM udalosti;");            // Získáme unikátní nadpisy a ty postupně přidáváme do kolekce
            while (db.DalsiVysledek())
            {
                Obecne.PametNadpis.Add(db.DejVysledekString("Nadpis"));
            }
            progressBarStart.Value += 1;
            db.Close();                        // Zavře databázové spojení, uvolní zdroje
            Obecne.PripravNarozeninyPrehled(); // Připravíme narozeniny pro zobrazení (aby seděly přechody roků)
            alarm.Vypnout();                   // Vypne upozorňování na blížíce se události
            progressBarStart.Value += 1;
            this.Close();                      // Zavře okno
        }
Beispiel #28
0
 /// <summary>
 /// Pokud byla v nabídce vybrána možnost posunu události, tak se ten posun provede
 /// </summary>
 private void toolStripMenuItemPosunoutUdalost_Click(object sender, EventArgs e)
 {
     Obecne.PresunUdalost(udalost, typ, ((ToolStripMenuItem)sender).Tag.ToString());
 }
Beispiel #29
0
        /// <summary>
        /// Pokud bylo kliknuto na uložit, tka je třeba data uložit, uloží se vše, nesledují se změny
        /// </summary>
        private void buttonUlozit_Click(object sender, EventArgs e)
        {
            if (textBoxNadpis.Text == "") // Zda není prázdný nadpis (nebo jméno), protože to není dovolené
            {
                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) // Pokud jsou vybrány 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;
                }
            }
            alarm.Vypnout(); // Vypne se alarm, protože nyní už to nemá co zastavit to ukládání
            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)
            {
                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);
            }
            Databaze db = new Databaze();

            if (Nadpis != textBoxNadpis.Text) // Pokud se předchozí nadpis neshoduje s novým, tak zjišťujeme, jestli starý nadpis používala i jiný událost, pokud nepoužívala, tak starý nadpis je smazán z kolekce, pak také se zjišťuje, zda nový nadpis byl používán jinou událostí, pokud nebyl, tak se vloží do kolekce
            {
                db.Dotaz("SELECT COUNT(*) AS Pocet FROM udalosti WHERE Nadpis='" + Nadpis + "';");
                while (db.DalsiVysledek())
                {
                    if (db.DejVysledekInt("Pocet") < 2)
                    {
                        Obecne.PametNadpis.Remove(Nadpis);
                    }
                }
                db.Dotaz("SELECT COUNT(*) AS Pocet FROM udalosti WHERE Nadpis='" + textBoxNadpis.Text + "';");
                while (db.DalsiVysledek())
                {
                    if (db.DejVysledekInt("Pocet") == 0)
                    {
                        Obecne.PametNadpis.Add(textBoxNadpis.Text);
                    }
                }
            }
            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);
            }
            db.Dotaz("UPDATE udalosti SET Typ=" + comboBoxTyp.SelectedIndex.ToString() + ", Nadpis='" + nadpis + "', Zprava='" + zprava + "', Kdy='" + monthCalendar.SelectionStart.ToString("yyyy-MM-dd HH:mm:ss") + "', Splneno=" + comboBoxSplneno.SelectedIndex.ToString() + ", Upozorneno=" + upozornit + ", Upozorneni='" + upozorneni.ToString("yyyy-MM-dd HH:mm:ss") + "' WHERE ID=" + Udalost.ToString() + ";"); // Všechno to uložíme
            db.Close();
            if (comboBoxTyp.SelectedIndex == ((int)Obecne.UdalostiTypy.narozeniny))                                                                                                                                                                                                                                                                                                                                       // Pokud je nově upravená událost narozeninama, tak si to uložíme (ukládáme jen pro případ narozenin, protože ta stará mohla být narozeniny, ale byl jí změněn typ na něco jinýho, ale i tak je třeba udělat aktualizaci svátků)
            {
                Typ = (int)Obecne.UdalostiTypy.narozeniny;
            }
            this.DialogResult = System.Windows.Forms.DialogResult.Yes; // Nastavíme Yes, protože došlo ke změně události
            this.Close();
        }
Beispiel #30
0
 /// <summary>
 /// Nastaví verzi na aktuální verzi aplikace
 /// </summary>
 public static void NastavAktualniVerzi()
 {
     Verze = Obecne.DejVerzi();
 }