X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fnickviewfilter.cpp;h=3aaa99a2be31a07923c098e1be46ef75a6773aef;hp=959ae9c63f91c803cdce69f58d42fb85117c3df4;hb=efee441a243efb88929e1e275d71ee27991bf074;hpb=d37bdc91c5474603e1417c2cd9c40c02e1ad5ee6 diff --git a/src/uisupport/nickviewfilter.cpp b/src/uisupport/nickviewfilter.cpp index 959ae9c6..3aaa99a2 100644 --- a/src/uisupport/nickviewfilter.cpp +++ b/src/uisupport/nickviewfilter.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-09 by the Quassel Project * + * Copyright (C) 2005-2016 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,87 +15,50 @@ * 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. * ***************************************************************************/ #include "nickviewfilter.h" #include "buffersettings.h" -#include "iconloader.h" +#include "graphicalui.h" #include "networkmodel.h" +#include "uistyle.h" /****************************************************************************************** * NickViewFilter ******************************************************************************************/ NickViewFilter::NickViewFilter(const BufferId &bufferId, NetworkModel *parent) - : QSortFilterProxyModel(parent), - _bufferId(bufferId), - _userOnlineIcon(SmallIcon("im-user")), - _userAwayIcon(SmallIcon("im-user-away")), - _categoryOpIcon(SmallIcon("irc-operator")), - _categoryVoiceIcon(SmallIcon("irc-voice")), - _opIconLimit(UserCategoryItem::categoryFromModes("o")), - _voiceIconLimit(UserCategoryItem::categoryFromModes("v")) + : QSortFilterProxyModel(parent), + _bufferId(bufferId) { - setSourceModel(parent); - setDynamicSortFilter(true); - setSortCaseSensitivity(Qt::CaseInsensitive); - setSortRole(TreeModel::SortRole); - - BufferSettings bufferSettings; - _showUserStateIcons = bufferSettings.showUserStateIcons(); - bufferSettings.notify("ShowUserStateIcons", this, SLOT(showUserStateIconsChanged())); + setSourceModel(parent); + setDynamicSortFilter(true); + setSortCaseSensitivity(Qt::CaseInsensitive); + setSortRole(TreeModel::SortRole); } -bool NickViewFilter::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const { - // root node, networkindexes, the bufferindex of the buffer this filter is active for and it's childs are accepted - if(!source_parent.isValid()) - return true; - QModelIndex source_child = source_parent.child(source_row, 0); - return (sourceModel()->data(source_child, NetworkModel::BufferIdRole).value() == _bufferId); -} +bool NickViewFilter::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const +{ + // root node, networkindexes, the bufferindex of the buffer this filter is active for and it's children are accepted + if (!source_parent.isValid()) + return true; -QVariant NickViewFilter::data(const QModelIndex &index, int role) const { - switch(role) { - case Qt::DecorationRole: - return icon(index); - default: - return QSortFilterProxyModel::data(index, role); - } + QModelIndex source_child = source_parent.child(source_row, 0); + return (sourceModel()->data(source_child, NetworkModel::BufferIdRole).value() == _bufferId); } -QVariant NickViewFilter::icon(const QModelIndex &index) const { - if(!_showUserStateIcons) - return QVariant(); - - if(index.column() != 0) - return QVariant(); - QModelIndex source_index = mapToSource(index); - NetworkModel::ItemType itemType = (NetworkModel::ItemType)sourceModel()->data(source_index, NetworkModel::ItemTypeRole).toInt(); - switch(itemType) { - case NetworkModel::UserCategoryItemType: - { - int categoryId = sourceModel()->data(source_index, TreeModel::SortRole).toInt(); - if(categoryId <= _opIconLimit) - return _categoryOpIcon; - if(categoryId <= _voiceIconLimit) - return _categoryVoiceIcon; - return _userOnlineIcon; +QVariant NickViewFilter::data(const QModelIndex &index, int role) const +{ + switch (role) { + case Qt::FontRole: + case Qt::ForegroundRole: + case Qt::BackgroundRole: + case Qt::DecorationRole: + return GraphicalUi::uiStyle()->nickViewItemData(mapToSource(index), role); + default: + return QSortFilterProxyModel::data(index, role); } - case NetworkModel::IrcUserItemType: - if(sourceModel()->data(source_index, NetworkModel::ItemActiveRole).toBool()) - return _userOnlineIcon; - else - return _userAwayIcon; - break; - default: - return QVariant(); - }; -} - -void NickViewFilter::showUserStateIconsChanged() { - BufferSettings bufferSettings; - _showUserStateIcons = bufferSettings.showUserStateIcons(); }