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); } } }
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); }
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); } }
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); } } } }