summaryrefslogtreecommitdiff
authorharlekin <harlekin>2002-08-29 18:11:07 (UTC)
committer harlekin <harlekin>2002-08-29 18:11:07 (UTC)
commite268d442ac16f94b8575c1f32e0e1962ce8b926f (patch) (side-by-side diff)
tree0e518120be6910893b1f24c2caa7bfa664bca922
parent6707dd2b7abf2fac4aef4025cf8e554577d0891c (diff)
downloadopie-e268d442ac16f94b8575c1f32e0e1962ce8b926f.zip
opie-e268d442ac16f94b8575c1f32e0e1962ce8b926f.tar.gz
opie-e268d442ac16f94b8575c1f32e0e1962ce8b926f.tar.bz2
launch for ipaq 38xx mail on button F11 instead of showing the menu
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/desktop.cpp58
1 files changed, 32 insertions, 26 deletions
diff --git a/core/launcher/desktop.cpp b/core/launcher/desktop.cpp
index 5aba8dd..8756d37 100644
--- a/core/launcher/desktop.cpp
+++ b/core/launcher/desktop.cpp
@@ -155,97 +155,96 @@ DesktopApplication::DesktopApplication( int& argc, char **argv, Type appType )
}
DesktopApplication::~DesktopApplication()
{
delete ps;
delete pa;
}
void DesktopApplication::receive( const QCString &msg, const QByteArray &data )
{
QDataStream stream( data, IO_ReadOnly );
if (msg == "keyRegister(int key, QString channel, QString message)")
{
int k;
QString c, m;
stream >> k;
stream >> c;
stream >> m;
qWarning("KeyRegisterReceived: %i, %s, %s", k, (const char*)c, (const char *)m );
keyRegisterList.append(QCopKeyRegister(k,c,m));
}
else if (msg == "suspend()"){
emit power();
}
}
enum MemState { Unknown, VeryLow, Low, Normal } memstate=Unknown;
#ifdef Q_WS_QWS
bool DesktopApplication::qwsEventFilter( QWSEvent *e )
{
qpedesktop->checkMemory();
if ( e->type == QWSEvent::Key ) {
QWSKeyEvent *ke = (QWSKeyEvent *)e;
if ( !loggedin && ke->simpleData.keycode != Key_F34 )
return TRUE;
bool press = ke->simpleData.is_press;
bool autoRepeat= ke->simpleData.is_auto_repeat;
/*
app that registers key/message to be sent back to the app, when it doesn't have focus,
when user presses key, unless keyboard has been requested from app.
will not send multiple repeats if user holds key
i.e. one shot
-
*/
if (!keyRegisterList.isEmpty()) {
KeyRegisterList::Iterator it;
for( it = keyRegisterList.begin(); it != keyRegisterList.end(); ++it ) {
if ((*it).getKeyCode() == ke->simpleData.keycode && !autoRepeat && !keyboardGrabbed() && press) {
if(press) qDebug("press"); else qDebug("release");
QCopEnvelope((*it).getChannel().utf8(), (*it).getMessage().utf8());
}
}
}
if ( !keyboardGrabbed() ) {
if ( ke->simpleData.keycode == Key_F9 ) {
if ( press ) emit datebook();
return TRUE;
}
if ( ke->simpleData.keycode == Key_F10 ) {
if ( !press && cardSendTimer ) {
emit contacts();
delete cardSendTimer;
} else if ( press ) {
cardSendTimer = new QTimer();
cardSendTimer->start( 2000, TRUE );
connect( cardSendTimer, SIGNAL( timeout() ), this, SLOT( sendCard() ) );
}
return TRUE;
}
/* menu key now opens application menu/toolbar
if ( ke->simpleData.keycode == Key_F11 ) {
if ( press ) emit menu();
return TRUE;
}
*/
if ( ke->simpleData.keycode == Key_F12 ) {
while( activePopupWidget() )
activePopupWidget()->close();
if ( press ) emit launch();
return TRUE;
}
if ( ke->simpleData.keycode == Key_F13 ) {
if ( press ) emit email();
return TRUE;
}
}
if ( ke->simpleData.keycode == Key_F34 ) {
if ( press ) emit power();
return TRUE;
@@ -486,119 +485,120 @@ void Desktop::executeOrModify(const QString& 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()
{
Config cfg( "qpe" ); //F9 'Activity'
cfg.setGroup( "AppsKey" );
QString tempItem;
tempItem = cfg.readEntry( "LeftEnd" , "Calender" );
if ( tempItem == "Calender" || tempItem.isEmpty() ) {
tempItem = "datebook";
}
QCopEnvelope e( "QPE/System", "execute(QString)" );
e << tempItem;
}
void Desktop::raiseContacts()
{
Config cfg( "qpe" ); //F10, 'Contacts'
cfg.setGroup( "AppsKey" );
QString tempItem;
tempItem = cfg.readEntry( "Left2nd", "Address Book" );
if ( tempItem == "Address Book" || tempItem.isEmpty() ) {
tempItem = "addressbook";
}
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");
+ Global::terminateBuiltin( "calibrate" );
tb->startMenu()->launch();
} else {
QCopEnvelope e("QPE/System","execute(QString)");
e << tempItem;
}
}
void Desktop::raiseEmail()
{
- Config cfg( "qpe" ); //F13, 'Mail'
+ Config cfg( "qpe" ); //F13, 'Mail' // only in zaurus, on ipaq mail key is F11
cfg.setGroup( "AppsKey" );
QString tempItem;
tempItem = cfg.readEntry( "RightEnd", "Mail" );
if ( tempItem == "Mail" || tempItem == "qtmail" || tempItem.isEmpty() ) {
tempItem = "mail";
}
QCopEnvelope e("QPE/System","execute(QString)");
e << tempItem;
}
// autoStarts apps on resume and start
-void Desktop::execAutoStart() {
+void Desktop::execAutoStart()
+{
QString appName;
int delay;
QDateTime now = QDateTime::currentDateTime();
Config cfg( "autostart" );
cfg.setGroup( "AutoStart" );
appName = cfg.readEntry( "Apps", "" );
delay = ( cfg.readEntry( "Delay", "0" ) ).toInt();
// If the time between suspend and resume was longer then the
// value saved as delay, start the app
if ( suspendTime.secsTo( now ) >= ( delay * 60 ) && !appName.isEmpty() ) {
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()
@@ -719,88 +719,94 @@ void DesktopApplication::restart()
#elif defined(QT_QWS_CASSIOPEIA)
execl( "/bin/sh", "sh", 0 );
#else
execl( (qpeDir()+"/bin/qpe").latin1(), "qpe", 0 );
#endif
exit(1);
#endif
}
void Desktop::startTransferServer()
{
// start qcop bridge server
qcopBridge = new QCopBridge( 4243 );
if ( !qcopBridge->ok() ) {
delete qcopBridge;
qcopBridge = 0;
}
// start transfer server
transferServer = new TransferServer( 4242 );
if ( !transferServer->ok() ) {
delete transferServer;
transferServer = 0;
}
if ( !transferServer || !qcopBridge )
startTimer( 2000 );
}
void Desktop::timerEvent( QTimerEvent *e )
{
killTimer( e->timerId() );
startTransferServer();
}
void Desktop::terminateServers()
{
delete transferServer;
delete qcopBridge;
transferServer = 0;
qcopBridge = 0;
}
void Desktop::rereadVolumes()
{
Config cfg("qpe");
cfg.setGroup("Volume");
touchclick = cfg.readBoolEntry("TouchSound");
keyclick = cfg.readBoolEntry("KeySound");
alarmsound = cfg.readBoolEntry("AlarmSound");
-// Config cfg("Sound");
-// cfg.setGroup("System");
-// touchclick = cfg.readBoolEntry("Touch");
-// keyclick = cfg.readBoolEntry("Key");
}
void Desktop::keyClick()
{
- if ( keyclick )
- ODevice::inst ( )-> keySound ( );
+ if ( keyclick )
+ ODevice::inst ( )-> keySound ( );
}
void Desktop::screenClick()
{
- if ( touchclick )
- ODevice::inst ( )-> touchSound ( );
+ if ( touchclick )
+ ODevice::inst ( )-> touchSound ( );
}
void Desktop::soundAlarm()
{
- if ( qpedesktop-> alarmsound )
- ODevice::inst ( )-> alarmSound ( );
+ if ( qpedesktop-> alarmsound )
+ ODevice::inst ( )-> alarmSound ( );
}
bool Desktop::eventFilter( QObject *, QEvent *ev )
{
- if ( ev-> type ( ) == QEvent::KeyPress ) {
- QKeyEvent *ke = (QKeyEvent *) ev;
- if ( ke-> key ( ) == Qt::Key_F11 ) { // menu key
- QWidget *active = qApp-> activeWindow ( );
-
- if ( active && active-> isPopup ( ))
- active->close();
-
- raiseMenu ( );
- return true;
+ if ( ev-> type ( ) == QEvent::KeyPress ) {
+ QKeyEvent *ke = (QKeyEvent *) ev;
+ if ( ke-> key ( ) == Qt::Key_F11 ) { // menu key
+ QWidget *active = qApp-> activeWindow ( );
+
+ if ( active && active-> isPopup ( ))
+ active->close();
+
+ /*
+ * On iPAQ 38xx that key is not the "menu key" but the mail key
+ * To not confuse the users, make it launch the mail app on 38xx
+ */
+ if (ODevice::inst()->model() == OMODEL_iPAQ_H38xx ) {
+ QCopEnvelope e( "QPE/System", "execute(QString)" );
+ e << QString( "mail" );
+ return true;
+ } else {
+ raiseMenu ( );
+ return true;
+ }
+ }
}
- }
- return false;
+ return false;
}