X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fbufferviewfilter.h;h=b4bcb7be455071750fb38ebd05f855214df022e7;hb=15157bd5599c558e84c7f6c837bb3fa8a815efa9;hp=18c32ad6d608af13b7c39ee23e2c3655a7b9fa53;hpb=609835c5efa606b9eb63739d50c750dba47c1668;p=quassel.git diff --git a/src/uisupport/bufferviewfilter.h b/src/uisupport/bufferviewfilter.h index 18c32ad6..b4bcb7be 100644 --- a/src/uisupport/bufferviewfilter.h +++ b/src/uisupport/bufferviewfilter.h @@ -21,9 +21,11 @@ #ifndef BUFFERVIEWFILTER_H_ #define BUFFERVIEWFILTER_H_ +#include #include #include #include +#include #include #include #include @@ -36,7 +38,7 @@ *****************************************/ class BufferViewFilter : public QSortFilterProxyModel { Q_OBJECT - + public: enum Mode { NoActive = 0x01, @@ -48,26 +50,33 @@ public: NoServers = 0x40, FullCustom = 0x80 }; - Q_DECLARE_FLAGS(Modes, Mode); + Q_DECLARE_FLAGS(Modes, Mode) BufferViewFilter(QAbstractItemModel *model, BufferViewConfig *config = 0); - + virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); QVariant data(const QModelIndex &index, int role) const; + QVariant icon(const QModelIndex &index) const; QVariant foreground(const QModelIndex &index) const; + QVariant checkedState(const QModelIndex &index) const; + + bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); + bool setCheckedState(const QModelIndex &index, Qt::CheckState state); void setConfig(BufferViewConfig *config); inline BufferViewConfig *config() const { return _config; } virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); - + + QList actions(const QModelIndex &index); + public slots: void checkPreviousCurrentForRemoval(const QModelIndex ¤t, const QModelIndex &previous); void checkItemForRemoval(const QModelIndex &index) { checkItemsForRemoval(index, index); } void checkItemsForRemoval(const QModelIndex &topLeft, const QModelIndex &bottomRight); - + protected: bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const; bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const; @@ -81,23 +90,37 @@ signals: private slots: void configInitialized(); - + void showUserStateIconsChanged(); + void enableEditMode(bool enable); + private: QPointer _config; Qt::SortOrder _sortOrder; - + QColor _FgColorInactiveActivity; QColor _FgColorNoActivity; QColor _FgColorHighlightActivity; QColor _FgColorNewMessageActivity; QColor _FgColorOtherActivity; + + QPixmap _userOfflineIcon; + QPixmap _userAwayIcon; + QPixmap _userOnlineIcon; + bool _showUserStateIcons; + + bool _editMode; + QAction _enableEditMode; + QSet _toAdd; + QSet _toTempRemove; + QSet _toRemove; + void loadColors(); bool filterAcceptBuffer(const QModelIndex &) const; bool filterAcceptNetwork(const QModelIndex &) const; void addBuffer(const BufferId &) const; }; -Q_DECLARE_OPERATORS_FOR_FLAGS(BufferViewFilter::Modes) +Q_DECLARE_OPERATORS_FOR_FLAGS(BufferViewFilter::Modes) bool bufferIdLessThan(const BufferId &, const BufferId &);