aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2008-01-16 13:47:18 +0000
committerGravatar Szymon Tomasz Stefanek2008-01-16 13:47:18 +0000
commit74f28ff4c6f7ea0687c2633007f98875ef8b5d30 (patch)
tree58f56c1aa95e09b7c46152487210c4bd1e14a58b /src
parentupdate (diff)
downloadKVIrc-74f28ff4c6f7ea0687c2633007f98875ef8b5d30.tar.gz
KVIrc-74f28ff4c6f7ea0687c2633007f98875ef8b5d30.tar.bz2
KVIrc-74f28ff4c6f7ea0687c2633007f98875ef8b5d30.zip
Selectively backporting Alexey's qmake branch work into trunk: no longer depending on Q3MainWindow, Q3ToolBar, Q3DockWindow etc...
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@1092 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
-rw-r--r--src/kvilib/build/Makefile.am14
-rw-r--r--src/kvilib/tal/kvi_tal_mainwindow.cpp27
-rw-r--r--src/kvilib/tal/kvi_tal_mainwindow_qt4.h7
-rw-r--r--src/kvilib/tal/kvi_tal_toolbar.cpp44
-rw-r--r--src/kvilib/tal/kvi_tal_toolbar_qt4.h21
-rw-r--r--src/kvilib/tal/kvi_tal_toolbardocktype.h6
-rw-r--r--src/kvirc/build/Makefile.am10
-rw-r--r--src/kvirc/kernel/kvi_action.cpp3
-rw-r--r--src/kvirc/kernel/kvi_coreactions.cpp13
-rw-r--r--src/kvirc/module/kvi_module.h3
-rw-r--r--src/kvirc/module/kvi_modulemanager.cpp30
-rw-r--r--src/kvirc/ui/kvi_customtoolbar.cpp189
-rw-r--r--src/kvirc/ui/kvi_customtoolbar.h4
-rw-r--r--src/kvirc/ui/kvi_frame.cpp70
-rw-r--r--src/kvirc/ui/kvi_frame.h6
-rw-r--r--src/kvirc/ui/kvi_listview.cpp2
-rw-r--r--src/kvirc/ui/kvi_taskbar.cpp140
-rw-r--r--src/kvirc/ui/kvi_taskbar.h36
-rw-r--r--src/kvirc/ui/kvi_toolbar.cpp6
-rw-r--r--src/modules/objects/class_dockwindow.cpp61
-rw-r--r--src/modules/objects/class_mainwindow.cpp6
-rw-r--r--src/modules/objects/class_toolbar.cpp3
-rw-r--r--src/modules/url/libkviurl.cpp4
23 files changed, 501 insertions, 204 deletions
diff --git a/src/kvilib/build/Makefile.am b/src/kvilib/build/Makefile.am
index 1edff1b76..51e9333ad 100644
--- a/src/kvilib/build/Makefile.am
+++ b/src/kvilib/build/Makefile.am
@@ -238,26 +238,26 @@ headers_HEADERS = \
../ext/moc_%.cpp: ../ext/%.h
- $(SS_QT_MOC) $< -o $@
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
../file/moc_%.cpp: ../file/%.h
- $(SS_QT_MOC) $< -o $@
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
../irc/moc_%.cpp: ../irc/%.h
- $(SS_QT_MOC) $< -o $@
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
../net/moc_%.cpp: ../net/%.h
- $(SS_QT_MOC) $< -o $@
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
../system/moc_%.cpp: ../system/%.h
- $(SS_QT_MOC) $< -o $@
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
../tal/moc_%.cpp: ../tal/%.h
- $(SS_QT_MOC) $< -o $@
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
%.moc: %.h
- $(SS_QT_MOC) $< -o $@
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
#%.h.gch: %.h
# $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c $< -o $@
diff --git a/src/kvilib/tal/kvi_tal_mainwindow.cpp b/src/kvilib/tal/kvi_tal_mainwindow.cpp
index 48294e427..accfe17bf 100644
--- a/src/kvilib/tal/kvi_tal_mainwindow.cpp
+++ b/src/kvilib/tal/kvi_tal_mainwindow.cpp
@@ -32,18 +32,25 @@
{
}
- KviTalMainWindow::~KviTalMainWindow()
- {
- }
-
#include "kvi_tal_mainwindow_kde.moc"
#else
#ifdef COMPILE_USE_QT4
KviTalMainWindow::KviTalMainWindow(QWidget * par,const char * nam)
- : Q3MainWindow(par,nam)
+ : QMainWindow(par,nam)
+ {
+ }
+
+ bool KviTalMainWindow::usesBigPixmaps()
{
+ return (iconSize().width() > 40);
+ }
+
+ void KviTalMainWindow::setUsesBigPixmaps(bool b)
+ {
+ if(b)setIconSize(QSize(48,48));
+ else setIconSize(QSize(24,24));
}
#include "kvi_tal_mainwindow_qt4.moc"
#else
@@ -53,10 +60,10 @@
}
#include "kvi_tal_mainwindow_qt3.moc"
#endif
-
- KviTalMainWindow::~KviTalMainWindow()
- {
- }
-
#endif
+
+KviTalMainWindow::~KviTalMainWindow()
+{
+}
+
diff --git a/src/kvilib/tal/kvi_tal_mainwindow_qt4.h b/src/kvilib/tal/kvi_tal_mainwindow_qt4.h
index 840b613ee..f979b465a 100644
--- a/src/kvilib/tal/kvi_tal_mainwindow_qt4.h
+++ b/src/kvilib/tal/kvi_tal_mainwindow_qt4.h
@@ -23,14 +23,17 @@
// Inc. ,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
-#include <q3mainwindow.h>
+#include <qmainwindow.h>
-class KVILIB_API KviTalMainWindow : public Q3MainWindow
+class KVILIB_API KviTalMainWindow : public QMainWindow
{
Q_OBJECT
public:
KviTalMainWindow(QWidget * par,const char * nam);
~KviTalMainWindow();
+public:
+ bool usesBigPixmaps();
+ void setUsesBigPixmaps(bool b);
};
#endif // _KVI_TAL_MAINWINDOW_QT_H_
diff --git a/src/kvilib/tal/kvi_tal_toolbar.cpp b/src/kvilib/tal/kvi_tal_toolbar.cpp
index 510bab4ae..e1e3a37b6 100644
--- a/src/kvilib/tal/kvi_tal_toolbar.cpp
+++ b/src/kvilib/tal/kvi_tal_toolbar.cpp
@@ -42,16 +42,48 @@
#else
#ifdef COMPILE_USE_QT4
- KviTalToolBar::KviTalToolBar(const QString &label,Q3MainWindow *w,QT_TOOLBARDOCK_TYPE dock,bool bNewLine,const char * nam)
- : Q3ToolBar(label,w,dock,bNewLine,nam)
+
+ KviTalToolBar::KviTalToolBar(const QString &label,QMainWindow *w,QT_TOOLBARDOCK_TYPE dock,bool bNewLine,const char * nam)
+ //: Q3ToolBar(label,w,dock,bNewLine,nam)
+ : QToolBar(label,w)
+ {
+ //setFrameStyle(QFrame::NoFrame);
+ setObjectName(nam);
+ if(!layout())
+ this->setLayout(new QBoxLayout(QBoxLayout::LeftToRight));
+ w->addToolBar(dock,this);
+ }
+ KviTalToolBar::KviTalToolBar(QMainWindow *w,const char * name)
+ : QToolBar(w)
{
- setFrameStyle(QFrame::NoFrame);
+ //setFrameStyle(QFrame::NoFrame);
+ setObjectName(name);
+ if(!layout())
+ this->setLayout(new QBoxLayout(QBoxLayout::LeftToRight));
+ w->addToolBar(this);
}
- KviTalToolBar::KviTalToolBar(Q3MainWindow *w,const char * name)
- : Q3ToolBar(w,name)
+
+ QBoxLayout * KviTalToolBar::boxLayout()
+ {
+ return (QBoxLayout*)this->layout();
+ }
+
+ void KviTalToolBar::setBoxLayout(QBoxLayout * l)
{
- setFrameStyle(QFrame::NoFrame);
+ this->setLayout(l);
}
+
+ bool KviTalToolBar::usesBigPixmaps()
+ {
+ return (iconSize().width() > 40);
+ }
+
+ void KviTalToolBar::setUsesBigPixmaps(bool b)
+ {
+ if(b)setIconSize(QSize(48,48));
+ else setIconSize(QSize(22,22));
+ }
+
#include "kvi_tal_toolbar_qt4.moc"
#else
diff --git a/src/kvilib/tal/kvi_tal_toolbar_qt4.h b/src/kvilib/tal/kvi_tal_toolbar_qt4.h
index def393597..c2f9ae335 100644
--- a/src/kvilib/tal/kvi_tal_toolbar_qt4.h
+++ b/src/kvilib/tal/kvi_tal_toolbar_qt4.h
@@ -21,20 +21,27 @@
// along with this program. If not, write to the Free Software Foundation,
// Inc. ,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
-#include "kvi_settings.h"
-#include <q3toolbar.h>
-#include <q3mainwindow.h>
+#include "kvi_settings.h"
#include "kvi_tal_toolbardocktype.h"
-class KVILIB_API KviTalToolBar : public Q3ToolBar
+#include <QToolBar>
+#include <QMainWindow>
+#include <QBoxLayout>
+
+
+class KVILIB_API KviTalToolBar : public QToolBar
{
Q_OBJECT
public:
- KviTalToolBar(const QString &label,Q3MainWindow *w,QT_TOOLBARDOCK_TYPE dock = QT_DOCK_TOP,bool bNewLine = false,const char * nam = 0);
- KviTalToolBar(Q3MainWindow *w,const char * name=0);
-
+ KviTalToolBar(const QString &label,QMainWindow *w,QT_TOOLBARDOCK_TYPE dock = QT_DOCK_TOP,bool bNewLine = false,const char * nam = 0);
+ KviTalToolBar(QMainWindow *w,const char * name=0);
~KviTalToolBar();
+public:
+ QBoxLayout * boxLayout();
+ void setBoxLayout(QBoxLayout *l);
+ bool usesBigPixmaps();
+ void setUsesBigPixmaps(bool b);
};
#endif //_KVI_TAL_TOOLBAR_QT_H_
diff --git a/src/kvilib/tal/kvi_tal_toolbardocktype.h b/src/kvilib/tal/kvi_tal_toolbardocktype.h
index da39cafba..c25babee3 100644
--- a/src/kvilib/tal/kvi_tal_toolbardocktype.h
+++ b/src/kvilib/tal/kvi_tal_toolbardocktype.h
@@ -25,7 +25,7 @@
#include "kvi_settings.h"
//#define COMPILE_USE_QT4
#ifdef COMPILE_USE_QT4
-
+/*
#define QT_TOOLBARDOCK_TYPE Qt::Dock
#define QT_DOCK_TOP Qt::DockTop
#define QT_DOCK_LEFT Qt::DockLeft
@@ -34,7 +34,7 @@
#define QT_DOCK_MINIMIZED Qt::DockMinimized
#define QT_DOCK_TORNOFF Qt::DockTornOff
#define QT_DOCK_UNMANAGED Qt::DockUnmanaged
- /*
+*/
// We will need these when we'll use the real QToolBar in Qt 4.x
#define QT_TOOLBARDOCK_TYPE Qt::ToolBarArea
#define QT_DOCK_TOP Qt::TopToolBarArea
@@ -45,7 +45,7 @@
#define QT_DOCK_MINIMIZED Qt::TopToolBarArea
#define QT_DOCK_TORNOFF Qt::TopToolBarArea
#define QT_DOCK_UNMANAGED Qt::TopToolBarArea
- */
+
#else
#if QT_VERSION >= 300
#define QT_TOOLBARDOCK_TYPE Qt::Dock
diff --git a/src/kvirc/build/Makefile.am b/src/kvirc/build/Makefile.am
index 9d8675db9..44db487eb 100644
--- a/src/kvirc/build/Makefile.am
+++ b/src/kvirc/build/Makefile.am
@@ -456,7 +456,7 @@ headers_HEADERS = ../kernel/kvi_action.h \
../ui/kvi_toolwindows_container.h
%.moc: %.h
- $(SS_QT_MOC) $< -o $@
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
# Command useful to find the moc dependancies
# DIRS="kernel sparser ui uparser"
@@ -503,16 +503,16 @@ headers_HEADERS = ../kernel/kvi_action.h \
../kvs/moc_%.cpp: ../kvs/%.h
- $(SS_QT_MOC) $< -o $@
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
../kernel/moc_%.cpp: ../kernel/%.h
- $(SS_QT_MOC) $< -o $@
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
../module/moc_%.cpp: ../module/%.h
- $(SS_QT_MOC) $< -o $@
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
../ui/moc_%.cpp: ../ui/%.h
- $(SS_QT_MOC) $< -o $@
+ $(SS_QT_MOC) $(SS_QT_MOC_FLAGS) $< -o $@
#
diff --git a/src/kvirc/kernel/kvi_action.cpp b/src/kvirc/kernel/kvi_action.cpp
index 0a2dbc764..50c26280f 100644
--- a/src/kvirc/kernel/kvi_action.cpp
+++ b/src/kvirc/kernel/kvi_action.cpp
@@ -418,6 +418,9 @@ QWidget * KviAction::addToCustomToolBar(KviCustomToolBar *pParentToolBar)
visibleName(),
visibleName(),
this,SLOT(activate()),pParentToolBar,m_szName);
+#ifdef COMPILE_USE_QT4
+ pParentToolBar->addWidget(b);
+#endif
if(!isEnabled())b->setEnabled(false);
registerWidget(b);
return b;
diff --git a/src/kvirc/kernel/kvi_coreactions.cpp b/src/kvirc/kernel/kvi_coreactions.cpp
index 4a3f682fa..131e21163 100644
--- a/src/kvirc/kernel/kvi_coreactions.cpp
+++ b/src/kvirc/kernel/kvi_coreactions.cpp
@@ -480,6 +480,9 @@ QWidget * KviIrcContextDisplayAction::addToCustomToolBar(KviCustomToolBar *t)
{
if(!setupDone())setup();
KviIrcContextDisplay * w = new KviIrcContextDisplay(t,"kvirc.irccontextdisplay");
+#ifdef COMPILE_USE_QT4
+ t->addWidget(w);
+#endif
registerWidget(w);
return w;
}
@@ -535,6 +538,9 @@ QWidget * KviSeparatorAction::addToCustomToolBar(KviCustomToolBar *t)
if(!setupDone())setup();
QWidget * w = new KviCustomToolBarSeparator(t,"kvirc.separator");
registerWidget(w);
+#ifdef COMPILE_USE_QT4
+ t->addWidget(w);
+#endif
return w;
}
@@ -683,6 +689,9 @@ QWidget * KviConnectAction::addToCustomToolBar(KviCustomToolBar *t)
m_szConnectString,
this,SLOT(activate()),t,name());
registerWidget(b);
+#ifdef COMPILE_USE_QT4
+ t->addWidget(b);
+#endif
activeContextStateChanged();
return b;
}
@@ -759,6 +768,7 @@ QWidget * KviSubmenuAction::addToCustomToolBar(KviCustomToolBar *t)
#ifdef COMPILE_USE_QT4
b->setPopupMode( scriptCode().isEmpty() ? QToolButton::InstantPopup : QToolButton::MenuButtonPopup);
+ t->addWidget(b);
#else
b->setShowSubmenuIndicator(true);
b->setPopupDelay(1);
@@ -1101,6 +1111,9 @@ QWidget * KviGoAwayAction::addToCustomToolBar(KviCustomToolBar *t)
m_szAwayString,
this,SLOT(activate()),t,name());
registerWidget(b);
+#ifdef COMPILE_USE_QT4
+ t->addWidget(b);
+#endif
activeContextStateChanged();
return b;
}
diff --git a/src/kvirc/module/kvi_module.h b/src/kvirc/module/kvi_module.h
index 67396ed2c..175ddab5e 100644
--- a/src/kvirc/module/kvi_module.h
+++ b/src/kvirc/module/kvi_module.h
@@ -141,7 +141,8 @@ class KVIRC_API KviModule : public KviKvsModuleInterface
friend class KviUserParser;
protected:
KviModule(kvi_library_t handle,KviModuleInfo * info,const char * name,const char * filename);
- ~KviModule();
+public:
+ ~KviModule(); // must be public for KviPointerList
private:
KviStr m_szName;
KviStr m_szFileName;
diff --git a/src/kvirc/module/kvi_modulemanager.cpp b/src/kvirc/module/kvi_modulemanager.cpp
index ea126cc26..f25af1dfb 100644
--- a/src/kvirc/module/kvi_modulemanager.cpp
+++ b/src/kvirc/module/kvi_modulemanager.cpp
@@ -323,6 +323,10 @@ bool KviModuleManager::hasLockedModules()
void KviModuleManager::cleanupUnusedModules()
{
KviPointerHashTableIterator<const char *,KviModule> it(*m_pModuleDict);
+
+ KviPointerList<KviModule> lModulesToUnload;
+ lModulesToUnload.setAutoDelete(false);
+
while(it.current())
{
if(it.current()->secondsSinceLastAccess() > KVI_OPTION_UINT(KviOption_uintModuleCleanupTimeout))
@@ -330,28 +334,36 @@ void KviModuleManager::cleanupUnusedModules()
if(it.current()->moduleInfo()->can_unload)
{
if((it.current()->moduleInfo()->can_unload)(it.current()))
- {
- unloadModule(it.current());
- continue;
- } else {
+ lModulesToUnload.append(it.current());
+ else {
// the module don't want to be unloaded
// keep it memory for a while
it.current()->updateAccessTime();
}
} else {
if(!(it.current()->isLocked()))
- {
- unloadModule(it.current());
- continue;
- }
+ lModulesToUnload.append(it.current());
}
}
++it;
}
+
+ for(KviModule * pModule = lModulesToUnload.first();pModule;pModule = lModulesToUnload.next())
+ unloadModule(pModule);
}
void KviModuleManager::unloadAllModules()
{
KviPointerHashTableIterator<const char *,KviModule> it(*m_pModuleDict);
- while(it.current())unloadModule(it.current());
+
+ KviPointerList<KviModule> lModulesToUnload;
+ lModulesToUnload.setAutoDelete(false);
+ while(KviModule * pModule = it.current())
+ {
+ lModulesToUnload.append(pModule);
+ ++it;
+ }
+
+ for(KviModule * pModule = lModulesToUnload.first();pModule;pModule = lModulesToUnload.next())
+ unloadModule(pModule);
}
diff --git a/src/kvirc/ui/kvi_customtoolbar.cpp b/src/kvirc/ui/kvi_customtoolbar.cpp
index fec8c16c3..d09afff52 100644
--- a/src/kvirc/ui/kvi_customtoolbar.cpp
+++ b/src/kvirc/ui/kvi_customtoolbar.cpp
@@ -272,12 +272,30 @@ void KviCustomToolBar::dragEnterEvent(QDragEnterEvent *e)
e->accept(true);
int idx = dropIndexAt(mapFromGlobal(QCursor::pos()),0,0);
m_pDraggedChild = a->addToCustomToolBar(this);
+#ifdef COMPILE_USE_QT4
+ QWidget * pWidgetToMove = widgetAt(idx);
+ bool bDone = false;
+ QAction * a;
+ if(pWidgetToMove)
+ {
+ a = actionForWidget(pWidgetToMove);
+ if(a)
+ {
+ bDone = true;
+ a = insertWidget(a,m_pDraggedChild);
+ }
+ }
+ if(!bDone)
+ a = addWidget(m_pDraggedChild);
+ a->setVisible(true);
+#else
boxLayout()->remove(m_pDraggedChild); // in case it was already added
boxLayout()->insertWidget(idx,m_pDraggedChild);
#ifdef COMPILE_KDE_SUPPORT
// bleah ://///
insertWidget(-1,m_pDraggedChild->sizeHint().width(),m_pDraggedChild,idx);
#endif
+#endif
QEvent ev(QEvent::LayoutHint);
QApplication::sendEvent(this,&ev);
} else e->accept(false);
@@ -315,7 +333,11 @@ int KviCustomToolBar::dropIndexAt(const QPoint &pnt,QWidget * exclude,int * excl
// find the widget at the current poisition
// treating exclude as if it was going to be removed
// find also the exclude index if needed
+#ifdef COMPILE_USE_QT4
+ QLayout * l = layout();
+#else
QBoxLayout * l = boxLayout();
+#endif
QLayoutItem * i = 0;
if(excludeIdx)*excludeIdx = -1;
int idx = 0;
@@ -390,7 +412,6 @@ int KviCustomToolBar::dropIndexAt(const QPoint &pnt,QWidget * exclude,int * excl
}
} else {
// got it, check for the exclude idx
-
if((iExcludeIdx == -1) || (iExcludeIdx != iMinDistIdx))
{
// would not put it over exclude idx
@@ -427,108 +448,69 @@ int KviCustomToolBar::dropIndexAt(const QPoint &pnt,QWidget * exclude,int * excl
return iMinDistIdx;
-/*
-
- if(orientation() == Qt::Horizontal)
- {
- while((i = it.current()))
- {
- if(QWidget * w = i->widget())
- {
- if((pnt.x() >= w->x()) && (pnt.x() <= (w->x() + w->width())))
- {
- if(w == exclude)
- {
- if(excludeIdx)*excludeIdx = idx; // found exclude
- return idx;
- }
- // not exclude
- if(pnt.x() > (w->x() + (w->width() / 2)))idx++; // need to put it on the right!
- goto jump_outta_here;
- } else {
- if(w == exclude)
- {
- if(excludeIdx)*excludeIdx = idx; // found exclude
- idx--; // removing exclude will decrease the index by one
- }
- }
- }
- idx++;
- ++it;
- }
- // either empty toolbar or not added at all, yet
- if(idx > 0)
- {
- // not added yet
- // ran too far
- idx--;
- }
- if((!i) && (idx > 0))idx--; // ran too far
- } else {
- while((i = it.current()))
- {
- if(QWidget * w = i->widget())
- {
- if((pnt.y() >= w->y()) && (pnt.y() < (w->y() + w->height())))
- {
- if(w == exclude)
- {
- if(excludeIdx)*excludeIdx = idx; // found exclude
- return idx;
- }
- // not exclude
- if(pnt.y() > (w->y() + (w->height() / 2)))idx++; // need to put it below!
- goto jump_outta_here;
- } else {
- if(w == exclude)
- {
- if(excludeIdx)*excludeIdx = idx; // found exclude
- idx--; // removing exclude will decrease the index by one
- }
- }
- }
- idx++;
- ++it;
- }
- if((!i) && (idx > 0))idx--; // ran too far
- }
-
-jump_outta_here:
+}
- if(exclude && excludeIdx)
- {
- if(*excludeIdx == -1)
- {
- // need to find myself
- it = l->iterator();
- *excludeIdx = 0;
- while((i = it.current()))
- {
- if(i->widget() == exclude)break;
- (*excludeIdx)++;
- ++it;
- }
- }
- }
+#ifdef COMPILE_USE_QT4
+QWidget * KviCustomToolBar::widgetAt(int index)
+{
+ QLayout * l = layout();
+ if(!l)
+ return NULL;
+ QLayoutItem * it = l->itemAt(index);
+ if(!it)
+ return NULL;
+ return it->widget();
+}
- return idx;
-*/
+QAction * KviCustomToolBar::actionForWidget(QWidget * pWidget)
+{
+ return actionAt(pWidget->x() + 1,pWidget->y() + 1);
}
+#endif
+
void KviCustomToolBar::drag(QWidget * child,const QPoint &pnt)
{
int me = -1;
int idx = dropIndexAt(pnt,child,&me);
+ debug("DROP INDEX IS %d, ME IS %d",idx,me);
if(idx == me)
- {
return; // would move over itself
+#ifdef COMPILE_USE_QT4
+ QWidget * pWidgetToMove = widgetAt(idx > me ? idx-1 : idx);
+ debug("SEARCHING FOR WIDGET TO MOVE AT %d AND FOUND %x (ME=%x)",idx > me ? idx-1 : idx,pWidgetToMove,child);
+ if(pWidgetToMove == child)
+ return; // hmmm
+ bool bDone = false;
+ QAction * pMyOwnAction = actionForWidget(child);
+ if(!pMyOwnAction)
+ return;
+ QAction * a;
+ removeAction(pMyOwnAction);
+ if(pWidgetToMove)
+ {
+ a = actionForWidget(pWidgetToMove);
+ if(a)
+ {
+ debug("AND GOT ACTION FOR THAT WIDGET");
+
+ bDone = true;
+ a = insertWidget(a,child);
+ }
+ } else {
+ addAction(a);
}
+ if(!bDone)
+ a = addWidget(child);
+ a->setVisible(true);
+#else
boxLayout()->remove(child);
boxLayout()->insertWidget(idx,child);
#ifdef COMPILE_KDE_SUPPORT
// bleah ://///
insertWidget(-1,child->width(),child,idx);
#endif
+#endif
QEvent ev(QEvent::LayoutHint);
QApplication::sendEvent(this,&ev);
}
@@ -605,34 +587,69 @@ bool KviCustomToolBar::eventFilter(QObject *o,QEvent *e)
if((pnt.y() < 0) || (pnt.y() > height()) || (pnt.x() < 0) || (pnt.x() > width()))
{
// drag out!
+// FIXME: This is screwed up in Qt4.... :/
+#ifdef COMPILE_USE_QT4
+ QDrag * d = new QDrag(this);
+ QMimeData * m = new QMimeData();
+ m->setText(m_pMovedChild->name());
+ d->setMimeData(m);
+#else
QDragObject * d = new QTextDrag(m_pMovedChild->name(),this);
+#endif
KviAction * act = KviActionManager::instance()->getAction(m_pMovedChild->name());
if(act)
{
QPixmap * pixie = act->bigIcon();
+#ifdef COMPILE_USE_QT4
+ if(pixie)
+ {
+ d->setPixmap(*pixie);
+ d->setHotSpot(QPoint(3,3));
+ }
+#else
if(pixie)d->setPixmap(*pixie,QPoint(3,3));
+#endif
}
//d->setPixmap(QPixmap::grabWidget(m_pMovedChild),QPoint(m_pMovedChild->width() / 2,m_pMovedChild->height() / 2));
// throw it somewhere else for now
if(m_pFilteredChildren)
unfilterChild(m_pMovedChild);
+#ifdef COMPILE_USE_QT4
+ QAction * pActionForMovedChild = actionForWidget(m_pMovedChild);
+ if(pActionForMovedChild)
+ pActionForMovedChild->setVisible(false);
+ m_pMovedChild->hide();
+#else
m_pMovedChild->hide();
m_pMovedChild->reparent(g_pFrame,QPoint(-1000,-1000),false);
+#endif
QEvent ev(QEvent::LayoutHint);
QApplication::sendEvent(this,&ev);
+#ifdef COMPILE_USE_QT4
+ if(!d->exec(Qt::MoveAction) != Qt::MoveAction)
+#else
if(!d->dragMove())
+#endif
{
// the user has probably failed to remove the action from the toolbar
// flash the trashcan in the customize toolbars dialog
KviActionManager::instance()->emitRemoveActionsHintRequest();
// will filter it as ChildInserted
+#ifndef COMPILE_USE_QT4
m_pMovedChild->reparent(this,QPoint(0,0),false);
+#endif
+#ifdef COMPILE_USE_QT4
+ QAction * pActionForMovedChild = actionForWidget(m_pMovedChild);
+ if(pActionForMovedChild)
+ pActionForMovedChild->setVisible(false);
+#else
boxLayout()->insertWidget(0,m_pMovedChild);
m_pMovedChild->show();
#ifdef COMPILE_KDE_SUPPORT
// bleah ://///
insertWidget(-1,m_pMovedChild->width(),m_pMovedChild,0);
#endif
+#endif
QEvent ev(QEvent::LayoutHint);
QApplication::sendEvent(this,&ev);
} else {
diff --git a/src/kvirc/ui/kvi_customtoolbar.h b/src/kvirc/ui/kvi_customtoolbar.h
index 85f6be730..7c880893e 100644
--- a/src/kvirc/ui/kvi_customtoolbar.h
+++ b/src/kvirc/ui/kvi_customtoolbar.h
@@ -71,6 +71,10 @@ protected:
virtual void childEvent(QChildEvent *e);
virtual bool eventFilter(QObject *o,QEvent *e);
int dropIndexAt(const QPoint &pnt,QWidget * exclude,int * excludeIdx);
+#ifdef COMPILE_USE_QT4
+ QWidget * widgetAt(int index);
+ QAction * actionForWidget(QWidget * pWidget);
+#endif
void drag(QWidget * child,const QPoint &pnt);
void filterChild(QObject * o);
void unfilterChild(QObject * o);
diff --git a/src/kvirc/ui/kvi_frame.cpp b/src/kvirc/ui/kvi_frame.cpp
index 3bd7501ca..3009fce9c 100644
--- a/src/kvirc/ui/kvi_frame.cpp
+++ b/src/kvirc/ui/kvi_frame.cpp
@@ -133,10 +133,16 @@ KviFrame::KviFrame()
// This theoretically had to exists before KviMdiManager (that uses enterSdiMode)
m_pMenuBar = new KviMenuBar(this,"main_menu_bar");
-
+#ifdef COMPILE_USE_QT4
+ setMenuWidget(m_pMenuBar);
+#endif
+
if(KVI_OPTION_BOOL(KviOption_boolStatusBarVisible))
{
m_pStatusBar = new KviStatusBar(this);
+#ifdef COMPILE_USE_QT4
+ setStatusBar(m_pStatusBar);
+#endif
// torque: moved out of status bar constructor
// because module init functions exectued in load()
// couldn't access the status bar via g_pFrame->mainStatusBar()
@@ -1052,8 +1058,13 @@ void KviFrame::toggleStatusBar()
m_pStatusBar = new KviStatusBar(this);
m_pStatusBar->load();
+#ifdef COMPILE_USE_QT4
+ setStatusBar(m_pStatusBar);
+#endif
m_pStatusBar->show();
+#ifndef COMPILE_USE_QT4
setUpLayout();
+#endif //!COMPILE_USE_QT4
}
}
@@ -1182,6 +1193,7 @@ bool KviFrame::focusNextPrevChild(bool next)
// Toolbar positioning stuff
////////////////////////////////////////////////////////////////////////////////////////////////////
+
void KviFrame::saveToolBarPositions()
{
QString szTemp;
@@ -1190,13 +1202,16 @@ void KviFrame::saveToolBarPositions()
QFile f(szTemp);
if(f.open(IO_WriteOnly | IO_Truncate))
{
+#ifdef COMPILE_USE_QT4
+ f.write(saveState(1));
+#else //!COMPILE_USE_QT4
QTextStream ts(&f);
ts << *this;
f.close();
+#endif //!COMPILE_USE_QT4
}
}
-
void KviFrame::restoreToolBarPositions()
{
QString szTemp;
@@ -1208,15 +1223,26 @@ void KviFrame::restoreToolBarPositions()
if(f.open(IO_ReadOnly))
{
+#ifdef COMPILE_USE_QT4
+ if(!restoreState(f.readAll(),1))
+ debug("Error while restoring toolbars position");
+#else //!COMPILE_USE_QT4
QTextStream ts(&f);
ts >> *this;
f.close();
+#endif //!COMPILE_USE_QT4
} else {
bNeedDefaults = true;
}
if(m_pTaskBar->inherits("KviTreeTaskBar"))
{
+#ifdef COMPILE_USE_QT4
+ // ensure that it is not too wide
+ m_pTaskBar->setMaximumWidth(600);
+ if(m_pTaskBar->width() > 600)
+ m_pTaskBar->setFixedWidth(250);
+#else //!COMPILE_USE_QT4
QDockArea * a = m_pTaskBar->area();
if((a == topDock()) || (a == bottomDock()))
{
@@ -1231,24 +1257,7 @@ void KviFrame::restoreToolBarPositions()
// ensure that it is not too wide
if(m_pTaskBar->width() > 600)
m_pTaskBar->setFixedExtentWidth(250);
- /*
- if(m_pTaskBar->width() > 500)
- {
- a = m_pTaskBar->area();
- QRect r = a->rect();
- a->resize(500,a->height());
- QPoint p = m_pTaskBar->mapToGlobal(QPoint(0,0));
- QRect r = m_pTaskBar->rect();
- r.setWidth(180);
- bool bSwapOrientation = false;
- if(m_pTaskBar->orientation() != Vertical)bSwapOrientation = true;
- debug("MOVING TO POINT %d,%d RECT %d,%d,%d,%d",
- p.x(),p.y(),r.x(),r.y(),r.width(),r.height());
- a->removeDockWindow(m_pTaskBar,true,false);
- a->moveDockWindow(m_pTaskBar,p,r,bSwapOrientation);
- }
- */
-
+#endif //!COMPILE_USE_QT4
} /*else if(m_pTaskBar->inherits("KviClassicTaskBar"))
{
QDockArea * a = m_pTaskBar->area();
@@ -1260,9 +1269,11 @@ void KviFrame::restoreToolBarPositions()
bottomDock()->lineUp(true);
}
}*/
-
+
+#ifndef COMPILE_USE_QT4
if(bNeedDefaults)
lineUpDockWindows(false);
+#endif //!COMPILE_USE_QT4
}
@@ -1271,15 +1282,27 @@ void KviFrame::createTaskBar()
if(KVI_OPTION_BOOL(KviOption_boolUseTreeWindowListTaskBar))
{
m_pTaskBar = new KviTreeTaskBar();
+#ifdef COMPILE_USE_QT4
+ m_pTaskBar->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
+ addDockWidget(Qt::LeftDockWidgetArea,m_pTaskBar);
+#else //!COMPILE_USE_QT4
setDockEnabled(m_pTaskBar,Qt::DockTop,false);
setDockEnabled(m_pTaskBar,Qt::DockBottom,false);
+#endif //!COMPILE_USE_QT4
} else {
m_pTaskBar = new KviClassicTaskBar();
+#ifdef COMPILE_USE_QT4
+ m_pTaskBar->setAllowedAreas(Qt::AllDockWidgetAreas);
+ addDockWidget(Qt::BottomDockWidgetArea,m_pTaskBar);
+#else //!COMPILE_USE_QT4
setDockEnabled(m_pTaskBar,Qt::DockTop,true);
setDockEnabled(m_pTaskBar,Qt::DockBottom,true);
+#endif //!COMPILE_USE_QT4
}
+#ifndef COMPILE_USE_QT4
setDockEnabled(m_pTaskBar,Qt::DockLeft,true);
setDockEnabled(m_pTaskBar,Qt::DockRight,true);
+#endif //!COMPILE_USE_QT4
}
void KviFrame::recreateTaskBar()
@@ -1292,7 +1315,9 @@ void KviFrame::recreateTaskBar()
{
w->destroyTaskBarItem();
}
+#ifndef COMPILE_USE_QT4
removeDockWindow(m_pTaskBar);
+#endif //!COMPILE_USE_QT4
delete m_pTaskBar;
createTaskBar();
for(w = m_pWinList->first();w;w = m_pWinList->next())
@@ -1300,7 +1325,8 @@ void KviFrame::recreateTaskBar()
w->createTaskBarItem();
}
restoreToolBarPositions();
-
+
+
/*
QString szNewClass = m_pTaskBar->className();
if(szOldClass != szNewClass)
diff --git a/src/kvirc/ui/kvi_frame.h b/src/kvirc/ui/kvi_frame.h
index cce0ab0c1..12b1387c1 100644
--- a/src/kvirc/ui/kvi_frame.h
+++ b/src/kvirc/ui/kvi_frame.h
@@ -99,15 +99,15 @@ protected:
QSplitter * m_pSplitter; // the frame is splitted vertically and thus can host widgets
KviMenuBar * m_pMenuBar; // the main menu bar
KviMdiManager * m_pMdi; // the mdi manager widget (child of the splitter)
- KviPointerList<KviMexToolBar> * m_pModuleExtensionToolBarList; // the module extension toolbars
+ KviPointerList<KviMexToolBar> * m_pModuleExtensionToolBarList; // the module extension toolbars
KviTaskBarBase * m_pTaskBar; // the taskbar
KviStatusBar * m_pStatusBar;
// the mdi workspace child windows
- KviPointerList<KviWindow> * m_pWinList; // the main list of windows
+ KviPointerList<KviWindow> * m_pWinList; // the main list of windows
KviIrcContext * m_pActiveContext; // the context of the m_pActiveWindow
// other
KviDockExtension * m_pDockExtension; // the frame's dock extension: this should be prolly moved ?
- KviAccel * m_pAccel; // the global accelelrator
+ KviAccel * m_pAccel; // the global accelelrator
public:
// the mdi manager: handles mdi children
KviMdiManager * mdiManager(){ return m_pMdi; };
diff --git a/src/kvirc/ui/kvi_listview.cpp b/src/kvirc/ui/kvi_listview.cpp
index 6e935ef60..eaa3d768a 100644
--- a/src/kvirc/ui/kvi_listview.cpp
+++ b/src/kvirc/ui/kvi_listview.cpp
@@ -209,4 +209,4 @@ void KviListView::focusOutEvent(QFocusEvent * e)
repaintContents();
}
-#endif \ No newline at end of file
+#endif
diff --git a/src/kvirc/ui/kvi_taskbar.cpp b/src/kvirc/ui/kvi_taskbar.cpp
index 2fdf96d04..ebc8280a4 100644
--- a/src/kvirc/ui/kvi_taskbar.cpp
+++ b/src/kvirc/ui/kvi_taskbar.cpp
@@ -62,21 +62,35 @@
#endif
#include <qevent.h>
+#ifdef COMPILE_USE_QT4
+ #include <QPaintEvent>
+#endif
+
+
#ifdef COMPILE_PSEUDO_TRANSPARENCY
extern QPixmap * g_pShadedChildGlobalDesktopBackground;
#endif
extern QPixmap * g_pActivityMeterPixmap;
+// FIXME: This should be renamed to "Window List"
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// KviTaskBarBase
//
KviTaskBarBase::KviTaskBarBase()
+#ifdef COMPILE_USE_QT4
+: QDockWidget(__tr2qs("Taskbar"),g_pFrame)
+#else
: KviToolBar(__tr2qs("Taskbar"),QT_DOCK_BOTTOM,false,"taskbar")
+#endif
{
// FIXME: this timer should be started only if KVI_OPTION_BOOL(KviOption_boolUseTaskBarActivityMeter)
+#ifdef COMPILE_USE_QT4
+ setObjectName(__tr2qs("taskbar"));
+ setFeatures(QDockWidget::DockWidgetMovable);
+#endif //COMPILE_USE_QT4
m_pActivityMeterTimer = new QTimer();
connect(m_pActivityMeterTimer,SIGNAL(timeout()),this,SLOT(updateActivityMeter()));
m_pActivityMeterTimer->start(5000);
@@ -246,17 +260,35 @@ void KviTaskBarButton::setActive(bool bActive)
update();
}
-void KviTaskBarButton::drawButtonLabel ( QPainter * painter)
+#ifdef COMPILE_USE_QT4
+void KviTaskBarButton::paintEvent(QPaintEvent * e)
+{
+ QPainter p(this);
+ QStyleOption opt;
+ opt.initFrom(this);
+ if(isOn())
+ opt.state = QStyle::State_On | QStyle::State_Active;
+ style()->drawPrimitive(QStyle::PE_PanelButtonTool,&opt,&p,this);
+ drawButtonLabel(&p);
+}
+#endif
+
+void KviTaskBarButton::drawButtonLabel(QPainter * painter)
{
QRect distRect = painter->window();
int iHeight = distRect.height();
int iWidth = distRect.width();
+ QPainter * pPainter;
+#ifdef COMPILE_USE_QT4
+ pPainter = painter;
+#else //!COMPILE_USE_QT4
KviDoubleBuffer db(iWidth,iHeight);
QPixmap * pMemBuffer = db.pixmap();
QPainter p(pMemBuffer);
bitBlt(pMemBuffer,0,0,painter->device(),distRect.x(),distRect.y(),iWidth,iHeight);
-
+ pPainter = &p;
+#endif //!COMPILE_USE_QT4
if(KVI_OPTION_BOOL(KviOption_boolUseTaskBarIrcContextIndicator))
{
iHeight -= KVI_TASKBARBUTTON_CONTEXTINDICATORHEIGHT;
@@ -266,9 +298,9 @@ void KviTaskBarButton::drawButtonLabel ( QPainter * painter)
QColor cntx = KVI_OPTION_ICCOLOR(m_pWindow->console()->ircContextId() % KVI_NUM_ICCOLOR_OPTIONS);
base.setRgb((base.red() + cntx.red()) >> 1,(base.green() + cntx.green()) >> 1,
(base.blue() + cntx.blue()) >> 1);
- p.fillRect(2,iHeight,iWidth - 4,KVI_TASKBARBUTTON_CONTEXTINDICATORHEIGHT - 2,base);
+ pPainter->fillRect(2,iHeight,iWidth - 4,KVI_TASKBARBUTTON_CONTEXTINDICATORHEIGHT - 2,base);
} else {
- p.fillRect(2,iHeight,iWidth - 4,KVI_TASKBARBUTTON_CONTEXTINDICATORHEIGHT - 2,colorGroup().brush(QColorGroup::Background));
+ pPainter->fillRect(2,iHeight,iWidth - 4,KVI_TASKBARBUTTON_CONTEXTINDICATORHEIGHT - 2,colorGroup().brush(QColorGroup::Background));
}
}
@@ -276,7 +308,7 @@ void KviTaskBarButton::drawButtonLabel ( QPainter * painter)
if(KVI_OPTION_BOOL(KviOption_boolUseTaskBarIcons))
{
- p.drawPixmap(3,3,*(m_pWindow->myIconPtr()));
+ pPainter->drawPixmap(3,3,*(m_pWindow->myIconPtr()));
daX = 20;
}
@@ -286,7 +318,7 @@ void KviTaskBarButton::drawButtonLabel ( QPainter * painter)
unsigned int uActivityTemperature;
if(m_pWindow->activityMeter(&uActivityValue,&uActivityTemperature))
{
- p.drawPixmap(daX,3,*g_pActivityMeterPixmap,uActivityValue * 5,uActivityTemperature * 16,5,16);
+ pPainter->drawPixmap(daX,3,*g_pActivityMeterPixmap,uActivityValue * 5,uActivityTemperature * 16,5,16);
daX = 27;
}
}
@@ -297,9 +329,9 @@ void KviTaskBarButton::drawButtonLabel ( QPainter * painter)
{
// paint the progress bar
int wdth = (m_iProgress * cRect.width()) / 100;
- p.setPen(KVI_OPTION_COLOR(KviOption_colorTaskBarProgressBar));
- p.drawRect(cRect);
- p.fillRect(daX,3,wdth,cRect.height(),KVI_OPTION_COLOR(KviOption_colorTaskBarProgressBar));
+ pPainter->setPen(KVI_OPTION_COLOR(KviOption_colorTaskBarProgressBar));
+ pPainter->drawRect(cRect);
+ pPainter->fillRect(daX,3,wdth,cRect.height(),KVI_OPTION_COLOR(KviOption_colorTaskBarProgressBar));
}
QRect bRect;
@@ -309,7 +341,7 @@ void KviTaskBarButton::drawButtonLabel ( QPainter * painter)
if(m_bActive)
{
- p.setPen(KVI_OPTION_COLOR(KviOption_colorTaskBarNormalText));
+ pPainter->setPen(KVI_OPTION_COLOR(KviOption_colorTaskBarNormalText));
} else {
int iLevel;
@@ -322,10 +354,10 @@ void KviTaskBarButton::drawButtonLabel ( QPainter * painter)
case 4: iLevel = KviOption_colorTaskBarHighlight4Text; break;
default: iLevel = KviOption_colorTaskBarHighlight5Text; break;
}
- p.setPen(KVI_OPTION_COLOR(iLevel));
+ pPainter->setPen(KVI_OPTION_COLOR(iLevel));
}
- p.setFont(KVI_OPTION_FONT(KviOption_fontTaskbar));
+ pPainter->setFont(KVI_OPTION_FONT(KviOption_fontTaskbar));
switch(m_pWindow->type())
{
@@ -333,7 +365,7 @@ void KviTaskBarButton::drawButtonLabel ( QPainter * painter)
{
QFont f = QFont(KVI_OPTION_FONT(KviOption_fontTaskbar));
f.setBold(true);
- p.setFont(f);
+ pPainter->setFont(f);
KviTaskBarBase::getTextForConsole(szText,(KviConsole *)m_pWindow);
}
break;
@@ -355,28 +387,30 @@ void KviTaskBarButton::drawButtonLabel ( QPainter * painter)
QString tmp = QChar('(');
tmp += szText;
tmp += QChar(')');
- p.drawText(cRect,Qt::AlignLeft | Qt::AlignTop,tmp,-1,&bRect);
+ pPainter->drawText(cRect,Qt::AlignLeft | Qt::AlignTop,tmp,-1,&bRect);
} else {
- p.drawText(cRect,Qt::AlignLeft | Qt::AlignTop,szText,-1,&bRect);
+ pPainter->drawText(cRect,Qt::AlignLeft | Qt::AlignTop,szText,-1,&bRect);
}
if(bRect.width() > cRect.width())
{
- p.setClipRect(cRect.right(),cRect.y(),10,cRect.height());
- QColor base = p.pen().color();
+ pPainter->setClipRect(cRect.right(),cRect.y(),10,cRect.height());
+ QColor base = pPainter->pen().color();
QColor bg = colorGroup().color(QColorGroup::Background);
base.setRgb((base.red() + bg.red()) / 2,(base.green() + bg.green()) / 2,(base.blue() + bg.blue()) / 2);
- p.setPen(base);
+ pPainter->setPen(base);
cRect.setWidth(cRect.width() + 10);
- p.drawText(cRect,Qt::AlignLeft | Qt::AlignVCenter,szText,-1);
- p.setClipRect(cRect.right(),cRect.y(),5,cRect.height());
+ pPainter->drawText(cRect,Qt::AlignLeft | Qt::AlignTop,szText,-1);
+ pPainter->setClipRect(cRect.right(),cRect.y(),5,cRect.height());
base.setRgb((base.red() + bg.red()) / 2,(base.green() + bg.green()) / 2,(base.blue() + bg.blue()) / 2);
- p.setPen(base);
+ pPainter->setPen(base);
cRect.setWidth(cRect.width() + 10);
- p.drawText(cRect,Qt::AlignLeft | Qt::AlignVCenter,szText,-1);
+ pPainter->drawText(cRect,Qt::AlignLeft | Qt::AlignTop,szText,-1);
}
- p.setClipping(FALSE);
+#ifndef COMPILE_USE_QT4
+ pPainter->setClipping(FALSE);
painter->drawPixmap(0,0,*pMemBuffer,distRect.x(),distRect.y(),iWidth,iHeight);
+#endif
}
@@ -447,22 +481,25 @@ KviClassicTaskBar::KviClassicTaskBar()
m_pBase = new QWidget(this);
// m_pBase->setBackgroundMode(NoBackground);
+#ifdef COMPILE_USE_QT4
+ setWidget(m_pBase);
+ m_pBase->setMinimumWidth(KVI_TASKBAR_MIN_WIDTH);
+ setMinimumWidth(KVI_TASKBAR_MIN_WIDTH);
+#else //!COMPILE_USE_QT4
setStretchableWidget(m_pBase);
setVerticalStretchable(true);
setHorizontalStretchable(true);
-
+#endif //!COMPILE_USE_QT4
//m_pBase->setMinimumWidth(KVI_TASKBAR_MIN_WIDTH);
//setMinimumWidth(KVI_TASKBAR_MIN_WIDTH);
m_pBase->setMinimumHeight(m_iButtonHeight+5);
setMinimumHeight(m_iButtonHeight+5);
+#ifndef COMPILE_USE_QT4
setResizeEnabled( true );
-#ifdef COMPILE_USE_QT4
- connect(this,SIGNAL(orientationChanged(Qt::Orientation)),this,SLOT(orientationChangedSlot(Qt::Orientation)));
-#else
connect(this,SIGNAL(orientationChanged(Orientation)),this,SLOT(orientationChangedSlot(Orientation)));
#endif
}
@@ -475,7 +512,9 @@ KviClassicTaskBar::~KviClassicTaskBar()
void KviClassicTaskBar::orientationChangedSlot(Qt::Orientation o)
{
+#ifndef COMPILE_USE_QT4
if (orientation() == Qt::Horizontal) m_pBase->setMinimumHeight(m_iButtonHeight);
+#endif
doLayout();
}
@@ -617,8 +656,31 @@ void KviClassicTaskBar::doLayout()
rows++;
totCount -= btnsInRow;
}
-
+
+#ifdef COMPILE_USE_QT4
+ if(isFloating() || ((g_pFrame->dockWidgetArea(this) != Qt::BottomDockWidgetArea) && (g_pFrame->dockWidgetArea(this) != Qt::TopDockWidgetArea)))
+ {
+ QDockWidget::DockWidgetFeatures f = features();
+ if(f & QDockWidget::DockWidgetVerticalTitleBar)
+ {
+ f &= ~QDockWidget::DockWidgetVerticalTitleBar;
+ setFeatures(f);
+ }
+ } else {
+ QDockWidget::DockWidgetFeatures f = features();
+ if(!(f & QDockWidget::DockWidgetVerticalTitleBar))
+ {
+ f |= QDockWidget::DockWidgetVerticalTitleBar;
+ setFeatures(f);
+ }
+ }
+#endif
+
+#ifdef COMPILE_USE_QT4
+ if ((width() > height()) &&
+#else
if ((orientation() == Qt::Horizontal) &&
+#endif
(((unsigned int)rows) > m_pBase->height() / m_iButtonHeight ))
{
rows = m_pBase->height() / m_iButtonHeight;
@@ -648,7 +710,13 @@ void KviClassicTaskBar::doLayout()
if((btnInRow == btnsInRow) || (totCount == 1))theWidth = baseWidth - theX;
}
- if( KVI_OPTION_BOOL(KviOption_boolClassicTaskBarSetMaximumButtonWidth) && (theWidth > KVI_OPTION_UINT(KviOption_uintClassicTaskBarMaximumButtonWidth)) && (orientation() == Qt::Horizontal))
+ if( KVI_OPTION_BOOL(KviOption_boolClassicTaskBarSetMaximumButtonWidth) && (theWidth > KVI_OPTION_UINT(KviOption_uintClassicTaskBarMaximumButtonWidth)) &&
+#ifdef COMPILE_USE_QT4
+ (width() > height())
+#else
+ (orientation() == Qt::Horizontal)
+#endif
+ )
theWidth = KVI_OPTION_UINT(KviOption_uintClassicTaskBarMaximumButtonWidth);
b->setGeometry(theX,theY,theWidth,m_iButtonHeight);
@@ -674,6 +742,7 @@ void KviClassicTaskBar::applyOptions()
void KviClassicTaskBar::resizeEvent(QResizeEvent *e)
{
+/*
#ifdef COMPILE_USE_QT4
if(orientation() == Qt::Horizontal)
{
@@ -683,6 +752,7 @@ void KviClassicTaskBar::resizeEvent(QResizeEvent *e)
resize(width(),iRows*m_iButtonHeight);
}
#endif
+*/
KviTaskBarBase::resizeEvent(e);
doLayout();
}
@@ -1153,10 +1223,16 @@ KviTreeTaskBar::KviTreeTaskBar()
m_pListView->addColumn(__tr2qs("Window List"),135);
m_pListView->setAllColumnsShowFocus(true);
m_pListView->setMultiSelection(false);
+
+#ifdef COMPILE_USE_QT4
+ setWidget(m_pListView);
+#else //!COMPILE_USE_QT4
setStretchableWidget(m_pListView);
setVerticalStretchable(true);
setHorizontalStretchable(true);
+#endif //!COMPILE_USE_QT4
+
// FIXME: this code is useless ?
if(KVI_OPTION_UINT(KviOption_uintTreeTaskBarMinimumWidth) < 48)
@@ -1190,13 +1266,17 @@ KviTreeTaskBar::KviTreeTaskBar()
m_pListView->header()->setResizeEnabled(true);
- //setMaximumWidth(600);
+#ifdef COMPILE_USE_QT4
+ setMaximumWidth(600);
+#endif
m_pListView->viewport()->installEventFilter(this);
#if QT_VERSION >= 300
+#ifndef COMPILE_USE_QT4
setResizeEnabled(true);
#endif
+#endif
m_pToolTip = new KviDynamicToolTip(m_pListView->viewport(),"tree_taskbar_tooltip");
connect(m_pToolTip,SIGNAL(tipRequest(KviDynamicToolTip *,const QPoint &)),this,SLOT(tipRequest(KviDynamicToolTip *,const QPoint &)));
diff --git a/src/kvirc/ui/kvi_taskbar.h b/src/kvirc/ui/kvi_taskbar.h
index 823db275f..48d8a3583 100644
--- a/src/kvirc/ui/kvi_taskbar.h
+++ b/src/kvirc/ui/kvi_taskbar.h
@@ -26,8 +26,6 @@
#include "kvi_settings.h"
-#include "kvi_toolbar.h"
-
#include "kvi_pointerlist.h"
#include <qframe.h>
#include "kvi_tal_tooltip.h"
@@ -76,9 +74,38 @@ public:
// This is the basic interface that all the external classes should see
//
+// Please note that Qt3 moc skips the *_SKIP_BEGIN -> *_SKIP_END blocks
+// while the Qt4 moc skips the Q_MOC_RUN ifdef block.. so...
+
+// Qt4 version
+
+// If you get failures (undefined references) in some non-autotools based
+// build system that uses Qt4 then you must add the -DCOMPILE_USE_QT4
+// commandline parameter to moc (at leat) when parsing this file.
+
+// MOC_SKIP_BEGIN
+#ifdef COMPILE_USE_QT4
+
+#include <QDockWidget>
+
+class KVIRC_API KviTaskBarBase : public QDockWidget
+{
+ Q_OBJECT
+#endif //COMPILE_USE_QT4
+// MOC_SKIP_END
+
+// Qt3 version
+#ifndef Q_MOC_RUN
+#ifndef COMPILE_USE_QT4
+
+#include "kvi_toolbar.h"
+
class KVIRC_API KviTaskBarBase : public KviToolBar
{
Q_OBJECT
+#endif
+#endif
+
public:
KviTaskBarBase();
virtual ~KviTaskBarBase();
@@ -126,7 +153,10 @@ protected:
#if QT_VERSION >= 300
virtual void contextMenuEvent(QContextMenuEvent *e);
#endif
- virtual void drawButtonLabel ( QPainter * );
+ virtual void drawButtonLabel(QPainter *p);
+#ifdef COMPILE_USE_QT4
+ virtual void paintEvent(QPaintEvent * e);
+#endif
public:
virtual bool active(){ return m_bActive; };
virtual void highlight(int iLevel = 1);
diff --git a/src/kvirc/ui/kvi_toolbar.cpp b/src/kvirc/ui/kvi_toolbar.cpp
index 966a6bab8..fda5bdff3 100644
--- a/src/kvirc/ui/kvi_toolbar.cpp
+++ b/src/kvirc/ui/kvi_toolbar.cpp
@@ -101,11 +101,17 @@ void KviToolBar::mousePressEvent(QMouseEvent *e)
void KviToolBar::moveTo(QT_TOOLBARDOCK_TYPE dock)
{
+ // FIXME: this should be hidden in Tal
+#ifdef COMPILE_USE_QT4
+ g_pFrame->removeToolBar(this);
+ g_pFrame->addToolBar(dock,this);
+#else //!COMPILE_USE_QT4
#if QT_VERSION >= 300
g_pFrame->moveDockWindow(this,dock);
#else
g_pFrame->moveToolBar(this,dock);
#endif
+#endif //!COMPILE_USE_QT4
}
void KviToolBar::moveToTop()
diff --git a/src/modules/objects/class_dockwindow.cpp b/src/modules/objects/class_dockwindow.cpp
index a6067a505..2a79d109b 100644
--- a/src/modules/objects/class_dockwindow.cpp
+++ b/src/modules/objects/class_dockwindow.cpp
@@ -28,8 +28,8 @@
#include "kvi_locale.h"
#include "kvi_qstring.h"
#ifdef COMPILE_USE_QT4
- #include <q3dockwindow.h>
- #define QT_DOCK_WINDOW Q3DockWindow
+ #include <QDockWidget>
+ #define QT_DOCK_WINDOW QDockWidget
#else
#include <qdockwindow.h>
#define QT_DOCK_WINDOW QDockWindow
@@ -96,8 +96,13 @@ KVSO_END_DESTRUCTOR(KviKvsObject_dockwindow)
bool KviKvsObject_dockwindow::init(KviKvsRunTimeContext * pContext,KviKvsVariantList * pParams)
{
-
+#ifdef COMPILE_USE_QT4
+ QDockWidget * pWidget = new QDockWidget(g_pFrame);
+ pWidget->setObjectName(getName());
+ setObject(pWidget);
+#else //!COMPILE_USE_QT4
setObject(new QT_DOCK_WINDOW(g_pFrame,getName()),true);
+#endif //!COMPILE_USE_QT4
return true;
}
@@ -141,16 +146,23 @@ bool KviKvsObject_dockwindow::function_addWidget(KviKvsObjectFunctionCall *c)
c->warning(__tr2qs("The added widget is not a child of this dock window"));
}
+#ifdef COMPILE_USE_QT4
+ _pDockWindow->setWidget((QWidget *)(pWidget->object()));
+#else //!COMPILE_USE_QT4
_pDockWindow->boxLayout()->addWidget((QWidget *)(pWidget->object()));
((QWidget *)(pWidget->object()))->show();
-
+#endif //!COMPILE_USE_QT4
return true;
}
bool KviKvsObject_dockwindow::function_orientation(KviKvsObjectFunctionCall * c)
{
if(!widget())return true; // hum ? dead ?
+#ifdef COMPILE_USE_QT4
+ c->returnValue()->setString(QString("horizontal"));
+#else //!COMPILE_USE_QT4
c->returnValue()->setString(_pDockWindow->orientation() == Qt::Horizontal ? QString("horizontal") : QString("vertical"));
+#endif //!COMPILE_USE_QT4
return true;
}
@@ -162,16 +174,20 @@ bool KviKvsObject_dockwindow::function_setOrientation(KviKvsObjectFunctionCall *
KVSO_PARAMETERS_END(c)
if(!widget())return true; // hum ? dead ?
-
+#ifndef COMPILE_USE_QT4
_pDockWindow->setOrientation(KviQString::equalCI(szOrientation,"vertical") ? Qt::Vertical : Qt::Horizontal);
-
+#endif //!COMPILE_USE_QT4
return true;
}
bool KviKvsObject_dockwindow::function_resizeEnabled(KviKvsObjectFunctionCall * c)
{
if(!widget())return true; // hum ? dead ?
+#ifdef COMPILE_USE_QT4
+ c->returnValue()->setBoolean(false);
+#else //!COMPILE_USE_QT4
c->returnValue()->setBoolean(_pDockWindow->isResizeEnabled());
+#endif //!COMPILE_USE_QT4
return true;
}
@@ -184,8 +200,9 @@ bool KviKvsObject_dockwindow::function_setResizeEnabled(KviKvsObjectFunctionCall
if(!widget())return true; // hum ? dead ?
+#ifndef COMPILE_USE_QT4
_pDockWindow->setResizeEnabled(bResizeEnabled);
-
+#endif //!COMPILE_USE_QT4
return true;
}
@@ -198,12 +215,28 @@ bool KviKvsObject_dockwindow::function_setAllowedDockAreas(KviKvsObjectFunctionC
if(!widget())return true; // hum ? dead ?
+#ifdef COMPILE_USE_QT4
+ Qt::DockWidgetAreas fAreas = Qt::NoDockWidgetArea;
+ if(szFlags.find('t',false))fAreas |= Qt::TopDockWidgetArea;
+ if(szFlags.find('l',false))fAreas |= Qt::LeftDockWidgetArea;
+ if(szFlags.find('r',false))fAreas |= Qt::RightDockWidgetArea;
+ if(szFlags.find('b',false))fAreas |= Qt::BottomDockWidgetArea;
+ _pDockWindow->setAllowedAreas(fAreas);
+ QDockWidget::DockWidgetFeatures fFeatures = _pDockWindow->features();
+ if(szFlags.find('f',false))
+ fFeatures |= QDockWidget::DockWidgetFloatable;
+ else
+ fFeatures &= ~QDockWidget::DockWidgetFloatable;
+ // no support for minimized dock widgets
+ _pDockWindow->setFeatures(fFeatures);
+#else //!COMPILE_USE_QT4
g_pFrame->setDockEnabled(_pDockWindow,Qt::DockTop,szFlags.find('t',false) != -1);
g_pFrame->setDockEnabled(_pDockWindow,Qt::DockLeft,szFlags.find('l',false) != -1);
g_pFrame->setDockEnabled(_pDockWindow,Qt::DockRight,szFlags.find('r',false) != -1);
g_pFrame->setDockEnabled(_pDockWindow,Qt::DockBottom,szFlags.find('b',false) != -1);
g_pFrame->setDockEnabled(_pDockWindow,Qt::DockTornOff,szFlags.find('f',false) != -1);
g_pFrame->setDockEnabled(_pDockWindow,Qt::DockMinimized,szFlags.find('m',false) != -1);
+#endif //!COMPILE_USE_QT4
return true;
}
@@ -217,7 +250,18 @@ bool KviKvsObject_dockwindow::function_dock(KviKvsObjectFunctionCall * c)
KVSO_PARAMETERS_END(c)
if(!widget())return true; // hum ? dead ?
-
+#ifdef COMPILE_USE_QT4
+ g_pFrame->removeDockWidget(_pDockWindow);
+ if(szDock.find('m',false) == -1)_pDockWindow->setFloating(false);
+ if(szDock.find('t',false) != -1)g_pFrame->addDockWidget(Qt::TopDockWidgetArea,_pDockWindow);
+ else if(szDock.find('l',false) != -1)g_pFrame->addDockWidget(Qt::LeftDockWidgetArea,_pDockWindow);
+ else if(szDock.find('r',false) != -1)g_pFrame->addDockWidget(Qt::RightDockWidgetArea,_pDockWindow);
+ else if(szDock.find('b',false) != -1)g_pFrame->addDockWidget(Qt::BottomDockWidgetArea,_pDockWindow);
+ else if(szDock.find('f',false) != -1)_pDockWindow->setFloating(true);
+ else if(szDock.find('m',false) != -1)qDebug("Sorry: no support for minimized dock widgets in Qt4");
+ else c->warning(__tr2qs("Invalid dock area specified"));
+
+#else //!COMPILE_USE_QT4
if(szDock.find('t',false) != -1)g_pFrame->moveDockWindow(_pDockWindow,Qt::DockTop,false,100);
else if(szDock.find('l',false) != -1)g_pFrame->moveDockWindow(_pDockWindow,Qt::DockLeft,false,100);
else if(szDock.find('r',false) != -1)g_pFrame->moveDockWindow(_pDockWindow,Qt::DockRight,false,100);
@@ -225,6 +269,7 @@ bool KviKvsObject_dockwindow::function_dock(KviKvsObjectFunctionCall * c)
else if(szDock.find('f',false) != -1)g_pFrame->moveDockWindow(_pDockWindow,Qt::DockTornOff,false,100);
else if(szDock.find('m',false) != -1)g_pFrame->moveDockWindow(_pDockWindow,Qt::DockMinimized,false,100);
else c->warning(__tr2qs("Invalid dock area specified"));
+#endif //!COMPILE_USE_QT4
return true;
}
diff --git a/src/modules/objects/class_mainwindow.cpp b/src/modules/objects/class_mainwindow.cpp
index 90f91731c..7a215f7ba 100644
--- a/src/modules/objects/class_mainwindow.cpp
+++ b/src/modules/objects/class_mainwindow.cpp
@@ -108,6 +108,7 @@ bool KviKvsObject_mainwindow::functionsetDockEnabled(KviKvsObjectFunctionCall *c
KVSO_PARAMETERS_END(c)
if(widget())
{
+#ifndef COMPILE_USE_QT4
if(KviQString::equalCI(szDockarea,"Top"))
((KviTalMainWindow *)widget())->setDockEnabled(Qt::DockTop,bFlag);
else if(KviQString::equalCI(szDockarea,"Left"))
@@ -123,6 +124,7 @@ bool KviKvsObject_mainwindow::functionsetDockEnabled(KviKvsObjectFunctionCall *c
else if(KviQString::equalCI(szDockarea,"Unmanaged"))
((KviTalMainWindow *)widget())->setDockEnabled(Qt::DockUnmanaged,bFlag);
else c->warning(__tr2qs("Unknown dock area '%Q'"),&szDockarea);
+#endif
}
return true;
@@ -131,11 +133,12 @@ bool KviKvsObject_mainwindow::functionisDockEnabled(KviKvsObjectFunctionCall *c)
{
QString szDockarea;
- bool bFlag;
+ bool bFlag = false;
KVSO_PARAMETERS_BEGIN(c)
KVSO_PARAMETER("dock_area",KVS_PT_STRING,0,szDockarea)
KVSO_PARAMETERS_END(c)
if(!widget()) return true;
+#ifndef COMPILE_USE_QT4
if(KviQString::equalCI(szDockarea,"Top")) bFlag=((KviTalMainWindow *)widget())->isDockEnabled(Qt::DockTop);
else if(KviQString::equalCI(szDockarea,"Left")) bFlag=((KviTalMainWindow *)widget())->isDockEnabled(Qt::DockLeft);
else if(KviQString::equalCI(szDockarea,"Right")) bFlag=((KviTalMainWindow *)widget())->isDockEnabled(Qt::DockRight);
@@ -148,6 +151,7 @@ bool KviKvsObject_mainwindow::functionisDockEnabled(KviKvsObjectFunctionCall *c)
c->warning(__tr2qs("Unknown dock area '%Q'"),&szDockarea);
return true;
}
+#endif
c->returnValue()->setBoolean(bFlag);
return true;
diff --git a/src/modules/objects/class_toolbar.cpp b/src/modules/objects/class_toolbar.cpp
index e8e3292e6..a6cb24c99 100644
--- a/src/modules/objects/class_toolbar.cpp
+++ b/src/modules/objects/class_toolbar.cpp
@@ -139,7 +139,10 @@ bool KviKvsObject_toolbar::functionsetStretchableWidget(KviKvsObjectFunctionCall
c->warning(__tr2qs("Widget object required"));
return TRUE;
}
+#ifndef COMPILE_USE_QT4
+ // FIXME: no support for this in Qt4 ?
if(widget()) ((KviTalToolBar *)widget())->setStretchableWidget(((QWidget *)(ob->object())));
+#endif //!COMPILE_USE_QT4
return true;
}
bool KviKvsObject_toolbar::functionclear(KviKvsObjectFunctionCall *c)
diff --git a/src/modules/url/libkviurl.cpp b/src/modules/url/libkviurl.cpp
index 2b9038268..f49729c1a 100644
--- a/src/modules/url/libkviurl.cpp
+++ b/src/modules/url/libkviurl.cpp
@@ -38,6 +38,10 @@
#include <qcursor.h>
#include <qdatetime.h>
+#ifdef COMPILE_USE_QT4
+ #include <q3textstream.h>
+ #include <QTextStream>
+#endif
static QPixmap * g_pUrlIconPixmap = 0;
static KviUrlAction * g_pUrlAction = 0;