summaryrefslogtreecommitdiff
path: root/library
Side-by-side diff
Diffstat (limited to 'library') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp2499
1 files changed, 1247 insertions, 1252 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index 26e310a..4bc0c5f 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -93,12 +93,14 @@
#include <sys/ioctl.h>
#ifndef QT_NO_SOUND
#include <sys/soundcard.h>
#endif
#include "qt_override_p.h"
+static bool useBigPixmaps = 0;
+
class HackWidget : public QWidget
{
public:
bool needsOk()
{ return (getWState() & WState_Reserved1 ); }
@@ -106,421 +108,428 @@ public:
{ return topData()->normalGeometry; };
};
class QPEApplicationData
{
public:
- QPEApplicationData ( )
- : presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ),
- notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ),
- keep_running( true ), qcopQok( false ), qpe_main_widget( 0 )
-
- {}
+ QPEApplicationData ( )
+ : presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ),
+ notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ),
+ keep_running( true ), qcopQok( false ),
+ fontFamily( "Vera" ), fontSize( 10 ), smallIconSize( 14 ),
+ bigIconSize( 32 ), qpe_main_widget( 0 )
+ {
+ Config cfg( "qpe" );
+ cfg.setGroup( "Appearance" );
+ useBigPixmaps = cfg.readBoolEntry( "useBigPixmaps", false );
+ fontFamily = cfg.readEntry( "FontFamily", "Vera" );
+ fontSize = cfg.readNumEntry( "FontSize", 10 );
+ smallIconSize = cfg.readNumEntry( "SmallIconSize", 14 );
+ bigIconSize = cfg.readNumEntry( "BigIconSize", 32 );
+ }
- int presstimer;
- QWidget* presswidget;
- QPoint presspos;
+ int presstimer;
+ QWidget* presswidget;
+ QPoint presspos;
- bool rightpressed : 1;
- bool kbgrabbed : 1;
- bool notbusysent : 1;
- bool preloaded : 1;
- bool forceshow : 1;
- bool nomaximize : 1;
- bool keep_running : 1;
- bool qcopQok : 1;
+ bool rightpressed : 1;
+ bool kbgrabbed : 1;
+ bool notbusysent : 1;
+ bool preloaded : 1;
+ bool forceshow : 1;
+ bool nomaximize : 1;
+ bool keep_running : 1;
+ bool qcopQok : 1;
+ QCString fontFamily;
+ int fontSize;
+ int smallIconSize;
+ int bigIconSize;
QStringList langs;
- 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;
- };
- QWidget* qpe_main_widget;
+ 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;
+ };
+ QWidget* qpe_main_widget;
QGuardedPtr<QWidget> lastraised;
- QQueue<QCopRec> qcopq;
+ QQueue<QCopRec> qcopq;
QString styleName;
- QString decorationName;
-
- void enqueueQCop( const QCString &ch, const QCString &msg,
- const QByteArray &data )
- {
- qcopq.enqueue( new QCopRec( ch, msg, data ) );
- }
- void sendQCopQ()
- {
+ QString decorationName;
+
+ void enqueueQCop( const QCString &ch, const QCString &msg,
+ const QByteArray &data )
+ {
+ qcopq.enqueue( new QCopRec( ch, msg, data ) );
+ }
+ void sendQCopQ()
+ {
if (!qcopQok )
return;
- QCopRec * r;
+ QCopRec * r;
while((r=qcopq.dequeue())) {
// remove from queue before sending...
// event loop can come around again before getting
// back from sendLocally
#ifndef QT_NO_COP
QCopChannel::sendLocally( r->channel, r->message, r->data );
#endif
- delete r;
+ delete r;
}
- }
-
- static void show_mx(QWidget* mw, bool nomaximize, QString &strName/* = QString::null */)
- {
- // ugly hack, remove that later after finding a sane solution
- // Addendum: Only Sharp currently has models with high resolution but (physically) small displays,
- // so this is only useful if QT_QWS_SIMPAD is NOT defined. E.g. SIMpad has 800x600 but has
- // a (physically) large enough display to use the small icons
-#if defined(OPIE_HIGH_RES_SMALL_PHY)
- if ( QPEApplication::desktop() ->width() >= 600 && ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") ) ) {
- ( ( QMainWindow* ) mw )->setUsesBigPixmaps( true );
+ }
+
+ static void show_mx(QWidget* mw, bool nomaximize, QString &strName)
+ {
+ if ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") )
+ {
+ ( ( QMainWindow* ) mw )->setUsesBigPixmaps( useBigPixmaps );
}
-#endif
+ QPoint p;
+ QSize s;
+ bool max;
+ if ( mw->isVisible() ) {
+ if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
+ mw->resize(s);
+ mw->move(p);
+ }
+ mw->raise();
+ } else {
- QPoint p;
- QSize s;
- bool max;
- if ( mw->isVisible() ) {
- if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
- mw->resize(s);
- mw->move(p);
- }
- mw->raise();
- } else {
-
- if ( mw->layout() && mw->inherits("QDialog") ) {
- if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
- mw->resize(s);
- mw->move(p);
-
- if ( max && !nomaximize ) {
- mw->showMaximized();
- } else {
- mw->show();
- }
- } else {
- qpe_show_dialog((QDialog*)mw,nomaximize);
- }
- } else {
- if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
- mw->resize(s);
- mw->move(p);
- } else { //no stored rectangle, make an estimation
- int x = (qApp->desktop()->width()-mw->frameGeometry().width())/2;
- int y = (qApp->desktop()->height()-mw->frameGeometry().height())/2;
- mw->move( QMAX(x,0), QMAX(y,0) );
+ if ( mw->layout() && mw->inherits("QDialog") ) {
+ if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
+ mw->resize(s);
+ mw->move(p);
+
+ if ( max && !nomaximize ) {
+ mw->showMaximized();
+ } else {
+ mw->show();
+ }
+ } else {
+ qpe_show_dialog((QDialog*)mw,nomaximize);
+ }
+ } else {
+ if ( read_widget_rect(strName, max, p, s) && validate_widget_size(mw, p, s) ) {
+ mw->resize(s);
+ mw->move(p);
+ } else { //no stored rectangle, make an estimation
+ int x = (qApp->desktop()->width()-mw->frameGeometry().width())/2;
+ int y = (qApp->desktop()->height()-mw->frameGeometry().height())/2;
+ mw->move( QMAX(x,0), QMAX(y,0) );
#ifdef Q_WS_QWS
- if ( !nomaximize )
- mw->showMaximized();
+ if ( !nomaximize )
+ mw->showMaximized();
#endif
- }
- if ( max && !nomaximize )
- mw->showMaximized();
- else
- mw->show();
- }
- }
- }
+ }
+ if ( max && !nomaximize )
+ mw->showMaximized();
+ else
+ mw->show();
+ }
+ }
+ }
static void qpe_show_dialog( QDialog* d, bool nomax )
{
QSize sh = d->sizeHint();
int w = QMAX(sh.width(),d->width());
int h = QMAX(sh.height(),d->height());
if ( d->parentWidget() && !d->parentWidget()->topLevelWidget()->isMaximized() )
- nomax = TRUE;
+ nomax = TRUE;
#ifndef Q_WS_QWS
- QSize s(qApp->desktop()->width(), qApp->desktop()->height() );
+ QSize s(qApp->desktop()->width(), qApp->desktop()->height() );
#else
- QSize s(qt_maxWindowRect.width(), qt_maxWindowRect.height() );
+ QSize s(qt_maxWindowRect.width(), qt_maxWindowRect.height() );
#endif
int maxX = s.width() - (d->frameGeometry().width() - d->geometry().width());
int maxY = s.height() - (d->frameGeometry().height() - d->geometry().height());
if ( (w >= maxX && h >= maxY) || ( (!nomax) && ( w > s.width()*3/4 || h > s.height()*3/4 ) ) ) {
- d->showMaximized();
+ d->showMaximized();
+ } else {
+ // try centering the dialog around its parent
+ QPoint p(0,0);
+ if ( d->parentWidget() ) {
+ QPoint pp = d->parentWidget()->mapToGlobal( QPoint(0,0) );
+ p = QPoint( pp.x() + d->parentWidget()->width()/2,
+ pp.y() + d->parentWidget()->height()/ 2 );
} else {
- // try centering the dialog around its parent
- QPoint p(0,0);
- if ( d->parentWidget() ) {
- QPoint pp = d->parentWidget()->mapToGlobal( QPoint(0,0) );
- p = QPoint( pp.x() + d->parentWidget()->width()/2,
- pp.y() + d->parentWidget()->height()/ 2 );
- } else {
- p = QPoint( maxX/2, maxY/2 );
- }
-
- p = QPoint( p.x() - w/2, p.y() - h/2 );
-// qDebug("p(x,y) is %d %d", p.x(), p.y() );
-
- if ( w >= maxX ) {
- if ( p.y() < 0 )
- p.setY(0);
- if ( p.y() + h > maxY )
- p.setY( maxY - h);
-
- d->resize(maxX, h);
- d->move(0, p.y() );
- } else if ( h >= maxY ) {
- if ( p.x() < 0 )
- p.setX(0);
- if ( p.x() + w > maxX )
- p.setX( maxX - w);
-
- d->resize(w, maxY);
- d->move(p.x(),0);
- } else {
- d->resize(w, h);
- }
-
- d->show();
+ p = QPoint( maxX/2, maxY/2 );
+ }
+
+ p = QPoint( p.x() - w/2, p.y() - h/2 );
+// qDebug("p(x,y) is %d %d", p.x(), p.y() );
+
+ if ( w >= maxX ) {
+ if ( p.y() < 0 )
+ p.setY(0);
+ if ( p.y() + h > maxY )
+ p.setY( maxY - h);
+
+ d->resize(maxX, h);
+ d->move(0, p.y() );
+ } else if ( h >= maxY ) {
+ if ( p.x() < 0 )
+ p.setX(0);
+ if ( p.x() + w > maxX )
+ p.setX( maxX - w);
+
+ d->resize(w, maxY);
+ d->move(p.x(),0);
+ } else {
+ d->resize(w, h);
+ }
+
+ d->show();
}
}
static bool read_widget_rect(const QString &app, bool &maximized, QPoint &p, QSize &s)
{
- maximized = TRUE;
- // 350 is the trigger in qwsdefaultdecoration for providing a resize button
- if ( qApp->desktop()->width() <= 350 )
- return FALSE;
+ maximized = TRUE;
+ // 350 is the trigger in qwsdefaultdecoration for providing a resize button
+ if ( qApp->desktop()->width() <= 350 )
+ return FALSE;
- Config cfg( "qpe" );
- cfg.setGroup("ApplicationPositions");
- QString str = cfg.readEntry( app, QString::null );
- QStringList l = QStringList::split(",", str);
+ Config cfg( "qpe" );
+ cfg.setGroup("ApplicationPositions");
+ QString str = cfg.readEntry( app, QString::null );
+ QStringList l = QStringList::split(",", str);
- if ( l.count() == 5) {
- p.setX( l[0].toInt() );
- p.setY( l[1].toInt() );
+ if ( l.count() == 5) {
+ p.setX( l[0].toInt() );
+ p.setY( l[1].toInt() );
- s.setWidth( l[2].toInt() );
- s.setHeight( l[3].toInt() );
+ s.setWidth( l[2].toInt() );
+ s.setHeight( l[3].toInt() );
- maximized = l[4].toInt();
+ maximized = l[4].toInt();
- return TRUE;
- }
+ return TRUE;
+ }
- return FALSE;
+ return FALSE;
}
- static bool validate_widget_size(const QWidget *w, QPoint &p, QSize &s)
+ static bool validate_widget_size(const QWidget *w, QPoint &p, QSize &s)
{
#ifndef Q_WS_QWS
- QRect qt_maxWindowRect = qApp->desktop()->geometry();
+ QRect qt_maxWindowRect = qApp->desktop()->geometry();
#endif
- int maxX = qt_maxWindowRect.width();
- int maxY = qt_maxWindowRect.height();
- int wWidth = s.width() + ( w->frameGeometry().width() - w->geometry().width() );
- int wHeight = s.height() + ( w->frameGeometry().height() - w->geometry().height() );
+ int maxX = qt_maxWindowRect.width();
+ int maxY = qt_maxWindowRect.height();
+ int wWidth = s.width() + ( w->frameGeometry().width() - w->geometry().width() );
+ int wHeight = s.height() + ( w->frameGeometry().height() - w->geometry().height() );
+
+ // total window size is not allowed to be larger than desktop window size
+ if ( ( wWidth >= maxX ) && ( wHeight >= maxY ) )
+ return FALSE;
+
+ if ( wWidth > maxX ) {
+ s.setWidth( maxX - (w->frameGeometry().width() - w->geometry().width() ) );
+ wWidth = maxX;
+ }
- // total window size is not allowed to be larger than desktop window size
- if ( ( wWidth >= maxX ) && ( wHeight >= maxY ) )
- return FALSE;
+ if ( wHeight > maxY ) {
+ s.setHeight( maxY - (w->frameGeometry().height() - w->geometry().height() ) );
+ wHeight = maxY;
+ }
- if ( wWidth > maxX ) {
- s.setWidth( maxX - (w->frameGeometry().width() - w->geometry().width() ) );
- wWidth = maxX;
- }
+ // any smaller than this and the maximize/close/help buttons will be overlapping
+ if ( wWidth < 80 || wHeight < 60 )
+ return FALSE;
- if ( wHeight > maxY ) {
- s.setHeight( maxY - (w->frameGeometry().height() - w->geometry().height() ) );
- wHeight = maxY;
- }
+ if ( p.x() < 0 )
+ p.setX(0);
+ if ( p.y() < 0 )
+ p.setY(0);
- // any smaller than this and the maximize/close/help buttons will be overlapping
- if ( wWidth < 80 || wHeight < 60 )
- return FALSE;
+ if ( p.x() + wWidth > maxX )
+ p.setX( maxX - wWidth );
+ if ( p.y() + wHeight > maxY )
+ p.setY( maxY - wHeight );
- if ( p.x() < 0 )
- p.setX(0);
- if ( p.y() < 0 )
- p.setY(0);
+ return TRUE;
+ }
- if ( p.x() + wWidth > maxX )
- p.setX( maxX - wWidth );
- if ( p.y() + wHeight > maxY )
- p.setY( maxY - wHeight );
+ static void store_widget_rect(QWidget *w, QString &app)
+ {
+ // 350 is the trigger in qwsdefaultdecoration for providing a resize button
+ if ( qApp->desktop()->width() <= 350 )
+ return;
+ // we use these to map the offset of geometry and pos. ( we can only use normalGeometry to
+ // get the non-maximized version, so we have to do it the hard way )
+ int offsetX = w->x() - w->geometry().left();
+ int offsetY = w->y() - w->geometry().top();
+
+ QRect r;
+ if ( w->isMaximized() )
+ r = ( (HackWidget *) w)->normalGeometry();
+ else
+ r = w->geometry();
+
+ // Stores the window placement as pos(), size() (due to the offset mapping)
+ Config cfg( "qpe" );
+ cfg.setGroup("ApplicationPositions");
+ QString s;
+ s.sprintf("%d,%d,%d,%d,%d", r.left() + offsetX, r.top() + offsetY, r.width(), r.height(), w->isMaximized() );
+ cfg.writeEntry( app, s );
+ }
- return TRUE;
+ 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;
}
- static void store_widget_rect(QWidget *w, QString &app)
+
+ void show(QWidget* mw, bool nomax)
{
- // 350 is the trigger in qwsdefaultdecoration for providing a resize button
- if ( qApp->desktop()->width() <= 350 )
- return;
- // we use these to map the offset of geometry and pos. ( we can only use normalGeometry to
- // get the non-maximized version, so we have to do it the hard way )
- int offsetX = w->x() - w->geometry().left();
- int offsetY = w->y() - w->geometry().top();
-
- QRect r;
- if ( w->isMaximized() )
- r = ( (HackWidget *) w)->normalGeometry();
- else
- r = w->geometry();
-
- // Stores the window placement as pos(), size() (due to the offset mapping)
- Config cfg( "qpe" );
- cfg.setGroup("ApplicationPositions");
- QString s;
- s.sprintf("%d,%d,%d,%d,%d", r.left() + offsetX, r.top() + offsetY, r.width(), r.height(), w->isMaximized() );
- cfg.writeEntry( app, s );
- }
-
- 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;
+ setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" );
+ nomaximize = nomax;
+ qpe_main_widget = mw;
qcopQok = TRUE;
#ifndef QT_NO_COP
- sendQCopQ();
+ sendQCopQ();
#endif
- if ( preloaded ) {
- if (forceshow)
- show_mx(mw, nomax, appName);
- }
- else if ( keep_running ) {
- show_mx(mw, nomax, appName);
- }
- }
-
- void loadTextCodecs()
- {
- QString path = QPEApplication::qpeDir() + "/plugins/textcodecs";
+ if ( preloaded ) {
+ if (forceshow)
+ show_mx(mw, nomax, appName);
+ }
+ else if ( keep_running ) {
+ show_mx(mw, nomax, appName);
+ }
+ }
+
+ void loadTextCodecs()
+ {
+ QString path = QPEApplication::qpeDir() + "/plugins/textcodecs";
#ifdef Q_OS_MACX
- QDir dir( path, "lib*.dylib" );
+ QDir dir( path, "lib*.dylib" );
#else
- QDir dir( path, "lib*.so" );
+ QDir dir( path, "lib*.so" );
#endif
- QStringList list;
- if ( dir. exists ( ))
- 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";
+ QStringList list;
+ if ( dir. exists ( ))
+ 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";
#ifdef Q_OS_MACX
- QDir dir( path, "lib*.dylib" );
+ QDir dir( path, "lib*.dylib" );
#else
- QDir dir( path, "lib*.so" );
+ QDir dir( path, "lib*.so" );
#endif
- QStringList list;
- if ( dir. exists ( ))
- 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;
- }
- }
- }
+ QStringList list;
+ if ( dir. exists ( ))
+ 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;
+ }
+ }
+ }
};
class ResourceMimeFactory : public QMimeSourceFactory
{
public:
ResourceMimeFactory() : resImage( 0 )
- {
- setFilePath( Global::helpPath() );
- setExtensionType( "html", "text/html;charset=UTF-8" );
- }
+ {
+ setFilePath( Global::helpPath() );
+ setExtensionType( "html", "text/html;charset=UTF-8" );
+ }
~ResourceMimeFactory() {
delete resImage;
}
- 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() ) {
+ 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() ) {
delete resImage;
resImage = new QImageDrag( img );
r = resImage;
}
- }
- while ( !r && sl > 0 );
- }
- return r;
- }
+ }
+ while ( !r && sl > 0 );
+ }
+ return r;
+ }
private:
mutable QImageDrag *resImage;
};
static int& hack(int& i)
{
@@ -534,99 +543,99 @@ static int& hack(int& i)
static int muted = 0;
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 );
+ switch ( t ) {
+ case 0: {
+ Config cfg( "qpe" );
+ cfg.setGroup( "Volume" );
+ if ( percent < 0 )
+ percent = cfg.readNumEntry( "VolumePercent", 50 );
#ifndef QT_NO_SOUND
- 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( SOUND_MIXER_VOLUME ), &vol );
- ::close( fd );
- }
+ 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( SOUND_MIXER_VOLUME ), &vol );
+ ::close( fd );
+ }
#endif
- }
- break;
- }
+ }
+ 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 );
+ switch ( t ) {
+ case 0: {
+ Config cfg( "qpe" );
+ cfg.setGroup( "Volume" );
+ if ( percent < 0 )
+ percent = cfg.readNumEntry( "Mic", 50 );
#ifndef QT_NO_SOUND
- 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 );
- }
+ 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 );
+ }
#endif
- }
- break;
- }
+ }
+ break;
+ }
}
static void setBass( int t = 0, int percent = -1 )
{
- switch ( t ) {
- case 0: {
- Config cfg( "qpe" );
- cfg.setGroup( "Volume" );
- if ( percent < 0 )
- percent = cfg.readNumEntry( "BassPercent", 50 );
+ switch ( t ) {
+ case 0: {
+ Config cfg( "qpe" );
+ cfg.setGroup( "Volume" );
+ if ( percent < 0 )
+ percent = cfg.readNumEntry( "BassPercent", 50 );
#ifndef QT_NO_SOUND
- int fd = 0;
- int bass = percent;
+ int fd = 0;
+ int bass = percent;
if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
- ioctl( fd, MIXER_WRITE( SOUND_MIXER_BASS ), &bass );
- ::close( fd );
- }
+ ioctl( fd, MIXER_WRITE( SOUND_MIXER_BASS ), &bass );
+ ::close( fd );
+ }
#endif
- }
- break;
- }
+ }
+ break;
+ }
}
static void setTreble( int t = 0, int percent = -1 )
{
- switch ( t ) {
- case 0: {
- Config cfg( "qpe" );
- cfg.setGroup( "Volume" );
- if ( percent < 0 )
- percent = cfg.readNumEntry( "TreblePercent", 50 );
+ switch ( t ) {
+ case 0: {
+ Config cfg( "qpe" );
+ cfg.setGroup( "Volume" );
+ if ( percent < 0 )
+ percent = cfg.readNumEntry( "TreblePercent", 50 );
#ifndef QT_NO_SOUND
- int fd = 0;
- int treble = percent;
- if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
- ioctl( fd, MIXER_WRITE( SOUND_MIXER_TREBLE ), &treble );
- ::close( fd );
- }
+ int fd = 0;
+ int treble = percent;
+ if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
+ ioctl( fd, MIXER_WRITE( SOUND_MIXER_TREBLE ), &treble );
+ ::close( fd );
+ }
#endif
- }
- break;
- }
+ }
+ break;
+ }
}
/**
\class QPEApplication
\brief The QPEApplication class implements various system services
@@ -728,25 +737,25 @@ void QPEApplication::processQCopFile()
QString qcopfn("/tmp/qcop-msg-");
qcopfn += d->appName; // append command name
QFile f(qcopfn);
if ( f.open(IO_ReadWrite) ) {
#ifndef Q_OS_WIN32
- flock(f.handle(), LOCK_EX);
+ flock(f.handle(), LOCK_EX);
#endif
- QDataStream ds(&f);
- QCString channel, message;
- QByteArray data;
- while(!ds.atEnd()) {
- ds >> channel >> message >> data;
- d->enqueueQCop(channel,message,data);
- }
- ::ftruncate(f.handle(), 0);
+ QDataStream ds(&f);
+ QCString channel, message;
+ QByteArray data;
+ while(!ds.atEnd()) {
+ ds >> channel >> message >> data;
+ d->enqueueQCop(channel,message,data);
+ }
+ ::ftruncate(f.handle(), 0);
#ifndef Q_OS_WIN32
- f.flush();
- flock(f.handle(), LOCK_UN);
+ f.flush();
+ flock(f.handle(), LOCK_UN);
#endif
}
#endif
}
@@ -784,145 +793,131 @@ void QPEApplication::processQCopFile()
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( hack(argc), argv, t ), pidChannel( 0 )
+ : QApplication( hack(argc), argv, t ), pidChannel( 0 )
{
- QPixmapCache::setCacheLimit(256); // sensible default for smaller devices.
-
- d = new QPEApplicationData;
- d->loadTextCodecs();
- d->loadImageCodecs();
- int dw = desktop() ->width();
-
- if ( dw < 200 ) {
- setFont( QFont( "vera", 8 ) );
- AppLnk::setSmallIconSize( 10 );
- AppLnk::setBigIconSize( 28 );
- }
-#if defined(OPIE_HIGH_RES_SMALL_PHY)
- else if ( dw > 600 ) {
- setFont( QFont( "vera", 16 ) );
- AppLnk::setSmallIconSize( 24 );
- AppLnk::setBigIconSize( 48 );
- }
-#endif
- else if ( dw > 200 ) {
- setFont( QFont( "vera", 10 ) );
- AppLnk::setSmallIconSize( 14 );
- AppLnk::setBigIconSize( 32 );
- }
+ QPixmapCache::setCacheLimit(256); // sensible default for smaller devices.
+
+ d = new QPEApplicationData;
+ d->loadTextCodecs();
+ d->loadImageCodecs();
+ int dw = desktop() ->width();
+
+ setFont( QFont( d->fontFamily, d->fontSize ) );
+ AppLnk::setSmallIconSize( d->smallIconSize );
+ AppLnk::setBigIconSize( d->bigIconSize );
- QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory );
+ QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory );
- connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) );
+ connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) );
- sysChannel = new QCopChannel( "QPE/System", this );
- connect( sysChannel, SIGNAL( received(const QCString&,const QByteArray&) ),
- this, SLOT( systemMessage(const QCString&,const QByteArray&) ) );
+ sysChannel = new QCopChannel( "QPE/System", this );
+ connect( sysChannel, SIGNAL( received(const QCString&,const QByteArray&) ),
+ this, SLOT( systemMessage(const QCString&,const QByteArray&) ) );
/* COde now in initapp */
#if 0
#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 );
- }
-
-
-
- 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 );
+ }
+
+
+
+ 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
#else
initApp( argc, argv );
#endif
- // qwsSetDecoration( new QPEDecoration() );
+ // qwsSetDecoration( new QPEDecoration() );
#ifndef QT_NO_TRANSLATION
- d->langs = Global::languageList();
- for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it ) {
- QString lang = *it;
+ d->langs = Global::languageList();
+ for ( QStringList::ConstIterator it = d->langs.begin(); it != d->langs.end(); ++it ) {
+ QString lang = *it;
installTranslation( lang + "/libopie.qm");
- installTranslation( lang + "/libqpe.qm" );
- installTranslation( lang + "/" + d->appName + ".qm" );
+ installTranslation( lang + "/libqpe.qm" );
+ installTranslation( lang + "/" + d->appName + ".qm" );
- //###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 );
}
#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
}
#ifdef QTOPIA_INTERNAL_INITAPP
void QPEApplication::initApp( int argc, char **argv )
@@ -941,32 +936,32 @@ void QPEApplication::initApp( int argc, char **argv )
qt_fbdpy->setIdentity( channel ); // In Qt/E 2.3.6
#endif
channel = "QPE/Application/" + channel;
pidChannel = new QCopChannel( channel, this);
connect( pidChannel, SIGNAL(received(const QCString&,const QByteArray&)),
- this, SLOT(pidMessage(const QCString&,const QByteArray&)));
+ this, SLOT(pidMessage(const QCString&,const QByteArray&)));
processQCopFile();
d->keep_running = d->qcopq.isEmpty();
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;
- }
+ 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);
/* install translation here */
@@ -976,28 +971,28 @@ void QPEApplication::initApp( int argc, char **argv )
#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).
@@ -1010,281 +1005,281 @@ QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w )
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
}
/*!
\internal
*/
#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 ) {
- 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();
- }
- }
-
- }
- else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) {
- // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... ))
- // but we cannot access libopie function within libqpe :(
-
- QWidget * active = activeWindow ( );
- if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) {
- if ( d-> kbgrabbed ) { // we grabbed the keyboard
- QChar ch ( ke-> simpleData.unicode );
- QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease,
- ke-> simpleData.keycode,
- ch. latin1 ( ),
- ke-> simpleData.modifiers,
- QString ( ch ),
- ke-> simpleData.is_auto_repeat, 1 );
-
- QObject *which = QWidget::keyboardGrabber ( );
- if ( !which )
- which = QApplication::focusWidget ( );
- if ( !which )
- which = QApplication::activeWindow ( );
- if ( !which )
- which = qApp;
-
- QApplication::sendEvent ( which, &qke );
- }
- else { // we didn't grab the keyboard, so send the event to the launcher
- QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" );
- e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat );
- }
- }
- return true;
- }
- }
- if ( e->type == QWSEvent::Focus ) {
- QWSFocusEvent * fe = ( QWSFocusEvent* ) e;
- if ( !fe->simpleData.get_focus ) {
- QWidget * active = activeWindow();
- while ( active && active->isPopup() ) {
- active->close();
- active = activeWindow();
- }
- }
- else {
- // make sure our modal widget is ALWAYS on top
- QWidget *topm = activeModalWidget();
- if ( topm && static_cast<int>( topm->winId() ) != fe->simpleData.window) {
- topm->raise();
- }
- }
- 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 ( !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 ) {
+ 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();
+ }
+ }
+
+ }
+ else if ( ke->simpleData.keycode >= Qt::Key_F1 && ke->simpleData.keycode <= Qt::Key_F29 ) {
+ // this should be if ( ODevice::inst ( )-> buttonForKeycode ( ... ))
+ // but we cannot access libopie function within libqpe :(
+
+ QWidget * active = activeWindow ( );
+ if ( active && ((int) active-> winId ( ) == ke-> simpleData.window )) {
+ if ( d-> kbgrabbed ) { // we grabbed the keyboard
+ QChar ch ( ke-> simpleData.unicode );
+ QKeyEvent qke ( ke-> simpleData. is_press ? QEvent::KeyPress : QEvent::KeyRelease,
+ ke-> simpleData.keycode,
+ ch. latin1 ( ),
+ ke-> simpleData.modifiers,
+ QString ( ch ),
+ ke-> simpleData.is_auto_repeat, 1 );
+
+ QObject *which = QWidget::keyboardGrabber ( );
+ if ( !which )
+ which = QApplication::focusWidget ( );
+ if ( !which )
+ which = QApplication::activeWindow ( );
+ if ( !which )
+ which = qApp;
+
+ QApplication::sendEvent ( which, &qke );
+ }
+ else { // we didn't grab the keyboard, so send the event to the launcher
+ QCopEnvelope e ( "QPE/Launcher", "deviceButton(int,int,int)" );
+ e << int( ke-> simpleData.keycode ) << int( ke-> simpleData. is_press ) << int( ke-> simpleData.is_auto_repeat );
+ }
+ }
+ return true;
+ }
+ }
+ if ( e->type == QWSEvent::Focus ) {
+ QWSFocusEvent * fe = ( QWSFocusEvent* ) e;
+ if ( !fe->simpleData.get_focus ) {
+ QWidget * active = activeWindow();
+ while ( active && active->isPopup() ) {
+ active->close();
+ active = activeWindow();
+ }
+ }
+ else {
+ // make sure our modal widget is ALWAYS on top
+ QWidget *topm = activeModalWidget();
+ if ( topm && static_cast<int>( topm->winId() ) != fe->simpleData.window) {
+ topm->raise();
+ }
+ }
+ 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
/*!
Destroys the QPEApplication.
*/
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;
}
/*!
Returns <tt>$OPIEDIR/</tt>.
*/
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( "../" );
}
/*!
Returns the user's current Document directory. There is a trailing "/".
.. well, it does now,, and there's no trailing '/'
*/
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;
/*!
\internal
*/
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;
}
/*!
\internal
*/
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( "Rot", r );
- }
- 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( "Rot", r );
+ }
+ else {
#ifndef QT_NO_COP
- { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" );
- e << r;
- }
+ { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" );
+ e << r;
+ }
#endif
- }
+ }
}
#include <qgfx_qws.h>
#include <qwindowsystem_qws.h>
extern void qws_clearLoadedFonts();
@@ -1321,272 +1316,272 @@ void QPEApplication::reset() {
extern bool qt_left_hand_scrollbars __attribute__(( weak ));
/*!
\internal
*/
void QPEApplication::applyStyle()
{
- Config config( "qpe" );
- config.setGroup( "Appearance" );
+ Config config( "qpe" );
+ config.setGroup( "Appearance" );
#if QT_VERSION > 233
#if !defined(OPIE_NO_OVERRIDE_QT)
- // don't block ourselves ...
- Opie::force_appearance = 0;
-
- static QString appname = Opie::binaryName ( );
-
- QStringList ex = config. readListEntry ( "NoStyle", ';' );
- int nostyle = 0;
- for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
- if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
- nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
- break;
- }
- }
+ // don't block ourselves ...
+ Opie::force_appearance = 0;
+
+ static QString appname = Opie::binaryName ( );
+
+ QStringList ex = config. readListEntry ( "NoStyle", ';' );
+ int nostyle = 0;
+ for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
+ if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
+ nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
+ break;
+ }
+ }
#else
int nostyle = 0;
#endif
- // Widget style
- QString style = config.readEntry( "Style", "FlatStyle" );
+ // Widget style
+ QString style = config.readEntry( "Style", "FlatStyle" );
- // don't set a custom style
- if ( nostyle & Opie::Force_Style )
- style = "FlatStyle";
+ // don't set a custom style
+ if ( nostyle & Opie::Force_Style )
+ style = "FlatStyle";
- internalSetStyle ( style );
+ internalSetStyle ( style );
- // Colors - from /etc/colors/Liquid.scheme
- QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) );
- QColor btncolor( config.readEntry( "Button", "#96c8fa" ) );
- QPalette pal( btncolor, bgcolor );
- QString color = config.readEntry( "Highlight", "#73adef" );
- 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 ) );
+ // Colors - from /etc/colors/Liquid.scheme
+ QColor bgcolor( config.readEntry( "Background", "#E0E0E0" ) );
+ QColor btncolor( config.readEntry( "Button", "#96c8fa" ) );
+ QPalette pal( btncolor, bgcolor );
+ QString color = config.readEntry( "Highlight", "#73adef" );
+ 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() );
+ pal.setColor( QPalette::Disabled, QColorGroup::Text,
+ pal.color( QPalette::Active, QColorGroup::Background ).dark() );
- setPalette( pal, TRUE );
+ setPalette( pal, TRUE );
// Set the ScrollBar on the 'right' side but only if the weak symbol is present
if (&qt_left_hand_scrollbars )
qt_left_hand_scrollbars = config.readBoolEntry( "LeftHand", false );
- // Window Decoration
- QString dec = config.readEntry( "Decoration", "Flat" );
+ // Window Decoration
+ QString dec = config.readEntry( "Decoration", "Flat" );
- // don't set a custom deco
- if ( nostyle & Opie::Force_Decoration )
- dec = "";
+ // don't set a custom deco
+ if ( nostyle & Opie::Force_Decoration )
+ dec = "";
- if ( dec != d->decorationName ) {
- qwsSetDecoration( new QPEDecoration( dec ) );
- d->decorationName = dec;
- }
+ 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() );
+ // Font
+ QString ff = config.readEntry( "FontFamily", font().family() );
+ int fs = config.readNumEntry( "FontSize", font().pointSize() );
- // don't set a custom font
- if ( nostyle & Opie::Force_Font ) {
- ff = "Vera";
- fs = 10;
- }
+ // don't set a custom font
+ if ( nostyle & Opie::Force_Font ) {
+ ff = "Vera";
+ fs = 10;
+ }
- setFont ( QFont ( ff, fs ), true );
+ setFont ( QFont ( ff, fs ), true );
#if !defined(OPIE_NO_OVERRIDE_QT)
- // revert to global blocking policy ...
- Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None;
- Opie::force_appearance &= ~nostyle;
+ // revert to global blocking policy ...
+ Opie::force_appearance = config. readBoolEntry ( "ForceStyle", false ) ? Opie::Force_All : Opie::Force_None;
+ Opie::force_appearance &= ~nostyle;
#endif
#endif
}
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 == "toggleApplicationMenu()" ) {
- QWidget *active = activeWindow ( );
-
- if ( active ) {
- QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( );
- bool oldactive = man-> isActive ( );
-
- man-> setActive( !man-> isActive() );
-
- if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu
- QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" );
- }
- }
- }
- else if ( msg == "setDefaultRotation(int)" ) {
- if ( type() == GuiServer ) {
- int r;
- stream >> r;
- setDefaultRotation( r );
- }
- }
- else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net>
+ QDataStream stream( data, IO_ReadOnly );
+ if ( msg == "applyStyle()" ) {
+ applyStyle();
+ }
+ else if ( msg == "toggleApplicationMenu()" ) {
+ QWidget *active = activeWindow ( );
+
+ if ( active ) {
+ QPEMenuToolFocusManager *man = QPEMenuToolFocusManager::manager ( );
+ bool oldactive = man-> isActive ( );
+
+ man-> setActive( !man-> isActive() );
+
+ if ( !oldactive && !man-> isActive ( )) { // no menubar to toggle -> try O-Menu
+ QCopEnvelope e ( "QPE/TaskBar", "toggleStartMenu()" );
+ }
+ }
+ }
+ else if ( msg == "setDefaultRotation(int)" ) {
+ if ( type() == GuiServer ) {
+ int r;
+ stream >> r;
+ setDefaultRotation( r );
+ }
+ }
+ else if ( msg == "setCurrentMode(int,int,int)" ) { // Added: 2003-06-11 by Tim Ansell <mithro@mithis.net>
if ( type() == GuiServer ) {
- int x, y, depth;
- stream >> x;
- stream >> y;
- stream >> depth;
- setCurrentMode( x, y, depth );
+ int x, y, depth;
+ stream >> x;
+ stream >> y;
+ stream >> depth;
+ setCurrentMode( x, y, depth );
}
- }
- else if ( msg == "reset()" ) {
+ }
+ else if ( msg == "reset()" ) {
if ( type() != GuiServer )
reset();
- }
- else if ( msg == "setCurrentRotation(int)" ) {
- int r;
- stream >> r;
- setCurrentRotation( 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 == "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 == "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 == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
- int t, v;
- stream >> t >> v;
- setBass( t, v );
- }
- else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
- setBass();
- }
- else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
- int t, v;
- stream >> t >> v;
- setTreble( t, v );
- }
- else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
- setTreble();
- } else if ( msg == "getMarkedText()" ) {
- if ( type() == GuiServer ) {
- const ushort unicode = 'C'-'@';
- const int scan = Key_C;
- qwsServer->processKeyEvent( unicode, scan, ControlButton, TRUE, FALSE );
- qwsServer->processKeyEvent( unicode, scan, ControlButton, FALSE, FALSE );
- }
+ }
+ else if ( msg == "setCurrentRotation(int)" ) {
+ int r;
+ stream >> r;
+ setCurrentRotation( 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 == "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 == "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 == "setBass(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
+ int t, v;
+ stream >> t >> v;
+ setBass( t, v );
+ }
+ else if ( msg == "bassChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
+ setBass();
+ }
+ else if ( msg == "setTreble(int,int)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
+ int t, v;
+ stream >> t >> v;
+ setTreble( t, v );
+ }
+ else if ( msg == "trebleChange(bool)" ) { // Added: 2002-12-13 by Maximilian Reiss <harlekin@handhelds.org>
+ setTreble();
+ } else if ( msg == "getMarkedText()" ) {
+ if ( type() == GuiServer ) {
+ const ushort unicode = 'C'-'@';
+ const int scan = Key_C;
+ qwsServer->processKeyEvent( unicode, scan, ControlButton, TRUE, FALSE );
+ qwsServer->processKeyEvent( unicode, scan, ControlButton, FALSE, FALSE );
+ }
} else if ( msg == "newChannel(QString)") {
- QString myChannel = "QPE/Application/" + d->appName;
- QString channel;
- stream >> channel;
- if (channel == myChannel) {
- processQCopFile();
- d->sendQCopQ();
- }
+ QString myChannel = "QPE/Application/" + d->appName;
+ QString channel;
+ stream >> channel;
+ if (channel == myChannel) {
+ processQCopFile();
+ d->sendQCopQ();
+ }
}
#endif
}
@@ -1603,132 +1598,132 @@ bool QPEApplication::raiseAppropriateWindow()
// 1. Raise the main widget
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..
+ if ( top->isVisible() )
+ r = TRUE;
+ else if (d->preloaded) {
+ // We are preloaded and not visible.. pretend we just started..
#ifndef QT_NO_COP
- QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
- e << d->appName;
+ QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
+ e << d->appName;
#endif
- }
+ }
- d->show_mx(top,d->nomaximize, d->appName);
- top->raise();
+ d->show_mx(top,d->nomaximize, d->appName);
+ top->raise();
}
QWidget *topm = activeModalWidget();
// 2. Raise any parentless widgets (except top and topm, as they
// are raised before and after this loop). Order from most
// recently raised as deepest to least recently as top, so
// that repeated calls cycle through widgets.
QWidgetList *list = topLevelWidgets();
if ( list ) {
- bool foundlast = FALSE;
- QWidget* topsub = 0;
- if ( d->lastraised ) {
- for (QWidget* w = list->first(); w; w = list->next()) {
- if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
- if ( w == d->lastraised )
- foundlast = TRUE;
- if ( foundlast ) {
- w->raise();
- topsub = w;
- }
- }
- }
- }
- for (QWidget* w = list->first(); w; w = list->next()) {
- if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
- if ( w == d->lastraised )
- break;
- w->raise();
- topsub = w;
- }
- }
- d->lastraised = topsub;
- delete list;
+ bool foundlast = FALSE;
+ QWidget* topsub = 0;
+ if ( d->lastraised ) {
+ for (QWidget* w = list->first(); w; w = list->next()) {
+ if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
+ if ( w == d->lastraised )
+ foundlast = TRUE;
+ if ( foundlast ) {
+ w->raise();
+ topsub = w;
+ }
+ }
+ }
+ }
+ for (QWidget* w = list->first(); w; w = list->next()) {
+ if ( !w->parentWidget() && w != topm && w->isVisible() && !w->isDesktop() ) {
+ if ( w == d->lastraised )
+ break;
+ w->raise();
+ topsub = w;
+ }
+ }
+ d->lastraised = topsub;
+ delete list;
}
// 3. Raise the active modal widget.
if ( topm ) {
- topm->show();
- topm->raise();
- // If we haven't already handled the fastAppShowing message
- if (!top && d->preloaded) {
+ topm->show();
+ topm->raise();
+ // If we haven't already handled the fastAppShowing message
+ if (!top && d->preloaded) {
#ifndef QT_NO_COP
- QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
- e << d->appName;
+ QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
+ e << d->appName;
#endif
- }
- r = FALSE;
+ }
+ 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 == "QPEProcessQCop()" ) {
+ 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 == "QPEProcessQCop()" ) {
processQCopFile();
d->sendQCopQ();
}else
{
bool p = d->keep_running;
d->keep_running = FALSE;
@@ -1743,26 +1738,26 @@ void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
e << d->appName;
#endif
}
}
if ( p )
d->keep_running = p;
- }
+ }
#endif
}
/*!
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 )
{
-// setMainWidget(mw); this breaks FastLoading because lastWindowClose() would quit
+// setMainWidget(mw); this breaks FastLoading because lastWindowClose() would quit
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.
@@ -1773,18 +1768,18 @@ void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
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]) );
-// setMainWidget(mw); see above
- d->show(mw, nomaximize );
+// setMainWidget(mw); see above
+ d->show(mw, nomaximize );
}
/*!
If an application is started via a \link qcop.html QCop\endlink
message, the application will process the \link qcop.html
@@ -1794,176 +1789,176 @@ void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
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;
}
/*!
\internal
*/
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/";
+ else {
+ QStyle *sty = 0;
+ QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/";
#ifdef Q_OS_MACX
- if ( style. find ( ".dylib" ) > 0 )
- path += style;
- else
- path = path + "lib" + style. lower ( ) + ".dylib"; // compatibility
+ if ( style. find ( ".dylib" ) > 0 )
+ path += style;
+ else
+ path = path + "lib" + style. lower ( ) + ".dylib"; // compatibility
#else
- if ( style. find ( ".so" ) > 0 )
- path += style;
- else
- path = path + "lib" + style. lower ( ) + ".so"; // compatibility
+ if ( style. find ( ".so" ) > 0 )
+ path += style;
+ else
+ path = path + "lib" + style. lower ( ) + ".so"; // compatibility
#endif
- 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 LightStyle ( ));
- }
- }
+ 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 LightStyle ( ));
+ }
+ }
#endif
}
/*!
\internal
*/
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
}
/*!
\internal
*/
void QPEApplication::shutdown()
{
- // Implement in server's QPEApplication subclass
+ // Implement in server's QPEApplication subclass
}
/*!
\internal
*/
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
@@ -1979,139 +1974,139 @@ QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w )
\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 );
+ }
}
/*!
\reimp
*/
bool QPEApplication::eventFilter( QObject *o, QEvent *e )
{
if ( !o->isWidgetType() )
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 ) {
+ 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 ) {
if (!d->presstimer )
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;
+ 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;
}
/*!
\reimp
*/
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;
}
/*!
\internal
*/
bool QPEApplication::keyboardGrabbed() const
{
- return d->kbgrabbed;
+ return d->kbgrabbed;
}
/*!
Reverses the effect of grabKeyboard(). This is called automatically
on program exit.
*/
void QPEApplication::ungrabKeyboard()
{
- ((QPEApplication *) qApp )-> d-> kbgrabbed = false;
+ ((QPEApplication *) qApp )-> d-> kbgrabbed = false;
}
/*!
Grabs the physical keyboard keys, e.g. the application's launching
keys. Instead of launching applications when these keys are pressed
the signals emitted are sent to this application instead. Some games
@@ -2119,63 +2114,63 @@ void QPEApplication::ungrabKeyboard()
easier.
\sa ungrabKeyboard()
*/
void QPEApplication::grabKeyboard()
{
- ((QPEApplication *) qApp )-> d-> kbgrabbed = true;
+ ((QPEApplication *) qApp )-> d-> kbgrabbed = true;
}
/*!
\reimp
*/
int QPEApplication::exec()
{
d->qcopQok = true;
#ifndef QT_NO_COP
- d->sendQCopQ();
+ d->sendQCopQ();
if ( !d->keep_running )
processEvents(); // we may have received QCop messages in the meantime.
#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;
}
/*!
\internal
External request for application to quit. Quits if possible without
loosing state.
*/
void QPEApplication::tryQuit()
{
- if ( activeModalWidget() )
- return ; // Inside modal loop or konsole. Too hard to save state.
+ if ( activeModalWidget() )
+ 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
if ( d->keep_running )
- d->store_widget_rect(d->qpe_main_widget, d->appName);
- processEvents();
+ d->store_widget_rect(d->qpe_main_widget, d->appName);
+ processEvents();
- quit();
+ quit();
}
/*!
\internal
*/
void QPEApplication::installTranslation( const QString& baseName ) {
@@ -2193,28 +2188,28 @@ void QPEApplication::installTranslation( const QString& baseName ) {
hiding the window. If not it means quitting the application.
As this is user initiated we don't need to check state.
*/
void QPEApplication::hideOrQuit()
{
if ( d->keep_running )
- d->store_widget_rect(d->qpe_main_widget, d->appName);
- processEvents();
+ d->store_widget_rect(d->qpe_main_widget, d->appName);
+ 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 (__GNUC__ > 2 )
extern "C" void __cxa_pure_virtual();
void __cxa_pure_virtual()
@@ -2233,61 +2228,61 @@ void __cxa_pure_virtual()
// completely useless implementations of builtin new and delete that
// use about 50% of your CPU. Here we revert to the simple libc
// functions.
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
#if ( QT_VERSION <= 230 ) && !defined(SINGLE_APP)
#include <qwidgetlist.h>
#ifdef QWS
#include <qgfx_qws.h>
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