//Aggiunta di un nuovo menu private void button1_Click(object sender, EventArgs e) { //Innanzitutto controllo se sono già presenti altri menu if (phoneBook.size() > 0) { //Poi controllo che l'utente abbia inserito almeno un contatto nel menu corrente bool b = false; //Scorro tutti i menu per controllare che su tutti ci sia almeno un contatto for (i = 0; i < phoneBook.size(); i++) { //Se non ci sono elementi in questo menu allora esco dal ciclo e lo comunico all'utente if (dataGridView1.Rows.Count == 1) { b = true; break; } } //Comunico all'utente e non gli permetto di aggiungere un menu if (b) { //Messaggio di errore MessageBox.Show("Inserire almeno un contatto per Menu!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { //Controllo che il nome del menu non sia vuoto if (!string.IsNullOrWhiteSpace(newMenuNameTextBox.Text)) { if (phoneBook.size() > 0) { phoneBook.get(menuComboBox.SelectedIndex).clear(); } //Controllo che ci sia almeno una riga nella tabella if (dataGridView1.Rows.Count - 1 > 0) { //Salvo tutti i contatti del menu corrente nel menu corrispondente for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) { string[] str = new string[] { "", "", "", "" }; //Scorro le 4 colonne della tabella for (int l = 0; l < 4; l++) { try { str[l] = (string)dataGridView1.Rows[i].Cells[l + 1].Value.ToString(); } catch (NullReferenceException exc) { } } phoneBook.get(menuComboBox.SelectedIndex).add(new Contatto(HttpUtility.HtmlEncode(str[0]), str[1], str[2], str[3])); } } //Creo un nuovo menu phoneBook.add(newMenuNameTextBox.Text); //Aggiungo un nuovo menu al combobox menuComboBox.Items.Add(newMenuNameTextBox.Text); //Cambio il menu visualizzato nella tabella menuComboBox.SelectedIndex = phoneBook.size() - 1; showUnits(phoneBook.size() - 1); //Visualizzazione messaggio di conferma MessageBox.Show("Menu aggiunto correttamente!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { //Visualizzazione messaggio di errore MessageBox.Show("Il nome non può contenere solo spazi!", "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } else { //Controllo che il nome del menu non sia vuoto if (!string.IsNullOrWhiteSpace(newMenuNameTextBox.Text)) { if (phoneBook.size() > 0) { phoneBook.get(menuComboBox.SelectedIndex).clear(); } //Controllo che ci sia almeno una riga nella tabella if (dataGridView1.Rows.Count - 1 > 0) { //Salvo tutti i contatti del menu corrente nel menu corrispondente for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) { string[] str = new string[] { "", "", "", "" }; //Scorro le 4 colonne della tabella for (int l = 0; l < 4; l++) { try { str[l] = (string)dataGridView1.Rows[i].Cells[l + 1].Value.ToString(); } catch (NullReferenceException exc) {} } phoneBook.get(menuComboBox.SelectedIndex).add(new Contatto(HttpUtility.HtmlEncode(str[0]), str[1], str[2], str[3])); } } //Creo un nuovo menu phoneBook.add(newMenuNameTextBox.Text); //Aggiungo un nuovo menu al combobox menuComboBox.Items.Add(newMenuNameTextBox.Text); //Cambio il menu visualizzato nella tabella menuComboBox.SelectedIndex = phoneBook.size() - 1; showUnits(phoneBook.size() - 1); //Visualizzazione messaggio di conferma MessageBox.Show("Menu aggiunto correttamente!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { //Visualizzazione messaggio di errore MessageBox.Show("Il nome non può contenere solo spazi!", "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error); } } lastPhonebookSize = phoneBook.size(); }
//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); }