diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/AcaciaZPushPlugin.csproj b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/AcaciaZPushPlugin.csproj index 9a9ccd2..e146bd3 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/AcaciaZPushPlugin.csproj +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/AcaciaZPushPlugin.csproj @@ -227,6 +227,12 @@ Form + + Component + + + Component + @@ -288,6 +294,12 @@ SignaturesSettings.cs + + Form + + + SyncStateDialog.cs + @@ -572,6 +584,9 @@ SignaturesSettings.cs + + SyncStateDialog.cs + ResXFileCodeGenerator Resources.Designer.cs diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Controls/KHintButton.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Controls/KHintButton.cs new file mode 100644 index 0000000..a2382c8 --- /dev/null +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Controls/KHintButton.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Acacia.Controls +{ + /// + /// A button that adds a hint. + /// + public class KHintButton : Button + { + [Category("Kopano"), Localizable(true)] + public string Hint + { + get; + set; + } + + public class HintEventArgs : EventArgs + { + public readonly string Hint; + + public bool ShowHint + { + get { return !string.IsNullOrEmpty(Hint); } + } + + public HintEventArgs(string hint) + { + this.Hint = hint; + } + } + + public delegate void HintEventHandler(object sender, HintEventArgs e); + + [Category("Kopano")] + public event HintEventHandler ShowHint; + + protected override void OnMouseEnter(EventArgs e) + { + base.OnMouseEnter(e); + + if (ShowHint != null) + ShowHint(this, new HintEventArgs(Hint)); + } + + protected override void OnMouseLeave(EventArgs e) + { + base.OnMouseLeave(e); + + if (ShowHint != null) + ShowHint(this, new HintEventArgs(null)); + } + } +} diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Controls/KProgressBar.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Controls/KProgressBar.cs new file mode 100644 index 0000000..7778b70 --- /dev/null +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Controls/KProgressBar.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Acacia.Controls +{ + /// + /// Simple progress bar subclass that properly paints the background color. + /// + public class KProgressBar : ProgressBar + { + [Category("Appearance")] + public Color BorderColor + { + get; + set; + } + + [Category("Appearance")] + public int BorderWidth + { + get; + set; + } + + public KProgressBar() + { + BorderWidth = 1; + //SetStyle(ControlStyles.UserPaint, true); + SetStyle(ControlStyles.UserPaint, true); + //SetStyle(ControlStyles.OptimizedDoubleBuffer, true); + //SetStyle(ControlStyles.AllPaintingInWmPaint, true); + } + + protected override void OnPaintBackground(PaintEventArgs pevent) + { + // Don't paint background to prevent flicker + } + + protected override void OnPaint(PaintEventArgs e) + { + using (Image offscreenImage = new Bitmap(this.Width, this.Height)) + using (Graphics g = Graphics.FromImage(offscreenImage)) + { + using (SolidBrush brushFilled = new SolidBrush(ForeColor)) + using (SolidBrush brushBackground = new SolidBrush(BackColor)) + { + float percent = (float)(Value - Minimum) / (float)(Maximum - Minimum); + + Rectangle baseRectangle = ClientRectangle; + baseRectangle.Shrink(new Padding(BorderWidth)); + Rectangle rectFilled = baseRectangle; + Rectangle rectBackground = baseRectangle; + Rectangle rectBorder = ClientRectangle; + + // Calculate area for drawing the progress. + rectFilled.Width = (int)(rectFilled.Width * percent); + rectBackground.X = rectFilled.Right; + rectBackground.Width = ClientRectangle.Width - rectBackground.X; + + // Draw the progress meter. + g.FillRectangle(brushFilled, rectFilled); + g.FillRectangle(brushBackground, rectBackground); + DrawBorder(g); + } + + e.Graphics.DrawImage(offscreenImage, 0, 0); + } + } + + private bool IsMouseOver + { + get + { + return ClientRectangle.Contains(PointToClient(Cursor.Position)); + } + } + + private void DrawBorder(Graphics g) + { + int PenWidth = BorderWidth; + using (Pen pen = new Pen(IsMouseOver ? BorderColor : BackColor)) + { + g.DrawLine(pen, + new Point(this.ClientRectangle.Left, this.ClientRectangle.Top), + new Point(this.ClientRectangle.Width - PenWidth, this.ClientRectangle.Top)); + g.DrawLine(pen, + new Point(this.ClientRectangle.Left, this.ClientRectangle.Top), + new Point(this.ClientRectangle.Left, this.ClientRectangle.Height - PenWidth)); + g.DrawLine(pen, + new Point(this.ClientRectangle.Left, this.ClientRectangle.Height - PenWidth), + new Point(this.ClientRectangle.Width - PenWidth, this.ClientRectangle.Height - PenWidth)); + g.DrawLine(pen, + new Point(this.ClientRectangle.Width - PenWidth, this.ClientRectangle.Top), + new Point(this.ClientRectangle.Width - PenWidth, this.ClientRectangle.Height - PenWidth)); + } + } + } +} diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/FeatureSyncState.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/FeatureSyncState.cs index a8a3c0b..b43a0b9 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/FeatureSyncState.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/FeatureSyncState.cs @@ -149,7 +149,7 @@ namespace Acacia.Features.SyncState public override void Startup() { _state = new SyncStateData(this); - _button = RegisterButton(this, "Progress", true, ShowSyncState, ZPushBehaviour.None); + _button = RegisterButton(this, "Progress", true, ShowSyncState, ZPushBehaviour.Disable); _button.DataProvider = _state; // Add a sync task to start checking. If this finds it's not fully synchronised, it will check more often Watcher.Sync.AddTask(this, Name, CheckSyncState); @@ -330,6 +330,7 @@ namespace Acacia.Features.SyncState private void ShowSyncState() { + new SyncStateDialog(this).ShowDialog(); } } } diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/SyncStateDialog.Designer.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/SyncStateDialog.Designer.cs new file mode 100644 index 0000000..0693d9e --- /dev/null +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/SyncStateDialog.Designer.cs @@ -0,0 +1,202 @@ +namespace Acacia.Features.SyncState +{ + partial class SyncStateDialog + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SyncStateDialog)); + this._layout = new System.Windows.Forms.TableLayoutPanel(); + this._buttons = new Acacia.Controls.KDialogButtons(); + this._layoutMain = new System.Windows.Forms.TableLayoutPanel(); + this._labelRemaining = new System.Windows.Forms.Label(); + this._labelAccount = new System.Windows.Forms.Label(); + this.comboAccounts = new System.Windows.Forms.ComboBox(); + this._labelProgress = new System.Windows.Forms.Label(); + this.progress = new Acacia.Controls.KProgressBar(); + this.textRemaining = new System.Windows.Forms.Label(); + this._labelResync = new System.Windows.Forms.Label(); + this.buttonGAB = new Acacia.Controls.KHintButton(); + this.buttonSignatures = new Acacia.Controls.KHintButton(); + this.buttonServerData = new Acacia.Controls.KHintButton(); + this.buttonFullResync = new Acacia.Controls.KHintButton(); + this._labelResyncOption = new System.Windows.Forms.Label(); + this._layout.SuspendLayout(); + this._layoutMain.SuspendLayout(); + this.SuspendLayout(); + // + // _layout + // + resources.ApplyResources(this._layout, "_layout"); + this._layout.Controls.Add(this._buttons, 0, 1); + this._layout.Controls.Add(this._layoutMain, 0, 0); + this._layout.Name = "_layout"; + // + // _buttons + // + resources.ApplyResources(this._buttons, "_buttons"); + this._buttons.ButtonSize = null; + this._buttons.Cancellation = null; + this._buttons.HasApply = false; + this._buttons.IsDirty = false; + this._buttons.Name = "_buttons"; + // + // _layoutMain + // + resources.ApplyResources(this._layoutMain, "_layoutMain"); + this._layoutMain.Controls.Add(this._labelRemaining, 0, 2); + this._layoutMain.Controls.Add(this._labelAccount, 0, 0); + this._layoutMain.Controls.Add(this.comboAccounts, 1, 0); + this._layoutMain.Controls.Add(this._labelProgress, 0, 1); + this._layoutMain.Controls.Add(this.progress, 1, 1); + this._layoutMain.Controls.Add(this.textRemaining, 1, 2); + this._layoutMain.Controls.Add(this._labelResync, 0, 3); + this._layoutMain.Controls.Add(this.buttonGAB, 1, 3); + this._layoutMain.Controls.Add(this.buttonSignatures, 1, 4); + this._layoutMain.Controls.Add(this.buttonServerData, 1, 5); + this._layoutMain.Controls.Add(this.buttonFullResync, 1, 6); + this._layoutMain.Controls.Add(this._labelResyncOption, 1, 7); + this._layoutMain.Name = "_layoutMain"; + // + // _labelRemaining + // + resources.ApplyResources(this._labelRemaining, "_labelRemaining"); + this._labelRemaining.Name = "_labelRemaining"; + // + // _labelAccount + // + resources.ApplyResources(this._labelAccount, "_labelAccount"); + this._labelAccount.Name = "_labelAccount"; + // + // comboAccounts + // + resources.ApplyResources(this.comboAccounts, "comboAccounts"); + this.comboAccounts.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboAccounts.FormattingEnabled = true; + this.comboAccounts.Items.AddRange(new object[] { + resources.GetString("comboAccounts.Items")}); + this.comboAccounts.Name = "comboAccounts"; + // + // _labelProgress + // + resources.ApplyResources(this._labelProgress, "_labelProgress"); + this._labelProgress.Name = "_labelProgress"; + // + // progress + // + this.progress.BackColor = System.Drawing.SystemColors.Window; + this.progress.BorderColor = System.Drawing.SystemColors.ActiveBorder; + this.progress.BorderWidth = 1; + resources.ApplyResources(this.progress, "progress"); + this.progress.Name = "progress"; + this.progress.Step = 5; + // + // textRemaining + // + resources.ApplyResources(this.textRemaining, "textRemaining"); + this.textRemaining.BackColor = System.Drawing.SystemColors.Window; + this.textRemaining.Name = "textRemaining"; + // + // _labelResync + // + resources.ApplyResources(this._labelResync, "_labelResync"); + this._labelResync.Name = "_labelResync"; + // + // buttonGAB + // + resources.ApplyResources(this.buttonGAB, "buttonGAB"); + this.buttonGAB.Name = "buttonGAB"; + this.buttonGAB.Tag = ""; + this.buttonGAB.UseVisualStyleBackColor = true; + this.buttonGAB.ShowHint += new Acacia.Controls.KHintButton.HintEventHandler(this.ShowHint); + this.buttonGAB.Click += new System.EventHandler(this.button1_Click); + // + // buttonSignatures + // + resources.ApplyResources(this.buttonSignatures, "buttonSignatures"); + this.buttonSignatures.Name = "buttonSignatures"; + this.buttonSignatures.UseVisualStyleBackColor = true; + this.buttonSignatures.ShowHint += new Acacia.Controls.KHintButton.HintEventHandler(this.ShowHint); + // + // buttonServerData + // + resources.ApplyResources(this.buttonServerData, "buttonServerData"); + this.buttonServerData.Name = "buttonServerData"; + this.buttonServerData.UseVisualStyleBackColor = true; + this.buttonServerData.ShowHint += new Acacia.Controls.KHintButton.HintEventHandler(this.ShowHint); + // + // buttonFullResync + // + resources.ApplyResources(this.buttonFullResync, "buttonFullResync"); + this.buttonFullResync.Name = "buttonFullResync"; + this.buttonFullResync.UseVisualStyleBackColor = true; + this.buttonFullResync.ShowHint += new Acacia.Controls.KHintButton.HintEventHandler(this.ShowHint); + // + // _labelResyncOption + // + resources.ApplyResources(this._labelResyncOption, "_labelResyncOption"); + this._labelResyncOption.Name = "_labelResyncOption"; + // + // SyncStateDialog + // + resources.ApplyResources(this, "$this"); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.SystemColors.Window; + this.Controls.Add(this._layout); + this.DialogButtons = this._buttons; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "SyncStateDialog"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SettingsDialog_FormClosing); + this._layout.ResumeLayout(false); + this._layout.PerformLayout(); + this._layoutMain.ResumeLayout(false); + this._layoutMain.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel _layout; + private Controls.KDialogButtons _buttons; + private System.Windows.Forms.TableLayoutPanel _layoutMain; + private System.Windows.Forms.Label _labelAccount; + private System.Windows.Forms.ComboBox comboAccounts; + private System.Windows.Forms.Label _labelProgress; + private Controls.KProgressBar progress; + private System.Windows.Forms.Label _labelRemaining; + private System.Windows.Forms.Label textRemaining; + private Controls.KHintButton buttonFullResync; + private Controls.KHintButton buttonServerData; + private Controls.KHintButton buttonSignatures; + private System.Windows.Forms.Label _labelResyncOption; + private System.Windows.Forms.Label _labelResync; + private Controls.KHintButton buttonGAB; + } +} \ No newline at end of file diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/SyncStateDialog.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/SyncStateDialog.cs new file mode 100644 index 0000000..8270a4d --- /dev/null +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/SyncStateDialog.cs @@ -0,0 +1,64 @@ +/// Copyright 2017 Kopano b.v. +/// +/// This program is free software: you can redistribute it and/or modify +/// it under the terms of the GNU Affero General Public License, version 3, +/// as published by the Free Software Foundation. +/// +/// This program is distributed in the hope that it will be useful, +/// but WITHOUT ANY WARRANTY; without even the implied warranty of +/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the +/// GNU Affero General Public License for more details. +/// +/// You should have received a copy of the GNU Affero General Public License +/// along with this program.If not, see. +/// +/// Consult LICENSE file for details +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Acacia.UI; +using Acacia.Controls; +using Acacia.ZPush; + +namespace Acacia.Features.SyncState +{ + public partial class SyncStateDialog : KDialogNew + { + private readonly FeatureSyncState _feature; + + public SyncStateDialog(FeatureSyncState feature) + { + InitializeComponent(); + this._feature = feature; + comboAccounts.SelectedIndex = 0; + + // Add the accounts + foreach (ZPushAccount account in ThisAddIn.Instance.Watcher.Accounts.GetAccounts()) + comboAccounts.Items.Add(account); + } + + private void buttonApply_Click(object sender, EventArgs e) + { + } + + private void SettingsDialog_FormClosing(object sender, FormClosingEventArgs e) + { + } + + private void button1_Click(object sender, EventArgs e) + { + + } + + private void ShowHint(object sender, KHintButton.HintEventArgs e) + { + _labelResyncOption.Text = e.Hint ?? string.Empty; + } + } +} diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/SyncStateDialog.resx b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/SyncStateDialog.resx new file mode 100644 index 0000000..4ecfbb0 --- /dev/null +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/SyncStateDialog.resx @@ -0,0 +1,663 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + True + + + + GrowAndShrink + + + 1 + + + True + + + GrowAndShrink + + + Fill + + + + 2, 286 + + + 2, 2, 2, 2 + + + 333, 35 + + + 0 + + + _buttons + + + Acacia.Controls.KDialogButtons, Kopano, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null + + + _layout + + + 0 + + + True + + + GrowAndShrink + + + 2 + + + True + + + Fill + + + NoControl + + + 3, 54 + + + 77, 25 + + + 5 + + + Remaining + + + MiddleLeft + + + _labelRemaining + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + _layoutMain + + + 0 + + + True + + + Fill + + + 3, 0 + + + 77, 27 + + + 0 + + + Account + + + MiddleLeft + + + _labelAccount + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + _layoutMain + + + 1 + + + Fill + + + Popup + + + All Z-Push accounts + + + 86, 3 + + + 242, 21 + + + 1 + + + comboAccounts + + + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + _layoutMain + + + 2 + + + True + + + Fill + + + 3, 27 + + + 77, 27 + + + 2 + + + Progress + + + MiddleLeft + + + _labelProgress + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + _layoutMain + + + 3 + + + Fill + + + 86, 30 + + + 242, 21 + + + 3 + + + progress + + + Acacia.Controls.KProgressBar, Kopano, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null + + + _layoutMain + + + 4 + + + True + + + Fill + + + 86, 57 + + + 3, 3, 3, 3 + + + 3, 3, 3, 3 + + + 242, 19 + + + 7 + + + textRemaining + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + _layoutMain + + + 5 + + + True + + + Fill + + + 3, 79 + + + 77, 29 + + + 8 + + + Resynchronise + + + MiddleLeft + + + _labelResync + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + _layoutMain + + + 6 + + + True + + + GrowAndShrink + + + Fill + + + Resynchronise the global address book + + + NoControl + + + 86, 82 + + + 242, 23 + + + 0 + + + Global Address Book + + + buttonGAB + + + Acacia.Controls.KHintButton, Kopano, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null + + + _layoutMain + + + 7 + + + True + + + GrowAndShrink + + + Fill + + + Resynchronise all signatures from the server + + + NoControl + + + 86, 111 + + + 242, 23 + + + 1 + + + Signatures + + + buttonSignatures + + + Acacia.Controls.KHintButton, Kopano, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null + + + _layoutMain + + + 8 + + + True + + + GrowAndShrink + + + Fill + + + Resynchronise all server data on shared folders and out-of-office + + + NoControl + + + 86, 140 + + + 242, 23 + + + 2 + + + Server Data + + + buttonServerData + + + Acacia.Controls.KHintButton, Kopano, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null + + + _layoutMain + + + 9 + + + True + + + GrowAndShrink + + + Fill + + + Fully resynchronise the Z-Push store. This requires a restart and may take some time. + + + NoControl + + + 86, 169 + + + 242, 23 + + + 3 + + + Full Resynchronisation + + + buttonFullResync + + + Acacia.Controls.KHintButton, Kopano, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null + + + _layoutMain + + + 10 + + + Fill + + + 86, 195 + + + 0, 6, 0, 0 + + + 242, 83 + + + 4 + + + _labelResyncOption + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + _layoutMain + + + 11 + + + Fill + + + 3, 3 + + + 8 + + + 331, 278 + + + 1 + + + _layoutMain + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + _layout + + + 1 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="_labelRemaining" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="_labelAccount" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="comboAccounts" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="_labelProgress" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="progress" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="textRemaining" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="_labelResync" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="buttonGAB" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="buttonSignatures" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="buttonServerData" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="buttonFullResync" Row="6" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="_labelResyncOption" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100" /></TableLayoutSettings> + + + Fill + + + 0, 0 + + + 2 + + + 337, 323 + + + 0 + + + _layout + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="_buttons" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="_layoutMain" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="Percent,100,AutoSize,0" /></TableLayoutSettings> + + + True + + + 6, 13 + + + True + + + 337, 323 + + + CenterParent + + + Synchronisation State + + + SyncStateDialog + + + Acacia.Controls.KDialogNew, Kopano, Version=0.1.0.0, Culture=neutral, PublicKeyToken=null + + \ No newline at end of file