-//! Represents the IrcUsers in a given IrcChannel.
-/** This model is a wrapper around the nicks/IrcUsers stored in an IrcChannel. It provides a tree with two,
- * levels, where the top-level items are the categories (such as Ops, Voiced etc), and the second-level items
- * the actual nicks/users. Several roles are provided to access information about a nick.
- *
- * Note that the nicks are not sorted in any way. Use a FilteredNickModel instead.
- */
-class NickModel : public QAbstractItemModel {
- Q_OBJECT
-
- public:
- enum NickModelRole { SortKeyRole = Qt::UserRole };
-
- NickModel(IrcChannel *channel = 0, QObject *parent = 0);
- virtual ~NickModel();
-
- virtual QModelIndex index(int row, int col, const QModelIndex &parent) const;
- virtual QModelIndex parent(const QModelIndex &index) const;
- virtual int rowCount(const QModelIndex &) const;
- virtual int columnCount(const QModelIndex &) const;
- virtual QVariant data(const QModelIndex &, int role) const;
- virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
-
- IrcChannel *ircChannel() const;
-
- QModelIndex indexOfUser(IrcUser *) const;
- int categoryFromModes(const QString &modes) const;
- int categoryFromIndex(const QModelIndex &index) const;
- int userCategory(IrcUser *) const;
-
- public slots:
- void setIrcChannel(IrcChannel *chan = 0);
- void addUser(IrcUser *);
- void removeUser(IrcUser *);
- void removeUser(const QModelIndex &);
- void renameUser(IrcUser *);
- void changeUserModes(IrcUser *);
-
- private:
-
- IrcChannel *_ircChannel;
- QVector<QList<IrcUser *> > users;
-
-};