예제 #1
0
        public MainViewModel(IProtoService protoService, ICacheService cacheService, ISettingsService settingsService, IEventAggregator aggregator, INotificationsService pushService, IVibrationService vibrationService, ILiveLocationService liveLocationService, IContactsService contactsService, IPasscodeService passcodeService, ILifetimeService lifecycle, ISessionService session, IVoIPService voipService)
            : base(protoService, cacheService, settingsService, aggregator)
        {
            _pushService         = pushService;
            _vibrationService    = vibrationService;
            _liveLocationService = liveLocationService;
            _passcodeService     = passcodeService;
            _lifetimeService     = lifecycle;
            _sessionService      = session;
            _voipService         = voipService;

            _typingManagers     = new ConcurrentDictionary <int, InputTypingManager>();
            _chatTypingManagers = new ConcurrentDictionary <int, InputTypingManager>();

            //Dialogs = new DialogCollection(protoService, cacheService);
            Chats    = new ChatsViewModel(protoService, cacheService, settingsService, aggregator);
            Contacts = new ContactsViewModel(protoService, cacheService, settingsService, aggregator, contactsService);
            Calls    = new CallsViewModel(protoService, cacheService, settingsService, aggregator);
            Settings = new SettingsViewModel(protoService, cacheService, settingsService, aggregator, pushService, contactsService);

            ChildViewModels.Add(Chats);
            ChildViewModels.Add(Contacts);
            ChildViewModels.Add(Calls);
            ChildViewModels.Add(Settings);
            ChildViewModels.Add(_voipService as TLViewModelBase);

            aggregator.Subscribe(this);

            LiveLocationCommand     = new RelayCommand(LiveLocationExecute);
            StopLiveLocationCommand = new RelayCommand(StopLiveLocationExecute);

            ReturnToCallCommand = new RelayCommand(ReturnToCallExecute);
        }
예제 #2
0
        /// <summary>
        /// Called when the object is validating.
        /// </summary>
        /// <param name="validationContext">The validation context.</param>
        protected override void OnValidating(IValidationContext validationContext)
        {
            base.OnValidating(validationContext);

            lock (_modelLock)
            {
                foreach (KeyValuePair <string, object> model in _modelObjects)
                {
                    if (model.Value is null)
                    {
                        continue;
                    }

                    if (!_modelObjectsInfo[model.Key].SupportValidation)
                    {
                        continue;
                    }

                    var validatable = model.Value as IValidatable;
                    if (validatable != null)
                    {
                        validatable.Validate();
                    }
                }
            }

            lock (ChildViewModels)
            {
                var previousValue = _childViewModelsHaveErrors;

                _childViewModelsHaveErrors = false;

                var childViewModels = ChildViewModels.ToArray();
                foreach (var childViewModel in childViewModels)
                {
                    childViewModel.Validate();
                    if (childViewModel.HasErrors)
                    {
                        _childViewModelsHaveErrors = true;
                        RaisePropertyChanged(() => HasErrors);
                    }
                }

                if (!_childViewModelsHaveErrors && _childViewModelsHaveErrors != previousValue)
                {
                    RaisePropertyChanged(() => HasErrors);
                }
            }
        }
예제 #3
0
        private void RegisterChildViewModel <T>() where T : ChildViewModel
        {
            var viewModel = (T)Activator.CreateInstance(typeof(T), this, _userData);

            ChildViewModels.Add(viewModel);
            var button = new Button()
            {
                Content          = viewModel.Name,
                Command          = _activateViewModelCommand,
                CommandParameter = viewModel,
                Margin           = new Thickness(5)
            };

            button.SetResourceReference(Button.StyleProperty, "ButtonStyle");

            ChildViewModelButtons.Add(button);
        }
        /// <summary>
        /// Called when the object is validating.
        /// </summary>
        protected override void OnValidating()
        {
            base.OnValidating();

            lock (_modelObjects)
            {
                foreach (KeyValuePair <string, object> model in _modelObjects)
                {
                    if (model.Value == null)
                    {
                        continue;
                    }

                    var modelValueAsModelBaseBase = model.Value as ModelBase;
                    if (modelValueAsModelBaseBase != null)
                    {
                        modelValueAsModelBaseBase.Validate();
                    }
                }
            }

            lock (ChildViewModels)
            {
                var previousValue = _childViewModelsHaveErrors;

                _childViewModelsHaveErrors = false;

                var childViewModels = ChildViewModels.ToArray();
                foreach (IViewModel childViewModel in childViewModels)
                {
                    childViewModel.ValidateViewModel();
                    if (childViewModel.HasErrors)
                    {
                        _childViewModelsHaveErrors = true;
                        RaisePropertyChanged(() => HasErrors);
                    }
                }

                if (!_childViewModelsHaveErrors && (_childViewModelsHaveErrors != previousValue))
                {
                    RaisePropertyChanged(() => HasErrors);
                }
            }
        }
        public SettingsPrivacyAndSecurityViewModel(IProtoService protoService, ICacheService cacheService, ISettingsService settingsService, IEventAggregator aggregator, IContactsService contactsService, SettingsPrivacyShowStatusViewModel statusTimestamp, SettingsPrivacyAllowCallsViewModel phoneCall, SettingsPrivacyAllowChatInvitesViewModel chatInvite)
            : base(protoService, cacheService, settingsService, aggregator)
        {
            _contactsService = contactsService;

            _showStatusRules       = statusTimestamp;
            _allowCallsRules       = phoneCall;
            _allowChatInvitesRules = chatInvite;

            PasswordCommand      = new RelayCommand(PasswordExecute);
            ClearDraftsCommand   = new RelayCommand(ClearDraftsExecute);
            ClearContactsCommand = new RelayCommand(ClearContactsExecute);
            ClearPaymentsCommand = new RelayCommand(ClearPaymentsExecute);
            AccountTTLCommand    = new RelayCommand(AccountTTLExecute);
            PeerToPeerCommand    = new RelayCommand(PeerToPeerExecute);

            ChildViewModels.Add(_showStatusRules);
            ChildViewModels.Add(_allowCallsRules);
            ChildViewModels.Add(_allowChatInvitesRules);

            aggregator.Subscribe(this);
        }
 public void EditParticipant(Participant participant)
 {
     ChildViewModels.Add(new EditParticipantViewModel("Edit " + participant.FirstName + " " + participant.LastName + " (" + participant.Affiliation.Abbreviation + ")",
                                                      mainWindow, this, _database, participant));
     SelectedChildViewModel = ChildViewModels.Last();
 }