summaryrefslogtreecommitdiff
path: root/library/qpeapplication.cpp
Side-by-side diff
Diffstat (limited to 'library/qpeapplication.cpp') (more/less context) (show whitespace changes)
-rw-r--r--library/qpeapplication.cpp322
1 files changed, 230 insertions, 92 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index dff8235..187a7e2 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -61,23 +61,23 @@
#define FBIOBLANK 0x4611
#include <qsignal.h>
#include "qpeapplication.h"
#include "qpestyle.h"
+#include "styleinterface.h"
#if QT_VERSION >= 300
#include <qstylefactory.h>
#else
#include <qplatinumstyle.h>
#include <qwindowsstyle.h>
#include <qmotifstyle.h>
#include <qmotifplusstyle.h>
#include "lightstyle.h"
#include <qpe/qlibrary.h>
-#include <dlfcn.h>
#endif
#include "global.h"
#include "resource.h"
#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
#include "qutfcodec.h"
#endif
@@ -102,13 +102,14 @@
#include <sys/types.h>
#include <sys/stat.h>
#endif
#include <stdlib.h>
-class QPEApplicationData {
+class QPEApplicationData
+{
public:
QPEApplicationData() : presstimer(0), presswidget(0), rightpressed(FALSE),
kbgrabber(0), kbregrab(FALSE), notbusysent(FALSE), preloaded(FALSE),
forceshow(FALSE), nomaximize(FALSE), qpe_main_widget(0),
keep_running(TRUE)
{
@@ -120,16 +121,18 @@ public:
QPoint presspos;
bool rightpressed;
int kbgrabber;
bool kbregrab;
bool notbusysent;
QString appName;
- struct QCopRec {
+ struct QCopRec
+ {
QCopRec(const QCString &ch, const QCString &msg,
const QByteArray &d) :
- channel(ch), message(msg), data(d) { }
+ channel( ch ), message( msg ), data( d )
+ { }
QCString channel;
QCString message;
QByteArray data;
};
bool preloaded;
@@ -150,13 +153,14 @@ public:
for (QListIterator<QCopRec> it(qcopq); (r=it.current()); ++it)
QCopChannel::sendLocally(r->channel,r->message,r->data);
qcopq.clear();
}
};
-class ResourceMimeFactory : public QMimeSourceFactory {
+class ResourceMimeFactory : public QMimeSourceFactory
+{
public:
ResourceMimeFactory()
{
setFilePath( Global::helpPath() );
setExtensionType("html","text/html;charset=UTF-8");
}
@@ -172,13 +176,14 @@ public:
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);
+ }
+ while ( !r && sl > 0 );
}
return r;
}
};
static int muted=0;
@@ -197,13 +202,14 @@ static void setVolume(int t=0, int percent=-1)
int vol = muted ? 0 : percent;
// set both channels to same volume
vol |= vol << 8;
ioctl(fd, MIXER_WRITE(0), &vol);
::close(fd);
}
- } break;
+ }
+ break;
}
}
static void setMic(int t=0, int percent=-1)
{
switch (t) {
@@ -216,35 +222,39 @@ static void setMic(int t=0, int percent=-1)
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;
+ }
+ break;
}
}
int qpe_sysBrightnessSteps()
{
#if defined(QT_QWS_IPAQ)
return 255;
#elif defined(QT_QWS_EBX)
+
return 4;
#else
+
return 255; // ?
#endif
}
static int& hack(int& i)
{
#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
// These should be created, but aren't in Qt 2.3.0
(void)new QUtf8Codec;
(void)new QUtf16Codec;
#endif
+
return i;
}
static bool forced_off = FALSE;
static int curbl=-1;
@@ -283,36 +293,44 @@ static void setBacklight(int bright)
if ( QFile::exists("/usr/bin/bl") ) {
QString cmd = "/usr/bin/bl 1 ";
cmd += bright<=0 ? "0 " : "1 ";
cmd += QString::number(bright);
system(cmd.latin1());
#if defined(QT_QWS_EBX)
- } else if ( QFile::exists("/dev/fl") ) {
+
+ }
+ else if ( QFile::exists( "/dev/fl" ) ) {
#define FL_IOCTL_STEP_CONTRAST 100
int fd = open("/dev/fl", O_WRONLY);
if (fd >= 0 ) {
int steps = qpe_sysBrightnessSteps();
int bl = ( bright * steps + 127 ) / 255;
- if ( bright && !bl ) bl = 1;
+ if ( bright && !bl )
+ bl = 1;
bl = ioctl(fd, FL_IOCTL_STEP_CONTRAST, bl);
close(fd);
}
}
#elif defined(QT_QWS_IPAQ)
- } else if ( QFile::exists("/dev/ts") || QFile::exists("/dev/h3600_ts") ) {
+
+ }
+ else if ( QFile::exists( "/dev/ts" ) || QFile::exists( "/dev/h3600_ts" ) )
+ {
typedef struct {
unsigned char mode;
unsigned char pwr;
unsigned char brightness;
- } FLITE_IN;
+ }
+ FLITE_IN;
# ifndef FLITE_ON
# ifndef _LINUX_IOCTL_H
# include <linux/ioctl.h>
# endif
# define FLITE_ON _IOW('f', 7, FLITE_IN)
# endif
+
int fd;
if ( QFile::exists("/dev/ts") )
fd = open("/dev/ts", O_WRONLY);
else
fd = open("/dev/h3600_ts", O_WRONLY);
if (fd >= 0 ) {
@@ -326,13 +344,15 @@ static void setBacklight(int bright)
}
#endif
#endif
curbl = bright;
}
-void qpe_setBacklight(int bright) { setBacklight(bright); }
+void qpe_setBacklight( int bright ) {
+ setBacklight( bright );
+}
static bool dim_on = FALSE;
static bool lightoff_on = FALSE;
static int disable_suspend = 100;
static bool powerOnline()
@@ -355,21 +375,28 @@ public:
{
int fd;
LcdOn = TRUE;
// Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off)
fd=open("/dev/fb0",O_RDWR);
- if (fd != -1) { ioctl(fd,FBIOBLANK,VESA_NO_BLANKING); close(fd); }
+ if ( fd != -1 ) {
+ ioctl( fd, FBIOBLANK, VESA_NO_BLANKING );
+ close( fd );
+ }
}
void restore()
{
if (!LcdOn) // We must have turned it off
{
int fd;
fd=open("/dev/fb0",O_RDWR);
- if (fd != -1) { ioctl(fd,FBIOBLANK,VESA_NO_BLANKING); close(fd); }
+ if ( fd != -1 )
+ {
+ ioctl( fd, FBIOBLANK, VESA_NO_BLANKING );
+ close( fd );
+ }
}
setBacklight(-1);
}
bool save(int level)
{
int fd;
@@ -391,13 +418,17 @@ public:
case 2:
Config config( "qpe" );
config.setGroup( "Screensaver" );
if (config.readNumEntry("LcdOffOnly",0) != 0) // We're only turning off the LCD
{
fd=open("/dev/fb0",O_RDWR);
- if (fd != -1) { ioctl(fd,FBIOBLANK,VESA_POWERDOWN); close(fd); }
+ if ( fd != -1 )
+ {
+ ioctl( fd, FBIOBLANK, VESA_POWERDOWN );
+ close( fd );
+ }
LcdOn = FALSE;
}
else // We're going to suspend the whole machine
{
if ( disable_suspend > 2 && !powerOnline() && !networkOnline() ) {
QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE );
@@ -569,13 +600,14 @@ QPEApplication::QPEApplication( int& argc, char **argv, Type t )
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 ) {
+ }
+ else if ( qstrcmp( argv[ a ], "-preload-show" ) == 0 ) {
argv[a] = argv[a+1];
a++;
d->preloaded = TRUE;
d->forceshow = TRUE;
argc-=1;
}
@@ -586,12 +618,13 @@ QPEApplication::QPEApplication( int& argc, char **argv, Type t )
#endif
qwsSetDecoration( new QPEDecoration() );
#ifndef QT_NO_TRANSLATION
+
QStringList langs = Global::languageList();
for (QStringList::ConstIterator it = langs.begin(); it!=langs.end(); ++it) {
QString lang = *it;
QTranslator * trans;
QString tfn;
@@ -685,23 +718,31 @@ QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget* w )
\sa inputMethodHint()
*/
void QPEApplication::setInputMethodHint( QWidget* w, InputMethodHint mode )
{
createInputMethodDict();
if ( mode == Normal ) {
- inputMethodDict->remove(w);
- } else {
+ inputMethodDict->remove
+ ( w );
+ }
+ else {
inputMethodDict->insert(w,(void*)mode);
}
}
class HackDialog : public QDialog
{
public:
- void acceptIt() { accept(); }
- void rejectIt() { reject(); }
+ void acceptIt()
+ {
+ accept();
+ }
+ void rejectIt()
+ {
+ reject();
+ }
};
void QPEApplication::mapToDefaultAction( QWSKeyEvent *ke, int key )
{
// specialised actions for certain widgets. May want to
@@ -718,13 +759,15 @@ void QPEApplication::mapToDefaultAction( QWSKeyEvent *ke, int key )
}
class HackWidget : public QWidget
{
public:
bool needsOk()
- { return (getWState() & WState_Reserved1 ); }
+ {
+ return ( getWState() & WState_Reserved1 );
+ }
};
/*!
\internal
*/
bool QPEApplication::qwsEventFilter( QWSEvent *e )
@@ -761,48 +804,54 @@ bool QPEApplication::qwsEventFilter( QWSEvent *e )
if ( popup )
popup->close();
if ( active->inherits( "QDialog" ) ) {
HackDialog *d = (HackDialog *)active;
d->acceptIt();
return TRUE;
- } else if ( ((HackWidget *)active)->needsOk() ) {
+ }
+ else if ( ( ( HackWidget * ) active ) ->needsOk() ) {
QSignal s;
s.connect( active, SLOT( accept() ) );
s.activate();
- } else {
+ }
+ else {
// do the same as with the select key: Map to the default action of the widget:
mapToDefaultAction( ke, Qt::Key_Return );
}
}
}
- } else if ( ke->simpleData.keycode == Qt::Key_F30 ) {
+ }
+ else if ( ke->simpleData.keycode == Qt::Key_F30 ) {
// Use special "select" key to do whatever default action a widget has
mapToDefaultAction( ke, Qt::Key_Space );
- } else if ( ke->simpleData.keycode == Qt::Key_Escape &&
+ }
+ else if ( ke->simpleData.keycode == Qt::Key_Escape &&
ke->simpleData.is_press ) {
// Escape key closes app if focus on toplevel
QWidget *active = activeWindow();
if ( active && active->testWFlags( WType_TopLevel ) &&
(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 ) {
+ }
+ 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;
#endif
+
}
if ( e->type == QWSEvent::Focus ) {
QWSFocusEvent *fe = (QWSFocusEvent*)e;
QWidget* nfw = QWidget::find(e->window());
if ( !fe->simpleData.get_focus ) {
QWidget *active = activeWindow();
@@ -811,13 +860,14 @@ bool QPEApplication::qwsEventFilter( QWSEvent *e )
active = activeWindow();
}
if ( !nfw && d->kbgrabber == 2 ) {
ungrabKeyboard();
d->kbregrab = TRUE; // want kb back when we're active
}
- } else {
+ }
+ else {
// make sure our modal widget is ALWAYS on top
QWidget *topm = activeModalWidget();
if ( topm ) {
topm->raise();
}
if ( d->kbregrab ) {
@@ -845,12 +895,13 @@ QPEApplication::~QPEApplication()
#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;
#endif
+
delete d;
}
/*!
Returns <tt>$OPIEDIR/</tt>.
*/
@@ -883,17 +934,20 @@ static int deforient=-1;
int QPEApplication::defaultRotation()
{
if ( deforient < 0 ) {
QString d = getenv("QWS_DISPLAY");
if ( d.contains("Rot90") ) {
deforient = 90;
- } else if ( d.contains("Rot180") ) {
+ }
+ else if ( d.contains( "Rot180" ) ) {
deforient = 180;
- } else if ( d.contains("Rot270") ) {
+ }
+ else if ( d.contains( "Rot270" ) ) {
deforient = 270;
- } else {
+ }
+ else {
deforient=0;
}
}
return deforient;
}
@@ -902,13 +956,14 @@ 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);
- } else {
+ }
+ else {
QCopEnvelope("QPE/System", "setDefaultRotation(int)") << r;
}
}
/*!
\internal
@@ -947,138 +1002,161 @@ void QPEApplication::applyStyle()
void QPEApplication::systemMessage( const QCString &msg, const QByteArray &data)
{
#ifdef Q_WS_QWS
QDataStream stream( data, IO_ReadOnly );
if ( msg == "applyStyle()" ) {
applyStyle();
- } else if ( msg == "setScreenSaverInterval(int)" ) {
+ }
+ else if ( msg == "setScreenSaverInterval(int)" ) {
if ( type() == GuiServer ) {
int time;
stream >> time;
setScreenSaverInterval(time);
}
- } else if ( msg == "setScreenSaverIntervals(int,int,int)" ) {
+ }
+ else if ( msg == "setScreenSaverIntervals(int,int,int)" ) {
if ( type() == GuiServer ) {
int t1,t2,t3;
stream >> t1 >> t2 >> t3;
setScreenSaverIntervals(t1,t2,t3);
}
- } else if ( msg == "setBacklight(int)" ) {
+ }
+ else if ( msg == "setBacklight(int)" ) {
if ( type() == GuiServer ) {
int bright;
stream >> bright;
setBacklight(bright);
}
- } else if ( msg == "setDefaultRotation(int)" ) {
+ }
+ else if ( msg == "setDefaultRotation(int)" ) {
if ( type() == GuiServer ) {
int r;
stream >> r;
setDefaultRotation(r);
}
- } else if ( msg == "shutdown()" ) {
+ }
+ else if ( msg == "shutdown()" ) {
if ( type() == GuiServer )
shutdown();
- } else if ( msg == "quit()" ) {
+ }
+ else if ( msg == "quit()" ) {
if ( type() != GuiServer )
tryQuit();
- } else if ( msg == "forceQuit()" ) {
+ }
+ else if ( msg == "forceQuit()" ) {
if ( type() != GuiServer )
quit();
- } else if ( msg == "restart()" ) {
+ }
+ else if ( msg == "restart()" ) {
if ( type() == GuiServer )
restart();
- } else if ( msg == "grabKeyboard(QString)" ) {
+ }
+ else if ( msg == "grabKeyboard(QString)" ) {
QString who;
stream >> who;
if ( who.isEmpty() )
d->kbgrabber = 0;
else if ( who != d->appName )
d->kbgrabber = 1;
else
d->kbgrabber = 2;
- } else if ( msg == "language(QString)" ) {
+ }
+ else if ( msg == "language(QString)" ) {
if ( type() == GuiServer ) {
QString l;
stream >> l;
QString cl = getenv("LANG");
if ( cl != l ) {
if ( l.isNull() )
unsetenv( "LANG" );
else
setenv( "LANG", l.latin1(), 1 );
restart();
}
}
- } else if ( msg == "timeChange(QString)" ) {
+ }
+ else if ( msg == "timeChange(QString)" ) {
QString t;
stream >> t;
if ( t.isNull() )
unsetenv( "TZ" );
else
setenv( "TZ", t.latin1(), 1 );
// emit the signal so everyone else knows...
emit timeChanged();
- } else if ( msg == "execute(QString)" ) {
+ }
+ else if ( msg == "execute(QString)" ) {
if ( type() == GuiServer ) {
QString t;
stream >> t;
Global::execute( t );
}
- } else if ( msg == "execute(QString,QString)" ) {
+ }
+ else if ( msg == "execute(QString,QString)" ) {
if ( type() == GuiServer ) {
QString t,d;
stream >> t >> d;
Global::execute( t, d );
}
- } else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) {
+ }
+ else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) {
if ( type() == GuiServer ) {
QDateTime when;
QCString channel, message;
int data;
stream >> when >> channel >> message >> data;
AlarmServer::addAlarm( when, channel, message, data );
}
- } else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) {
+ }
+ else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) {
if ( type() == GuiServer ) {
QDateTime when;
QCString channel, message;
int data;
stream >> when >> channel >> message >> data;
AlarmServer::deleteAlarm( when, channel, message, data );
}
- } else if ( msg == "clockChange(bool)" ) {
+ }
+ else if ( msg == "clockChange(bool)" ) {
int tmp;
stream >> tmp;
emit clockChanged( tmp );
- } else if ( msg == "weekChange(bool)" ) {
+ }
+ else if ( msg == "weekChange(bool)" ) {
int tmp;
stream >> tmp;
emit weekChanged( tmp );
- } else if ( msg == "setDateFormat(DateFormat)" ) {
+ }
+ else if ( msg == "setDateFormat(DateFormat)" ) {
DateFormat tmp;
stream >> tmp;
emit dateFormatChanged( tmp );
- } else if ( msg == "setVolume(int,int)" ) {
+ }
+ else if ( msg == "setVolume(int,int)" ) {
int t,v;
stream >> t >> v;
setVolume(t,v);
emit volumeChanged( muted );
- } else if ( msg == "volumeChange(bool)" ) {
+ }
+ else if ( msg == "volumeChange(bool)" ) {
stream >> muted;
setVolume();
emit volumeChanged( muted );
- } else if ( msg == "setMic(int,int)") { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
+ }
+ else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
int t,v;
stream >> t >> v;
setMic(t,v);
emit micChanged( micMuted );
- } else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
+ }
+ else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
stream >> micMuted;
setMic();
emit micChanged( micMuted );
- } else if ( msg == "setScreenSaverMode(int)" ) {
+ }
+ else if ( msg == "setScreenSaverMode(int)" ) {
if ( type() == GuiServer ) {
int old = disable_suspend;
stream >> disable_suspend;
//qDebug("setScreenSaverMode(%d)", disable_suspend );
if ( disable_suspend > old )
setScreenSaverInterval( -1 );
@@ -1093,21 +1171,24 @@ 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 )
+ top = mainWidget();
if ( top && d->keep_running ) {
if ( top->isVisible() )
r = TRUE;
#ifdef Q_WS_QWS
+
if ( !d->nomaximize )
top->showMaximized();
else
#endif
+
top->show();
top->raise();
top->setActiveWindow();
}
QWidget *topm = activeModalWidget();
if ( topm && topm != top ) {
@@ -1122,50 +1203,60 @@ bool QPEApplication::raiseAppropriateWindow()
void QPEApplication::pidMessage( const QCString &msg, const QByteArray & data)
{
#ifdef Q_WS_QWS
if ( msg == "quit()" ) {
tryQuit();
- } else if ( msg == "quitIfInvisible()" ) {
+ }
+ else if ( msg == "quitIfInvisible()" ) {
if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() )
quit();
- } else if ( msg == "close()" ) {
+ }
+ else if ( msg == "close()" ) {
hideOrQuit();
- } else if ( msg == "disablePreload()" ) {
+ }
+ else if ( msg == "disablePreload()" ) {
d->preloaded = FALSE;
d->keep_running = TRUE;
/* so that quit will quit */
- } else if ( msg == "enablePreload()" ) {
+ }
+ else if ( msg == "enablePreload()" ) {
d->preloaded = TRUE;
d->keep_running = TRUE;
/* so next quit won't quit */
- } else if ( msg == "raise()" ) {
+ }
+ else if ( msg == "raise()" ) {
d->keep_running = TRUE;
d->notbusysent = FALSE;
raiseAppropriateWindow();
- } else if ( msg == "flush()" ) {
+ }
+ else if ( msg == "flush()" ) {
emit flush();
// we need to tell the desktop
QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" );
e << d->appName;
- } else if ( msg == "reload()" ) {
+ }
+ else if ( msg == "reload()" ) {
emit reload();
- } else if ( msg == "setDocument(QString)" ) {
+ }
+ else if ( msg == "setDocument(QString)" ) {
d->keep_running = TRUE;
QDataStream stream( data, IO_ReadOnly );
QString doc;
stream >> doc;
QWidget *mw = mainWidget();
if ( !mw )
mw = d->qpe_main_widget;
if ( mw )
Global::setDocument( mw, doc );
- } else if ( msg == "nextView()" ) {
+ }
+ else if ( msg == "nextView()" ) {
if ( raiseAppropriateWindow() )
emit appMessage( msg, data);
- } else {
+ }
+ else {
emit appMessage( msg, data);
}
#endif
}
@@ -1210,20 +1301,23 @@ void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
if(d->forceshow) {
#ifdef Q_WS_QWS
if ( !nomaximize )
mw->showMaximized();
else
#endif
+
mw->show();
}
- } else if ( d->keep_running ) {
+ }
+ else if ( d->keep_running ) {
#ifdef Q_WS_QWS
if ( !nomaximize )
mw->showMaximized();
else
#endif
+
mw->show();
}
}
/*!
Sets \a mw as the mainWidget() and shows it. For small windows,
@@ -1249,20 +1343,23 @@ void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
if(d->forceshow) {
#ifdef Q_WS_QWS
if ( !nomaximize )
mw->showMaximized();
else
#endif
+
mw->show();
}
- } else if ( d->keep_running ) {
+ }
+ else if ( d->keep_running ) {
#ifdef Q_WS_QWS
if ( !nomaximize )
mw->showMaximized();
else
#endif
+
mw->show();
}
}
/*!
@@ -1298,22 +1395,26 @@ bool QPEApplication::keepRunning() const
*/
void QPEApplication::internalSetStyle( const QString &style )
{
#if QT_VERSION >= 300
if ( style == "QPE" ) {
setStyle( new QPEStyle );
- } else {
+ }
+ else {
QStyle *s = QStyleFactory::create(style);
- if ( s ) setStyle(s);
+ if ( s )
+ setStyle( s );
}
#else
if ( style == "Windows" ) {
setStyle( new QWindowsStyle );
- } else if ( style == "QPE" ) {
+ }
+ else if ( style == "QPE" ) {
setStyle( new QPEStyle );
- } else if ( style == "Light" ) {
+ }
+ else if ( style == "Light" ) {
setStyle( new LightStyle );
}
#ifndef QT_NO_STYLE_PLATINUM
else if ( style == "Platinum" ) {
setStyle( new QPlatinumStyle );
}
@@ -1328,59 +1429,92 @@ void QPEApplication::internalSetStyle( const QString &style )
setStyle( new QMotifPlusStyle );
}
#endif
// HACK for Qt2 only
else {
+ QStyle *sty = 0;
+ QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/lib" + style. lower ( ) + ".so";
+
+ static QLibrary *lastlib = 0;
+ static StyleInterface *lastiface = 0;
+
+ QLibrary *lib = new QLibrary ( path );
+ StyleInterface *iface = 0;
+
+ if ( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK )
+ sty = iface-> create ( );
+
+ if ( sty ) {
+ setStyle ( sty );
+
+ qDebug ( "Got Style: %p -- iface: %p, lib: %p\n", sty, iface, lib );
+
+ if ( lastiface )
+ lastiface-> release ( );
+ lastiface = iface;
+
+
+ if ( lastlib ) {
+ lastlib-> unload ( );
+ delete lastlib;
+ }
+ lastlib = lib;
+ }
+ else {
+ if ( iface )
+ iface-> release ( );
+ delete lib;
+
+ setStyle ( new QPEStyle ( ));
+ }
+
+#if 0
// style == "Liquid Style (libliquid.so)" (or "Windows XP (libxp.so)"
int p2 = style. findRev ( ']' );
int p1 = style. findRev ( '[' );
QString style2;
if (( p1 > 0 ) && ( p2 > 0 ) && (( p1 + 1 ) < p2 ))
style2 = "lib" + style. mid ( p1 + 1, p2 - p1 - 1 ). lower ( ) + ".so";
else
style2 = "lib" + style. lower ( ) + ".so";
- // static QLibrary *currentlib = 0;
- static void *currentlib = 0;
+ static QLibrary *currentlib = 0;
QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/" + style2;
do { // try/catch simulation
- // QLibrary *lib = new QLibrary ( path, QLibrary::Immediately );
- void *lib = ::dlopen ( path. local8Bit ( ), RTLD_LAZY | RTLD_GLOBAL );
+ QLibrary *lib = new QLibrary ( path, QLibrary::Immediately );
if ( lib ) {
- //QStyle * (*fpa) ( ) = (QStyle * (*) ( )) lib-> resolve ( "allocate" );
- QStyle * (*fpa) ( ) = (QStyle * (*) ( )) ::dlsym ( lib, "allocate" );
+ QStyle * ( *fpa ) ( ) = ( QStyle * ( * ) ( ) ) lib-> resolve ( "allocate" );
if ( fpa ) {
QStyle *sty = ( *fpa ) ( );
if ( sty ) {
setStyle ( sty );
- if ( currentlib ) {
- //delete currentlib;
- ::dlclose ( currentlib );
- }
+ if ( currentlib )
+ delete currentlib;
currentlib = lib;
break;
}
}
- //delete lib;
- ::dlclose ( lib );
+ delete lib;
}
- } while ( false );
}
+ while ( false );
// HACK for Qt2 only
#endif
}
+#endif
+}
/*!
\internal
*/
void QPEApplication::prepareForTermination(bool willrestart)
{
@@ -1395,13 +1529,14 @@ void QPEApplication::prepareForTermination(bool willrestart)
lblWait->setPixmap( pix );
lblWait->setAlignment( QWidget::AlignCenter );
lblWait->show();
lblWait->showMaximized();
}
#ifndef SINGLE_APP
- { QCopEnvelope envelope("QPE/System", "forceQuit()"); }
+ { QCopEnvelope envelope( "QPE/System", "forceQuit()" );
+ }
processEvents(); // ensure the message goes out.
sleep(1); // You have 1 second to comply.
#endif
}
/*!
@@ -1456,15 +1591,17 @@ QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w )
\sa stylusOperation()
*/
void QPEApplication::setStylusOperation( QWidget* w, StylusMode mode )
{
createDict();
if ( mode == LeftOnly ) {
- stylusDict->remove(w);
+ stylusDict->remove
+ ( w );
w->removeEventFilter(qApp);
- } else {
+ }
+ else {
stylusDict->insert(w,(void*)mode);
connect(w,SIGNAL(destroyed()),qApp,SLOT(removeSenderFromStylusDict()));
w->installEventFilter(qApp);
}
}
@@ -1513,13 +1650,14 @@ bool QPEApplication::eventFilter( QObject *o, QEvent *e )
}
break;
default:
;
}
}
- } else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) {
+ }
+ else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) {
QKeyEvent *ke = (QKeyEvent *)e;
if ( ke->key() == Key_Enter ) {
if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) {
postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ',
ke->state(), " ", ke->isAutoRepeat(), ke->count() ) );
return TRUE;
@@ -1545,13 +1683,14 @@ void QPEApplication::timerEvent( QTimerEvent *e )
d->rightpressed = TRUE;
}
}
void QPEApplication::removeSenderFromStylusDict()
{
- stylusDict->remove((void*)sender());
+ stylusDict->remove
+ ( ( void* ) sender() );
if ( d->presswidget == sender() )
d->presswidget = 0;
}
/*!
\internal
@@ -1701,14 +1840,13 @@ void qt_setMaxWindowRect(const QRect& 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() )
- {
+ if ( w->isVisible() && w->isMaximized() ) {
w->showMaximized();
}
w = l->next();
}
delete l;
}