cmake: Autogenerate most of the .qrc resource files
[quassel.git] / src / client / networkmodel.h
index f2342e8..a97372e 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2016 by the Quassel Project                        *
+ *   Copyright (C) 2005-2018 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -41,10 +41,25 @@ class NetworkItem : public PropertyMapItem
     Q_PROPERTY(int nickCount READ nickCount)
 
 public :
-        NetworkItem(const NetworkId &netid, AbstractTreeItem *parent = 0);
+    NetworkItem(const NetworkId &netid, AbstractTreeItem *parent = 0);
+
+    virtual QStringList propertyOrder() const;
 
     virtual QVariant data(int column, int row) const;
 
+    /**
+     * Escapes a string as HTML, ready for Qt markup.
+     *
+     * Implementation depends on Qt version - Qt4 uses Qt::escape, while Qt5 uses .toHtmlEscaped().
+     *
+     * @param[in] string               QString to escape
+     * @param[in] useNonbreakingSpaces
+     * @parblock
+     * If true, replace spaces with non-breaking spaces (i.e. ' '), otherwise only HTML escape.
+     * @endparblock
+     */
+    static QString escapeHTML(const QString &string, bool useNonbreakingSpaces = false);
+
     inline bool isActive() const { return (bool)_network ? _network->isConnected() : false; }
 
     inline const NetworkId &networkId() const { return _networkId; }
@@ -93,7 +108,9 @@ class BufferItem : public PropertyMapItem
     Q_PROPERTY(int nickCount READ nickCount)
 
 public :
-        BufferItem(const BufferInfo &bufferInfo, AbstractTreeItem *parent = 0);
+    BufferItem(const BufferInfo &bufferInfo, AbstractTreeItem *parent = 0);
+
+    virtual QStringList propertyOrder() const;
 
     inline const BufferInfo &bufferInfo() const { return _bufferInfo; }
     virtual QVariant data(int column, int role) const;
@@ -118,6 +135,8 @@ public :
     void setActivityLevel(BufferInfo::ActivityLevel level);
     void clearActivityLevel();
     void updateActivityLevel(const Message &msg);
+    void setActivity(Message::Types msg, bool highlight);
+    bool addActivity(Message::Types msg, bool highlight);
 
     inline const MsgId &firstUnreadMsgId() const { return _firstUnreadMsgId; }
 
@@ -200,6 +219,14 @@ public:
 
     void attachIrcChannel(IrcChannel *ircChannel);
 
+    /**
+     * Gets the list of channel modes for a given nick.
+     *
+     * @param[in] nick IrcUser nickname to check
+     * @returns Channel modes as a string if any, otherwise empty string
+     */
+    QString nickChannelModes(const QString &nick) const;
+
 public slots:
     void join(const QList<IrcUser *> &ircUsers);
     void part(IrcUser *ircUser);
@@ -229,7 +256,9 @@ class UserCategoryItem : public PropertyMapItem
     Q_PROPERTY(QString categoryName READ categoryName)
 
 public :
-        UserCategoryItem(int category, AbstractTreeItem *parent);
+    UserCategoryItem(int category, AbstractTreeItem *parent);
+
+    virtual QStringList propertyOrder() const;
 
     QString categoryName() const;
     inline int categoryId() const { return _category; }
@@ -257,7 +286,9 @@ class IrcUserItem : public PropertyMapItem
     Q_PROPERTY(QString nickName READ nickName)
 
 public :
-        IrcUserItem(IrcUser *ircUser, AbstractTreeItem *parent);
+    IrcUserItem(IrcUser *ircUser, AbstractTreeItem *parent);
+
+    virtual QStringList propertyOrder() const;
 
     inline QString nickName() const { return _ircUser ? _ircUser->nick() : QString(); }
     inline bool isActive() const { return _ircUser ? !_ircUser->isAway() : false; }
@@ -266,6 +297,13 @@ public :
     virtual QVariant data(int column, int role) const;
     virtual QString toolTip(int column) const;
 
+    /**
+     * Gets the list of channel modes for this nick if parented to channel.
+     *
+     * @returns Channel modes as a string if any, otherwise empty string
+     */
+    QString channelModes() const;
+
 private slots:
     inline void ircUserQuited() { parent()->removeChild(this); }
 
@@ -355,6 +393,8 @@ public slots:
     void clearBufferActivity(const BufferId &bufferId);
     void updateBufferActivity(Message &msg);
     void networkRemoved(const NetworkId &networkId);
+    void bufferActivityChanged(BufferId, Message::Types);
+    void highlightCountChanged(BufferId, int);
 
 signals:
     void requestSetLastSeenMsg(BufferId buffer, MsgId msg);