aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--data/pics/coresmall/kcs_notupdate.pngbin0 -> 948 bytes
-rw-r--r--data/pics/coresmall/kcs_update.pngbin0 -> 3572 bytes
-rw-r--r--src/kvirc/kernel/kvi_iconmanager.cpp2
-rw-r--r--src/kvirc/kernel/kvi_iconmanager.h4
-rw-r--r--src/kvirc/ui/kvi_statusbarapplet.cpp101
-rw-r--r--src/kvirc/ui/kvi_statusbarapplet.h16
6 files changed, 121 insertions, 2 deletions
diff --git a/data/pics/coresmall/kcs_notupdate.png b/data/pics/coresmall/kcs_notupdate.png
new file mode 100644
index 000000000..900dd5ca5
--- /dev/null
+++ b/data/pics/coresmall/kcs_notupdate.png
Binary files differ
diff --git a/data/pics/coresmall/kcs_update.png b/data/pics/coresmall/kcs_update.png
new file mode 100644
index 000000000..05e70daa9
--- /dev/null
+++ b/data/pics/coresmall/kcs_update.png
Binary files differ
diff --git a/src/kvirc/kernel/kvi_iconmanager.cpp b/src/kvirc/kernel/kvi_iconmanager.cpp
index cdbb8d300..2497888f8 100644
--- a/src/kvirc/kernel/kvi_iconmanager.cpp
+++ b/src/kvirc/kernel/kvi_iconmanager.cpp
@@ -340,6 +340,8 @@ static const char * g_szIconNames[KVI_NUM_SMALL_ICONS]=
"refresh", //289
"theme", // 290
"screenshot" // 291
+ "update" // 292
+ "notupdate" // 293
};
KviIconWidget::KviIconWidget()
diff --git a/src/kvirc/kernel/kvi_iconmanager.h b/src/kvirc/kernel/kvi_iconmanager.h
index 662b47f40..ede7d23e5 100644
--- a/src/kvirc/kernel/kvi_iconmanager.h
+++ b/src/kvirc/kernel/kvi_iconmanager.h
@@ -328,8 +328,10 @@
#define KVI_SMALLICON_REFRESH 289
#define KVI_SMALLICON_THEME 290
#define KVI_SMALLICON_SCREENSHOT 291
+#define KVI_SMALLICON_UPDATE 292
+#define KVI_SMALLICON_NOTUPDATE 293
-#define KVI_NUM_SMALL_ICONS 292
+#define KVI_NUM_SMALL_ICONS 294
#define KVI_BIGICON_DISCONNECTED "kvi_bigicon_disconnected.png"
diff --git a/src/kvirc/ui/kvi_statusbarapplet.cpp b/src/kvirc/ui/kvi_statusbarapplet.cpp
index 6315600e2..a400483af 100644
--- a/src/kvirc/ui/kvi_statusbarapplet.cpp
+++ b/src/kvirc/ui/kvi_statusbarapplet.cpp
@@ -59,7 +59,6 @@
// FIXME: Applets in modules SHOULD be unregistered automatically on unload!
/*
IDEAS:
- - Lag meter
- Countdown timer
*/
@@ -142,6 +141,7 @@ void KviStatusBarApplet::select(bool bSelect)
}
+// Away applet
KviStatusBarAwayIndicator::KviStatusBarAwayIndicator(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor)
: KviStatusBarApplet(pParent,pDescriptor)
{
@@ -254,6 +254,7 @@ not_connected:
}
+// Lag indicator applet
KviStatusBarLagIndicator::KviStatusBarLagIndicator(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor)
: KviStatusBarApplet(pParent,pDescriptor)
{
@@ -374,6 +375,7 @@ void KviStatusBarLagIndicator::selfRegister(KviStatusBar * pBar)
}
+// Clock applet
KviStatusBarClock::KviStatusBarClock(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor)
: KviStatusBarApplet(pParent,pDescriptor)
{
@@ -443,6 +445,7 @@ void KviStatusBarClock::selfRegister(KviStatusBar * pBar)
}
+// Connection timer applet
KviStatusBarConnectionTimer::KviStatusBarConnectionTimer(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor)
: KviStatusBarApplet(pParent,pDescriptor)
{
@@ -518,6 +521,7 @@ void KviStatusBarConnectionTimer::selfRegister(KviStatusBar * pBar)
}
+// Separator applet
KviStatusBarSeparator::KviStatusBarSeparator(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor)
: KviStatusBarApplet(pParent,pDescriptor)
{
@@ -539,3 +543,98 @@ void KviStatusBarSeparator::selfRegister(KviStatusBar * pBar)
__tr2qs("Separator"),"separator",CreateStatusBarSeparator);
pBar->registerAppletDescriptor(d);
}
+
+
+// Update applet
+KviStatusBarUpdateIndicator::KviStatusBarUpdateIndicator(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor)
+: KviStatusBarApplet(pParent,pDescriptor)
+{
+ /*
+ connect(pParent->frame(),SIGNAL(activeContextChanged()),this,SLOT(updateDisplay()));
+ connect(pParent->frame(),SIGNAL(activeContextStateChanged()),this,SLOT(updateDisplay()));
+ connect(pParent->frame(),SIGNAL(activeConnectionAwayStateChanged()),this,SLOT(updateDisplay()));
+ */
+ updateDisplay();
+
+ if(!pixmap())
+ setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NOTUPDATE)));
+}
+
+KviStatusBarUpdateIndicator::~KviStatusBarUpdateIndicator()
+{
+}
+
+void KviStatusBarUpdateIndicator::updateDisplay()
+{
+ /*
+ KviIrcContext * c = statusBar()->frame()->activeContext();
+
+ if(c && c->isConnected())
+ {
+ setPixmap(c->connection()->userInfo()->isAway() ?
+ *(g_pIconManager->getSmallIcon(KVI_SMALLICON_AWAY)) : *(g_pIconManager->getSmallIcon(KVI_SMALLICON_NOTAWAY)));
+ } else {
+ // FIXME: We'd like to appear disabled here... but then we
+ // no longer get mouse events :/
+ setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_NOTAWAY)));
+ }
+ */
+}
+
+KviStatusBarApplet * CreateStatusBarUpdateIndicator(KviStatusBar * pBar,KviStatusBarAppletDescriptor *pDescriptor)
+{
+ return new KviStatusBarUpdateIndicator(pBar,pDescriptor);
+}
+
+void KviStatusBarUpdateIndicator::selfRegister(KviStatusBar * pBar)
+{
+ KviStatusBarAppletDescriptor * d = new KviStatusBarAppletDescriptor(
+ __tr2qs("Update Indicator"),"updateindicator",CreateStatusBarUpdateIndicator,"",*(g_pIconManager->getSmallIcon(KVI_SMALLICON_UPDATE)));
+ pBar->registerAppletDescriptor(d);
+}
+
+void KviStatusBarUpdateIndicator::mouseDoubleClickEvent(QMouseEvent * e)
+{
+ if(!(e->button() & Qt::LeftButton))return;
+ /*
+ KviIrcConnection * c = statusBar()->frame()->activeConnection();
+ if(!c)return;
+ if(c->state() != KviIrcConnection::Connected)return;
+ QString command;
+ if(m_bAwayOnAllContexts)
+ command = "if($away)back -a; else away -a";
+ else
+ command = "if($away)back; else away";
+ KviKvsScript::run(command,c->console());
+ */
+}
+
+QString KviStatusBarUpdateIndicator::tipText(const QPoint &)
+{
+ /*
+ KviIrcConnection * c = statusBar()->frame()->activeConnection();
+ QString ret = "<center><b>";
+ if(!c)goto not_connected;
+ if(c->state() != KviIrcConnection::Connected)goto not_connected;
+ if(c->userInfo()->isAway())
+ {
+ QString tmp = KviTimeUtils::formatTimeInterval(kvi_unixTime() - c->userInfo()->awayTime(),KviTimeUtils::NoLeadingEmptyIntervals);
+ ret += __tr2qs("Away since");
+ ret += ' ';
+ ret += tmp;
+ ret += "</b><br>";
+ ret += __tr2qs("Double click to leave away mode");
+ } else {
+ ret += __tr2qs("Not away");
+ ret += "</b><br>";
+ ret += __tr2qs("Double click to enter away mode");
+ }
+ ret += "</center>";
+ return ret;
+
+not_connected:
+ ret += __tr2qs("Not connected");
+ ret += "</b></center>";
+ return ret;
+ */
+}
diff --git a/src/kvirc/ui/kvi_statusbarapplet.h b/src/kvirc/ui/kvi_statusbarapplet.h
index 5e4043ce4..c3ea2e294 100644
--- a/src/kvirc/ui/kvi_statusbarapplet.h
+++ b/src/kvirc/ui/kvi_statusbarapplet.h
@@ -194,4 +194,20 @@ protected slots:
};
+class KviStatusBarUpdateIndicator : public KviStatusBarApplet
+{
+ Q_OBJECT
+public:
+ KviStatusBarUpdateIndicator(KviStatusBar * pParent,KviStatusBarAppletDescriptor *pDescriptor);
+ virtual ~KviStatusBarUpdateIndicator();
+public:
+ static void selfRegister(KviStatusBar * pBar);
+protected:
+ virtual void mouseDoubleClickEvent(QMouseEvent *e);
+ virtual QString tipText(const QPoint &);
+protected slots:
+ void updateDisplay();
+};
+
+
#endif //!_KVI_STATUSBARAPPLET_H_