Beispiel #1
0
 public Accounts()
 {
     InitializeComponent();
     using (var scope = App.Container.BeginLifetimeScope())
     {
         this.BindingContext = vm = scope.Resolve <IAccountsViewModel>();
     }
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="TransactionDetailsViewModel"/> class.
        /// </summary>
        /// <param name="validator">Validator for view model data.</param>
        /// <param name="accountsVM">Accounts view model.</param>
        /// <param name="categoriesVM">Categories view model.</param>
        public TransactionDetailsViewModel(IValidator validator, IAccountsViewModel accountsVM, ICategoriesViewModel categoriesVM)
            : base(validator)
        {
            this.accountsVM   = accountsVM;
            this.categoriesVM = categoriesVM;

            var accounts = new BindableCollection <AccountDTO>();

            accountsCollectionViewSource.Source = accounts;

            this.accountsVM.Reloaded += (sender, args) =>
            {
                accounts.Clear();

                foreach (var account in this.accountsVM.Accounts)
                {
                    accounts.Add(account as AccountDTO);
                }

                if (!accountsCollectionViewSource.View.IsEmpty)
                {
                    accountsCollectionViewSource.View.MoveCurrentToFirst();
                }
            };

            var categories = new BindableCollection <CategoryDTO>();

            categoriesCollectionViewSource.Source = categories;

            this.categoriesVM.Reloaded += (sender, args) =>
            {
                categories.Clear();
                categories.AddRange(this.categoriesVM.Categories);

                if (!categoriesCollectionViewSource.View.IsEmpty)
                {
                    categoriesCollectionViewSource.View.MoveCurrentToFirst();
                }
            };

            categoryFilter = (search, item) =>
            {
                if (string.IsNullOrEmpty(search))
                {
                    return(true);
                }

                if (item is CategoryDTO)
                {
                    string searchToLower = search.ToLower(CultureInfo.InvariantCulture);
                    return((item as CategoryDTO).Name.ToLower(CultureInfo.InvariantCulture).Contains(searchToLower));
                }

                return(false);
            };
        }
Beispiel #3
0
        public ShellViewModel(
            IProjectData projectData,
            IBusy busy,
            IMenuViewModel menu,
            IFullJournalViewModel fullJournal,
            IAccountJournalViewModel accountJournal,
            IAccountsViewModel accounts,
            IApplicationUpdate applicationUpdate)
        {
            this.ProjectData       = projectData;
            this.Busy              = busy;
            this.Menu              = menu;
            this.FullJournal       = fullJournal;
            this.AccountJournal    = accountJournal;
            this.Accounts          = accounts;
            this.applicationUpdate = applicationUpdate;

            this.version = this.GetType().GetInformationalVersion();

            // TODO SVM is too much responsible
            this.ProjectData.DataLoaded += (sender, args) =>
            {
                this.Accounts.OnDataLoaded();
                this.Menu.OnDataLoaded();
            };
            this.ProjectData.YearChanged += (_, __) =>
            {
                this.UpdateDisplayName();
                this.FullJournal.Rebuild();
                this.Accounts.SelectFirstAccount();
            };
            this.ProjectData.JournalChanged += (_, args) =>
            {
                this.FullJournal.Rebuild();
                this.FullJournal.Select(args.ChangedBookingId);

                if (this.Accounts.SelectedAccount == null ||
                    !args.AffectedAccounts.Contains(this.Accounts.SelectedAccount.Identifier))
                {
                    return;
                }

                this.AccountJournal.Rebuild(this.Accounts.SelectedAccount.Identifier);
                this.AccountJournal.Select(args.ChangedBookingId);
            };
            this.Accounts.PropertyChanged += (_, args) =>
            {
                if (args.PropertyName == nameof(this.Accounts.SelectedAccount))
                {
                    this.AccountJournal.Rebuild(this.Accounts.SelectedAccount?.Identifier ?? 0);
                }
            };
        }
        public AccountsView(IAccountsViewModel viewModel)
        {
            Debug.WriteLine("[Debug] AccountsView.AccountsView()");
            this.DataContext = viewModel;
            this.Resources.Add("ViewModel", viewModel);
            InitializeComponent();

            // Detect changes to BrokerageAccountSummaries
            viewModel.getUserContext().BrokerageAccountSummaries.CollectionChanged +=
                new NotifyCollectionChangedEventHandler(BrokerageAccountSummariesChanged);

            ShowAccountsChart();
        }
Beispiel #5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MoneyTrackerViewModel"/> class.
 /// </summary>
 public MoneyTrackerViewModel(
     IAccountsViewModel accountsVM,
     ICategoriesViewModel categoriesVM,
     ITransactionsViewModel transactionsVM,
     ITransactionDetailsViewModel transactionDetailsVM,
     ITransferViewModel transferViewModel)
 {
     Accounts     = accountsVM;
     Categories   = categoriesVM;
     Transactions = transactionsVM;
     AddNew       = transactionDetailsVM;
     Transfer     = transferViewModel;
 }
Beispiel #6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TransactionsViewModel"/> class.
        /// </summary>
        /// <param name="validator">Validator for view model data.</param>
        /// <param name="accountsVM">Accounts view model.</param>
        public TransactionsViewModel(IValidator validator, IAccountsViewModel accountsVM, ITransactionDetailsViewModel transactionDetailsVM, ITransferViewModel transferVM)
            : base(validator)
        {
            TransactionRecords        = new BindableCollection <TransactionRecord>();
            this.accountsVM           = accountsVM;
            this.transactionDetailsVM = transactionDetailsVM;
            this.transferVM           = transferVM;

            this.accountsVM.Accounts.CurrentChanged += (o, eventArgs) =>
            {
                if (!this.accountsVM.Accounts.IsEmpty)
                {
                    CurrentAccount = this.accountsVM.Accounts.CurrentItem as AccountDTO;
                }
            };
        }
Beispiel #7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TransferViewModel"/> class.
        /// </summary>
        /// <param name="validator">Validator for view model data.</param>
        /// <param name="accountsVM">Accounts view model.</param>
        public TransferViewModel(IValidator validator, IAccountsViewModel accountsVM)
            : base(validator)
        {
            this.accountsVM = accountsVM;

            var accounts1 = new BindableCollection <AccountDTO>();

            accounts1CollectionViewSource.Source = accounts1;

            this.accountsVM.Reloaded += (sender, args) =>
            {
                accounts1.Clear();

                foreach (var account in this.accountsVM.Accounts)
                {
                    accounts1.Add(account as AccountDTO);
                }

                if (!accounts1CollectionViewSource.View.IsEmpty)
                {
                    accounts1CollectionViewSource.View.MoveCurrentToFirst();
                }
            };

            var accounts2 = new BindableCollection <AccountDTO>();

            accounts2CollectionViewSource.Source = accounts2;

            this.accountsVM.Reloaded += (sender, args) =>
            {
                accounts2.Clear();

                foreach (var account in this.accountsVM.Accounts)
                {
                    accounts2.Add(account as AccountDTO);
                }

                if (!accounts2CollectionViewSource.View.IsEmpty)
                {
                    accounts2CollectionViewSource.View.MoveCurrentToFirst();
                }
            };
        }