-rw-r--r-- | library/qpeapplication.cpp | 322 | ||||
-rw-r--r-- | library/styleinterface.h | 68 |
2 files changed, 298 insertions, 92 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp index dff8235..187a7e2 100644 --- a/library/qpeapplication.cpp +++ b/library/qpeapplication.cpp @@ -63,8 +63,9 @@ #include <qsignal.h> #include "qpeapplication.h" #include "qpestyle.h" +#include "styleinterface.h" #if QT_VERSION >= 300 #include <qstylefactory.h> #else #include <qplatinumstyle.h> @@ -73,9 +74,8 @@ #include <qmotifplusstyle.h> #include "lightstyle.h" #include <qpe/qlibrary.h> -#include <dlfcn.h> #endif #include "global.h" #include "resource.h" #if QT_VERSION <= 230 && defined(QT_NO_CODECS) @@ -104,9 +104,10 @@ #endif #include <stdlib.h> -class QPEApplicationData { +class QPEApplicationData +{ public: QPEApplicationData() : presstimer(0), presswidget(0), rightpressed(FALSE), kbgrabber(0), kbregrab(FALSE), notbusysent(FALSE), preloaded(FALSE), forceshow(FALSE), nomaximize(FALSE), qpe_main_widget(0), @@ -122,12 +123,14 @@ public: int kbgrabber; bool kbregrab; bool notbusysent; QString appName; - struct QCopRec { + struct QCopRec + { QCopRec(const QCString &ch, const QCString &msg, const QByteArray &d) : - channel(ch), message(msg), data(d) { } + channel( ch ), message( msg ), data( d ) + { } QCString channel; QCString message; QByteArray data; @@ -152,9 +155,10 @@ public: qcopq.clear(); } }; -class ResourceMimeFactory : public QMimeSourceFactory { +class ResourceMimeFactory : public QMimeSourceFactory +{ public: ResourceMimeFactory() { setFilePath( Global::helpPath() ); @@ -174,9 +178,10 @@ public: name = name.left(dot); QImage img = Resource::loadImage(name); if ( !img.isNull() ) r = new QImageDrag(img); - } while (!r && sl>0); + } + while ( !r && sl > 0 ); } return r; } }; @@ -199,9 +204,10 @@ static void setVolume(int t=0, int percent=-1) vol |= vol << 8; ioctl(fd, MIXER_WRITE(0), &vol); ::close(fd); } - } break; + } + break; } } static void setMic(int t=0, int percent=-1) @@ -218,19 +224,22 @@ static void setMic(int t=0, int percent=-1) if ((fd = open("/dev/mixer", O_RDWR))>=0) { ioctl(fd, MIXER_WRITE(SOUND_MIXER_MIC), &mic); ::close(fd); } - } break; + } + break; } } int qpe_sysBrightnessSteps() { #if defined(QT_QWS_IPAQ) return 255; #elif defined(QT_QWS_EBX) + return 4; #else + return 255; // ? #endif } @@ -241,8 +250,9 @@ static int& hack(int& i) // These should be created, but aren't in Qt 2.3.0 (void)new QUtf8Codec; (void)new QUtf16Codec; #endif + return i; } static bool forced_off = FALSE; @@ -285,32 +295,40 @@ static void setBacklight(int bright) cmd += bright<=0 ? "0 " : "1 "; cmd += QString::number(bright); system(cmd.latin1()); #if defined(QT_QWS_EBX) - } else if ( QFile::exists("/dev/fl") ) { + + } + else if ( QFile::exists( "/dev/fl" ) ) { #define FL_IOCTL_STEP_CONTRAST 100 int fd = open("/dev/fl", O_WRONLY); if (fd >= 0 ) { int steps = qpe_sysBrightnessSteps(); int bl = ( bright * steps + 127 ) / 255; - if ( bright && !bl ) bl = 1; + if ( bright && !bl ) + bl = 1; bl = ioctl(fd, FL_IOCTL_STEP_CONTRAST, bl); close(fd); } } #elif defined(QT_QWS_IPAQ) - } else if ( QFile::exists("/dev/ts") || QFile::exists("/dev/h3600_ts") ) { + + } + else if ( QFile::exists( "/dev/ts" ) || QFile::exists( "/dev/h3600_ts" ) ) + { typedef struct { unsigned char mode; unsigned char pwr; unsigned char brightness; - } FLITE_IN; + } + FLITE_IN; # ifndef FLITE_ON # ifndef _LINUX_IOCTL_H # include <linux/ioctl.h> # endif # define FLITE_ON _IOW('f', 7, FLITE_IN) # endif + int fd; if ( QFile::exists("/dev/ts") ) fd = open("/dev/ts", O_WRONLY); else @@ -328,9 +346,11 @@ static void setBacklight(int bright) #endif curbl = bright; } -void qpe_setBacklight(int bright) { setBacklight(bright); } +void qpe_setBacklight( int bright ) { + setBacklight( bright ); +} static bool dim_on = FALSE; static bool lightoff_on = FALSE; static int disable_suspend = 100; @@ -357,17 +377,24 @@ public: LcdOn = TRUE; // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off) fd=open("/dev/fb0",O_RDWR); - if (fd != -1) { ioctl(fd,FBIOBLANK,VESA_NO_BLANKING); close(fd); } + if ( fd != -1 ) { + ioctl( fd, FBIOBLANK, VESA_NO_BLANKING ); + close( fd ); + } } void restore() { if (!LcdOn) // We must have turned it off { int fd; fd=open("/dev/fb0",O_RDWR); - if (fd != -1) { ioctl(fd,FBIOBLANK,VESA_NO_BLANKING); close(fd); } + if ( fd != -1 ) + { + ioctl( fd, FBIOBLANK, VESA_NO_BLANKING ); + close( fd ); + } } setBacklight(-1); } bool save(int level) @@ -393,9 +420,13 @@ public: config.setGroup( "Screensaver" ); if (config.readNumEntry("LcdOffOnly",0) != 0) // We're only turning off the LCD { fd=open("/dev/fb0",O_RDWR); - if (fd != -1) { ioctl(fd,FBIOBLANK,VESA_POWERDOWN); close(fd); } + if ( fd != -1 ) + { + ioctl( fd, FBIOBLANK, VESA_POWERDOWN ); + close( fd ); + } LcdOn = FALSE; } else // We're going to suspend the whole machine { @@ -571,9 +602,10 @@ QPEApplication::QPEApplication( int& argc, char **argv, Type t ) argv[a] = argv[a+1]; a++; d->preloaded = TRUE; argc-=1; - } else if ( qstrcmp(argv[a],"-preload-show")==0 ) { + } + else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) { argv[a] = argv[a+1]; a++; d->preloaded = TRUE; d->forceshow = TRUE; @@ -588,8 +620,9 @@ QPEApplication::QPEApplication( int& argc, char **argv, Type t ) qwsSetDecoration( new QPEDecoration() ); #ifndef QT_NO_TRANSLATION + QStringList langs = Global::languageList(); for (QStringList::ConstIterator it = langs.begin(); it!=langs.end(); ++it) { QString lang = *it; @@ -687,19 +720,27 @@ QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget* w ) void QPEApplication::setInputMethodHint( QWidget* w, InputMethodHint mode ) { createInputMethodDict(); if ( mode == Normal ) { - inputMethodDict->remove(w); - } else { + inputMethodDict->remove + ( w ); + } + else { inputMethodDict->insert(w,(void*)mode); } } class HackDialog : public QDialog { public: - void acceptIt() { accept(); } - void rejectIt() { reject(); } + void acceptIt() + { + accept(); + } + void rejectIt() + { + reject(); + } }; void QPEApplication::mapToDefaultAction( QWSKeyEvent *ke, int key ) @@ -720,9 +761,11 @@ void QPEApplication::mapToDefaultAction( QWSKeyEvent *ke, int key ) class HackWidget : public QWidget { public: bool needsOk() - { return (getWState() & WState_Reserved1 ); } + { + return ( getWState() & WState_Reserved1 ); + } }; /*! \internal @@ -763,22 +806,26 @@ bool QPEApplication::qwsEventFilter( QWSEvent *e ) if ( active->inherits( "QDialog" ) ) { HackDialog *d = (HackDialog *)active; d->acceptIt(); return TRUE; - } else if ( ((HackWidget *)active)->needsOk() ) { + } + else if ( ( ( HackWidget * ) active ) ->needsOk() ) { QSignal s; s.connect( active, SLOT( accept() ) ); s.activate(); - } else { + } + else { // do the same as with the select key: Map to the default action of the widget: mapToDefaultAction( ke, Qt::Key_Return ); } } } - } else if ( ke->simpleData.keycode == Qt::Key_F30 ) { + } + else if ( ke->simpleData.keycode == Qt::Key_F30 ) { // Use special "select" key to do whatever default action a widget has mapToDefaultAction( ke, Qt::Key_Space ); - } else if ( ke->simpleData.keycode == Qt::Key_Escape && + } + else if ( ke->simpleData.keycode == Qt::Key_Escape && ke->simpleData.is_press ) { // Escape key closes app if focus on toplevel QWidget *active = activeWindow(); if ( active && active->testWFlags( WType_TopLevel ) && @@ -787,9 +834,10 @@ bool QPEApplication::qwsEventFilter( QWSEvent *e ) if ( active->inherits( "QDialog" ) ) { HackDialog *d = (HackDialog *)active; d->rejectIt(); return TRUE; - } else if ( strcmp( argv()[0], "embeddedkonsole") != 0 ) { + } + else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) { active->close(); } } } @@ -799,8 +847,9 @@ bool QPEApplication::qwsEventFilter( QWSEvent *e ) // ### The launcher key may not always be F4 on all devices if ( ((QWSKeyEvent *)e)->simpleData.keycode == Qt::Key_F4 ) return TRUE; #endif + } if ( e->type == QWSEvent::Focus ) { QWSFocusEvent *fe = (QWSFocusEvent*)e; QWidget* nfw = QWidget::find(e->window()); @@ -813,9 +862,10 @@ bool QPEApplication::qwsEventFilter( QWSEvent *e ) if ( !nfw && d->kbgrabber == 2 ) { ungrabKeyboard(); d->kbregrab = TRUE; // want kb back when we're active } - } else { + } + else { // make sure our modal widget is ALWAYS on top QWidget *topm = activeModalWidget(); if ( topm ) { topm->raise(); @@ -847,8 +897,9 @@ QPEApplication::~QPEApplication() // be gone by the time we get to ~QObject(). delete sysChannel; delete pidChannel; #endif + delete d; } /*! @@ -885,13 +936,16 @@ int QPEApplication::defaultRotation() if ( deforient < 0 ) { QString d = getenv("QWS_DISPLAY"); if ( d.contains("Rot90") ) { deforient = 90; - } else if ( d.contains("Rot180") ) { + } + else if ( d.contains( "Rot180" ) ) { deforient = 180; - } else if ( d.contains("Rot270") ) { + } + else if ( d.contains( "Rot270" ) ) { deforient = 270; - } else { + } + else { deforient=0; } } return deforient; @@ -904,9 +958,10 @@ void QPEApplication::setDefaultRotation(int r) { if ( qApp->type() == GuiServer ) { deforient = r; setenv("QWS_DISPLAY", QString("Transformed:Rot%1:0").arg(r).latin1(), 1); - } else { + } + else { QCopEnvelope("QPE/System", "setDefaultRotation(int)") << r; } } @@ -949,54 +1004,64 @@ void QPEApplication::systemMessage( const QCString &msg, const QByteArray &data) #ifdef Q_WS_QWS QDataStream stream( data, IO_ReadOnly ); if ( msg == "applyStyle()" ) { applyStyle(); - } else if ( msg == "setScreenSaverInterval(int)" ) { + } + else if ( msg == "setScreenSaverInterval(int)" ) { if ( type() == GuiServer ) { int time; stream >> time; setScreenSaverInterval(time); } - } else if ( msg == "setScreenSaverIntervals(int,int,int)" ) { + } + else if ( msg == "setScreenSaverIntervals(int,int,int)" ) { if ( type() == GuiServer ) { int t1,t2,t3; stream >> t1 >> t2 >> t3; setScreenSaverIntervals(t1,t2,t3); } - } else if ( msg == "setBacklight(int)" ) { + } + else if ( msg == "setBacklight(int)" ) { if ( type() == GuiServer ) { int bright; stream >> bright; setBacklight(bright); } - } else if ( msg == "setDefaultRotation(int)" ) { + } + else if ( msg == "setDefaultRotation(int)" ) { if ( type() == GuiServer ) { int r; stream >> r; setDefaultRotation(r); } - } else if ( msg == "shutdown()" ) { + } + else if ( msg == "shutdown()" ) { if ( type() == GuiServer ) shutdown(); - } else if ( msg == "quit()" ) { + } + else if ( msg == "quit()" ) { if ( type() != GuiServer ) tryQuit(); - } else if ( msg == "forceQuit()" ) { + } + else if ( msg == "forceQuit()" ) { if ( type() != GuiServer ) quit(); - } else if ( msg == "restart()" ) { + } + else if ( msg == "restart()" ) { if ( type() == GuiServer ) restart(); - } else if ( msg == "grabKeyboard(QString)" ) { + } + else if ( msg == "grabKeyboard(QString)" ) { QString who; stream >> who; if ( who.isEmpty() ) d->kbgrabber = 0; else if ( who != d->appName ) d->kbgrabber = 1; else d->kbgrabber = 2; - } else if ( msg == "language(QString)" ) { + } + else if ( msg == "language(QString)" ) { if ( type() == GuiServer ) { QString l; stream >> l; QString cl = getenv("LANG"); @@ -1007,76 +1072,89 @@ void QPEApplication::systemMessage( const QCString &msg, const QByteArray &data) setenv( "LANG", l.latin1(), 1 ); restart(); } } - } else if ( msg == "timeChange(QString)" ) { + } + else if ( msg == "timeChange(QString)" ) { QString t; stream >> t; if ( t.isNull() ) unsetenv( "TZ" ); else setenv( "TZ", t.latin1(), 1 ); // emit the signal so everyone else knows... emit timeChanged(); - } else if ( msg == "execute(QString)" ) { + } + else if ( msg == "execute(QString)" ) { if ( type() == GuiServer ) { QString t; stream >> t; Global::execute( t ); } - } else if ( msg == "execute(QString,QString)" ) { + } + else if ( msg == "execute(QString,QString)" ) { if ( type() == GuiServer ) { QString t,d; stream >> t >> d; Global::execute( t, d ); } - } else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { + } + else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { if ( type() == GuiServer ) { QDateTime when; QCString channel, message; int data; stream >> when >> channel >> message >> data; AlarmServer::addAlarm( when, channel, message, data ); } - } else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { + } + else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { if ( type() == GuiServer ) { QDateTime when; QCString channel, message; int data; stream >> when >> channel >> message >> data; AlarmServer::deleteAlarm( when, channel, message, data ); } - } else if ( msg == "clockChange(bool)" ) { + } + else if ( msg == "clockChange(bool)" ) { int tmp; stream >> tmp; emit clockChanged( tmp ); - } else if ( msg == "weekChange(bool)" ) { + } + else if ( msg == "weekChange(bool)" ) { int tmp; stream >> tmp; emit weekChanged( tmp ); - } else if ( msg == "setDateFormat(DateFormat)" ) { + } + else if ( msg == "setDateFormat(DateFormat)" ) { DateFormat tmp; stream >> tmp; emit dateFormatChanged( tmp ); - } else if ( msg == "setVolume(int,int)" ) { + } + else if ( msg == "setVolume(int,int)" ) { int t,v; stream >> t >> v; setVolume(t,v); emit volumeChanged( muted ); - } else if ( msg == "volumeChange(bool)" ) { + } + else if ( msg == "volumeChange(bool)" ) { stream >> muted; setVolume(); emit volumeChanged( muted ); - } else if ( msg == "setMic(int,int)") { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> + } + else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> int t,v; stream >> t >> v; setMic(t,v); emit micChanged( micMuted ); - } else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> + } + else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> stream >> micMuted; setMic(); emit micChanged( micMuted ); - } else if ( msg == "setScreenSaverMode(int)" ) { + } + else if ( msg == "setScreenSaverMode(int)" ) { if ( type() == GuiServer ) { int old = disable_suspend; stream >> disable_suspend; //qDebug("setScreenSaverMode(%d)", disable_suspend ); @@ -1095,17 +1173,20 @@ bool QPEApplication::raiseAppropriateWindow() bool r=FALSE; // ########## raise()ing main window should raise and set active // ########## it and then all childen. This belongs in Qt/Embedded QWidget *top = d->qpe_main_widget; - if ( !top ) top =mainWidget(); + if ( !top ) + top = mainWidget(); if ( top && d->keep_running ) { if ( top->isVisible() ) r = TRUE; #ifdef Q_WS_QWS + if ( !d->nomaximize ) top->showMaximized(); else #endif + top->show(); top->raise(); top->setActiveWindow(); } @@ -1124,33 +1205,41 @@ void QPEApplication::pidMessage( const QCString &msg, const QByteArray & data) #ifdef Q_WS_QWS if ( msg == "quit()" ) { tryQuit(); - } else if ( msg == "quitIfInvisible()" ) { + } + else if ( msg == "quitIfInvisible()" ) { if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) quit(); - } else if ( msg == "close()" ) { + } + else if ( msg == "close()" ) { hideOrQuit(); - } else if ( msg == "disablePreload()" ) { + } + else if ( msg == "disablePreload()" ) { d->preloaded = FALSE; d->keep_running = TRUE; /* so that quit will quit */ - } else if ( msg == "enablePreload()" ) { + } + else if ( msg == "enablePreload()" ) { d->preloaded = TRUE; d->keep_running = TRUE; /* so next quit won't quit */ - } else if ( msg == "raise()" ) { + } + else if ( msg == "raise()" ) { d->keep_running = TRUE; d->notbusysent = FALSE; raiseAppropriateWindow(); - } else if ( msg == "flush()" ) { + } + else if ( msg == "flush()" ) { emit flush(); // we need to tell the desktop QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); e << d->appName; - } else if ( msg == "reload()" ) { + } + else if ( msg == "reload()" ) { emit reload(); - } else if ( msg == "setDocument(QString)" ) { + } + else if ( msg == "setDocument(QString)" ) { d->keep_running = TRUE; QDataStream stream( data, IO_ReadOnly ); QString doc; stream >> doc; @@ -1158,12 +1247,14 @@ void QPEApplication::pidMessage( const QCString &msg, const QByteArray & data) if ( !mw ) mw = d->qpe_main_widget; if ( mw ) Global::setDocument( mw, doc ); - } else if ( msg == "nextView()" ) { + } + else if ( msg == "nextView()" ) { if ( raiseAppropriateWindow() ) emit appMessage( msg, data); - } else { + } + else { emit appMessage( msg, data); } #endif } @@ -1212,16 +1303,19 @@ void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) if ( !nomaximize ) mw->showMaximized(); else #endif + mw->show(); } - } else if ( d->keep_running ) { + } + else if ( d->keep_running ) { #ifdef Q_WS_QWS if ( !nomaximize ) mw->showMaximized(); else #endif + mw->show(); } } @@ -1251,16 +1345,19 @@ void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) if ( !nomaximize ) mw->showMaximized(); else #endif + mw->show(); } - } else if ( d->keep_running ) { + } + else if ( d->keep_running ) { #ifdef Q_WS_QWS if ( !nomaximize ) mw->showMaximized(); else #endif + mw->show(); } } @@ -1300,18 +1397,22 @@ void QPEApplication::internalSetStyle( const QString &style ) { #if QT_VERSION >= 300 if ( style == "QPE" ) { setStyle( new QPEStyle ); - } else { + } + else { QStyle *s = QStyleFactory::create(style); - if ( s ) setStyle(s); + if ( s ) + setStyle( s ); } #else if ( style == "Windows" ) { setStyle( new QWindowsStyle ); - } else if ( style == "QPE" ) { + } + else if ( style == "QPE" ) { setStyle( new QPEStyle ); - } else if ( style == "Light" ) { + } + else if ( style == "Light" ) { setStyle( new LightStyle ); } #ifndef QT_NO_STYLE_PLATINUM else if ( style == "Platinum" ) { @@ -1330,8 +1431,45 @@ void QPEApplication::internalSetStyle( const QString &style ) #endif // HACK for Qt2 only else { + QStyle *sty = 0; + QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/lib" + style. lower ( ) + ".so"; + + static QLibrary *lastlib = 0; + static StyleInterface *lastiface = 0; + + QLibrary *lib = new QLibrary ( path ); + StyleInterface *iface = 0; + + if ( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) + sty = iface-> create ( ); + + if ( sty ) { + setStyle ( sty ); + + qDebug ( "Got Style: %p -- iface: %p, lib: %p\n", sty, iface, lib ); + + if ( lastiface ) + lastiface-> release ( ); + lastiface = iface; + + + if ( lastlib ) { + lastlib-> unload ( ); + delete lastlib; + } + lastlib = lib; + } + else { + if ( iface ) + iface-> release ( ); + delete lib; + + setStyle ( new QPEStyle ( )); + } + +#if 0 // style == "Liquid Style (libliquid.so)" (or "Windows XP (libxp.so)" int p2 = style. findRev ( ']' ); int p1 = style. findRev ( '[' ); @@ -1341,44 +1479,40 @@ void QPEApplication::internalSetStyle( const QString &style ) style2 = "lib" + style. mid ( p1 + 1, p2 - p1 - 1 ). lower ( ) + ".so"; else style2 = "lib" + style. lower ( ) + ".so"; - // static QLibrary *currentlib = 0; - static void *currentlib = 0; + static QLibrary *currentlib = 0; QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/" + style2; do { // try/catch simulation - // QLibrary *lib = new QLibrary ( path, QLibrary::Immediately ); - void *lib = ::dlopen ( path. local8Bit ( ), RTLD_LAZY | RTLD_GLOBAL ); + QLibrary *lib = new QLibrary ( path, QLibrary::Immediately ); if ( lib ) { - //QStyle * (*fpa) ( ) = (QStyle * (*) ( )) lib-> resolve ( "allocate" ); - QStyle * (*fpa) ( ) = (QStyle * (*) ( )) ::dlsym ( lib, "allocate" ); + QStyle * ( *fpa ) ( ) = ( QStyle * ( * ) ( ) ) lib-> resolve ( "allocate" ); if ( fpa ) { QStyle *sty = ( *fpa ) ( ); if ( sty ) { setStyle ( sty ); - if ( currentlib ) { - //delete currentlib; - ::dlclose ( currentlib ); - } + if ( currentlib ) + delete currentlib; currentlib = lib; break; } } - //delete lib; - ::dlclose ( lib ); + delete lib; } - } while ( false ); } + while ( false ); // HACK for Qt2 only #endif } +#endif +} /*! \internal */ @@ -1397,9 +1531,10 @@ void QPEApplication::prepareForTermination(bool willrestart) lblWait->show(); lblWait->showMaximized(); } #ifndef SINGLE_APP - { QCopEnvelope envelope("QPE/System", "forceQuit()"); } + { QCopEnvelope envelope( "QPE/System", "forceQuit()" ); + } processEvents(); // ensure the message goes out. sleep(1); // You have 1 second to comply. #endif } @@ -1458,11 +1593,13 @@ QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w ) void QPEApplication::setStylusOperation( QWidget* w, StylusMode mode ) { createDict(); if ( mode == LeftOnly ) { - stylusDict->remove(w); + stylusDict->remove + ( w ); w->removeEventFilter(qApp); - } else { + } + else { stylusDict->insert(w,(void*)mode); connect(w,SIGNAL(destroyed()),qApp,SLOT(removeSenderFromStylusDict())); w->installEventFilter(qApp); } @@ -1515,9 +1652,10 @@ bool QPEApplication::eventFilter( QObject *o, QEvent *e ) default: ; } } - } else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) { + } + else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) { QKeyEvent *ke = (QKeyEvent *)e; if ( ke->key() == Key_Enter ) { if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) { postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ', @@ -1547,9 +1685,10 @@ void QPEApplication::timerEvent( QTimerEvent *e ) } void QPEApplication::removeSenderFromStylusDict() { - stylusDict->remove((void*)sender()); + stylusDict->remove + ( ( void* ) sender() ); if ( d->presswidget == sender() ) d->presswidget = 0; } @@ -1703,10 +1842,9 @@ void qt_setMaxWindowRect(const QRect& r) QWidgetList* l = QApplication::topLevelWidgets(); if ( l ) { QWidget *w = l->first(); while ( w ) { - if ( w->isVisible() && w->isMaximized() ) - { + if ( w->isVisible() && w->isMaximized() ) { w->showMaximized(); } w = l->next(); } diff --git a/library/styleinterface.h b/library/styleinterface.h new file mode 100644 index 0000000..9fea636 --- a/dev/null +++ b/library/styleinterface.h @@ -0,0 +1,68 @@ +/********************************************************************** +** Copyright (C) 2002 Robert Griebl. All rights reserved. +** +** This file is part of OPIE (http://www.opie.info). +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +**********************************************************************/ + +#ifndef STYLEINTERFACE_H +#define STYLEINTERFACE_H + +#include <qpe/qcom.h> + +#ifndef QT_NO_COMPONENT + +// {6C33B4F9-D529-453A-8FB3-DA42B21872BD} +# ifndef IID_Style +# define IID_Style QUuid( 0x6c33b4f9, 0xd529, 0x453a, 0x8f, 0xb3, 0xda, 0x42, 0xb2, 0x18, 0x72, 0xbd) +#endif + +// {9757A252-3FD4-438F-A756-80BE4A9FB8DC} +# ifndef IID_StyleSettings +# define IID_StyleSettings QUuid( 0x9757a252, 0x3fd4, 0x438f, 0xa7, 0x56, 0x80, 0xbe, 0x4a, 0x9f, 0xb8, 0xdc) +# endif + +#endif + +class QWidget; +class QStyle; + +struct StyleInterface : public QUnknownInterface +{ + //! Return a new style. + virtual QStyle *create ( ) = 0; + + //! Return a (longer) description for the style. + virtual QString description ( ) = 0; + + //! Return a short name for the style. + virtual QString name ( ) = 0; + + //! Return the library basename (libliquid.so => liquid) + virtual QCString key ( ) = 0; + + //! QT_VERSION like 1.2.3 == 123 + virtual unsigned int version ( ) = 0; +}; + +struct StyleSettingsInterface : public QUnknownInterface +{ + //! Return a new settings page. + virtual QWidget *create ( QWidget *parent, const char *name = 0 ) = 0; + + //! Callback for appearance app when OK is clicked (return true when style has to re-applied). + virtual bool accept ( ) = 0; + + //! Callback for appeaeance app when Cancel is clicked. + virtual void reject ( ) = 0; +}; + +#endif |