mirror of
https://github.com/ZuneDev/ZuneUIXTools.git
synced 2026-07-27 13:11:59 -07:00
286 lines
7.9 KiB
Plaintext
286 lines
7.9 KiB
Plaintext
<!-- Copyright (C) Microsoft Corporation. All rights reserved. -->
|
|||
|
|
<UIX
|
||
|
|
xmlns="http://schemas.microsoft.com/2007/uix"
|
||
|
|
xmlns:sys="assembly://mscorlib/System"
|
||
|
|
xmlns:iris="assembly://UIX/Microsoft.Iris"
|
||
|
|
xmlns:zune="assembly://ZuneShell/ZuneUI"
|
||
|
|
xmlns:zuneshell="assembly://ZuneShell/Microsoft.Zune.Shell"
|
||
|
|
xmlns:zuneutil="assembly://ZuneShell/Microsoft.Zune.Util"
|
||
|
|
xmlns:zuneutilapi="assembly://ZuneDBApi/Microsoft.Zune.Util"
|
||
|
|
xmlns:msg="assembly://ZuneDBApi/Microsoft.Zune.Messaging"
|
||
|
|
xmlns:styles="res://ZuneShellResources!Styles.uix"
|
||
|
|
xmlns:core="res://ZuneShellResources!Controls.uix"
|
||
|
|
xmlns:msgdata="res://ZuneShellResources!MessagingData.schema.xml"
|
||
|
|
xmlns:me="Me">
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
<UI Name="MessageDetailsProvider">
|
||
|
|
<Properties>
|
||
|
|
<zune:SelectionDetailsPanel Name="Model" SelectionDetailsPanel="$Required" />
|
||
|
|
<zune:InboxPage Name="Page" InboxPage="$Required"/>
|
||
|
|
<msgdata:UriResourceMessageDetailsQuery Name="MessageDetailsQuery" URI="{Model.SelectedItem.DetailsLink}"/>
|
||
|
|
<Boolean Name="MessageDetailsCompleted"/>
|
||
|
|
<Timer Name="MessageReadTimer" Enabled="false" AutoRepeat="false" Interval="2000"/>
|
||
|
|
</Properties>
|
||
|
|
<Scripts>
|
||
|
|
<Script>
|
||
|
|
if ([MessageDetailsCompleted] && Model.SelectedItem.Unread)
|
||
|
|
{
|
||
|
|
MessageReadTimer.Start();
|
||
|
|
}
|
||
|
|
</Script>
|
||
|
|
<Script>
|
||
|
|
[DeclareTrigger(MessageReadTimer.Tick)]
|
||
|
|
MessageReadTimer.Stop();
|
||
|
|
if (me:MarkMessageReadWorker.Details == null)
|
||
|
|
{
|
||
|
|
me:MarkMessageReadWorker.Details = Model;
|
||
|
|
}
|
||
|
|
</Script>
|
||
|
|
</Scripts>
|
||
|
|
</UI>
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
<Class Name="RemoveSelectedItemWorker" Shared="true">
|
||
|
|
<Properties>
|
||
|
|
<zune:SelectionDetailsPanel Name="Details" SelectionDetailsPanel="{null}" />
|
||
|
|
</Properties>
|
||
|
|
|
||
|
|
<Scripts>
|
||
|
|
<Script>
|
||
|
|
[DeclareTrigger(Details)]
|
||
|
|
if (Details == null)
|
||
|
|
{
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
zune:InboxEntryItem message = (zune:InboxEntryItem)Details.SelectedItem;
|
||
|
|
if (message == null)
|
||
|
|
{
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if (msg:MessagingService.Instance.MessageDelete(message.DetailsLink))
|
||
|
|
{
|
||
|
|
|
||
|
|
Details.SelectedItem = null;
|
||
|
|
|
||
|
|
|
||
|
|
if (message.Unread)
|
||
|
|
{
|
||
|
|
Details.MainPanel.UpdateShellUnreadCount(-1, true);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
zune:InboxPanel panel;
|
||
|
|
if (message.Wishlist)
|
||
|
|
{
|
||
|
|
panel = Details.MainPanel.BuyPanel;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
panel = Details.MainPanel.MessagePanel;
|
||
|
|
}
|
||
|
|
iris:ArrayListDataSet list = (iris:ArrayListDataSet)panel.Content;
|
||
|
|
if (list != null)
|
||
|
|
{
|
||
|
|
int index = list.IndexOf(message);
|
||
|
|
if (index >= 0)
|
||
|
|
{
|
||
|
|
|
||
|
|
list.RemoveAt(index);
|
||
|
|
|
||
|
|
|
||
|
|
if (index >= list.Count)
|
||
|
|
{
|
||
|
|
index = list.Count - 1;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (index < 0)
|
||
|
|
{
|
||
|
|
|
||
|
|
if (message.Wishlist)
|
||
|
|
{
|
||
|
|
panel = Details.MainPanel.MessagePanel;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
panel = Details.MainPanel.BuyPanel;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
if (!List.IsNullOrEmpty(panel.Content))
|
||
|
|
{
|
||
|
|
if (message.Wishlist)
|
||
|
|
{
|
||
|
|
|
||
|
|
index = 0;
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
|
||
|
|
index = panel.Content.Count - 1;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (index >= 0)
|
||
|
|
{
|
||
|
|
Details.MainPanel.MessageIdToSelect = ((zune:InboxEntryItem)panel.Content.get_Item(index)).Id;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
Details = null;
|
||
|
|
</Script>
|
||
|
|
</Scripts>
|
||
|
|
</Class>
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
<Class Name="MarkMessageReadWorker" Shared="true">
|
||
|
|
<Properties>
|
||
|
|
<zune:SelectionDetailsPanel Name="Details" SelectionDetailsPanel="{null}"/>
|
||
|
|
</Properties>
|
||
|
|
<Scripts>
|
||
|
|
<Script>
|
||
|
|
if ([Details] != null && Details.SelectedItem != null && Details.SelectedItem.Unread)
|
||
|
|
{
|
||
|
|
if (msg:MessagingService.Instance.MessageSetRead(Details.SelectedItem.DetailsLink))
|
||
|
|
{
|
||
|
|
Details.SelectedItem.Unread = false;
|
||
|
|
Details.MainPanel.UpdateShellUnreadCount(-1, true);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
Details = null;
|
||
|
|
</Script>
|
||
|
|
</Scripts>
|
||
|
|
</Class>
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
<UI Name="MessageDetailsHeader">
|
||
|
|
<Properties>
|
||
|
|
<zune:SelectionDetailsPanel Name="Model" SelectionDetailsPanel="$Required" />
|
||
|
|
<msgdata:UriResourceMessageDetailsQuery Name="MessageDetailsQuery" UriResourceMessageDetailsQuery="$Required" />
|
||
|
|
<String Name="TextContent" />
|
||
|
|
<Boolean Name="UseMessageTextContent" Boolean="true" />
|
||
|
|
</Properties>
|
||
|
|
|
||
|
|
<Scripts>
|
||
|
|
|
||
|
|
<Script>
|
||
|
|
if (Model.SelectedItem != null)
|
||
|
|
{
|
||
|
|
|
||
|
|
Details.Content = sys:String.Format(zune:Shell.LoadString(zune:StringId.IDS_INBOX_DETAILS_HEADER), Model.SelectedItem.From, Model.SelectedItem.Received.ToString("G"));
|
||
|
|
}
|
||
|
|
</Script>
|
||
|
|
|
||
|
|
<Script>
|
||
|
|
if([MessageDetailsQuery.Status] == iris:DataProviderQueryStatus.Complete)
|
||
|
|
{
|
||
|
|
if (UseMessageTextContent)
|
||
|
|
{
|
||
|
|
TextContent = MessageDetailsQuery.Result.TextContent;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</Script>
|
||
|
|
|
||
|
|
<Script>
|
||
|
|
if (!String.IsNullOrEmpty([TextContent]))
|
||
|
|
{
|
||
|
|
TextMessage.Content = TextContent;
|
||
|
|
TextMessage.Visible = true;
|
||
|
|
}
|
||
|
|
</Script>
|
||
|
|
|
||
|
|
</Scripts>
|
||
|
|
|
||
|
|
<Content>
|
||
|
|
<Panel Layout="VerticalFlow" Padding="15,0,0,0">
|
||
|
|
<Children>
|
||
|
|
<core:Label Name="Details" Style="{styles:SharedStyles.InboxDetailStyle}" />
|
||
|
|
<core:Label Name="TextMessage" WordWrap="true" Margins="0,10,13,13" Style="{styles:SharedStyles.InboxMessageStyle}"/>
|
||
|
|
</Children>
|
||
|
|
</Panel>
|
||
|
|
</Content>
|
||
|
|
|
||
|
|
</UI>
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
<UI Name="MessageDetailsFooter">
|
||
|
|
<Properties>
|
||
|
|
<zune:SelectionDetailsPanel Name="Model" SelectionDetailsPanel="$Required" />
|
||
|
|
<msgdata:UriResourceMessageDetailsQuery Name="MessageDetailsQuery" UriResourceMessageDetailsQuery="$Required" />
|
||
|
|
</Properties>
|
||
|
|
|
||
|
|
<Locals>
|
||
|
|
<iris:Command Name="DeleteCommand" Description="{zune:Shell.LoadString(zune:StringId.IDS_DELETEMESSAGE)}" />
|
||
|
|
<iris:Command Name="ReplyCommand" Description="{zune:Shell.LoadString(zune:StringId.IDS_REPLYMESSAGE)}" Available="false" />
|
||
|
|
</Locals>
|
||
|
|
|
||
|
|
<Scripts>
|
||
|
|
|
||
|
|
<Script>
|
||
|
|
if([MessageDetailsQuery.Status] == iris:DataProviderQueryStatus.Complete)
|
||
|
|
{
|
||
|
|
ReplyCommand.Available = !String.IsNullOrEmpty(MessageDetailsQuery.Result.ReplyLink);
|
||
|
|
}
|
||
|
|
</Script>
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
<Script>
|
||
|
|
[DeclareTrigger(DeleteCommand.Invoked)]
|
||
|
|
|
||
|
|
if (me:RemoveSelectedItemWorker.Details == null)
|
||
|
|
{
|
||
|
|
me:RemoveSelectedItemWorker.Details = Model;
|
||
|
|
}
|
||
|
|
</Script>
|
||
|
|
|
||
|
|
<Script>
|
||
|
|
[DeclareTrigger(ReplyCommand.Invoked)]
|
||
|
|
zuneshell:ZuneApplication.Service.LaunchBrowserForExternalUrl(MessageDetailsQuery.Result.ReplyLink, true);
|
||
|
|
zuneutil:SQMLog.Log(zuneutilapi:SQMDataId.InboxMessageReply, 1);
|
||
|
|
</Script>
|
||
|
|
</Scripts>
|
||
|
|
|
||
|
|
<Content>
|
||
|
|
<Panel Layout="Anchor">
|
||
|
|
<Children>
|
||
|
|
<core:BigActionButton Name="ReplyButton" Model="{ReplyCommand}">
|
||
|
|
<LayoutInput>
|
||
|
|
<AnchorLayoutInput Right="Parent,1" Top="Parent,0"/>
|
||
|
|
</LayoutInput>
|
||
|
|
</core:BigActionButton>
|
||
|
|
|
||
|
|
<core:BigActionButton Name="DeleteButton" Model="{DeleteCommand}">
|
||
|
|
<LayoutInput>
|
||
|
|
<AnchorLayoutInput Right="ReplyButton,0" Top="Parent,0"/>
|
||
|
|
</LayoutInput>
|
||
|
|
</core:BigActionButton>
|
||
|
|
</Children>
|
||
|
|
</Panel>
|
||
|
|
</Content>
|
||
|
|
</UI>
|
||
|
|
|
||
|
|
</UIX>
|