-rw-r--r-- | library/qpeapplication.cpp | 181 |
1 files changed, 105 insertions, 76 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp index 4dbfbd8..a55f5f9 100644 --- a/library/qpeapplication.cpp +++ b/library/qpeapplication.cpp @@ -142,67 +142,87 @@ public: setExtensionType("html","text/html;charset=UTF-8"); } const QMimeSource* data(const QString& abs_name) const { const QMimeSource* r = QMimeSourceFactory::data(abs_name); if ( !r ) { int sl = abs_name.length(); do { sl = abs_name.findRev('/',sl-1); QString name = sl>=0 ? abs_name.mid(sl+1) : abs_name; int dot = name.findRev('.'); if ( dot >= 0 ) name = name.left(dot); QImage img = Resource::loadImage(name); if ( !img.isNull() ) r = new QImageDrag(img); } while (!r && sl>0); } return r; } }; static int muted=0; +static int micMuted=0; static void setVolume(int t=0, int percent=-1) { - switch (t) { - case 0: { - Config cfg("Sound"); - cfg.setGroup("System"); - if ( percent < 0 ) - percent = cfg.readNumEntry("Volume",50); - int fd = 0; - if ((fd = open("/dev/mixer", O_RDWR))>=0) { - int vol = muted ? 0 : percent; - // set both channels to same volume - vol |= vol << 8; - ioctl(fd, MIXER_WRITE(0), &vol); - ::close(fd); - } - } break; - } + switch (t) { + case 0: { + Config cfg("Sound"); + cfg.setGroup("System"); + if ( percent < 0 ) + percent = cfg.readNumEntry("Volume",50); + int fd = 0; + if ((fd = open("/dev/mixer", O_RDWR))>=0) { + int vol = muted ? 0 : percent; + // set both channels to same volume + vol |= vol << 8; + ioctl(fd, MIXER_WRITE(0), &vol); + ::close(fd); + } + } break; + } +} + +static void setMic(int t=0, int percent=-1) +{ + switch (t) { + case 0: { + Config cfg("Sound"); + cfg.setGroup("System"); + if ( percent < 0 ) + percent = cfg.readNumEntry("Mic",50); + + int fd = 0; + int mic = micMuted ? 0 : percent; + if ((fd = open("/dev/mixer", O_RDWR))>=0) { + ioctl(fd, MIXER_WRITE(SOUND_MIXER_MIC), &mic); + ::close(fd); + } + } break; + } } 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; } @@ -848,174 +868,183 @@ void QPEApplication::applyStyle() QColor btncolor( config.readEntry( "Button", "#D6CDBB" ) ); QPalette pal( btncolor, bgcolor ); QString color = config.readEntry( "Highlight", "#800000" ); pal.setColor( QColorGroup::Highlight, QColor(color) ); color = config.readEntry( "HighlightedText", "#FFFFFF" ); pal.setColor( QColorGroup::HighlightedText, QColor(color) ); color = config.readEntry( "Text", "#000000" ); pal.setColor( QColorGroup::Text, QColor(color) ); color = config.readEntry( "ButtonText", "#000000" ); pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor(color) ); color = config.readEntry( "Base", "#FFFFFF" ); pal.setColor( QColorGroup::Base, QColor(color) ); pal.setColor( QPalette::Disabled, QColorGroup::Text, pal.color(QPalette::Active, QColorGroup::Background).dark() ); setPalette( pal, TRUE ); } void QPEApplication::systemMessage( const QCString &msg, const QByteArray &data) { #ifdef Q_WS_QWS QDataStream stream( data, IO_ReadOnly ); if ( msg == "applyStyle()" ) { - applyStyle(); + applyStyle(); } else if ( msg == "setScreenSaverInterval(int)" ) { - if ( type() == GuiServer ) { + if ( type() == GuiServer ) { int time; stream >> time; setScreenSaverInterval(time); - } + } } else if ( msg == "setScreenSaverIntervals(int,int,int)" ) { - if ( type() == GuiServer ) { + if ( type() == GuiServer ) { int t1,t2,t3; stream >> t1 >> t2 >> t3; setScreenSaverIntervals(t1,t2,t3); - } + } } else if ( msg == "setBacklight(int)" ) { - if ( type() == GuiServer ) { + if ( type() == GuiServer ) { int bright; stream >> bright; setBacklight(bright); - } + } } else if ( msg == "setDefaultRotation(int)" ) { - if ( type() == GuiServer ) { + if ( type() == GuiServer ) { int r; stream >> r; setDefaultRotation(r); - } + } } else if ( msg == "shutdown()" ) { - if ( type() == GuiServer ) + if ( type() == GuiServer ) shutdown(); } else if ( msg == "quit()" ) { - if ( type() != GuiServer ) + if ( type() != GuiServer ) tryQuit(); } else if ( msg == "forceQuit()" ) { - if ( type() != GuiServer ) + if ( type() != GuiServer ) quit(); } else if ( msg == "restart()" ) { - if ( type() == GuiServer ) + if ( type() == GuiServer ) restart(); } else if ( msg == "grabKeyboard(QString)" ) { - QString who; - stream >> who; - if ( who.isEmpty() ) + QString who; + stream >> who; + if ( who.isEmpty() ) d->kbgrabber = 0; - else if ( who != d->appName ) + else if ( who != d->appName ) d->kbgrabber = 1; - else + else d->kbgrabber = 2; } else if ( msg == "language(QString)" ) { - if ( type() == GuiServer ) { + if ( type() == GuiServer ) { QString l; stream >> l; QString cl = getenv("LANG"); if ( cl != l ) { - if ( l.isNull() ) + if ( l.isNull() ) unsetenv( "LANG" ); - else + else setenv( "LANG", l.latin1(), 1 ); - restart(); + restart(); } - } + } } else if ( msg == "timeChange(QString)" ) { - QString t; - stream >> t; - if ( t.isNull() ) + QString t; + stream >> t; + if ( t.isNull() ) unsetenv( "TZ" ); - else + else setenv( "TZ", t.latin1(), 1 ); - // emit the signal so everyone else knows... - emit timeChanged(); + // emit the signal so everyone else knows... + emit timeChanged(); } else if ( msg == "execute(QString)" ) { - if ( type() == GuiServer ) { + if ( type() == GuiServer ) { QString t; stream >> t; Global::execute( t ); - } + } } else if ( msg == "execute(QString,QString)" ) { - if ( type() == GuiServer ) { + if ( type() == GuiServer ) { QString t,d; stream >> t >> d; Global::execute( t, d ); - } + } } else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { - if ( type() == GuiServer ) { + 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 ) { + 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 ); + int tmp; + stream >> tmp; + emit clockChanged( tmp ); } else if ( msg == "weekChange(bool)" ) { - int tmp; - stream >> tmp; - emit weekChanged( tmp ); + int tmp; + stream >> tmp; + emit weekChanged( tmp ); } else if ( msg == "setDateFormat(DateFormat)" ) { - DateFormat tmp; - stream >> tmp; - emit dateFormatChanged( tmp ); + 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 ); + int t,v; + stream >> t >> v; + setVolume(t,v); + emit volumeChanged( muted ); } else if ( msg == "volumeChange(bool)" ) { - stream >> muted; - setVolume(); - emit volumeChanged( muted ); + stream >> muted; + setVolume(); + emit volumeChanged( muted ); + } else if ( msg == "setMic(int,int)") { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> + int t,v; + stream >> t >> v; + setMic(t,v); + emit micChanged( micMuted ); + } else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> + stream >> micMuted; + setMic(); + emit micChanged( micMuted ); } else if ( msg == "setScreenSaverMode(int)" ) { - if ( type() == GuiServer ) { - int old = disable_suspend; - stream >> disable_suspend; - //qDebug("setScreenSaverMode(%d)", disable_suspend ); - if ( disable_suspend > old ) - setScreenSaverInterval( -1 ); + 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; 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(); |