示例#1
0
        private async void getStartedSynchronizationAsync(DropboxApi api, string syncFolder, int indexCursor)
        {
            updateState(false);
            string nameSyncFolder = "/" + syncFolder.Split('\\').Last();

            string cur = Properties.Settings.Default.cursorsFolders[indexCursor] /*Properties.Settings.Default.cursor*/;
            Delta  delta;

            if (cur != "")
            {
                delta = await api.GetDeltaAsync(cur, nameSyncFolder);
            }
            else
            {
                delta = await api.GetDeltaAsync(nameSyncFolder);
            }
            List <string> newFiles = new List <string>();

            //updateExistingFiles(selectedFolder, newFiles ,delta);

            if (delta.entries.Count() > 0)
            {
                delta = await api.GetDeltaAsync(cur, nameSyncFolder /*"/Синхронизируемая папка"*/);

                cur = delta.cursor;
                //Properties.Settings.Default.cursor = cur;
                Properties.Settings.Default.cursorsFolders[indexCursor] = cur;
                Properties.Settings.Default.Save();
                string[] Directories = syncFolder.Split('\\');

                foreach (var file in delta.entries)
                {
                    if (file.Item2 != null)
                    {
                        if (file.Item2.is_dir == false)
                        {
                            string nameFile = Directories.Last();
                            nameFile = file.Item2.path.Substring(nameFile.Length + 1).Replace('/', '\\');
                            var folder = await client.downloadFileAsync(api, file.Item2.path.TrimStart('/'));

                            watcher.EnableRaisingEvents = false;
                            folder.Save(syncFolder + nameFile);
                            watcher.EnableRaisingEvents = true;
                            newFiles.Add(syncFolder + nameFile);
                        }
                        else
                        {
                            string nameFolder = Directories.Last();
                            nameFolder = file.Item2.path.Substring(nameFolder.Length + 1).Replace('/', '\\');
                            Directory.CreateDirectory(syncFolder + nameFolder);
                        }
                    }
                    else
                    {
                        string nameFile = Directories.Last();
                        nameFile = file.Item1.Substring(nameFile.Length + 1).Replace('/', '\\');

                        if (!isFolder(file.Item1.ToString()))
                        {
                            if (System.IO.File.Exists(syncFolder + nameFile))
                            {
                                watcher.EnableRaisingEvents = false;
                                try
                                {
                                    System.IO.File.Delete(syncFolder + nameFile);
                                }
                                catch (Exception e) { }
                                watcher.EnableRaisingEvents = true;
                            }
                        }
                        else
                        {
                            if (System.IO.Directory.Exists(syncFolder + nameFile))
                            {
                                watcher.EnableRaisingEvents = false;
                                try
                                {
                                    System.IO.Directory.Delete(syncFolder + nameFile);
                                }
                                catch (Exception e) { }
                                watcher.EnableRaisingEvents = true;
                            }
                        }
                    }
                }
            }

            uploadNewFiles(syncFolder, newFiles, indexCursor);
        }