private void DeshacerBorrar() { if (ItinerarioSeleccionado != null) { foreach (Parada p in ItinerarioSeleccionado.ParadasBorradas) { if (p.Nuevo) { ItinerarioSeleccionado.ListaParadas.Add(p); } else { ItinerarioSeleccionado.ListaParadas.Add(p); p.Nuevo = false; } } ItinerarioSeleccionado.ParadasBorradas.Clear(); } if (LineaSeleccionada != null) { foreach (Itinerario i in LineaSeleccionada.ItinerariosBorrados) { if (i.Nuevo) { LineaSeleccionada.ListaItinerarios.Add(i); } else { LineaSeleccionada.ListaItinerarios.Add(i); i.Nuevo = false; } } LineaSeleccionada.ItinerariosBorrados.Clear(); } if (_listalineasborradas != null) { foreach (Linea l in _listalineasborradas) { if (l.Nuevo) { ListaLineas.Add(l); } else { ListaLineas.Add(l); l.Nuevo = false; } } _listalineasborradas.Clear(); } HayCambios = true; }
private void Pegar() { // Si no hay seleccionada una tabla if (TablaParaCopy == null || TablaParaCopy.CurrentCell == null) { return; } // Parseamos los datos del portapapeles y definimos las variables. List <string[]> portapapeles = Utils.parseClipboard(); int columnagrid; int filagrid; bool esnuevo; // Si no hay datos, salimos. if (portapapeles == null) { return; } // Establecemos la columna donde se empieza a pegar. columnagrid = TablaParaCopy.Columns.IndexOf(TablaParaCopy.CurrentCell.Column); filagrid = TablaParaCopy.Items.IndexOf(TablaParaCopy.CurrentCell.Item); // Creamos un objeto ConvertidorHora y otro ConvertidorItinerario Convertidores.ConvertidorHora cnvHora = new Convertidores.ConvertidorHora(); Convertidores.ConvertidorItinerario cnvItinerario = new Convertidores.ConvertidorItinerario(); // Iteramos por las filas del portapapeles. foreach (string[] fila in portapapeles) { if (TablaSeleccionada == Tablas.Lineas) { // Creamos un objeto Linea o reutilizamos el existente. Linea linea; if (filagrid < ListaLineas.Count) { linea = ListaLineas[filagrid]; esnuevo = false; } else { linea = new Linea(); esnuevo = true; } int columna = columnagrid; foreach (string texto in fila) { if (columna >= TablaParaCopy.Columns.Count) { continue; } while (TablaParaCopy.Columns[columna].Visibility == Visibility.Collapsed) { columna++; } switch (columna) { case 0: linea.Nombre = texto; break; // NOMBRE case 1: linea.Descripcion = texto; break; //DESCRIPCIÓN } columna++; } if (esnuevo) { ListaLineas.Add(linea); } filagrid++; HayCambios = true; } if (TablaSeleccionada == Tablas.Itinerarios) { // Creamos un objeto Itinerario o reutilizamos el existente. Itinerario itinerario; if (filagrid < LineaSeleccionada.ListaItinerarios.Count) { itinerario = LineaSeleccionada.ListaItinerarios[filagrid]; esnuevo = false; } else { itinerario = new Itinerario(); esnuevo = true; } int columna = columnagrid; foreach (string texto in fila) { if (columna >= TablaParaCopy.Columns.Count) { continue; } while (TablaParaCopy.Columns[columna].Visibility == Visibility.Collapsed) { columna++; } int i; switch (columna) { case 0: itinerario.Nombre = (decimal)cnvItinerario.ConvertBack(texto, null, null, null); break; // NOMBRE case 1: itinerario.Descripcion = texto; break; //DESCRIPCIÓN case 2: itinerario.TiempoReal = int.TryParse(texto, out i) ? i : 0; break; //TIEMPO REAL case 3: itinerario.TiempoPago = int.TryParse(texto, out i) ? i : 0; break; //TIEMPO PAGO } columna++; } if (esnuevo) { LineaSeleccionada.ListaItinerarios.Add(itinerario); } filagrid++; HayCambios = true; } if (TablaSeleccionada == Tablas.Paradas) { // Creamos un objeto Parada o reutilizamos el existente. Parada parada; if (filagrid < ItinerarioSeleccionado.ListaParadas.Count) { parada = ItinerarioSeleccionado.ListaParadas[filagrid]; esnuevo = false; } else { parada = new Parada(); esnuevo = true; } int columna = columnagrid; foreach (string texto in fila) { if (columna >= TablaParaCopy.Columns.Count) { continue; } while (TablaParaCopy.Columns[columna].Visibility == Visibility.Collapsed) { columna++; } int i; switch (columna) { case 0: parada.Orden = int.TryParse(texto, out i) ? i : 0; break; // ORDEN case 1: parada.Descripcion = texto; break; //DESCRIPCIÓN case 2: parada.Tiempo = (TimeSpan)cnvHora.ConvertBack(texto, null, null, null); break; //TIEMPO } columna++; } if (esnuevo) { ItinerarioSeleccionado.ListaParadas.Add(parada); } filagrid++; HayCambios = true; } } }