summaryrefslogtreecommitdiff
path: root/core
authorsandman <sandman>2002-12-23 00:07:32 (UTC)
committer sandman <sandman>2002-12-23 00:07:32 (UTC)
commit6f82a7bad0746d37ff1545717be3fe67e2eed17c (patch) (unidiff)
treeeaf5e6b6d7e7fcc648d25ae7021d1785b80122f2 /core
parentc513f413c7d901cc9945714c8e7eb47292f63306 (diff)
downloadopie-6f82a7bad0746d37ff1545717be3fe67e2eed17c.zip
opie-6f82a7bad0746d37ff1545717be3fe67e2eed17c.tar.gz
opie-6f82a7bad0746d37ff1545717be3fe67e2eed17c.tar.bz2
- ported the device button handling to the new ODevice based framework
- removed the key re-grabbing in runningsappbar (not necessary anymore) - added a few new QCops to make all "special" launcher functions available via qcop - added the devicebuttons to the opie-taskbar ipk
Diffstat (limited to 'core') (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 @@
60 60
61
61using namespace Opie; 62using namespace Opie;
@@ -67,3 +68,3 @@ public:
67 { } 68 { }
68 QCopKeyRegister( int k, const QString &c, const QString &m ) 69 QCopKeyRegister( int k, const QCString &c, const QCString &m )
69 : keyCode( k ), channel( c ), message( m ) 70 : keyCode( k ), channel( c ), message( m )
@@ -75,3 +76,3 @@ public:
75 } 76 }
76 QString getChannel() const 77 QCString getChannel() const
77 { 78 {
@@ -79,3 +80,3 @@ public:
79 } 80 }
80 QString getMessage() const 81 QCString getMessage() const
81 { 82 {
@@ -86,3 +87,3 @@ private:
86 int keyCode; 87 int keyCode;
87 QString channel, message; 88 QCString channel, message;
88}; 89};
@@ -191,5 +192,5 @@ DesktopApplication::DesktopApplication( int& argc, char **argv, Type appType )
191 192
192 channel = new QCopChannel( "QPE/Desktop", this ); 193 m_last_button = 0;
193 connect( channel, SIGNAL( received( const QCString&, const QByteArray& ) ), 194 m_button_timer = new QTimer ( );
194 this, SLOT( desktopMessage( const QCString&, const QByteArray& ) ) ); 195 connect ( m_button_timer, SIGNAL( timeout ( )), this, SLOT( sendHeldAction ( )));
195 196
@@ -199,2 +200,6 @@ DesktopApplication::DesktopApplication( int& argc, char **argv, Type appType )
199 200
201 channel = new QCopChannel( "QPE/Launcher", this );
202 connect( channel, SIGNAL( received( const QCString&, const QByteArray& ) ),
203 this, SLOT( launcherMessage( const QCString&, const QByteArray& ) ) );
204
200 m_screensaver = new OpieScreenSaver ( ); 205 m_screensaver = new OpieScreenSaver ( );
@@ -203,3 +208,8 @@ DesktopApplication::DesktopApplication( int& argc, char **argv, Type appType )
203 208
209 rereadVolumes();
210 connect( qApp, SIGNAL( volumeChanged( bool ) ), this, SLOT( rereadVolumes() ) );
211
204 apmTimeout ( ); 212 apmTimeout ( );
213
214 grabKeyboard ( );
205} 215}
@@ -209,2 +219,4 @@ DesktopApplication::~DesktopApplication()
209{ 219{
220 ungrabKeyboard ( );
221
210 delete m_ps; 222 delete m_ps;
@@ -238,17 +250,2 @@ void DesktopApplication::apmTimeout()
238 250
239void DesktopApplication::desktopMessage( const QCString &msg, const QByteArray &data )
240{
241 QDataStream stream( data, IO_ReadOnly );
242 if ( msg == "keyRegister(int key, QString channel, QString message)" ) {
243 int k;
244 QString c, m;
245 stream >> k;
246 stream >> c;
247 stream >> m;
248
249 qWarning( "KeyRegisterReceived: %i, %s, %s", k, ( const char* ) c, ( const char * ) m );
250 keyRegisterList.append( QCopKeyRegister( k, c, m ) );
251 }
252}
253
254 251
@@ -289,5 +286,16 @@ void DesktopApplication::systemMessage( const QCString & msg, const QByteArray &
289 } 286 }
287 else if ( msg == "sendBusinessCard()" ) {
288 QString card = ::getenv ( "HOME" );
289 card += "/Applications/addressbook/businesscard.vcf";
290
291 if ( QFile::exists( card ) ) {
292 QCopEnvelope e ( "QPE/Obex", "send(QString,QString,QString)" );
293 QString mimetype = "text/x-vCard";
294 e << tr( "business card" ) << card << mimetype;
295 }
296 }
290} 297}
291 298
292void DesktopApplication::reloadPowerWarnSettings() { 299void DesktopApplication::reloadPowerWarnSettings()
300{
293 Config cfg( "apm" ); 301 Config cfg( "apm" );
@@ -303,31 +311,22 @@ enum MemState { Unknown, VeryLow, Low, Normal } memstate = Unknown;
303 311
304#ifdef Q_WS_QWS 312
305bool DesktopApplication::qwsEventFilter( QWSEvent *e ) 313void DesktopApplication::launcherMessage( const QCString & msg, const QByteArray & data )
306{ 314{
307 qpedesktop->checkMemory(); 315 QDataStream stream ( data, IO_ReadOnly );
308 316
309 if ( e->type == QWSEvent::Key ) { 317 if ( msg == "deviceButton(int,int,int)" ) {
310 QWSKeyEvent * ke = ( QWSKeyEvent * ) e; 318 int keycode, press, autoRepeat;
311 if ( !loggedin && ke->simpleData.keycode != Key_F34 ) 319 stream >> keycode >> press >> autoRepeat;
312 return TRUE;
313 bool press = ke->simpleData.is_press;
314 bool autoRepeat = ke->simpleData.is_auto_repeat;
315 320
316 /* 321 const ODeviceButton *db = ODevice::inst ( )-> buttonForKeycode ( keycode );
317 app that registers key/message to be sent back to the app, when it doesn't have focus, 322
318 when user presses key, unless keyboard has been requested from app. 323 if ( db )
319 will not send multiple repeats if user holds key 324 checkButtonAction ( db, keycode, press, autoRepeat );
320 i.e. one shot
321 */
322 if ( !keyRegisterList.isEmpty() && ke->simpleData.keycode !=0 && press) {
323// qDebug("<<<<<<<<<<<<<keycode %d", ke->simpleData.keycode);
324 KeyRegisterList::Iterator it;
325 for ( it = keyRegisterList.begin(); it != keyRegisterList.end(); ++it ) {
326 if ( ( *it ).getKeyCode() == ke->simpleData.keycode && !autoRepeat && !keyboardGrabbed() ) {
327 if ( press )
328 qDebug( "press" );
329 else
330 qDebug( "release" );
331 QCopEnvelope( ( *it ).getChannel().utf8(), ( *it ).getMessage().utf8() );
332 } 325 }
326 else if ( msg == "keyRegister(int,QCString,QCString)" ) {
327 int k;
328 QCString c, m;
329 stream >> k >> c >> m;
330
331 keyRegisterList.append ( QCopKeyRegister ( k, c, m ));
333 } 332 }
@@ -335,37 +334,76 @@ bool DesktopApplication::qwsEventFilter( QWSEvent *e )
335 334
336 if ( !keyboardGrabbed() ) { 335void DesktopApplication::sendHeldAction ( )
337 if ( ke->simpleData.keycode == Key_F9 ) { 336{
338 if ( press ) 337 if ( m_last_button ) {
339 emit datebook(); 338 m_last_button-> heldAction ( ). send ( );
340 return TRUE; 339 m_last_button = 0;
341 } 340 }
342 if ( ke->simpleData.keycode == Key_F10 ) {
343 if ( !press && cardSendTimer ) {
344 emit contacts();
345 delete cardSendTimer;
346 } 341 }
347 else if ( press ) { 342
348 cardSendTimer = new QTimer(); 343
349 cardSendTimer->start( 2000, TRUE ); 344
350 connect( cardSendTimer, SIGNAL( timeout() ), this, SLOT( sendCard() ) ); 345void DesktopApplication::checkButtonAction ( const ODeviceButton *db, int keycode, bool press, bool autoRepeat )
346 {
347 if ( db ) {
348 if ( !press && !autoRepeat && m_button_timer-> isActive ( )) {
349 m_button_timer-> stop ( );
350 if ( !db-> pressedAction ( ). channel ( ). isEmpty ( )) {
351 db-> pressedAction ( ). send ( );
351 } 352 }
352 return TRUE;
353 } 353 }
354 else if ( press && !autoRepeat ) {
355 m_button_timer-> stop ( );
354 356
355 if ( ke->simpleData.keycode == Key_F11 ) { 357 if ( !db-> heldAction ( ). channel ( ). isEmpty ( )) {
356 if ( press ) emit menu(); 358 m_last_button = db;
357 return TRUE; 359 m_button_timer-> start ( ODevice::inst ( )-> buttonHoldTime ( ), true );
360 }
361 }
362 }
358 } 363 }
359 364
360 if ( ke->simpleData.keycode == Key_F12 ) { 365bool DesktopApplication::eventFilter ( QObject *o, QEvent *e )
361 while ( activePopupWidget() ) 366{
362 activePopupWidget() ->close(); 367 if ( e-> type ( ) == QEvent::KeyPress || e-> type ( ) == QEvent::KeyRelease ) {
363 if ( press ) 368 QKeyEvent *ke = (QKeyEvent *) e;
364 emit launch(); 369
365 return TRUE; 370 const ODeviceButton *db = ODevice::inst ( )-> buttonForKeycode ( ke-> key ( ));
371
372 if ( db ) {
373 checkButtonAction ( db, ke-> key ( ), e-> type ( ) == QEvent::KeyPress, ke-> isAutoRepeat ( ));
374 return true;
375 }
376 }
377 return QPEApplication::eventFilter ( o, e );
378}
379
380#ifdef Q_WS_QWS
381
382bool DesktopApplication::qwsEventFilter( QWSEvent *e )
383{
384 qpedesktop->checkMemory();
385
386 if ( e->type == QWSEvent::Key ) {
387 QWSKeyEvent * ke = (QWSKeyEvent *) e;
388 ushort keycode = ke-> simpleData. keycode;
389
390 if ( !loggedin && keycode != Key_F34 )
391 return true;
392
393 bool press = ke-> simpleData. is_press;
394 bool autoRepeat = ke-> simpleData. is_auto_repeat;
395
396 if ( !keyboardGrabbed ( )) {
397 // app that registers key/message to be sent back to the app, when it doesn't have focus,
398 // when user presses key, unless keyboard has been requested from app.
399 // will not send multiple repeats if user holds key
400 // i.e. one shot
401
402 if ( keycode != 0 && press && !autoRepeat ) {
403 for ( KeyRegisterList::Iterator it = keyRegisterList.begin(); it != keyRegisterList.end(); ++it ) {
404 if (( *it ). getKeyCode ( ) == keycode ) {
405 QCopEnvelope (( *it ). getChannel ( ), ( *it ). getMessage ( ));
406 return true;
407 }
366 } 408 }
367 if ( ke->simpleData.keycode == Key_F13 ) {
368 if ( press )
369 emit email();
370 return TRUE;
371 } 409 }
@@ -373,30 +411,23 @@ bool DesktopApplication::qwsEventFilter( QWSEvent *e )
373 411
374 if ( ke->simpleData.keycode == Key_F34 ) { 412 if ( keycode == HardKey_Suspend ) {
375 if ( press ) 413 if ( press )
376 emit power(); 414 emit power();
377 return TRUE; 415 return true;
378 } 416 }
379 // This was used for the iPAQ PowerButton 417 else if ( keycode == HardKey_Backlight ) {
380 // See main.cpp for new KeyboardFilter
381 //
382 // if ( ke->simpleData.keycode == Key_SysReq ) {
383 // if ( press ) emit power();
384 // return TRUE;
385 // }
386 if ( ke->simpleData.keycode == Key_F35 ) {
387 if ( press ) 418 if ( press )
388 emit backlight(); 419 emit backlight();
389 return TRUE; 420 return true;
390 } 421 }
391 if ( ke->simpleData.keycode == Key_F32 ) { 422 else if ( keycode == Key_F32 ) {
392 if ( press ) 423 if ( press )
393 QCopEnvelope e( "QPE/Desktop", "startSync()" ); 424 QCopEnvelope e( "QPE/Desktop", "startSync()" );
394 return TRUE; 425 return true;
395 } 426 }
396 if ( ke->simpleData.keycode == Key_F31 && !ke->simpleData.modifiers ) { 427 else if ( keycode == Key_F31 && !ke-> simpleData. modifiers ) { // Symbol Key -> show Unicode IM
397 if ( press ) 428 if ( press )
398 emit symbol(); 429 emit symbol();
399 return TRUE; 430 return true;
400 } 431 }
401 if ( ke->simpleData.keycode == Key_NumLock ) { 432 else if ( keycode == Key_NumLock ) {
402 if ( press ) 433 if ( press )
@@ -404,3 +435,3 @@ bool DesktopApplication::qwsEventFilter( QWSEvent *e )
404 } 435 }
405 if ( ke->simpleData.keycode == Key_CapsLock ) { 436 else if ( keycode == Key_CapsLock ) {
406 if ( press ) 437 if ( press )
@@ -408,13 +439,16 @@ bool DesktopApplication::qwsEventFilter( QWSEvent *e )
408 } 439 }
409 if ( ( press && !autoRepeat ) || ( !press && autoRepeat ) ) 440 if (( press && !autoRepeat ) || ( !press && autoRepeat )) {
410 qpedesktop->keyClick(); 441 if ( m_keyclick_sound )
442 ODevice::inst ( )-> keySound ( );
411 } 443 }
412 else { 444 }
413 if ( e->type == QWSEvent::Mouse ) { 445 else if ( e-> type == QWSEvent::Mouse ) {
414 QWSMouseEvent * me = ( QWSMouseEvent * ) e; 446 QWSMouseEvent * me = ( QWSMouseEvent * ) e;
415 static bool up = TRUE; 447 static bool up = true;
448
416 if ( me->simpleData.state & LeftButton ) { 449 if ( me->simpleData.state & LeftButton ) {
417 if ( up ) { 450 if ( up ) {
418 up = FALSE; 451 up = false;
419 qpedesktop->screenClick(); 452 if ( m_screentap_sound )
453 ODevice::inst ( ) -> touchSound ( );
420 } 454 }
@@ -422,4 +456,3 @@ bool DesktopApplication::qwsEventFilter( QWSEvent *e )
422 else { 456 else {
423 up = TRUE; 457 up = true;
424 }
425 } 458 }
@@ -432,15 +465,2 @@ bool DesktopApplication::qwsEventFilter( QWSEvent *e )
432 465
433void DesktopApplication::sendCard()
434{
435 delete cardSendTimer;
436 cardSendTimer = 0;
437 QString card = getenv( "HOME" );
438 card += "/Applications/addressbook/businesscard.vcf";
439
440 if ( QFile::exists( card ) ) {
441 QCopEnvelope e( "QPE/Obex", "send(QString,QString,QString)" );
442 QString mimetype = "text/x-vCard";
443 e << tr( "business card" ) << card << mimetype;
444 }
445}
446 466
@@ -488,6 +508,4 @@ Desktop::Desktop() :
488 ( void ) new IrServer( this ); 508 ( void ) new IrServer( this );
489 rereadVolumes();
490 509
491 packageSlave = new PackageSlave( this ); 510 packageSlave = new PackageSlave( this );
492 connect( qApp, SIGNAL( volumeChanged( bool ) ), this, SLOT( rereadVolumes() ) );
493 511
@@ -585,24 +603,2 @@ static bool hasVisibleWindow( const QString& clientname )
585 603
586void Desktop::raiseLauncher()
587{
588 Config cfg( "qpe" ); //F12 'Home'
589 cfg.setGroup( "AppsKey" );
590 QString tempItem;
591 tempItem = cfg.readEntry( "Middle", "Home" );
592 if ( tempItem == "Home" || tempItem.isEmpty() ) {
593 home ( );
594 }
595 else {
596 QCopEnvelope e( "QPE/System", "execute(QString)" );
597 e << tempItem;
598 }
599}
600
601void Desktop::home ( )
602{
603 if ( isVisibleWindow( launcher->winId() ) )
604 launcher->nextView();
605 else
606 launcher->raise();
607}
608 604
@@ -627,57 +623,2 @@ void Desktop::executeOrModify( const QString& appLnkFile )
627 623
628void Desktop::raiseDatebook()
629{
630 Config cfg( "qpe" ); //F9 'Activity'
631 cfg.setGroup( "AppsKey" );
632 QString tempItem;
633 tempItem = cfg.readEntry( "LeftEnd" , "Calendar" );
634 if ( tempItem == "Calendar" || tempItem.isEmpty() ) {
635 tempItem = "datebook";
636 }
637 QCopEnvelope e( "QPE/System", "execute(QString)" );
638 e << tempItem;
639}
640
641void Desktop::raiseContacts()
642{
643 Config cfg( "qpe" ); //F10, 'Contacts'
644 cfg.setGroup( "AppsKey" );
645 QString tempItem;
646 tempItem = cfg.readEntry( "Left2nd", "Address Book" );
647 if ( tempItem == "Address Book" || tempItem.isEmpty() ) {
648 tempItem = "addressbook";
649 }
650 QCopEnvelope e( "QPE/System", "execute(QString)" );
651 e << tempItem;
652}
653
654void Desktop::raiseMenu()
655{
656 Config cfg( "qpe" ); //F11, 'Menu
657 cfg.setGroup( "AppsKey" );
658 QString tempItem;
659 tempItem = cfg.readEntry( "Right2nd" , "Popup Menu" );
660 if ( tempItem == "Popup Menu" || tempItem.isEmpty() ) {
661 Global::terminateBuiltin( "calibrate" );
662 tb->startMenu() ->launch();
663 }
664 else {
665 QCopEnvelope e( "QPE/System", "execute(QString)" );
666 e << tempItem;
667 }
668}
669
670void Desktop::raiseEmail()
671{
672 Config cfg( "qpe" ); //F13, 'Mail' // only in zaurus, on ipaq mail key is F11
673 cfg.setGroup( "AppsKey" );
674 QString tempItem;
675 tempItem = cfg.readEntry( "RightEnd", "Mail" );
676 if ( tempItem == "Mail" || tempItem == "qtmail" || tempItem.isEmpty() ) {
677 tempItem = "mail";
678 }
679 QCopEnvelope e( "QPE/System", "execute(QString)" );
680 e << tempItem;
681}
682
683// autoStarts apps on resume and start 624// autoStarts apps on resume and start
@@ -729,2 +670,3 @@ void Desktop::togglePower()
729#ifdef QWS 670#ifdef QWS
671
730 if ( Password::needToAuthenticate ( true ) && qt_screen ) { 672 if ( Password::needToAuthenticate ( true ) && qt_screen ) {
@@ -878,3 +820,3 @@ void Desktop::terminateServers()
878 820
879void Desktop::rereadVolumes() 821void DesktopApplication::rereadVolumes()
880{ 822{
@@ -882,23 +824,17 @@ void Desktop::rereadVolumes()
882 cfg.setGroup( "Volume" ); 824 cfg.setGroup( "Volume" );
883 touchclick = cfg.readBoolEntry( "TouchSound" );
884 keyclick = cfg.readBoolEntry( "KeySound" );
885 alarmsound = cfg.readBoolEntry( "AlarmSound" );
886}
887 825
888void Desktop::keyClick() 826 m_screentap_sound = cfg. readBoolEntry ( "TouchSound" );
889{ 827 m_keyclick_sound = cfg. readBoolEntry ( "KeySound" );
890 if ( keyclick ) 828 m_alarm_sound = cfg. readBoolEntry ( "AlarmSound" );
891 ODevice::inst ( ) -> keySound ( );
892} 829}
893 830
894void Desktop::screenClick() 831void DesktopApplication::soundAlarm()
895{ 832{
896 if ( touchclick ) 833 if ( me ( )-> m_alarm_sound )
897 ODevice::inst ( ) -> touchSound ( ); 834 ODevice::inst ( )-> alarmSound ( );
898} 835}
899 836
900void Desktop::soundAlarm() 837DesktopApplication *DesktopApplication::me ( )
901{ 838{
902 if ( qpedesktop-> alarmsound ) 839 return (DesktopApplication *) qApp;
903 ODevice::inst ( ) -> alarmSound ( );
904} 840}
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 @@
27#include <qpe/qpeapplication.h> 27#include <qpe/qpeapplication.h>
28#include <opie/odevicebutton.h>
28 29
@@ -50,2 +51,4 @@ public:
50 51
52 static void soundAlarm(); // only because QCop soundAlarm() is defined in QPE/TaskBar
53
51signals: 54signals:
@@ -53,6 +56,3 @@ signals:
53 void home(); 56 void home();
54 void datebook();
55 void contacts();
56 void launch(); 57 void launch();
57 void email();
58 void backlight(); 58 void backlight();
@@ -74,4 +74,5 @@ protected:
74public slots: 74public slots:
75 virtual void desktopMessage ( const QCString &msg, const QByteArray &data );
76 virtual void systemMessage ( const QCString &msg, const QByteArray &data ); 75 virtual void systemMessage ( const QCString &msg, const QByteArray &data );
76 virtual void launcherMessage ( const QCString &msg, const QByteArray &data );
77 void rereadVolumes();
77 78
@@ -80,3 +81,11 @@ protected slots:
80 void apmTimeout(); 81 void apmTimeout();
81 void sendCard(); 82 void sendHeldAction ( );
83
84protected:
85 virtual bool eventFilter ( QObject *o, QEvent *e );
86 void checkButtonAction ( const Opie::ODeviceButton *db, int keycode, bool press, bool autoRepeat );
87
88private:
89 static DesktopApplication *me ( );
90
82private: 91private:
@@ -92,2 +101,9 @@ private:
92 int m_currentPowerLevel; 101 int m_currentPowerLevel;
102
103 const Opie::ODeviceButton *m_last_button;
104 QTimer *m_button_timer;
105
106 bool m_keyclick_sound : 1;
107 bool m_screentap_sound : 1;
108 bool m_alarm_sound : 1;
93}; 109};
@@ -107,12 +123,3 @@ public:
107 123
108 void keyClick();
109 void screenClick();
110 static void soundAlarm();
111
112public slots: 124public slots:
113 void raiseDatebook();
114 void raiseContacts();
115 void raiseMenu();
116 void raiseLauncher();
117 void raiseEmail();
118 void execAutoStart(); 125 void execAutoStart();
@@ -124,5 +131,2 @@ public slots:
124 void terminateServers(); 131 void terminateServers();
125 void rereadVolumes();
126
127 void home ( );
128 132
@@ -146,3 +150,2 @@ private:
146 QDateTime suspendTime; 150 QDateTime suspendTime;
147 bool keyclick, touchclick, alarmsound;
148}; 151};
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)
1184 } 1184 }
1185 else if ( msg == "home()" ) {
1186 if ( isVisibleWindow( winId ( )))
1187 nextView ( );
1188 else
1189 raise ( );
1190
1191 }
1185} 1192}
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 )
94 94
95 QObject::connect( &a, SIGNAL(menu()), d, SLOT(raiseMenu()) );
96 QObject::connect( &a, SIGNAL(datebook()), d, SLOT(raiseDatebook()) );
97 QObject::connect( &a, SIGNAL(contacts()), d, SLOT(raiseContacts()) );
98 QObject::connect( &a, SIGNAL(launch()), d, SLOT(raiseLauncher()) );
99 QObject::connect( &a, SIGNAL(email()), d, SLOT(raiseEmail()) );
100 QObject::connect( &a, SIGNAL(power()), d, SLOT(togglePower()) ); 95 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 @@
1Files: bin/qpe apps/Settings/Calibrate.desktop pics/launcher plugins/applets/libsuspendapplet.so* plugins/applets/libhomeapplet.so* plugins/applets/liblogoutapplet.so* 1Files: bin/qpe apps/Settings/Calibrate.desktop pics/launcher pics/devicebuttons/*.png plugins/applets/libsuspendapplet.so* plugins/applets/libhomeapplet.so* plugins/applets/liblogoutapplet.so*
2Priority: required 2Priority: 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)
126 126
127 // grab the keyboard back, in case the app crashed/forgot
128
129 QPEApplication *qpeapp = (QPEApplication *) qApp;
130
131 if ( appLnk.exec() == qpeapp-> keyboardGrabbedBy ( )) {
132 qDebug ( "grabbing keyboard back from %s", appLnk.name().latin1());
133 qpeapp-> grabKeyboard ( );
134 }
135
136 delete target; 127 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()
247 247
248 if ( launchMenu->isVisible() ) 248 if ( launchMenu-> isVisible ( )) {
249 launchMenu->hide(); 249 launchMenu->hide();
250 }
250 else { 251 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 )
282 } else if ( msg == "soundAlarm()" ) { 282 } else if ( msg == "soundAlarm()" ) {
283 Desktop::soundAlarm(); 283 DesktopApplication::soundAlarm ( );
284 } 284 }
@@ -296,2 +296,12 @@ void TaskBar::receive( const QCString &msg, const QByteArray &data )
296 } 296 }
297 else if ( msg == "toggleMenu()" ) {
298 if ( sm-> launchMenu-> isVisible ( ))
299 sm-> launch ( );
300 else {
301 QCopEnvelope e ( "QPE/System", "toggleApplicationMenu()" );
302 }
303 }
304 else if ( msg == "toggleStartMenu()" ) {
305 sm-> launch ( );
306 }
297} 307}