summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2002-04-04 02:55:56 (UTC)
committer llornkcor <llornkcor>2002-04-04 02:55:56 (UTC)
commit431ff3f7fd9996236c6d82a3644b3915bd4c7b38 (patch) (side-by-side diff)
tree693e873c51efc5c43cfa7ebd5dd0755fb254500a
parente18dab7b6b00ad3ba8117666998de6db52257bdb (diff)
downloadopie-431ff3f7fd9996236c6d82a3644b3915bd4c7b38.zip
opie-431ff3f7fd9996236c6d82a3644b3915bd4c7b38.tar.gz
opie-431ff3f7fd9996236c6d82a3644b3915bd4c7b38.tar.bz2
added support for configuring with AppKeys, F9 - F13 (Zaurus' cover buttons)
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/launcher/desktop.cpp48
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 );