aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Fabio Bas2008-09-08 14:35:26 +0000
committerGravatar Fabio Bas2008-09-08 14:35:26 +0000
commitf46107e03dc389c40d18d9f2687a0022ad96f392 (patch)
treec1a7323e90f1c425ea38f7b6251d1c818edda5eb /src/modules
parentupdated changelog (diff)
downloadKVIrc-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.h3
-rw-r--r--src/modules/notifier/notifiermessage.cpp16
-rw-r--r--src/modules/notifier/notifiermessage.h14
-rw-r--r--src/modules/notifier/notifierwindow.cpp83
-rw-r--r--src/modules/notifier/notifierwindow.h36
-rw-r--r--src/modules/notifier/notifierwindowtabs.cpp10
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);
}