summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/launcher/desktop.cpp352
-rw-r--r--core/launcher/desktop.h39
-rw-r--r--core/launcher/launcher.cpp7
-rw-r--r--core/launcher/main.cpp5
-rw-r--r--core/launcher/opie-taskbar.control2
-rw-r--r--core/launcher/runningappbar.cpp9
-rw-r--r--core/launcher/startmenu.cpp3
-rw-r--r--core/launcher/taskbar.cpp12
8 files changed, 186 insertions, 243 deletions
diff --git a/core/launcher/desktop.cpp b/core/launcher/desktop.cpp
index 6c67056..fa9736f 100644
--- a/core/launcher/desktop.cpp
+++ b/core/launcher/desktop.cpp
@@ -60,2 +60,3 @@
+
using namespace Opie;
@@ -67,3 +68,3 @@ public:
{ }
- QCopKeyRegister( int k, const QString &c, const QString &m )
+ QCopKeyRegister( int k, const QCString &c, const QCString &m )
: keyCode( k ), channel( c ), message( m )
@@ -75,3 +76,3 @@ public:
}
- QString getChannel() const
+ QCString getChannel() const
{
@@ -79,3 +80,3 @@ public:
}
- QString getMessage() const
+ QCString getMessage() const
{
@@ -86,3 +87,3 @@ private:
int keyCode;
- QString channel, message;
+ QCString channel, message;
};
@@ -191,5 +192,5 @@ DesktopApplication::DesktopApplication( int& argc, char **argv, Type appType )
- channel = new QCopChannel( "QPE/Desktop", this );
- connect( channel, SIGNAL( received( const QCString&, const QByteArray& ) ),
- this, SLOT( desktopMessage( const QCString&, const QByteArray& ) ) );
+ m_last_button = 0;
+ m_button_timer = new QTimer ( );
+ connect ( m_button_timer, SIGNAL( timeout ( )), this, SLOT( sendHeldAction ( )));
@@ -199,2 +200,6 @@ DesktopApplication::DesktopApplication( int& argc, char **argv, Type appType )
+ channel = new QCopChannel( "QPE/Launcher", this );
+ connect( channel, SIGNAL( received( const QCString&, const QByteArray& ) ),
+ this, SLOT( launcherMessage( const QCString&, const QByteArray& ) ) );
+
m_screensaver = new OpieScreenSaver ( );
@@ -203,3 +208,8 @@ DesktopApplication::DesktopApplication( int& argc, char **argv, Type appType )
+ rereadVolumes();
+ connect( qApp, SIGNAL( volumeChanged( bool ) ), this, SLOT( rereadVolumes() ) );
+
apmTimeout ( );
+
+ grabKeyboard ( );
}
@@ -209,2 +219,4 @@ DesktopApplication::~DesktopApplication()
{
+ ungrabKeyboard ( );
+
delete m_ps;
@@ -238,17 +250,2 @@ void DesktopApplication::apmTimeout()
-void DesktopApplication::desktopMessage( 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 ) );
- }
-}
-
@@ -289,5 +286,16 @@ void DesktopApplication::systemMessage( const QCString & msg, const QByteArray &
}
+ else if ( msg == "sendBusinessCard()" ) {
+ QString card = ::getenv ( "HOME" );
+ card += "/Applications/addressbook/businesscard.vcf";
+
+ if ( QFile::exists( card ) ) {
+ QCopEnvelope e ( "QPE/Obex", "send(QString,QString,QString)" );
+ QString mimetype = "text/x-vCard";
+ e << tr( "business card" ) << card << mimetype;
+ }
+ }
}
-void DesktopApplication::reloadPowerWarnSettings() {
+void DesktopApplication::reloadPowerWarnSettings()
+{
Config cfg( "apm" );
@@ -303,31 +311,22 @@ enum MemState { Unknown, VeryLow, Low, Normal } memstate = Unknown;
-#ifdef Q_WS_QWS
-bool DesktopApplication::qwsEventFilter( QWSEvent *e )
+
+void DesktopApplication::launcherMessage( const QCString & msg, const QByteArray & data )
{
- qpedesktop->checkMemory();
+ QDataStream stream ( data, IO_ReadOnly );
- 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;
+ if ( msg == "deviceButton(int,int,int)" ) {
+ int keycode, press, autoRepeat;
+ stream >> keycode >> press >> autoRepeat;
- /*
- 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() && ke->simpleData.keycode !=0 && press) {
-// qDebug("<<<<<<<<<<<<<keycode %d", ke->simpleData.keycode);
- KeyRegisterList::Iterator it;
- for ( it = keyRegisterList.begin(); it != keyRegisterList.end(); ++it ) {
- if ( ( *it ).getKeyCode() == ke->simpleData.keycode && !autoRepeat && !keyboardGrabbed() ) {
- if ( press )
- qDebug( "press" );
- else
- qDebug( "release" );
- QCopEnvelope( ( *it ).getChannel().utf8(), ( *it ).getMessage().utf8() );
+ const ODeviceButton *db = ODevice::inst ( )-> buttonForKeycode ( keycode );
+
+ if ( db )
+ checkButtonAction ( db, keycode, press, autoRepeat );
}
+ else if ( msg == "keyRegister(int,QCString,QCString)" ) {
+ int k;
+ QCString c, m;
+ stream >> k >> c >> m;
+
+ keyRegisterList.append ( QCopKeyRegister ( k, c, m ));
}
@@ -335,37 +334,76 @@ bool DesktopApplication::qwsEventFilter( QWSEvent *e )
- if ( !keyboardGrabbed() ) {
- if ( ke->simpleData.keycode == Key_F9 ) {
- if ( press )
- emit datebook();
- return TRUE;
+void DesktopApplication::sendHeldAction ( )
+{
+ if ( m_last_button ) {
+ m_last_button-> heldAction ( ). send ( );
+ m_last_button = 0;
}
- 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() ) );
+
+
+
+void DesktopApplication::checkButtonAction ( const ODeviceButton *db, int keycode, bool press, bool autoRepeat )
+{
+ if ( db ) {
+ if ( !press && !autoRepeat && m_button_timer-> isActive ( )) {
+ m_button_timer-> stop ( );
+ if ( !db-> pressedAction ( ). channel ( ). isEmpty ( )) {
+ db-> pressedAction ( ). send ( );
}
- return TRUE;
}
+ else if ( press && !autoRepeat ) {
+ m_button_timer-> stop ( );
- if ( ke->simpleData.keycode == Key_F11 ) {
- if ( press ) emit menu();
- return TRUE;
+ if ( !db-> heldAction ( ). channel ( ). isEmpty ( )) {
+ m_last_button = db;
+ m_button_timer-> start ( ODevice::inst ( )-> buttonHoldTime ( ), true );
+ }
+ }
+ }
}
- if ( ke->simpleData.keycode == Key_F12 ) {
- while ( activePopupWidget() )
- activePopupWidget() ->close();
- if ( press )
- emit launch();
- return TRUE;
+bool DesktopApplication::eventFilter ( QObject *o, QEvent *e )
+{
+ if ( e-> type ( ) == QEvent::KeyPress || e-> type ( ) == QEvent::KeyRelease ) {
+ QKeyEvent *ke = (QKeyEvent *) e;
+
+ const ODeviceButton *db = ODevice::inst ( )-> buttonForKeycode ( ke-> key ( ));
+
+ if ( db ) {
+ checkButtonAction ( db, ke-> key ( ), e-> type ( ) == QEvent::KeyPress, ke-> isAutoRepeat ( ));
+ return true;
+ }
+ }
+ return QPEApplication::eventFilter ( o, e );
+}
+
+#ifdef Q_WS_QWS
+
+bool DesktopApplication::qwsEventFilter( QWSEvent *e )
+{
+ qpedesktop->checkMemory();
+
+ if ( e->type == QWSEvent::Key ) {
+ QWSKeyEvent * ke = (QWSKeyEvent *) e;
+ ushort keycode = ke-> simpleData. keycode;
+
+ if ( !loggedin && keycode != Key_F34 )
+ return true;
+
+ bool press = ke-> simpleData. is_press;
+ bool autoRepeat = ke-> simpleData. is_auto_repeat;
+
+ if ( !keyboardGrabbed ( )) {
+ // 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 ( keycode != 0 && press && !autoRepeat ) {
+ for ( KeyRegisterList::Iterator it = keyRegisterList.begin(); it != keyRegisterList.end(); ++it ) {
+ if (( *it ). getKeyCode ( ) == keycode ) {
+ QCopEnvelope (( *it ). getChannel ( ), ( *it ). getMessage ( ));
+ return true;
+ }
}
- if ( ke->simpleData.keycode == Key_F13 ) {
- if ( press )
- emit email();
- return TRUE;
}
@@ -373,30 +411,23 @@ bool DesktopApplication::qwsEventFilter( QWSEvent *e )
- if ( ke->simpleData.keycode == Key_F34 ) {
+ if ( keycode == HardKey_Suspend ) {
if ( press )
emit power();
- return TRUE;
+ return true;
}
- // This was used for the iPAQ PowerButton
- // See main.cpp for new KeyboardFilter
- //
- // if ( ke->simpleData.keycode == Key_SysReq ) {
- // if ( press ) emit power();
- // return TRUE;
- // }
- if ( ke->simpleData.keycode == Key_F35 ) {
+ else if ( keycode == HardKey_Backlight ) {
if ( press )
emit backlight();
- return TRUE;
+ return true;
}
- if ( ke->simpleData.keycode == Key_F32 ) {
+ else if ( keycode == Key_F32 ) {
if ( press )
QCopEnvelope e( "QPE/Desktop", "startSync()" );
- return TRUE;
+ return true;
}
- if ( ke->simpleData.keycode == Key_F31 && !ke->simpleData.modifiers ) {
+ else if ( keycode == Key_F31 && !ke-> simpleData. modifiers ) { // Symbol Key -> show Unicode IM
if ( press )
emit symbol();
- return TRUE;
+ return true;
}
- if ( ke->simpleData.keycode == Key_NumLock ) {
+ else if ( keycode == Key_NumLock ) {
if ( press )
@@ -404,3 +435,3 @@ bool DesktopApplication::qwsEventFilter( QWSEvent *e )
}
- if ( ke->simpleData.keycode == Key_CapsLock ) {
+ else if ( keycode == Key_CapsLock ) {
if ( press )
@@ -408,13 +439,16 @@ bool DesktopApplication::qwsEventFilter( QWSEvent *e )
}
- if ( ( press && !autoRepeat ) || ( !press && autoRepeat ) )
- qpedesktop->keyClick();
+ if (( press && !autoRepeat ) || ( !press && autoRepeat )) {
+ if ( m_keyclick_sound )
+ ODevice::inst ( )-> keySound ( );
}
- else {
- if ( e->type == QWSEvent::Mouse ) {
+ }
+ else if ( e-> type == QWSEvent::Mouse ) {
QWSMouseEvent * me = ( QWSMouseEvent * ) e;
- static bool up = TRUE;
+ static bool up = true;
+
if ( me->simpleData.state & LeftButton ) {
if ( up ) {
- up = FALSE;
- qpedesktop->screenClick();
+ up = false;
+ if ( m_screentap_sound )
+ ODevice::inst ( ) -> touchSound ( );
}
@@ -422,4 +456,3 @@ bool DesktopApplication::qwsEventFilter( QWSEvent *e )
else {
- up = TRUE;
- }
+ up = true;
}
@@ -432,15 +465,2 @@ bool DesktopApplication::qwsEventFilter( QWSEvent *e )
-void DesktopApplication::sendCard()
-{
- delete cardSendTimer;
- cardSendTimer = 0;
- QString card = getenv( "HOME" );
- card += "/Applications/addressbook/businesscard.vcf";
-
- if ( QFile::exists( card ) ) {
- QCopEnvelope e( "QPE/Obex", "send(QString,QString,QString)" );
- QString mimetype = "text/x-vCard";
- e << tr( "business card" ) << card << mimetype;
- }
-}
@@ -488,6 +508,4 @@ Desktop::Desktop() :
( void ) new IrServer( this );
- rereadVolumes();
packageSlave = new PackageSlave( this );
- connect( qApp, SIGNAL( volumeChanged( bool ) ), this, SLOT( rereadVolumes() ) );
@@ -585,24 +603,2 @@ static bool hasVisibleWindow( const QString& clientname )
-void Desktop::raiseLauncher()
-{
- Config cfg( "qpe" ); //F12 'Home'
- cfg.setGroup( "AppsKey" );
- QString tempItem;
- tempItem = cfg.readEntry( "Middle", "Home" );
- if ( tempItem == "Home" || tempItem.isEmpty() ) {
- home ( );
- }
- else {
- QCopEnvelope e( "QPE/System", "execute(QString)" );
- e << tempItem;
- }
-}
-
-void Desktop::home ( )
-{
- if ( isVisibleWindow( launcher->winId() ) )
- launcher->nextView();
- else
- launcher->raise();
-}
@@ -627,57 +623,2 @@ void Desktop::executeOrModify( const QString& appLnkFile )
-void Desktop::raiseDatebook()
-{
- Config cfg( "qpe" ); //F9 'Activity'
- cfg.setGroup( "AppsKey" );
- QString tempItem;
- tempItem = cfg.readEntry( "LeftEnd" , "Calendar" );
- if ( tempItem == "Calendar" || 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" );
- tb->startMenu() ->launch();
- }
- else {
- QCopEnvelope e( "QPE/System", "execute(QString)" );
- e << tempItem;
- }
-}
-
-void Desktop::raiseEmail()
-{
- 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
@@ -729,2 +670,3 @@ void Desktop::togglePower()
#ifdef QWS
+
if ( Password::needToAuthenticate ( true ) && qt_screen ) {
@@ -878,3 +820,3 @@ void Desktop::terminateServers()
-void Desktop::rereadVolumes()
+void DesktopApplication::rereadVolumes()
{
@@ -882,23 +824,17 @@ void Desktop::rereadVolumes()
cfg.setGroup( "Volume" );
- touchclick = cfg.readBoolEntry( "TouchSound" );
- keyclick = cfg.readBoolEntry( "KeySound" );
- alarmsound = cfg.readBoolEntry( "AlarmSound" );
-}
-void Desktop::keyClick()
-{
- if ( keyclick )
- ODevice::inst ( ) -> keySound ( );
+ m_screentap_sound = cfg. readBoolEntry ( "TouchSound" );
+ m_keyclick_sound = cfg. readBoolEntry ( "KeySound" );
+ m_alarm_sound = cfg. readBoolEntry ( "AlarmSound" );
}
-void Desktop::screenClick()
+void DesktopApplication::soundAlarm()
{
- if ( touchclick )
- ODevice::inst ( ) -> touchSound ( );
+ if ( me ( )-> m_alarm_sound )
+ ODevice::inst ( )-> alarmSound ( );
}
-void Desktop::soundAlarm()
+DesktopApplication *DesktopApplication::me ( )
{
- if ( qpedesktop-> alarmsound )
- ODevice::inst ( ) -> alarmSound ( );
+ return (DesktopApplication *) qApp;
}
diff --git a/core/launcher/desktop.h b/core/launcher/desktop.h
index 1f8daa0..6cb7ab2 100644
--- a/core/launcher/desktop.h
+++ b/core/launcher/desktop.h
@@ -27,2 +27,3 @@
#include <qpe/qpeapplication.h>
+#include <opie/odevicebutton.h>
@@ -50,2 +51,4 @@ public:
+ static void soundAlarm(); // only because QCop soundAlarm() is defined in QPE/TaskBar
+
signals:
@@ -53,6 +56,3 @@ signals:
void home();
- void datebook();
- void contacts();
void launch();
- void email();
void backlight();
@@ -74,4 +74,5 @@ protected:
public slots:
- virtual void desktopMessage ( const QCString &msg, const QByteArray &data );
virtual void systemMessage ( const QCString &msg, const QByteArray &data );
+ virtual void launcherMessage ( const QCString &msg, const QByteArray &data );
+ void rereadVolumes();
@@ -80,3 +81,11 @@ protected slots:
void apmTimeout();
- void sendCard();
+ void sendHeldAction ( );
+
+protected:
+ virtual bool eventFilter ( QObject *o, QEvent *e );
+ void checkButtonAction ( const Opie::ODeviceButton *db, int keycode, bool press, bool autoRepeat );
+
+private:
+ static DesktopApplication *me ( );
+
private:
@@ -92,2 +101,9 @@ private:
int m_currentPowerLevel;
+
+ const Opie::ODeviceButton *m_last_button;
+ QTimer *m_button_timer;
+
+ bool m_keyclick_sound : 1;
+ bool m_screentap_sound : 1;
+ bool m_alarm_sound : 1;
};
@@ -107,12 +123,3 @@ public:
- void keyClick();
- void screenClick();
- static void soundAlarm();
-
public slots:
- void raiseDatebook();
- void raiseContacts();
- void raiseMenu();
- void raiseLauncher();
- void raiseEmail();
void execAutoStart();
@@ -124,5 +131,2 @@ public slots:
void terminateServers();
- void rereadVolumes();
-
- void home ( );
@@ -146,3 +150,2 @@ private:
QDateTime suspendTime;
- bool keyclick, touchclick, alarmsound;
};
diff --git a/core/launcher/launcher.cpp b/core/launcher/launcher.cpp
index 767efb2..6764338 100644
--- a/core/launcher/launcher.cpp
+++ b/core/launcher/launcher.cpp
@@ -1184,2 +1184,9 @@ void Launcher::launcherMessage( const QCString &msg, const QByteArray &data)
}
+ else if ( msg == "home()" ) {
+ if ( isVisibleWindow( winId ( )))
+ nextView ( );
+ else
+ raise ( );
+
+ }
}
diff --git a/core/launcher/main.cpp b/core/launcher/main.cpp
index 8b91f5d..49b41d6 100644
--- a/core/launcher/main.cpp
+++ b/core/launcher/main.cpp
@@ -94,7 +94,2 @@ int initApplication( int argc, char ** argv )
- QObject::connect( &a, SIGNAL(menu()), d, SLOT(raiseMenu()) );
- QObject::connect( &a, SIGNAL(datebook()), d, SLOT(raiseDatebook()) );
- QObject::connect( &a, SIGNAL(contacts()), d, SLOT(raiseContacts()) );
- QObject::connect( &a, SIGNAL(launch()), d, SLOT(raiseLauncher()) );
- QObject::connect( &a, SIGNAL(email()), d, SLOT(raiseEmail()) );
QObject::connect( &a, SIGNAL(power()), d, SLOT(togglePower()) );
diff --git a/core/launcher/opie-taskbar.control b/core/launcher/opie-taskbar.control
index 13e5715..8bf2113 100644
--- a/core/launcher/opie-taskbar.control
+++ b/core/launcher/opie-taskbar.control
@@ -1,2 +1,2 @@
-Files: bin/qpe apps/Settings/Calibrate.desktop pics/launcher plugins/applets/libsuspendapplet.so* plugins/applets/libhomeapplet.so* plugins/applets/liblogoutapplet.so*
+Files: bin/qpe apps/Settings/Calibrate.desktop pics/launcher pics/devicebuttons/*.png plugins/applets/libsuspendapplet.so* plugins/applets/libhomeapplet.so* plugins/applets/liblogoutapplet.so*
Priority: required
diff --git a/core/launcher/runningappbar.cpp b/core/launcher/runningappbar.cpp
index 3ac66f2..356200b 100644
--- a/core/launcher/runningappbar.cpp
+++ b/core/launcher/runningappbar.cpp
@@ -126,11 +126,2 @@ void RunningAppBar::removeTask(const AppLnk& appLnk)
- // grab the keyboard back, in case the app crashed/forgot
-
- QPEApplication *qpeapp = (QPEApplication *) qApp;
-
- if ( appLnk.exec() == qpeapp-> keyboardGrabbedBy ( )) {
- qDebug ( "grabbing keyboard back from %s", appLnk.name().latin1());
- qpeapp-> grabKeyboard ( );
- }
-
delete target;
diff --git a/core/launcher/startmenu.cpp b/core/launcher/startmenu.cpp
index 88c6219..39e07c8 100644
--- a/core/launcher/startmenu.cpp
+++ b/core/launcher/startmenu.cpp
@@ -247,4 +247,5 @@ void StartMenu::launch()
- if ( launchMenu->isVisible() )
+ if ( launchMenu-> isVisible ( )) {
launchMenu->hide();
+ }
else {
diff --git a/core/launcher/taskbar.cpp b/core/launcher/taskbar.cpp
index b4b7df6..77035a3 100644
--- a/core/launcher/taskbar.cpp
+++ b/core/launcher/taskbar.cpp
@@ -282,3 +282,3 @@ void TaskBar::receive( const QCString &msg, const QByteArray &data )
} else if ( msg == "soundAlarm()" ) {
- Desktop::soundAlarm();
+ DesktopApplication::soundAlarm ( );
}
@@ -296,2 +296,12 @@ void TaskBar::receive( const QCString &msg, const QByteArray &data )
}
+ else if ( msg == "toggleMenu()" ) {
+ if ( sm-> launchMenu-> isVisible ( ))
+ sm-> launch ( );
+ else {
+ QCopEnvelope e ( "QPE/System", "toggleApplicationMenu()" );
+ }
+ }
+ else if ( msg == "toggleStartMenu()" ) {
+ sm-> launch ( );
+ }
}