示例#1
0
        public static async Task GetRootItems(FolderTreeViewModel folderTree)
        {
            Debug.Assert(folderTree != null);
            var db          = Database.DbConnection;
            var rootFolders = await db.Table <Folders>().Where(f => f.Parent == 0).ToListAsync();

            //  Skip single rootfolders, unless it does not have children
            while (rootFolders.Count == 1)
            {
                var rootId   = rootFolders.First().Id;
                var children = await db.Table <Folders>().Where(f => f.Parent == rootId).ToListAsync();

                if (children.Count == 0)
                {
                    break;
                }
                rootFolders = children;
            }
            var root = new ObservableCollection <FolderViewModel>();

            foreach (Folders folder in rootFolders)
            {
                var folderViewModel = new FolderViewModel(folder, null, folderTree);
                await folderViewModel.ReadChildrenFromDb();

                root.Add(folderViewModel);
            }
            folderTree.Children = root;
        }
示例#2
0
 public async Task FolderVm1()
 {
     var tree = new FolderTreeViewModel();
     var folder = new FolderViewModel("Test", tree);
     await folder.Save();
   
     var root = tree.Children;
     Assert.AreNotEqual(0, root.Count(), "Folder niet aangemaakt");
 }
示例#3
0
 public async Task FolderVMaddChild()
 {
     var tree = new FolderTreeViewModel();
     var testFolder = new FolderViewModel("TestParent", tree);
     await testFolder.Save();
     var test = await testFolder.AddChild("testChild");
     await test.Save();
     Assert.IsNotNull(test, "Folder niet aangemaakt");
     Assert.AreEqual("testChild", testFolder.Children[0].Name, false);
 }
示例#4
0
 public async Task FolderVmRecusie1()
 {
     var tree = new FolderTreeViewModel();
     var testFolder = new FolderViewModel("TestParent", tree);
     await testFolder.Save();
     var testChild = await testFolder.AddChild(testFolder);
     Assert.IsNotNull(testFolder, "Folder niet aangemaakt");
     Assert.IsNull(testFolder.Parent, "Parent recursie!");
     Assert.AreEqual(testFolder.Children.Count, 0, "Child recursie!");
 }
示例#5
0
 public async Task FolderVmparent1()
 {
     var tree = new FolderTreeViewModel();
     var parentFolder = new FolderViewModel("TestParent", tree);
     await parentFolder.Save();
     var testFolder = await parentFolder.AddChild("Test");
     Assert.IsNotNull(testFolder, "Folder niet aangemaakt");
     Assert.IsNotNull(parentFolder, "parentFolder niet aangemaakt");
     Assert.AreEqual<int>(0, testFolder.Children.Count, "Child ten onrechte aangemaakt");
     Assert.AreEqual("Test", parentFolder.Children[0].Name, false);
 }
示例#6
0
        public override async void OnNavigatedTo(NavigatedToEventArgs e, Dictionary<string, object> viewModelState)
        {
            string errorMessage = string.Empty;
            try
            {
                LoadingData = true;
                var db = Database.DbConnection;

                var accountsList = new ObservableCollection<AccountViewModel>();
                {
                    var result = await db.QueryAsync<AccountViewModel>("select Id, Name from Accounts");
                    AccountsList = new ObservableCollection<AccountViewModel>();
                    foreach (var accountViewModel in result)
                    {
                        AccountsList.Add(accountViewModel);
                    }
                }

                FolderTree = new FolderTreeViewModel();
                await FolderTree.Refresh();
                FolderItems = FolderTree.Children;

                if (FolderItems.Count == 0)
                {
                    _navigationService.Navigate("EmailProvider",new AccountPageParameters() {FolderTree = _folderTree});
                    return;
                }

                var currentAccount = await SettingsMethods.GetSetting("default account") ??
                                     await SettingsMethods.GetSetting("last used account") ??
                                     "0";

                SelectedAccountIndex = Convert.ToInt32(currentAccount);
                var account = await db.FindAsync<Accounts>(AccountsList[SelectedAccountIndex].Id);
                foreach (var folder in FolderItems)
                {
                    if (folder.Expand(account.InFolderId, true)) break;
                }
            }
            catch (Exception ex)
            {
                errorMessage = string.Format(CultureInfo.CurrentCulture,
                    "GeneralServiceErrorMessage",
                    Environment.NewLine,
                    ex.Message);
            }
            finally
            {
                LoadingData = false;
            }
        }
        public override async void OnNavigatedTo(NavigatedToEventArgs e, Dictionary <string, object> viewModelState)
        {
            string errorMessage = string.Empty;

            try
            {
                LoadingData = true;
                var parameter = (AccountPageParameters)e.Parameter;
                if (e.NavigationMode == NavigationMode.New)
                {
                    if ((parameter != null) && (parameter.Account != 0))
                    {
                        _emailProvider = new Accounts();
                    }
                    else
                    {
                        var db = Database.DbConnection;
                        _emailProvider = await db.FindAsync <Accounts>(f => f.Id == parameter.Account);

                        if (_emailProvider == null)
                        {
                            _emailProvider = new Accounts();
                        }
                    }
                }
                _folderTree = parameter?.FolderTree;
            }
            catch (Exception ex)
            {
                errorMessage = string.Format(CultureInfo.CurrentCulture,
                                             "GeneralServiceErrorMessage",
                                             Environment.NewLine,
                                             ex.Message);
            }
            finally
            {
                LoadingData = false;
            }
        }
        public override async void OnNavigatedTo(NavigatedToEventArgs e, Dictionary<string, object> viewModelState)
        {
            string errorMessage = string.Empty;
            try
           {
                LoadingData = true;
                var parameter = (AccountPageParameters)e.Parameter;
                if (e.NavigationMode == NavigationMode.New)
                {
                    if ((parameter != null) && (parameter.Account != 0))
                    {
                        _emailProvider = new Accounts();
                    }
                    else
                    {
                        var db = Database.DbConnection;
                       _emailProvider = await db.FindAsync<Accounts>(f => f.Id == parameter.Account);
                        if (_emailProvider == null)
                        {
                            _emailProvider = new Accounts();
                        } 
                    }
                }
               _folderTree = parameter?.FolderTree;
           }
            catch (Exception ex)
            {
                errorMessage = string.Format(CultureInfo.CurrentCulture,
                "GeneralServiceErrorMessage",
                Environment.NewLine,
                ex.Message);
            }
            finally
            {
                LoadingData = false;
            }

        }
示例#9
0
 internal FolderViewModel(Folders myFolder, FolderViewModel myParent, FolderTreeViewModel visualTree)
 {
     this._folder = myFolder;
     _visualTree  = visualTree;
     _parent      = myParent;
 }
示例#10
0
 public FolderViewModel(string name, FolderTreeViewModel folderTree)
 {
     _folder     = new Folders();
     Name        = name;
     _visualTree = folderTree;
 }