author | sandman <sandman> | 2002-09-06 19:27:17 (UTC) |
---|---|---|
committer | sandman <sandman> | 2002-09-06 19:27:17 (UTC) |
commit | 61b8be0405b46896160afaf7f4a2082527f01f58 (patch) (side-by-side diff) | |
tree | eed32200b726eb888b9587b25c509cb4ecd6fe9c | |
parent | 98c0d3f0eca58993cb18e740f2a3d07d67c5c64d (diff) | |
download | opie-61b8be0405b46896160afaf7f4a2082527f01f58.zip opie-61b8be0405b46896160afaf7f4a2082527f01f58.tar.gz opie-61b8be0405b46896160afaf7f4a2082527f01f58.tar.bz2 |
Removed all the LCD specific stuff:
- the low-level part of it is now libopie / ODevice
- the high-level (QCop and QWSScreenSaver) part of it is now in the
QWS-Server (launcher)
-rw-r--r-- | library/qpeapplication.cpp | 361 |
1 files changed, 3 insertions, 358 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp index 8448352..8aae786 100644 --- a/library/qpeapplication.cpp +++ b/library/qpeapplication.cpp @@ -39,80 +39,53 @@ #include <qtextstream.h> #include <qpalette.h> #include <qbuffer.h> #include <qptrdict.h> #include <qregexp.h> #include <qdir.h> #include <qlabel.h> #include <qdialog.h> #include <qdragobject.h> #include <qevent.h> #include <qtooltip.h> #include <qsignal.h> - - -//#include <linux/fb.h> better not rely on kernel headers in userspace ... - -/* VESA Blanking Levels */ -#define VESA_NO_BLANKING 0 -#define VESA_VSYNC_SUSPEND 1 -#define VESA_HSYNC_SUSPEND 2 -#define VESA_POWERDOWN 3 - -#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> #endif #include "global.h" #include "resource.h" -#if QT_VERSION <= 230 && defined(QT_NO_CODECS) -#include "qutfcodec.h" -#endif #include "config.h" -#include "network.h" #include "fontmanager.h" #include "fontdatabase.h" -#include "power.h" #include "alarmserver.h" #include "applnk.h" #include "qpemenubar.h" #include <unistd.h> #include <sys/file.h> #include <sys/ioctl.h> #include <sys/soundcard.h> -// for setBacklight() -#if defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX) -#include <linux/fb.h> -#include <sys/types.h> -#include <sys/stat.h> -#endif -#include <stdlib.h> - class QPEApplicationData { public: QPEApplicationData() : presstimer( 0 ), presswidget( 0 ), rightpressed( FALSE ), kbgrabber( 0 ), kbregrab( FALSE ), notbusysent( FALSE ), preloaded( FALSE ), forceshow( FALSE ), nomaximize( FALSE ), qpe_main_widget( 0 ), keep_running( TRUE ) { qcopq.setAutoDelete( TRUE ); } @@ -221,276 +194,24 @@ 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; } } -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; - -static int backlight() -{ - if ( curbl == -1 ) { - // Read from config - Config config( "qpe" ); - config.setGroup( "Screensaver" ); - curbl = config.readNumEntry( "Brightness", 255 ); - } - return curbl; -} - -static void setBacklight( int bright ) -{ - if ( bright == -3 ) { - // Forced on - forced_off = FALSE; - bright = -1; - } - if ( forced_off && bright != -2 ) - return ; - if ( bright == -2 ) { - // Toggle between off and on - bright = curbl ? 0 : -1; - forced_off = !bright; - } - if ( bright == -1 ) { - // Read from config - Config config( "qpe" ); - config.setGroup( "Screensaver" ); - bright = config.readNumEntry( "Brightness", 255 ); - } -#if defined(QT_QWS_IPAQ) || defined(QT_QWS_EBX) - if ( QFile::exists( "/usr/bin/bl" ) ) { - QString cmd = "/usr/bin/bl 1 "; - cmd += bright <= 0 ? "0 " : "1 "; - cmd += QString::number( bright ); - system( cmd.latin1() ); -#if defined(QT_QWS_EBX) - - } - else if ( QFile::exists( "/dev/fl" ) ) { -#define FL_IOCTL_STEP_CONTRAST 100 - int fd = open( "/dev/fl", O_WRONLY ); - if ( fd >= 0 ) { - int steps = qpe_sysBrightnessSteps(); - int bl = ( bright * steps + 127 ) / 255; - if ( bright && !bl ) - bl = 1; - bl = ioctl( fd, FL_IOCTL_STEP_CONTRAST, bl ); - close( fd ); - } - } -#elif defined(QT_QWS_IPAQ) - - } - else if ( QFile::exists( "/dev/ts" ) || QFile::exists( "/dev/h3600_ts" ) ) - { - typedef struct { - unsigned char mode; - unsigned char pwr; - unsigned char brightness; - } - FLITE_IN; -# 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 ) { - FLITE_IN bl; - bl.mode = 1; - bl.pwr = bright ? 1 : 0; - bl.brightness = bright; - ioctl( fd, FLITE_ON, &bl ); - close( fd ); - } - } -#endif -#endif - curbl = bright; -} - -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() -{ - return PowerStatusManager::readStatus().acStatus() == PowerStatus::Online; -} - -static bool networkOnline() -{ - return Network::networkOnline(); -} - -class QPEScreenSaver : public QWSScreenSaver -{ -private: - int LcdOn; - -public: - QPEScreenSaver() - { - int fd; - - LcdOn = TRUE; - // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off) - fd = open( "/dev/fb0", O_RDWR ); - if ( fd != -1 ) { - ioctl( fd, FBIOBLANK, VESA_NO_BLANKING ); - close( fd ); - } - } - void restore() - { - if ( !LcdOn ) // We must have turned it off - { - int fd; - fd = open( "/dev/fb0", O_RDWR ); - if ( fd != -1 ) - { - ioctl( fd, FBIOBLANK, VESA_NO_BLANKING ); - close( fd ); - } - } - setBacklight( -1 ); - } - bool save( int level ) - { - int fd; - - switch ( level ) { - case 0: - if ( disable_suspend > 0 && dim_on ) { - if ( backlight() > 1 ) - setBacklight( 1 ); // lowest non-off - } - return TRUE; - break; - case 1: - if ( disable_suspend > 1 && lightoff_on ) { - setBacklight( 0 ); // off - } - return TRUE; - break; - case 2: - Config config( "qpe" ); - config.setGroup( "Screensaver" ); - if ( config.readNumEntry( "LcdOffOnly", 0 ) != 0 ) // We're only turning off the LCD - { - fd = open( "/dev/fb0", O_RDWR ); - if ( fd != -1 ) - { - ioctl( fd, FBIOBLANK, VESA_POWERDOWN ); - close( fd ); - } - LcdOn = FALSE; - } - else // We're going to suspend the whole machine - { - if ( disable_suspend > 2 && !powerOnline() && !networkOnline() ) { - QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE ); - return TRUE; - } - } - break; - } - return FALSE; - } -}; - -static int ssi( int interval, Config & config, const QString & enable, const QString & value, int def ) -{ - if ( !enable.isEmpty() && config.readNumEntry( enable, 0 ) == 0 ) - return 0; - - if ( interval < 0 ) { - // Restore screen blanking and power saving state - interval = config.readNumEntry( value, def ); - } - return interval; -} - -static void setScreenSaverIntervals( int i1, int i2, int i3 ) -{ - Config config( "qpe" ); - config.setGroup( "Screensaver" ); - - int v[ 4 ]; - i1 = ssi( i1, config, "Dim", "Interval_Dim", 30 ); - i2 = ssi( i2, config, "LightOff", "Interval_LightOff", 20 ); - i3 = ssi( i3, config, "", "Interval", 60 ); - - //qDebug("screen saver intervals: %d %d %d", i1, i2, i3); - - v[ 0 ] = QMAX( 1000 * i1, 100 ); - v[ 1 ] = QMAX( 1000 * i2, 100 ); - v[ 2 ] = QMAX( 1000 * i3, 100 ); - v[ 3 ] = 0; - dim_on = ( ( i1 != 0 ) ? config.readNumEntry( "Dim", 1 ) : FALSE ); - lightoff_on = ( ( i2 != 0 ) ? config.readNumEntry( "LightOff", 1 ) : FALSE ); - if ( !i1 && !i2 && !i3 ) - QWSServer::setScreenSaverInterval( 0 ); - else - QWSServer::setScreenSaverIntervals( v ); -} - -static void setScreenSaverInterval( int interval ) -{ - setScreenSaverIntervals( -1, -1, interval ); -} - /*! \class QPEApplication qpeapplication.h \brief The QPEApplication class implements various system services that are available to all Qtopia applications. Simply by using QPEApplication instead of QApplication, a plain Qt application becomes a Qtopia application. It automatically follows style changes, quits and raises, and in the case of \link docwidget.html document-oriented\endlink applications, changes the current displayed document in response to the environment. */ @@ -538,25 +259,25 @@ static void setScreenSaverInterval( int interval ) } } \endcode \sa qcop.html */ /*! Constructs a QPEApplication just as you would construct a QApplication, passing \a argc, \a argv, and \a t. */ QPEApplication::QPEApplication( int & argc, char **argv, Type t ) - : QApplication( hack( argc ), argv, t ) + : QApplication( argc, argv, t ) { int dw = desktop() ->width(); if ( dw < 200 ) { // setFont( QFont( "helvetica", 8 ) ); AppLnk::setSmallIconSize( 10 ); AppLnk::setBigIconSize( 28 ); } d = new QPEApplicationData; QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory ); connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) ); @@ -665,27 +386,25 @@ QPEApplication::QPEApplication( int & argc, char **argv, Type t ) int i_size = sizeStr.toInt( &ok, 10 ); FontDatabase fdb; QFont selectedFont = fdb.font( familyStr, styleStr, i_size, charSetStr ); setFont( selectedFont ); //} } #endif applyStyle(); if ( type() == GuiServer ) { - setScreenSaverInterval( -1 ); setVolume(); - QWSServer::setScreenSaver( new QPEScreenSaver ); } installEventFilter( this ); QPEMenuToolFocusManager::initialize(); #ifdef QT_NO_QWS_CURSOR // if we have no cursor, probably don't want tooltips QToolTip::setEnabled( FALSE ); #endif } @@ -1003,45 +722,24 @@ void QPEApplication::applyStyle() pal.color( QPalette::Active, QColorGroup::Background ).dark() ); setPalette( pal, TRUE ); } void QPEApplication::systemMessage( const QCString & msg, const QByteArray & data ) { #ifdef Q_WS_QWS QDataStream stream( data, IO_ReadOnly ); if ( msg == "applyStyle()" ) { applyStyle(); } - else if ( msg == "setScreenSaverInterval(int)" ) { - if ( type() == GuiServer ) { - int time; - stream >> time; - setScreenSaverInterval( time ); - } - } - else if ( msg == "setScreenSaverIntervals(int,int,int)" ) { - if ( type() == GuiServer ) { - int t1, t2, t3; - stream >> t1 >> t2 >> t3; - setScreenSaverIntervals( t1, t2, t3 ); - } - } - else if ( msg == "setBacklight(int)" ) { - if ( type() == GuiServer ) { - int bright; - stream >> bright; - setBacklight( bright ); - } - } else if ( msg == "setDefaultRotation(int)" ) { if ( type() == GuiServer ) { int r; stream >> r; setDefaultRotation( r ); } } else if ( msg == "shutdown()" ) { if ( type() == GuiServer ) shutdown(); } else if ( msg == "quit()" ) { @@ -1056,24 +754,26 @@ void QPEApplication::systemMessage( const QCString & msg, const QByteArray & dat if ( type() == GuiServer ) restart(); } else if ( msg == "grabKeyboard(QString)" ) { QString who; stream >> who; if ( who.isEmpty() ) d->kbgrabber = 0; else if ( who != d->appName ) d->kbgrabber = 1; else d->kbgrabber = 2; + + printf( "'%s' received grabKeyboard ( '%s' ) -> kbgrabber = %d\n", d-> appName.latin1(), who.latin1(), d-> kbgrabber ); } 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(); @@ -1150,33 +850,24 @@ void QPEApplication::systemMessage( const QCString & msg, const QByteArray & dat } else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> int t, v; stream >> t >> v; setMic( t, v ); emit micChanged( micMuted ); } else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> stream >> micMuted; setMic(); emit micChanged( micMuted ); } - else if ( msg == "setScreenSaverMode(int)" ) { - if ( type() == GuiServer ) { - int old = disable_suspend; - stream >> disable_suspend; - //qDebug("setScreenSaverMode(%d)", disable_suspend ); - if ( disable_suspend > old ) - setScreenSaverInterval( -1 ); - } - } #endif } /*! \internal */ 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; @@ -1427,103 +1118,57 @@ void QPEApplication::internalSetStyle( const QString &style ) #endif #ifndef QT_NO_STYLE_MOTIF else if ( style == "Motif" ) { setStyle( new QMotifStyle ); } #endif #ifndef QT_NO_STYLE_MOTIFPLUS else if ( style == "MotifPlus" ) { setStyle( new QMotifPlusStyle ); } #endif - // HACK for Qt2 only else { QStyle *sty = 0; QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/lib" + style. lower ( ) + ".so"; static QLibrary *lastlib = 0; static StyleInterface *lastiface = 0; QLibrary *lib = new QLibrary ( path ); StyleInterface *iface = 0; if ( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) sty = iface-> create ( ); if ( sty ) { setStyle ( sty ); - qDebug ( "Got Style: %p -- iface: %p, lib: %p\n", sty, iface, lib ); - if ( lastiface ) lastiface-> release ( ); lastiface = iface; - if ( lastlib ) { lastlib-> unload ( ); delete lastlib; } lastlib = lib; } else { if ( iface ) iface-> release ( ); delete lib; setStyle ( new QPEStyle ( )); } - -#if 0 - // style == "Liquid Style (libliquid.so)" (or "Windows XP (libxp.so)" - - int p2 = style. findRev ( ']' ); - int p1 = style. findRev ( '[' ); - QString style2; - - if ( ( p1 > 0 ) && ( p2 > 0 ) && ( ( p1 + 1 ) < p2 ) ) - style2 = "lib" + style. mid ( p1 + 1, p2 - p1 - 1 ). lower ( ) + ".so"; - else - style2 = "lib" + style. lower ( ) + ".so"; - - static QLibrary *currentlib = 0; - - QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/" + style2; - - do { // try/catch simulation - QLibrary *lib = new QLibrary ( path, QLibrary::Immediately ); - - if ( lib ) { - QStyle * ( *fpa ) ( ) = ( QStyle * ( * ) ( ) ) lib-> resolve ( "allocate" ); - - if ( fpa ) { - QStyle * sty = ( *fpa ) ( ); - - if ( sty ) { - setStyle ( sty ); - - if ( currentlib ) - delete currentlib; - currentlib = lib; - - break; - } - } - delete lib; - } - } - while ( false ); - // HACK for Qt2 only -#endif } #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(); |