KVIrc 5.2.4
Developer APIs
KviUserListView.h
Go to the documentation of this file.
1#ifndef _KVI_USERLISTVIEW_H_
2#define _KVI_USERLISTVIEW_H_
3//=============================================================================
4//
5// File : KviUserListView.h
6// Creation date : Tue Aug 1 2000 21:03:41 by Szymon Stefanek
7//
8// This file is part of the KVIrc IRC client distribution
9// Copyright (C) 2000-2010 Szymon Stefanek (pragma at kvirc dot net)
10//
11// This program is FREE software. You can redistribute it and/or
12// modify it under the terms of the GNU General Public License
13// as published by the Free Software Foundation; either version 2
14// of the License, or (at your option) any later version.
15//
16// This program is distributed in the HOPE that it will be USEFUL,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19// See the GNU General Public License for more details.
20//
21// You should have received a copy of the GNU General Public License
22// along with this program. If not, write to the Free Software Foundation,
23// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24//
25//=============================================================================
26
40#include "kvi_settings.h"
41#include "KviPointerHashTable.h"
42#include "KviWindowToolWidget.h"
43#include "KviCString.h"
44#include "KviIrcUserDataBase.h"
45#include "KviIrcMask.h"
46#include "KviTimeUtils.h"
47#include "KviTalToolTip.h"
48
49#include <time.h>
50#include <vector>
51
52#include <QWidget>
53
54class QLabel;
55class QScrollBar;
56class KviUserListView;
59class KviWindow;
60
61#define KVI_USERLISTVIEW_GRIDTYPE_3DGRID 0
62#define KVI_USERLISTVIEW_GRIDTYPE_3DBUTTONS 1
63#define KVI_USERLISTVIEW_GRIDTYPE_PLAINGRID 2
64#define KVI_USERLISTVIEW_GRIDTYPE_DOTGRID 3
65#define KVI_USERLISTVIEW_GRIDTYPE_MAXIMUM 3
66#define KVI_USERLISTVIEW_GRIDTYPE_DEFAULT 0
67
73{
74 unsigned int uTotal;
75 unsigned int uActive;
76 unsigned int uActiveOp;
77 unsigned int uHot;
78 unsigned int uHotOp;
79 unsigned int uIrcOp;
80 unsigned int uChanOwner;
81 unsigned int uChanAdmin;
82 unsigned int uOp;
83 unsigned int uHalfOp;
84 unsigned int uVoiced;
85 unsigned int uUserOp;
87};
88
94{
95public:
103
108
109private:
111
112public:
118 void maybeTip(const QPoint & pnt) override;
119
126 void doTip(const QRect & rect, const QString & szStr) { tip(rect, szStr); };
127};
128
133class KVIRC_API KviUserListEntry : public QObject
134{
135 Q_OBJECT
136 friend class KviUserListView;
138public:
148 KviUserListEntry(KviUserListView * pParent, const QString & szNick, KviIrcUserEntry * pEntry, short int iFlags, bool bJoinTimeUnknown = true);
149
154
155protected:
157 QString m_szNick;
159 short int m_iFlags;
160 short int m_iTemperature; // user temperature : 0 = neutral
163
169
170public:
175 short int flags() const { return m_iFlags; };
176
181 KviIrcUserEntry * globalData() { return m_pGlobalData; };
182
187 const QString & nick() const { return m_szNick; };
188
193 KviUserListEntry * next() { return m_pNext; };
194
200 bool color(QColor & color);
201
206 void updateAvatarData();
207 void detachAvatarData();
208
209protected:
214 void recalcSize();
215
216private slots:
217 void avatarFrameChanged();
218 void avatarDestroyed();
219};
220
226{
227 friend class KviUserListEntry;
229 friend class KviUserListToolTip;
230 friend class KviConsoleWindow;
231 friend class KviChannelWindow;
232 friend class KviQueryWindow;
233 Q_OBJECT
234public:
246 KviUserListView(QWidget * pParent, KviWindowToolPageButton * pButton, KviIrcUserDataBase * pDb, KviWindow * pWnd, int iDictSize = 5, const QString & szTextLabel = QString(), const char * pName = "userslistview");
247
252
253protected:
277
278public:
283 void updateArea();
284
290 void select(const QString & szNick);
291
297 void ensureVisible(const QString & szNick);
298
303 void applyOptions();
304
310
315 KviUserListEntry * firstItem() { return m_pHeadItem; };
316
323 KviUserListEntry * itemAt(const QPoint & pnt, QRect * pRect = nullptr);
324
330 bool itemVisible(KviUserListEntry * pEntry);
331
336 KviWindow * window() { return m_pKviWindow; };
337
342 unsigned int count() { return m_pEntryDict->count(); };
343
348 int selectedCount() { return m_iSelectedCount; };
349
354 int ircOpCount() { return m_iIrcOpCount; };
355
360 int chanOwnerCount() { return m_iChanOwnerCount; };
361
366 int chanAdminCount() { return m_iChanAdminCount; };
367
372 int opCount() { return m_iOpCount; };
373
378 int halfOpCount() { return m_iHalfOpCount; };
379
384 int voiceCount() { return m_iVoiceCount; };
385
390 int userOpCount() { return m_iUserOpCount; };
391
399 KviUserListEntry * findEntry(const QString & szNick) { return szNick.isEmpty() ? 0 : m_pEntryDict->find(szNick); };
400
406 void appendSelectedNicknames(QString & szBuffer);
407
412 QString * firstSelectedNickname();
413
418 QString * nextSelectedNickname();
419
424 void partAll();
425
431 void partAllButOne(const QString & szWhoNot);
432
438 void userStats(KviUserListViewUserStats * pStats);
439
453 int getUserModeLevel(const QString & szNick);
454
460 kvi_time_t getUserJoinTime(const QString & szNick);
461
467 kvi_time_t getUserLastActionTime(const QString & szNick);
468
474 char getUserFlag(KviUserListEntry * pEntry);
475
481 char getUserFlag(const QString & szNick) { return getUserFlag(m_pEntryDict->find(szNick)); };
482
488 bool part(const QString & szNick) { return partInternal(szNick, true); };
489
496 void prependUserFlag(const QString & szNick, QString & szBuffer);
497
503 int flags(const QString & szNick);
504
511 bool isChanOwner(const QString & szNick, bool bAtLeast = false);
512
519 bool isChanAdmin(const QString & szNick, bool bAtLeast = false);
520
527 bool isOp(const QString & szNick, bool bAtLeast = false);
528
535 bool isHalfOp(const QString & szNick, bool bAtLeast = false);
536
543 bool isVoice(const QString & szNick, bool bAtLeast = false);
544
551 bool isUserOp(const QString & szNick, bool bAtLeast = false);
552
559 bool setChanOwner(const QString & szNick, bool bChanOwner);
560
567 bool setChanAdmin(const QString & szNick, bool bChanAdmin);
568
575 bool setOp(const QString & szNick, bool bOp);
576
583 bool setHalfOp(const QString & szNick, bool bHalfOp);
584
591 bool setVoice(const QString & szNick, bool bVoice);
592
599 bool setUserOp(const QString & szNick, bool bUserOp);
600
617 bool userActionVerifyMask(const QString & szNick, const QString & szUser, const QString & szHost, int iActionTemperature, QString & szOldUser, QString & szOldHost);
618
629 void userAction(KviIrcMask * pUser, int iActionTemperature);
630
643 void userAction(const QString & szNick, const QString & szUser, const QString & szHost, int iActionTemperature);
644
655 void userAction(const QString & szNick, int iActionTemperature);
656
663 bool nickChange(const QString & szOldNick, const QString & szNewNick);
664
673 KviUserListEntry * join(const QString & szNick, const QString & szUser = QString(), const QString & szHost = QString(), int iFlags = 0);
674
680 bool avatarChanged(const QString & szNick);
681
687 void enableUpdates(bool bEnable);
688
702 void setMaskEntries(char cType, int iNum);
703
708 void emitRightClick();
709
714 void emitDoubleClick();
715
719 bool completeNickLastAction(const QString & szBegin, const QString & szSkipAfter, QString & szBuffer, bool bAppendMask);
720
732 bool completeNickStandard(const QString & szBegin, const QString & szSkipAfter, QString & szBuffer, bool bAppendMask);
733
745 void completeNickBashLike(const QString & szBegin, std::vector<QString> & pList, bool bAppendMask);
746
747protected:
754 void maybeTip(KviUserListToolTip * pTip, const QPoint & pnt);
755
763 void triggerUpdate();
764
769 void updateUsersLabel();
770
777 void insertUserEntry(const QString & szNick, KviUserListEntry * pEntry);
778
785 void removeAllEntries();
786
793 bool partInternal(const QString & szNick, bool bRemove = true);
794
800 void setUserDataBase(KviIrcUserDataBase * pDb) { m_pIrcUserDataBase = pDb; };
801
806 void updateScrollBarRange();
807
808 void resizeEvent(QResizeEvent * e) override;
809
810public slots:
815 void animatedAvatarUpdated(KviUserListEntry * e);
816};
817
822class KVIRC_API KviUserListViewArea : public QWidget
823{
824 friend class KviUserListView;
825
826 Q_OBJECT
827 Q_PROPERTY(int TransparencyCapable READ dummyRead)
828public:
835
840
841public:
846 int dummyRead() const { return 0; };
847
848protected:
851 QScrollBar * m_pScrollBar;
855
856protected:
857 void paintEvent(QPaintEvent * e) override;
858 void resizeEvent(QResizeEvent * e) override;
859 void mousePressEvent(QMouseEvent * e) override;
860 void mouseMoveEvent(QMouseEvent * e) override;
861 void mouseReleaseEvent(QMouseEvent * e) override;
862 void mouseDoubleClickEvent(QMouseEvent * e) override;
863 void wheelEvent(QWheelEvent * e) override;
864 void keyPressEvent(QKeyEvent * e) override;
865protected slots:
866
872 void scrollBarMoved(int iNewVal);
873};
874
875#endif //_KVI_USERLISTVIEW_H_
Irc user mask abstraction.
User DB handling.
Pointer Hash Table.
Time management.
#define kvi_time_t
Definition KviTimeUtils.h:43
Definition KviAnimatedPixmap.h:70
The class which manages a channel.
Definition KviChannelWindow.h:108
Definition KviConsoleWindow.h:74
Irc user mask handling.
Definition KviIrcMask.h:48
The class which manages the user database.
Definition KviIrcUserDataBase.h:47
A class to handle the entries of the user database.
Definition KviIrcUserEntry.h:45
A fast pointer hash table implementation.
Definition KviPointerHashTable.h:450
unsigned int count() const
Returns the number of items in this hash table.
Definition KviPointerHashTable.h:502
T * find(const Key &hKey)
Returns the item associated to the key.
Definition KviPointerHashTable.h:471
The class which manages a query.
Definition KviQueryWindow.h:50
Definition KviTalToolTip.h:53
virtual void maybeTip(const QPoint &p)
Definition KviTalToolTip.cpp:102
virtual void tip(const QRect &rect, const QString &text)
Definition KviTalToolTip.cpp:93
Userlist entry management class.
Definition KviUserListView.h:134
kvi_time_t m_joinTime
Definition KviUserListView.h:162
kvi_time_t m_lastActionTime
Definition KviUserListView.h:161
const QString & nick() const
Returns the nick of the entry.
Definition KviUserListView.h:187
KviUserListEntry * m_pPrev
Definition KviUserListView.h:167
short int m_iFlags
Definition KviUserListView.h:159
KviIrcUserEntry * m_pGlobalData
Definition KviUserListView.h:158
KviUserListView * m_pListView
Definition KviUserListView.h:156
KviAnimatedPixmap * m_pAvatarPixmap
Definition KviUserListView.h:168
short int flags() const
Returns the flags of the user.
Definition KviUserListView.h:175
short int m_iTemperature
Definition KviUserListView.h:160
KviUserListEntry * m_pNext
Definition KviUserListView.h:166
KviIrcUserEntry * globalData()
Returns the irc user db entry.
Definition KviUserListView.h:181
bool m_bSelected
Definition KviUserListView.h:165
KviUserListEntry * next()
Returns the next entry in the list.
Definition KviUserListView.h:193
int m_iHeight
Definition KviUserListView.h:164
QString m_szNick
Definition KviUserListView.h:157
A class to manage userlist tooltips.
Definition KviUserListView.h:94
void doTip(const QRect &rect, const QString &szStr)
Shows the tooltip.
Definition KviUserListView.h:126
~KviUserListToolTip()
Destroys the userlist tooltip.
KviUserListView * m_pListView
Definition KviUserListView.h:110
User list area management.
Definition KviUserListView.h:823
int m_iTopItemOffset
Definition KviUserListView.h:853
bool m_bIgnoreScrollBar
Definition KviUserListView.h:854
KviUserListEntry * m_pLastEntryUnderMouse
Definition KviUserListView.h:850
int dummyRead() const
A dummy function that always returns 0.
Definition KviUserListView.h:846
KviUserListView * m_pListView
Definition KviUserListView.h:849
QScrollBar * m_pScrollBar
Definition KviUserListView.h:851
int m_iLastScrollBarVal
Definition KviUserListView.h:852
~KviUserListViewArea()
Destroys the user listview are object.
User list view management class.
Definition KviUserListView.h:226
bool setVoice(const QString &szNick, bool bVoice)
Sets the voice mode.
bool isChanOwner(const QString &szNick, bool bAtLeast=false)
Returns true if the user is a chan owner.
int userOpCount()
Returns the number of user operators.
Definition KviUserListView.h:390
KviUserListEntry * firstItem()
Returns the first item of the user list.
Definition KviUserListView.h:315
int m_iUserOpCount
Definition KviUserListView.h:269
int m_iFontHeight
Definition KviUserListView.h:271
int ircOpCount()
Returns the number of ircops.
Definition KviUserListView.h:354
KviPointerHashTable< QString, KviUserListEntry > * m_pEntryDict
Definition KviUserListView.h:254
int voiceCount()
Returns the number of voices.
Definition KviUserListView.h:384
int m_iTotalHeight
Definition KviUserListView.h:270
int m_iSelectedCount
Definition KviUserListView.h:262
int selectedCount()
Returns the number of selected entries in the userlist.
Definition KviUserListView.h:348
KviUserListEntry * findEntry(const QString &szNick)
Searches an entry in the userlist.
Definition KviUserListView.h:399
bool setChanOwner(const QString &szNick, bool bChanOwner)
Sets the chan owner mode.
bool isOp(const QString &szNick, bool bAtLeast=false)
Returns true if the user is an operator.
bool setHalfOp(const QString &szNick, bool bHalfOp)
Sets the half operator mode.
KviUserListEntry * m_pHeadItem
Definition KviUserListView.h:256
KviIrcUserDataBase * m_pIrcUserDataBase
Definition KviUserListView.h:261
bool setUserOp(const QString &szNick, bool bUserOp)
Sets the user operator mode.
bool part(const QString &szNick)
Check if a user parts from a channel.
Definition KviUserListView.h:488
KviWindow * window()
Returns the window associated to the userlist.
Definition KviUserListView.h:336
int chanOwnerCount()
Returns the number of chan owners.
Definition KviUserListView.h:360
void setUserDataBase(KviIrcUserDataBase *pDb)
Sets the user database.
Definition KviUserListView.h:800
int chanAdminCount()
Returns the number of chan admins.
Definition KviUserListView.h:366
KviUserListEntry * m_pIterator
Definition KviUserListView.h:258
bool setOp(const QString &szNick, bool bOp)
Sets the operator mode.
int m_iChanAdminCount
Definition KviUserListView.h:265
int halfOpCount()
Returns the number of half operators.
Definition KviUserListView.h:378
int opCount()
Returns the number of operators.
Definition KviUserListView.h:372
int m_iOpCount
Definition KviUserListView.h:266
bool isChanAdmin(const QString &szNick, bool bAtLeast=false)
Returns true if the user is a chan admin.
int m_iIEntries
Definition KviUserListView.h:275
bool isUserOp(const QString &szNick, bool bAtLeast=false)
Returns true if the user is a user operator.
QLabel * m_pUsersLabel
Definition KviUserListView.h:259
KviUserListEntry * m_pTailItem
Definition KviUserListView.h:257
int m_iChanOwnerCount
Definition KviUserListView.h:264
KviUserListEntry * m_pTopItem
Definition KviUserListView.h:255
KviPointerHashTable< QString, KviUserListEntry > * entryDict()
Returns the entry in the list.
Definition KviUserListView.h:309
int m_ieEntries
Definition KviUserListView.h:274
int m_iIrcOpCount
Definition KviUserListView.h:263
KviUserListViewArea * m_pViewArea
Definition KviUserListView.h:260
unsigned int count()
Returns the number of the entries in the userlist.
Definition KviUserListView.h:342
bool isHalfOp(const QString &szNick, bool bAtLeast=false)
Returns true if the user is an half operator.
int m_iVoiceCount
Definition KviUserListView.h:268
KviWindow * m_pKviWindow
Definition KviUserListView.h:276
int m_ibEntries
Definition KviUserListView.h:273
bool isVoice(const QString &szNick, bool bAtLeast=false)
Returns true if the user is a voice.
char getUserFlag(const QString &szNick)
Returns the flags of a user.
Definition KviUserListView.h:481
KviUserListToolTip * m_pToolTip
Definition KviUserListView.h:272
bool setChanAdmin(const QString &szNick, bool bChanAdmin)
Sets the chan admin mode.
int m_iHalfOpCount
Definition KviUserListView.h:267
Definition KviWindowToolWidget.h:47
Definition KviWindowToolWidget.h:36
Base class for all windows in KVIrc.
Definition KviWindow.h:75
#define e
Definition detector.cpp:70
This file contains compile time settings.
#define KVIRC_API
Definition kvi_settings.h:127
QString szHost
Definition libkvisetup.cpp:48
Definition KviUserListView.h:73
unsigned int uChanAdmin
Definition KviUserListView.h:81
unsigned int uTotal
Definition KviUserListView.h:74
unsigned int uHalfOp
Definition KviUserListView.h:83
unsigned int uActive
Definition KviUserListView.h:75
unsigned int uVoiced
Definition KviUserListView.h:84
unsigned int uHotOp
Definition KviUserListView.h:78
unsigned int uChanOwner
Definition KviUserListView.h:80
int iAvgTemperature
Definition KviUserListView.h:86
unsigned int uOp
Definition KviUserListView.h:82
unsigned int uActiveOp
Definition KviUserListView.h:76
unsigned int uIrcOp
Definition KviUserListView.h:79
unsigned int uHot
Definition KviUserListView.h:77
unsigned int uUserOp
Definition KviUserListView.h:85
char szBuffer[4096]
Definition winamp.cpp:77