diff options
| author | 2008-01-16 13:47:18 +0000 | |
|---|---|---|
| committer | 2008-01-16 13:47:18 +0000 | |
| commit | 74f28ff4c6f7ea0687c2633007f98875ef8b5d30 (patch) | |
| tree | 58f56c1aa95e09b7c46152487210c4bd1e14a58b /src | |
| parent | update (diff) | |
| download | KVIrc-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')
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; |
