/usr/include/KTp/Models/contacts-filter-model.h is in libktpcommoninternalsprivate-dev 0.8.1-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 | /*
* Provide some filters on the account model
*
* Copyright (C) 2011,2012 David Edmundson <kde@davidedmundson.co.uk>
* Copyright (C) 2012 Daniele E. Domenichelli <daniele.domenichelli@gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef CONTACTSFILTERMODEL_H
#define CONTACTSFILTERMODEL_H
#include <QSortFilterProxyModel>
#include <KTp/types.h>
#include <KTp/ktp-export.h>
namespace KTp
{
/**
* \brief Class used to sort and filter the contacts.
*/
class KTP_EXPORT ContactsFilterModel : public QSortFilterProxyModel
{
Q_OBJECT
Q_DISABLE_COPY(ContactsFilterModel)
Q_ENUMS(PresenceFilterFlag
CapabilityFilterFlag
SubscriptionStateFilterFlag)
Q_FLAGS(PresenceTypeFilterFlags
CapabilityFilterFlags
SubscriptionStateFilterFlags)
Q_PROPERTY(PresenceTypeFilterFlags presenceTypeFilterFlags
READ presenceTypeFilterFlags
RESET clearPresenceTypeFilterFlags
WRITE setPresenceTypeFilterFlags
NOTIFY presenceTypeFilterFlagsChanged)
Q_PROPERTY(CapabilityFilterFlags capabilityFilterFlags
READ capabilityFilterFlags
RESET clearCapabilityFilterFlags
WRITE setCapabilityFilterFlags
NOTIFY capabilityFilterFlagsChanged)
// FIXME This resumes Subscription state, Publish state and blocking state, perhaps we should find a better name
Q_PROPERTY(SubscriptionStateFilterFlags subscriptionStateFilterFlags
READ subscriptionStateFilterFlags
RESET clearSubscriptionStateFilterFlags
WRITE setSubscriptionStateFilterFlags
NOTIFY subscriptionStateFilterFlagsChanged)
// Filters on all fields
Q_PROPERTY(QString globalFilterString
READ globalFilterString
RESET clearGlobalFilterString
WRITE setGlobalFilterString
NOTIFY globalFilterStringChanged)
Q_PROPERTY(Qt::MatchFlags globalFilterMatchFlags
READ globalFilterMatchFlags
RESET resetGlobalFilterMatchFlags
WRITE setGlobalFilterMatchFlags
NOTIFY globalFilterMatchFlagsChanged)
Q_PROPERTY(QString displayNameFilterString
READ displayNameFilterString
RESET clearDisplayNameFilterString
WRITE setDisplayNameFilterString
NOTIFY displayNameFilterStringChanged)
Q_PROPERTY(QString nicknameFilterString
READ nicknameFilterString
RESET clearNicknameFilterString
WRITE setNicknameFilterString
NOTIFY nicknameFilterStringChanged)
Q_PROPERTY(QString aliasFilterString
READ aliasFilterString
RESET clearAliasFilterString
WRITE setAliasFilterString
NOTIFY aliasFilterStringChanged)
Q_PROPERTY(QString groupsFilterString
READ groupsFilterString
RESET clearGroupsFilterString
WRITE setGroupsFilterString
NOTIFY groupsFilterStringChanged)
Q_PROPERTY(QString idFilterString
READ idFilterString
RESET clearIdFilterString
WRITE setIdFilterString
NOTIFY idFilterStringChanged)
Q_PROPERTY(QStringList tubesFilterStrings
READ tubesFilterStrings
RESET clearTubesFilterStrings
WRITE setTubesFilterStrings
NOTIFY tubesFilterStringsChanged)
Q_PROPERTY(Qt::MatchFlags displayNameFilterMatchFlags
READ displayNameFilterMatchFlags
RESET resetDisplayNameFilterMatchFlags
WRITE setDisplayNameFilterMatchFlags
NOTIFY displayNameFilterMatchFlagsChanged)
Q_PROPERTY(Qt::MatchFlags nicknameFilterMatchFlags
READ nicknameFilterMatchFlags
RESET resetNicknameFilterMatchFlags
WRITE setNicknameFilterMatchFlags
NOTIFY nicknameFilterMatchFlagsChanged)
Q_PROPERTY(Qt::MatchFlags aliasFilterMatchFlags
READ aliasFilterMatchFlags
RESET resetAliasFilterMatchFlags
WRITE setAliasFilterMatchFlags
NOTIFY aliasFilterMatchFlagsChanged)
Q_PROPERTY(Qt::MatchFlags groupsFilterMatchFlags
READ groupsFilterMatchFlags
RESET resetGroupsFilterMatchFlags
WRITE setGroupsFilterMatchFlags
NOTIFY groupsFilterMatchFlagsChanged)
Q_PROPERTY(Qt::MatchFlags idFilterMatchFlags
READ idFilterMatchFlags
RESET resetIdFilterMatchFlags
WRITE setIdFilterMatchFlags
NOTIFY idFilterMatchFlagsChanged)
Q_PROPERTY(Tp::AccountPtr accountFilter
READ accountFilter
RESET clearAccountFilter
WRITE setAccountFilter
NOTIFY accountFilterChanged)
Q_PROPERTY(QString sortRoleString
READ sortRoleString
WRITE setSortRoleString)
public:
enum PresenceTypeFilterFlag {
DoNotFilterByPresence = 0x0000,
HidePresenceTypeUnset = 0x0001,
HidePresenceTypeOffline = 0x0002,
HidePresenceTypeAvailable = 0x0004,
HidePresenceTypeAway = 0x0008,
HidePresenceTypeExtendedAway = 0x0010,
HidePresenceTypeHidden = 0x0020,
HidePresenceTypeBusy = 0x0040,
HidePresenceTypeUnknown = 0x0080,
HidePresenceTypeError = 0x0100,
HideAllOffline = HidePresenceTypeUnset |
HidePresenceTypeOffline |
HidePresenceTypeUnknown |
HidePresenceTypeError,
HideAllOnline = HidePresenceTypeAvailable |
HidePresenceTypeAway |
HidePresenceTypeExtendedAway |
HidePresenceTypeHidden |
HidePresenceTypeBusy,
HideAllUnavailable = HideAllOffline |
HidePresenceTypeAway |
HidePresenceTypeExtendedAway |
HidePresenceTypeBusy,
ShowOnlyConnected = HideAllOffline,
ShowOnlyDisconnected = HideAllOnline,
ShowAll = DoNotFilterByPresence
};
Q_DECLARE_FLAGS(PresenceTypeFilterFlags, PresenceTypeFilterFlag)
enum CapabilityFilterFlag {
DoNotFilterByCapability = 0x0000,
FilterByTextChatCapability = 0x0001,
FilterByAudioCallCapability = 0x0002,
FilterByVideoCallCapability = 0x0004,
FilterByFileTransferCapability = 0x0008,
FilterByTubes = 0x0010,
CustomFilterCapability = 0x10000 // a placemark for custom capabilities in inherited classes
};
Q_DECLARE_FLAGS(CapabilityFilterFlags, CapabilityFilterFlag)
enum SubscriptionStateFilterFlag {
DoNotFilterBySubscription = 0x0000,
HideSubscriptionStateNo = 0x0001,
HideSubscriptionStateAsk = 0x0002,
HideSubscriptionStateYes = 0x0004,
HidePublishStateNo = 0x0010,
HidePublishStateAsk = 0x0020,
HidePublishStateYes = 0x0040,
HideBlocked = 0x0100,
HideNonBlocked = 0x0200,
ShowOnlyBlocked = HideNonBlocked
};
Q_DECLARE_FLAGS(SubscriptionStateFilterFlags, SubscriptionStateFilterFlag)
ContactsFilterModel(QObject *parent = 0);
virtual ~ContactsFilterModel();
virtual QVariant data(const QModelIndex &index, int role) const;
virtual void setSourceModel(QAbstractItemModel *sourceModel);
void invalidateFilter();
PresenceTypeFilterFlags presenceTypeFilterFlags() const;
Q_SLOT void clearPresenceTypeFilterFlags();
Q_SLOT void setPresenceTypeFilterFlags(PresenceTypeFilterFlags presenceTypeFilterFlags);
Q_SIGNAL void presenceTypeFilterFlagsChanged(PresenceTypeFilterFlags presenceTypeFilterFlags);
CapabilityFilterFlags capabilityFilterFlags() const;
Q_SLOT void clearCapabilityFilterFlags();
Q_SLOT void setCapabilityFilterFlags(CapabilityFilterFlags capabilityFilterFlags);
Q_SIGNAL void capabilityFilterFlagsChanged(CapabilityFilterFlags capabilityFilterFlags);
SubscriptionStateFilterFlags subscriptionStateFilterFlags() const;
Q_SLOT void clearSubscriptionStateFilterFlags();
Q_SLOT void setSubscriptionStateFilterFlags(SubscriptionStateFilterFlags subscriptionStateFilterFlags);
Q_SIGNAL void subscriptionStateFilterFlagsChanged(SubscriptionStateFilterFlags subscriptionStateFilterFlags);
QString globalFilterString() const;
Q_SLOT void clearGlobalFilterString();
Q_SLOT void setGlobalFilterString(const QString &globalFilterString);
Q_SIGNAL void globalFilterStringChanged(const QString &globalFilterString);
Qt::MatchFlags globalFilterMatchFlags() const;
Q_SLOT void resetGlobalFilterMatchFlags();
Q_SLOT void setGlobalFilterMatchFlags(Qt::MatchFlags globalStringMatchFlags);
Q_SIGNAL void globalFilterMatchFlagsChanged(Qt::MatchFlags globalStringMatchFlags);
QString displayNameFilterString() const;
Q_SLOT void clearDisplayNameFilterString();
Q_SLOT void setDisplayNameFilterString(const QString &displayNameFilterString);
Q_SIGNAL void displayNameFilterStringChanged(const QString &displayNameFilterString);
Qt::MatchFlags displayNameFilterMatchFlags() const;
Q_SLOT void resetDisplayNameFilterMatchFlags();
Q_SLOT void setDisplayNameFilterMatchFlags(Qt::MatchFlags displayNameFilterMatchFlags);
Q_SIGNAL void displayNameFilterMatchFlagsChanged(Qt::MatchFlags displayNameFilterMatchFlags);
QString nicknameFilterString() const;
Q_SLOT void clearNicknameFilterString();
Q_SLOT void setNicknameFilterString(const QString &nicknameFilterString);
Q_SIGNAL void nicknameFilterStringChanged(const QString &nicknameFilterString);
Qt::MatchFlags nicknameFilterMatchFlags() const;
Q_SLOT void resetNicknameFilterMatchFlags();
Q_SLOT void setNicknameFilterMatchFlags(Qt::MatchFlags nicknameFilterMatchFlags);
Q_SIGNAL void nicknameFilterMatchFlagsChanged(Qt::MatchFlags nicknameFilterMatchFlags);
QString aliasFilterString() const;
Q_SLOT void clearAliasFilterString();
Q_SLOT void setAliasFilterString(const QString &aliasFilterString);
Q_SIGNAL void aliasFilterStringChanged(const QString &aliasFilterString);
Qt::MatchFlags aliasFilterMatchFlags() const;
Q_SLOT void resetAliasFilterMatchFlags();
Q_SLOT void setAliasFilterMatchFlags(Qt::MatchFlags aliasFilterMatchFlags);
Q_SIGNAL void aliasFilterMatchFlagsChanged(Qt::MatchFlags aliasFilterMatchFlags);
QString groupsFilterString() const;
Q_SLOT void clearGroupsFilterString();
Q_SLOT void setGroupsFilterString(const QString &groupsFilterString);
Q_SIGNAL void groupsFilterStringChanged(const QString &groupsFilterString);
Qt::MatchFlags groupsFilterMatchFlags() const;
Q_SLOT void resetGroupsFilterMatchFlags();
Q_SLOT void setGroupsFilterMatchFlags(Qt::MatchFlags groupsFilterMatchFlags);
Q_SIGNAL void groupsFilterMatchFlagsChanged(Qt::MatchFlags groupsFilterMatchFlags);
QString idFilterString() const;
Q_SLOT void clearIdFilterString();
Q_SLOT void setIdFilterString(const QString &idFilterString);
Q_SIGNAL void idFilterStringChanged(const QString &idFilterString);
Qt::MatchFlags idFilterMatchFlags() const;
Q_SLOT void resetIdFilterMatchFlags();
Q_SLOT void setIdFilterMatchFlags(Qt::MatchFlags idFilterMatchFlags);
Q_SIGNAL void idFilterMatchFlagsChanged(Qt::MatchFlags idFilterMatchFlags);
Tp::AccountPtr accountFilter() const;
Q_SLOT void clearAccountFilter();
Q_SLOT void setAccountFilter(const Tp::AccountPtr &accountFilter);
Q_SIGNAL void accountFilterChanged(const Tp::AccountPtr &accountFilter);
QStringList tubesFilterStrings() const;
Q_SLOT void clearTubesFilterStrings();
Q_SLOT void setTubesFilterStrings(const QStringList &tubesFilterStrings);
Q_SIGNAL void tubesFilterStringsChanged(const QStringList &tubesFilterStrings);
QString sortRoleString() const;
Q_SLOT void setSortRoleString(const QString &role);
Q_SLOT void delayedSortFix();
protected:
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
bool lessThan (const QModelIndex &left, const QModelIndex &right) const;
QModelIndexList match(const QModelIndex &start, int role,
const QVariant &value, int hits,
Qt::MatchFlags flags) const;
private:
class Private;
Private * const d;
Q_PRIVATE_SLOT(d, void sourceModelParentIndexChanged(const QModelIndex &sourceIndex))
Q_PRIVATE_SLOT(d, void sourceModelIndexChanged(const QModelIndex &sourceIndex))
};
} //namespace
#endif // CONTACTSFILTERMODEL_H
|