static void UpdateSound(IXmlDocument content, IPredefinedToastNotificationInfo info) { if (info.Sound != PredefinedSound.Notification_Default) { SetSound(content, info.Sound); } }
internal static IXmlDocument GetDocument(IToastNotificationManager manager, IPredefinedToastNotificationInfo info) { var content = manager.GetTemplateContent(info.ToastTemplateType); for (uint i = 0; i < info.Lines.Length; i++) { SetTextLine(content, i, info.Lines[i]); } if (!string.IsNullOrEmpty(info.ImagePath)) { SetImageSrc(content, new System.Uri(info.ImagePath).AbsoluteUri); } NotificationDuration actualDuration = info.Duration; if (info.Sound != PredefinedSound.Notification_Default) { SetSound(content, info.Sound); if (IsLoopingSound(info.Sound)) { actualDuration = NotificationDuration.Long; } } if (actualDuration != NotificationDuration.Default) { SetDuration(content, actualDuration); } return(content); }
internal static string GetXml(IPredefinedToastNotificationInfo info) { string xml; ((Window.Data.Xml.Dom.IXmlNodeSerializer)GetDocument(info)).GetXml(out xml); return(xml); }
static void UpdateTemplate(IXmlDocument xmldoc, IPredefinedToastNotificationInfo info) { if (info.ToastTemplateType != ToastTemplateType.ToastGeneric) { return; } SetAttribute(xmldoc, "binding", "template", "ToastGeneric"); }
IToastNotification IToastNotificationAdapter.Create(IPredefinedToastNotificationInfo info) { var content = ToastNotificationManager.GetDocument(manager, info); if(factory == null) factory = ComFunctions.RoGetActivationFactory<IToastNotificationFactory>(); IToastNotification result; ComFunctions.CheckHRESULT(factory.CreateToastNotification(content, out result)); return result; }
static ToastTemplateType GetToastTemplateType(IPredefinedToastNotificationInfo info) { if (info.ToastTemplateType != ToastTemplateType.ToastGeneric) { return(info.ToastTemplateType); } return(ToastTemplateType.ToastText04); }
static void UpdateText(IXmlDocument xmldoc, IPredefinedToastNotificationInfo info) { IXmlNodeList nodes = GetNodes(xmldoc, "text"); Debug.Assert(nodes.Length >= info.Lines.Length); for (uint i = 0; i < info.Lines.Length; i++) { SetNodeValueString(info.Lines[i] ?? string.Empty, xmldoc, GetNode(nodes, i)); } }
static void UpdateHeroImage(IPredefinedToastNotificationInfo info, IXmlDocument content) { IPredefinedToastNotificationInfoGeneric infoGeneric = info as IPredefinedToastNotificationInfoGeneric; if (!string.IsNullOrEmpty(infoGeneric.HeroImagePath) && info.ToastTemplateType == ToastTemplateType.ToastGeneric) { string heroImagePath = new System.Uri(infoGeneric.HeroImagePath).AbsoluteUri; IXmlNode heroImageNode = CreateInlineImageNode(content, heroImagePath); SetAttribute(heroImageNode, "placement", "hero"); } }
IToastNotification IToastNotificationAdapter.Create(IPredefinedToastNotificationInfo info) { var content = ToastNotificationManager.GetDocument(manager, info); if (factory == null) { factory = ComFunctions.RoGetActivationFactory <IToastNotificationFactory>(); } IToastNotification result; ComFunctions.CheckHRESULT(factory.CreateToastNotification(content, out result)); return(result); }
static void UpdateDuration(IXmlDocument xmldoc, IPredefinedToastNotificationInfo info) { NotificationDuration duration = info.Duration; if (IsLoopingSound(info.Sound)) { duration = NotificationDuration.Long; } if (duration != NotificationDuration.Default) { SetAttribute(xmldoc, "toast", "duration", "long"); } }
static void UpdateDisplayTimestamp(IXmlDocument xmldoc, IPredefinedToastNotificationInfo info) { IPredefinedToastNotificationInfoGeneric infoGeneric = info as IPredefinedToastNotificationInfoGeneric; if (infoGeneric.DisplayTimestamp == null) { return; } IXmlNode toastNode = GetNode(xmldoc, "toast"); string displayTimestamp = infoGeneric.DisplayTimestamp.Value.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:ssZ"); SetAttribute(toastNode, "displayTimestamp", displayTimestamp); }
static void UpdateAttributionText(IXmlDocument xmldoc, IPredefinedToastNotificationInfo info) { IPredefinedToastNotificationInfoGeneric infoGeneric = info as IPredefinedToastNotificationInfoGeneric; if (string.IsNullOrWhiteSpace(infoGeneric.AttributionText)) { return; } IXmlElement attributionTextElement = CreateElement(xmldoc, "text"); IXmlNode bindingNode = GetNode(xmldoc, "binding"); IXmlNode appendedChild = AppendNode(bindingNode, (IXmlNode)attributionTextElement); SetAttribute(appendedChild, "placement", "attribution"); SetNodeValueString(infoGeneric.AttributionText, xmldoc, appendedChild); }
static void UpdateAppLogoImage(IPredefinedToastNotificationInfo info, IXmlDocument content) { IPredefinedToastNotificationInfoGeneric infoGeneric = info as IPredefinedToastNotificationInfoGeneric; if (!string.IsNullOrEmpty(infoGeneric.AppLogoImagePath) && info.ToastTemplateType == ToastTemplateType.ToastGeneric) { string appLogoImagePath = new System.Uri(infoGeneric.AppLogoImagePath).AbsoluteUri; IXmlNode appLogoImageNode = CreateInlineImageNode(content, appLogoImagePath); SetAttribute(appLogoImageNode, "placement", "appLogoOverride"); if (infoGeneric.AppLogoImageCrop == ImageCropType.Circle) { SetAttribute(appLogoImageNode, "hint-crop", "circle"); } } }
static void UpdateInlineImage(IPredefinedToastNotificationInfo info, IXmlDocument content) { if (!string.IsNullOrEmpty(info.ImagePath)) { string imagePath = new System.Uri(info.ImagePath).AbsoluteUri; if (info.ToastTemplateType == ToastTemplateType.ToastGeneric) { CreateInlineImageNode(content, imagePath); } else { SetImageSrc(content, imagePath); } } }
static void UpdateContent(IXmlDocument xmldoc, IPredefinedToastNotificationInfo info) { string xml = ToastNotificationManager.GetXml((IXmlNodeSerializer)xmldoc); System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); doc.LoadXml(xml); IPredefinedToastNotificationInfoGeneric infoGeneric = info as IPredefinedToastNotificationInfoGeneric; if (infoGeneric.UpdateToastContent != null) { infoGeneric.UpdateToastContent.Invoke(doc); } infoGeneric.UpdateToastContent = null; ToastNotificationManager.LoadXml((IXmlDocumentIO)xmldoc, doc.OuterXml); }
internal static IXmlDocument GetDocument(IToastNotificationManager manager, IPredefinedToastNotificationInfo info) { var content = manager.GetTemplateContent(GetToastTemplateType(info)); if (ToastNotificationManager.IsGenericTemplateSupported) { UpdateTemplate(content, info); UpdateAttributionText(content, info); UpdateDisplayTimestamp(content, info); UpdateAppLogoImage(info, content); UpdateHeroImage(info, content); } UpdateText(content, info); UpdateInlineImage(info, content); UpdateSound(content, info); UpdateDuration(content, info); UpdateContent(content, info); return(content); }
internal static Window.Data.Xml.Dom.IXmlDocument GetDocument(IToastNotificationManager manager, IPredefinedToastNotificationInfo info) { return(WinRTToastNotificationContent.GetDocument(manager, info)); }
internal static Window.Data.Xml.Dom.IXmlDocument GetDocument(IPredefinedToastNotificationInfo info) { return(GetDocument(GetDefaultManager(), info)); }
IToastNotification IToastNotificationAdapter.Create(IPredefinedToastNotificationInfo info) { return(null); }
internal static Window.Data.Xml.Dom.IXmlDocument GetDocument(IPredefinedToastNotificationInfo info) { return GetDocument(GetDefaultManager(), info); }
internal static Window.Data.Xml.Dom.IXmlDocument GetDocument(IToastNotificationManager manager, IPredefinedToastNotificationInfo info) { return WinRTToastNotificationContent.GetDocument(manager, info); }
internal static string GetXml(IPredefinedToastNotificationInfo info) { string xml; ((Window.Data.Xml.Dom.IXmlNodeSerializer)GetDocument(info)).GetXml(out xml); return xml; }
internal static IXmlDocument GetDocument(IToastNotificationManager manager, IPredefinedToastNotificationInfo info) { var content = manager.GetTemplateContent(info.ToastTemplateType); for(uint i = 0; i < info.Lines.Length; i++) { SetTextLine(content, i, info.Lines[i]); } if(!string.IsNullOrEmpty(info.ImagePath)) { SetImageSrc(content, "file:///" + info.ImagePath); } NotificationDuration actualDuration = info.Duration; if(info.Sound != PredefinedSound.Notification_Default) { SetSound(content, info.Sound); if(IsLoopingSound(info.Sound)) { actualDuration = NotificationDuration.Long; } } if(actualDuration != NotificationDuration.Default) { SetDuration(content, actualDuration); } return content; }
IToastNotification IToastNotificationAdapter.Create(IPredefinedToastNotificationInfo info) { return null; }