/// <summary>
        /// ctor
        /// </summary>
        public SecureItemsHolderViewModel(IResolver resolver, List <AddSecureSubItem> addItems, string type)
        {
            this.resolver = resolver;

            if (_pbExtSecureBrowserBridge == null)
            {
                _pbExtSecureBrowserBridge = resolver.GetInstanceOf <IPBExtSecureBrowserBridge>();
            }

            pbData = resolver.GetInstanceOf <IPBData>();


            InitializeCommands();
            //TODO check if there is any passwords, if not _recommendedsiteFlag set true
            _recommendedsiteFlag   = false;
            SecureItemList         = new List <ISecureItemVM>();
            _subItemsComponentTree = addItems;
            SecureItemType         = type;

            ShowLandingScreen = pbData.GetSecureItemCountByType(SecureItemType) == 0 ? true : false;
            RefreshData();
        }
示例#2
0
        public MainWindow([Import(typeof(IResolver))] IResolver resolver)//[ImportMany] IEnumerable<IUIComponent> components, [Import(typeof(IPBData))]IPBData pbData)
        {
            Application.Current.MainWindow = this;
            application = (PBApp)Application.Current;
            //masterDialog = new MasterPwdBox();
            this.resolver = resolver;


            this.components = resolver.GetAllInstancesOf <IUIComponent>();
            if (this.components == null)
            {
                this.components = new List <IUIComponent>();
            }

            this.subComponents = resolver.GetAllInstancesOf <IUISubComponent>();
            if (this.subComponents == null)
            {
                this.subComponents = new List <IUISubComponent>();
            }

            this.dialogs = resolver.GetAllInstancesOf <IDialog>();
            if (this.dialogs == null)
            {
                this.dialogs = new List <IDialog>();
            }

            this.pbData = resolver.GetInstanceOf <IPBData>();
            ServiceLocator.Register <IFolderService>(new FolderService(pbData));

            this.webApi = resolver.GetInstanceOf <IPBWebAPI>();
            this.accountSettingsUserControl = new AccountSettings.AccountSettings(resolver)
            {
                Visibility = System.Windows.Visibility.Collapsed
            };
            this.accountSettingsUserControl.Loaded += accountSettingsUserControl_Loaded;
            this.searchViewModel              = new SearchViewModel(resolver, SecureHolderCollection);
            searchViewModel.ChangeVisibility += (o, e) =>
            {
                topGrid.Visibility = searchViewModel.IsOpen ? Visibility.Collapsed : Visibility.Visible;
                var component = components.FirstOrDefault(x => x.ID == selectedUIComponentID);
                if (component != null)
                {
                    component.Selected = !searchViewModel.IsOpen;
                }
            };

            folderTreeViewModel = new FoldersTreeViewModel(resolver);
            folderTreeViewModel.SelectedFolder_Changed += (o, e) =>
            {
                if (selectedUIComponentID != null)
                {
                    var component = components.FirstOrDefault(x => x.ID == selectedUIComponentID);
                    if (component != null && component.ViewModel is ISecureHolder)
                    {
                        ((ISecureHolder)component.ViewModel).UpdateTreeView();
                    }
                }
            };
            folderTreeViewModel.FolderList_Changed += (o, e) =>
            {
                Reload();
            };
            folderTreeViewModel.ItemsToFolder_Moved += (o, e) =>
            {
                if (selectedUIComponentID != null)
                {
                    foreach (var item in e.Items.GroupBy(x => (x as ISecureItemVM).Type))
                    {
                        var holder = SecureHolderCollection.FirstOrDefault(x => x.SecureItemType == item.Key);
                        if (holder != null)
                        {
                            holder.MoveSecureItemToFolder(item, e.FolderId);
                        }
                    }
                }
            };

            foreach (var holder in SecureHolderCollection)
            {
                holder.FolderListUpdated += (o, e) => { folderTreeViewModel.UpdateFolderTree(); };
                holder.DataUpdated       += (o, e) => { searchViewModel.Update(); };
                holder.AddSecureItem     += (o, e) => { addBtn_Click(null, null); };
            }


            syncImagesHelper = new SyncImagesHelper(pbData, webApi);
            //this.pbData.OnLoginToProfile(pbData_LoginToProfile);
            this.pbData.OnProfileLock  += ProfileLock;
            this.pbData.OnUserLoggedIn += pbData_OnUserLoggedIn;

            Title = this.pbData.ActiveUser;

            resizer = new WindowResizer(this);
            InitializeComponent();

            LoadMenu();
            //LoadDialog(dialogOrder);
            Closing += OnMainClosing;
            sync     = resolver.GetInstanceOf <IPBSync>();
            if (sync != null)
            {
                sync.OnSyncFinished      += sync_OnSyncFinished;
                sync.OnSyncDeviceDeleted += sync_OnSyncDeviceDeleted;
                //sync.OnSyncSuccess += sync_OnSyncSuccess;
            }

            var advertControl = new MainWindowAdvertising(resolver);

            inAppAdvertisingGrid.Children.Add(advertControl);
            Grid.SetColumn(advertControl, 1);

            ucMainSearchBox.DataContext       = searchViewModel;
            mainSearchResultPanel.DataContext = searchViewModel;
            selectFolderControl.DataContext   = folderTreeViewModel;

            this.ResizeMode    = System.Windows.ResizeMode.CanMinimize;
            this.ShowInTaskbar = true;
            LoadForShowOnStartup();
            if (_pbExtSecureBrowserBridge == null)
            {
                _pbExtSecureBrowserBridge = resolver.GetInstanceOf <IPBExtSecureBrowserBridge>();
            }
            this.Activated += MainWindow_Activated;
            SyncAsync();
            var test = this.FindName("menuUserControl") as MenuUserControl;

            this.DataContext = new MainWindowViewModel();
        }