private async void btnAceptar_Click(object sender, EventArgs e) { btnAceptar.Visible = false; treeViewSync.Visible = false; Nodo nodoSeleccionado = (Nodo)treeViewSync.SelectedNode.Tag; string pathRepositorio = Environment.CurrentDirectory + "\\" + nodoSeleccionado.Name; bool exists = Directory.Exists(pathRepositorio); if (!exists && !Properties.Settings.Default.RepositoriosPath.Contains(pathRepositorio)) { NodoLocal nodoLocal = new NodoLocal(pathRepositorio, false); await nodoLocal.Crear(nodoSeleccionado.Id); await PoblarCarpeta(nodoSeleccionado, pathRepositorio); Properties.Settings.Default.RepositoriosPath.Add(pathRepositorio); Properties.Settings.Default.RepositoriosId.Add(nodoSeleccionado.Id); Properties.Settings.Default.Save(); PoblarListBoxRepositoriosGuardados(); } else { MessageBox.Show("El directorio ya se está sincronizando"); } }
/// <summary> /// Pobla recursivamente la carpeta local con los nodos remotos /// </summary> /// <param name="carpetaSeleccionada">Nodo remoto del cual se quiere extraer</param> /// <param name="pathLocal">Ubicación local donde se poblarán los nodos</param> /// <returns></returns> private async Task PoblarCarpeta(Nodo carpetaSeleccionada, string pathLocal) { foreach (var nodoHijo in carpetaSeleccionada.NodosHijos) { if (nodoHijo.IsFolder) { //Se crea el directorio y se le agrega el id NodoLocal nodoLocal = new NodoLocal(pathLocal + "\\" + nodoHijo.Name, false); await nodoLocal.Crear(nodoHijo.Id); if (nodoHijo.NodosHijos.Count != 0) { await PoblarCarpeta(nodoHijo, pathLocal + "\\" + nodoHijo.Name); await nodoLocal.ActualizarFechasLocales(nodoHijo); } } else if (nodoHijo.IsFile) { NodoLocal nodoLocal = new NodoLocal(pathLocal + "\\" + nodoHijo.Name, true); await nodoLocal.Crear(nodoHijo.Id); } } }