-rw-r--r-- | library/qpedecoration_qws.cpp | 147 | ||||
-rw-r--r-- | library/qpedecoration_qws.h | 9 |
2 files changed, 100 insertions, 56 deletions
diff --git a/library/qpedecoration_qws.cpp b/library/qpedecoration_qws.cpp index bac1a75..7842ebd 100644 --- a/library/qpedecoration_qws.cpp +++ b/library/qpedecoration_qws.cpp @@ -19,2 +19,3 @@ **********************************************************************/ +#ifdef QWS #define QTOPIA_INTERNAL_LANGLIST @@ -26,2 +27,3 @@ #include <qwhatsthis.h> +#include <qpopupmenu.h> #include "qcopenvelope_qws.h" @@ -36,2 +38,3 @@ #include "windowdecorationinterface.h" +#include <qpe/qlibrary.h> #include <qfile.h> @@ -41,3 +44,3 @@ -extern QRect qt_maxWindowRect; +extern Q_EXPORT QRect qt_maxWindowRect; @@ -97,3 +100,3 @@ static const char * const qpe_accept_xpm[] = { -class HackWidget : public QWidget +class DecorHackWidget : public QWidget { @@ -102,3 +105,4 @@ public: return (getWState() & WState_Reserved1 ) || - (inherits( "QDialog" ) && !inherits( "QMessageBox" ) ); + (inherits("QDialog") && !inherits("QMessageBox") + && !inherits("QWizard") ); } @@ -190,9 +194,9 @@ bool QPEManager::eventFilter( QObject *o, QEvent *e ) case QWSDecoration::Close: - if ( ((HackWidget*)w)->needsOk() ) - text = QObject::tr("Click to close this window, discarding changes."); + if ( ((DecorHackWidget*)w)->needsOk() ) + text = tr("Click to close this window, discarding changes."); else - text = QObject::tr("Click to close this window."); + text = tr("Click to close this window."); break; case QWSDecoration::Minimize: - text = QObject::tr("Click to close this window and apply changes."); + text = tr("Click to close this window and apply changes."); break; @@ -200,5 +204,5 @@ bool QPEManager::eventFilter( QObject *o, QEvent *e ) if ( w->isMaximized() ) - text = QObject::tr("Click to make this window moveable."); + text = tr("Click to make this window movable."); else - text = QObject::tr("Click to make this window use all available screen area."); + text = tr("Click to make this window use all available screen area."); break; @@ -456,5 +460,6 @@ class DefaultWindowDecoration : public WindowDecorationInterface public: - DefaultWindowDecoration() : ref(0) {} + DefaultWindowDecoration(){} QString name() const { - return "Default"; + return qApp->translate("WindowDecoration", "Default", + "List box text for default window decoration"); } @@ -469,2 +474,4 @@ public: *iface = this; + else + return QS_FALSE; @@ -476,4 +483,2 @@ public: -private: - ulong ref; }; @@ -481,3 +486,3 @@ private: static WindowDecorationInterface *wdiface = 0; -static QLibrary *wdlib = 0; +static QLibrary* wdlib = 0; static QString libname; @@ -485,2 +490,16 @@ static QString libname; //=========================================================================== +bool QPEDecoration::helpExists() const +{ + if ( helpFile.isNull() ) { + QStringList helpPath = Global::helpPath(); + QString hf = QString(qApp->argv()[0]) + ".html"; + bool he = FALSE; + for (QStringList::ConstIterator it=helpPath.begin(); it!=helpPath.end() && !he; ++it) + he = QFile::exists( *it + "/" + hf ); + ((QPEDecoration*)this)->helpFile = hf; + ((QPEDecoration*)this)->helpexists = he; + return he; + } + return helpexists; +} @@ -489,3 +508,15 @@ QPEDecoration::QPEDecoration() { - init ( libname ); + if ( wdlib ) { + delete wdlib; + wdlib = 0; + } else { + delete wdiface; + } + wdiface = new DefaultWindowDecoration; + + helpexists = FALSE; // We don't know (flagged by helpFile being null) + qpeManager = new QPEManager( this ); + imageOk = Resource::loadImage( "OKButton" ); + imageClose = Resource::loadImage( "CloseButton" ); + imageHelp = Resource::loadImage( "HelpButton" ); } @@ -495,7 +526,2 @@ QPEDecoration::QPEDecoration( const QString &plugin ) { - init ( plugin ); -} - -void QPEDecoration::init ( const QString &plugin ) -{ libname = plugin; @@ -503,8 +529,8 @@ void QPEDecoration::init ( const QString &plugin ) if ( wdlib ) { - wdiface->release(); - wdlib->unload(); - delete wdlib; - wdlib = 0; + wdiface->release(); + wdlib->unload(); + delete wdlib; + wdlib = 0; } else { - delete wdiface; + delete wdiface; } @@ -538,15 +564,6 @@ void QPEDecoration::init ( const QString &plugin ) - helpFile = QString(qApp->argv()[0]) + ".html"; - QStringList helpPath = Global::helpPath(); - helpExists = FALSE; - for (QStringList::ConstIterator it=helpPath.begin(); it!=helpPath.end() && !helpExists; ++it) { - helpExists = QFile::exists( *it + "/" + helpFile ); - //qDebug ( "Checking %s/%s for help: %d", (*it).latin1(), helpFile.latin1(),helpExists); - } - qpeManager = new QPEManager( this ); - // Qtopia 1.5 compatibility - imageOk = *okImage ( 15 ); - imageClose = *closeImage ( 15 ); - imageHelp = *helpImage ( 15 ); + + helpexists = FALSE; // We don't know (flagged by helpFile being null) + qpeManager = new QPEManager( this ); } @@ -616,3 +633,3 @@ QRegion QPEDecoration::region(const QWidget *widget, const QRect &rect, QWSDecor int left = rect.right() - maximizeWidth - closeWidth; - if ( ((HackWidget *)widget)->needsOk() ) + if ( ((DecorHackWidget *)widget)->needsOk() ) left -= okWidth; @@ -623,3 +640,3 @@ QRegion QPEDecoration::region(const QWidget *widget, const QRect &rect, QWSDecor case Minimize: - if ( ((HackWidget *)widget)->needsOk() ) { + if ( ((DecorHackWidget *)widget)->needsOk() ) { QRect r(rect.right() - okWidth, @@ -633,3 +650,3 @@ QRegion QPEDecoration::region(const QWidget *widget, const QRect &rect, QWSDecor int left = rect.right() - closeWidth; - if ( ((HackWidget *)widget)->needsOk() ) + if ( ((DecorHackWidget *)widget)->needsOk() ) left -= okWidth; @@ -642,3 +659,3 @@ QRegion QPEDecoration::region(const QWidget *widget, const QRect &rect, QWSDecor int width = rect.width() - helpWidth - closeWidth; - if ( ((HackWidget *)widget)->needsOk() ) + if ( ((DecorHackWidget *)widget)->needsOk() ) width -= okWidth; @@ -651,3 +668,3 @@ QRegion QPEDecoration::region(const QWidget *widget, const QRect &rect, QWSDecor case Help: - if ( helpExists || widget->testWFlags(Qt::WStyle_ContextHelp) ) { + if ( helpExists() || widget->testWFlags(Qt::WStyle_ContextHelp) ) { QRect r(rect.left(), rect.top() - titleHeight, @@ -754,3 +771,3 @@ void QPEDecoration::paint(QPainter *painter, const QWidget *widget) // title bar rect - QRect tr( rect.left(), rect.top() - titleHeight, rect.width(), titleHeight ); + QRect tbr( rect.left(), rect.top() - titleHeight, rect.width(), titleHeight ); @@ -758,3 +775,3 @@ void QPEDecoration::paint(QPainter *painter, const QWidget *widget) QRegion oldClip = painter->clipRegion(); - painter->setClipRegion( oldClip - QRegion( tr ) ); // reduce flicker + painter->setClipRegion( oldClip - QRegion( tbr ) ); // reduce flicker wdiface->drawArea( WindowDecorationInterface::Border, painter, &wd ); @@ -798,5 +815,5 @@ void QPEDecoration::paintButton(QPainter *painter, const QWidget *w, case Minimize: - if ( ((HackWidget *)w)->needsOk() ) + if ( ((DecorHackWidget *)w)->needsOk() ) b = WindowDecorationInterface::OK; - else if ( helpExists ) + else if ( helpExists() ) b = WindowDecorationInterface::Help; @@ -820,3 +837,3 @@ void QPEDecoration::paintButton(QPainter *painter, const QWidget *w, QRect rect(w->rect()); - QRect tr( rect.left(), rect.top() - titleHeight, rect.width(), titleHeight ); + QRect tbr( rect.left(), rect.top() - titleHeight, rect.width(), titleHeight ); QRect brect(region(w, w->rect(), type).boundingRect()); @@ -830,3 +847,3 @@ void QPEDecoration::paintButton(QPainter *painter, const QWidget *w, QRegion oldClip = painter->clipRegion(); - painter->setClipRegion( QRect(brect.x(), tr.y(), brect.width(), tr.height()) ); // reduce flicker + painter->setClipRegion( QRect(brect.x(), tbr.y(), brect.width(), tbr.height()) ); // reduce flicker wdiface->drawArea( WindowDecorationInterface::Title, painter, &wd ); @@ -850,2 +867,16 @@ void QPEDecoration::maximize( QWidget *widget ) +QPopupMenu *QPEDecoration::menu( const QWidget *, const QPoint & ) +{ + QPopupMenu *m = new QPopupMenu(); + + m->insertItem(QPEManager::tr("Restore"), (int)Normalize); + m->insertItem(QPEManager::tr("Move"), (int)Title); + m->insertItem(QPEManager::tr("Size"), (int)BottomRight); + m->insertItem(QPEManager::tr("Maximize"), (int)Maximize); + m->insertSeparator(); + m->insertItem(QPEManager::tr("Close"), (int)Close); + + return m; +} + #ifndef QT_NO_DIALOG @@ -873,3 +904,3 @@ void QPEDecoration::minimize( QWidget *widget ) #endif - else if ( ((HackWidget *)widget)->needsOk() ) { + else if ( ((DecorHackWidget *)widget)->needsOk() ) { QSignal s; @@ -884,7 +915,16 @@ void QPEDecoration::help( QWidget *w ) { - if ( helpExists ) { - Global::execute( "helpbrowser", helpFile ); + if ( helpExists() ) { + QString hf = helpFile; + QString localHelpFile = QString(qApp->argv()[0]) + "-" + w->name() + ".html"; + QStringList helpPath = Global::helpPath(); + for (QStringList::ConstIterator it=helpPath.begin(); it!=helpPath.end(); ++it) { + if ( QFile::exists( *it + "/" + localHelpFile ) ) { + hf = localHelpFile; + break; + } + } + Global::execute( "helpbrowser", hf ); } else if ( w && w->testWFlags(Qt::WStyle_ContextHelp) ) { QWhatsThis::enterWhatsThisMode(); - QWhatsThis::leaveWhatsThisMode( QObject::tr( + QWhatsThis::leaveWhatsThisMode( QObject::tr( "<Qt>Comprehensive help is not available for this application, " @@ -901,3 +941,3 @@ void QPEDecoration::windowData( const QWidget *w, WindowDecorationInterface::Win if ( qpeManager->whatsThisWidget() == w ) - wd.caption = QObject::tr("What's this..." ); + wd.caption = QObject::tr( "What's this..." ); else @@ -926 +966,2 @@ QPopupMenu *QPEDecoration::menu(QWSManager*, const QWidget*, const QPoint&) #endif // QT_NO_QWS_QPE_WM_STYLE +#endif diff --git a/library/qpedecoration_qws.h b/library/qpedecoration_qws.h index d0a2005..ca670cd 100644 --- a/library/qpedecoration_qws.h +++ b/library/qpedecoration_qws.h @@ -24,2 +24,3 @@ #ifdef QWS +#include <qpe/global.h> #include <qwsdefaultdecoration_qws.h> @@ -35,2 +36,3 @@ class QPEManager; class QTimer; +#include <qwidget.h> @@ -49,2 +51,3 @@ public: void minimize( QWidget * ); + virtual QPopupMenu *menu( const QWidget *, const QPoint & ); virtual void help( QWidget * ); @@ -65,3 +68,3 @@ private: - void init ( const QString & ); + bool helpExists() const; @@ -72,3 +75,3 @@ protected: QString helpFile; - bool helpExists; + bool helpexists : 1; QPEManager *qpeManager; @@ -103,3 +106,3 @@ protected: QTimer *wtTimer; - bool inWhatsThis; + bool inWhatsThis : 1; QGuardedPtr<QWidget> whatsThis; |