//Operazioni che vengono effettuate all'avvenuta apertura di una rubrica da file XML private void openFileDialog1_FileOk(object sender, CancelEventArgs e) { //Inizialmente i bottoni precedente e successivo sono disattivati nextButton.Enabled = false; previousButton.Enabled = false; label2.Text = ""; //All'apertura di un file pulisco prima la tabella e la combobox //per evitare che i nuovi dati si aggiungano a quelli di un file //aperto in precedenza dataGridView1.Rows.Clear(); phoneBook = new Rubrica(); menuComboBox.Items.Clear(); //Creo un nuovo documento xml XmlDocument xmlDoc = new XmlDocument(); //Ottengo il file scelto in apertura XmlFile.file = openFileDialog1.FileName; //Modifico il titolo della finestra this.Text = "Editor Rubrica - " + XmlFile.file; //Modifico il percorso di salvataggio di default using (RegistryKey tempKey = phoneBookEditor.OpenSubKey("FileSavePath", RegistryKeyPermissionCheck.ReadWriteSubTree)) { //Inserisco la stringa del percorso di salvataggio all'interno della chiave di registro tempKey.SetValue("Path", @XmlFile.file); } //Carico il file XML scelto xmlDoc.Load(@XmlFile.file); //Creazione lista dei nodi dei menu XmlNodeList menuList = xmlDoc.SelectNodes("/YealinkIPPhoneBook/Menu"); //Scorro tutti i nodi menu e li aggiungo alla lista di menu (Rubrica) foreach (XmlNode node in menuList) { phoneBook.add(node.Attributes["Name"].Value); //Aggiungo i vari menu al menu a tendina menuComboBox.Items.Add(node.Attributes["Name"].Value); } //Lista dei nodi a partire dal percorso indicato XmlNodeList unitList = xmlDoc.SelectNodes("/YealinkIPPhoneBook/Menu/Unit"); i = 0; l = 0; //Stringhe temporanee per controllare se devo scorrere la lista dei menu string temp = ""; string temp2 = ""; temp = phoneBook.get(l).getName(); //Intero utile per riprendere a scorrere la lista dei contatti da dove mi ero fermato int util = 0; //Scorro tutti i menu presenti nella rubrica for (i = 0; i < phoneBook.size(); i++) { //Scorro tutti i contatti del menu corrente for (l = util; l < unitList.Count; l++) { //Aggiungo i contatti al menu corrente phoneBook.get(i).add(new Contatto(/*HttpUtility.HtmlDecode*/ (unitList.Item(l).Attributes["Name"].Value), unitList.Item(l).Attributes["Phone1"].Value, unitList.Item(l).Attributes["Phone2"].Value, unitList.Item(l).Attributes["Phone3"].Value)); //Controllo se ho raggiunto la fine dei menu if ((i < (phoneBook.size() - 1)) && (phoneBook.size() > 1)) { //Ottengo il nome del menu del contatto corrente e di quello successivo temp = unitList.Item(l).ParentNode.Attributes["Name"].Value; temp2 = unitList.Item(l + 1).ParentNode.Attributes["Name"].Value; //Se il nome del menu è diverso tra i 2 allora passo al menu successivo if (!temp.Equals(temp2)) { break; } } } //Salvo l'indice della lista da dove mi ero fermato per poterla poi riprendere util = l + 1; } //Carico tutti i dati nel programma showUnits(0); //Seleziono nel menu a tendina il primo menu disponibile e visualizzo il suo contenuto menuComboBox.SelectedIndex = 0; //Conferma apertura MessageBox.Show("Apertura completata!", "Completato", MessageBoxButtons.OK, MessageBoxIcon.Information); }
//Ascoltatore nel caso in cui vengano eliminate delle righe dalla tabella (contatti) void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e) { //var watch = System.Diagnostics.Stopwatch.StartNew(); //Rimuovo il contatto anche dalla rubrica come oggetto e non solo dalla tabella di visualizzazione if (phoneBook.size() > 0) { if (phoneBook.get(0).size() > 0) { phoneBook.get(menuComboBox.SelectedIndex).remove(Int32.Parse(e.Row.Index.ToString())); } } dataGridView1.Rows[e.Row.Index + 1].Selected = true; //watch.Stop(); //label2.Text = watch.ElapsedMilliseconds.ToString(); }