LeechCraft Azoth  0.6.70-6645-gcd10d7e
Modular multiprotocol IM plugin for LeechCraft
imucperms.h
Go to the documentation of this file.
1 /**********************************************************************
2  * LeechCraft - modular cross-platform feature rich internet client.
3  * Copyright (C) 2006-2014 Georg Rudoy
4  *
5  * Boost Software License - Version 1.0 - August 17th, 2003
6  *
7  * Permission is hereby granted, free of charge, to any person or organization
8  * obtaining a copy of the software and accompanying documentation covered by
9  * this license (the "Software") to use, reproduce, display, distribute,
10  * execute, and transmit the Software, and to prepare derivative works of the
11  * Software, and to permit third-parties to whom the Software is furnished to
12  * do so, all subject to the following:
13  *
14  * The copyright notices in the Software and this entire statement, including
15  * the above license grant, this restriction and the following disclaimer,
16  * must be included in all copies of the Software, in whole or in part, and
17  * all derivative works of the Software, unless such copies or derivative
18  * works are solely in the form of machine-executable object code generated by
19  * a source language processor.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23  * FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
24  * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
25  * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
26  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27  * DEALINGS IN THE SOFTWARE.
28  **********************************************************************/
29 
30 #ifndef PLUGINS_AZOTH_INTERFACES_IMUCPERMS_H
31 #define PLUGINS_AZOTH_INTERFACES_IMUCPERMS_H
32 #include <QFlags>
33 #include <QMetaType>
34 #include <QMap>
35 #include <QByteArray>
36 #include <QPair>
37 
38 namespace LeechCraft
39 {
40 namespace Azoth
41 {
58  class IMUCPerms
59  {
60  public:
61  virtual ~IMUCPerms () {}
62 
75  virtual QMap<QByteArray, QList<QByteArray>> GetPossiblePerms () const = 0;
76 
92  virtual QMap<QByteArray, QList<QByteArray>> GetPerms (QObject *participant) const = 0;
93 
94  virtual QPair<QByteArray, QByteArray> GetKickPerm () const = 0;
95  virtual QPair<QByteArray, QByteArray> GetBanPerm () const = 0;
96 
113  virtual QByteArray GetAffName (QObject *participant) const = 0;
114 
133  virtual bool MayChangePerm (QObject *participant,
134  const QByteArray& permClass, const QByteArray& targetPerm) const = 0;
135 
154  virtual void SetPerm (QObject *participant,
155  const QByteArray& permClass, const QByteArray& targetPerm, const QString& reason) = 0;
156 
168  virtual bool IsLessByPerm (QObject *part1, QObject *part2) const = 0;
169 
179  virtual bool IsMultiPerm (const QByteArray& permClass) const = 0;
180 
186  virtual QString GetUserString (const QByteArray& id) const = 0;
187 
208  virtual void TrySetPerm (const QString& userId,
209  const QByteArray& permClass, const QByteArray& targetPerm, const QString& reason)
210  {
211  Q_UNUSED (userId)
212  Q_UNUSED (permClass)
213  Q_UNUSED (targetPerm)
214  Q_UNUSED (reason)
215  }
216  };
217 }
218 }
219 
221  "org.Deviant.LeechCraft.Azoth.IMUCPerms/1.0");
222 
223 #endif
virtual QMap< QByteArray, QList< QByteArray > > GetPerms(QObject *participant) const =0
Returns current permissions for the given participant.
virtual bool IsMultiPerm(const QByteArray &permClass) const =0
Returns whether users can have many perms of the given class at once.
virtual QString GetUserString(const QByteArray &id) const =0
Returns a human-readable string for the given id.
virtual void SetPerm(QObject *participant, const QByteArray &permClass, const QByteArray &targetPerm, const QString &reason)=0
Sets the permission for the given participant.
Q_DECLARE_INTERFACE(LeechCraft::Azoth::IMUCPerms,"org.Deviant.LeechCraft.Azoth.IMUCPerms/1.0")
virtual QPair< QByteArray, QByteArray > GetKickPerm() const =0
This interface describes permissions in the given room.
Definition: imucperms.h:58
virtual void TrySetPerm(const QString &userId, const QByteArray &permClass, const QByteArray &targetPerm, const QString &reason)
Sets a perm on a user not present in the room.
Definition: imucperms.h:208
virtual bool MayChangePerm(QObject *participant, const QByteArray &permClass, const QByteArray &targetPerm) const =0
Whether given participant&#39;s permission may be changed to the given value.
virtual QMap< QByteArray, QList< QByteArray > > GetPossiblePerms() const =0
Returns all possible permission classes and values.
virtual bool IsLessByPerm(QObject *part1, QObject *part2) const =0
Returns if one participant has less perms than another.
virtual QPair< QByteArray, QByteArray > GetBanPerm() const =0
virtual QByteArray GetAffName(QObject *participant) const =0
Returns the name of the affiliation icon.