Exemplo n.º 1
0
		public async Task<Folder> AddFolderAsync()
		{
			Folder newFolder = null;

			bool isOk = await RunFunctionIfOpenAsyncTB(async delegate
			{
				newFolder = new Folder(_dbManager, RuntimeData.GetText("NewFolder"), DateTime.Now);
				// folder.ParentId = Id; // folders may not have ParentId because they can be exported or imported

				if (await _dbManager.InsertIntoFoldersAsync(newFolder))
				{
					// Add the same categories as the last folder, which was added. 
					// This is an automatism to streamline usage, it has no special reason to be.
					await newFolder.OpenAsync().ConfigureAwait(false);
					Folder lastAddedFolder = null;
					if (_folders.Any())
					{
						var maxCreateDate = _folders.Max(fol => fol.DateCreated);
						if (maxCreateDate != default(DateTime))
						{
							lastAddedFolder = _folders.FirstOrDefault(fol => fol.DateCreated == maxCreateDate);
						}
					}
					if (lastAddedFolder != null)
					{
						foreach (var cat in lastAddedFolder.DynamicCategories)
						{
							await newFolder.AddDynamicCategoryAsync(cat?.CategoryId).ConfigureAwait(false);
						}
					}

					await RunInUiThreadAsync(() => _folders.Add(newFolder)).ConfigureAwait(false);
					return true;
				}
				return false;
			});

			if (isOk) return newFolder; else return null;
		}
Exemplo n.º 2
0
		private async Task<bool> RemoveFolder2Async(Folder folder)
		{
			if (folder == null) return false;

			if (await _dbManager.DeleteFromFoldersAsync(folder))
			{
				if (folder.Id == _currentFolderId)
				{
					int previousFolderIndex = Math.Max(0, _folders.IndexOf(folder) - 1);
					CurrentFolderId = _folders.Count > previousFolderIndex ? _folders[previousFolderIndex].Id : DEFAULT_ID;
					await UpdateCurrentFolder2Async(false);
				}

				await RunInUiThreadAsync(delegate { _folders.Remove(folder); }).ConfigureAwait(false);

				await folder.OpenAsync().ConfigureAwait(false);
				await folder.RemoveWalletsAsync().ConfigureAwait(false);
				await folder.CloseAsync().ConfigureAwait(false);
				folder.Dispose();

				return true;
			}
			Debugger.Break(); // LOLLO this must never happen, check it
			await Logger.AddAsync("Attempting to remove folder, the db operation failed", Logger.FileErrorLogFilename).ConfigureAwait(false);

			return false;
		}
Exemplo n.º 3
0
		private async Task UpdateCurrentFolder2Async(bool openTheFolder)
		{
			if (_folders == null) return;

			_currentFolder = string.IsNullOrEmpty(_currentFolderId) ? null : _folders.FirstOrDefault(fo => fo.Id == _currentFolderId);
			if (_currentFolder != null && openTheFolder)
			{
				await _currentFolder.OpenAsync().ConfigureAwait(false);
			}
			RaisePropertyChanged_UI(nameof(CurrentFolder)); // notify the UI once the data has been loaded
		}