void RaiseNewItem(IActivityFeedItem item) { lock (m_Templates) { if (!m_Templates.ContainsKey(item.Type)) { throw new Exception("Unknown template: " + item.Type); } } var evnt = NewItem; if (evnt != null) { evnt(item); } var template = m_Templates[item.Type]; if (template.DesktopNotify) { var text = new StringBuilder(); text.Append(item.FromName); text.Append(" "); text.AppendFormat(template.SingularText, item.ActionItem); if (String.IsNullOrEmpty(item.Content)) { text.Append("."); } else { text.Append(":"); } Application.Client.DesktopNotify(template, item, text.ToString()); } }
void HandleNewItem(IActivityFeedItem item) { var service = ServiceManager.Get <ActivityFeedService>(); if (service.Templates[item.Type].ShowInMainWindow) { QApplication.Invoke(delegate { this.Layout().AddWidget(new NotificationItemWidget(item, this)); this.Show(); }); } }
public void PostItem(IActivityFeedItem item) { if (!Application.Client.IsStarted) { lock (m_Queue) m_Queue.Enqueue(item); } else { RaiseNewItem(item); } }
public override void DesktopNotify(ActivityFeedItemTemplate template, IActivityFeedItem item, string text) { // FIXME: This will need to be different on windows/osx... QApplication.Invoke(delegate { Notification notif = new Notification(text, item.Content); foreach (var action in template.Actions) { notif.AddAction(action.Name, action.Label, delegate { item.TriggerAction(action.Name); }); } notif.Show(); }); }
public void AddActivityFeedItem(IActivityFeedItem item) { QApplication.Invoke(delegate { string accountJid = (item is XmppActivityFeedItem && ((XmppActivityFeedItem)item).Account != null) ? ((XmppActivityFeedItem)item).Account.Jid.Bare : null; string fromJid = (item is XmppActivityFeedItem) ? ((XmppActivityFeedItem)item).FromJid : null; string content = Util.Linkify(item.Content); string js = Util.CreateJavascriptCall("ActivityFeed.addItem", accountJid, item.Type, item.AvatarUrl, fromJid, item.FromName, item.FromUrl, item.ActionItem, content, item.ContentUrl); var result = m_ActivityWebView.Page().MainFrame().EvaluateJavaScript(js); if (!result.IsNull()) { m_ActivityFeedItems.Add(result.ToString(), item); } }); }
public void PostItem(IActivityFeedItem item) { if (!Application.Client.IsStarted) { lock (m_Queue) m_Queue.Enqueue(item); } else { NewItem(item); } var template = m_Templates[item.Type]; if (template.DesktopNotify) { var text = new StringBuilder(); text.Append(item.FromName); text.Append(" "); text.AppendFormat(template.SingularText, item.ActionItem); if (String.IsNullOrEmpty(item.Content)) { text.Append("."); } else { text.Append(":"); } Application.Client.DesktopNotify(template, item, text.ToString()); } }
public NotificationItemWidget(IActivityFeedItem item, QWidget parent) : base(parent) { m_Item = item; item.ActionTriggered += HandleActionTriggered; QHBoxLayout layout = new QHBoxLayout(this); layout.Margin = 3; var service = ServiceManager.Get <ActivityFeedService>(); ActivityFeedItemTemplate template = service.Templates[item.Type]; var builder = new StringBuilder(); builder.AppendFormat("<span style=\"font-size: 9pt;\">"); builder.AppendFormat("<b>{0}</b>", item.FromName); builder.Append(" "); builder.AppendFormat(template.SingularText, "<b>{0}</b>".FormatWith(item.ActionItem)); if (!String.IsNullOrEmpty(item.Content)) { builder.Append(":"); builder.Append("<p style=\"margin-left: 20px; margin-top: 0px; margin-bottom: 0px;\">"); builder.Append(item.Content); builder.Append("</p>"); } else { builder.Append("."); } if (template.Actions != null && template.Actions.Length > 0) { builder.Append("<br/>"); foreach (var action in template.Actions) { builder.AppendFormat("<a style=\"color: white\" href=\"{0}\">{1}</a> ", action.Name, action.Label); } } builder.Append("</span>"); QLabel label = new QLabel(builder.ToString(), this); QObject.Connect(label, Qt.SIGNAL("linkActivated(const QString &)"), delegate(string link) { m_Item.TriggerAction(link); }); label.MinimumWidth = 1; label.WordWrap = true; layout.AddWidget(label, 1); if (item is XmppActivityFeedItem) { label.ToolTip = String.Format("From: {0}", ((XmppActivityFeedItem)item).FromJid); } QPushButton closeButton = new QPushButton(this); QObject.Connect(closeButton, Qt.SIGNAL("clicked()"), delegate { Close(); }); closeButton.icon = Gui.LoadIcon("window-close", 16); layout.AddWidget(closeButton, 0); }
public override void DesktopNotify(ActivityFeedItemTemplate template, IActivityFeedItem item, string text) { // FIXME: This will need to be different on windows/osx... QApplication.Invoke(delegate { Notification notif = new Notification(text, item.Content); foreach (var action in template.Actions) { notif.AddAction(action.Name, action.Label, delegate { item.TriggerAction(action.Name); }); } notif.Show (); }); }
public abstract void DesktopNotify(ActivityFeedItemTemplate template, IActivityFeedItem item, string text);