//<summary> //Ajoute plusieurs entrées aux listes //</summary> //<param name="items_to_add">entrées à ajouter</param> void AddEntries(ListViewItem[] items_to_add) { foreach (ListViewItem item_to_add in items_to_add) { list_speedruns.Add(item_to_add); list_speedruns_by_name.Add(list_speedruns.Count - 1); list_speedruns_by_time.Add(list_speedruns.Count - 1); } GUI_listView.BeginUpdate(); GUI_listView.Items.Clear(); if (bTriParNom) GUI_listView.Items.AddRange(list_speedruns_by_name.ToArray()); else GUI_listView.Items.AddRange(list_speedruns_by_time.ToArray()); GUI_listView.EndUpdate(); if (!bResizedTimeColumn) { GUI_listView.Columns[1].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); bResizedTimeColumn = true; } }
//<summary> //Retire une entrée aux listes //</summary> //<param name="item_to_remove">entrée à retirer</param> void RemoveEntry(ListViewItem item_to_remove) { int nRemovedItemIndex = list_speedruns.IndexOf(item_to_remove); list_speedruns.Remove(item_to_remove); list_speedruns_by_name.Remove(nRemovedItemIndex); list_speedruns_by_time.Remove(nRemovedItemIndex); GUI_listView.BeginUpdate(); GUI_listView.Items.Clear(); if (bTriParNom) GUI_listView.Items.AddRange(list_speedruns_by_name.ToArray()); else GUI_listView.Items.AddRange(list_speedruns_by_time.ToArray()); GUI_listView.EndUpdate(); }
/// <summary> /// Modification du nom d'un élément de la liste /// </summary> /// <param name="sender">Paramètre par défaut.</param> /// <param name="e">Contient le nouveau texte à assigner.</param> /// <remarks>Annule l'édition ordinaire de texte, et regénère /// complètement les listes y compris la visuelle.</remarks> private void GUI_listView_AfterLabelEdit(object sender, LabelEditEventArgs e) { #if PROGRESSBAR_ADDON if (bIsUpdating) e.CancelEdit = true; else #endif if (e.Label != null) { int nIndexListeGlobale = list_speedruns.IndexOf(GUI_listView.Items[e.Item]); int nIndexItemModifie; ListViewItem item_modifie; #region Création de l'item modifié item_modifie = new ListViewItem(e.Label); //titre item_modifie.ToolTipText = item_modifie.SubItems[0].Text; item_modifie.SubItems.Add(GUI_listView.Items[e.Item].SubItems[1].Text); //durée item_modifie.SubItems.Add(GUI_listView.Items[e.Item].SubItems[2].Text); //numéro #endregion Création de l'item modifié RemoveEntry(GUI_listView.Items[e.Item]); AddEntry(item_modifie); nIndexItemModifie = GUI_listView.Items.IndexOf(item_modifie); GUI_listView.Items[nIndexItemModifie].Selected = true; GUI_listView.Items[nIndexItemModifie].Focused = true; GUI_listView.EnsureVisible(nIndexItemModifie); bModified = true; e.CancelEdit = true; //la méthode remplace le processus normal d'édition } }
//////////////// //////////////// //////////////// #region Clic sur une colonne (changement du tri des éléments) /// <summary> /// Action lors d'un clic sur un titre de colonne. /// Réorganise la liste sur l'élément cliqué. /// N'affecte pas le fichier généré en sortie. /// </summary> /// <param name="sender">Paramètre par défaut.</param> /// <param name="e">Paramètre contenant notamment l'index de base 0 /// de la colonne cliquée.</param> private void GUI_listView_ColumnClick(object sender, ColumnClickEventArgs e) { #if PROGRESSBAR_ADDON if (!bIsUpdating) { #endif if (e.Column == 0) //colonne Titre { GUI_listView.BeginUpdate(); if (bTriNomInverse) list_speedruns_by_name.SetComparer(CompareTitreItem); else list_speedruns_by_name.SetComparer(CompareTitreItemInverse); list_speedruns_by_name.Initialize(); GUI_listView.Items.Clear(); GUI_listView.Items.AddRange(list_speedruns_by_name.ToArray()); bTriNomInverse = !bTriNomInverse; bTriParNom = true; GUI_listView.EndUpdate(); } else if (e.Column == 1) //colonne Durée { GUI_listView.BeginUpdate(); if (bTriDureeInverse) list_speedruns_by_time.SetComparer(CompareDureeItem); else list_speedruns_by_time.SetComparer(CompareDureeItemInverse); list_speedruns_by_time.Initialize(); GUI_listView.Items.Clear(); GUI_listView.Items.AddRange(list_speedruns_by_time.ToArray()); bTriDureeInverse = !bTriDureeInverse; bTriParNom = false; GUI_listView.EndUpdate(); } else MessageBox.Show("Pas de tri sur cet élément."); if (GUI_listView.SelectedIndices.Count > 0) GUI_listView.EnsureVisible(GUI_listView.SelectedIndices[0]); #if PROGRESSBAR_ADDON } #endif }