author | sandman <sandman> | 2002-07-06 16:42:29 (UTC) |
---|---|---|
committer | sandman <sandman> | 2002-07-06 16:42:29 (UTC) |
commit | 3a422983abc7342c9229dccac825d0608fca10f3 (patch) (side-by-side diff) | |
tree | fd0d71eab4df0b286b78efe24184525ae4c819a3 | |
parent | 8beb5fcdbca8110dc586a7e620bf8eae892087fb (diff) | |
download | opie-3a422983abc7342c9229dccac825d0608fca10f3.zip opie-3a422983abc7342c9229dccac825d0608fca10f3.tar.gz opie-3a422983abc7342c9229dccac825d0608fca10f3.tar.bz2 |
Complete renovation of the external style API:
- created two QCom interfaces in "styleinterface.h"
- moved the liquid/theme settings apps into the plugins
- modified the plugin interface for all three styles
- extended appearance to fully support the new API (replaces the
settings apps)
Additional work:
- made a workaround in appearance for a Qt Bug -- now a QDialog again
(this should really be fixed in Qt, but Z won't work that way)
28 files changed, 1697 insertions, 1301 deletions
@@ -51,7 +51,5 @@ NONCORETOOLS = noncore/tools/calculator noncore/tools/clock \ noncore/tools/remote noncore/tools/opie-sh noncore/apps/advancedfm -NONCORESTYLES = noncore/styles/liquid noncore/styles/liquid/settings \ - noncore/styles/theme noncore/styles/theme/settings \ - noncore/styles/metal +NONCORESTYLES = noncore/styles/liquid noncore/styles/theme noncore/styles/metal GAMES = noncore/games/minesweep noncore/games/solitaire \ diff --git a/apps/Settings/Liquid.desktop b/apps/Settings/Liquid.desktop deleted file mode 100644 index 8a1727f..0000000 --- a/apps/Settings/Liquid.desktop +++ b/dev/null @@ -1,7 +0,0 @@ -[Desktop Entry] -Type=Application -Exec=liquid-settings -Icon=liquid/Liquid -Name=Liquid-Settings -Name[de]=Liquid-Einstellungen - diff --git a/apps/Settings/Theme.desktop b/apps/Settings/Theme.desktop deleted file mode 100644 index 197184f..0000000 --- a/apps/Settings/Theme.desktop +++ b/dev/null @@ -1,7 +0,0 @@ -[Desktop Entry] -Type=Application -Exec=theme-settings -Icon=theme/Theme -Name=Theme-Settings -Name[de]=Thema-Einstellungen - diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp index dff8235..187a7e2 100644 --- a/library/qpeapplication.cpp +++ b/library/qpeapplication.cpp @@ -59,5 +59,5 @@ #define VESA_POWERDOWN 3 -#define FBIOBLANK 0x4611 +#define FBIOBLANK 0x4611 @@ -65,4 +65,5 @@ #include "qpeapplication.h" #include "qpestyle.h" +#include "styleinterface.h" #if QT_VERSION >= 300 #include <qstylefactory.h> @@ -75,5 +76,4 @@ #include <qpe/qlibrary.h> -#include <dlfcn.h> #endif #include "global.h" @@ -106,120 +106,127 @@ -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), - keep_running(TRUE) - { - qcopq.setAutoDelete(TRUE); - } + QPEApplicationData() : presstimer( 0 ), presswidget( 0 ), rightpressed( FALSE ), + kbgrabber( 0 ), kbregrab( FALSE ), notbusysent( FALSE ), preloaded( FALSE ), + forceshow( FALSE ), nomaximize( FALSE ), qpe_main_widget( 0 ), + keep_running( TRUE ) + { + qcopq.setAutoDelete( TRUE ); + } - int presstimer; - QWidget* presswidget; - QPoint presspos; - bool rightpressed; - int kbgrabber; - bool kbregrab; - bool notbusysent; - QString appName; - struct QCopRec { - QCopRec(const QCString &ch, const QCString &msg, - const QByteArray &d) : - channel(ch), message(msg), data(d) { } - - QCString channel; - QCString message; - QByteArray data; - }; - bool preloaded; - bool forceshow; - bool nomaximize; - QWidget* qpe_main_widget; - bool keep_running; - QList<QCopRec> qcopq; - - void enqueueQCop(const QCString &ch, const QCString &msg, - const QByteArray &data) - { - qcopq.append(new QCopRec(ch,msg,data)); - } - void sendQCopQ() - { - QCopRec* r; - for (QListIterator<QCopRec> it(qcopq); (r=it.current()); ++it) - QCopChannel::sendLocally(r->channel,r->message,r->data); - qcopq.clear(); - } + int presstimer; + QWidget* presswidget; + QPoint presspos; + bool rightpressed; + int kbgrabber; + bool kbregrab; + bool notbusysent; + QString appName; + struct QCopRec + { + QCopRec( const QCString &ch, const QCString &msg, + const QByteArray &d ) : + channel( ch ), message( msg ), data( d ) + { } + + QCString channel; + QCString message; + QByteArray data; + }; + bool preloaded; + bool forceshow; + bool nomaximize; + QWidget* qpe_main_widget; + bool keep_running; + QList<QCopRec> qcopq; + + void enqueueQCop( const QCString &ch, const QCString &msg, + const QByteArray &data ) + { + qcopq.append( new QCopRec( ch, msg, data ) ); + } + void sendQCopQ() + { + QCopRec * r; + for ( QListIterator<QCopRec> it( qcopq ); ( r = it.current() ); ++it ) + QCopChannel::sendLocally( r->channel, r->message, r->data ); + qcopq.clear(); + } }; -class ResourceMimeFactory : public QMimeSourceFactory { +class ResourceMimeFactory : public QMimeSourceFactory +{ public: - ResourceMimeFactory() - { - setFilePath( Global::helpPath() ); - setExtensionType("html","text/html;charset=UTF-8"); - } + ResourceMimeFactory() + { + setFilePath( Global::helpPath() ); + setExtensionType( "html", "text/html;charset=UTF-8" ); + } - const QMimeSource* data(const QString& abs_name) const - { - const QMimeSource* r = QMimeSourceFactory::data(abs_name); - if ( !r ) { - int sl = abs_name.length(); - do { - sl = abs_name.findRev('/',sl-1); - QString name = sl>=0 ? abs_name.mid(sl+1) : abs_name; - int dot = name.findRev('.'); - if ( dot >= 0 ) - name = name.left(dot); - QImage img = Resource::loadImage(name); - if ( !img.isNull() ) - r = new QImageDrag(img); - } while (!r && sl>0); - } - return r; - } + const QMimeSource* data( const QString& abs_name ) const + { + const QMimeSource * r = QMimeSourceFactory::data( abs_name ); + if ( !r ) { + int sl = abs_name.length(); + do { + sl = abs_name.findRev( '/', sl - 1 ); + QString name = sl >= 0 ? abs_name.mid( sl + 1 ) : abs_name; + int dot = name.findRev( '.' ); + if ( dot >= 0 ) + name = name.left( dot ); + QImage img = Resource::loadImage( name ); + if ( !img.isNull() ) + r = new QImageDrag( img ); + } + while ( !r && sl > 0 ); + } + return r; + } }; -static int muted=0; -static int micMuted=0; +static int muted = 0; +static int micMuted = 0; -static void setVolume(int t=0, int percent=-1) +static void setVolume( int t = 0, int percent = -1 ) { - switch (t) { - case 0: { - Config cfg("qpe"); - cfg.setGroup("Volume"); - if ( percent < 0 ) - percent = cfg.readNumEntry("VolumePercent",50); - int fd = 0; - if ((fd = open("/dev/mixer", O_RDWR))>=0) { - int vol = muted ? 0 : percent; - // set both channels to same volume - vol |= vol << 8; - ioctl(fd, MIXER_WRITE(0), &vol); - ::close(fd); - } - } break; - } + switch ( t ) { + case 0: { + Config cfg( "qpe" ); + cfg.setGroup( "Volume" ); + if ( percent < 0 ) + percent = cfg.readNumEntry( "VolumePercent", 50 ); + int fd = 0; + if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { + int vol = muted ? 0 : percent; + // set both channels to same volume + vol |= vol << 8; + ioctl( fd, MIXER_WRITE( 0 ), &vol ); + ::close( fd ); + } + } + break; + } } -static void setMic(int t=0, int percent=-1) +static void setMic( int t = 0, int percent = -1 ) { - switch (t) { - case 0: { - Config cfg("qpe"); - cfg.setGroup("Volume"); - if ( percent < 0 ) - percent = cfg.readNumEntry("Mic",50); - - int fd = 0; - int mic = micMuted ? 0 : percent; - if ((fd = open("/dev/mixer", O_RDWR))>=0) { - ioctl(fd, MIXER_WRITE(SOUND_MIXER_MIC), &mic); - ::close(fd); - } - } break; - } + switch ( t ) { + case 0: { + Config cfg( "qpe" ); + cfg.setGroup( "Volume" ); + if ( percent < 0 ) + percent = cfg.readNumEntry( "Mic", 50 ); + + int fd = 0; + int mic = micMuted ? 0 : percent; + if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { + ioctl( fd, MIXER_WRITE( SOUND_MIXER_MIC ), &mic ); + ::close( fd ); + } + } + break; + } } @@ -227,82 +234,92 @@ int qpe_sysBrightnessSteps() { #if defined(QT_QWS_IPAQ) - return 255; + return 255; #elif defined(QT_QWS_EBX) - return 4; + + return 4; #else - return 255; // ? + + return 255; // ? #endif } -static int& hack(int& i) +static int& hack( int& i ) { #if QT_VERSION <= 230 && defined(QT_NO_CODECS) - // These should be created, but aren't in Qt 2.3.0 - (void)new QUtf8Codec; - (void)new QUtf16Codec; + // These should be created, but aren't in Qt 2.3.0 + ( void ) new QUtf8Codec; + ( void ) new QUtf16Codec; #endif - return i; + + return i; } static bool forced_off = FALSE; -static int curbl=-1; +static int curbl = -1; static int backlight() { - if ( curbl == -1 ) { - // Read from config - Config config( "qpe" ); - config.setGroup( "Screensaver" ); - curbl = config.readNumEntry("Brightness",255); - } - return curbl; + if ( curbl == -1 ) { + // Read from config + Config config( "qpe" ); + config.setGroup( "Screensaver" ); + curbl = config.readNumEntry( "Brightness", 255 ); + } + return curbl; } -static void setBacklight(int bright) +static void setBacklight( int bright ) { - if ( bright == -3 ) { - // Forced on - forced_off = FALSE; - bright = -1; - } - if ( forced_off && bright != -2 ) - return; - if ( bright == -2 ) { - // Toggle between off and on - bright = curbl ? 0 : -1; - forced_off = !bright; - } - if ( bright == -1 ) { - // Read from config - Config config( "qpe" ); - config.setGroup( "Screensaver" ); - bright = config.readNumEntry("Brightness",255); - } + if ( bright == -3 ) { + // Forced on + forced_off = FALSE; + bright = -1; + } + if ( forced_off && bright != -2 ) + return ; + if ( bright == -2 ) { + // Toggle between off and on + bright = curbl ? 0 : -1; + forced_off = !bright; + } + if ( bright == -1 ) { + // Read from config + Config config( "qpe" ); + config.setGroup( "Screensaver" ); + bright = config.readNumEntry( "Brightness", 255 ); + } #if defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX) - if ( QFile::exists("/usr/bin/bl") ) { - QString cmd = "/usr/bin/bl 1 "; - cmd += bright<=0 ? "0 " : "1 "; - cmd += QString::number(bright); - system(cmd.latin1()); + if ( QFile::exists( "/usr/bin/bl" ) ) { + QString cmd = "/usr/bin/bl 1 "; + 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; - bl = ioctl(fd, FL_IOCTL_STEP_CONTRAST, bl); - close(fd); - } - } + 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; + 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") ) { - typedef struct { - unsigned char mode; - unsigned char pwr; - unsigned char brightness; - } FLITE_IN; + + } + else if ( QFile::exists( "/dev/ts" ) || QFile::exists( "/dev/h3600_ts" ) ) + { + typedef struct { + unsigned char mode; + unsigned char pwr; + unsigned char brightness; + } + FLITE_IN; # ifndef FLITE_ON # ifndef _LINUX_IOCTL_H @@ -311,24 +328,27 @@ static void setBacklight(int bright) # define FLITE_ON _IOW('f', 7, FLITE_IN) # endif - int fd; - if ( QFile::exists("/dev/ts") ) - fd = open("/dev/ts", O_WRONLY); - else - fd = open("/dev/h3600_ts", O_WRONLY); - if (fd >= 0 ) { - FLITE_IN bl; - bl.mode = 1; - bl.pwr = bright ? 1 : 0; - bl.brightness = bright; - ioctl(fd, FLITE_ON, &bl); - close(fd); - } - } + + int fd; + if ( QFile::exists( "/dev/ts" ) ) + fd = open( "/dev/ts", O_WRONLY ); + else + fd = open( "/dev/h3600_ts", O_WRONLY ); + if ( fd >= 0 ) { + FLITE_IN bl; + bl.mode = 1; + bl.pwr = bright ? 1 : 0; + bl.brightness = bright; + ioctl( fd, FLITE_ON, &bl ); + close( fd ); + } + } #endif #endif - curbl = bright; + curbl = bright; } -void qpe_setBacklight(int bright) { setBacklight(bright); } +void qpe_setBacklight( int bright ) { + setBacklight( bright ); +} static bool dim_on = FALSE; @@ -338,10 +358,10 @@ static int disable_suspend = 100; static bool powerOnline() { - return PowerStatusManager::readStatus().acStatus() == PowerStatus::Online; + return PowerStatusManager::readStatus().acStatus() == PowerStatus::Online; } static bool networkOnline() { - return Network::networkOnline(); + return Network::networkOnline(); } @@ -349,105 +369,116 @@ class QPEScreenSaver : public QWSScreenSaver { private: - int LcdOn; + int LcdOn; public: - QPEScreenSaver() - { - int fd; - - 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); } - } - 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); } - } - setBacklight(-1); - } - bool save(int level) - { - int fd; - - switch ( level ) { - case 0: - if ( disable_suspend > 0 && dim_on ) { - if (backlight() > 1) - setBacklight(1); // lowest non-off - } - return TRUE; - break; - case 1: - if ( disable_suspend > 1 && lightoff_on ) { - setBacklight(0); // off - } - return TRUE; - break; - case 2: - Config config( "qpe" ); - 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); } - LcdOn = FALSE; - } - else // We're going to suspend the whole machine - { - if ( disable_suspend > 2 && !powerOnline() && !networkOnline() ) { - QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE ); - return TRUE; - } - } - break; - } - return FALSE; - } + QPEScreenSaver() + { + int fd; + + 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 ); + } + } + 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 ); + } + } + setBacklight( -1 ); + } + bool save( int level ) + { + int fd; + + switch ( level ) { + case 0: + if ( disable_suspend > 0 && dim_on ) { + if ( backlight() > 1 ) + setBacklight( 1 ); // lowest non-off + } + return TRUE; + break; + case 1: + if ( disable_suspend > 1 && lightoff_on ) { + setBacklight( 0 ); // off + } + return TRUE; + break; + case 2: + Config config( "qpe" ); + 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 ); + } + LcdOn = FALSE; + } + else // We're going to suspend the whole machine + { + if ( disable_suspend > 2 && !powerOnline() && !networkOnline() ) { + QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE ); + return TRUE; + } + } + break; + } + return FALSE; + } }; -static int ssi(int interval, Config &config, const QString &enable, const QString& value, int def) +static int ssi( int interval, Config & config, const QString & enable, const QString & value, int def ) { - if ( !enable.isEmpty() && config.readNumEntry(enable,0) == 0 ) - return 0; + if ( !enable.isEmpty() && config.readNumEntry( enable, 0 ) == 0 ) + return 0; - if ( interval < 0 ) { - // Restore screen blanking and power saving state - interval = config.readNumEntry( value, def ); - } - return interval; + if ( interval < 0 ) { + // Restore screen blanking and power saving state + interval = config.readNumEntry( value, def ); + } + return interval; } -static void setScreenSaverIntervals(int i1, int i2, int i3) +static void setScreenSaverIntervals( int i1, int i2, int i3 ) { - Config config( "qpe" ); - config.setGroup( "Screensaver" ); - - int v[4]; - i1 = ssi(i1, config, "Dim","Interval_Dim", 30); - i2 = ssi(i2, config, "LightOff","Interval_LightOff", 20); - i3 = ssi(i3, config, "","Interval", 60); - - //qDebug("screen saver intervals: %d %d %d", i1, i2, i3); - - v[0] = QMAX( 1000*i1, 100); - v[1] = QMAX( 1000*i2, 100); - v[2] = QMAX( 1000*i3, 100); - v[3] = 0; - dim_on = ( (i1 != 0) ? config.readNumEntry("Dim",1) : FALSE ); - lightoff_on = ( (i2 != 0 ) ? config.readNumEntry("LightOff",1) : FALSE ); - if ( !i1 && !i2 && !i3 ) - QWSServer::setScreenSaverInterval(0); - else - QWSServer::setScreenSaverIntervals(v); + Config config( "qpe" ); + config.setGroup( "Screensaver" ); + + int v[ 4 ]; + i1 = ssi( i1, config, "Dim", "Interval_Dim", 30 ); + i2 = ssi( i2, config, "LightOff", "Interval_LightOff", 20 ); + i3 = ssi( i3, config, "", "Interval", 60 ); + + //qDebug("screen saver intervals: %d %d %d", i1, i2, i3); + + v[ 0 ] = QMAX( 1000 * i1, 100 ); + v[ 1 ] = QMAX( 1000 * i2, 100 ); + v[ 2 ] = QMAX( 1000 * i3, 100 ); + v[ 3 ] = 0; + dim_on = ( ( i1 != 0 ) ? config.readNumEntry( "Dim", 1 ) : FALSE ); + lightoff_on = ( ( i2 != 0 ) ? config.readNumEntry( "LightOff", 1 ) : FALSE ); + if ( !i1 && !i2 && !i3 ) + QWSServer::setScreenSaverInterval( 0 ); + else + QWSServer::setScreenSaverIntervals( v ); } -static void setScreenSaverInterval(int interval) +static void setScreenSaverInterval( int interval ) { - setScreenSaverIntervals(-1,-1,interval); + setScreenSaverIntervals( -1, -1, interval ); } @@ -457,5 +488,5 @@ static void setScreenSaverInterval(int interval) \brief The QPEApplication class implements various system services that are available to all Qtopia applications. - + Simply by using QPEApplication instead of QApplication, a plain Qt application becomes a Qtopia application. It automatically follows @@ -467,5 +498,5 @@ static void setScreenSaverInterval(int interval) /*! \fn void QPEApplication::clientMoused() - + \internal */ @@ -473,5 +504,5 @@ static void setScreenSaverInterval(int interval) /*! \fn void QPEApplication::timeChanged(); - + This signal is emitted when the time jumps forward or backwards by more than the normal passage of time. @@ -480,5 +511,5 @@ static void setScreenSaverInterval(int interval) /*! \fn void QPEApplication::clockChanged( bool ampm ); - + This signal is emitted when the user changes the style of clock. If \a ampm is TRUE, the user wants a 12-hour @@ -488,11 +519,11 @@ static void setScreenSaverInterval(int interval) /*! \fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data ) - + This signal is emitted when a message is received on the QPE/Application/<i>appname</i> QCop channel for this application. - + The slot to which you connect this signal uses \a msg and \a data in the following way: - + \code void MyWidget::receive( const QCString& msg, const QByteArray& data ) @@ -508,5 +539,5 @@ static void setScreenSaverInterval(int interval) } \endcode - + \sa qcop.html */ @@ -516,144 +547,146 @@ static void setScreenSaverInterval(int interval) a QApplication, passing \a argc, \a argv, and \a t. */ -QPEApplication::QPEApplication( int& argc, char **argv, Type t ) - : QApplication( hack(argc), argv, t ) +QPEApplication::QPEApplication( int & argc, char **argv, Type t ) + : QApplication( hack( argc ), argv, t ) { - int dw = desktop()->width(); - if ( dw < 200 ) { -// setFont( QFont( "helvetica", 8 ) ); - AppLnk::setSmallIconSize(10); - AppLnk::setBigIconSize(28); - } + int dw = desktop() ->width(); + if ( dw < 200 ) { + // setFont( QFont( "helvetica", 8 ) ); + AppLnk::setSmallIconSize( 10 ); + AppLnk::setBigIconSize( 28 ); + } - d = new QPEApplicationData; - QMimeSourceFactory::setDefaultFactory(new ResourceMimeFactory); + d = new QPEApplicationData; + QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory ); - connect(this, SIGNAL(lastWindowClosed()), this, SLOT(hideOrQuit())); + connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) ); #if defined(Q_WS_QWS) && !defined(QT_NO_COP) - QString qcopfn("/tmp/qcop-msg-"); - qcopfn += QString(argv[0]); // append command name - - QFile f(qcopfn); - if ( f.open(IO_ReadOnly) ) { - flock(f.handle(), LOCK_EX); - } + QString qcopfn( "/tmp/qcop-msg-" ); + qcopfn += QString( argv[ 0 ] ); // append command name - sysChannel = new QCopChannel( "QPE/System", this ); - connect( sysChannel, SIGNAL(received(const QCString &, const QByteArray &)), - this, SLOT(systemMessage( const QCString &, const QByteArray &)) ); - - QCString channel = QCString(argv[0]); - channel.replace(QRegExp(".*/"),""); - d->appName = channel; - channel = "QPE/Application/" + channel; - pidChannel = new QCopChannel( channel, this); - connect( pidChannel, SIGNAL(received(const QCString &, const QByteArray &)), - this, SLOT(pidMessage(const QCString &, const QByteArray &))); - - if ( f.isOpen() ) { - d->keep_running = FALSE; - QDataStream ds(&f); - QCString channel, message; - QByteArray data; - while(!ds.atEnd()) { - ds >> channel >> message >> data; - d->enqueueQCop(channel,message,data); - } + QFile f( qcopfn ); + if ( f.open( IO_ReadOnly ) ) { + flock( f.handle(), LOCK_EX ); + } - flock(f.handle(), LOCK_UN); - f.close(); - f.remove(); - } + sysChannel = new QCopChannel( "QPE/System", this ); + connect( sysChannel, SIGNAL( received( const QCString &, const QByteArray & ) ), + this, SLOT( systemMessage( const QCString &, const QByteArray & ) ) ); + + QCString channel = QCString( argv[ 0 ] ); + channel.replace( QRegExp( ".*/" ), "" ); + d->appName = channel; + channel = "QPE/Application/" + channel; + pidChannel = new QCopChannel( channel, this ); + connect( pidChannel, SIGNAL( received( const QCString &, const QByteArray & ) ), + this, SLOT( pidMessage( const QCString &, const QByteArray & ) ) ); + + if ( f.isOpen() ) { + d->keep_running = FALSE; + QDataStream ds( &f ); + QCString channel, message; + QByteArray data; + while ( !ds.atEnd() ) { + ds >> channel >> message >> data; + d->enqueueQCop( channel, message, data ); + } + + flock( f.handle(), LOCK_UN ); + f.close(); + f.remove(); + } - for (int a=0; a<argc; a++) { - if ( qstrcmp(argv[a],"-preload")==0 ) { - argv[a] = argv[a+1]; - a++; - d->preloaded = TRUE; - argc-=1; - } else if ( qstrcmp(argv[a],"-preload-show")==0 ) { - argv[a] = argv[a+1]; - a++; - d->preloaded = TRUE; - d->forceshow = TRUE; - argc-=1; - } - } + for ( int a = 0; a < argc; a++ ) { + if ( qstrcmp( argv[ a ], "-preload" ) == 0 ) { + argv[ a ] = argv[ a + 1 ]; + a++; + d->preloaded = TRUE; + argc -= 1; + } + else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) { + argv[ a ] = argv[ a + 1 ]; + a++; + d->preloaded = TRUE; + d->forceshow = TRUE; + argc -= 1; + } + } - /* overide stored arguments */ - setArgs(argc, argv); + /* overide stored arguments */ + setArgs( argc, argv ); #endif - qwsSetDecoration( new QPEDecoration() ); + qwsSetDecoration( new QPEDecoration() ); #ifndef QT_NO_TRANSLATION - QStringList langs = Global::languageList(); - for (QStringList::ConstIterator it = langs.begin(); it!=langs.end(); ++it) { - QString lang = *it; - - QTranslator * trans; - QString tfn; - - trans = new QTranslator(this); - tfn = qpeDir()+"/i18n/"+lang+"/libqpe.qm"; - if ( trans->load( tfn )) - installTranslator( trans ); - else - delete trans; - - trans = new QTranslator(this); - tfn = qpeDir()+"/i18n/"+lang+"/"+d->appName+".qm"; - if ( trans->load( tfn )) - installTranslator( trans ); - else - delete trans; - - //###language/font hack; should look it up somewhere - if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) { - QFont fn = FontManager::unicodeFont( FontManager::Proportional ); - setFont( fn ); - } - else { - Config config( "qpe" ); - config.setGroup( "Appearance" ); - QString familyStr = config.readEntry( "FontFamily", "helvetica" ); - QString styleStr = config.readEntry( "FontStyle", "Regular" ); - QString sizeStr = config.readEntry( "FontSize", "10" ); - QString charSetStr = config.readEntry( "FontCharSet", QString::null ); - bool ok; - int i_size = sizeStr.toInt( &ok, 10 ); - FontDatabase fdb; - QFont selectedFont = fdb.font( familyStr, styleStr, i_size, charSetStr ); - setFont( selectedFont ); - } - } + + QStringList langs = Global::languageList(); + for ( QStringList::ConstIterator it = langs.begin(); it != langs.end(); ++it ) { + QString lang = *it; + + QTranslator * trans; + QString tfn; + + trans = new QTranslator( this ); + tfn = qpeDir() + "/i18n/" + lang + "/libqpe.qm"; + if ( trans->load( tfn ) ) + installTranslator( trans ); + else + delete trans; + + trans = new QTranslator( this ); + tfn = qpeDir() + "/i18n/" + lang + "/" + d->appName + ".qm"; + if ( trans->load( tfn ) ) + installTranslator( trans ); + else + delete trans; + + //###language/font hack; should look it up somewhere + if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) { + QFont fn = FontManager::unicodeFont( FontManager::Proportional ); + setFont( fn ); + } + else { + Config config( "qpe" ); + config.setGroup( "Appearance" ); + QString familyStr = config.readEntry( "FontFamily", "helvetica" ); + QString styleStr = config.readEntry( "FontStyle", "Regular" ); + QString sizeStr = config.readEntry( "FontSize", "10" ); + QString charSetStr = config.readEntry( "FontCharSet", QString::null ); + bool ok; + int i_size = sizeStr.toInt( &ok, 10 ); + FontDatabase fdb; + QFont selectedFont = fdb.font( familyStr, styleStr, i_size, charSetStr ); + setFont( selectedFont ); + } + } #endif - applyStyle(); + applyStyle(); - if ( type() == GuiServer ) { - setScreenSaverInterval(-1); - setVolume(); - QWSServer::setScreenSaver(new QPEScreenSaver); - } + if ( type() == GuiServer ) { + setScreenSaverInterval( -1 ); + setVolume(); + QWSServer::setScreenSaver( new QPEScreenSaver ); + } - installEventFilter( this ); + installEventFilter( this ); - QPEMenuToolFocusManager::initialize(); + QPEMenuToolFocusManager::initialize(); #ifdef QT_NO_QWS_CURSOR - // if we have no cursor, probably don't want tooltips - QToolTip::setEnabled( FALSE ); + // if we have no cursor, probably don't want tooltips + QToolTip::setEnabled( FALSE ); #endif } -static QPtrDict<void>* inputMethodDict=0; +static QPtrDict<void>* inputMethodDict = 0; static void createInputMethodDict() { - if ( !inputMethodDict ) - inputMethodDict = new QPtrDict<void>; + if ( !inputMethodDict ) + inputMethodDict = new QPtrDict<void>; } @@ -661,17 +694,17 @@ static void createInputMethodDict() Returns the currently set hint to the system as to whether \a w has any use for text input methods. - + \sa setInputMethodHint() */ -QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget* w ) +QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w ) { - if ( inputMethodDict && w ) - return (InputMethodHint)(int)inputMethodDict->find(w); - return Normal; + if ( inputMethodDict && w ) + return ( InputMethodHint ) ( int ) inputMethodDict->find( w ); + return Normal; } /*! \enum QPEApplication::InputMethodHint - + \value Normal the application sometimes needs text input (the default). \value AlwaysOff the application never needs text input. @@ -682,15 +715,17 @@ QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget* w ) Hints to the system that \a w has use for text input methods as specified by \a mode. - + \sa inputMethodHint() */ -void QPEApplication::setInputMethodHint( QWidget* w, InputMethodHint mode ) +void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode ) { - createInputMethodDict(); - if ( mode == Normal ) { - inputMethodDict->remove(w); - } else { - inputMethodDict->insert(w,(void*)mode); - } + createInputMethodDict(); + if ( mode == Normal ) { + inputMethodDict->remove + ( w ); + } + else { + inputMethodDict->insert( w, ( void* ) mode ); + } } @@ -698,22 +733,28 @@ class HackDialog : public QDialog { public: - void acceptIt() { accept(); } - void rejectIt() { reject(); } + void acceptIt() + { + accept(); + } + void rejectIt() + { + reject(); + } }; -void QPEApplication::mapToDefaultAction( QWSKeyEvent *ke, int key ) +void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key ) { - // specialised actions for certain widgets. May want to - // add more stuff here. - if ( activePopupWidget() && activePopupWidget()->inherits( "QListBox" ) - && activePopupWidget()->parentWidget() - && activePopupWidget()->parentWidget()->inherits( "QComboBox" ) ) - key = Qt::Key_Return; + // specialised actions for certain widgets. May want to + // add more stuff here. + if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" ) + && activePopupWidget() ->parentWidget() + && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) ) + key = Qt::Key_Return; - if ( activePopupWidget() && activePopupWidget()->inherits( "QPopupMenu" ) ) - key = Qt::Key_Return; + if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) ) + key = Qt::Key_Return; - ke->simpleData.keycode = key; + ke->simpleData.keycode = key; } @@ -721,6 +762,8 @@ class HackWidget : public QWidget { public: - bool needsOk() - { return (getWState() & WState_Reserved1 ); } + bool needsOk() + { + return ( getWState() & WState_Reserved1 ); + } }; @@ -728,111 +771,118 @@ public: \internal */ -bool QPEApplication::qwsEventFilter( QWSEvent *e ) +bool QPEApplication::qwsEventFilter( QWSEvent * e ) { - if ( !d->notbusysent && e->type == QWSEvent::Focus ) { - if ( qApp->type() != QApplication::GuiServer ) { - QCopEnvelope e("QPE/System", "notBusy(QString)" ); - e << d->appName; - } - d->notbusysent=TRUE; - } - if ( type() == GuiServer ) { - switch ( e->type ) { - case QWSEvent::Mouse: - if ( e->asMouse()->simpleData.state && !QWidget::find(e->window()) ) - emit clientMoused(); - } - } - if ( e->type == QWSEvent::Key ) { - if ( d->kbgrabber == 1 ) - return TRUE; - QWSKeyEvent *ke = (QWSKeyEvent *)e; - if ( ke->simpleData.keycode == Qt::Key_F33 ) { - // Use special "OK" key to press "OK" on top level widgets - QWidget *active = activeWindow(); - QWidget *popup = 0; - if ( active && active->isPopup() ) { - popup = active; - active = active->parentWidget(); - } - if ( active && (int)active->winId() == ke->simpleData.window && - !active->testWFlags( WStyle_Customize|WType_Popup|WType_Desktop )) { - if ( ke->simpleData.is_press ) { - if ( popup ) - popup->close(); - if ( active->inherits( "QDialog" ) ) { - HackDialog *d = (HackDialog *)active; - d->acceptIt(); - return TRUE; - } else if ( ((HackWidget *)active)->needsOk() ) { - QSignal s; - s.connect( active, SLOT( accept() ) ); - s.activate(); - } 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 ) { - // 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 && - ke->simpleData.is_press ) { - // Escape key closes app if focus on toplevel - QWidget *active = activeWindow(); - if ( active && active->testWFlags( WType_TopLevel ) && - (int)active->winId() == ke->simpleData.window && - !active->testWFlags( WStyle_Dialog|WStyle_Customize|WType_Popup|WType_Desktop )) { - if ( active->inherits( "QDialog" ) ) { - HackDialog *d = (HackDialog *)active; - d->rejectIt(); - return TRUE; - } else if ( strcmp( argv()[0], "embeddedkonsole") != 0 ) { - active->close(); - } - } - } + if ( !d->notbusysent && e->type == QWSEvent::Focus ) { + if ( qApp->type() != QApplication::GuiServer ) { + QCopEnvelope e( "QPE/System", "notBusy(QString)" ); + e << d->appName; + } + d->notbusysent = TRUE; + } + if ( type() == GuiServer ) { + switch ( e->type ) { + case QWSEvent::Mouse: + if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) ) + emit clientMoused(); + } + } + if ( e->type == QWSEvent::Key ) { + if ( d->kbgrabber == 1 ) + return TRUE; + QWSKeyEvent *ke = ( QWSKeyEvent * ) e; + if ( ke->simpleData.keycode == Qt::Key_F33 ) { + // Use special "OK" key to press "OK" on top level widgets + QWidget * active = activeWindow(); + QWidget *popup = 0; + if ( active && active->isPopup() ) { + popup = active; + active = active->parentWidget(); + } + if ( active && ( int ) active->winId() == ke->simpleData.window && + !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) { + if ( ke->simpleData.is_press ) { + if ( popup ) + popup->close(); + if ( active->inherits( "QDialog" ) ) { + HackDialog * d = ( HackDialog * ) active; + d->acceptIt(); + return TRUE; + } + else if ( ( ( HackWidget * ) active ) ->needsOk() ) { + QSignal s; + s.connect( active, SLOT( accept() ) ); + s.activate(); + } + 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 ) { + // 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 && + ke->simpleData.is_press ) { + // Escape key closes app if focus on toplevel + QWidget * active = activeWindow(); + if ( active && active->testWFlags( WType_TopLevel ) && + ( int ) active->winId() == ke->simpleData.window && + !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) { + if ( active->inherits( "QDialog" ) ) { + HackDialog * d = ( HackDialog * ) active; + d->rejectIt(); + return TRUE; + } + else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) { + active->close(); + } + } + } #if QT_VERSION < 231 - // Filter out the F4/Launcher key from apps - // ### The launcher key may not always be F4 on all devices - if ( ((QWSKeyEvent *)e)->simpleData.keycode == Qt::Key_F4 ) - return TRUE; + // Filter out the F4/Launcher key from apps + // ### 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()); - if ( !fe->simpleData.get_focus ) { - QWidget *active = activeWindow(); - while ( active && active->isPopup() ) { - active->close(); - active = activeWindow(); - } - if ( !nfw && d->kbgrabber == 2 ) { - ungrabKeyboard(); - d->kbregrab = TRUE; // want kb back when we're active - } - } else { - // make sure our modal widget is ALWAYS on top - QWidget *topm = activeModalWidget(); - if ( topm ) { - topm->raise(); - } - if ( d->kbregrab ) { - grabKeyboard(); - d->kbregrab = FALSE; - } - } - if ( fe->simpleData.get_focus && inputMethodDict ) { - InputMethodHint m = inputMethodHint( QWidget::find(e->window()) ); - if ( m == AlwaysOff ) - Global::hideInputMethod(); - if ( m == AlwaysOn ) - Global::showInputMethod(); - } - } - return QApplication::qwsEventFilter( e ); + + } + if ( e->type == QWSEvent::Focus ) { + QWSFocusEvent * fe = ( QWSFocusEvent* ) e; + QWidget* nfw = QWidget::find( e->window() ); + if ( !fe->simpleData.get_focus ) { + QWidget * active = activeWindow(); + while ( active && active->isPopup() ) { + active->close(); + active = activeWindow(); + } + if ( !nfw && d->kbgrabber == 2 ) { + ungrabKeyboard(); + d->kbregrab = TRUE; // want kb back when we're active + } + } + else { + // make sure our modal widget is ALWAYS on top + QWidget *topm = activeModalWidget(); + if ( topm ) { + topm->raise(); + } + if ( d->kbregrab ) { + grabKeyboard(); + d->kbregrab = FALSE; + } + } + if ( fe->simpleData.get_focus && inputMethodDict ) { + InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) ); + if ( m == AlwaysOff ) + Global::hideInputMethod(); + if ( m == AlwaysOn ) + Global::showInputMethod(); + } + } + return QApplication::qwsEventFilter( e ); } @@ -842,12 +892,13 @@ bool QPEApplication::qwsEventFilter( QWSEvent *e ) QPEApplication::~QPEApplication() { - ungrabKeyboard(); + ungrabKeyboard(); #if defined(Q_WS_QWS) && !defined(QT_NO_COP) - // Need to delete QCopChannels early, since the display will - // be gone by the time we get to ~QObject(). - delete sysChannel; - delete pidChannel; + // Need to delete QCopChannels early, since the display will + // be gone by the time we get to ~QObject(). + delete sysChannel; + delete pidChannel; #endif - delete d; + + delete d; } @@ -857,9 +908,9 @@ QPEApplication::~QPEApplication() QString QPEApplication::qpeDir() { - const char *base = getenv( "OPIEDIR" ); - if ( base ) - return QString( base ) + "/"; + const char * base = getenv( "OPIEDIR" ); + if ( base ) + return QString( base ) + "/"; - return QString( "../" ); + return QString( "../" ); } @@ -869,12 +920,12 @@ QString QPEApplication::qpeDir() QString QPEApplication::documentDir() { - const char *base = getenv( "HOME" ); - if ( base ) - return QString( base ) + "/Documents/"; + const char * base = getenv( "HOME" ); + if ( base ) + return QString( base ) + "/Documents/"; - return QString( "../Documents/" ); + return QString( "../Documents/" ); } -static int deforient=-1; +static int deforient = -1; /*! @@ -883,17 +934,20 @@ static int deforient=-1; int QPEApplication::defaultRotation() { - if ( deforient < 0 ) { - QString d = getenv("QWS_DISPLAY"); - if ( d.contains("Rot90") ) { - deforient = 90; - } else if ( d.contains("Rot180") ) { - deforient = 180; - } else if ( d.contains("Rot270") ) { - deforient = 270; - } else { - deforient=0; - } - } - return deforient; + if ( deforient < 0 ) { + QString d = getenv( "QWS_DISPLAY" ); + if ( d.contains( "Rot90" ) ) { + deforient = 90; + } + else if ( d.contains( "Rot180" ) ) { + deforient = 180; + } + else if ( d.contains( "Rot270" ) ) { + deforient = 270; + } + else { + deforient = 0; + } + } + return deforient; } @@ -901,12 +955,13 @@ int QPEApplication::defaultRotation() \internal */ -void QPEApplication::setDefaultRotation(int r) +void QPEApplication::setDefaultRotation( int r ) { - if ( qApp->type() == GuiServer ) { - deforient = r; - setenv("QWS_DISPLAY", QString("Transformed:Rot%1:0").arg(r).latin1(), 1); - } else { - QCopEnvelope("QPE/System", "setDefaultRotation(int)") << r; - } + if ( qApp->type() == GuiServer ) { + deforient = r; + setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); + } + else { + QCopEnvelope( "QPE/System", "setDefaultRotation(int)" ) << r; + } } @@ -916,173 +971,196 @@ void QPEApplication::setDefaultRotation(int r) void QPEApplication::applyStyle() { - Config config( "qpe" ); - - config.setGroup( "Appearance" ); - - // Widget style - QString style = config.readEntry( "Style", "Light" ); - internalSetStyle( style ); - - // Colors - QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) ); - QColor btncolor( config.readEntry( "Button", "#D6CDBB" ) ); - QPalette pal( btncolor, bgcolor ); - QString color = config.readEntry( "Highlight", "#800000" ); - pal.setColor( QColorGroup::Highlight, QColor(color) ); - color = config.readEntry( "HighlightedText", "#FFFFFF" ); - pal.setColor( QColorGroup::HighlightedText, QColor(color) ); - color = config.readEntry( "Text", "#000000" ); - pal.setColor( QColorGroup::Text, QColor(color) ); - color = config.readEntry( "ButtonText", "#000000" ); - pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor(color) ); - color = config.readEntry( "Base", "#FFFFFF" ); - pal.setColor( QColorGroup::Base, QColor(color) ); - - pal.setColor( QPalette::Disabled, QColorGroup::Text, - pal.color(QPalette::Active, QColorGroup::Background).dark() ); - - setPalette( pal, TRUE ); + Config config( "qpe" ); + + config.setGroup( "Appearance" ); + + // Widget style + QString style = config.readEntry( "Style", "Light" ); + internalSetStyle( style ); + + // Colors + QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) ); + QColor btncolor( config.readEntry( "Button", "#D6CDBB" ) ); + QPalette pal( btncolor, bgcolor ); + QString color = config.readEntry( "Highlight", "#800000" ); + pal.setColor( QColorGroup::Highlight, QColor( color ) ); + color = config.readEntry( "HighlightedText", "#FFFFFF" ); + pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); + color = config.readEntry( "Text", "#000000" ); + pal.setColor( QColorGroup::Text, QColor( color ) ); + color = config.readEntry( "ButtonText", "#000000" ); + pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); + color = config.readEntry( "Base", "#FFFFFF" ); + pal.setColor( QColorGroup::Base, QColor( color ) ); + + pal.setColor( QPalette::Disabled, QColorGroup::Text, + pal.color( QPalette::Active, QColorGroup::Background ).dark() ); + + setPalette( pal, TRUE ); } -void QPEApplication::systemMessage( const QCString &msg, const QByteArray &data) +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)" ) { - if ( type() == GuiServer ) { - int time; - stream >> time; - setScreenSaverInterval(time); - } - } 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)" ) { - if ( type() == GuiServer ) { - int bright; - stream >> bright; - setBacklight(bright); - } - } else if ( msg == "setDefaultRotation(int)" ) { - if ( type() == GuiServer ) { - int r; - stream >> r; - setDefaultRotation(r); - } - } else if ( msg == "shutdown()" ) { - if ( type() == GuiServer ) - shutdown(); - } else if ( msg == "quit()" ) { - if ( type() != GuiServer ) - tryQuit(); - } else if ( msg == "forceQuit()" ) { - if ( type() != GuiServer ) - quit(); - } else if ( msg == "restart()" ) { - if ( type() == GuiServer ) - restart(); - } 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)" ) { - if ( type() == GuiServer ) { - QString l; - stream >> l; - QString cl = getenv("LANG"); - if ( cl != l ) { - if ( l.isNull() ) - unsetenv( "LANG" ); - else - setenv( "LANG", l.latin1(), 1 ); - restart(); - } - } - } 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)" ) { - if ( type() == GuiServer ) { - QString t; - stream >> t; - Global::execute( t ); - } - } 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)" ) { - 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)" ) { - 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)" ) { - int tmp; - stream >> tmp; - emit clockChanged( tmp ); - } else if ( msg == "weekChange(bool)" ) { - int tmp; - stream >> tmp; - emit weekChanged( tmp ); - } else if ( msg == "setDateFormat(DateFormat)" ) { - DateFormat tmp; - stream >> tmp; - emit dateFormatChanged( tmp ); - } else if ( msg == "setVolume(int,int)" ) { - int t,v; - stream >> t >> v; - setVolume(t,v); - emit volumeChanged( muted ); - } 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> - 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> - stream >> micMuted; - setMic(); - emit micChanged( micMuted ); - } else if ( msg == "setScreenSaverMode(int)" ) { - if ( type() == GuiServer ) { - int old = disable_suspend; - stream >> disable_suspend; - //qDebug("setScreenSaverMode(%d)", disable_suspend ); - if ( disable_suspend > old ) - setScreenSaverInterval( -1 ); - } - } + QDataStream stream( data, IO_ReadOnly ); + if ( msg == "applyStyle()" ) { + applyStyle(); + } + else if ( msg == "setScreenSaverInterval(int)" ) { + if ( type() == GuiServer ) { + int time; + stream >> time; + setScreenSaverInterval( time ); + } + } + 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)" ) { + if ( type() == GuiServer ) { + int bright; + stream >> bright; + setBacklight( bright ); + } + } + else if ( msg == "setDefaultRotation(int)" ) { + if ( type() == GuiServer ) { + int r; + stream >> r; + setDefaultRotation( r ); + } + } + else if ( msg == "shutdown()" ) { + if ( type() == GuiServer ) + shutdown(); + } + else if ( msg == "quit()" ) { + if ( type() != GuiServer ) + tryQuit(); + } + else if ( msg == "forceQuit()" ) { + if ( type() != GuiServer ) + quit(); + } + else if ( msg == "restart()" ) { + if ( type() == GuiServer ) + restart(); + } + 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)" ) { + if ( type() == GuiServer ) { + QString l; + stream >> l; + QString cl = getenv( "LANG" ); + if ( cl != l ) { + if ( l.isNull() ) + unsetenv( "LANG" ); + else + setenv( "LANG", l.latin1(), 1 ); + restart(); + } + } + } + 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)" ) { + if ( type() == GuiServer ) { + QString t; + stream >> t; + Global::execute( t ); + } + } + 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)" ) { + 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)" ) { + 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)" ) { + int tmp; + stream >> tmp; + emit clockChanged( tmp ); + } + else if ( msg == "weekChange(bool)" ) { + int tmp; + stream >> tmp; + emit weekChanged( tmp ); + } + else if ( msg == "setDateFormat(DateFormat)" ) { + DateFormat tmp; + stream >> tmp; + emit dateFormatChanged( tmp ); + } + else if ( msg == "setVolume(int,int)" ) { + int t, v; + stream >> t >> v; + setVolume( t, v ); + emit volumeChanged( muted ); + } + 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> + 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> + stream >> micMuted; + setMic(); + emit micChanged( micMuted ); + } + else if ( msg == "setScreenSaverMode(int)" ) { + if ( type() == GuiServer ) { + int old = disable_suspend; + stream >> disable_suspend; + //qDebug("setScreenSaverMode(%d)", disable_suspend ); + if ( disable_suspend > old ) + setScreenSaverInterval( -1 ); + } + } #endif } @@ -1093,77 +1171,90 @@ void QPEApplication::systemMessage( const QCString &msg, const QByteArray &data) 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 && d->keep_running ) { - if ( top->isVisible() ) - r = TRUE; + 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 && d->keep_running ) { + if ( top->isVisible() ) + r = TRUE; #ifdef Q_WS_QWS - if ( !d->nomaximize ) - top->showMaximized(); - else + + if ( !d->nomaximize ) + top->showMaximized(); + else #endif - top->show(); - top->raise(); - top->setActiveWindow(); - } - QWidget *topm = activeModalWidget(); - if ( topm && topm != top ) { - topm->show(); - topm->raise(); - topm->setActiveWindow(); - r = FALSE; - } - return r; + + top->show(); + top->raise(); + top->setActiveWindow(); + } + QWidget *topm = activeModalWidget(); + if ( topm && topm != top ) { + topm->show(); + topm->raise(); + topm->setActiveWindow(); + r = FALSE; + } + return r; } -void QPEApplication::pidMessage( const QCString &msg, const QByteArray & data) +void QPEApplication::pidMessage( const QCString &msg, const QByteArray & data ) { #ifdef Q_WS_QWS - if ( msg == "quit()" ) { - tryQuit(); - } else if ( msg == "quitIfInvisible()" ) { - if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) - quit(); - } else if ( msg == "close()" ) { - hideOrQuit(); - } else if ( msg == "disablePreload()" ) { - d->preloaded = FALSE; - d->keep_running = TRUE; - /* so that quit will quit */ - } else if ( msg == "enablePreload()" ) { - d->preloaded = TRUE; - d->keep_running = TRUE; - /* so next quit won't quit */ - } else if ( msg == "raise()" ) { - d->keep_running = TRUE; - d->notbusysent = FALSE; - raiseAppropriateWindow(); - } 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()" ) { - emit reload(); - } else if ( msg == "setDocument(QString)" ) { - d->keep_running = TRUE; - QDataStream stream( data, IO_ReadOnly ); - QString doc; - stream >> doc; - QWidget *mw = mainWidget(); - if ( !mw ) - mw = d->qpe_main_widget; - if ( mw ) - Global::setDocument( mw, doc ); - } else if ( msg == "nextView()" ) { - if ( raiseAppropriateWindow() ) - emit appMessage( msg, data); - } else { - emit appMessage( msg, data); - } + if ( msg == "quit()" ) { + tryQuit(); + } + else if ( msg == "quitIfInvisible()" ) { + if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) + quit(); + } + else if ( msg == "close()" ) { + hideOrQuit(); + } + else if ( msg == "disablePreload()" ) { + d->preloaded = FALSE; + d->keep_running = TRUE; + /* so that quit will quit */ + } + else if ( msg == "enablePreload()" ) { + d->preloaded = TRUE; + d->keep_running = TRUE; + /* so next quit won't quit */ + } + else if ( msg == "raise()" ) { + d->keep_running = TRUE; + d->notbusysent = FALSE; + raiseAppropriateWindow(); + } + 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()" ) { + emit reload(); + } + else if ( msg == "setDocument(QString)" ) { + d->keep_running = TRUE; + QDataStream stream( data, IO_ReadOnly ); + QString doc; + stream >> doc; + QWidget *mw = mainWidget(); + if ( !mw ) + mw = d->qpe_main_widget; + if ( mw ) + Global::setDocument( mw, doc ); + } + else if ( msg == "nextView()" ) { + if ( raiseAppropriateWindow() ) + emit appMessage( msg, data ); + } + else { + emit appMessage( msg, data ); + } #endif } @@ -1172,23 +1263,23 @@ void QPEApplication::pidMessage( const QCString &msg, const QByteArray & data) static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ ) { -/* - // This works but disable it for now until it is safe to apply - // What is does is scan the .desktop files of all the apps for - // the applnk that has the corresponding argv[0] as this program - // then it uses the name stored in the .desktop file as the caption - // for the main widget. This saves duplicating translations for - // the app name in the program and in the .desktop files. - - AppLnkSet apps( appsPath ); - - QList<AppLnk> appsList = apps.children(); - for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) { - if ( (*it)->exec() == appName ) { - mw->setCaption( (*it)->name() ); - return TRUE; - } - } -*/ - return FALSE; + /* + // This works but disable it for now until it is safe to apply + // What is does is scan the .desktop files of all the apps for + // the applnk that has the corresponding argv[0] as this program + // then it uses the name stored in the .desktop file as the caption + // for the main widget. This saves duplicating translations for + // the app name in the program and in the .desktop files. + + AppLnkSet apps( appsPath ); + + QList<AppLnk> appsList = apps.children(); + for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) { + if ( (*it)->exec() == appName ) { + mw->setCaption( (*it)->name() ); + return TRUE; + } + } + */ + return FALSE; } @@ -1197,31 +1288,34 @@ static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appNa Sets \a mw as the mainWidget() and shows it. For small windows, consider passing TRUE for \a nomaximize rather than the default FALSE. - + \sa showMainDocumentWidget() */ void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) { - setWidgetCaptionFromAppName( mw, d->appName, qpeDir() + "apps" ); + setWidgetCaptionFromAppName( mw, d->appName, qpeDir() + "apps" ); - d->nomaximize = nomaximize; - d->qpe_main_widget = mw; - d->sendQCopQ(); - if ( d->preloaded ) { - if(d->forceshow) { + d->nomaximize = nomaximize; + d->qpe_main_widget = mw; + d->sendQCopQ(); + if ( d->preloaded ) { + if ( d->forceshow ) { #ifdef Q_WS_QWS - if ( !nomaximize ) - mw->showMaximized(); - else + if ( !nomaximize ) + mw->showMaximized(); + else #endif - mw->show(); - } - } else if ( d->keep_running ) { + + mw->show(); + } + } + else if ( d->keep_running ) { #ifdef Q_WS_QWS - if ( !nomaximize ) - mw->showMaximized(); - else + if ( !nomaximize ) + mw->showMaximized(); + else #endif - mw->show(); - } + + mw->show(); + } } @@ -1229,38 +1323,41 @@ void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) Sets \a mw as the mainWidget() and shows it. For small windows, consider passing TRUE for \a nomaximize rather than the default FALSE. - + This calls designates the application as a \link docwidget.html document-oriented\endlink application. - + The \a mw widget must have a slot: setDocument(const QString&). - + \sa showMainWidget() */ void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) { - setWidgetCaptionFromAppName( mw, d->appName, qpeDir() + "apps" ); - - if ( mw && argc() == 2 ) - Global::setDocument( mw, QString::fromUtf8(argv()[1]) ); - d->nomaximize = nomaximize; - d->qpe_main_widget = mw; - d->sendQCopQ(); - if ( d->preloaded ) { - if(d->forceshow) { + setWidgetCaptionFromAppName( mw, d->appName, qpeDir() + "apps" ); + + if ( mw && argc() == 2 ) + Global::setDocument( mw, QString::fromUtf8( argv() [ 1 ] ) ); + d->nomaximize = nomaximize; + d->qpe_main_widget = mw; + d->sendQCopQ(); + if ( d->preloaded ) { + if ( d->forceshow ) { #ifdef Q_WS_QWS - if ( !nomaximize ) - mw->showMaximized(); - else + if ( !nomaximize ) + mw->showMaximized(); + else #endif - mw->show(); - } - } else if ( d->keep_running ) { + + mw->show(); + } + } + else if ( d->keep_running ) { #ifdef Q_WS_QWS - if ( !nomaximize ) - mw->showMaximized(); - else + if ( !nomaximize ) + mw->showMaximized(); + else #endif - mw->show(); - } + + mw->show(); + } } @@ -1272,13 +1369,13 @@ void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) processing the qcop message it calls this function, then the application will show and start proper once it has finished processing qcop messages. - + \sa keepRunning() */ void QPEApplication::setKeepRunning() { - if ( qApp && qApp->inherits( "QPEApplication" ) ) { - QPEApplication *qpeApp = (QPEApplication*)qApp; - qpeApp->d->keep_running = TRUE; - } + if ( qApp && qApp->inherits( "QPEApplication" ) ) { + QPEApplication * qpeApp = ( QPEApplication* ) qApp; + qpeApp->d->keep_running = TRUE; + } } @@ -1286,10 +1383,10 @@ void QPEApplication::setKeepRunning() Returns whether the application will quit after processing the current list of qcop messages. - + \sa setKeepRunning() */ bool QPEApplication::keepRunning() const { - return d->keep_running; + return d->keep_running; } @@ -1300,81 +1397,118 @@ void QPEApplication::internalSetStyle( const QString &style ) { #if QT_VERSION >= 300 - if ( style == "QPE" ) { - setStyle( new QPEStyle ); - } else { - QStyle *s = QStyleFactory::create(style); - if ( s ) setStyle(s); - } + if ( style == "QPE" ) { + setStyle( new QPEStyle ); + } + else { + QStyle *s = QStyleFactory::create( style ); + if ( s ) + setStyle( s ); + } #else - if ( style == "Windows" ) { - setStyle( new QWindowsStyle ); - } else if ( style == "QPE" ) { - setStyle( new QPEStyle ); - } else if ( style == "Light" ) { - setStyle( new LightStyle ); - } + if ( style == "Windows" ) { + setStyle( new QWindowsStyle ); + } + else if ( style == "QPE" ) { + setStyle( new QPEStyle ); + } + else if ( style == "Light" ) { + setStyle( new LightStyle ); + } #ifndef QT_NO_STYLE_PLATINUM - else if ( style == "Platinum" ) { - setStyle( new QPlatinumStyle ); - } + else if ( style == "Platinum" ) { + setStyle( new QPlatinumStyle ); + } #endif #ifndef QT_NO_STYLE_MOTIF - else if ( style == "Motif" ) { - setStyle( new QMotifStyle ); - } + else if ( style == "Motif" ) { + setStyle( new QMotifStyle ); + } #endif #ifndef QT_NO_STYLE_MOTIFPLUS - else if ( style == "MotifPlus" ) { - setStyle( new QMotifPlusStyle ); - } + else if ( style == "MotifPlus" ) { + setStyle( new QMotifPlusStyle ); + } #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 ( '[' ); QString style2; - - if (( p1 > 0 ) && ( p2 > 0 ) && (( p1 + 1 ) < p2 )) + + if ( ( p1 > 0 ) && ( p2 > 0 ) && ( ( p1 + 1 ) < p2 ) ) 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 ) ( ); - + 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 } - // HACK for Qt2 only #endif } @@ -1383,23 +1517,24 @@ void QPEApplication::internalSetStyle( const QString &style ) \internal */ -void QPEApplication::prepareForTermination(bool willrestart) +void QPEApplication::prepareForTermination( bool willrestart ) { - if ( willrestart ) { - // Draw a big wait icon, the image can be altered in later revisions -// QWidget *d = QApplication::desktop(); - QImage img = Resource::loadImage( "launcher/new_wait" ); - QPixmap pix; - pix.convertFromImage(img.smoothScale(1*img.width(), 1*img.height())); - QLabel *lblWait = new QLabel(0, "wait hack!", QWidget::WStyle_Customize | - QWidget::WStyle_NoBorder | QWidget::WStyle_Tool ); - lblWait->setPixmap( pix ); - lblWait->setAlignment( QWidget::AlignCenter ); - lblWait->show(); - lblWait->showMaximized(); - } + if ( willrestart ) { + // Draw a big wait icon, the image can be altered in later revisions + // QWidget *d = QApplication::desktop(); + QImage img = Resource::loadImage( "launcher/new_wait" ); + QPixmap pix; + pix.convertFromImage( img.smoothScale( 1 * img.width(), 1 * img.height() ) ); + QLabel *lblWait = new QLabel( 0, "wait hack!", QWidget::WStyle_Customize | + QWidget::WStyle_NoBorder | QWidget::WStyle_Tool ); + lblWait->setPixmap( pix ); + lblWait->setAlignment( QWidget::AlignCenter ); + lblWait->show(); + lblWait->showMaximized(); + } #ifndef SINGLE_APP - { QCopEnvelope envelope("QPE/System", "forceQuit()"); } - processEvents(); // ensure the message goes out. - sleep(1); // You have 1 second to comply. + { QCopEnvelope envelope( "QPE/System", "forceQuit()" ); + } + processEvents(); // ensure the message goes out. + sleep( 1 ); // You have 1 second to comply. #endif } @@ -1410,5 +1545,5 @@ void QPEApplication::prepareForTermination(bool willrestart) void QPEApplication::shutdown() { - // Implement in server's QPEApplication subclass + // Implement in server's QPEApplication subclass } @@ -1418,34 +1553,34 @@ void QPEApplication::shutdown() void QPEApplication::restart() { - // Implement in server's QPEApplication subclass + // Implement in server's QPEApplication subclass } -static QPtrDict<void>* stylusDict=0; +static QPtrDict<void>* stylusDict = 0; static void createDict() { - if ( !stylusDict ) - stylusDict = new QPtrDict<void>; + if ( !stylusDict ) + stylusDict = new QPtrDict<void>; } /*! Returns the current StylusMode for \a w. - + \sa setStylusOperation() */ -QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w ) +QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget * w ) { - if ( stylusDict ) - return (StylusMode)(int)stylusDict->find(w); - return LeftOnly; + if ( stylusDict ) + return ( StylusMode ) ( int ) stylusDict->find( w ); + return LeftOnly; } /*! \enum QPEApplication::StylusMode - + \value LeftOnly the stylus only generates LeftButton events (the default). \value RightOnHold the stylus generates RightButton events if the user uses the press-and-hold gesture. - + See setStylusOperation(). */ @@ -1453,18 +1588,20 @@ QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w ) /*! Causes \a w to receive mouse events according to \a mode. - + \sa stylusOperation() */ -void QPEApplication::setStylusOperation( QWidget* w, StylusMode mode ) +void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode ) { - createDict(); - if ( mode == LeftOnly ) { - stylusDict->remove(w); - w->removeEventFilter(qApp); - } else { - stylusDict->insert(w,(void*)mode); - connect(w,SIGNAL(destroyed()),qApp,SLOT(removeSenderFromStylusDict())); - w->installEventFilter(qApp); - } + createDict(); + if ( mode == LeftOnly ) { + stylusDict->remove + ( w ); + w->removeEventFilter( qApp ); + } + else { + stylusDict->insert( w, ( void* ) mode ); + connect( w, SIGNAL( destroyed() ), qApp, SLOT( removeSenderFromStylusDict() ) ); + w->installEventFilter( qApp ); + } } @@ -1475,58 +1612,59 @@ void QPEApplication::setStylusOperation( QWidget* w, StylusMode mode ) bool QPEApplication::eventFilter( QObject *o, QEvent *e ) { - if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) { - QMouseEvent* me = (QMouseEvent*)e; - if ( me->button() == LeftButton ) { - StylusMode mode = (StylusMode)(int)stylusDict->find(o); - switch (mode) { - case RightOnHold: - switch ( me->type() ) { - case QEvent::MouseButtonPress: - d->presstimer = startTimer(500); // #### pref. - d->presswidget = (QWidget*)o; - d->presspos = me->pos(); - d->rightpressed = FALSE; - break; - case QEvent::MouseButtonRelease: - if ( d->presstimer ) { - killTimer(d->presstimer); - d->presstimer = 0; - } - if ( d->rightpressed && d->presswidget ) { - // Right released - postEvent( d->presswidget, - new QMouseEvent( QEvent::MouseButtonRelease, me->pos(), - RightButton, LeftButton+RightButton ) ); - // Left released, off-widget - postEvent( d->presswidget, - new QMouseEvent( QEvent::MouseMove, QPoint(-1,-1), - LeftButton, LeftButton ) ); - postEvent( d->presswidget, - new QMouseEvent( QEvent::MouseButtonRelease, QPoint(-1,-1), - LeftButton, LeftButton ) ); - d->rightpressed = FALSE; - return TRUE; // don't send the real Left release - } - break; - default: - break; - } - break; - default: - ; - } - } - } 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, ' ', - ke->state(), " ", ke->isAutoRepeat(), ke->count() ) ); - return TRUE; - } - } - } + if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) { + QMouseEvent * me = ( QMouseEvent* ) e; + if ( me->button() == LeftButton ) { + StylusMode mode = ( StylusMode ) ( int ) stylusDict->find( o ); + switch ( mode ) { + case RightOnHold: + switch ( me->type() ) { + case QEvent::MouseButtonPress: + d->presstimer = startTimer( 500 ); // #### pref. + d->presswidget = ( QWidget* ) o; + d->presspos = me->pos(); + d->rightpressed = FALSE; + break; + case QEvent::MouseButtonRelease: + if ( d->presstimer ) { + killTimer( d->presstimer ); + d->presstimer = 0; + } + if ( d->rightpressed && d->presswidget ) { + // Right released + postEvent( d->presswidget, + new QMouseEvent( QEvent::MouseButtonRelease, me->pos(), + RightButton, LeftButton + RightButton ) ); + // Left released, off-widget + postEvent( d->presswidget, + new QMouseEvent( QEvent::MouseMove, QPoint( -1, -1 ), + LeftButton, LeftButton ) ); + postEvent( d->presswidget, + new QMouseEvent( QEvent::MouseButtonRelease, QPoint( -1, -1 ), + LeftButton, LeftButton ) ); + d->rightpressed = FALSE; + return TRUE; // don't send the real Left release + } + break; + default: + break; + } + break; + default: + ; + } + } + } + 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, ' ', + ke->state(), " ", ke->isAutoRepeat(), ke->count() ) ); + return TRUE; + } + } + } - return FALSE; + return FALSE; } @@ -1536,20 +1674,21 @@ bool QPEApplication::eventFilter( QObject *o, QEvent *e ) void QPEApplication::timerEvent( QTimerEvent *e ) { - if ( e->timerId() == d->presstimer && d->presswidget ) { - // Right pressed - postEvent( d->presswidget, - new QMouseEvent( QEvent::MouseButtonPress, d->presspos, - RightButton, LeftButton ) ); - killTimer( d->presstimer ); - d->presstimer = 0; - d->rightpressed = TRUE; - } + if ( e->timerId() == d->presstimer && d->presswidget ) { + // Right pressed + postEvent( d->presswidget, + new QMouseEvent( QEvent::MouseButtonPress, d->presspos, + RightButton, LeftButton ) ); + killTimer( d->presstimer ); + d->presstimer = 0; + d->rightpressed = TRUE; + } } void QPEApplication::removeSenderFromStylusDict() { - stylusDict->remove((void*)sender()); - if ( d->presswidget == sender() ) - d->presswidget = 0; + stylusDict->remove + ( ( void* ) sender() ); + if ( d->presswidget == sender() ) + d->presswidget = 0; } @@ -1559,5 +1698,5 @@ void QPEApplication::removeSenderFromStylusDict() bool QPEApplication::keyboardGrabbed() const { - return d->kbgrabber; + return d->kbgrabber; } @@ -1569,11 +1708,11 @@ bool QPEApplication::keyboardGrabbed() const void QPEApplication::ungrabKeyboard() { - QPEApplicationData* d = ((QPEApplication*)qApp)->d; - if ( d->kbgrabber == 2 ) { - QCopEnvelope e("QPE/System", "grabKeyboard(QString)" ); - e << QString::null; - d->kbregrab = FALSE; - d->kbgrabber = 0; - } + QPEApplicationData * d = ( ( QPEApplication* ) qApp ) ->d; + if ( d->kbgrabber == 2 ) { + QCopEnvelope e( "QPE/System", "grabKeyboard(QString)" ); + e << QString::null; + d->kbregrab = FALSE; + d->kbgrabber = 0; + } } @@ -1582,17 +1721,17 @@ void QPEApplication::ungrabKeyboard() keys no longer work, and instead they are receivable by this application. - + \sa ungrabKeyboard() */ void QPEApplication::grabKeyboard() { - QPEApplicationData* d = ((QPEApplication*)qApp)->d; - if ( qApp->type() == QApplication::GuiServer ) - d->kbgrabber = 0; - else { - QCopEnvelope e("QPE/System", "grabKeyboard(QString)" ); - e << d->appName; - d->kbgrabber = 2; // me - } + QPEApplicationData * d = ( ( QPEApplication* ) qApp ) ->d; + if ( qApp->type() == QApplication::GuiServer ) + d->kbgrabber = 0; + else { + QCopEnvelope e( "QPE/System", "grabKeyboard(QString)" ); + e << d->appName; + d->kbgrabber = 2; // me + } } @@ -1602,15 +1741,15 @@ void QPEApplication::grabKeyboard() int QPEApplication::exec() { - d->sendQCopQ(); - if ( d->keep_running) - //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() ) - return QApplication::exec(); - - { - QCopEnvelope e("QPE/System", "closing(QString)" ); - e << d->appName; - } - processEvents(); - return 0; + d->sendQCopQ(); + if ( d->keep_running ) + //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() ) + return QApplication::exec(); + + { + QCopEnvelope e( "QPE/System", "closing(QString)" ); + e << d->appName; + } + processEvents(); + return 0; } @@ -1622,13 +1761,13 @@ int QPEApplication::exec() void QPEApplication::tryQuit() { - if ( activeModalWidget() || strcmp( argv()[0], "embeddedkonsole") == 0 ) - return; // Inside modal loop or konsole. Too hard to save state. - { - QCopEnvelope e("QPE/System", "closing(QString)" ); - e << d->appName; - } - processEvents(); + if ( activeModalWidget() || strcmp( argv() [ 0 ], "embeddedkonsole" ) == 0 ) + return ; // Inside modal loop or konsole. Too hard to save state. + { + QCopEnvelope e( "QPE/System", "closing(QString)" ); + e << d->appName; + } + processEvents(); - quit(); + quit(); } @@ -1641,14 +1780,14 @@ void QPEApplication::tryQuit() void QPEApplication::hideOrQuit() { - // notify of our demise :) - { - QCopEnvelope e("QPE/System", "closing(QString)" ); - e << d->appName; - } - processEvents(); - if ( d->preloaded && d->qpe_main_widget ) - d->qpe_main_widget->hide(); - else - quit(); + // notify of our demise :) + { + QCopEnvelope e( "QPE/System", "closing(QString)" ); + e << d->appName; + } + processEvents(); + if ( d->preloaded && d->qpe_main_widget ) + d->qpe_main_widget->hide(); + else + quit(); } @@ -1660,32 +1799,32 @@ void QPEApplication::hideOrQuit() // functions. -void* operator new[](size_t size) +void* operator new[] ( size_t size ) { - return malloc(size); + return malloc( size ); } -void* operator new(size_t size) +void* operator new( size_t size ) { - return malloc(size); + return malloc( size ); } -void operator delete[](void* p) +void operator delete[] ( void* p ) { - free(p); + free( p ); } -void operator delete[](void* p, size_t /*size*/) +void operator delete[] ( void* p, size_t /*size*/ ) { - free(p); + free( p ); } -void operator delete(void* p) +void operator delete( void* p ) { - free(p); + free( p ); } -void operator delete(void* p, size_t /*size*/) +void operator delete( void* p, size_t /*size*/ ) { - free(p); + free( p ); } @@ -1696,21 +1835,20 @@ void operator delete(void* p, size_t /*size*/) #include <qgfx_qws.h> extern QRect qt_maxWindowRect; -void qt_setMaxWindowRect(const QRect& r) +void qt_setMaxWindowRect( const QRect & r ) { - qt_maxWindowRect = qt_screen->mapFromDevice(r, - qt_screen->mapToDevice(QSize(qt_screen->width(),qt_screen->height()))); - // Re-resize any maximized windows - QWidgetList* l = QApplication::topLevelWidgets(); - if ( l ) { - QWidget *w = l->first(); - while ( w ) { - if ( w->isVisible() && w->isMaximized() ) - { - w->showMaximized(); - } - w = l->next(); - } - delete l; - } + qt_maxWindowRect = qt_screen->mapFromDevice( r, + qt_screen->mapToDevice( QSize( qt_screen->width(), qt_screen->height() ) ) ); + // Re-resize any maximized windows + QWidgetList* l = QApplication::topLevelWidgets(); + if ( l ) { + QWidget * w = l->first(); + while ( w ) { + if ( w->isVisible() && w->isMaximized() ) { + w->showMaximized(); + } + w = l->next(); + } + delete l; + } } #endif 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 diff --git a/noncore/styles/liquid/liquid.pro b/noncore/styles/liquid/liquid.pro index 23dce09..a07eaf2 100644 --- a/noncore/styles/liquid/liquid.pro +++ b/noncore/styles/liquid/liquid.pro @@ -4,9 +4,13 @@ SOURCES = liquid.cpp \ liquiddeco.cpp \ effects.cpp \ + liquidset.cpp \ plugin.cpp HEADERS = liquid.h \ liquiddeco.h \ - effects.h + effects.h \ + liquidset.h \ + plugin.h + LIBS += -lqpe INCLUDEPATH += $(OPIEDIR)/include diff --git a/noncore/styles/liquid/settings/liquidset.cpp b/noncore/styles/liquid/liquidset.cpp index 1479ac0..5ae19ba 100644 --- a/noncore/styles/liquid/settings/liquidset.cpp +++ b/noncore/styles/liquid/liquidset.cpp @@ -22,5 +22,5 @@ #include "liquidset.h" -#include "../liquid.h" +#include "liquid.h" #include <qpe/qpeapplication.h> @@ -58,6 +58,6 @@ static void changeButtonColor ( QWidget *btn, const QColor &col ) -LiquidSet::LiquidSet ( QWidget* parent, const char *name, WFlags fl ) - : QDialog ( parent, name, fl ) +LiquidSettings::LiquidSettings ( QWidget* parent, const char *name, WFlags fl ) + : QWidget ( parent, name, fl ) { setCaption ( tr( "Liquid Style" ) ); @@ -123,5 +123,5 @@ LiquidSet::LiquidSet ( QWidget* parent, const char *name, WFlags fl ) QPopupMenu *popup; - popup = new ColorPopupMenu ( m_menucol, this ); + popup = new ColorPopupMenu ( m_menucol, 0 ); m_menubtn-> setPopup ( popup ); m_menubtn-> setPopupDelay ( 0 ); @@ -132,5 +132,5 @@ LiquidSet::LiquidSet ( QWidget* parent, const char *name, WFlags fl ) grid-> addWidget ( m_textbtn, 0, 5 ); - popup = new ColorPopupMenu ( m_textcol, this ); + popup = new ColorPopupMenu ( m_textcol, 0 ); m_textbtn-> setPopup ( popup ); m_textbtn-> setPopupDelay ( 0 ); @@ -177,5 +177,5 @@ LiquidSet::LiquidSet ( QWidget* parent, const char *name, WFlags fl ) } -void LiquidSet::changeType ( int t ) +void LiquidSettings::changeType ( int t ) { bool custom = ( t == Custom ); @@ -191,5 +191,5 @@ void LiquidSet::changeType ( int t ) } -void LiquidSet::changeMenuColor ( const QColor &col ) +void LiquidSettings::changeMenuColor ( const QColor &col ) { changeButtonColor ( m_menubtn, col ); @@ -197,5 +197,5 @@ void LiquidSet::changeMenuColor ( const QColor &col ) } -void LiquidSet::changeTextColor ( const QColor &col ) +void LiquidSettings::changeTextColor ( const QColor &col ) { changeButtonColor ( m_textbtn, col ); @@ -203,10 +203,10 @@ void LiquidSet::changeTextColor ( const QColor &col ) } -void LiquidSet::changeShadow ( bool b ) +void LiquidSettings::changeShadow ( bool b ) { m_shadow = b; } -void LiquidSet::changeDeco ( bool b ) +void LiquidSettings::changeDeco ( bool b ) { m_deco = b; @@ -214,5 +214,5 @@ void LiquidSet::changeDeco ( bool b ) -void LiquidSet::accept ( ) +bool LiquidSettings::writeConfig ( ) { Config config ( "qpe" ); @@ -228,7 +228,5 @@ void LiquidSet::accept ( ) config. write ( ); - Global::applyStyle ( ); - - QDialog::accept ( ); + return true; } diff --git a/noncore/styles/liquid/settings/liquidset.h b/noncore/styles/liquid/liquidset.h index a0f590a..7843513 100644 --- a/noncore/styles/liquid/settings/liquidset.h +++ b/noncore/styles/liquid/liquidset.h @@ -9,9 +9,9 @@ class QToolButton; class QSlider; -class LiquidSet : public QDialog { +class LiquidSettings : public QWidget { Q_OBJECT public: - LiquidSet ( QWidget *parent = 0, const char *name = 0, WFlags fl = 0 ); + LiquidSettings ( QWidget *parent = 0, const char *name = 0, WFlags fl = 0 ); public slots: @@ -22,6 +22,5 @@ public slots: void changeDeco ( bool b ); -protected: - virtual void accept ( ); + virtual bool writeConfig ( ); private: diff --git a/noncore/styles/liquid/opie-liquid.control b/noncore/styles/liquid/opie-liquid.control index 6311dee..7b6ae71 100644 --- a/noncore/styles/liquid/opie-liquid.control +++ b/noncore/styles/liquid/opie-liquid.control @@ -1,3 +1,3 @@ -Files: plugins/styles/libliquid.so* bin/liquid-settings apps/Settings/Liquid.desktop pics/liquid/Liquid.png +Files: plugins/styles/libliquid.so* Priority: optional Section: opie/system diff --git a/noncore/styles/liquid/plugin.cpp b/noncore/styles/liquid/plugin.cpp index d9aa8ef..f149c29 100644 --- a/noncore/styles/liquid/plugin.cpp +++ b/noncore/styles/liquid/plugin.cpp @@ -1,29 +1,111 @@ #include "liquid.h" +#include "liquidset.h" +#include "plugin.h" -extern "C" { - QStyle* allocate ( ); - int minor_version ( ); - int major_version ( ); - const char *description ( ); + +LiquidInterface::LiquidInterface ( ) : ref ( 0 ) +{ +} + +LiquidInterface::~LiquidInterface ( ) +{ +} + +QStyle *LiquidInterface::create ( ) +{ + return new LiquidStyle ( ); +} + +QString LiquidInterface::name ( ) +{ + return QObject::tr( "Liquid", "name" ); +} + +QString LiquidInterface::description ( ) +{ + return QObject::tr( "High Performance Liquid style by Mosfet", "description" ); +} + +QCString LiquidInterface::key ( ) +{ + return QCString ( "liquid" ); +} + +unsigned int LiquidInterface::version ( ) +{ + return 100; // 1.0.0 (\d+.\d.\d) +} + +QRESULT LiquidInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface ) +{ + static LiquidSettingsInterface *setiface = 0; + + *iface = 0; + + if ( uuid == IID_QUnknown ) + *iface = this; + else if ( uuid == IID_Style ) + *iface = this; + else if ( uuid == IID_StyleSettings ) { + if ( !setiface ) + setiface = new LiquidSettingsInterface ( ); + *iface = setiface; + } + + if ( *iface ) + (*iface)-> addRef ( ); + + return QS_OK; +} + +Q_EXPORT_INTERFACE() +{ + Q_CREATE_INSTANCE( LiquidInterface ) } -QStyle* allocate ( ) + +LiquidSettingsInterface::LiquidSettingsInterface ( ) : ref ( 0 ) +{ + m_widget = 0; +} + +LiquidSettingsInterface::~LiquidSettingsInterface ( ) { - return new LiquidStyle ( ); +} + +QWidget *LiquidSettingsInterface::create ( QWidget *parent, const char *name ) +{ + m_widget = new LiquidSettings ( parent, name ? name : "LIQUID-SETTINGS" ); + + return m_widget; } -int minor_version ( ) +bool LiquidSettingsInterface::accept ( ) { - return 0; + if ( !m_widget ) + return false; + + return m_widget-> writeConfig ( ); } -int major_version ( ) +void LiquidSettingsInterface::reject ( ) { - return 1; } -const char *description ( ) +QRESULT LiquidSettingsInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface ) { - return "High Performance Liquid"; + *iface = 0; + + + if ( uuid == IID_QUnknown ) + *iface = this; + else if ( uuid == IID_StyleSettings ) + *iface = this; + + if ( *iface ) + (*iface)-> addRef ( ); + + return QS_OK; } + diff --git a/noncore/styles/liquid/plugin.h b/noncore/styles/liquid/plugin.h new file mode 100644 index 0000000..759577f --- a/dev/null +++ b/noncore/styles/liquid/plugin.h @@ -0,0 +1,46 @@ +#ifndef __OPIE_LIQUID_PLUGIN_H__ +#define __OPIE_LIQUID_PLUGIN_H__ + +#include <qpe/styleinterface.h> + +class LiquidSettings; + +class LiquidInterface : public StyleInterface { +public: + LiquidInterface ( ); + virtual ~LiquidInterface ( ); + + QRESULT queryInterface ( const QUuid &, QUnknownInterface ** ); + Q_REFCOUNT + + virtual QStyle *create ( ); + + virtual QString description ( ); + virtual QString name ( ); + virtual QCString key ( ); + + virtual unsigned int version ( ); + +private: + ulong ref; +}; + +class LiquidSettingsInterface : public StyleSettingsInterface { +public: + LiquidSettingsInterface ( ); + virtual ~LiquidSettingsInterface ( ); + + QRESULT queryInterface ( const QUuid &, QUnknownInterface ** ); + Q_REFCOUNT + + virtual QWidget *create ( QWidget *parent, const char *name = 0 ); + + virtual bool accept ( ); + virtual void reject ( ); + +private: + LiquidSettings *m_widget; + ulong ref; +}; + +#endif diff --git a/noncore/styles/liquid/settings/.cvsignore b/noncore/styles/liquid/settings/.cvsignore deleted file mode 100644 index c13418b..0000000 --- a/noncore/styles/liquid/settings/.cvsignore +++ b/dev/null @@ -1,2 +0,0 @@ -Makefile* -moc_* diff --git a/noncore/styles/liquid/settings/main.cpp b/noncore/styles/liquid/settings/main.cpp deleted file mode 100644 index fd69007..0000000 --- a/noncore/styles/liquid/settings/main.cpp +++ b/dev/null @@ -1,34 +0,0 @@ -/********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. -** -** This file is part of Qtopia Environment. -** -** 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. -** -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -#include "liquidset.h" - -#include <qpe/qpeapplication.h> - - -int main ( int argc, char** argv ) -{ - QPEApplication a ( argc, argv ); - - LiquidSet dlg; - a. showMainWidget ( &dlg ); - - return a. exec ( ); -} diff --git a/noncore/styles/liquid/settings/settings.pro b/noncore/styles/liquid/settings/settings.pro deleted file mode 100644 index bfda7a4..0000000 --- a/noncore/styles/liquid/settings/settings.pro +++ b/dev/null @@ -1,24 +0,0 @@ -TEMPLATE = app -CONFIG += qt warn_on release -DESTDIR = $(OPIEDIR)/bin -HEADERS = liquidset.h -SOURCES = liquidset.cpp main.cpp -INCLUDEPATH += $(OPIEDIR)/include -DEPENDPATH += ../$(OPIEDIR)/include -LIBS += -lqpe -lopie -TARGET = liquid-settings - -TRANSLATIONS = ../../../../i18n/de/liquid-settings.ts \ - ../../../../i18n/en/liquid-settings.ts \ - ../../../../i18n/es/liquid-settings.ts \ - ../../../../i18n/fr/liquid-settings.ts \ - ../../../../i18n/hu/liquid-settings.ts \ - ../../../../i18n/ja/liquid-settings.ts \ - ../../../../i18n/ko/liquid-settings.ts \ - ../../../../i18n/no/liquid-settings.ts \ - ../../../../i18n/pl/liquid-settings.ts \ - ../../../../i18n/pt/liquid-settings.ts \ - ../../../../i18n/pt_BR/liquid-settings.ts \ - ../../../../i18n/sl/liquid-settings.ts \ - ../../../../i18n/zh_CN/liquid-settings.ts \ - ../../../../i18n/zh_TW/liquid-settings.ts diff --git a/noncore/styles/metal/metal.pro b/noncore/styles/metal/metal.pro index 6e99389..cf15f33 100644 --- a/noncore/styles/metal/metal.pro +++ b/noncore/styles/metal/metal.pro @@ -3,5 +3,5 @@ CONFIG = qt embedded release warn_on SOURCES = metal.cpp plugin.cpp -HEADERS = metal.h +HEADERS = metal.h plugin.h LIBS += -lqpe INCLUDEPATH += $(OPIEDIR)/include diff --git a/noncore/styles/metal/plugin.cpp b/noncore/styles/metal/plugin.cpp index e5bee10..1db4aac 100644 --- a/noncore/styles/metal/plugin.cpp +++ b/noncore/styles/metal/plugin.cpp @@ -1,29 +1,57 @@ #include "metal.h" +#include "plugin.h" -extern "C" { - QStyle* allocate ( ); - int minor_version ( ); - int major_version ( ); - const char *description ( ); +MetalInterface::MetalInterface ( ) : ref ( 0 ) +{ +} + +MetalInterface::~MetalInterface ( ) +{ +} + +QStyle *MetalInterface::create ( ) +{ + return new MetalStyle ( ); +} + +QString MetalInterface::name ( ) +{ + return QObject::tr( "Metal", "name" ); +} + +QString MetalInterface::description ( ) +{ + return QObject::tr( "Metal style", "description" ); } -QStyle* allocate ( ) +QCString MetalInterface::key ( ) { - return new MetalStyle ( ); + return QCString ( "metal" ); } -int minor_version ( ) +unsigned int MetalInterface::version ( ) { - return 0; + return 100; // 1.0.0 (\d+.\d.\d) } -int major_version ( ) +QRESULT MetalInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface ) { - return 1; + *iface = 0; + + if ( uuid == IID_QUnknown ) + *iface = this; + else if ( uuid == IID_Style ) + *iface = this; + + if ( *iface ) + (*iface)-> addRef ( ); + + return QS_OK; } -const char *description ( ) +Q_EXPORT_INTERFACE() { - return "Metal style plugin"; + Q_CREATE_INSTANCE( MetalInterface ) } + diff --git a/noncore/styles/metal/plugin.h b/noncore/styles/metal/plugin.h new file mode 100644 index 0000000..f61c833 --- a/dev/null +++ b/noncore/styles/metal/plugin.h @@ -0,0 +1,27 @@ +#ifndef __OPIE_METAL_PLUGIN_H__ +#define __OPIE_METAL_PLUGIN_H__ + +#include <qpe/styleinterface.h> + + +class MetalInterface : public StyleInterface { +public: + MetalInterface ( ); + virtual ~MetalInterface ( ); + + QRESULT queryInterface ( const QUuid &, QUnknownInterface ** ); + Q_REFCOUNT + + virtual QStyle *create ( ); + + virtual QString description ( ); + virtual QString name ( ); + virtual QCString key ( ); + + virtual unsigned int version ( ); + +private: + ulong ref; +}; + +#endif diff --git a/noncore/styles/theme/opie-theme.control b/noncore/styles/theme/opie-theme.control index 02739fb..adb4f4b 100644 --- a/noncore/styles/theme/opie-theme.control +++ b/noncore/styles/theme/opie-theme.control @@ -1,3 +1,3 @@ -Files: plugins/styles/libtheme.so* bin/theme-settings apps/Settings/Theme.desktop pics/theme/Theme.png +Files: plugins/styles/libtheme.so* Priority: optional Section: opie/system diff --git a/noncore/styles/theme/plugin.cpp b/noncore/styles/theme/plugin.cpp index b334357..4383693 100644 --- a/noncore/styles/theme/plugin.cpp +++ b/noncore/styles/theme/plugin.cpp @@ -1,19 +1,111 @@ -//#include <klocale.h> #include "othemestyle.h" +#include "themeset.h" +#include "plugin.h" -extern "C" + + +ThemeInterface::ThemeInterface ( ) : ref ( 0 ) { - QStyle * allocate() { - return new OThemeStyle ( "" ); - } - int minor_version() { - return 0; - } - int major_version() { - return 1; - } - const char * description() { - return ( "Theme Style" ); +} + +ThemeInterface::~ThemeInterface ( ) +{ +} + +QStyle *ThemeInterface::create ( ) +{ + return new OThemeStyle ( "" ); +} + +QString ThemeInterface::name ( ) +{ + return QObject::tr( "Themed style", "name" ); +} + +QString ThemeInterface::description ( ) +{ + return QObject::tr( "KDE2 theme compatible style engine", "description" ); +} + +QCString ThemeInterface::key ( ) +{ + return QCString ( "theme" ); +} + +unsigned int ThemeInterface::version ( ) +{ + return 100; // 1.0.0 (\d+.\d.\d) +} + +QRESULT ThemeInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface ) +{ + static ThemeSettingsInterface *setiface = 0; + + *iface = 0; + + if ( uuid == IID_QUnknown ) + *iface = this; + else if ( uuid == IID_Style ) + *iface = this; + else if ( uuid == IID_StyleSettings ) { + if ( !setiface ) + setiface = new ThemeSettingsInterface ( ); + *iface = setiface; } + + if ( *iface ) + (*iface)-> addRef ( ); + + return QS_OK; +} + +Q_EXPORT_INTERFACE() +{ + Q_CREATE_INSTANCE( ThemeInterface ) +} + + +ThemeSettingsInterface::ThemeSettingsInterface ( ) : ref ( 0 ) +{ + m_widget = 0; +} + +ThemeSettingsInterface::~ThemeSettingsInterface ( ) +{ +} + +QWidget *ThemeSettingsInterface::create ( QWidget *parent, const char *name ) +{ + m_widget = new ThemeSettings ( parent, name ? name : "THEME-SETTINGS" ); + + return m_widget; +} + +bool ThemeSettingsInterface::accept ( ) +{ + if ( !m_widget ) + return false; + + return m_widget-> writeConfig ( ); +} + +void ThemeSettingsInterface::reject ( ) +{ +} + +QRESULT ThemeSettingsInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface ) +{ + *iface = 0; + + + if ( uuid == IID_QUnknown ) + *iface = this; + else if ( uuid == IID_StyleSettings ) + *iface = this; + + if ( *iface ) + (*iface)-> addRef ( ); + + return QS_OK; } diff --git a/noncore/styles/theme/plugin.h b/noncore/styles/theme/plugin.h new file mode 100644 index 0000000..d13fc5d --- a/dev/null +++ b/noncore/styles/theme/plugin.h @@ -0,0 +1,46 @@ +#ifndef __OPIE_THEME_PLUGIN_H__ +#define __OPIE_THEME_PLUGIN_H__ + +#include <qpe/styleinterface.h> + +class ThemeSettings; + +class ThemeInterface : public StyleInterface { +public: + ThemeInterface ( ); + virtual ~ThemeInterface ( ); + + QRESULT queryInterface ( const QUuid &, QUnknownInterface ** ); + Q_REFCOUNT + + virtual QStyle *create ( ); + + virtual QString description ( ); + virtual QString name ( ); + virtual QCString key ( ); + + virtual unsigned int version ( ); + +private: + ulong ref; +}; + +class ThemeSettingsInterface : public StyleSettingsInterface { +public: + ThemeSettingsInterface ( ); + virtual ~ThemeSettingsInterface ( ); + + QRESULT queryInterface ( const QUuid &, QUnknownInterface ** ); + Q_REFCOUNT + + virtual QWidget *create ( QWidget *parent, const char *name = 0 ); + + virtual bool accept ( ); + virtual void reject ( ); + +private: + ThemeSettings *m_widget; + ulong ref; +}; + +#endif diff --git a/noncore/styles/theme/settings/main.cpp b/noncore/styles/theme/settings/main.cpp deleted file mode 100644 index 94d40f3..0000000 --- a/noncore/styles/theme/settings/main.cpp +++ b/dev/null @@ -1,34 +0,0 @@ -/********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. -** -** This file is part of Qtopia Environment. -** -** 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. -** -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ - -#include "themeset.h" - -#include <qpe/qpeapplication.h> - - -int main ( int argc, char** argv ) -{ - QPEApplication a ( argc, argv ); - - ThemeSet dlg; - a. showMainWidget ( &dlg ); - - return a. exec ( ); -} diff --git a/noncore/styles/theme/settings/settings.pro b/noncore/styles/theme/settings/settings.pro deleted file mode 100644 index 85d1f7a..0000000 --- a/noncore/styles/theme/settings/settings.pro +++ b/dev/null @@ -1,24 +0,0 @@ -TEMPLATE = app -CONFIG += qt warn_on release -DESTDIR = $(OPIEDIR)/bin -HEADERS = themeset.h -SOURCES = themeset.cpp main.cpp -INCLUDEPATH += $(OPIEDIR)/include -DEPENDPATH += ../$(OPIEDIR)/include -LIBS += -lqpe -TARGET = theme-settings - -TRANSLATIONS = ../../../../i18n/de/theme-settings.ts \ - ../../../../i18n/en/theme-settings.ts \ - ../../../../i18n/es/theme-settings.ts \ - ../../../../i18n/fr/theme-settings.ts \ - ../../../../i18n/hu/theme-settings.ts \ - ../../../../i18n/ja/theme-settings.ts \ - ../../../../i18n/ko/theme-settings.ts \ - ../../../../i18n/no/theme-settings.ts \ - ../../../../i18n/pl/theme-settings.ts \ - ../../../../i18n/pt/theme-settings.ts \ - ../../../../i18n/pt_BR/theme-settings.ts \ - ../../../../i18n/sl/theme-settings.ts \ - ../../../../i18n/zh_CN/theme-settings.ts \ - ../../../../i18n/zh_TW/theme-settings.ts diff --git a/noncore/styles/theme/settings/themeset.h b/noncore/styles/theme/settings/themeset.h deleted file mode 100644 index 24804ce..0000000 --- a/noncore/styles/theme/settings/themeset.h +++ b/dev/null @@ -1,20 +0,0 @@ -#ifndef __OPIE_THEME_SET_H__ -#define __OPIE_THEME_SET_H__ - -#include <qdialog.h> - -class QListView; - -class ThemeSet : public QDialog { - Q_OBJECT - -public: - ThemeSet ( QWidget *parent = 0, const char *name = 0, WFlags fl = 0 ); - -protected: - virtual void accept ( ); - -private: - QListView *m_list; -}; -#endif diff --git a/noncore/styles/theme/theme.pro b/noncore/styles/theme/theme.pro index fdcd20e..49c4103 100644 --- a/noncore/styles/theme/theme.pro +++ b/noncore/styles/theme/theme.pro @@ -4,9 +4,12 @@ SOURCES = ogfxeffect.cpp \ othemestyle.cpp \ othemebase.cpp \ + themeset.cpp \ plugin.cpp HEADERS = ogfxeffect.h \ othemebase.h \ - othemestyle.h + othemestyle.h \ + themeset.h \ + plugin.h diff --git a/noncore/styles/theme/settings/themeset.cpp b/noncore/styles/theme/themeset.cpp index 046618e..4a4efcb 100644 --- a/noncore/styles/theme/settings/themeset.cpp +++ b/noncore/styles/theme/themeset.cpp @@ -60,6 +60,6 @@ public: -ThemeSet::ThemeSet ( QWidget* parent, const char *name, WFlags fl ) - : QDialog ( parent, name, fl ) +ThemeSettings::ThemeSettings ( QWidget* parent, const char *name, WFlags fl ) + : QWidget ( parent, name, fl ) { setCaption ( tr( "Theme Style" ) ); @@ -110,5 +110,5 @@ ThemeSet::ThemeSet ( QWidget* parent, const char *name, WFlags fl ) } -void ThemeSet::accept ( ) +bool ThemeSettings::writeConfig ( ) { Config config ( "qpe" ); @@ -117,8 +117,7 @@ void ThemeSet::accept ( ) MyItem *it = (MyItem *) m_list-> selectedItem ( ); config. writeEntry ( "Theme", it ? it-> m_theme : QString ( "" )); + config. write ( ); - Global::applyStyle ( ); - - QDialog::accept ( ); + return true; } diff --git a/noncore/styles/theme/themeset.h b/noncore/styles/theme/themeset.h new file mode 100644 index 0000000..c337cfa --- a/dev/null +++ b/noncore/styles/theme/themeset.h @@ -0,0 +1,20 @@ +#ifndef __OPIE_THEME_SETTINGS_H__ +#define __OPIE_THEME_SETTINGS_H__ + +#include <qdialog.h> + +class QListView; + +class ThemeSettings : public QWidget { + Q_OBJECT + +public: + ThemeSettings ( QWidget *parent = 0, const char *name = 0, WFlags fl = 0 ); + +public: + virtual bool writeConfig ( ); + +private: + QListView *m_list; +}; +#endif diff --git a/pics/liquid/Liquid.png b/pics/liquid/Liquid.png Binary files differdeleted file mode 100644 index 67647d0..0000000 --- a/pics/liquid/Liquid.png +++ b/dev/null diff --git a/pics/theme/Theme.png b/pics/theme/Theme.png Binary files differdeleted file mode 100644 index 67647d0..0000000 --- a/pics/theme/Theme.png +++ b/dev/null |