mirror of
				https://github.com/Kopano-dev/kopano-ol-extension.git
				synced 2023-10-10 11:37:40 +00:00 
			
		
		
		
	[KOE-124] UI improvements
This commit is contained in:
		@@ -49,6 +49,7 @@
 | 
				
			|||||||
            this.checkReminders = new System.Windows.Forms.CheckBox();
 | 
					            this.checkReminders = new System.Windows.Forms.CheckBox();
 | 
				
			||||||
            this._labelPermissions = new System.Windows.Forms.Label();
 | 
					            this._labelPermissions = new System.Windows.Forms.Label();
 | 
				
			||||||
            this.dialogButtons = new Acacia.Controls.KDialogButtons();
 | 
					            this.dialogButtons = new Acacia.Controls.KDialogButtons();
 | 
				
			||||||
 | 
					            this._labelRestartRequired = new System.Windows.Forms.Label();
 | 
				
			||||||
            this._layout.SuspendLayout();
 | 
					            this._layout.SuspendLayout();
 | 
				
			||||||
            this._mainBusyHider.SuspendLayout();
 | 
					            this._mainBusyHider.SuspendLayout();
 | 
				
			||||||
            this._layoutMain.SuspendLayout();
 | 
					            this._layoutMain.SuspendLayout();
 | 
				
			||||||
@@ -136,7 +137,7 @@
 | 
				
			|||||||
            resources.ApplyResources(this._layoutOptions, "_layoutOptions");
 | 
					            resources.ApplyResources(this._layoutOptions, "_layoutOptions");
 | 
				
			||||||
            this._layoutOptions.Controls.Add(this._labelWholeStore, 0, 0);
 | 
					            this._layoutOptions.Controls.Add(this._labelWholeStore, 0, 0);
 | 
				
			||||||
            this._layoutOptions.Controls.Add(this.checkWholeStore, 1, 0);
 | 
					            this._layoutOptions.Controls.Add(this.checkWholeStore, 1, 0);
 | 
				
			||||||
            this._layoutOptions.Controls.Add(this.labelPermissionsValue, 0, 4);
 | 
					            this._layoutOptions.Controls.Add(this.labelPermissionsValue, 1, 4);
 | 
				
			||||||
            this._layoutOptions.Controls.Add(this._labelName, 0, 1);
 | 
					            this._layoutOptions.Controls.Add(this._labelName, 0, 1);
 | 
				
			||||||
            this._layoutOptions.Controls.Add(this.textName, 1, 1);
 | 
					            this._layoutOptions.Controls.Add(this.textName, 1, 1);
 | 
				
			||||||
            this._layoutOptions.Controls.Add(this._labelSendAs, 0, 2);
 | 
					            this._layoutOptions.Controls.Add(this._labelSendAs, 0, 2);
 | 
				
			||||||
@@ -144,6 +145,7 @@
 | 
				
			|||||||
            this._layoutOptions.Controls.Add(this._labelReminders, 0, 3);
 | 
					            this._layoutOptions.Controls.Add(this._labelReminders, 0, 3);
 | 
				
			||||||
            this._layoutOptions.Controls.Add(this.checkReminders, 1, 3);
 | 
					            this._layoutOptions.Controls.Add(this.checkReminders, 1, 3);
 | 
				
			||||||
            this._layoutOptions.Controls.Add(this._labelPermissions, 0, 4);
 | 
					            this._layoutOptions.Controls.Add(this._labelPermissions, 0, 4);
 | 
				
			||||||
 | 
					            this._layoutOptions.Controls.Add(this._labelRestartRequired, 2, 0);
 | 
				
			||||||
            this._layoutOptions.Name = "_layoutOptions";
 | 
					            this._layoutOptions.Name = "_layoutOptions";
 | 
				
			||||||
            // 
 | 
					            // 
 | 
				
			||||||
            // _labelWholeStore
 | 
					            // _labelWholeStore
 | 
				
			||||||
@@ -154,6 +156,7 @@
 | 
				
			|||||||
            // checkWholeStore
 | 
					            // checkWholeStore
 | 
				
			||||||
            // 
 | 
					            // 
 | 
				
			||||||
            resources.ApplyResources(this.checkWholeStore, "checkWholeStore");
 | 
					            resources.ApplyResources(this.checkWholeStore, "checkWholeStore");
 | 
				
			||||||
 | 
					            this.checkWholeStore.ForeColor = System.Drawing.SystemColors.ControlText;
 | 
				
			||||||
            this.checkWholeStore.Name = "checkWholeStore";
 | 
					            this.checkWholeStore.Name = "checkWholeStore";
 | 
				
			||||||
            this.checkWholeStore.UseVisualStyleBackColor = true;
 | 
					            this.checkWholeStore.UseVisualStyleBackColor = true;
 | 
				
			||||||
            this.checkWholeStore.CheckedChanged += new System.EventHandler(this.checkWholeStore_CheckedChanged);
 | 
					            this.checkWholeStore.CheckedChanged += new System.EventHandler(this.checkWholeStore_CheckedChanged);
 | 
				
			||||||
@@ -161,6 +164,7 @@
 | 
				
			|||||||
            // labelPermissionsValue
 | 
					            // labelPermissionsValue
 | 
				
			||||||
            // 
 | 
					            // 
 | 
				
			||||||
            resources.ApplyResources(this.labelPermissionsValue, "labelPermissionsValue");
 | 
					            resources.ApplyResources(this.labelPermissionsValue, "labelPermissionsValue");
 | 
				
			||||||
 | 
					            this._layoutOptions.SetColumnSpan(this.labelPermissionsValue, 2);
 | 
				
			||||||
            this.labelPermissionsValue.Name = "labelPermissionsValue";
 | 
					            this.labelPermissionsValue.Name = "labelPermissionsValue";
 | 
				
			||||||
            // 
 | 
					            // 
 | 
				
			||||||
            // _labelName
 | 
					            // _labelName
 | 
				
			||||||
@@ -170,6 +174,7 @@
 | 
				
			|||||||
            // 
 | 
					            // 
 | 
				
			||||||
            // textName
 | 
					            // textName
 | 
				
			||||||
            // 
 | 
					            // 
 | 
				
			||||||
 | 
					            this._layoutOptions.SetColumnSpan(this.textName, 2);
 | 
				
			||||||
            resources.ApplyResources(this.textName, "textName");
 | 
					            resources.ApplyResources(this.textName, "textName");
 | 
				
			||||||
            this.textName.Name = "textName";
 | 
					            this.textName.Name = "textName";
 | 
				
			||||||
            this.textName.TextChanged += new System.EventHandler(this.textName_TextChanged);
 | 
					            this.textName.TextChanged += new System.EventHandler(this.textName_TextChanged);
 | 
				
			||||||
@@ -214,6 +219,11 @@
 | 
				
			|||||||
            this.dialogButtons.Name = "dialogButtons";
 | 
					            this.dialogButtons.Name = "dialogButtons";
 | 
				
			||||||
            this.dialogButtons.Apply += new System.EventHandler(this.dialogButtons_Apply);
 | 
					            this.dialogButtons.Apply += new System.EventHandler(this.dialogButtons_Apply);
 | 
				
			||||||
            // 
 | 
					            // 
 | 
				
			||||||
 | 
					            // _labelRestartRequired
 | 
				
			||||||
 | 
					            // 
 | 
				
			||||||
 | 
					            resources.ApplyResources(this._labelRestartRequired, "_labelRestartRequired");
 | 
				
			||||||
 | 
					            this._labelRestartRequired.Name = "_labelRestartRequired";
 | 
				
			||||||
 | 
					            // 
 | 
				
			||||||
            // SharedFoldersDialog
 | 
					            // SharedFoldersDialog
 | 
				
			||||||
            // 
 | 
					            // 
 | 
				
			||||||
            resources.ApplyResources(this, "$this");
 | 
					            resources.ApplyResources(this, "$this");
 | 
				
			||||||
@@ -259,5 +269,6 @@
 | 
				
			|||||||
        private System.Windows.Forms.CheckBox checkReminders;
 | 
					        private System.Windows.Forms.CheckBox checkReminders;
 | 
				
			||||||
        private System.Windows.Forms.CheckBox checkWholeStore;
 | 
					        private System.Windows.Forms.CheckBox checkWholeStore;
 | 
				
			||||||
        private System.Windows.Forms.Label labelPermissionsValue;
 | 
					        private System.Windows.Forms.Label labelPermissionsValue;
 | 
				
			||||||
 | 
					        private System.Windows.Forms.Label _labelRestartRequired;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -93,10 +93,17 @@ namespace Acacia.Features.SharedFolders
 | 
				
			|||||||
        private readonly ZPushAccount _account;
 | 
					        private readonly ZPushAccount _account;
 | 
				
			||||||
        private readonly SharedFoldersManager _folders;
 | 
					        private readonly SharedFoldersManager _folders;
 | 
				
			||||||
        private readonly SyncId _initialSyncId;
 | 
					        private readonly SyncId _initialSyncId;
 | 
				
			||||||
 | 
					        private ZPushAccount _initialAccount;
 | 
				
			||||||
        private SharedFolder _initialFolder;
 | 
					        private SharedFolder _initialFolder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public SharedFoldersDialog(FeatureSharedFolders feature, ZPushAccount account, SyncId initial = null)
 | 
					        public SharedFoldersDialog(FeatureSharedFolders feature, ZPushAccount account, SyncId initial = null)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            // If this is a shared store, open the account it's a share for, with the request account as the initial
 | 
				
			||||||
 | 
					            if (account.ShareFor != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                _initialAccount = account;
 | 
				
			||||||
 | 
					                account = account.ShareForAccount;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            this._account = account;
 | 
					            this._account = account;
 | 
				
			||||||
            this._folders = feature.Manage(account);
 | 
					            this._folders = feature.Manage(account);
 | 
				
			||||||
            this._initialSyncId = initial;
 | 
					            this._initialSyncId = initial;
 | 
				
			||||||
@@ -142,6 +149,7 @@ namespace Acacia.Features.SharedFolders
 | 
				
			|||||||
                .New((ctx) =>
 | 
					                .New((ctx) =>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    // TODO: bind cancellation token to Cancel button
 | 
					                    // TODO: bind cancellation token to Cancel button
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    // Fetch current shares
 | 
					                    // Fetch current shares
 | 
				
			||||||
                    ICollection<SharedFolder> folders = _folders.GetCurrentShares(ctx.CancellationToken);
 | 
					                    ICollection<SharedFolder> folders = _folders.GetCurrentShares(ctx.CancellationToken);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -175,12 +183,18 @@ namespace Acacia.Features.SharedFolders
 | 
				
			|||||||
                // Add public folders
 | 
					                // Add public folders
 | 
				
			||||||
                Dictionary<BackendId, SharedFolder> publicShares;
 | 
					                Dictionary<BackendId, SharedFolder> publicShares;
 | 
				
			||||||
                shares.TryGetValue(GABUser.USER_PUBLIC, out publicShares);
 | 
					                shares.TryGetValue(GABUser.USER_PUBLIC, out publicShares);
 | 
				
			||||||
                AddUserFolders(GABUser.USER_PUBLIC, publicShares, false);
 | 
					                AddUserFolders(GABUser.USER_PUBLIC, false, publicShares, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Add shared stores
 | 
				
			||||||
 | 
					                foreach (ZPushAccount shared in _account.SharedAccounts)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    AddUserFolders(new GABUser(shared.ShareUserName), true, null, false);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                // Add any users for which we have shared folders
 | 
					                // Add any users for which we have shared folders
 | 
				
			||||||
                foreach (KeyValuePair<GABUser, Dictionary<BackendId, SharedFolder>> entry in shares.OrderBy(x => x.Key.DisplayName))
 | 
					                foreach (KeyValuePair<GABUser, Dictionary<BackendId, SharedFolder>> entry in shares.OrderBy(x => x.Key.DisplayName))
 | 
				
			||||||
                    if (GABUser.USER_PUBLIC != entry.Key)
 | 
					                    if (GABUser.USER_PUBLIC != entry.Key)
 | 
				
			||||||
                       AddUserFolders(entry.Key, entry.Value, false);
 | 
					                       AddUserFolders(entry.Key, false, entry.Value, false);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            finally
 | 
					            finally
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@@ -206,6 +220,14 @@ namespace Acacia.Features.SharedFolders
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
                SetInitialFocus(kTreeFolders);
 | 
					                SetInitialFocus(kTreeFolders);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            else if (_initialAccount != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                StoreTreeNode node;
 | 
				
			||||||
 | 
					                if (_userFolders.TryGetValue(new GABUser(_initialAccount.ShareUserName), out node))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    FocusNode(node, true);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                SetInitialFocus(gabLookup);
 | 
					                SetInitialFocus(gabLookup);
 | 
				
			||||||
@@ -237,6 +259,7 @@ namespace Acacia.Features.SharedFolders
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                foreach (StoreTreeNode storeNode in _userFolders.Values)
 | 
					                foreach (StoreTreeNode storeNode in _userFolders.Values)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 | 
					                    // Check modified folders
 | 
				
			||||||
                    if (storeNode.IsDirty)
 | 
					                    if (storeNode.IsDirty)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        ctx.AddBusy(1);
 | 
					                        ctx.AddBusy(1);
 | 
				
			||||||
@@ -245,6 +268,7 @@ namespace Acacia.Features.SharedFolders
 | 
				
			|||||||
                        _folders.SetSharesForStore(storeNode.User, storeNode.CurrentShares, ctx.CancellationToken);
 | 
					                        _folders.SetSharesForStore(storeNode.User, storeNode.CurrentShares, ctx.CancellationToken);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    // And modified stores
 | 
				
			||||||
                    if (storeNode.IsWholeStoreDirty)
 | 
					                    if (storeNode.IsWholeStoreDirty)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        state.stores.Add(storeNode);
 | 
					                        state.stores.Add(storeNode);
 | 
				
			||||||
@@ -272,6 +296,23 @@ namespace Acacia.Features.SharedFolders
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (state.stores.Count > 0)
 | 
					                if (state.stores.Count > 0)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    List<StoreTreeNode> add = new List<StoreTreeNode>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    // Remove any unshared store
 | 
				
			||||||
 | 
					                    foreach (StoreTreeNode store in state.stores)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        if (store.WantShare)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            add.Add(store);
 | 
				
			||||||
 | 
					                            continue;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    // Check for any new stores
 | 
				
			||||||
 | 
					                    if (add.Count > 0)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        bool restart = MessageBox.Show(ThisAddIn.Instance.Window,
 | 
					                        bool restart = MessageBox.Show(ThisAddIn.Instance.Window,
 | 
				
			||||||
                                            "Outlook will be restarted to open the new stores",
 | 
					                                            "Outlook will be restarted to open the new stores",
 | 
				
			||||||
@@ -294,6 +335,7 @@ namespace Acacia.Features.SharedFolders
 | 
				
			|||||||
                            restarter.OpenShare(_account, node.User);
 | 
					                            restarter.OpenShare(_account, node.User);
 | 
				
			||||||
                        restarter.Restart();
 | 
					                        restarter.Restart();
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }, true)
 | 
					            }, true)
 | 
				
			||||||
            .OnError((x) =>
 | 
					            .OnError((x) =>
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@@ -311,7 +353,7 @@ namespace Acacia.Features.SharedFolders
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        private void buttonOpenUser_Click(object sender, EventArgs e)
 | 
					        private void buttonOpenUser_Click(object sender, EventArgs e)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            AddUserFolders(gabLookup.SelectedUser, null, true);
 | 
					            AddUserFolders(gabLookup.SelectedUser, false, null, true);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void gabLookup_SelectedUserChanged(object source, GABLookupControl.SelectedUserEventArgs e)
 | 
					        private void gabLookup_SelectedUserChanged(object source, GABLookupControl.SelectedUserEventArgs e)
 | 
				
			||||||
@@ -320,7 +362,7 @@ namespace Acacia.Features.SharedFolders
 | 
				
			|||||||
                
 | 
					                
 | 
				
			||||||
            if (e.IsChosen)
 | 
					            if (e.IsChosen)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                AddUserFolders(e.SelectedUser, null, true);
 | 
					                AddUserFolders(e.SelectedUser, false, null, true);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -338,7 +380,7 @@ namespace Acacia.Features.SharedFolders
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        private readonly Dictionary<GABUser, StoreTreeNode> _userFolders = new Dictionary<GABUser, StoreTreeNode>();
 | 
					        private readonly Dictionary<GABUser, StoreTreeNode> _userFolders = new Dictionary<GABUser, StoreTreeNode>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void AddUserFolders(GABUser user, Dictionary<BackendId, SharedFolder> currentShares, bool select)
 | 
					        private void AddUserFolders(GABUser user, bool wholeStore, Dictionary<BackendId, SharedFolder> currentShares, bool select)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (user == null)
 | 
					            if (user == null)
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
@@ -355,7 +397,9 @@ namespace Acacia.Features.SharedFolders
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                // Add the node
 | 
					                // Add the node
 | 
				
			||||||
                node = new StoreTreeNode(_folders, gabLookup.GAB,
 | 
					                node = new StoreTreeNode(_folders, gabLookup.GAB,
 | 
				
			||||||
                                         user, user.DisplayName, currentShares ?? new Dictionary<BackendId, SharedFolder>());
 | 
					                                         user, user.DisplayName, currentShares ?? new Dictionary<BackendId, SharedFolder>(),
 | 
				
			||||||
 | 
					                                         wholeStore);
 | 
				
			||||||
 | 
					                if (wholeStore)
 | 
				
			||||||
                node.DirtyChanged += UserSharesChanged;
 | 
					                node.DirtyChanged += UserSharesChanged;
 | 
				
			||||||
                node.CheckStateChanged += WholeStoreShareChanged;
 | 
					                node.CheckStateChanged += WholeStoreShareChanged;
 | 
				
			||||||
                _userFolders.Add(user, node);
 | 
					                _userFolders.Add(user, node);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -307,7 +307,7 @@
 | 
				
			|||||||
    <value>GrowAndShrink</value>
 | 
					    <value>GrowAndShrink</value>
 | 
				
			||||||
  </data>
 | 
					  </data>
 | 
				
			||||||
  <data name="_layoutOptions.ColumnCount" type="System.Int32, mscorlib">
 | 
					  <data name="_layoutOptions.ColumnCount" type="System.Int32, mscorlib">
 | 
				
			||||||
    <value>2</value>
 | 
					    <value>3</value>
 | 
				
			||||||
  </data>
 | 
					  </data>
 | 
				
			||||||
  <data name="_labelWholeStore.AutoSize" type="System.Boolean, mscorlib">
 | 
					  <data name="_labelWholeStore.AutoSize" type="System.Boolean, mscorlib">
 | 
				
			||||||
    <value>True</value>
 | 
					    <value>True</value>
 | 
				
			||||||
@@ -402,9 +402,6 @@
 | 
				
			|||||||
  <data name="labelPermissionsValue.TabIndex" type="System.Int32, mscorlib">
 | 
					  <data name="labelPermissionsValue.TabIndex" type="System.Int32, mscorlib">
 | 
				
			||||||
    <value>8</value>
 | 
					    <value>8</value>
 | 
				
			||||||
  </data>
 | 
					  </data>
 | 
				
			||||||
  <data name="labelPermissionsValue.Text" xml:space="preserve">
 | 
					 | 
				
			||||||
    <value>Share as</value>
 | 
					 | 
				
			||||||
  </data>
 | 
					 | 
				
			||||||
  <data name="labelPermissionsValue.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
 | 
					  <data name="labelPermissionsValue.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
 | 
				
			||||||
    <value>MiddleLeft</value>
 | 
					    <value>MiddleLeft</value>
 | 
				
			||||||
  </data>
 | 
					  </data>
 | 
				
			||||||
@@ -648,6 +645,39 @@
 | 
				
			|||||||
  <data name=">>_labelPermissions.ZOrder" xml:space="preserve">
 | 
					  <data name=">>_labelPermissions.ZOrder" xml:space="preserve">
 | 
				
			||||||
    <value>9</value>
 | 
					    <value>9</value>
 | 
				
			||||||
  </data>
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="_labelRestartRequired.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
 | 
				
			||||||
 | 
					    <value>Fill</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="_labelRestartRequired.Location" type="System.Drawing.Point, System.Drawing">
 | 
				
			||||||
 | 
					    <value>123, 0</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="_labelRestartRequired.Size" type="System.Drawing.Size, System.Drawing">
 | 
				
			||||||
 | 
					    <value>322, 27</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="_labelRestartRequired.TabIndex" type="System.Int32, mscorlib">
 | 
				
			||||||
 | 
					    <value>10</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="_labelRestartRequired.Text" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>(Requires restart)</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="_labelRestartRequired.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
 | 
				
			||||||
 | 
					    <value>MiddleLeft</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name="_labelRestartRequired.Visible" type="System.Boolean, mscorlib">
 | 
				
			||||||
 | 
					    <value>False</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name=">>_labelRestartRequired.Name" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>_labelRestartRequired</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name=">>_labelRestartRequired.Type" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name=">>_labelRestartRequired.Parent" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>_layoutOptions</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
 | 
					  <data name=">>_labelRestartRequired.ZOrder" xml:space="preserve">
 | 
				
			||||||
 | 
					    <value>10</value>
 | 
				
			||||||
 | 
					  </data>
 | 
				
			||||||
  <data name="_layoutOptions.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
 | 
					  <data name="_layoutOptions.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
 | 
				
			||||||
    <value>Fill</value>
 | 
					    <value>Fill</value>
 | 
				
			||||||
  </data>
 | 
					  </data>
 | 
				
			||||||
@@ -679,7 +709,7 @@
 | 
				
			|||||||
    <value>2</value>
 | 
					    <value>2</value>
 | 
				
			||||||
  </data>
 | 
					  </data>
 | 
				
			||||||
  <data name="_layoutOptions.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
 | 
					  <data name="_layoutOptions.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
 | 
				
			||||||
    <value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="_labelWholeStore" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkWholeStore" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="labelPermissionsValue" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="_labelName" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textName" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="_labelSendAs" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkSendAs" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="_labelReminders" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkReminders" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="_labelPermissions" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /></TableLayoutSettings></value>
 | 
					    <value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="_labelWholeStore" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkWholeStore" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="labelPermissionsValue" Row="4" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="_labelName" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textName" Row="1" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="_labelSendAs" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkSendAs" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="_labelReminders" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkReminders" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="_labelPermissions" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="_labelRestartRequired" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings></value>
 | 
				
			||||||
  </data>
 | 
					  </data>
 | 
				
			||||||
  <data name="_layoutMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
 | 
					  <data name="_layoutMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
 | 
				
			||||||
    <value>Fill</value>
 | 
					    <value>Fill</value>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,9 +47,10 @@ namespace Acacia.Features.SharedFolders
 | 
				
			|||||||
        private readonly GABUser _user;
 | 
					        private readonly GABUser _user;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public readonly bool IsReadOnly;
 | 
					        public readonly bool IsReadOnly;
 | 
				
			||||||
 | 
					        public readonly bool IsShared;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public StoreTreeNode(SharedFoldersManager folders, GABHandler gab, GABUser user, string text, 
 | 
					        public StoreTreeNode(SharedFoldersManager folders, GABHandler gab, GABUser user, string text, 
 | 
				
			||||||
                             Dictionary<BackendId, SharedFolder> currentFolders)
 | 
					                             Dictionary<BackendId, SharedFolder> currentFolders, bool isShared)
 | 
				
			||||||
        :
 | 
					        :
 | 
				
			||||||
        base(text)
 | 
					        base(text)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@@ -58,6 +59,7 @@ namespace Acacia.Features.SharedFolders
 | 
				
			|||||||
            this._gab = gab;
 | 
					            this._gab = gab;
 | 
				
			||||||
            this._user = user;
 | 
					            this._user = user;
 | 
				
			||||||
            this.IsReadOnly = false;
 | 
					            this.IsReadOnly = false;
 | 
				
			||||||
 | 
					            this.IsShared = isShared;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // Create an empty current state. When loading the nodes, the shares will be added. This has the benefit of
 | 
					            // Create an empty current state. When loading the nodes, the shares will be added. This has the benefit of
 | 
				
			||||||
            // cleaning up automatically any obsolote shares.
 | 
					            // cleaning up automatically any obsolote shares.
 | 
				
			||||||
@@ -80,6 +82,9 @@ namespace Acacia.Features.SharedFolders
 | 
				
			|||||||
                ChildLoader.Reload();
 | 
					                ChildLoader.Reload();
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
            Control = _reloader;
 | 
					            Control = _reloader;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Set up sharing
 | 
				
			||||||
 | 
					            WantShare = isShared;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private static void ApplyReadOnly(KTreeNode node, bool isReadOnly)
 | 
					        private static void ApplyReadOnly(KTreeNode node, bool isReadOnly)
 | 
				
			||||||
@@ -92,11 +97,6 @@ namespace Acacia.Features.SharedFolders
 | 
				
			|||||||
            get { return ((UserFolderLoader)ChildLoader).User; }
 | 
					            get { return ((UserFolderLoader)ChildLoader).User; }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool IsShared
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            get { return false; }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public bool WantShare
 | 
					        public bool WantShare
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            get
 | 
					            get
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,6 +46,7 @@ namespace Acacia
 | 
				
			|||||||
        public const string REG_VAL_CURRENT_SIGNATURE = "KOE Signature Digest";
 | 
					        public const string REG_VAL_CURRENT_SIGNATURE = "KOE Signature Digest";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public const string REG_VAL_NEXT_ACCOUNT_ID = "NextAccountID";
 | 
					        public const string REG_VAL_NEXT_ACCOUNT_ID = "NextAccountID";
 | 
				
			||||||
 | 
					        public const string REG_VAL_KOE_SHARE_FOR = "KOE Share For";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #endregion
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,5 +72,7 @@ namespace Acacia.Stubs
 | 
				
			|||||||
            get;
 | 
					            get;
 | 
				
			||||||
            set;
 | 
					            set;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        string ShareFor {get;}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -284,6 +284,14 @@ namespace Acacia.Stubs.OutlookWrappers
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public string ShareFor
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return RegistryUtil.GetValueString(_regPath, OutlookConstants.REG_VAL_KOE_SHARE_FOR, null);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #endregion
 | 
					        #endregion
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,10 +36,12 @@ namespace Acacia.ZPush
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        #region Miscellaneous
 | 
					        #region Miscellaneous
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private readonly ZPushAccounts _zPushAccounts;
 | 
				
			||||||
        private readonly IAccount _account;
 | 
					        private readonly IAccount _account;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        internal ZPushAccount(IAccount account)
 | 
					        internal ZPushAccount(ZPushAccounts zPushAccounts, IAccount account)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            this._zPushAccounts = zPushAccounts;
 | 
				
			||||||
            this._account = account;
 | 
					            this._account = account;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -206,5 +208,62 @@ namespace Acacia.ZPush
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #endregion
 | 
					        #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #region Account sharing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public string ShareFor
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get { return Account.ShareFor; }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public string ShareUserName
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (ShareFor == null)
 | 
				
			||||||
 | 
					                    return null;
 | 
				
			||||||
 | 
					                int index = Account.UserName.IndexOf("+share+");
 | 
				
			||||||
 | 
					                if (index < 0)
 | 
				
			||||||
 | 
					                    return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return Account.UserName.Substring(index + 7);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [Browsable(false)]
 | 
				
			||||||
 | 
					        public ZPushAccount ShareForAccount
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (Account.ShareFor == null)
 | 
				
			||||||
 | 
					                    return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return _zPushAccounts.GetAccount(Account.ShareFor);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [Browsable(false)]
 | 
				
			||||||
 | 
					        public ZPushAccount[] SharedAccounts
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            get
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (ShareFor != null)
 | 
				
			||||||
 | 
					                    return new ZPushAccount[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                List<ZPushAccount> shares = new List<ZPushAccount>();
 | 
				
			||||||
 | 
					                foreach (ZPushAccount account in _zPushAccounts.GetAccounts())
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (account == this)
 | 
				
			||||||
 | 
					                        continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if (account.ShareFor != null && account.ShareFor == this.Account.SmtpAddress)
 | 
				
			||||||
 | 
					                        shares.Add(account);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return shares.ToArray();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #endregion
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -94,7 +94,7 @@ namespace Acacia.ZPush
 | 
				
			|||||||
                // Only EAS accounts can be zpush accounts
 | 
					                // Only EAS accounts can be zpush accounts
 | 
				
			||||||
                if (account.AccountType == AccountType.EAS)
 | 
					                if (account.AccountType == AccountType.EAS)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    ZPushAccount zpush = new ZPushAccount(account);
 | 
					                    ZPushAccount zpush = new ZPushAccount(this, account);
 | 
				
			||||||
                    _accountsByStoreId.Add(account.StoreID, zpush);
 | 
					                    _accountsByStoreId.Add(account.StoreID, zpush);
 | 
				
			||||||
                    _accountsBySmtp.Add(account.SmtpAddress, zpush);
 | 
					                    _accountsBySmtp.Add(account.SmtpAddress, zpush);
 | 
				
			||||||
                    Logger.Instance.Trace(this, "ZPush account: {0}", zpush);
 | 
					                    Logger.Instance.Trace(this, "ZPush account: {0}", zpush);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user