summaryrefslogtreecommitdiffstats
path: root/ksirc/dockservercontroller.h
diff options
context:
space:
mode:
Diffstat (limited to 'ksirc/dockservercontroller.h')
-rw-r--r--ksirc/dockservercontroller.h110
1 files changed, 110 insertions, 0 deletions
diff --git a/ksirc/dockservercontroller.h b/ksirc/dockservercontroller.h
new file mode 100644
index 00000000..5c5bdb59
--- /dev/null
+++ b/ksirc/dockservercontroller.h
@@ -0,0 +1,110 @@
+
+#ifndef dockservercontroller_included
+#define dockservercontroller_included
+
+#include <ksystemtray.h>
+#include <qdict.h>
+#include <qstring.h>
+#include <qdatetime.h>
+#include <qpixmap.h>
+#include <qstringlist.h>
+
+class QPopupMenu;
+class QWidget;
+class servercontroller;
+class QMouseEvent;
+class KPopupMenu;
+class QTimer;
+
+class dscNickInfo
+{
+public:
+ dscNickInfo(QString nick, QString server);
+ ~dscNickInfo();
+
+ enum status {
+ isOnline,
+ isOffline
+ };
+
+ QString nick() { return m_nick; }
+ QString server() { return m_server; }
+
+ void setOnline() { m_status = isOnline; m_online = QTime::currentTime(); }
+ const QTime &online() { return m_online; }
+
+ void setOffline() { m_status = isOffline; m_offline = QTime::currentTime(); }
+ const QTime offline() { return m_offline; }
+
+ void setStatus(enum status stat) { m_status = stat; }
+ enum status status() { return m_status; }
+
+private:
+ QString m_nick;
+ QString m_server;
+ enum status m_status;
+ QTime m_online;
+ QTime m_offline;
+
+};
+
+class dockServerController : public KSystemTray
+{
+ Q_OBJECT
+public:
+ dockServerController(servercontroller *_sc, QWidget *parent = 0x0, const char *_name = 0x0);
+ ~dockServerController();
+
+ void startBlink(const QString& reason = QString::null, const QString& text = QString::null);
+ void stopBlink(const QString& reason = QString::null, bool clear = false);
+
+ void nickOnline(QString server, QString nick);
+ void nickOffline(QString server, QString nick);
+
+ void serverOpen(QString server);
+ void serverClose(QString server);
+
+protected:
+ void mousePressEvent( QMouseEvent *);
+ virtual void showPopupMenu( QPopupMenu *);
+
+public slots:
+ void raiseLastActiveWindow();
+
+protected slots:
+ void subItemActivated(int);
+ void blinkDockedIcon(void);
+ void blinkClear(void);
+ void mainActivated(int id);
+ void helpNotice();
+ void configNotify();
+
+ void mainPopShow();
+ void mainPopHide();
+
+private:
+ int intoPopupSorted(QString, QPopupMenu *);
+ void createMainPopup();
+ void raiseWindow(QString server, QString name);
+ QDict<dscNickInfo> m_nicks;
+ servercontroller *m_sc;
+ KPopupMenu *mainPop;
+
+ QString m_last_nick;
+ QString m_last_server;
+
+ QPixmap m_pic_dock;
+ QPixmap m_pic_info;
+
+ bool m_mainPopVisible;
+
+ bool m_blinkActive;
+ bool m_blinkStatus; // true: blue icon, false: normal icon
+ QTimer* m_blinkTimer;
+
+ QStringList m_blink_reason;
+
+};
+
+#endif
+