Exemplo n.º 1
0
        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());
            }
        }
Exemplo n.º 2
0
        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();
                });
            }
        }
Exemplo n.º 3
0
 public void PostItem(IActivityFeedItem item)
 {
     if (!Application.Client.IsStarted)
     {
         lock (m_Queue)
             m_Queue.Enqueue(item);
     }
     else
     {
         RaiseNewItem(item);
     }
 }
Exemplo n.º 4
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();
     });
 }
Exemplo n.º 5
0
 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);
         }
     });
 }
Exemplo n.º 6
0
        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());
            }
        }
Exemplo n.º 7
0
            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);
            }
Exemplo n.º 8
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 ();
     });
 }
Exemplo n.º 9
0
 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);
         }
     });
 }
Exemplo n.º 10
0
 public abstract void DesktopNotify(ActivityFeedItemTemplate template, IActivityFeedItem item, string text);
Exemplo n.º 11
0
 public abstract void DesktopNotify(ActivityFeedItemTemplate template, IActivityFeedItem item, string text);