예제 #1
0
        private void apriLink(LinkAttivo la)
        {
            //ottieni l'id della richiesta ed imposta la variabile della classe
            lastOpened = la.Id;
            DialogResult res;

            //se la checkbox per non chiedere la conferma è disattivata apri il box di richiesta
            if (!confermaOpenCk.Checked)
            {
                res = MessageBox.Show(
                    "Vuoi aprire il link di " + la.NomeMat + " -> '" + la.Link + "' adesso?",
                    "Conferma", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            }
            else
            {
                //assume che la risposta sia di SI (checkbox attivata)
                res = DialogResult.Yes;
                //mostra la notifica di apertura in tray
                mostraMessaggio("Link attivo adesso", "Aprendo il link di " + la.NomeMat, 3);
            }
            if (res == DialogResult.Yes)
            {
                try
                {
                    //prova ad aprire il link
                    System.Diagnostics.Process.Start(la.Link);
                }
                catch (Exception e)
                {
                    //il link non è valido, mostra messaggio di errore
                    MessageBox.Show("Errore! Impossibile aprire il link: " + e.Message,
                                    "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
예제 #2
0
        private void tickEvent(bool force = false)
        {
            //evento di check per link attivo (ogni 5000 msec), stesso funzionamento della funzione precedente
            //refresha riga verde ora attiva tabella
            LinkAttivo la = db.trovaLinkAttivo();

            //refresha riga verde se non è stato già fatto
            if (la != null && la.Id != lastTickIdCalled)
            {
                aggiornaRigaVerde(la.Id);
                alreadyRefreshed = false;
            }
            if (la != null && force)
            {
                //se il bool force è attivo, forza il refresh della riga verde in tabella nonostante sia già stata disegnata
                aggiornaRigaVerde(la.Id);
                alreadyRefreshed = false;
            }
            //apri link se c'è, se non è stato già aperto e se l'autostart è attivo
            if (la != null && la.Id != lastOpened && ac == true)
            {
                apriLink(la);
                alreadyRefreshed = false;
            }
            if (la == null && inswap == false && alreadyRefreshed == false)
            {
                refresh();
                alreadyRefreshed = true;
            }
        }
        //funzione per trovare il link attivo in base all'ora corrente
        public LinkAttivo trovaLinkAttivo()
        {
            //creo la variabile di tipo LinkAttivo che conterrà le informazioni (vedi LinkAttivo.cs)
            LinkAttivo la = new LinkAttivo();
            //creo comando di selezione dal DB
            var cmd = database.CreateCommand();

            cmd.CommandText = "SELECT Id, Materia, Link FROM orario WHERE GiornoSettimana = $giorno AND IntervalloInizio <= $ct AND IntervalloFine > $ct";
            //prelevo data ed ora dal computer
            string giorno = func.dtToDatabaseFormat(DateTime.Today.DayOfWeek);
            int    ct     = func.calcolaIntervalloSecondi(DateTime.Now.Hour, DateTime.Now.Minute);

            //bind parametri
            cmd.Parameters.AddWithValue("$giorno", giorno);
            cmd.Parameters.AddWithValue("$ct", ct);
            //N.B.: Si potrebbe implementare la possibilità di leggere più righe aventi lo stesso orario
            //ma al momento non è stato fatto (tengo in considerazione per feature futura)
            try
            {
                //apri il database
                database.Open();
                //leggi solo la prima riga (n.b. sopra)
                var leggi = cmd.ExecuteReader();
                leggi.Read();
                try
                {
                    //prova a leggere i valori
                    la.Id      = leggi.GetInt32(0);
                    la.NomeMat = leggi.GetString(1);
                    la.Link    = leggi.GetString(2);
                }
                catch (InvalidOperationException)
                {
                    //in caso nessun link è attivo chiudi e ritorna NULL

                    //N.B.: Il null se non viene gestito correttamente dalla funzione chiamante potrrebbe causare...
                    //...crash inaspettati. Usare con cautela e controllare sempre i valori ritornati dalla seguente funzione.
                    database.Close();
                    return(null);
                }
            }
            catch (SQLiteException)
            {
                database.Close();
                return(null);
            }
            //link trovato, ritorna
            database.Close();
            return(la);
        }
예제 #4
0
        private void apriLink_btn_Click(object sender, EventArgs e)
        {
            //ottieni link attivo dal db
            LinkAttivo la = db.trovaLinkAttivo();

            //se 'la' non è null (c'è un link candidato per l'apertura' passa alla funzione
            if (la != null)
            {
                apriLink(la);
            }
            else
            {
                //nessun link candidato per l'apertura
                MessageBox.Show("Nessun link trovato per l'ora corrente", "Orario Videolezioni", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
예제 #5
0
 private void tabella_CellContentClick(object sender, DataGridViewCellEventArgs e)
 {
     //itera in tutte le righe della tabella fino a trovare la riga del click
     foreach (DataGridViewRow dr in tabella.Rows)
     {
         //corrispondenza con arg. chiamata funzioni
         if (dr.Index == e.RowIndex)
         {
             //se la colonna è quella del link apri
             if (e.ColumnIndex == 5)
             {
                 LinkAttivo nla = new LinkAttivo(dr.Cells[5].Value.ToString(),
                                                 dr.Cells[4].Value.ToString(),
                                                 Int32.Parse(
                                                     dr.Cells[0].Value.ToString()
                                                     )
                                                 );
                 apriLink(nla);
             }
         }
     }
 }