/// <summary> /// Mover pictogramas de una posición a otra /// </summary> /// <param name="oldIndex">Índice en el que está el pictograma</param> /// <param name="newIndex">Índice al que quieres enviar el pictogramaa</param> private void MovePictogram(int oldIndex, int newIndex) { if (tale.GetPage(currentPageIndex) != null) { if (newIndex <= 10 && newIndex >= 0) { Pictogram pictogram = tale.GetPage(currentPageIndex).ElementAt(oldIndex); tale.GetPage(currentPageIndex).RemovePictogram(oldIndex); if (newIndex < oldIndex) { displacePictograms(newIndex, oldIndex - 1); } else { displacePictograms(oldIndex + 1, newIndex, true); } pictogram.Index = newIndex; tale.page.InsertPictogram(pictogram); } else { throw new ArgumentOutOfRangeException(); } } else { throw new ArgumentNullException(); } }
/// <summary> /// Desplaza páginas hacia la derecha o hacia la izquierda /// </summary> /// <param name="first">El ínndice desde donde quieres mover la página</param> /// <param name="last">El índice hasta donde quieres mover la página</param> /// <param name="toLeft">Por defecto: Hacia la derecha</param> private void displacePictograms(int first, int last, bool toLeft = false) { if (last == -1) { last = tale.GetPage(currentPageIndex).Pictograms.Count - 1; } // derecha if (!toLeft) { for (int i = last; i >= first; i--) { Pictogram p = tale.GetPage(currentPageIndex).ElementAt(i); tale.GetPage(currentPageIndex).RemovePictogram(i); p.Index++; tale.GetPage(currentPageIndex).InsertPictogram(p); } } else //izquierda { for (int i = first; i <= last; i++) { Pictogram p = tale.GetPage(currentPageIndex).ElementAt(i); tale.GetPage(currentPageIndex).RemovePictogram(i); p.Index--; tale.GetPage(currentPageIndex).InsertPictogram(p); } } }
/// <summary> /// Inserta un pictograma en el xml /// </summary> /// <param name="pictogram">Pictograma que quieres insertar</param> ///<param name="page">Página donde quieres insertar el pictograma</param> public void InsertPictogram(Pictogram pictogram, Page page) { if (pictogram != null) { if (pictogram.Index <= 10 && pictogram.Index >= 0) { if (page != null) { page.Pictograms.Add(pictogram); } } else { throw new ArgumentOutOfRangeException(); } } else { throw new ArgumentNullException(); } }
/// <summary> /// Cambia el pictograma de una página /// </summary> /// <param name="pictogram">Pictograma que quieres cambiar</param> public void SetPictogram(Pictogram pictogram) { CurrentPage.SetPictogram(pictogram); }