From 9ab8fc5d893c57f62a26b1dd6236590689b8247b Mon Sep 17 00:00:00 2001 From: Patrick Simpson Date: Wed, 20 Dec 2017 14:38:15 +0200 Subject: [PATCH] Revert "[KOE-155] Implemented send-as option in shared folder dialog. Not fully working, as I cannot link it back to Outlook folders. Committing for when we can fix this." This reverts commit 98e283168a73b5df0e1aa38bb223717895d4e849. --- .../Features/ReplyFlags/FeatureReplyFlags.cs | 2 +- .../Features/SendAs/FeatureSendAs.cs | 103 ++++++------------ .../SharedFolders/FeatureSharedFolders.cs | 43 +------- .../SharedFoldersDialog.Designer.cs | 38 ++----- .../SharedFolders/SharedFoldersDialog.cs | 67 +----------- .../SharedFolders/SharedFoldersDialog.resx | 89 +++------------ .../SharedFolders/SharedFoldersManager.cs | 12 -- .../Features/SharedFolders/StoreTreeNode.cs | 27 +---- .../Features/SyncState/FeatureSyncState.cs | 4 +- .../AcaciaZPushPlugin/OutlookConstants.cs | 4 +- .../AcaciaZPushPlugin/Stubs/IAccount.cs | 6 - .../AcaciaZPushPlugin/Stubs/IFolder.cs | 1 - .../Stubs/OutlookWrappers/AccountWrapper.cs | 21 +--- .../Stubs/OutlookWrappers/FolderWrapper.cs | 13 +-- .../AcaciaZPushPlugin/Utils/RegistryUtil.cs | 23 ---- .../ZPush/API/SharedFolders/SharedFolder.cs | 38 +------ .../AcaciaZPushPlugin/ZPush/ZPushAccount.cs | 16 --- .../AcaciaZPushPlugin/ZPush/ZPushTypes.cs | 18 +-- 18 files changed, 78 insertions(+), 447 deletions(-) diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/ReplyFlags/FeatureReplyFlags.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/ReplyFlags/FeatureReplyFlags.cs index 3eb84ef..c03b4fb 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/ReplyFlags/FeatureReplyFlags.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/ReplyFlags/FeatureReplyFlags.cs @@ -180,7 +180,7 @@ namespace Acacia.Features.ReplyFlags string id = (string)mail.GetProperty(OutlookConstants.PR_ZPUSH_MESSAGE_ID); using (IFolder folder = mail.Parent) { - string folderId = (string)folder.GetProperty(OutlookConstants.PR_ZPUSH_SYNC_ID); + string folderId = (string)folder.GetProperty(OutlookConstants.PR_ZPUSH_FOLDER_ID); string value = ReplyFlags.VerbToExchange(verb) + "/" + id + "/" + folderId; Logger.Instance.Trace(this, "Reply header: {0}", value); response.SetProperty(Constants.ZPUSH_REPLY_HEADER, value); diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SendAs/FeatureSendAs.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SendAs/FeatureSendAs.cs index bbfb564..d83d2cc 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SendAs/FeatureSendAs.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SendAs/FeatureSendAs.cs @@ -48,15 +48,6 @@ namespace Acacia.Features.SendAs } private static readonly BoolOption OPTION_SEND_AS_OWNER = new BoolOption("SendAsOwner", true); - [AcaciaOption("Disables GAB look ups for senders. GAB lookups are required if a username exists on different accounts, " + - "as in that case Outlook fails to determine the email address of the sender.")] - public bool GABLookup - { - get { return GetOption(OPTION_GAB_LOOKUP); } - set { SetOption(OPTION_GAB_LOOKUP, value); } - } - private static readonly BoolOption OPTION_GAB_LOOKUP = new BoolOption("GABLookup", true); - public override void Startup() { if (MailEvents != null) @@ -85,75 +76,53 @@ namespace Acacia.Features.SendAs { ZPushAccount zpush = Watcher.Accounts.GetAccount(store); Logger.Instance.Trace(this, "Checking ZPush: {0}", zpush); - if (zpush == null) - return; - - // Check if the containing folder is a shared folder - using (IFolder parent = mail.Parent) - using (IRecipient recip = FindSendAsSender(zpush, parent)) + if (zpush != null) { - if (recip == null || !recip.IsResolved) - return; - - // Set the sender - Logger.Instance.Trace(this, "Sending as: {0}", recip.Address); - using (IAddressEntry address = recip.GetAddressEntry()) + // Check if the containing folder is a shared folder + using (IFolder parent = mail.Parent) { - response.SetSender(address); + Logger.Instance.Trace(this, "Checking, Parent folder: {0}", parent.Name); + SharedFolder shared = _sharedFolders.GetSharedFolder(parent); + if (shared != null) + Logger.Instance.Trace(this, "Checking, Shared folder: {0}, flags={1}", shared, shared?.Flags); + else + Logger.Instance.Trace(this, "Not a shared folder"); + if (shared != null && shared.FlagSendAsOwner) + { + Logger.Instance.Trace(this, "Checking, Shared folder owner: {0}", shared.Store.UserName); + // It's a shared folder, use the owner as the sender if possible + using (IRecipient recip = FindSendAsSender(zpush, shared.Store)) + { + if (recip != null && recip.IsResolved) + { + Logger.Instance.Trace(this, "Sending as: {0}", recip.Address); + using (IAddressEntry address = recip.GetAddressEntry()) + { + response.SetSender(address); + } + } + else + { + Logger.Instance.Error(this, "Unable to resolve sender: {0}", shared.Store.UserName); + } + } + } } } } } - /// - /// Finds the sender to use for an email sent from the specified folder. - /// - /// The sender, or null if the default sender should be used - private IRecipient FindSendAsSender(ZPushAccount zpush, IFolder folder) + [AcaciaOption("Disables GAB look ups for senders. GAB lookups are required if a username exists on different accounts, " + + "as in that case Outlook fails to determine the email address of the sender.")] + public bool GABLookup { - // First check if the folder is shared - if (folder.SyncId.Kind != SyncKind.Shared) - return null; - - return FindSendAsSender(zpush, folder, folder.BackendId, null); + get { return GetOption(OPTION_GAB_LOOKUP); } + set { SetOption(OPTION_GAB_LOOKUP, value); } } + private static readonly BoolOption OPTION_GAB_LOOKUP = new BoolOption("GABLookup", true); - public IRecipient FindSendAsSender(ZPushAccount zpush, IFolder folder, BackendId id, GABUser user) + internal IRecipient FindSendAsSender(ZPushAccount zpush, GABUser user) { - // Check for a locally stored address - if (id != null) - { - string address = zpush.GetSendAsAddress(id); - if (address != null) - { - IRecipient resolved = ThisAddIn.Instance.ResolveRecipient(address); - if (resolved != null) - return resolved; - } - } - - return null; - - // If we don't have a user, see if we can fetch it from the shared folder state - if (user == null && folder != null) - { - Logger.Instance.Trace(this, "Checking, Parent folder: {0}", folder.Name); - SharedFolder shared = _sharedFolders.GetSharedFolder(folder); - if (shared != null) - Logger.Instance.Trace(this, "Checking, Shared folder: {0}, flags={1}", shared, shared?.Flags); - else - Logger.Instance.Trace(this, "Not a shared folder"); - - if (shared != null && shared.FlagSendAsOwner) - { - user = shared.Store; - } - } - - // If we don't have a user, there's nothing to resolve - if (user == null) - return null; - // First try a simple resolve, this will work if the username is unique IRecipient recip = ThisAddIn.Instance.ResolveRecipient(user.UserName); if (recip != null) diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/FeatureSharedFolders.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/FeatureSharedFolders.cs index 03ecf77..77ad82d 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/FeatureSharedFolders.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/FeatureSharedFolders.cs @@ -1,6 +1,5 @@  using Acacia.Features.SecondaryContacts; -using Acacia.Features.SendAs; /// Copyright 2016 Kopano b.v. /// /// This program is free software: you can redistribute it and/or modify @@ -192,7 +191,7 @@ namespace Acacia.Features.SharedFolders public static bool IsSharedFolder(IFolder folder) { - string id = (string)folder.GetProperty(OutlookConstants.PR_ZPUSH_SYNC_ID); + string id = (string)folder.GetProperty(OutlookConstants.PR_ZPUSH_FOLDER_ID); return id?.StartsWith("S") == true; } @@ -486,45 +485,5 @@ namespace Acacia.Features.SharedFolders Logger.Instance.Error(this, "Error removing shared store: {0}: {1}", share, e); } } - - #region Send-As helpers - - public string FindSendAsAddress(ZPushAccount account, AvailableFolder folder, string suggestion) - { - // Only mail folders have send-as - if (!folder.Type.IsMail()) - return null; - - // Check if we have send-as at all - FeatureSendAs sendAs = ThisAddIn.Instance.GetFeature(); - if (sendAs == null) - return null; - - using (IRecipient sender = sendAs.FindSendAsSender(account, null, folder.BackendId, folder.Store)) - { - if (sender != null && sender.IsResolved) - return sender.Address; - } - - return suggestion; - } - - public string FindSendAsAddress(ZPushAccount account, GABUser store, string suggestion) - { - // Check if we have send-as at all - FeatureSendAs sendAs = ThisAddIn.Instance.GetFeature(); - if (sendAs == null) - return null; - - using (IRecipient sender = sendAs.FindSendAsSender(account, null, null, store)) - { - if (sender != null && sender.IsResolved) - return sender.Address; - } - - return suggestion; - } - - #endregion } } diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/SharedFoldersDialog.Designer.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/SharedFoldersDialog.Designer.cs index 852ab3e..2abd27a 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/SharedFoldersDialog.Designer.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/SharedFoldersDialog.Designer.cs @@ -45,13 +45,11 @@ this.textName = new System.Windows.Forms.TextBox(); this._labelSendAs = new System.Windows.Forms.Label(); this.checkSendAs = new System.Windows.Forms.CheckBox(); - this._labelSendAsAddress = new System.Windows.Forms.Label(); - this.textSendAsAddress = new System.Windows.Forms.TextBox(); this._labelReminders = new System.Windows.Forms.Label(); this.checkReminders = new System.Windows.Forms.CheckBox(); this._labelPermissions = new System.Windows.Forms.Label(); - this._labelRestartRequired = new System.Windows.Forms.Label(); this.dialogButtons = new Acacia.Controls.KDialogButtons(); + this._labelRestartRequired = new System.Windows.Forms.Label(); this._layout.SuspendLayout(); this._mainBusyHider.SuspendLayout(); this._layoutMain.SuspendLayout(); @@ -139,16 +137,14 @@ resources.ApplyResources(this._layoutOptions, "_layoutOptions"); 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.labelPermissionsValue, 1, 4); 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._labelReminders, 0, 3); + this._layoutOptions.Controls.Add(this.checkReminders, 1, 3); + this._layoutOptions.Controls.Add(this._labelPermissions, 0, 4); this._layoutOptions.Controls.Add(this._labelRestartRequired, 2, 0); this._layoutOptions.Name = "_layoutOptions"; // @@ -196,18 +192,6 @@ this.checkSendAs.UseVisualStyleBackColor = true; this.checkSendAs.CheckedChanged += new System.EventHandler(this.checkSendAs_CheckedChanged); // - // _labelSendAsAddress - // - resources.ApplyResources(this._labelSendAsAddress, "_labelSendAsAddress"); - this._labelSendAsAddress.Name = "_labelSendAsAddress"; - // - // textSendAsAddress - // - this._layoutOptions.SetColumnSpan(this.textSendAsAddress, 2); - resources.ApplyResources(this.textSendAsAddress, "textSendAsAddress"); - this.textSendAsAddress.Name = "textSendAsAddress"; - this.textSendAsAddress.TextChanged += new System.EventHandler(this.textSendAsAddress_TextChanged); - // // _labelReminders // resources.ApplyResources(this._labelReminders, "_labelReminders"); @@ -225,11 +209,6 @@ resources.ApplyResources(this._labelPermissions, "_labelPermissions"); this._labelPermissions.Name = "_labelPermissions"; // - // _labelRestartRequired - // - resources.ApplyResources(this._labelRestartRequired, "_labelRestartRequired"); - this._labelRestartRequired.Name = "_labelRestartRequired"; - // // dialogButtons // resources.ApplyResources(this.dialogButtons, "dialogButtons"); @@ -240,6 +219,11 @@ this.dialogButtons.Name = "dialogButtons"; this.dialogButtons.Apply += new System.EventHandler(this.dialogButtons_Apply); // + // _labelRestartRequired + // + resources.ApplyResources(this._labelRestartRequired, "_labelRestartRequired"); + this._labelRestartRequired.Name = "_labelRestartRequired"; + // // SharedFoldersDialog // resources.ApplyResources(this, "$this"); @@ -286,7 +270,5 @@ private System.Windows.Forms.CheckBox checkWholeStore; private System.Windows.Forms.Label labelPermissionsValue; private System.Windows.Forms.Label _labelRestartRequired; - private System.Windows.Forms.Label _labelSendAsAddress; - private System.Windows.Forms.TextBox textSendAsAddress; } } \ No newline at end of file diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/SharedFoldersDialog.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/SharedFoldersDialog.cs index 1eb8536..a543bf3 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/SharedFoldersDialog.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/SharedFoldersDialog.cs @@ -16,7 +16,6 @@ using Acacia.Controls; using Acacia.Features.GAB; -using Acacia.Features.SendAs; using Acacia.Stubs; using Acacia.UI; using Acacia.UI.Outlook; @@ -413,8 +412,7 @@ namespace Acacia.Features.SharedFolders // Add the node node = new StoreTreeNode(_folders, gabLookup.GAB, - user, _feature.FindSendAsAddress(_account, user, null), - user.DisplayName, currentShares ?? new Dictionary(), + user, user.DisplayName, currentShares ?? new Dictionary(), wholeStore); node.DirtyChanged += UserSharesChanged; node.CheckStateChanged += WholeStoreShareChanged; @@ -501,7 +499,6 @@ namespace Acacia.Features.SharedFolders set { _labelSendAs.Visible = checkSendAs.Visible = value != null; - _labelSendAsAddress.Visible = textSendAsAddress.Visible = _labelSendAs.Visible; if (value != null) checkSendAs.CheckState = value.Value; } @@ -722,9 +719,6 @@ namespace Acacia.Features.SharedFolders OptionSendAs = CheckState.Indeterminate; checkSendAs.ThreeState = true; } - - TryInitSendAsAddress(); - EnableSendAsAddress(); } // Reminders shown if any node supports it if (_optionRemindersNodes.Count > 0) @@ -797,9 +791,6 @@ namespace Acacia.Features.SharedFolders private void checkSendAs_CheckedChanged(object sender, EventArgs e) { - // Hide the address unless it makes sense - EnableSendAsAddress(); - for (int i = 0; i < _optionSendAsNodes.Count; ++i) { FolderTreeNode node = _optionSendAsNodes[i]; @@ -814,70 +805,16 @@ namespace Acacia.Features.SharedFolders if (node.SharedFolder.FlagSendAsOwner != sendAs) { node.SharedFolder = node.SharedFolder.WithFlagSendAsOwner(sendAs); - if (sendAs) - { - TryInitSendAsAddress(); - } // Send-as is applied recursively foreach (FolderTreeNode desc in node.Descendants()) { - if (desc.SharedFolder != null) - { - desc.SharedFolder = desc.SharedFolder.WithFlagSendAsOwner(sendAs); - } + desc.SharedFolder = desc.SharedFolder.WithFlagSendAsOwner(sendAs); } } } } - private void TryInitSendAsAddress() - { - string email = _feature.FindSendAsAddress(_account, _optionSendAsNodes[0].AvailableFolder, null); - - if (email != null) - { - textSendAsAddress.Text = email; - if (!string.IsNullOrEmpty(email) && _optionSendAsNodes[0].IsShared) - { - _optionSendAsNodes[0].SharedFolder.SendAsAddress = email; - } - } - else if (checkSendAs.Checked) - { - MessageBox.Show("Unable to determine the email address for the folder. " + - "Send-as will only work if you specify the email address manually.", - "Shared Folders", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - } - - private void EnableSendAsAddress() - { - // Hide unless there's only one selected, and send as is enabled - if (_optionSendAsNodes.Count == 1) - { - _labelSendAsAddress.Visible = textSendAsAddress.Visible = true; - _labelSendAsAddress.Enabled = textSendAsAddress.Enabled = OptionSendAs == CheckState.Checked; - } - else - { - _labelSendAsAddress.Visible = textSendAsAddress.Visible = false; - } - } - - private void textSendAsAddress_TextChanged(object sender, EventArgs e) - { - for (int i = 0; i < _optionSendAsNodes.Count; ++i) - { - FolderTreeNode node = _optionSendAsNodes[i]; - - if (node.SharedFolder.SendAsAddress != textSendAsAddress.Text) - { - node.SharedFolder = node.SharedFolder.WithSendAsAddress(textSendAsAddress.Text); - } - } - } - private void checkReminders_CheckedChanged(object sender, EventArgs e) { for (int i = 0; i < _optionRemindersNodes.Count; ++i) diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/SharedFoldersDialog.resx b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/SharedFoldersDialog.resx index e546473..e7b1ae9 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/SharedFoldersDialog.resx +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/SharedFoldersDialog.resx @@ -283,7 +283,7 @@ 3, 38 - 442, 224 + 442, 250 1 @@ -394,7 +394,7 @@ NoControl - 99, 133 + 99, 107 346, 20 @@ -543,69 +543,6 @@ 6 - - True - - - Fill - - - NoControl - - - 3, 80 - - - 90, 26 - - - 11 - - - Send-as address - - - MiddleLeft - - - _labelSendAsAddress - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - _layoutOptions - - - 7 - - - Fill - - - 102, 83 - - - 6, 3, 3, 3 - - - 343, 20 - - - 12 - - - textSendAsAddress - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - _layoutOptions - - - 8 - True @@ -613,7 +550,7 @@ Fill - 3, 106 + 3, 80 90, 27 @@ -637,7 +574,7 @@ _layoutOptions - 9 + 7 True @@ -646,7 +583,7 @@ Left - 102, 110 + 102, 84 6, 4, 3, 3 @@ -670,7 +607,7 @@ _layoutOptions - 10 + 8 True @@ -679,7 +616,7 @@ Fill - 3, 133 + 3, 107 0, 4, 0, 3 @@ -706,7 +643,7 @@ _layoutOptions - 11 + 9 Fill @@ -739,22 +676,22 @@ _layoutOptions - 12 + 10 Fill - 0, 265 + 0, 291 0, 0, 0, 0 - 6 + 5 - 448, 153 + 448, 127 2 @@ -772,7 +709,7 @@ 2 - <?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> + <?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> Fill diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/SharedFoldersManager.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/SharedFoldersManager.cs index b8dc023..e69644d 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/SharedFoldersManager.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/SharedFoldersManager.cs @@ -47,7 +47,6 @@ namespace Acacia.Features.SharedFolders } public FeatureSharedFolders Feature { get { return _feature; } } - public ZPushAccount Account { get { return _account; } } #region API @@ -58,17 +57,6 @@ namespace Acacia.Features.SharedFolders { // Make sure reminders are updated as soon as possible UpdateReminders(shares); - - // Store the send-as addresses - foreach (SharedFolder share in shares) - { - if (share.CanSendAs) - { - _account.SetSendAsAddress(share.BackendId, share.FlagSendAsOwner ? share.SendAsAddress : null); - } - } - - // Update the shares _api.SetCurrentShares(store, shares, cancel); // Commit changes diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/StoreTreeNode.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/StoreTreeNode.cs index 05db83b..66db784 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/StoreTreeNode.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SharedFolders/StoreTreeNode.cs @@ -43,10 +43,8 @@ namespace Acacia.Features.SharedFolders private readonly Dictionary _currentShares; private readonly FeatureSharedFolders _feature; - private readonly ZPushAccount _account; private readonly GABHandler _gab; private readonly GABUser _user; - private readonly string _sendAsAddress; public readonly bool IsReadOnly; @@ -63,21 +61,15 @@ namespace Acacia.Features.SharedFolders } } - public StoreTreeNode(SharedFoldersManager folders, GABHandler gab, GABUser user, string sendAsAddress, string text, + public StoreTreeNode(SharedFoldersManager folders, GABHandler gab, GABUser user, string text, Dictionary currentFolders, bool isShared) : base(text) { this._initialShares = currentFolders; - // Patch in send as address - foreach (SharedFolder share in _initialShares.Values) - if (share.SendAsAddress == null) - share.SendAsAddress = sendAsAddress; this._feature = folders.Feature; - this._account = folders.Account; this._gab = gab; this._user = user; - this._sendAsAddress = sendAsAddress; this.IsReadOnly = false; this._isShared = isShared; @@ -163,17 +155,10 @@ namespace Acacia.Features.SharedFolders private SharedFolder CreateDefaultShare(AvailableFolder folder) { SharedFolder share = new SharedFolder(folder, DefaultNameForFolder(folder)); - - // Default send as for mail folders if the address can be determined - string sendAs = _feature.FindSendAsAddress(_account, folder, _sendAsAddress); - if (sendAs != null) - { - share = share.WithFlagSendAsOwner(true).WithSendAsAddress(sendAs); - } - else - { - share = share.WithFlagSendAsOwner(false).WithSendAsAddress(null); - } + + // Default send as for mail folders + if (folder.Type.IsMail()) + share = share.WithFlagSendAsOwner(true); return share; } @@ -233,8 +218,6 @@ namespace Acacia.Features.SharedFolders if (state.FlagUpdateShareName) state = state.WithName(DefaultNameForFolder(folder)); } - - state = state.WithSendAsAddress(_sendAsAddress); return state; } return null; diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/FeatureSyncState.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/FeatureSyncState.cs index 669b217..1c0921b 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/FeatureSyncState.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/SyncState/FeatureSyncState.cs @@ -501,7 +501,7 @@ namespace Acacia.Features.SyncState // Check the inbox folder using (IFolder inbox = account.Account.Store.GetDefaultFolder(DefaultFolder.Inbox)) { - string syncId = (string)inbox.GetProperty(OutlookConstants.PR_ZPUSH_BACKEND_ID); + string syncId = (string)inbox.GetProperty(OutlookConstants.PR_ZPUSH_SYNC_ID); // If it's syncing, it's not stalled if (syncId != null && syncId != "0") @@ -515,7 +515,7 @@ namespace Acacia.Features.SyncState _syncStallLastSyncTime = sync.LastSyncTime; // Get the sync state - string folderId = (string)inbox.GetProperty(OutlookConstants.PR_ZPUSH_SYNC_ID); + string folderId = (string)inbox.GetProperty(OutlookConstants.PR_ZPUSH_FOLDER_ID); if (folderId != null) { diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/OutlookConstants.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/OutlookConstants.cs index a1e7d7a..480cb8a 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/OutlookConstants.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/OutlookConstants.cs @@ -139,8 +139,8 @@ namespace Acacia #region EAS / ZPush - public const string PR_ZPUSH_BACKEND_ID = PROP + "6A18" + PT_STRING8; - public const string PR_ZPUSH_SYNC_ID = PROP + "6A19" + PT_STRING8; + public const string PR_ZPUSH_SYNC_ID = PROP + "6A18" + PT_STRING8; + public const string PR_ZPUSH_FOLDER_ID = PROP + "6A19" + PT_STRING8; public const string PR_ZPUSH_MESSAGE_ID = PROP + "6B20" + PT_STRING8; public const string PR_ZPUSH_NAME = PROP + "6915" + PT_UNICODE; diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Stubs/IAccount.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Stubs/IAccount.cs index 397a07c..dd29666 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Stubs/IAccount.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Stubs/IAccount.cs @@ -74,11 +74,5 @@ namespace Acacia.Stubs } string ShareFor {get;} - - string this[string index] - { - get; - set; - } } } diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Stubs/IFolder.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Stubs/IFolder.cs index 1289aea..5249477 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Stubs/IFolder.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Stubs/IFolder.cs @@ -102,7 +102,6 @@ namespace Acacia.Stubs ItemType ItemType { get; } - BackendId BackendId { get; } SyncId SyncId { get; } /// diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Stubs/OutlookWrappers/AccountWrapper.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Stubs/OutlookWrappers/AccountWrapper.cs index f5366a3..36ef412 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Stubs/OutlookWrappers/AccountWrapper.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Stubs/OutlookWrappers/AccountWrapper.cs @@ -158,10 +158,7 @@ namespace Acacia.Stubs.OutlookWrappers { get { - string devId = RegistryUtil.GetValueString(_regPath, OutlookConstants.REG_VAL_EAS_DEVICEID, null); - if (devId == null) - devId = RegistryUtil.GetValueString(_regPath, OutlookConstants.REG_VAL_EAS_DEVICEID, null); - return devId; + return RegistryUtil.GetValueString(_regPath, OutlookConstants.REG_VAL_EAS_DEVICEID, null); } } @@ -295,22 +292,6 @@ namespace Acacia.Stubs.OutlookWrappers } } - public string this[string index] - { - get - { - return RegistryUtil.GetValueString(_regPath, index, null); - } - - set - { - if (value == null) - RegistryUtil.RemoveValue(_regPath, index); - else - RegistryUtil.SetValueString(_regPath, index, value); - } - } - #endregion } } diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Stubs/OutlookWrappers/FolderWrapper.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Stubs/OutlookWrappers/FolderWrapper.cs index 9e3984d..e152ffd 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Stubs/OutlookWrappers/FolderWrapper.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Stubs/OutlookWrappers/FolderWrapper.cs @@ -119,17 +119,8 @@ namespace Acacia.Stubs.OutlookWrappers { get { - string syncId = (string)GetProperty(OutlookConstants.PR_ZPUSH_SYNC_ID); - return syncId == null ? null : new SyncId(syncId); - } - } - - public BackendId BackendId - { - get - { - string backendId = (string)GetProperty(OutlookConstants.PR_ZPUSH_BACKEND_ID); - return backendId == null ? null : new BackendId(backendId); + string folderId = (string)GetProperty(OutlookConstants.PR_ZPUSH_FOLDER_ID); + return folderId == null ? null : new SyncId(folderId); } } diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Utils/RegistryUtil.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Utils/RegistryUtil.cs index a8ebd9a..4eb4aa2 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Utils/RegistryUtil.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Utils/RegistryUtil.cs @@ -45,29 +45,6 @@ namespace Acacia.Utils Registry.SetValue(keyPath, valueName, value); } - public static void RemoveValue(string keyPath, string valueName) - { - using (RegistryKey key = KeyFromPath(keyPath, true)) - { - if (key != null) - { - key.DeleteValue(valueName, false); - } - } - } - - private static RegistryKey KeyFromPath(string keyPath, bool writeable) - { - foreach (RegistryKey baseKey in new RegistryKey[] {Registry.CurrentUser, Registry.LocalMachine }) - { - if (keyPath.StartsWith(baseKey.Name)) - { - return baseKey.OpenSubKey(keyPath.Substring(baseKey.Name.Length + 1), writeable); - } - } - return null; - } - public static string RegToString(object o) { if (o is byte[]) diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/ZPush/API/SharedFolders/SharedFolder.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/ZPush/API/SharedFolders/SharedFolder.cs index d8fab76..c7fa0ca 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/ZPush/API/SharedFolders/SharedFolder.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/ZPush/API/SharedFolders/SharedFolder.cs @@ -163,14 +163,7 @@ namespace Acacia.ZPush.API.SharedFolders { SoapData newData = _data; newData.flags = flags; - SharedFolder clone = new SharedFolder(newData); - clone.SendAsAddress = SendAsAddress; - return clone; - } - - public bool CanSendAs - { - get { return SyncType.IsMail(); } + return new SharedFolder(newData); } public bool FlagSendAsOwner { get { return Flags.HasFlag(ShareFlags.SendAsOwner); } } @@ -203,23 +196,6 @@ namespace Acacia.ZPush.API.SharedFolders #endregion - #region Send as - - public string SendAsAddress - { - get; - set; - } - - public SharedFolder WithSendAsAddress(string sendAs) - { - SharedFolder clone = new SharedFolder(_data); - clone.SendAsAddress = sendAs; - return clone; - } - - #endregion - #region Standard overrides public override int GetHashCode() @@ -229,17 +205,7 @@ namespace Acacia.ZPush.API.SharedFolders override public bool Equals(object o) { - SharedFolder rhs = o as SharedFolder; - if (rhs == null) - return false; - - if (!_data.Equals(rhs._data)) - return false; - - if (!FlagSendAsOwner) - return true; - - return Object.Equals(SendAsAddress, rhs.SendAsAddress); + return o is SharedFolder && _data.Equals(((SharedFolder)o)._data); } public override string ToString() diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/ZPush/ZPushAccount.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/ZPush/ZPushAccount.cs index bcdcb58..4395ffc 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/ZPush/ZPushAccount.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/ZPush/ZPushAccount.cs @@ -284,21 +284,5 @@ namespace Acacia.ZPush } #endregion - - #region Send as - - private const string PREFIX_SEND_AS = "KOE SendAs "; - - public void SetSendAsAddress(BackendId id, string sendAsAddress) - { - _account[PREFIX_SEND_AS + id.ToString()] = sendAsAddress; - } - - public string GetSendAsAddress(BackendId id) - { - return _account[PREFIX_SEND_AS + id.ToString()]; - } - - #endregion } } diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/ZPush/ZPushTypes.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/ZPush/ZPushTypes.cs index 18347a1..a5bd0ad 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/ZPush/ZPushTypes.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/ZPush/ZPushTypes.cs @@ -118,23 +118,7 @@ namespace Acacia.ZPush { public static readonly BackendId NONE = new BackendId("0"); - public BackendId(string id) - : - base(StripSuffix(id)) - { - } - - private static string StripSuffix(string id) - { - // The backend id is of the format {id}num?. Strip off num if present - int index = id.IndexOf('}'); - if (index >= 0 && index < id.Length) - { - id = id.Substring(0, index + 1); - } - return id; - } - + public BackendId(string id) : base(id) { } public BackendId(int id) : base(id) { } public BackendId(long id) : base(id.ToString()) { }