mirror of
https://github.com/Kopano-dev/kopano-ol-extension.git
synced 2023-10-10 13:37:40 +02:00
[KOE-155] Fixes to recursive setting of send-as address in shared folder dialog
This commit is contained in:
parent
08e50f9e42
commit
46ee553c49
@ -278,22 +278,7 @@ namespace Acacia.Features.SharedFolders
|
|||||||
if (folderNode != null)
|
if (folderNode != null)
|
||||||
{
|
{
|
||||||
// See if we can obtain it from a parent
|
// See if we can obtain it from a parent
|
||||||
for (KTreeNode current = folderNode.Parent; current is FolderTreeNode; current = current.Parent)
|
TryInitSendAsAddressParent(folderNode as FolderTreeNode);
|
||||||
{
|
|
||||||
FolderTreeNode parentNode = (FolderTreeNode)current;
|
|
||||||
if (parentNode.SharedFolder == null)
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (parentNode.SharedFolder.FlagSendAsOwner)
|
|
||||||
{
|
|
||||||
if (!string.IsNullOrWhiteSpace(parentNode.SharedFolder.SendAsAddress))
|
|
||||||
{
|
|
||||||
folder.SendAsAddress = parentNode.SharedFolder.SendAsAddress;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else break;
|
|
||||||
}
|
|
||||||
if (!string.IsNullOrWhiteSpace(folder.SendAsAddress))
|
if (!string.IsNullOrWhiteSpace(folder.SendAsAddress))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -787,8 +772,7 @@ namespace Acacia.Features.SharedFolders
|
|||||||
checkSendAs.ThreeState = true;
|
checkSendAs.ThreeState = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
textSendAsAddress.Text = "";
|
textSendAsAddress.Text = TryInitSendAsAddress();
|
||||||
TryInitSendAsAddress();
|
|
||||||
EnableSendAsAddress();
|
EnableSendAsAddress();
|
||||||
}
|
}
|
||||||
// Reminders shown if any node supports it
|
// Reminders shown if any node supports it
|
||||||
@ -896,13 +880,20 @@ namespace Acacia.Features.SharedFolders
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void TryInitSendAsAddress()
|
private string TryInitSendAsAddress()
|
||||||
{
|
{
|
||||||
// Initialise to the send-as address specified for an existing share, or a simple GAB lookup otherwise
|
// Initialise to the send-as address specified for an existing share, or a simple GAB lookup otherwise
|
||||||
string email =
|
string email =
|
||||||
_optionSendAsNodes[0].SharedFolder?.SendAsAddress ??
|
_optionSendAsNodes[0].SharedFolder?.SendAsAddress ??
|
||||||
_featureSendAs?.FindSendAsAddress(_account, _optionSendAsNodes[0].AvailableFolder.Store);
|
_featureSendAs?.FindSendAsAddress(_account, _optionSendAsNodes[0].AvailableFolder.Store);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(email))
|
||||||
|
{
|
||||||
|
// Try to initialise from the parent
|
||||||
|
TryInitSendAsAddressParent(_optionSendAsNodes[0]);
|
||||||
|
email = _optionSendAsNodes[0].SharedFolder?.SendAsAddress;
|
||||||
|
}
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(email))
|
if (!string.IsNullOrEmpty(email))
|
||||||
{
|
{
|
||||||
// Set the entry field
|
// Set the entry field
|
||||||
@ -923,6 +914,30 @@ namespace Acacia.Features.SharedFolders
|
|||||||
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return email;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TryInitSendAsAddressParent(FolderTreeNode node)
|
||||||
|
{
|
||||||
|
if (node == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (KTreeNode current = node.Parent; current is FolderTreeNode; current = current.Parent)
|
||||||
|
{
|
||||||
|
FolderTreeNode parentNode = (FolderTreeNode)current;
|
||||||
|
if (parentNode.SharedFolder == null)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (parentNode.SharedFolder.FlagSendAsOwner)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrWhiteSpace(parentNode.SharedFolder.SendAsAddress))
|
||||||
|
{
|
||||||
|
node.SharedFolder.SendAsAddress = parentNode.SharedFolder.SendAsAddress;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void EnableSendAsAddress()
|
private void EnableSendAsAddress()
|
||||||
@ -948,25 +963,6 @@ namespace Acacia.Features.SharedFolders
|
|||||||
if (node.SharedFolder.SendAsAddress != textSendAsAddress.Text)
|
if (node.SharedFolder.SendAsAddress != textSendAsAddress.Text)
|
||||||
{
|
{
|
||||||
node.SharedFolder = node.SharedFolder.WithSendAsAddress(textSendAsAddress.Text);
|
node.SharedFolder = node.SharedFolder.WithSendAsAddress(textSendAsAddress.Text);
|
||||||
|
|
||||||
// Try any children
|
|
||||||
ApplySendAsAddressChildren(node, textSendAsAddress.Text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ApplySendAsAddressChildren(FolderTreeNode node, string address)
|
|
||||||
{
|
|
||||||
foreach(FolderTreeNode child in node.Children)
|
|
||||||
{
|
|
||||||
if (child.SharedFolder == null || !child.SharedFolder.FlagSendAsOwner)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(child.SharedFolder.SendAsAddress))
|
|
||||||
{
|
|
||||||
child.SharedFolder = child.SharedFolder.WithSendAsAddress(address);
|
|
||||||
|
|
||||||
ApplySendAsAddressChildren(child, address);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -169,7 +169,7 @@ namespace Acacia.ZPush.API.SharedFolders
|
|||||||
private SharedFolder DoClone(SoapData newData)
|
private SharedFolder DoClone(SoapData newData)
|
||||||
{
|
{
|
||||||
SharedFolder clone = new SharedFolder(newData);
|
SharedFolder clone = new SharedFolder(newData);
|
||||||
clone.SendAsAddress = SendAsAddress;
|
clone._sendAsAddress = SendAsAddress;
|
||||||
return clone;
|
return clone;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,10 +210,15 @@ namespace Acacia.ZPush.API.SharedFolders
|
|||||||
|
|
||||||
#region Send as
|
#region Send as
|
||||||
|
|
||||||
|
private string _sendAsAddress;
|
||||||
|
|
||||||
public string SendAsAddress
|
public string SendAsAddress
|
||||||
{
|
{
|
||||||
get;
|
get { return _sendAsAddress; }
|
||||||
set;
|
set
|
||||||
|
{
|
||||||
|
this._sendAsAddress = value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public SharedFolder WithSendAsAddress(string sendAs)
|
public SharedFolder WithSendAsAddress(string sendAs)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user