X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fbufferviewfilter.h;h=462c3230ce6771182ce0020ba055ed70aac46dcc;hp=2a91733e9358d8672bf37afa4d9ea7d69bb15efd;hb=c64a887d0f05222590299fb2bb8d56fa9fadb16d;hpb=d6b056e936ec441258d291b7a8af7b83f9f53016 diff --git a/src/uisupport/bufferviewfilter.h b/src/uisupport/bufferviewfilter.h index 2a91733e..462c3230 100644 --- a/src/uisupport/bufferviewfilter.h +++ b/src/uisupport/bufferviewfilter.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-07 by the Quassel IRC Team * + * Copyright (C) 2005-2012 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,62 +15,100 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef _BUFFERVIEWFILTER_H_ -#define _BUFFERVIEWFILTER_H_ +#ifndef BUFFERVIEWFILTER_H_ +#define BUFFERVIEWFILTER_H_ -#include +#include #include -#include +#include +#include #include -#include "buffer.h" -#include "buffertreemodel.h" +#include + +#include "types.h" +#include "bufferviewconfig.h" /***************************************** * Buffer View Filter *****************************************/ -class BufferViewFilter : public QSortFilterProxyModel { - Q_OBJECT - +class BufferViewFilter : public QSortFilterProxyModel +{ + Q_OBJECT + public: - enum Mode { - NoActive = 0x01, - NoInactive = 0x02, - SomeNets = 0x04, - AllNets = 0x08, - NoChannels = 0x10, - NoQueries = 0x20, - NoServers = 0x40, - FullCustom = 0x80 - }; - Q_DECLARE_FLAGS(Modes, Mode); - - BufferViewFilter(QAbstractItemModel *model, const Modes &mode, const QList &nets); - - virtual Qt::ItemFlags flags(const QModelIndex &index) const; - virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); - + enum Mode { + NoActive = 0x01, + NoInactive = 0x02, + SomeNets = 0x04, + AllNets = 0x08, + NoChannels = 0x10, + NoQueries = 0x20, + NoServers = 0x40, + FullCustom = 0x80 + }; + 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 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 removeBuffer(const QModelIndex &); - void invalidateFilter_(); - + 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 &, const QModelIndex &) const; - + bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const; + bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const; + bool bufferLessThan(const QModelIndex &source_left, const QModelIndex &source_right) const; + bool networkLessThan(const QModelIndex &source_left, const QModelIndex &source_right) const; + virtual void customEvent(QEvent *event); + +signals: + void _dataChanged(const QModelIndex &source_topLeft, const QModelIndex &source_bottomRight); + void configChanged(); + +private slots: + void configInitialized(); + void enableEditMode(bool enable); + void showServerQueriesChanged(); + private: - Modes mode; - QSet networks; - QSet buffers; + QPointer _config; + Qt::SortOrder _sortOrder; - bool filterAcceptBuffer(const QModelIndex &) const; - bool filterAcceptNetwork(const QModelIndex &) const; - void addBuffer(const uint &); + bool _showServerQueries; + bool _editMode; + QAction _enableEditMode; + QSet _toAdd; + QSet _toTempRemove; + QSet _toRemove; + bool filterAcceptBuffer(const QModelIndex &) const; + bool filterAcceptNetwork(const QModelIndex &) const; + void addBuffer(const BufferId &bufferId) const; + void addBuffers(const QList &bufferIds) const; + static bool bufferIdLessThan(const BufferId &, const BufferId &); }; -Q_DECLARE_OPERATORS_FOR_FLAGS(BufferViewFilter::Modes) -#endif +Q_DECLARE_OPERATORS_FOR_FLAGS(BufferViewFilter::Modes) + +#endif // BUFFERVIEWFILTER_H_