mirror of
				https://github.com/Kopano-dev/kopano-ol-extension.git
				synced 2023-10-10 11:37:40 +00:00 
			
		
		
		
	[KOE-166] Added support for reminders query on impersonated stores.
[KOE-170] No longer checking impersonated stores for shared folders, as they can never exist
This commit is contained in:
		@@ -234,7 +234,6 @@ namespace Acacia
 | 
			
		||||
                    return result;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // General
 | 
			
		||||
 
 | 
			
		||||
@@ -171,20 +171,28 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
            {
 | 
			
		||||
                Logger.Instance.Debug(this, "Starting sync for account {0}", account);
 | 
			
		||||
 | 
			
		||||
                // Fetch the current shares
 | 
			
		||||
                ICollection<SharedFolder> shares = manager.GetCurrentShares(null);
 | 
			
		||||
                Logger.Instance.Trace(this, "AdditionalFolders_Sync: {0}", shares.Count);
 | 
			
		||||
                if (account.IsShare)
 | 
			
		||||
                {
 | 
			
		||||
                    Logger.Instance.Debug(this, "Account {0} is a share", account);
 | 
			
		||||
                    manager.UpdateSharedStore();
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    // Fetch the current shares
 | 
			
		||||
                    ICollection<SharedFolder> shares = manager.GetCurrentShares(null);
 | 
			
		||||
                    Logger.Instance.Trace(this, "AdditionalFolders_Sync: {0}", shares.Count);
 | 
			
		||||
 | 
			
		||||
                // Convert to dictionary
 | 
			
		||||
                Dictionary<SyncId, SharedFolder> dict = shares.ToDictionary(x => x.SyncId);
 | 
			
		||||
                Logger.Instance.Trace(this, "AdditionalFolders_Sync2: {0}", shares.Count);
 | 
			
		||||
                    // Convert to dictionary
 | 
			
		||||
                    Dictionary<SyncId, SharedFolder> dict = shares.ToDictionary(x => x.SyncId);
 | 
			
		||||
                    Logger.Instance.Trace(this, "AdditionalFolders_Sync2: {0}", shares.Count);
 | 
			
		||||
 | 
			
		||||
                // Store any send-as properties
 | 
			
		||||
                FeatureSendAs sendAs = ThisAddIn.Instance.GetFeature<FeatureSendAs>();
 | 
			
		||||
                sendAs?.UpdateSendAsAddresses(account, shares);
 | 
			
		||||
                    // Store any send-as properties
 | 
			
		||||
                    FeatureSendAs sendAs = ThisAddIn.Instance.GetFeature<FeatureSendAs>();
 | 
			
		||||
                    sendAs?.UpdateSendAsAddresses(account, shares);
 | 
			
		||||
 | 
			
		||||
                // Store with the account
 | 
			
		||||
                account.SetFeatureData(this, KEY_SHARES, dict);
 | 
			
		||||
                    // Store with the account
 | 
			
		||||
                    account.SetFeatureData(this, KEY_SHARES, dict);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -10,16 +10,14 @@ using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace Acacia.Features.SharedFolders
 | 
			
		||||
{
 | 
			
		||||
    public class RemindersQuery : DisposableWrapper, LogContext
 | 
			
		||||
    public abstract class RemindersQuery : DisposableWrapper, LogContext
 | 
			
		||||
    {
 | 
			
		||||
        private static readonly SearchQuery.PropertyIdentifier PROP_FOLDER = new SearchQuery.PropertyIdentifier(PropTag.FromInt(0x6B20001F));
 | 
			
		||||
        protected static readonly SearchQuery.PropertyIdentifier PROP_FOLDER = new SearchQuery.PropertyIdentifier(PropTag.FromInt(0x6B20001F));
 | 
			
		||||
 | 
			
		||||
        private readonly FeatureSharedFolders _feature;
 | 
			
		||||
        private readonly IFolder _folder;
 | 
			
		||||
        private SearchQuery _queryRoot;
 | 
			
		||||
        private SearchQuery.Or _queryCustomShared;
 | 
			
		||||
        private SearchQuery.Or _queryCustomConfigured;
 | 
			
		||||
        private bool _queryCustomModified;
 | 
			
		||||
        protected SearchQuery _queryRoot;
 | 
			
		||||
        protected bool _queryCustomModified;
 | 
			
		||||
 | 
			
		||||
        public RemindersQuery(FeatureSharedFolders feature, IStore store)
 | 
			
		||||
        {
 | 
			
		||||
@@ -27,10 +25,68 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
            this._folder = store.GetSpecialFolder(SpecialFolder.Reminders);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool Open()
 | 
			
		||||
        abstract public bool Open();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public string LogContextId
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return _feature.LogContextId;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected override void DoRelease()
 | 
			
		||||
        {
 | 
			
		||||
            _folder.Dispose();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Commit()
 | 
			
		||||
        {
 | 
			
		||||
            if (_queryCustomModified)
 | 
			
		||||
            {
 | 
			
		||||
                FolderQuery = _queryRoot;
 | 
			
		||||
                _queryCustomModified = false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected SearchQuery FolderQuery
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return _folder.SearchCriteria;
 | 
			
		||||
            }
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                if (!_feature.RemindersKeepRunning)
 | 
			
		||||
                    _folder.SearchRunning = false;
 | 
			
		||||
 | 
			
		||||
                _folder.SearchCriteria = value;
 | 
			
		||||
 | 
			
		||||
                if (!_feature.RemindersKeepRunning)
 | 
			
		||||
                    _folder.SearchRunning = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class RemindersQueryFolders : RemindersQuery
 | 
			
		||||
    {
 | 
			
		||||
        // Custom query for shared (S) and configured (C) folders
 | 
			
		||||
        private SearchQuery.Or _queryCustomShared;
 | 
			
		||||
        private SearchQuery.Or _queryCustomConfigured;
 | 
			
		||||
 | 
			
		||||
        public RemindersQueryFolders(FeatureSharedFolders feature, IStore store) 
 | 
			
		||||
        : 
 | 
			
		||||
        base(feature, store)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        override public bool Open()
 | 
			
		||||
        {
 | 
			
		||||
            if (_queryCustomShared != null && _queryCustomConfigured != null)
 | 
			
		||||
                return true;
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                _queryRoot = FolderQuery;
 | 
			
		||||
@@ -80,6 +136,7 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
            return _queryCustomShared != null && _queryCustomConfigured != null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        private SearchQuery.Or AddCustomQuery(SearchQuery.And root, string prefix)
 | 
			
		||||
        {
 | 
			
		||||
            SearchQuery.Or custom = new SearchQuery.Or();
 | 
			
		||||
@@ -96,51 +153,10 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
            root.Operands.Add(custom);
 | 
			
		||||
            return custom;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public string LogContextId
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return _feature.LogContextId;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected override void DoRelease()
 | 
			
		||||
        {
 | 
			
		||||
            _folder.Dispose();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Commit()
 | 
			
		||||
        {
 | 
			
		||||
            if (_queryCustomModified)
 | 
			
		||||
            {
 | 
			
		||||
                FolderQuery = _queryRoot;
 | 
			
		||||
                _queryCustomModified = false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private SearchQuery FolderQuery
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return _folder.SearchCriteria;
 | 
			
		||||
            }
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                if (!_feature.RemindersKeepRunning)
 | 
			
		||||
                    _folder.SearchRunning = false;
 | 
			
		||||
 | 
			
		||||
                _folder.SearchCriteria = value;
 | 
			
		||||
 | 
			
		||||
                if (!_feature.RemindersKeepRunning)
 | 
			
		||||
                    _folder.SearchRunning = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void UpdateReminders(SyncId folderId, bool wantReminders)
 | 
			
		||||
        {
 | 
			
		||||
            Logger.Instance.Trace(this, "Setting reminders for folder {0}: {1} ({2})", wantReminders, folderId, folderId?.Kind);
 | 
			
		||||
            switch(folderId.Kind)
 | 
			
		||||
            switch (folderId.Kind)
 | 
			
		||||
            {
 | 
			
		||||
                case SyncKind.Configured:
 | 
			
		||||
                    UpdateReminders(_queryCustomConfigured, folderId, wantReminders);
 | 
			
		||||
@@ -214,7 +230,7 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void RemoveStaleReminders(ISet<string> prefixes, SearchQuery.Or query)
 | 
			
		||||
        { 
 | 
			
		||||
        {
 | 
			
		||||
            // Remove all operands for which we do not want the prefix
 | 
			
		||||
            for (int i = 0; i < query.Operands.Count;)
 | 
			
		||||
            {
 | 
			
		||||
@@ -244,5 +260,84 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
                return null;
 | 
			
		||||
            return folderId.ToString() + ":";
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class RemindersQueryStore : RemindersQuery
 | 
			
		||||
    {
 | 
			
		||||
        private SearchQuery.Not _queryCustomShared;
 | 
			
		||||
 | 
			
		||||
        public RemindersQueryStore(FeatureSharedFolders feature, IStore store) : base(feature, store)
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override bool Open()
 | 
			
		||||
        {
 | 
			
		||||
            if (_queryCustomShared != null)
 | 
			
		||||
                return true;
 | 
			
		||||
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                _queryRoot = FolderQuery;
 | 
			
		||||
                if (!(_queryRoot is SearchQuery.And))
 | 
			
		||||
                    return false;
 | 
			
		||||
                Logger.Instance.Debug(this, "Current query:\n{0}", _queryRoot.ToString());
 | 
			
		||||
 | 
			
		||||
                SearchQuery.And root = (SearchQuery.And)_queryRoot;
 | 
			
		||||
                // TODO: more strict checking of query
 | 
			
		||||
                // Remove old shared folders query if present
 | 
			
		||||
                if ((root.Operands.Count == 3 || root.Operands.Count == 5) && root.Operands.ElementAt(2) is SearchQuery.Or)
 | 
			
		||||
                {
 | 
			
		||||
                    while (root.Operands.Count > 2)
 | 
			
		||||
                    {
 | 
			
		||||
                        root.Operands.RemoveAt(2);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (root.Operands.Count == 3)
 | 
			
		||||
                {
 | 
			
		||||
                    _queryCustomShared = (SearchQuery.Not)root.Operands.ElementAt(2);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    SetReminders(false); // Default to false
 | 
			
		||||
                    root.Operands.Add(_queryCustomShared);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                Logger.Instance.Debug(this, "Modified query:\n{0}", root.ToString());
 | 
			
		||||
                // Store it
 | 
			
		||||
                FolderQuery = root;
 | 
			
		||||
                Logger.Instance.Debug(this, "Modified query readback:\n{0}", FolderQuery);
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception e)
 | 
			
		||||
            {
 | 
			
		||||
                Logger.Instance.Error(this, "Exception in Open: {0}", e);
 | 
			
		||||
            }
 | 
			
		||||
            return _queryCustomShared != null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SetReminders(bool showReminders)
 | 
			
		||||
        {
 | 
			
		||||
            // We do not have support for constants in queries, so use a prefix match (which will always be I for impersonated stores)
 | 
			
		||||
            // with an unmatchable prefix instead.
 | 
			
		||||
            // It's wrapped in a NOT, to allow updating that operand rather than the main query
 | 
			
		||||
            SearchQuery.PropertyContent filter = new SearchQuery.PropertyContent(
 | 
			
		||||
                    PROP_FOLDER, SearchQuery.ContentMatchOperation.Prefix, SearchQuery.ContentMatchModifiers.None, showReminders ? "X" : "I"
 | 
			
		||||
                );
 | 
			
		||||
 | 
			
		||||
            // Check current state
 | 
			
		||||
            if (_queryCustomShared != null)
 | 
			
		||||
            {
 | 
			
		||||
                if (((SearchQuery.PropertyContent)_queryCustomShared.Operand).Content.Equals(filter.Content))
 | 
			
		||||
                    return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Update the filter
 | 
			
		||||
            if (_queryCustomShared == null)
 | 
			
		||||
                _queryCustomShared = new SearchQuery.Not(filter);
 | 
			
		||||
            else
 | 
			
		||||
                _queryCustomShared.Operand = filter;
 | 
			
		||||
            _queryCustomModified = true;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -38,6 +38,8 @@
 | 
			
		||||
            this.buttonOpenUser = new System.Windows.Forms.Button();
 | 
			
		||||
            this.kTreeFolders = new Acacia.Controls.KTree();
 | 
			
		||||
            this._layoutOptions = new System.Windows.Forms.TableLayoutPanel();
 | 
			
		||||
            this._labelWholeStoreReminders = new System.Windows.Forms.Label();
 | 
			
		||||
            this.checkWholeStoreReminders = new System.Windows.Forms.CheckBox();
 | 
			
		||||
            this._labelWholeStore = new System.Windows.Forms.Label();
 | 
			
		||||
            this.checkWholeStore = new System.Windows.Forms.CheckBox();
 | 
			
		||||
            this.labelPermissionsValue = new System.Windows.Forms.Label();
 | 
			
		||||
@@ -137,21 +139,35 @@
 | 
			
		||||
            // _layoutOptions
 | 
			
		||||
            // 
 | 
			
		||||
            resources.ApplyResources(this._layoutOptions, "_layoutOptions");
 | 
			
		||||
            this._layoutOptions.Controls.Add(this._labelWholeStoreReminders, 0, 1);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this.checkWholeStoreReminders, 1, 1);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this._labelWholeStore, 0, 0);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this.checkWholeStore, 1, 0);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this.labelPermissionsValue, 1, 5);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this._labelName, 0, 1);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this.textName, 1, 1);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this._labelSendAs, 0, 2);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this.checkSendAs, 1, 2);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this._labelSendAsAddress, 0, 3);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this.textSendAsAddress, 1, 3);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this._labelReminders, 0, 4);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this.checkReminders, 1, 4);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this._labelPermissions, 0, 5);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this.labelPermissionsValue, 1, 6);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this._labelName, 0, 2);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this.textName, 1, 2);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this._labelSendAs, 0, 3);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this.checkSendAs, 1, 3);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this._labelSendAsAddress, 0, 4);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this.textSendAsAddress, 1, 4);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this._labelReminders, 0, 5);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this.checkReminders, 1, 5);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this._labelPermissions, 0, 6);
 | 
			
		||||
            this._layoutOptions.Controls.Add(this._labelRestartRequired, 2, 0);
 | 
			
		||||
            this._layoutOptions.Name = "_layoutOptions";
 | 
			
		||||
            // 
 | 
			
		||||
            // _labelWholeStoreReminders
 | 
			
		||||
            // 
 | 
			
		||||
            resources.ApplyResources(this._labelWholeStoreReminders, "_labelWholeStoreReminders");
 | 
			
		||||
            this._labelWholeStoreReminders.Name = "_labelWholeStoreReminders";
 | 
			
		||||
            // 
 | 
			
		||||
            // checkWholeStoreReminders
 | 
			
		||||
            // 
 | 
			
		||||
            resources.ApplyResources(this.checkWholeStoreReminders, "checkWholeStoreReminders");
 | 
			
		||||
            this.checkWholeStoreReminders.Name = "checkWholeStoreReminders";
 | 
			
		||||
            this.checkWholeStoreReminders.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.checkWholeStoreReminders.CheckedChanged += new System.EventHandler(this.checkWholeStoreReminders_CheckedChanged);
 | 
			
		||||
            // 
 | 
			
		||||
            // _labelWholeStore
 | 
			
		||||
            // 
 | 
			
		||||
            resources.ApplyResources(this._labelWholeStore, "_labelWholeStore");
 | 
			
		||||
@@ -288,5 +304,7 @@
 | 
			
		||||
        private System.Windows.Forms.Label _labelRestartRequired;
 | 
			
		||||
        private System.Windows.Forms.Label _labelSendAsAddress;
 | 
			
		||||
        private System.Windows.Forms.TextBox textSendAsAddress;
 | 
			
		||||
        private System.Windows.Forms.Label _labelWholeStoreReminders;
 | 
			
		||||
        private System.Windows.Forms.CheckBox checkWholeStoreReminders;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -194,18 +194,18 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
                // Add public folders
 | 
			
		||||
                Dictionary<BackendId, SharedFolder> publicShares;
 | 
			
		||||
                shares.TryGetValue(GABUser.USER_PUBLIC, out publicShares);
 | 
			
		||||
                AddUserFolders(GABUser.USER_PUBLIC, false, publicShares, false);
 | 
			
		||||
                AddUserFolders(GABUser.USER_PUBLIC, null, publicShares, false);
 | 
			
		||||
 | 
			
		||||
                // Add shared stores
 | 
			
		||||
                foreach (ZPushAccount shared in _account.SharedAccounts)
 | 
			
		||||
                {
 | 
			
		||||
                    AddUserFolders(new GABUser(shared.ShareUserName), true, null, false);
 | 
			
		||||
                    AddUserFolders(new GABUser(shared.ShareUserName), shared, null, false);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // Add any users for which we have shared folders
 | 
			
		||||
                foreach (KeyValuePair<GABUser, Dictionary<BackendId, SharedFolder>> entry in shares.OrderBy(x => x.Key.DisplayName))
 | 
			
		||||
                    if (GABUser.USER_PUBLIC != entry.Key)
 | 
			
		||||
                       AddUserFolders(entry.Key, false, entry.Value, false);
 | 
			
		||||
                       AddUserFolders(entry.Key, null, entry.Value, false);
 | 
			
		||||
            }
 | 
			
		||||
            finally
 | 
			
		||||
            {
 | 
			
		||||
@@ -352,6 +352,8 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
 | 
			
		||||
                ctx.AddBusy(-state.folders);
 | 
			
		||||
 | 
			
		||||
                List<ZPushAccount> syncAdditional = new List<ZPushAccount>();
 | 
			
		||||
 | 
			
		||||
                // Handle stores
 | 
			
		||||
                if (state.stores.Count > 0)
 | 
			
		||||
                {
 | 
			
		||||
@@ -362,7 +364,23 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
                    {
 | 
			
		||||
                        if (store.WantShare)
 | 
			
		||||
                        {
 | 
			
		||||
                            add.Add(store);
 | 
			
		||||
                            // Check if it must be added
 | 
			
		||||
                            if (!store.IsShared)
 | 
			
		||||
                                add.Add(store);
 | 
			
		||||
 | 
			
		||||
                            // Update reminders for existing stores
 | 
			
		||||
                            if (store.ShowReminders != store.ShowRemindersInitial)
 | 
			
		||||
                            {
 | 
			
		||||
                                ZPushAccount storeAccount = store.WholeStoreAccount;
 | 
			
		||||
                                if (storeAccount != null)
 | 
			
		||||
                                {
 | 
			
		||||
                                    storeAccount.ShowReminders = store.ShowReminders;
 | 
			
		||||
                                    syncAdditional.Add(storeAccount);
 | 
			
		||||
                                    // Update UI state
 | 
			
		||||
                                    store.ShowRemindersInitial = store.ShowReminders;
 | 
			
		||||
                                    WholeStoreShareChanged(store);
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                            continue;
 | 
			
		||||
                        }
 | 
			
		||||
                        else
 | 
			
		||||
@@ -406,6 +424,10 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
                    CheckDirty();
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // Sync accounts
 | 
			
		||||
                foreach (ZPushAccount account in syncAdditional)
 | 
			
		||||
                    _feature.Sync(account);
 | 
			
		||||
 | 
			
		||||
                if (state.folders != 0)
 | 
			
		||||
                {
 | 
			
		||||
                    // Sync account
 | 
			
		||||
@@ -432,7 +454,7 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
 | 
			
		||||
        private void buttonOpenUser_Click(object sender, EventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            AddUserFolders(gabLookup.SelectedUser, false, null, true);
 | 
			
		||||
            AddUserFolders(gabLookup.SelectedUser, null, null, true);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void gabLookup_SelectedUserChanged(object source, GABLookupControl.SelectedUserEventArgs e)
 | 
			
		||||
@@ -441,7 +463,7 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
                
 | 
			
		||||
            if (e.IsChosen)
 | 
			
		||||
            {
 | 
			
		||||
                AddUserFolders(e.SelectedUser, false, null, true);
 | 
			
		||||
                AddUserFolders(e.SelectedUser, null, null, true);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -459,7 +481,7 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
 | 
			
		||||
        private readonly Dictionary<GABUser, StoreTreeNode> _userFolders = new Dictionary<GABUser, StoreTreeNode>();
 | 
			
		||||
 | 
			
		||||
        private void AddUserFolders(GABUser user, bool wholeStore, Dictionary<BackendId, SharedFolder> currentShares, bool select)
 | 
			
		||||
        private void AddUserFolders(GABUser user, ZPushAccount wholeStore, Dictionary<BackendId, SharedFolder> currentShares, bool select)
 | 
			
		||||
        {
 | 
			
		||||
            if (user == null)
 | 
			
		||||
                return;
 | 
			
		||||
@@ -480,7 +502,8 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
                node = new StoreTreeNode(_folders, gabLookup.GAB,
 | 
			
		||||
                                         user, sendAsAddress,
 | 
			
		||||
                                         user.DisplayName, currentShares ?? new Dictionary<BackendId, SharedFolder>(),
 | 
			
		||||
                                         wholeStore);
 | 
			
		||||
                                         wholeStore != null,
 | 
			
		||||
                                         wholeStore?.ShowReminders == true);
 | 
			
		||||
                node.DirtyChanged += UserSharesChanged;
 | 
			
		||||
                node.CheckStateChanged += WholeStoreShareChanged;
 | 
			
		||||
                _userFolders.Add(user, node);
 | 
			
		||||
@@ -646,6 +669,22 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
        }
 | 
			
		||||
        private readonly List<StoreTreeNode> _optionWholeStoreNodes = new List<StoreTreeNode>();
 | 
			
		||||
        private readonly List<bool> _optionWholeStoreNodesInitial = new List<bool>();
 | 
			
		||||
        private CheckState? OptionWholeStoreReminders
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (checkWholeStoreReminders.Visible)
 | 
			
		||||
                    return checkWholeStoreReminders.CheckState;
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                _labelWholeStoreReminders.Visible = checkWholeStoreReminders.Visible = value != null;
 | 
			
		||||
                if (value != null)
 | 
			
		||||
                    checkWholeStoreReminders.CheckState = value.Value;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ShowOptions(KTreeNode[] nodes)
 | 
			
		||||
        {
 | 
			
		||||
@@ -667,6 +706,7 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
                OptionReminders = null;
 | 
			
		||||
                OptionPermissions = null;
 | 
			
		||||
                OptionWholeStore = null;
 | 
			
		||||
                OptionWholeStoreReminders = null;
 | 
			
		||||
                bool readOnly = false;
 | 
			
		||||
                bool haveStoreNodes = false;
 | 
			
		||||
                bool haveFolderNodes = false;
 | 
			
		||||
@@ -749,7 +789,6 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
 | 
			
		||||
                        _labelRestartRequired.Visible = isShared && !wasShared;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
@@ -846,6 +885,7 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
 | 
			
		||||
        private void checkWholeStore_CheckedChanged(object sender, EventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            CheckState? reminders = null;
 | 
			
		||||
            for (int i = 0; i < _optionWholeStoreNodes.Count; ++i)
 | 
			
		||||
            {
 | 
			
		||||
                StoreTreeNode node = _optionWholeStoreNodes[i];
 | 
			
		||||
@@ -857,8 +897,32 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
                    case CheckState.Unchecked: wholeStore = false; break;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (wholeStore)
 | 
			
		||||
                {
 | 
			
		||||
                    CheckState remindersCheck = node.ShowReminders? CheckState.Checked: CheckState.Unchecked;
 | 
			
		||||
                    if (reminders == null)
 | 
			
		||||
                        reminders = remindersCheck;
 | 
			
		||||
                    else if (reminders.Value != remindersCheck)
 | 
			
		||||
                        reminders = CheckState.Indeterminate;
 | 
			
		||||
                }
 | 
			
		||||
                node.WantShare = wholeStore;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            OptionWholeStoreReminders = reminders;
 | 
			
		||||
        }
 | 
			
		||||
        private void checkWholeStoreReminders_CheckedChanged(object sender, EventArgs e)
 | 
			
		||||
        {
 | 
			
		||||
            for (int i = 0; i < _optionWholeStoreNodes.Count; ++i)
 | 
			
		||||
            {
 | 
			
		||||
                StoreTreeNode node = _optionWholeStoreNodes[i];
 | 
			
		||||
                switch (checkWholeStoreReminders.CheckState)
 | 
			
		||||
                {
 | 
			
		||||
                    case CheckState.Checked: node.ShowReminders = true; break;
 | 
			
		||||
                    case CheckState.Indeterminate: node.ShowReminders = node.ShowRemindersInitial; break;
 | 
			
		||||
                    case CheckState.Unchecked: node.ShowReminders = false; break;
 | 
			
		||||
                }
 | 
			
		||||
                WholeStoreShareChanged(node);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void checkSendAs_CheckedChanged(object sender, EventArgs e)
 | 
			
		||||
 
 | 
			
		||||
@@ -145,10 +145,13 @@
 | 
			
		||||
  </data>
 | 
			
		||||
  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
 | 
			
		||||
  <data name="labelSelectUser.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>3, 0</value>
 | 
			
		||||
    <value>4, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="labelSelectUser.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>4, 0, 4, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="labelSelectUser.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>105, 29</value>
 | 
			
		||||
    <value>158, 40</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="labelSelectUser.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>0</value>
 | 
			
		||||
@@ -175,10 +178,13 @@
 | 
			
		||||
    <value>Fill</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="gabLookup.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>114, 3</value>
 | 
			
		||||
    <value>170, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="gabLookup.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>4, 5, 4, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="gabLookup.MinimumSize" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>200, 0</value>
 | 
			
		||||
    <value>300, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="gabLookup.NotFoundText" xml:space="preserve">
 | 
			
		||||
    <value>The user was not found</value>
 | 
			
		||||
@@ -187,7 +193,7 @@
 | 
			
		||||
    <value>Start typing name</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="gabLookup.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>260, 23</value>
 | 
			
		||||
    <value>401, 30</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="gabLookup.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>1</value>
 | 
			
		||||
@@ -220,13 +226,16 @@
 | 
			
		||||
    <value>NoControl</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="buttonOpenUser.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>380, 3</value>
 | 
			
		||||
    <value>579, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="buttonOpenUser.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>4, 5, 4, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="buttonOpenUser.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>8, 0, 8, 0</value>
 | 
			
		||||
    <value>12, 0, 12, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="buttonOpenUser.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>59, 23</value>
 | 
			
		||||
    <value>82, 30</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="buttonOpenUser.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>2</value>
 | 
			
		||||
@@ -250,13 +259,16 @@
 | 
			
		||||
    <value>Fill</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutSelectUser.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>3, 3</value>
 | 
			
		||||
    <value>4, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutSelectUser.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>4, 5, 4, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutSelectUser.RowCount" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>1</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutSelectUser.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>442, 29</value>
 | 
			
		||||
    <value>665, 40</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutSelectUser.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>0</value>
 | 
			
		||||
@@ -274,16 +286,19 @@
 | 
			
		||||
    <value>0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutSelectUser.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
 | 
			
		||||
    <value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelSelectUser" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="gabLookup" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="buttonOpenUser" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0" /><Rows Styles="Percent,100,Absolute,29" /></TableLayoutSettings></value>
 | 
			
		||||
    <value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="labelSelectUser" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="gabLookup" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="buttonOpenUser" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="AutoSize,0,Percent,100,AutoSize,0" /><Rows Styles="Percent,100,Absolute,40" /></TableLayoutSettings></value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="kTreeFolders.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
 | 
			
		||||
    <value>Fill</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="kTreeFolders.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>3, 38</value>
 | 
			
		||||
    <value>4, 55</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="kTreeFolders.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>4, 5, 4, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="kTreeFolders.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>442, 224</value>
 | 
			
		||||
    <value>665, 313</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="kTreeFolders.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>1</value>
 | 
			
		||||
@@ -309,6 +324,81 @@
 | 
			
		||||
  <data name="_layoutOptions.ColumnCount" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>3</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelWholeStoreReminders.AutoSize" type="System.Boolean, mscorlib">
 | 
			
		||||
    <value>True</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelWholeStoreReminders.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
 | 
			
		||||
    <value>Fill</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelWholeStoreReminders.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
 | 
			
		||||
    <value>NoControl</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelWholeStoreReminders.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>4, 52</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelWholeStoreReminders.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>4, 0, 4, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelWholeStoreReminders.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>133, 42</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelWholeStoreReminders.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>13</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelWholeStoreReminders.Text" xml:space="preserve">
 | 
			
		||||
    <value>Show reminders</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelWholeStoreReminders.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
 | 
			
		||||
    <value>MiddleLeft</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>_labelWholeStoreReminders.Name" xml:space="preserve">
 | 
			
		||||
    <value>_labelWholeStoreReminders</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>_labelWholeStoreReminders.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=">>_labelWholeStoreReminders.Parent" xml:space="preserve">
 | 
			
		||||
    <value>_layoutOptions</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>_labelWholeStoreReminders.ZOrder" xml:space="preserve">
 | 
			
		||||
    <value>0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkWholeStoreReminders.AutoSize" type="System.Boolean, mscorlib">
 | 
			
		||||
    <value>True</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkWholeStoreReminders.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
 | 
			
		||||
    <value>Left</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkWholeStoreReminders.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
 | 
			
		||||
    <value>NoControl</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkWholeStoreReminders.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>150, 58</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkWholeStoreReminders.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>9, 6, 4, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkWholeStoreReminders.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>0, 5, 0, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkWholeStoreReminders.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>22, 31</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkWholeStoreReminders.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>14</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>checkWholeStoreReminders.Name" xml:space="preserve">
 | 
			
		||||
    <value>checkWholeStoreReminders</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>checkWholeStoreReminders.Type" xml:space="preserve">
 | 
			
		||||
    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>checkWholeStoreReminders.Parent" xml:space="preserve">
 | 
			
		||||
    <value>_layoutOptions</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>checkWholeStoreReminders.ZOrder" xml:space="preserve">
 | 
			
		||||
    <value>1</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelWholeStore.AutoSize" type="System.Boolean, mscorlib">
 | 
			
		||||
    <value>True</value>
 | 
			
		||||
  </data>
 | 
			
		||||
@@ -319,13 +409,16 @@
 | 
			
		||||
    <value>MiddleLeft</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelWholeStore.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>3, 0</value>
 | 
			
		||||
    <value>4, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelWholeStore.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>4, 0, 4, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelWholeStore.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>0, 4, 0, 3</value>
 | 
			
		||||
    <value>0, 6, 0, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelWholeStore.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>90, 27</value>
 | 
			
		||||
    <value>133, 52</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelWholeStore.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>5</value>
 | 
			
		||||
@@ -346,7 +439,7 @@
 | 
			
		||||
    <value>_layoutOptions</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>_labelWholeStore.ZOrder" xml:space="preserve">
 | 
			
		||||
    <value>0</value>
 | 
			
		||||
    <value>2</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkWholeStore.AutoSize" type="System.Boolean, mscorlib">
 | 
			
		||||
    <value>True</value>
 | 
			
		||||
@@ -358,16 +451,16 @@
 | 
			
		||||
    <value>NoControl</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkWholeStore.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>102, 4</value>
 | 
			
		||||
    <value>150, 6</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkWholeStore.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>6, 4, 3, 3</value>
 | 
			
		||||
    <value>9, 6, 4, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkWholeStore.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>0, 3, 0, 3</value>
 | 
			
		||||
    <value>0, 5, 0, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkWholeStore.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>15, 20</value>
 | 
			
		||||
    <value>22, 41</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkWholeStore.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>9</value>
 | 
			
		||||
@@ -382,7 +475,7 @@
 | 
			
		||||
    <value>_layoutOptions</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>checkWholeStore.ZOrder" xml:space="preserve">
 | 
			
		||||
    <value>1</value>
 | 
			
		||||
    <value>3</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="labelPermissionsValue.AutoSize" type="System.Boolean, mscorlib">
 | 
			
		||||
    <value>True</value>
 | 
			
		||||
@@ -394,10 +487,13 @@
 | 
			
		||||
    <value>NoControl</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="labelPermissionsValue.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>99, 133</value>
 | 
			
		||||
    <value>145, 250</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="labelPermissionsValue.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>4, 0, 4, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="labelPermissionsValue.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>346, 20</value>
 | 
			
		||||
    <value>524, 31</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="labelPermissionsValue.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>8</value>
 | 
			
		||||
@@ -415,7 +511,7 @@
 | 
			
		||||
    <value>_layoutOptions</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>labelPermissionsValue.ZOrder" xml:space="preserve">
 | 
			
		||||
    <value>2</value>
 | 
			
		||||
    <value>4</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelName.AutoSize" type="System.Boolean, mscorlib">
 | 
			
		||||
    <value>True</value>
 | 
			
		||||
@@ -424,10 +520,13 @@
 | 
			
		||||
    <value>Fill</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelName.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>3, 27</value>
 | 
			
		||||
    <value>4, 94</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelName.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>4, 0, 4, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelName.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>90, 26</value>
 | 
			
		||||
    <value>133, 36</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelName.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>0</value>
 | 
			
		||||
@@ -448,19 +547,19 @@
 | 
			
		||||
    <value>_layoutOptions</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>_labelName.ZOrder" xml:space="preserve">
 | 
			
		||||
    <value>3</value>
 | 
			
		||||
    <value>5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="textName.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
 | 
			
		||||
    <value>Fill</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="textName.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>102, 30</value>
 | 
			
		||||
    <value>150, 99</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="textName.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>6, 3, 3, 3</value>
 | 
			
		||||
    <value>9, 5, 4, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="textName.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>343, 20</value>
 | 
			
		||||
    <value>519, 26</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="textName.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>0</value>
 | 
			
		||||
@@ -475,7 +574,7 @@
 | 
			
		||||
    <value>_layoutOptions</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>textName.ZOrder" xml:space="preserve">
 | 
			
		||||
    <value>4</value>
 | 
			
		||||
    <value>6</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelSendAs.AutoSize" type="System.Boolean, mscorlib">
 | 
			
		||||
    <value>True</value>
 | 
			
		||||
@@ -484,10 +583,13 @@
 | 
			
		||||
    <value>Fill</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelSendAs.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>3, 53</value>
 | 
			
		||||
    <value>4, 130</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelSendAs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>4, 0, 4, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelSendAs.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>90, 27</value>
 | 
			
		||||
    <value>133, 42</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelSendAs.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>2</value>
 | 
			
		||||
@@ -508,7 +610,7 @@
 | 
			
		||||
    <value>_layoutOptions</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>_labelSendAs.ZOrder" xml:space="preserve">
 | 
			
		||||
    <value>5</value>
 | 
			
		||||
    <value>7</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkSendAs.AutoSize" type="System.Boolean, mscorlib">
 | 
			
		||||
    <value>True</value>
 | 
			
		||||
@@ -517,16 +619,16 @@
 | 
			
		||||
    <value>Left</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkSendAs.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>102, 57</value>
 | 
			
		||||
    <value>150, 136</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkSendAs.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>6, 4, 3, 3</value>
 | 
			
		||||
    <value>9, 6, 4, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkSendAs.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>0, 3, 0, 3</value>
 | 
			
		||||
    <value>0, 5, 0, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkSendAs.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>15, 20</value>
 | 
			
		||||
    <value>22, 31</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkSendAs.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>3</value>
 | 
			
		||||
@@ -541,7 +643,7 @@
 | 
			
		||||
    <value>_layoutOptions</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>checkSendAs.ZOrder" xml:space="preserve">
 | 
			
		||||
    <value>6</value>
 | 
			
		||||
    <value>8</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelSendAsAddress.AutoSize" type="System.Boolean, mscorlib">
 | 
			
		||||
    <value>True</value>
 | 
			
		||||
@@ -553,10 +655,13 @@
 | 
			
		||||
    <value>NoControl</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelSendAsAddress.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>3, 80</value>
 | 
			
		||||
    <value>4, 172</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelSendAsAddress.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>4, 0, 4, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelSendAsAddress.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>90, 26</value>
 | 
			
		||||
    <value>133, 36</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelSendAsAddress.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>11</value>
 | 
			
		||||
@@ -577,19 +682,19 @@
 | 
			
		||||
    <value>_layoutOptions</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>_labelSendAsAddress.ZOrder" xml:space="preserve">
 | 
			
		||||
    <value>7</value>
 | 
			
		||||
    <value>9</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="textSendAsAddress.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
 | 
			
		||||
    <value>Fill</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="textSendAsAddress.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>102, 83</value>
 | 
			
		||||
    <value>150, 177</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="textSendAsAddress.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>6, 3, 3, 3</value>
 | 
			
		||||
    <value>9, 5, 4, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="textSendAsAddress.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>343, 20</value>
 | 
			
		||||
    <value>519, 26</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="textSendAsAddress.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>12</value>
 | 
			
		||||
@@ -604,7 +709,7 @@
 | 
			
		||||
    <value>_layoutOptions</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>textSendAsAddress.ZOrder" xml:space="preserve">
 | 
			
		||||
    <value>8</value>
 | 
			
		||||
    <value>10</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelReminders.AutoSize" type="System.Boolean, mscorlib">
 | 
			
		||||
    <value>True</value>
 | 
			
		||||
@@ -613,10 +718,13 @@
 | 
			
		||||
    <value>Fill</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelReminders.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>3, 106</value>
 | 
			
		||||
    <value>4, 208</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelReminders.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>4, 0, 4, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelReminders.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>90, 27</value>
 | 
			
		||||
    <value>133, 42</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelReminders.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>6</value>
 | 
			
		||||
@@ -637,7 +745,7 @@
 | 
			
		||||
    <value>_layoutOptions</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>_labelReminders.ZOrder" xml:space="preserve">
 | 
			
		||||
    <value>9</value>
 | 
			
		||||
    <value>11</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkReminders.AutoSize" type="System.Boolean, mscorlib">
 | 
			
		||||
    <value>True</value>
 | 
			
		||||
@@ -646,16 +754,16 @@
 | 
			
		||||
    <value>Left</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkReminders.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>102, 110</value>
 | 
			
		||||
    <value>150, 214</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkReminders.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>6, 4, 3, 3</value>
 | 
			
		||||
    <value>9, 6, 4, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkReminders.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>0, 3, 0, 3</value>
 | 
			
		||||
    <value>0, 5, 0, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkReminders.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>15, 20</value>
 | 
			
		||||
    <value>22, 31</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="checkReminders.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>7</value>
 | 
			
		||||
@@ -670,7 +778,7 @@
 | 
			
		||||
    <value>_layoutOptions</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>checkReminders.ZOrder" xml:space="preserve">
 | 
			
		||||
    <value>10</value>
 | 
			
		||||
    <value>12</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelPermissions.AutoSize" type="System.Boolean, mscorlib">
 | 
			
		||||
    <value>True</value>
 | 
			
		||||
@@ -679,13 +787,16 @@
 | 
			
		||||
    <value>Fill</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelPermissions.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>3, 133</value>
 | 
			
		||||
    <value>4, 250</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelPermissions.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>4, 0, 4, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelPermissions.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>0, 4, 0, 3</value>
 | 
			
		||||
    <value>0, 6, 0, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelPermissions.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>90, 20</value>
 | 
			
		||||
    <value>133, 31</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelPermissions.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>4</value>
 | 
			
		||||
@@ -706,16 +817,19 @@
 | 
			
		||||
    <value>_layoutOptions</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>_labelPermissions.ZOrder" xml:space="preserve">
 | 
			
		||||
    <value>11</value>
 | 
			
		||||
    <value>13</value>
 | 
			
		||||
  </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>
 | 
			
		||||
    <value>180, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelRestartRequired.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>4, 0, 4, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelRestartRequired.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>322, 27</value>
 | 
			
		||||
    <value>489, 52</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_labelRestartRequired.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>10</value>
 | 
			
		||||
@@ -739,22 +853,22 @@
 | 
			
		||||
    <value>_layoutOptions</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name=">>_labelRestartRequired.ZOrder" xml:space="preserve">
 | 
			
		||||
    <value>12</value>
 | 
			
		||||
    <value>14</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutOptions.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
 | 
			
		||||
    <value>Fill</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutOptions.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>0, 265</value>
 | 
			
		||||
    <value>0, 373</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutOptions.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>0, 0, 0, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutOptions.RowCount" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>6</value>
 | 
			
		||||
    <value>7</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutOptions.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>448, 153</value>
 | 
			
		||||
    <value>673, 281</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutOptions.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>2</value>
 | 
			
		||||
@@ -772,7 +886,7 @@
 | 
			
		||||
    <value>2</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <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="5" 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="_labelSendAsAddress" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textSendAsAddress" Row="3" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="_labelReminders" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkReminders" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="_labelPermissions" Row="5" 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,AutoSize,0" /></TableLayoutSettings></value>
 | 
			
		||||
    <value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="_labelWholeStoreReminders" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkWholeStoreReminders" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><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="6" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="_labelName" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textName" Row="2" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="_labelSendAs" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkSendAs" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="_labelSendAsAddress" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="textSendAsAddress" Row="4" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="_labelReminders" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="checkReminders" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="_labelPermissions" Row="6" 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,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings></value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
 | 
			
		||||
    <value>Fill</value>
 | 
			
		||||
@@ -780,11 +894,14 @@
 | 
			
		||||
  <data name="_layoutMain.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>0, 0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutMain.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>4, 5, 4, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutMain.RowCount" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>3</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutMain.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>448, 418</value>
 | 
			
		||||
    <value>673, 654</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layoutMain.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>0</value>
 | 
			
		||||
@@ -808,10 +925,13 @@
 | 
			
		||||
    <value>Fill</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_mainBusyHider.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>3, 3</value>
 | 
			
		||||
    <value>4, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_mainBusyHider.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>4, 5, 4, 5</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_mainBusyHider.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>448, 418</value>
 | 
			
		||||
    <value>673, 654</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_mainBusyHider.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>0</value>
 | 
			
		||||
@@ -841,13 +961,13 @@
 | 
			
		||||
    <value>Fill</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="dialogButtons.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>2, 425</value>
 | 
			
		||||
    <value>3, 666</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="dialogButtons.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>2, 1, 2, 1</value>
 | 
			
		||||
    <value>3, 2, 3, 2</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="dialogButtons.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>450, 35</value>
 | 
			
		||||
    <value>675, 42</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="dialogButtons.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>1</value>
 | 
			
		||||
@@ -868,7 +988,7 @@
 | 
			
		||||
    <value>Fill</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layout.Location" type="System.Drawing.Point, System.Drawing">
 | 
			
		||||
    <value>6, 6</value>
 | 
			
		||||
    <value>9, 9</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layout.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>0, 0, 0, 0</value>
 | 
			
		||||
@@ -877,7 +997,7 @@
 | 
			
		||||
    <value>2</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layout.Size" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>454, 461</value>
 | 
			
		||||
    <value>681, 710</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layout.TabIndex" type="System.Int32, mscorlib">
 | 
			
		||||
    <value>0</value>
 | 
			
		||||
@@ -895,22 +1015,19 @@
 | 
			
		||||
    <value>0</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="_layout.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
 | 
			
		||||
    <value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="_mainBusyHider" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="dialogButtons" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="Percent,100,AutoSize,0,Absolute,20" /></TableLayoutSettings></value>
 | 
			
		||||
    <value><?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="_mainBusyHider" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="dialogButtons" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="Percent,100,AutoSize,0,Absolute,31" /></TableLayoutSettings></value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
 | 
			
		||||
    <value>True</value>
 | 
			
		||||
  </metadata>
 | 
			
		||||
  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
 | 
			
		||||
    <value>6, 13</value>
 | 
			
		||||
    <value>9, 20</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
 | 
			
		||||
    <value>466, 473</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>2, 2, 2, 2</value>
 | 
			
		||||
    <value>699, 728</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="$this.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
 | 
			
		||||
    <value>6, 6, 6, 6</value>
 | 
			
		||||
    <value>9, 9, 9, 9</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
 | 
			
		||||
    <value>CenterParent</value>
 | 
			
		||||
 
 | 
			
		||||
@@ -98,7 +98,7 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
                UpdateReminders(shares);
 | 
			
		||||
 | 
			
		||||
                // Remove any reminders from the shares that are not wanted, they are stale
 | 
			
		||||
                OpenQuery()?.RemoveStaleReminders(
 | 
			
		||||
                ((RemindersQueryFolders) OpenQuery())?.RemoveStaleReminders(
 | 
			
		||||
                    shares
 | 
			
		||||
                        .Where(x => x.IsSynced && x.SyncType.IsAppointment() && x.FlagCalendarReminders)
 | 
			
		||||
                        .Select(x => x.SyncId)
 | 
			
		||||
@@ -126,6 +126,18 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
            return _api.GetUserFolders(store);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void UpdateSharedStore()
 | 
			
		||||
        {
 | 
			
		||||
            Logger.Instance.Debug(this, "Updating shared store: {0}", _account);
 | 
			
		||||
            RemindersQuery query = OpenQuery();
 | 
			
		||||
            if (query != null)
 | 
			
		||||
            {
 | 
			
		||||
                Logger.Instance.Debug(this, "Updating shared store reminders: {0}", query);
 | 
			
		||||
                ((RemindersQueryStore)query).SetReminders(_account.ShowReminders);
 | 
			
		||||
                query.Commit();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Reminders
 | 
			
		||||
@@ -139,7 +151,7 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
                    Logger.Instance.Debug(this, "UpdateReminders: {0}", share);
 | 
			
		||||
                    if (share.IsSynced && share.SyncType.IsAppointment())
 | 
			
		||||
                    {
 | 
			
		||||
                        OpenQuery()?.UpdateReminders(share.SyncId, share.FlagCalendarReminders);
 | 
			
		||||
                        ((RemindersQueryFolders)OpenQuery())?.UpdateReminders(share.SyncId, share.FlagCalendarReminders);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
@@ -151,7 +163,9 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
            {
 | 
			
		||||
                if (_feature.Reminders)
 | 
			
		||||
                {
 | 
			
		||||
                    RemindersQuery query = new RemindersQuery(_feature, _account.Account.Store);
 | 
			
		||||
                    RemindersQuery query = _account.IsShare 
 | 
			
		||||
                        ? (RemindersQuery)new RemindersQueryStore(_feature, _account.Account.Store)
 | 
			
		||||
                        : (RemindersQuery)new RemindersQueryFolders(_feature, _account.Account.Store);
 | 
			
		||||
                    if (query.Open())
 | 
			
		||||
                    {
 | 
			
		||||
                        _query = query;
 | 
			
		||||
 
 | 
			
		||||
@@ -66,8 +66,19 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool ShowReminders
 | 
			
		||||
        {
 | 
			
		||||
            get;
 | 
			
		||||
            set;
 | 
			
		||||
        }
 | 
			
		||||
        public bool ShowRemindersInitial
 | 
			
		||||
        {
 | 
			
		||||
            get;
 | 
			
		||||
            set;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public StoreTreeNode(SharedFoldersManager folders, GABHandler gab, GABUser user, string sendAsAddress, string text, 
 | 
			
		||||
                             Dictionary<BackendId, SharedFolder> currentFolders, bool isShared)
 | 
			
		||||
                             Dictionary<BackendId, SharedFolder> currentFolders, bool isShared, bool showRemindersWholeStore)
 | 
			
		||||
        :
 | 
			
		||||
        base(text)
 | 
			
		||||
        {
 | 
			
		||||
@@ -109,6 +120,8 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
 | 
			
		||||
            // Set up sharing
 | 
			
		||||
            WantShare = isShared;
 | 
			
		||||
            ShowRemindersInitial = showRemindersWholeStore;
 | 
			
		||||
            ShowReminders = ShowRemindersInitial;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private static void ApplyReadOnly(KTreeNode node, bool isReadOnly)
 | 
			
		||||
@@ -148,6 +161,18 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public ZPushAccount WholeStoreAccount
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                if (IsShared)
 | 
			
		||||
                {
 | 
			
		||||
                    return _account.FindSharedAccount(_user.UserName);
 | 
			
		||||
                }
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #region Share management
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
@@ -289,7 +314,7 @@ namespace Acacia.Features.SharedFolders
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return WantShare != IsShared;
 | 
			
		||||
                return WantShare != IsShared || ShowReminders != ShowRemindersInitial;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -46,6 +46,8 @@ namespace Acacia
 | 
			
		||||
        public const string REG_VAL_REPLY_FORWARD_SIGNATURE = "Reply-Forward Signature";
 | 
			
		||||
        public const string REG_VAL_CURRENT_SIGNATURE = "KOE Signature Digest";
 | 
			
		||||
 | 
			
		||||
        public const string REG_VAL_SHOW_REMINDERS = "KOE Reminders";
 | 
			
		||||
 | 
			
		||||
        public const string REG_VAL_SYNC_TIMEFRAME = "KOE SyncTimeFrame";
 | 
			
		||||
        public const string REG_VAL_SYNC_SLIDER = "EAS SyncSlider";
 | 
			
		||||
        public const string REG_VAL_NEXT_ACCOUNT_ID = "NextAccountID";
 | 
			
		||||
 
 | 
			
		||||
@@ -222,6 +222,11 @@ namespace Acacia.ZPush
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool IsShare
 | 
			
		||||
        {
 | 
			
		||||
            get { return ShareFor != null; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public string ShareUserName
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
@@ -289,6 +294,19 @@ namespace Acacia.ZPush
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool ShowReminders
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
            {
 | 
			
		||||
                return RegistryUtil.GetValueDword(Account.RegistryBaseKey, OutlookConstants.REG_VAL_SHOW_REMINDERS, 1) != 0;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            set
 | 
			
		||||
            {
 | 
			
		||||
                RegistryUtil.SetValueDword(Account.RegistryBaseKey, OutlookConstants.REG_VAL_SHOW_REMINDERS, value ? 1 : 0);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Signatures
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user