diff options
| author | 2008-10-05 16:15:20 +0000 | |
|---|---|---|
| committer | 2008-10-05 16:15:20 +0000 | |
| commit | 11cf89af9ca2167cd902e67d7ceb7b0da393ace6 (patch) | |
| tree | 665258a5f9b590eaa584d0ed9c56a6c89937d569 /src | |
| parent | applying patch for #250 (diff) | |
| download | KVIrc-11cf89af9ca2167cd902e67d7ceb7b0da393ace6.tar.gz KVIrc-11cf89af9ca2167cd902e67d7ceb7b0da393ace6.tar.bz2 KVIrc-11cf89af9ca2167cd902e67d7ceb7b0da393ace6.zip | |
some work on the statusbar (far from being complete)
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@2659 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
| -rw-r--r-- | src/kvirc/ui/kvi_statusbar.cpp | 109 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_statusbar.h | 8 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_statusbarapplet.cpp | 21 |
3 files changed, 55 insertions, 83 deletions
diff --git a/src/kvirc/ui/kvi_statusbar.cpp b/src/kvirc/ui/kvi_statusbar.cpp index 52d07d743..c1ba8c24e 100644 --- a/src/kvirc/ui/kvi_statusbar.cpp +++ b/src/kvirc/ui/kvi_statusbar.cpp @@ -51,14 +51,6 @@ #include <QMouseEvent> #include <QMessageBox> -// This class COULD be derived also from KStatusBar but in fact -// it adds no graphic functionality and it has only useless methods for us. -// ... for now let's keep it simple :) - -/* - IDEAS: - - Countdown timer -*/ KviStatusBar::KviStatusBar(KviFrame * pFrame) : QStatusBar(pFrame) { @@ -92,8 +84,6 @@ KviStatusBar::KviStatusBar(KviFrame * pFrame) m_pMessageLabel = new QLabel("<b>[x]</b> x",this); m_pMessageLabel->setObjectName("msgstatuslabel"); m_pMessageLabel->setMargin(1); - //m_pMessageLabel->setAlignment(Qt::AlignVCenter | Qt::AlignLeft); - //m_pMessageLabel->setMinimumWidth(350); insertWidget(0,m_pMessageLabel); m_iLastMinimumHeight = 0; m_bStopLayoutOnAddRemove = true; @@ -437,7 +427,7 @@ void KviStatusBar::appletsPopupActivated(int iId) m_bStopLayoutOnAddRemove = true; KviStatusBarApplet * pApplet = d->create(this); m_pAppletList->removeRef(pApplet); - m_pAppletList->insert(iIdx + 1,pApplet); + m_pAppletList->insert(pApplet->index(),pApplet); m_bStopLayoutOnAddRemove = bSave; //if(!m_bStopLayoutOnAddRemove)updateLayout(); showLayoutHelp(); @@ -476,101 +466,81 @@ void KviStatusBar::unregisterApplet(KviStatusBarApplet * pApplet) //if(!m_bStopLayoutOnAddRemove)updateLayout(); } -/* -void KviStatusBar::paintEvent(QPaintEvent * e) +int KviStatusBar::insertPermanentWidgetAtTheEnd(QWidget * widget, int stretch) { - // avoid the ugly rectangle around the widgets painted by QStatusBar - QPainter p(this); - style().drawPrimitive(QStyle::PE_Panel,&p,rect(),colorGroup(),QStyle::Style_Raised,QStyleOption(1,1)); - QStatusBar::paintEvent(e); - qDrawWinPanel(&p,0,0,width(),height(),colorGroup(),false,0); + return insertPermanentWidget(m_pAppletList->count(), widget, stretch); } -*/ void KviStatusBar::mousePressEvent(QMouseEvent * e) { m_pClickedApplet = 0; - if((e->modifiers() & Qt::LeftButton) && (e->modifiers() & (Qt::ShiftModifier | Qt::ControlModifier))) + if((e->button() == Qt::LeftButton) && (e->modifiers() & (Qt::ShiftModifier | Qt::ControlModifier))) { // move! - m_pClickedApplet = appletAt(mapToGlobal(e->pos())); - if(!m_pClickedApplet) - return; - - m_pClickedApplet->select(); - g_pApp->setOverrideCursor(Qt::SizeAllCursor); + m_pClickedApplet = (KviStatusBarApplet*) childAt(e->pos()); + if(m_pClickedApplet) + { + m_pClickedApplet->select(); + g_pApp->setOverrideCursor(Qt::SizeAllCursor); + } } } void KviStatusBar::mouseMoveEvent(QMouseEvent * e) { + if(!m_pClickedApplet) return; if(!appletExists(m_pClickedApplet)) return; - debug ("index clicked %d",m_pClickedApplet->index()); + KviStatusBarApplet * pApplet = (KviStatusBarApplet *) childAt(e->pos()); - QPoint g = mapToGlobal(e->pos()); - KviStatusBarApplet * pApplet = appletAt(g,true); if(pApplet == m_pClickedApplet) return; - debug("Moved over index %d",pApplet->index()); // move! if(!pApplet) { pApplet = m_pAppletList->first(); - if(!pApplet) - return; // ops! - - if(e->pos().x() < (pApplet->x() + pApplet->width())) + while(pApplet) { - if(pApplet == m_pClickedApplet) - return; // don't move - } else { - pApplet = m_pAppletList->last(); - if(!pApplet) - return; - if(pApplet == m_pClickedApplet) - return; // no way to move + if(e->pos().x() < (pApplet->x()+pApplet->width())) + { + break; + } else { + pApplet = m_pAppletList->next(); + } } + if(!pApplet || pApplet == m_pClickedApplet) + return; // no way to move } - m_pAppletList->removeRef(m_pClickedApplet); + printf("inverting %d and %d\n",m_pClickedApplet->index(),pApplet->index()); - int iIndex = pApplet->index(); - debug ("Move from to index %d",iIndex); + //swap indexes + int oldIndex = m_pClickedApplet->index(); + m_pClickedApplet->setIndex(pApplet->index()); + pApplet->setIndex(oldIndex); - //removeWidget(m_pClickedApplet); - insertPermanentWidget(iIndex,m_pClickedApplet); + removeWidget(m_pClickedApplet); //Note: This function does not delete the widget but hides it. To add the widget again, you must call both the addWidget() and show() functions. + insertPermanentWidget(m_pClickedApplet->index(), m_pClickedApplet); + m_pClickedApplet->show(); - m_pClickedApplet->setIndex(iIndex); - //iIndex++; - //a->setIndex(iIndex); - //removeWidget(m_pClickedApplet); - - int iIdx = m_pAppletList->findRef(pApplet); - if(iIdx == -1) - m_pAppletList->append(m_pClickedApplet); // uhg ? - else { - QPoint p = pApplet->mapFromGlobal(g); - if(p.x() > (pApplet->width() / 2)) - iIdx++; // just after - m_pAppletList->insert(iIdx,m_pClickedApplet); - } - update(); - //layoutChildren(); + m_pClickedApplet->select(false); + g_pApp->restoreOverrideCursor(); + m_pClickedApplet = 0; } void KviStatusBar::mouseReleaseEvent(QMouseEvent * e) { - if(e->button() & Qt::LeftButton) + if(e->button() == Qt::LeftButton) { if(m_pClickedApplet && appletExists(m_pClickedApplet)) { m_pClickedApplet->select(false); g_pApp->restoreOverrideCursor(); + m_pClickedApplet = 0; } } } @@ -640,10 +610,13 @@ void KviStatusBar::mouseDoubleClickEvent(QMouseEvent * e) void KviStatusBar::queueMessage(KviStatusBarMessage * pMsg) { // Rearrange queue using the priority of the message - - if(pMsg->priority() > m_pMessageQueue->first()->priority()) - m_pMessageQueue->prepend(pMsg); - else + if(m_pMessageQueue->count() > 0) + { + if(pMsg->priority() > m_pMessageQueue->first()->priority()) + m_pMessageQueue->prepend(pMsg); + else + m_pMessageQueue->append(pMsg); + } else m_pMessageQueue->append(pMsg); if(!m_pMessageTimer) diff --git a/src/kvirc/ui/kvi_statusbar.h b/src/kvirc/ui/kvi_statusbar.h index 9fe0f2988..9424b5a44 100644 --- a/src/kvirc/ui/kvi_statusbar.h +++ b/src/kvirc/ui/kvi_statusbar.h @@ -183,6 +183,14 @@ public: */ void registerAppletDescriptor(KviStatusBarAppletDescriptor * d); + /** + * \brief Inserts an applet at the end of the statusbar as a permanent widget and returns its index. + * \param widget The widget to insert + * \param stretch Stretch factor used to compute widget size when the statusbar gets resized. Defaults to 0. + * \return int + */ + int insertPermanentWidgetAtTheEnd(QWidget * widget, int stretch = 0); + //void addApplet(KviStatusBarApplet * pApplet); //void removeApplet(KviStatusBarApplet * pApplet); protected: diff --git a/src/kvirc/ui/kvi_statusbarapplet.cpp b/src/kvirc/ui/kvi_statusbarapplet.cpp index dcbe5d7f6..aad80c474 100644 --- a/src/kvirc/ui/kvi_statusbarapplet.cpp +++ b/src/kvirc/ui/kvi_statusbarapplet.cpp @@ -61,15 +61,6 @@ #include <QEvent> #include <QMouseEvent> -// This class COULD be derived also from KStatusBar but in fact -// it adds no graphic functionality and it has only useless methods for us. -// ... for now let's keep it simple :) -// FIXME: Applets in modules SHOULD be unregistered automatically on unload! -/* - IDEAS: - - Countdown timer -*/ - KviStatusBarAppletDescriptor::KviStatusBarAppletDescriptor(const QString &szVisibleName,const QString &szInternalName,CreateAppletCallback pProc,const QString &szPreloadModule,const QPixmap &pixIcon) : KviHeapObject() { @@ -218,7 +209,7 @@ void KviStatusBarAwayIndicator::saveState(const char * prefix,KviConfig *cfg) KviStatusBarApplet * CreateStatusBarAwayIndicator(KviStatusBar * pBar,KviStatusBarAppletDescriptor *pDescriptor) { KviStatusBarApplet * applet=new KviStatusBarAwayIndicator(pBar,pDescriptor); - applet->setIndex(pBar->insertPermanentWidget(-1,applet)); + applet->setIndex(pBar->insertPermanentWidgetAtTheEnd(applet)); return applet; } @@ -385,7 +376,7 @@ void KviStatusBarLagIndicator::updateDisplay() KviStatusBarApplet * CreateStatusBarLagIndicator(KviStatusBar * pBar,KviStatusBarAppletDescriptor *pDescriptor) { KviStatusBarApplet * applet=new KviStatusBarLagIndicator(pBar,pDescriptor); - applet->setIndex(pBar->insertPermanentWidget(-1,applet)); + applet->setIndex(pBar->insertPermanentWidgetAtTheEnd(applet)); return applet; } @@ -544,7 +535,7 @@ void KviStatusBarClock::saveState(const char * prefix,KviConfig *cfg) KviStatusBarApplet * CreateStatusBarClock(KviStatusBar * pBar,KviStatusBarAppletDescriptor *pDescriptor) { KviStatusBarApplet * applet=new KviStatusBarClock(pBar,pDescriptor); - applet->setIndex(pBar->insertPermanentWidget(-1,applet)); + applet->setIndex(pBar->insertPermanentWidgetAtTheEnd(applet)); return applet; } @@ -622,7 +613,7 @@ void KviStatusBarConnectionTimer::saveState(const char * prefix,KviConfig *cfg) KviStatusBarApplet * CreateStatusBarConnectionTimer(KviStatusBar * pBar,KviStatusBarAppletDescriptor *pDescriptor) { KviStatusBarApplet * applet=new KviStatusBarConnectionTimer(pBar,pDescriptor); - applet->setIndex(pBar->insertPermanentWidget(-1,applet)); + applet->setIndex(pBar->insertPermanentWidgetAtTheEnd(applet)); return applet; } @@ -648,7 +639,7 @@ KviStatusBarSeparator::~KviStatusBarSeparator() KviStatusBarApplet * CreateStatusBarSeparator(KviStatusBar * pBar,KviStatusBarAppletDescriptor *pDescriptor) { KviStatusBarApplet * applet=new KviStatusBarSeparator(pBar,pDescriptor); - applet->setIndex(pBar->insertPermanentWidget(-1,applet)); + applet->setIndex(pBar->insertPermanentWidgetAtTheEnd(applet)); return applet; } @@ -717,7 +708,7 @@ KviStatusBarApplet * CreateStatusBarUpdateIndicator(KviStatusBar * pBar,KviStatu { // return new KviStatusBarUpdateIndicator(pBar,pDescriptor); KviStatusBarApplet * applet=new KviStatusBarUpdateIndicator(pBar,pDescriptor); - applet->setIndex(pBar->insertPermanentWidget(-1,applet)); + applet->setIndex(pBar->insertPermanentWidgetAtTheEnd(applet)); return applet; } |
