summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp2055
1 files changed, 1066 insertions, 989 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index f65f3ab..2432b65 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -86,179 +86,201 @@
#include <sys/soundcard.h>
-class QPEApplicationData {
+class QPEApplicationData
+{
public:
- QPEApplicationData() : presstimer( 0 ), presswidget( 0 ), rightpressed( FALSE ),
- kbgrabber( 0 ), kbregrab( FALSE ), notbusysent( FALSE ), preloaded( FALSE ),
- forceshow( FALSE ), nomaximize( FALSE ), qpe_main_widget( 0 ),
- keep_running( TRUE )
- {
- qcopq.setAutoDelete( TRUE );
- }
-
- int presstimer;
- QWidget* presswidget;
- QPoint presspos;
- bool rightpressed : 1; // AEH why not use uint foobar :1; if it's tt style -zecke
- int kbgrabber;
- bool kbregrab : 1;
- bool notbusysent : 1;
- 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 : 1;
- bool forceshow : 1;
- bool nomaximize : 1;
- QWidget* qpe_main_widget;
- bool keep_running : 1;
- 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;
+ 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 :
+ 1; // AEH why not use uint foobar :1; if it's tt style -zecke
+ int kbgrabber;
+bool kbregrab :
+ 1;
+bool notbusysent :
+ 1;
+ 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 :
+ 1;
+bool forceshow :
+ 1;
+bool nomaximize :
+ 1;
+ QWidget* qpe_main_widget;
+bool keep_running :
+ 1;
+ 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;
#ifndef QT_NO_COP
- for ( QListIterator<QCopRec> it( qcopq ); ( r = it.current() ); ++it )
- QCopChannel::sendLocally( r->channel, r->message, r->data );
+
+ for ( QListIterator<QCopRec> it( qcopq ); ( r = it.current() ); ++it )
+ QCopChannel::sendLocally( r->channel, r->message, r->data );
#endif
- qcopq.clear();
- }
- static void show_mx(QWidget* mw, bool nomaximize) {
- if ( mw->layout() && mw->inherits("QDialog") ) {
- QPEApplication::showDialog((QDialog*)mw,nomaximize);
- } else {
+
+ qcopq.clear();
+ }
+ static void show_mx(QWidget* mw, bool nomaximize)
+ {
+ if ( mw->layout() && mw->inherits("QDialog") ) {
+ QPEApplication::showDialog((QDialog*)mw, nomaximize);
+ }
+ else {
#ifdef Q_WS_QWS
- if ( !nomaximize )
- mw->showMaximized();
- else
+ if ( !nomaximize )
+ mw->showMaximized();
+ else
#endif
- mw->show();
- }
- }
- 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;
- }
-
- void show(QWidget* mw, bool nomax)
- {
- setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" );
- nomaximize = nomax;
- qpe_main_widget = mw;
+ mw->show();
+ }
+ }
+ 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;
+ }
+
+
+ void show(QWidget* mw, bool nomax)
+ {
+ setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" );
+ nomaximize = nomax;
+ qpe_main_widget = mw;
#ifndef QT_NO_COP
- sendQCopQ();
-#endif
- if ( preloaded ) {
- if(forceshow)
- show_mx(mw,nomax);
- } else if ( keep_running ) {
- show_mx(mw,nomax);
- }
- }
- void loadTextCodecs()
- {
- QString path = QPEApplication::qpeDir() + "/plugins/textcodecs";
- QDir dir( path, "lib*.so" );
- QStringList list = dir.entryList();
- QStringList::Iterator it;
- for ( it = list.begin(); it != list.end(); ++it ) {
- TextCodecInterface *iface = 0;
- QLibrary *lib = new QLibrary( path + "/" + *it );
- if ( lib->queryInterface( IID_QtopiaTextCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
- QValueList<int> mibs = iface->mibEnums();
- for (QValueList<int>::ConstIterator i=mibs.begin(); i!=mibs.end(); ++i) {
- (void)iface->createForMib(*i);
- // ### it exists now; need to remember if we can delete it
- }
- } else {
- lib->unload();
- delete lib;
- }
- }
- }
+ sendQCopQ();
+#endif
- void loadImageCodecs()
- {
- QString path = QPEApplication::qpeDir() + "/plugins/imagecodecs";
- QDir dir( path, "lib*.so" );
- QStringList list = dir.entryList();
- QStringList::Iterator it;
- for ( it = list.begin(); it != list.end(); ++it ) {
- ImageCodecInterface *iface = 0;
- QLibrary *lib = new QLibrary( path + "/" + *it );
- if ( lib->queryInterface( IID_QtopiaImageCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
- QStringList formats = iface->keys();
- for (QStringList::ConstIterator i=formats.begin(); i!=formats.end(); ++i) {
- (void)iface->installIOHandler(*i);
- // ### it exists now; need to remember if we can delete it
- }
- } else {
- lib->unload();
- delete lib;
- }
- }
- }
- QString styleName;
- QString decorationName;
+ if ( preloaded ) {
+ if (forceshow)
+ show_mx(mw, nomax);
+ }
+ else if ( keep_running ) {
+ show_mx(mw, nomax);
+ }
+ }
+
+ void loadTextCodecs()
+ {
+ QString path = QPEApplication::qpeDir() + "/plugins/textcodecs";
+ QDir dir( path, "lib*.so" );
+ QStringList list = dir.entryList();
+ QStringList::Iterator it;
+ for ( it = list.begin(); it != list.end(); ++it ) {
+ TextCodecInterface *iface = 0;
+ QLibrary *lib = new QLibrary( path + "/" + *it );
+ if ( lib->queryInterface( IID_QtopiaTextCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
+ QValueList<int> mibs = iface->mibEnums();
+ for (QValueList<int>::ConstIterator i = mibs.begin(); i != mibs.end(); ++i) {
+ (void)iface->createForMib(*i);
+ // ### it exists now; need to remember if we can delete it
+ }
+ }
+ else {
+ lib->unload();
+ delete lib;
+ }
+ }
+ }
+
+ void loadImageCodecs()
+ {
+ QString path = QPEApplication::qpeDir() + "/plugins/imagecodecs";
+ QDir dir( path, "lib*.so" );
+ QStringList list = dir.entryList();
+ QStringList::Iterator it;
+ for ( it = list.begin(); it != list.end(); ++it ) {
+ ImageCodecInterface *iface = 0;
+ QLibrary *lib = new QLibrary( path + "/" + *it );
+ if ( lib->queryInterface( IID_QtopiaImageCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
+ QStringList formats = iface->keys();
+ for (QStringList::ConstIterator i = formats.begin(); i != formats.end(); ++i) {
+ (void)iface->installIOHandler(*i);
+ // ### it exists now; need to remember if we can delete it
+ }
+ }
+ else {
+ lib->unload();
+ delete lib;
+ }
+ }
+ }
+ QString styleName;
+ QString decorationName;
};
-class ResourceMimeFactory : public QMimeSourceFactory {
+class ResourceMimeFactory : public QMimeSourceFactory
+{
public:
- 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;
- }
+ 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;
+ }
};
static int muted = 0;
@@ -266,43 +288,43 @@ static int micMuted = 0;
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 )
{
- 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;
+ }
}
@@ -310,20 +332,20 @@ static void setMic( int t = 0, int percent = -1 )
\class QPEApplication qpeapplication.h
\brief The QPEApplication class implements various system services
that are available to all Qtopia applications.
-
+
Simply by using QPEApplication instead of QApplication, a standard Qt
application becomes a Qtopia application. It automatically follows
style changes, quits and raises, and in the
case of \link docwidget.html document-oriented\endlink applications,
changes the currently displayed document in response to the environment.
-
+
To create a \link docwidget.html document-oriented\endlink
application use showMainDocumentWidget(); to create a
non-document-oriented application use showMainWidget(). The
keepRunning() function indicates whether the application will
continue running after it's processed the last \link qcop.html
QCop\endlink message. This can be changed using setKeepRunning().
-
+
A variety of signals are emitted when certain events occur, for
example, timeChanged(), clockChanged(), weekChanged(),
dateFormatChanged() and volumeChanged(). If the application receives
@@ -334,7 +356,7 @@ static void setMic( int t = 0, int percent = -1 )
signals, the application should save and reload any data
files that are involved in synching. Most of these signals will initially
be received and unfiltered through the appMessage() signal.
-
+
This class also provides a set of useful static functions. The
qpeDir() and documentDir() functions return the respective paths.
The grabKeyboard() and ungrabKeyboard() functions are used to
@@ -343,13 +365,13 @@ static void setMic( int t = 0, int percent = -1 )
operation is set with setStylusOperation() and retrieved with
stylusOperation(). There are also setInputMethodHint() and
inputMethodHint() functions.
-
+
\ingroup qtopiaemb
*/
/*!
\fn void QPEApplication::clientMoused()
-
+
\internal
*/
@@ -361,7 +383,7 @@ static void setMic( int t = 0, int percent = -1 )
/*!
\fn void QPEApplication::clockChanged( bool ampm );
-
+
This signal is emitted when the user changes the clock's style. If
\a ampm is TRUE, the user wants a 12-hour AM/PM clock, otherwise,
they want a 24-hour clock.
@@ -369,14 +391,14 @@ static void setMic( int t = 0, int percent = -1 )
/*!
\fn void QPEApplication::volumeChanged( bool muted )
-
+
This signal is emitted whenever the mute state is changed. If \a
muted is TRUE, then sound output has been muted.
*/
/*!
\fn void QPEApplication::weekChanged( bool startOnMonday )
-
+
This signal is emitted if the week start day is changed. If \a
startOnMonday is TRUE then the first day of the week is Monday; if
\a startOnMonday is FALSE then the first day of the week is
@@ -385,31 +407,31 @@ static void setMic( int t = 0, int percent = -1 )
/*!
\fn void QPEApplication::dateFormatChanged()
-
+
This signal is emitted whenever the date format is changed.
*/
/*!
\fn void QPEApplication::flush()
-
+
###
*/
/*!
\fn void QPEApplication::reload()
-
+
*/
/*!
\fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data )
-
+
This signal is emitted when a message is received on this
application's QPE/Application/<i>appname</i> \link qcop.html
QCop\endlink channel.
-
+
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 )
{
@@ -423,7 +445,7 @@ static void setMic( int t = 0, int percent = -1 )
}
}
\endcode
-
+
\sa qcop.html
Note that messages received here may be processed by qpe application
and emitted as signals, such as flush() and reload().
@@ -432,169 +454,173 @@ static void setMic( int t = 0, int percent = -1 )
/*!
Constructs a QPEApplication just as you would construct
a QApplication, passing \a argc, \a argv, and \a t.
-
+
For applications, \a t should be the default, GuiClient. Only
the Qtopia server passes GuiServer.
*/
QPEApplication::QPEApplication( int & argc, char **argv, Type t )
- : QApplication( argc, argv, t )
+ : QApplication( argc, argv, t )
{
- d = new QPEApplicationData;
- d->loadTextCodecs();
- d->loadImageCodecs();
- int dw = desktop() ->width();
- qWarning( "Width %d", dw );
- if ( dw < 200 ) {
- setFont( QFont( "helvetica", 8 ) );
- AppLnk::setSmallIconSize( 10 );
- AppLnk::setBigIconSize( 28 );
- }else if ( dw > 600 ) {
- setFont( QFont( "helvetica", 12 ) );
- AppLnk::setSmallIconSize( 24 );
- AppLnk::setBigIconSize( 48 );
- }else if ( dw > 200 ) {
- setFont( QFont( "helvetica", 12 ) );
- AppLnk::setSmallIconSize( 16 );
- AppLnk::setBigIconSize( 32 );
- }
-
-
- QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory );
-
- connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) );
+ d = new QPEApplicationData;
+ d->loadTextCodecs();
+ d->loadImageCodecs();
+ int dw = desktop() ->width();
+ qWarning( "Width %d", dw );
+ if ( dw < 200 ) {
+ setFont( QFont( "helvetica", 8 ) );
+ AppLnk::setSmallIconSize( 10 );
+ AppLnk::setBigIconSize( 28 );
+ }
+ else if ( dw > 600 ) {
+ setFont( QFont( "helvetica", 12 ) );
+ AppLnk::setSmallIconSize( 24 );
+ AppLnk::setBigIconSize( 48 );
+ }
+ else if ( dw > 200 ) {
+ setFont( QFont( "helvetica", 12 ) );
+ AppLnk::setSmallIconSize( 16 );
+ AppLnk::setBigIconSize( 32 );
+ }
+
+
+ QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory );
+
+ 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 );
- }
-
- 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;
- }
- }
-
- /* overide stored arguments */
- setArgs( argc, argv );
+ 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 );
+ }
+
+ 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;
+ }
+ }
+
+ /* 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;
+ QStringList langs = Global::languageList();
+ for ( QStringList::ConstIterator it = langs.begin(); it != langs.end(); ++it ) {
+ QString lang = *it;
- QTranslator * trans;
- QString tfn;
+ 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 + "/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;
+ 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
+ //###language/font hack; should look it up somewhere
#ifdef QWS
- if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) {
- QFont fn = FontManager::unicodeFont( FontManager::Proportional );
- setFont( fn );
- }
+
+ if ( lang == "ja" || lang == "zh_CN" || lang == "zh_TW" || lang == "ko" ) {
+ QFont fn = FontManager::unicodeFont( FontManager::Proportional );
+ setFont( fn );
+ }
#endif
- }
+
+ }
#endif
- applyStyle();
+ applyStyle();
- if ( type() == GuiServer ) {
- setVolume();
- }
+ if ( type() == GuiServer ) {
+ setVolume();
+ }
- 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 void createInputMethodDict()
{
- if ( !inputMethodDict )
- inputMethodDict = new QPtrDict<void>;
+ if ( !inputMethodDict )
+ inputMethodDict = new QPtrDict<void>;
}
/*!
Returns the currently set hint to the system as to whether
widget \a w has any use for text input methods.
-
-
+
+
\sa setInputMethodHint() InputMethodHint
*/
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.
\value AlwaysOn the application always needs text input.
@@ -603,51 +629,60 @@ QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w )
/*!
Hints to the system that widget \a w has use for text input methods
as specified by \a mode.
-
+
\sa inputMethodHint() InputMethodHint
*/
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 );
+ }
}
class HackDialog : public QDialog
{
public:
- void acceptIt() { accept(); }
- void rejectIt() { reject(); }
+ void acceptIt()
+ {
+ accept();
+ }
+ void rejectIt()
+ {
+ reject();
+ }
};
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;
#ifdef QWS
- ke->simpleData.keycode = key;
+
+ ke->simpleData.keycode = key;
#endif
}
class HackWidget : public QWidget
{
public:
- bool needsOk()
- { return ( getWState() & WState_Reserved1 ); }
+ bool needsOk()
+ {
+ return ( getWState() & WState_Reserved1 );
+ }
};
/*!
@@ -657,120 +692,121 @@ public:
#ifdef QWS
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();
- break;
- default:
- break;
- }
- }
- 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();
+ break;
+ default:
+ break;
+ }
+ }
+ 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 );
}
#endif
@@ -779,15 +815,15 @@ 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;
}
/*!
@@ -795,11 +831,11 @@ 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( "../" );
}
/*!
@@ -808,11 +844,11 @@ QString QPEApplication::qpeDir()
*/
QString QPEApplication::documentDir()
{
- const char* base = getenv( "HOME");
- if( base )
- return QString( base ) + "/Documents";
-
- return QString( "../Documents" );
+ const char* base = getenv( "HOME");
+ if ( base )
+ return QString( base ) + "/Documents";
+
+ return QString( "../Documents" );
}
static int deforient = -1;
@@ -822,22 +858,22 @@ 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;
}
/*!
@@ -845,17 +881,21 @@ int QPEApplication::defaultRotation()
*/
void QPEApplication::setDefaultRotation( int r )
{
- if ( qApp->type() == GuiServer ) {
- deforient = r;
- setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
- Config config("qpe");
- config.setGroup( "Rotation" );
- config.writeEntry( "Screen", getenv("QWS_DISPLAY") );
- } else {
+ if ( qApp->type() == GuiServer ) {
+ deforient = r;
+ setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
+ Config config("qpe");
+ config.setGroup( "Rotation" );
+ config.writeEntry( "Screen", getenv("QWS_DISPLAY") );
+ }
+ else {
#ifndef QT_NO_COP
- { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); e << r; }
+ { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" );
+ e << r;
+ }
#endif
- }
+
+ }
}
/*!
@@ -863,161 +903,180 @@ 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 );
-
- // Window Decoration
- QString dec = config.readEntry( "Decoration", "Qtopia" );
- if ( dec != d->decorationName ) {
- qwsSetDecoration( new QPEDecoration( dec ) );
- d->decorationName = dec;
- }
-
- // Font
- QString ff = config.readEntry( "FontFamily", font().family() );
- int fs = config.readNumEntry( "FontSize", font().pointSize() );
- setFont( QFont(ff,fs) );
+ 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 );
+
+ // Window Decoration
+ QString dec = config.readEntry( "Decoration", "Qtopia" );
+ if ( dec != d->decorationName ) {
+ qwsSetDecoration( new QPEDecoration( dec ) );
+ d->decorationName = dec;
+ }
+
+ // Font
+ QString ff = config.readEntry( "FontFamily", font().family() );
+ int fs = config.readNumEntry( "FontSize", font().pointSize() );
+ setFont( QFont(ff, fs) );
}
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 == "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 );
- }
+ QDataStream stream( data, IO_ReadOnly );
+ if ( msg == "applyStyle()" ) {
+ applyStyle();
+ }
+ 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 );
+ }
#endif
}
@@ -1026,92 +1085,103 @@ 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;
- else if (d->preloaded) {
- // We are preloaded and not visible.. pretend we just started..
- QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
- e << d->appName;
- }
-
- d->show_mx(top,d->nomaximize);
- top->raise();
- top->setActiveWindow();
- }
- QWidget *topm = activeModalWidget();
- if ( topm && topm != top ) {
- topm->show();
- topm->raise();
- topm->setActiveWindow();
- // If we haven't already handled the fastAppShowing message
- if (!top && d->preloaded) {
- QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
- e << d->appName;
- }
- r = FALSE;
- }
- return r;
+ 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;
+ else if (d->preloaded) {
+ // We are preloaded and not visible.. pretend we just started..
+ QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
+ e << d->appName;
+ }
+
+ d->show_mx(top, d->nomaximize);
+ top->raise();
+ top->setActiveWindow();
+ }
+ QWidget *topm = activeModalWidget();
+ if ( topm && topm != top ) {
+ topm->show();
+ topm->raise();
+ topm->setActiveWindow();
+ // If we haven't already handled the fastAppShowing message
+ if (!top && d->preloaded) {
+ QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
+ e << d->appName;
+ }
+ r = FALSE;
+ }
+ return r;
}
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()" ) {
- if (d->qpe_main_widget)
- 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();
- // Tell the system we're still chugging along...
- QCopEnvelope e("QPE/System", "appRaised(QString)");
- e << d->appName;
- } 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()" ) {
- qDebug("got 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()" ) {
+ if (d->qpe_main_widget)
+ 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();
+ // Tell the system we're still chugging along...
+ QCopEnvelope e("QPE/System", "appRaised(QString)");
+ e << d->appName;
+ }
+ 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()" ) {
+ qDebug("got nextView()");
+ /*
+ if ( raiseAppropriateWindow() )
+ */
+ emit appMessage( msg, data);
+ }
+ else {
+ emit appMessage( msg, data);
+ }
#endif
}
@@ -1120,31 +1190,31 @@ void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
/*!
Sets widget \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 )
{
- d->show(mw,nomaximize );
+ d->show(mw, nomaximize );
}
/*!
Sets widget \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 \e must have this slot: setDocument(const QString&).
-
+
\sa showMainWidget()
*/
void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
{
- if ( mw && argc() == 2 )
- Global::setDocument( mw, QString::fromUtf8(argv()[1]) );
+ if ( mw && argc() == 2 )
+ Global::setDocument( mw, QString::fromUtf8(argv()[1]) );
- d->show(mw, nomaximize );
+ d->show(mw, nomaximize );
}
@@ -1155,26 +1225,26 @@ void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
function while processing a \link qcop.html QCop\endlink message,
after processing its outstanding \link qcop.html QCop\endlink
messages the application will start 'properly' and show itself.
-
+
\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;
+ }
}
/*!
Returns TRUE if the application will quit after processing the
current list of qcop messages; otherwise returns FALSE.
-
+
\sa setKeepRunning()
*/
bool QPEApplication::keepRunning() const
{
- return d->keep_running;
+ return d->keep_running;
}
/*!
@@ -1183,79 +1253,79 @@ bool QPEApplication::keepRunning() const
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
- else {
- QStyle *sty = 0;
- QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/";
-
- if ( style. find ( ".so" ) > 0 )
- path += style;
- else
- path = path + "lib" + style. lower ( ) + ".so"; // compatibility
-
- 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 ) && iface )
- sty = iface-> style ( );
-
- if ( sty ) {
- setStyle ( sty );
-
- if ( lastiface )
- lastiface-> release ( );
- lastiface = iface;
-
- if ( lastlib ) {
- lastlib-> unload ( );
- delete lastlib;
- }
- lastlib = lib;
- }
- else {
- if ( iface )
- iface-> release ( );
- delete lib;
-
- setStyle ( new QPEStyle ( ));
- }
- }
+ else {
+ QStyle *sty = 0;
+ QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/";
+
+ if ( style. find ( ".so" ) > 0 )
+ path += style;
+ else
+ path = path + "lib" + style. lower ( ) + ".so"; // compatibility
+
+ 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 ) && iface )
+ sty = iface-> style ( );
+
+ if ( sty ) {
+ setStyle ( sty );
+
+ if ( lastiface )
+ lastiface-> release ( );
+ lastiface = iface;
+
+ if ( lastlib ) {
+ lastlib-> unload ( );
+ delete lastlib;
+ }
+ lastlib = lib;
+ }
+ else {
+ if ( iface )
+ iface-> release ( );
+ delete lib;
+
+ setStyle ( new QPEStyle ( ));
+ }
+ }
#endif
}
@@ -1264,24 +1334,24 @@ void QPEApplication::internalSetStyle( const QString &style )
*/
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
}
@@ -1290,7 +1360,7 @@ void QPEApplication::prepareForTermination( bool willrestart )
*/
void QPEApplication::shutdown()
{
- // Implement in server's QPEApplication subclass
+ // Implement in server's QPEApplication subclass
}
/*!
@@ -1298,58 +1368,58 @@ void QPEApplication::shutdown()
*/
void QPEApplication::restart()
{
- // Implement in server's QPEApplication subclass
+ // Implement in server's QPEApplication subclass
}
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 widget \a w.
-
+
\sa setStylusOperation() StylusMode
*/
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.
-
+
\sa setStylusOperation() stylusOperation()
*/
/*!
Causes widget \a w to receive mouse events according to the stylus
\a mode.
-
+
\sa stylusOperation() StylusMode
*/
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 );
+ }
}
@@ -1358,67 +1428,68 @@ 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;
- StylusMode mode = (StylusMode)(int)stylusDict->find(o);
- switch (mode) {
- case RightOnHold:
- switch ( me->type() ) {
- case QEvent::MouseButtonPress:
- if ( me->button() == LeftButton ) {
- d->presstimer = startTimer(500); // #### pref.
- d->presswidget = (QWidget*)o;
- d->presspos = me->pos();
- d->rightpressed = FALSE;
- }
- break;
- case QEvent::MouseMove:
- if (d->presstimer && (me->pos()-d->presspos).manhattanLength() > 8) {
- killTimer(d->presstimer);
- d->presstimer = 0;
- }
- break;
- case QEvent::MouseButtonRelease:
- if ( me->button() == LeftButton ) {
- 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;
+ if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) {
+ QMouseEvent * me = ( QMouseEvent* ) e;
+ StylusMode mode = (StylusMode)(int)stylusDict->find(o);
+ switch (mode) {
+ case RightOnHold:
+ switch ( me->type() ) {
+ case QEvent::MouseButtonPress:
+ if ( me->button() == LeftButton ) {
+ d->presstimer = startTimer(500); // #### pref.
+ d->presswidget = (QWidget*)o;
+ d->presspos = me->pos();
+ d->rightpressed = FALSE;
+ }
+ break;
+ case QEvent::MouseMove:
+ if (d->presstimer && (me->pos() - d->presspos).manhattanLength() > 8) {
+ killTimer(d->presstimer);
+ d->presstimer = 0;
+ }
+ break;
+ case QEvent::MouseButtonRelease:
+ if ( me->button() == LeftButton ) {
+ 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;
}
/*!
@@ -1426,23 +1497,23 @@ 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;
}
/*!
@@ -1450,7 +1521,7 @@ void QPEApplication::removeSenderFromStylusDict()
*/
bool QPEApplication::keyboardGrabbed() const
{
- return d->kbgrabber;
+ return d->kbgrabber;
}
@@ -1460,15 +1531,16 @@ bool QPEApplication::keyboardGrabbed() const
*/
void QPEApplication::ungrabKeyboard()
{
- QPEApplicationData * d = ( ( QPEApplication* ) qApp ) ->d;
- if ( d->kbgrabber == 2 ) {
+ QPEApplicationData * d = ( ( QPEApplication* ) qApp ) ->d;
+ if ( d->kbgrabber == 2 ) {
#ifndef QT_NO_COP
- QCopEnvelope e( "QPE/System", "grabKeyboard(QString)" );
- e << QString::null;
+ QCopEnvelope e( "QPE/System", "grabKeyboard(QString)" );
+ e << QString::null;
#endif
- d->kbregrab = FALSE;
- d->kbgrabber = 0;
- }
+
+ d->kbregrab = FALSE;
+ d->kbgrabber = 0;
+ }
}
/*!
@@ -1477,21 +1549,22 @@ void QPEApplication::ungrabKeyboard()
the signals emitted are sent to this application instead. Some games
programs take over the launch keys in this way to make interaction
easier.
-
+
\sa ungrabKeyboard()
*/
void QPEApplication::grabKeyboard()
{
- QPEApplicationData * d = ( ( QPEApplication* ) qApp ) ->d;
- if ( qApp->type() == QApplication::GuiServer )
- d->kbgrabber = 0;
- else {
+ QPEApplicationData * d = ( ( QPEApplication* ) qApp ) ->d;
+ if ( qApp->type() == QApplication::GuiServer )
+ d->kbgrabber = 0;
+ else {
#ifndef QT_NO_COP
- QCopEnvelope e( "QPE/System", "grabKeyboard(QString)" );
- e << d->appName;
+ QCopEnvelope e( "QPE/System", "grabKeyboard(QString)" );
+ e << d->appName;
#endif
- d->kbgrabber = 2; // me
- }
+
+ d->kbgrabber = 2; // me
+ }
}
/*!
@@ -1500,20 +1573,22 @@ void QPEApplication::grabKeyboard()
int QPEApplication::exec()
{
#ifndef QT_NO_COP
- d->sendQCopQ();
+ d->sendQCopQ();
#endif
- if ( d->keep_running )
- //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() )
- return QApplication::exec();
+
+ if ( d->keep_running )
+ //|| d->qpe_main_widget && d->qpe_main_widget->isVisible() )
+ return QApplication::exec();
#ifndef QT_NO_COP
- {
- QCopEnvelope e( "QPE/System", "closing(QString)" );
- e << d->appName;
- }
+
+ {
+ QCopEnvelope e( "QPE/System", "closing(QString)" );
+ e << d->appName;
+ }
#endif
- processEvents();
- return 0;
+ processEvents();
+ return 0;
}
/*!
@@ -1523,17 +1598,18 @@ int QPEApplication::exec()
*/
void QPEApplication::tryQuit()
{
- if ( activeModalWidget() || strcmp( argv() [ 0 ], "embeddedkonsole" ) == 0 )
- return ; // Inside modal loop or konsole. Too hard to save state.
+ if ( activeModalWidget() || strcmp( argv() [ 0 ], "embeddedkonsole" ) == 0 )
+ return ; // Inside modal loop or konsole. Too hard to save state.
#ifndef QT_NO_COP
- {
- QCopEnvelope e( "QPE/System", "closing(QString)" );
- e << d->appName;
- }
+
+ {
+ QCopEnvelope e( "QPE/System", "closing(QString)" );
+ e << d->appName;
+ }
#endif
- processEvents();
+ processEvents();
- quit();
+ quit();
}
/*!
@@ -1544,20 +1620,21 @@ void QPEApplication::tryQuit()
*/
void QPEApplication::hideOrQuit()
{
- processEvents();
+ processEvents();
- // If we are a preloaded application we don't actually quit, so emit
- // a System message indicating we're quasi-closing.
- if ( d->preloaded && d->qpe_main_widget )
+ // If we are a preloaded application we don't actually quit, so emit
+ // a System message indicating we're quasi-closing.
+ if ( d->preloaded && d->qpe_main_widget )
#ifndef QT_NO_COP
- {
- QCopEnvelope e("QPE/System", "fastAppHiding(QString)" );
- e << d->appName;
- d->qpe_main_widget->hide();
- }
+
+ {
+ QCopEnvelope e("QPE/System", "fastAppHiding(QString)" );
+ e << d->appName;
+ d->qpe_main_widget->hide();
+ }
#endif
- else
- quit();
+ else
+ quit();
}
#if defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX)
@@ -1569,32 +1646,32 @@ void QPEApplication::hideOrQuit()
void* operator new[]( size_t size )
{
- return malloc( size );
+ return malloc( size );
}
void* operator new( size_t size )
{
- return malloc( size );
+ return malloc( size );
}
void operator delete[]( void* p )
{
- free( p );
+ free( p );
}
void operator delete[]( void* p, size_t /*size*/ )
{
- free( p );
+ free( p );
}
void operator delete( void* p )
{
- free( p );
+ free( p );
}
void operator delete( void* p, size_t /*size*/ )
{
- free( p );
+ free( p );
}
#endif
@@ -1606,20 +1683,20 @@ void operator delete( void* p, size_t /*size*/ )
extern QRect qt_maxWindowRect;
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
#endif