diff options
| author | 2008-09-08 14:35:26 +0000 | |
|---|---|---|
| committer | 2008-09-08 14:35:26 +0000 | |
| commit | f46107e03dc389c40d18d9f2687a0022ad96f392 (patch) | |
| tree | c1a7323e90f1c425ea38f7b6251d1c818edda5eb /src/modules | |
| parent | updated changelog (diff) | |
| download | KVIrc-f46107e03dc389c40d18d9f2687a0022ad96f392.tar.gz KVIrc-f46107e03dc389c40d18d9f2687a0022ad96f392.tar.bz2 KVIrc-f46107e03dc389c40d18d9f2687a0022ad96f392.zip | |
initial qt4 port of the notifier module
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@2422 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/eventeditor/eventeditor.h | 3 | ||||
| -rw-r--r-- | src/modules/notifier/notifiermessage.cpp | 16 | ||||
| -rw-r--r-- | src/modules/notifier/notifiermessage.h | 14 | ||||
| -rw-r--r-- | src/modules/notifier/notifierwindow.cpp | 83 | ||||
| -rw-r--r-- | src/modules/notifier/notifierwindow.h | 36 | ||||
| -rw-r--r-- | src/modules/notifier/notifierwindowtabs.cpp | 10 |
6 files changed, 84 insertions, 78 deletions
diff --git a/src/modules/eventeditor/eventeditor.h b/src/modules/eventeditor/eventeditor.h index 0f5f9b269..5e7e3c6ee 100644 --- a/src/modules/eventeditor/eventeditor.h +++ b/src/modules/eventeditor/eventeditor.h @@ -24,14 +24,13 @@ #include "kvi_window.h" #include "kvi_string.h" -//#include "kvi_tal_listview.h" +#include "kvi_tal_popupmenu.h" #include <QWidget> #include <QLineEdit> #include <QTreeWidget> class KviScriptEditor; -class KviTalPopupMenu; class KviEventListViewItem : public QTreeWidgetItem { diff --git a/src/modules/notifier/notifiermessage.cpp b/src/modules/notifier/notifiermessage.cpp index e9e1dd7d0..2726e3bfb 100644 --- a/src/modules/notifier/notifiermessage.cpp +++ b/src/modules/notifier/notifiermessage.cpp @@ -49,16 +49,17 @@ #include <QImage> #include <QDesktopWidget> #include <QToolTip> -#include <q3popupmenu.h> -#define QPopupMenu Q3PopupMenu +#include "kvi_tal_popupmenu.h" extern kvi_time_t g_tNotifierDisabledUntil; KviNotifierMessage::KviNotifierMessage(KviNotifierWindow * pNotifierWindow, QPixmap * pImage, const QString &szText) { - m_pText = new QSimpleRichText(KviMircCntrl::stripControlBytes(szText),pNotifierWindow->defaultFont()); - m_pText->setWidth(pNotifierWindow->textWidth()); + m_pText = new QTextDocument(); + m_pText->setHtml(KviMircCntrl::stripControlBytes(szText)); + m_pText->setDefaultFont(pNotifierWindow->defaultFont()); + m_pText->setTextWidth(pNotifierWindow->textWidth()); m_pImage = pImage; m_bHistoric = false; } @@ -71,8 +72,7 @@ KviNotifierMessage::~KviNotifierMessage() static void increase_transparency(QImage &buffer,QImage &srcimg,int iDivisor) { - buffer.create(srcimg.width(),srcimg.height(),32); - buffer.setAlphaBuffer(true); + buffer = QImage(srcimg.size(),QImage::Format_ARGB32); for(int y = 0;y < buffer.height();y++) { @@ -95,7 +95,7 @@ void KviNotifierMessage::setHistoric() if(!m_pImage)return; if(!m_pImage->hasAlphaChannel())return; QImage tmp; - QImage out = m_pImage->convertToImage(); + QImage out = m_pImage->toImage(); increase_transparency(tmp,out,2); - m_pImage->convertFromImage(tmp); + *m_pImage = QPixmap::fromImage(tmp); } diff --git a/src/modules/notifier/notifiermessage.h b/src/modules/notifier/notifiermessage.h index 645b6c062..225e813cf 100644 --- a/src/modules/notifier/notifiermessage.h +++ b/src/modules/notifier/notifiermessage.h @@ -3,7 +3,7 @@ //============================================================================= // // File : notifiermessage.h -// Created on mar 02 nov 2004 02:41:18 by +// Created on mar 02 nov 2004 02:41:18 by // Iacopo Palazzi < iakko(at)siena(dot)linux(dot)it > // // This file is part of the KVIrc distribution @@ -39,10 +39,8 @@ #include <QFont> #include <QColor> #include <QLineEdit> -#include <q3popupmenu.h> -#include <q3simplerichtext.h> -#define QSimpleRichText Q3SimpleRichText -#define QPopupMenu Q3PopupMenu +#include <QMenu> +#include <QTextDocument> class QPopupMenu; class KviWindow; @@ -65,7 +63,7 @@ public: protected: KviWindow * m_pWindow; QPixmap * m_pImage; - QSimpleRichText * m_pText; + QTextDocument * m_pText; bool m_bHistoric; // ================================ @@ -78,8 +76,8 @@ public: void setHistoric(); void setWindow(KviWindow * pWnd){ m_pWindow = pWnd; }; QPixmap * image(){ return m_pImage; }; - QSimpleRichText * text(){ return m_pText; }; - + QTextDocument * text(){ return m_pText; }; + protected: diff --git a/src/modules/notifier/notifierwindow.cpp b/src/modules/notifier/notifierwindow.cpp index 696a2b249..c981134d5 100644 --- a/src/modules/notifier/notifierwindow.cpp +++ b/src/modules/notifier/notifierwindow.cpp @@ -40,6 +40,7 @@ #include "kvi_options.h" #include "kvi_userinput.h" +#include <QAbstractTextDocumentLayout> #include <QApplication> #include <QImage> #include <QDesktopWidget> @@ -49,30 +50,27 @@ #include <QFontMetrics> #include <QRegExp> #include <QPainter> -#include <q3popupmenu.h> -#include <q3simplerichtext.h> -#define QPopupMenu Q3PopupMenu -#define QSimpleRichText Q3SimpleRichText extern KviNotifierWindow * g_pNotifierWindow; KviNotifierWindow::KviNotifierWindow() -: QWidget(0,"kvirc_notifier_window", +: QWidget(0, #if defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW) Qt::WStyle_Customize | Qt::WStyle_NoBorder | Qt::WStyle_Tool | Qt::WStyle_StaysOnTop) #else - Qt::WStyle_Customize | - Qt::WStyle_NoBorder | + Qt::FramelessWindowHint | #ifndef COMPILE_ON_MAC - Qt::WStyle_Tool | - Qt::WX11BypassWM | + Qt::Tool | + Qt::X11BypassWindowManagerHint | #endif - Qt::WStyle_StaysOnTop) + Qt::WindowStaysOnTopHint) #endif { + setObjectName("kvirc_notifier_window"); + g_pNotifierWindow = this; m_eState = Hidden; @@ -192,9 +190,9 @@ int KviNotifierWindow::countTabs() void KviNotifierWindow::reloadImages() { - m_pixBackground.resize(WDG_MIN_WIDTH,WDG_MIN_HEIGHT); + m_pixBackground = QPixmap(WDG_MIN_WIDTH,WDG_MIN_HEIGHT); m_pixBackground.fill(); - m_pixBackgroundHighlighted.resize(m_pixBackground.size()); + m_pixBackgroundHighlighted = QPixmap(m_pixBackground.size()); m_pixBackgroundHighlighted.fill(); m_pWndBorder->resize(m_pixBackground.size()); @@ -316,12 +314,12 @@ void KviNotifierWindow::doShow(bool bDoAnimate) m_wndRect.x(), m_wndRect.y(), m_wndRect.width(), - m_wndRect.height()).convertToImage(); + m_wndRect.height()).toImage(); #endif // QPixmap tmp = QPixmap::grabWindow( QApplication::desktop()->winId(),m_wndRect.x(), m_wndRect.y(), m_wndRect.width(), m_wndRect.height()); // tmp.save("/root/pix.png","PNG"); - m_pixForeground.resize(m_pixBackground.size()); - m_imgBuffer.create(m_pixBackground.width(),m_pixBackground.height(),32); + m_pixForeground = QPixmap(m_pixBackground.size()); + m_imgBuffer = QImage(m_pixBackground.width(),m_pixBackground.height(),QImage::Format_RGB32); if(bDoAnimate) { m_pShowHideTimer = new QTimer(); @@ -649,7 +647,7 @@ void KviNotifierWindow::paintEvent(QPaintEvent * e) #if (defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MAC) || defined(COMPILE_ON_MINGW)) px.drawPixmap(0,0,m_pixForeground); #else - QImage temp_image = m_pixForeground.convertToImage(); + QImage temp_image = m_pixForeground.toImage(); blend_images(m_imgBuffer,m_imgDesktop,temp_image,m_dOpacity); px.drawImage(0,0,m_imgBuffer); #endif @@ -663,12 +661,13 @@ void KviNotifierWindow::paintEvent(QPaintEvent * e) void KviNotifierWindow::redrawText() { QPainter p(&m_pixForeground); + QAbstractTextDocumentLayout::PaintContext context; // the current tab KviNotifierWindowTab * tab = m_pWndTabs->currentTab(); if(!tab)return; - // it's message list + // its message list KviPointerList<KviNotifierMessage> * l = tab->messageList(); if(!l)return; if(l->isEmpty())return; @@ -693,32 +692,42 @@ void KviNotifierWindow::redrawText() if(m_pLineEdit->isVisible())y -= (m_pLineEdit->height() + 4); - QColorGroup grp = colorGroup(); + QPalette palette = QPalette(); int idx = iIdx; KviNotifierMessage * m = cur; while(m && (y > m_pWndBody->textRect().y())) { - int iHeight = m->text()->height(); + int iHeight = m->text()->size().height(); if(iHeight < 18)iHeight = 18; y -= iHeight; if(m->historic()) { - grp.setColor(QColorGroup::Text,m_clrHistoricText); + p.setPen(m_clrHistoricText); } else { if(m == last) - grp.setColor(QColorGroup::Text,m_clrCurText); + p.setPen(m_clrCurText); else { int iClrIdx = l->count() - (idx + 2); - if(iClrIdx < 0)iClrIdx = 0; + if(iClrIdx < 0) + iClrIdx = 0; else if(iClrIdx >= NUM_OLD_COLORS)iClrIdx = (NUM_OLD_COLORS - 1); - grp.setColor(QColorGroup::Text,m_clrOldText[iClrIdx]); + p.setPen(m_clrOldText[iClrIdx]); } } + int iMaxY = y > m_pWndBody->textRect().y() ? y : m_pWndBody->textRect().y(); QRect clip(m_pWndBody->textRect().x() + 20,iMaxY,m_pWndBody->textRect().width() - 20,iHeight); - m->text()->draw(&p,m_pWndBody->textRect().x() + 20,y,clip,grp); // +// m->text()->drawContents(&p); + + p.save(); + + m->text()->setPageSize(clip.size()); + p.translate(clip.x(),clip.y()); + m->text()->documentLayout()->draw(&p, context); + p.restore(); + if(y > m_pWndBody->textRect().y()) { if(m->image()) @@ -738,7 +747,7 @@ void KviNotifierWindow::redrawText() title += " "; title += tab->window()->plainTextCaption(); } - p.drawText(m_pWndBorder->titleRect(),Qt::AlignLeft | Qt::SingleLine,title); + p.drawText(m_pWndBorder->titleRect(),Qt::AlignLeft | Qt::TextSingleLine,title); p.end(); } @@ -815,7 +824,7 @@ void KviNotifierWindow::mousePressEvent(QMouseEvent * e) m_tAutoHideAt = 0; stopAutoHideTimer(); - setActiveWindow(); + activateWindow(); setFocus(); m_pntClick = e->pos(); @@ -1111,9 +1120,9 @@ void KviNotifierWindow::redrawWindow() if(m_pixBackground.size()!=m_wndRect.size()) { // Redraw only if size was modified.. - m_pixBackground.resize(m_wndRect.size()); - m_pixForeground.resize(m_wndRect.size()); - m_pixBackgroundHighlighted.resize(m_wndRect.size()); + m_pixBackground = QPixmap(m_wndRect.size()); + m_pixForeground = QPixmap(m_wndRect.size()); + m_pixBackgroundHighlighted = QPixmap(m_wndRect.size()); m_pWndBorder->resize( m_wndRect.size() ); m_pWndTabs->setWidth( m_pWndBorder->tabsRect().width() ); @@ -1133,7 +1142,7 @@ void KviNotifierWindow::redrawWindow() m_pWndBody->draw(&paint); m_pProgressBar->draw(&paint); paint.end(); - bitBlt(&m_pixForeground, 0,0, &m_pixBackgroundHighlighted); + m_pixForeground = m_pixBackgroundHighlighted.copy(); m_pWndBorder->touch(); m_pWndTabs->touch(); m_pWndBody->touch(); @@ -1144,7 +1153,7 @@ void KviNotifierWindow::redrawWindow() m_pWndBody->draw(&paint); m_pProgressBar->draw(&paint); paint.end(); - bitBlt(&m_pixForeground, 0,0, &m_pixBackground); + m_pixForeground = m_pixBackground.copy(); } } @@ -1187,9 +1196,9 @@ void KviNotifierWindow::contextPopup(const QPoint &pos) { if(!m_pContextPopup) { - m_pContextPopup = new QPopupMenu(this); + m_pContextPopup = new KviTalPopupMenu(this); connect(m_pContextPopup,SIGNAL(aboutToShow()),this,SLOT(fillContextPopup())); - m_pDisablePopup = new QPopupMenu(this); + m_pDisablePopup = new KviTalPopupMenu(this); } m_pContextPopup->popup(pos); @@ -1300,17 +1309,17 @@ void KviNotifierWindow::showLineEdit(bool bShow) //if(m_pLineEdit->isVisible())return; if(!m_pWndTabs->currentMessage())return; if(!m_pWndTabs->currentTab()->window())return; - QToolTip::remove(m_pLineEdit); + m_pLineEdit->setToolTip("");; QString tip = __tr2qs_ctx("Write text or commands to window","notifier"); tip += " \""; tip += m_pWndTabs->currentTab()->window()->plainTextCaption(); tip += "\""; - QToolTip::add(m_pLineEdit,tip); + m_pLineEdit->setToolTip(tip); m_pLineEdit->setGeometry(m_pWndBody->textRect().x(),m_pWndBody->textRect().y() + m_pWndBody->textRect().height() - m_iInputHeight,m_pWndBody->textRect().width(),m_iInputHeight); m_pLineEdit->show(); m_pLineEdit->setFocus(); redrawWindow(); - setActiveWindow(); + activateWindow(); } else { if(!m_pLineEdit->isVisible())return; m_pLineEdit->hide(); @@ -1332,7 +1341,7 @@ bool KviNotifierWindow::eventFilter(QObject * pEdit,QEvent * e) m_tAutoHideAt = 0; stopAutoHideTimer(); stopBlinkTimer(); - setActiveWindow(); + activateWindow(); m_pLineEdit->setFocus(); if(bWasBlinkOn)update(); return true; diff --git a/src/modules/notifier/notifierwindow.h b/src/modules/notifier/notifierwindow.h index 0887b2a0b..4ea175f2e 100644 --- a/src/modules/notifier/notifierwindow.h +++ b/src/modules/notifier/notifierwindow.h @@ -29,6 +29,7 @@ #include "kvi_settings.h" #include "kvi_qstring.h" #include "kvi_pointerlist.h" +#include "kvi_tal_popupmenu.h" #include "kvi_time.h" #include <QBitmap> @@ -44,7 +45,6 @@ #include <QWidget> class QPainter; -class QPopupMenu; class KviWindow; class KviNotifierMessage; class KviNotifierWindowBody; @@ -73,7 +73,7 @@ protected: QPixmap m_pixBackground; // our background image QPixmap m_pixBackgroundHighlighted; QPixmap m_pixForeground; // we paint the stuff HERE - + // Notifier graphic layout QPixmap m_pixBckgrnd; @@ -89,7 +89,7 @@ protected: QFont * m_pDefaultFont; QFont * m_pTitleFont; - + QRect m_wndRect; QColor m_clrCurText; @@ -104,26 +104,26 @@ protected: bool m_bLeftButtonIsPressed; bool m_bDiagonalResizing; bool m_bResizing; - - int m_whereResizing; - - QPoint m_pntDrag; - QPoint m_pntPos; - QPoint m_pntClick; - int m_iInputHeight; - int m_iBlinkTimeout; - int m_iBlinkCount; - QPopupMenu * m_pContextPopup; - QPopupMenu * m_pDisablePopup; + + int m_whereResizing; + + QPoint m_pntDrag; + QPoint m_pntPos; + QPoint m_pntClick; + int m_iInputHeight; + int m_iBlinkTimeout; + int m_iBlinkCount; + KviTalPopupMenu * m_pContextPopup; + KviTalPopupMenu * m_pDisablePopup; KviWindow * m_pWindowToRaise; kvi_time_t m_tAutoHideAt; kvi_time_t m_tStartedAt; QTime m_qtStartedAt; - bool m_bDisableHideOnMainWindowGotAttention; - //bool m_bForceShowing; - + bool m_bDisableHideOnMainWindowGotAttention; + //bool m_bForceShowing; + QCursor m_cursor; - + KviNotifierWindowTabs * m_pWndTabs; KviNotifierWindowProgressBar * m_pProgressBar; KviNotifierWindowBody * m_pWndBody; diff --git a/src/modules/notifier/notifierwindowtabs.cpp b/src/modules/notifier/notifierwindowtabs.cpp index 815fc442e..bdf6ae318 100644 --- a/src/modules/notifier/notifierwindowtabs.cpp +++ b/src/modules/notifier/notifierwindowtabs.cpp @@ -198,7 +198,7 @@ KviNotifierWindowTabs::~KviNotifierWindowTabs() { QMap<KviWindow *, KviNotifierWindowTab *>::Iterator tab; for(tab = m_tabMap.begin(); tab != m_tabMap.end(); tab++ ) - delete tab.data(); + delete tab.value(); m_tabMap.clear(); delete m_pFocusedFont; delete m_pUnfocusedFont; @@ -425,8 +425,8 @@ void KviNotifierWindowTabs::mousePressEvent(QMouseEvent * e) { QMap<KviWindow *, KviNotifierWindowTab *>::Iterator tab; for (tab = m_tabMap.begin(); tab != m_tabMap.end(); tab++ ) { - if (tab.data()->rect().contains(e->pos())) { - setFocusOn(tab.data()); + if (tab.value()->rect().contains(e->pos())) { + setFocusOn(tab.value()); return; } } @@ -529,7 +529,7 @@ void KviNotifierWindowTabs::draw(QPainter * p) { if(!m_bNeedToRedraw)return; - m_pPixmap->resize(m_rct.width(), m_rct.height()); + *m_pPixmap = QPixmap(m_rct.size()); m_pPainter->begin(m_pPixmap); @@ -654,7 +654,7 @@ void KviNotifierWindowTabs::markAllMessagesAsHistoric() void KviNotifierWindowTabs::closeTab(KviWindow * pWnd) { - KviNotifierWindowTab * pTab = m_tabMap.find(pWnd).data(); + KviNotifierWindowTab * pTab = m_tabMap.find(pWnd).value(); closeTab(pWnd, pTab); } |
