author | llornkcor <llornkcor> | 2002-04-04 02:55:56 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-04-04 02:55:56 (UTC) |
commit | 431ff3f7fd9996236c6d82a3644b3915bd4c7b38 (patch) (side-by-side diff) | |
tree | 693e873c51efc5c43cfa7ebd5dd0755fb254500a | |
parent | e18dab7b6b00ad3ba8117666998de6db52257bdb (diff) | |
download | opie-431ff3f7fd9996236c6d82a3644b3915bd4c7b38.zip opie-431ff3f7fd9996236c6d82a3644b3915bd4c7b38.tar.gz opie-431ff3f7fd9996236c6d82a3644b3915bd4c7b38.tar.bz2 |
added support for configuring with AppKeys, F9 - F13 (Zaurus' cover buttons)
-rw-r--r-- | core/launcher/desktop.cpp | 48 |
1 files changed, 45 insertions, 3 deletions
diff --git a/core/launcher/desktop.cpp b/core/launcher/desktop.cpp index 64043e7..cf33011 100644 --- a/core/launcher/desktop.cpp +++ b/core/launcher/desktop.cpp @@ -366,235 +366,277 @@ Desktop::Desktop() : // start services startTransferServer(); (void) new IrServer( this ); rereadVolumes(); packageSlave = new PackageSlave( this ); connect(qApp, SIGNAL(volumeChanged(bool)), this, SLOT(rereadVolumes())); qApp->installEventFilter( this ); } void Desktop::show() { login(TRUE); QWidget::show(); } Desktop::~Desktop() { delete launcher; delete tb; delete qcopBridge; delete transferServer; } bool Desktop::recoverMemory() { return tb->recoverMemory(); } void Desktop::checkMemory() { #if defined(QPE_HAVE_MEMALERTER) static bool ignoreNormal=FALSE; static bool existingMessage=FALSE; if(existingMessage) return; // don't show a second message while still on first existingMessage = TRUE; switch ( memstate ) { case Unknown: break; case Low: memstate = Unknown; if ( recoverMemory() ) ignoreNormal = TRUE; else QMessageBox::warning( 0 , "Memory Status", "The memory smacks of shortage. \n" "Please save data. " ); break; case Normal: memstate = Unknown; if ( ignoreNormal ) ignoreNormal = FALSE; else QMessageBox::information ( 0 , "Memory Status", "There is enough memory again." ); break; case VeryLow: memstate = Unknown; QMessageBox::critical( 0 , "Memory Status", "The memory is very low. \n" "Please end this application \n" "immediately." ); recoverMemory(); } existingMessage = FALSE; #endif } static bool isVisibleWindow(int wid) { const QList<QWSWindow> &list = qwsServer->clientWindows(); QWSWindow* w; for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { if ( w->winId() == wid ) return !w->isFullyObscured(); } return FALSE; } static bool hasVisibleWindow(const QString& clientname) { const QList<QWSWindow> &list = qwsServer->clientWindows(); QWSWindow* w; for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { if ( w->client()->identity() == clientname && !w->isFullyObscured() ) return TRUE; } return FALSE; } void Desktop::raiseLauncher() { + Config cfg("qpe"); //F12 'Home' + cfg.setGroup("AppsKey"); + QString tempItem; + tempItem = cfg.readEntry("Middle","Home"); + if(tempItem == "Home" || tempItem.isEmpty()) { if ( isVisibleWindow(launcher->winId()) ) launcher->nextView(); else launcher->raise(); + } else { + QCopEnvelope e("QPE/System","execute(QString)"); + e << tempItem; + } } void Desktop::executeOrModify(const QString& appLnkFile) { AppLnk lnk(MimeType::appsFolderName() + "/" + appLnkFile); if ( lnk.isValid() ) { QCString app = lnk.exec().utf8(); Global::terminateBuiltin("calibrate"); if ( QCopChannel::isRegistered("QPE/Application/" + app) ) { MRUList::addTask(&lnk); if ( hasVisibleWindow(app) ) QCopChannel::send("QPE/Application/" + app, "nextView()"); else QCopChannel::send("QPE/Application/" + app, "raise()"); } else { lnk.execute(); } } } void Desktop::raiseDatebook() { - executeOrModify("Applications/datebook.desktop"); + Config cfg("qpe"); //F9 'Activity' + cfg.setGroup("AppsKey"); + QString tempItem; + tempItem = cfg.readEntry("LeftEnd","Calender"); + if(tempItem == "Calender" || tempItem.isEmpty()) executeOrModify("Applications/datebook.desktop"); + else { + QCopEnvelope e("QPE/System","execute(QString)"); + e << tempItem; + } } void Desktop::raiseContacts() { - executeOrModify("Applications/addressbook.desktop"); + Config cfg("qpe"); //F10, 'Contacts' + cfg.setGroup("AppsKey"); + QString tempItem; + tempItem = cfg.readEntry("Left2nd","Address Book"); + if(tempItem == "Address Book" || tempItem.isEmpty()) executeOrModify("Applications/addressbook.desktop"); + else { + QCopEnvelope e("QPE/System","execute(QString)"); + e << tempItem; + } } void Desktop::raiseMenu() { + Config cfg("qpe"); //F11, 'Menu' + cfg.setGroup("AppsKey"); + QString tempItem; + tempItem = cfg.readEntry("Right2nd","Popup Menu"); + if(tempItem == "Popup Menu" || tempItem.isEmpty()) { Global::terminateBuiltin("calibrate"); tb->startMenu()->launch(); + } else { + QCopEnvelope e("QPE/System","execute(QString)"); + e << tempItem; + } } void Desktop::raiseEmail() { - executeOrModify("Applications/qtmail.desktop"); + Config cfg("qpe"); //F13, 'Mail' + cfg.setGroup("AppsKey"); + QString tempItem; + tempItem = cfg.readEntry("RightEnd","Mail"); + if(tempItem == "Mail" || tempItem == "qtmail" || tempItem.isEmpty()) executeOrModify("Applications/qtmail.desktop"); + else { + QCopEnvelope e("QPE/System","execute(QString)"); + e << tempItem; + } } // autoStarts apps on resume and start void Desktop::execAutoStart() { QString appName; Config cfg( "autostart" ); cfg.setGroup( "AutoStart" ); appName = cfg.readEntry("Apps", ""); QCopEnvelope e("QPE/System", "execute(QString)"); e << QString(appName); } #if defined(QPE_HAVE_TOGGLELIGHT) #include <qpe/config.h> #include <sys/ioctl.h> #include <sys/types.h> #include <fcntl.h> #include <unistd.h> #include <errno.h> #include <linux/ioctl.h> #include <time.h> #endif static bool blanked=FALSE; static void blankScreen() { if ( !qt_screen ) return; /* Should use a big black window instead. QGfx* g = qt_screen->screenGfx(); g->fillRect(0,0,qt_screen->width(),qt_screen->height()); delete g; */ blanked = TRUE; } static void darkScreen() { extern void qpe_setBacklight(int); qpe_setBacklight(0); // force off } void Desktop::togglePower() { bool wasloggedin = loggedin; loggedin=0; darkScreen(); if ( wasloggedin ) blankScreen(); system("apm --suspend"); QWSServer::screenSaverActivate( FALSE ); { QCopEnvelope("QPE/Card", "mtabChanged()" ); // might have changed while asleep QCopEnvelope e("QPE/System", "setBacklight(int)"); e << -3; // Force on } if ( wasloggedin ) { login(TRUE); } sleep(1); execAutoStart(); //qcopBridge->closeOpenConnections(); //qDebug("called togglePower()!!!!!!"); } void Desktop::toggleLight() { QCopEnvelope e("QPE/System", "setBacklight(int)"); e << -2; // toggle } void Desktop::toggleSymbolInput() { tb->toggleSymbolInput(); } void Desktop::toggleNumLockState() { tb->toggleNumLockState(); } void Desktop::toggleCapsLockState() { tb->toggleCapsLockState(); } void Desktop::styleChange( QStyle &s ) { QWidget::styleChange( s ); |