public void UpdateControl() { var serverAccounts = Model.ServerAccounts.Find(new Common.Models.ServerAccount()).ToList(); if (serverAccounts.Count == 0) { if (!_loadingAnimationRunning) { _loadingAnimationRunning = true; ImageAnimator.Animate(_loadingAnimation.Image, AnimateLoader); } // There shouldn't be a case where the main form has loaded without any server accounts. panelContentContainer.Controls.Clear(); panelContentContainer.Controls.Add(_loadingAnimation); return; } if (_loadingAnimationRunning) { ImageAnimator.StopAnimate(_loadingAnimation.Image, AnimateLoader); _loadingAnimationRunning = false; } var contentControls = new List<Control>(); foreach (var serverAccount in serverAccounts) { var serverGroupControl = new HomePageServer(_controller, serverAccount.Id) { Dock = DockStyle.Top, lblServerName = { Text = serverAccount.ServerLabel }, lblEmailAddress = { Text = serverAccount.EmailAddress } }; // serverGroupControl.lblServerActionAddDatabase.Click += delegate // { // var createSuccess = _controller.CreateAndLinkNewDatabase(serverAccount); // if (createSuccess) // _controller.UpdateUiSafe(); // }; var databases = Model.Databases.Find(new AllAuth.Desktop.Common.Models.Database { ServerAccountId = serverAccount.Id }); var numDatabases = 0; foreach (var database in databases) { var databaseMeta = Model.DatabasesMeta.Get(database.DatabaseMetaId); numDatabases++; if (numDatabases == 1) { serverGroupControl.panelDatabasesContainer.Controls.Add(new Panel { Height = 1, Dock = DockStyle.Top, BackColor = Color.FromArgb(240, 240, 240) }); } //var databaseStatus = _controller.GetDatabasesSyncStatus(serverAccount, database.Identifier); var databaseContainer = new Panel { Height = 40, Padding = new Padding(10), Dock = DockStyle.Top, Cursor = Cursors.Hand }; var databaseCanOpen = true; databaseContainer.MouseEnter += delegate { OnDatabaseContainerMouseEnter(databaseContainer); }; databaseContainer.MouseLeave += delegate { OnDatabaseContainerMouseLeave(databaseContainer); }; if (databaseCanOpen) databaseContainer.Click += delegate { _controller.SetActiveDatabase(database.Id); }; var newlblDatabaseName = new Label { Text = databaseMeta.Name, Dock = DockStyle.Fill, TextAlign = ContentAlignment.MiddleLeft, Cursor = Cursors.Hand }; newlblDatabaseName.MouseEnter += delegate { OnDatabaseContainerMouseEnter(databaseContainer); }; newlblDatabaseName.MouseLeave += delegate { OnDatabaseContainerMouseLeave(databaseContainer); }; if (databaseCanOpen) newlblDatabaseName.Click += delegate { _controller.SetActiveDatabase(database.Id); }; databaseContainer.Controls.Add(newlblDatabaseName); serverGroupControl.panelDatabasesContainer.Controls.Add(databaseContainer); } var headerHeight = serverGroupControl.panelHeaderTop.Height + serverGroupControl.panelHeaderBottom.Height + serverGroupControl.panelSeparator.Height; if (!serverGroupControl.SecondDeviceSetup) headerHeight += 35; else if (!serverGroupControl.DeviceKeysVerified) headerHeight += 35; var databaseContainerHeight = 0; if (serverGroupControl.SecondDeviceSetup && serverGroupControl.DeviceKeysVerified) databaseContainerHeight = (numDatabases * 40); serverGroupControl.Height = headerHeight + databaseContainerHeight + serverGroupControl.panelDatabasesContainer.Padding.Top + serverGroupControl.panelDatabasesContainer.Padding.Bottom; contentControls.Add(serverGroupControl); } panelContentContainer.Controls.Clear(); foreach (var control in contentControls) panelContentContainer.Controls.Add(control); }
public void UpdateControl() { var serverAccounts = Model.ServerAccounts.Find(new Common.Models.ServerAccount()).ToList(); if (serverAccounts.Count == 0) { if (!_loadingAnimationRunning) { _loadingAnimationRunning = true; ImageAnimator.Animate(_loadingAnimation.Image, AnimateLoader); } // There shouldn't be a case where the main form has loaded without any server accounts. panelContentContainer.Controls.Clear(); panelContentContainer.Controls.Add(_loadingAnimation); return; } if (_loadingAnimationRunning) { ImageAnimator.StopAnimate(_loadingAnimation.Image, AnimateLoader); _loadingAnimationRunning = false; } var contentControls = new List <Control>(); foreach (var serverAccount in serverAccounts) { var serverGroupControl = new HomePageServer(_controller, serverAccount.Id) { Dock = DockStyle.Top, lblServerName = { Text = serverAccount.ServerLabel }, lblEmailAddress = { Text = serverAccount.EmailAddress } }; // serverGroupControl.lblServerActionAddDatabase.Click += delegate // { // var createSuccess = _controller.CreateAndLinkNewDatabase(serverAccount); // if (createSuccess) // _controller.UpdateUiSafe(); // }; var databases = Model.Databases.Find(new AllAuth.Desktop.Common.Models.Database { ServerAccountId = serverAccount.Id }); var numDatabases = 0; foreach (var database in databases) { var databaseMeta = Model.DatabasesMeta.Get(database.DatabaseMetaId); numDatabases++; if (numDatabases == 1) { serverGroupControl.panelDatabasesContainer.Controls.Add(new Panel { Height = 1, Dock = DockStyle.Top, BackColor = Color.FromArgb(240, 240, 240) }); } //var databaseStatus = _controller.GetDatabasesSyncStatus(serverAccount, database.Identifier); var databaseContainer = new Panel { Height = 40, Padding = new Padding(10), Dock = DockStyle.Top, Cursor = Cursors.Hand }; var databaseCanOpen = true; databaseContainer.MouseEnter += delegate { OnDatabaseContainerMouseEnter(databaseContainer); }; databaseContainer.MouseLeave += delegate { OnDatabaseContainerMouseLeave(databaseContainer); }; if (databaseCanOpen) { databaseContainer.Click += delegate { _controller.SetActiveDatabase(database.Id); } } ; var newlblDatabaseName = new Label { Text = databaseMeta.Name, Dock = DockStyle.Fill, TextAlign = ContentAlignment.MiddleLeft, Cursor = Cursors.Hand }; newlblDatabaseName.MouseEnter += delegate { OnDatabaseContainerMouseEnter(databaseContainer); }; newlblDatabaseName.MouseLeave += delegate { OnDatabaseContainerMouseLeave(databaseContainer); }; if (databaseCanOpen) { newlblDatabaseName.Click += delegate { _controller.SetActiveDatabase(database.Id); } } ; databaseContainer.Controls.Add(newlblDatabaseName); serverGroupControl.panelDatabasesContainer.Controls.Add(databaseContainer); } var headerHeight = serverGroupControl.panelHeaderTop.Height + serverGroupControl.panelHeaderBottom.Height + serverGroupControl.panelSeparator.Height; if (!serverGroupControl.SecondDeviceSetup) { headerHeight += 35; } else if (!serverGroupControl.DeviceKeysVerified) { headerHeight += 35; } var databaseContainerHeight = 0; if (serverGroupControl.SecondDeviceSetup && serverGroupControl.DeviceKeysVerified) { databaseContainerHeight = (numDatabases * 40); } serverGroupControl.Height = headerHeight + databaseContainerHeight + serverGroupControl.panelDatabasesContainer.Padding.Top + serverGroupControl.panelDatabasesContainer.Padding.Bottom; contentControls.Add(serverGroupControl); } panelContentContainer.Controls.Clear(); foreach (var control in contentControls) { panelContentContainer.Controls.Add(control); } }