author | llornkcor <llornkcor> | 2002-10-20 23:00:49 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-10-20 23:00:49 (UTC) |
commit | 8bbd3bca858939b15b8775b4811149b8d83bb6cc (patch) (side-by-side diff) | |
tree | 3ec2f82cf31c49debdf46f21746c71c0d69ec1db | |
parent | 706b3e155ad713f388606b4ae15c70a2be4c2294 (diff) | |
download | opie-8bbd3bca858939b15b8775b4811149b8d83bb6cc.zip opie-8bbd3bca858939b15b8775b4811149b8d83bb6cc.tar.gz opie-8bbd3bca858939b15b8775b4811149b8d83bb6cc.tar.bz2 |
better implementation of F11 menu handling
-rw-r--r-- | core/launcher/desktop.cpp | 23 | ||||
-rw-r--r-- | core/launcher/desktop.h | 1 |
2 files changed, 20 insertions, 4 deletions
diff --git a/core/launcher/desktop.cpp b/core/launcher/desktop.cpp index 9863187..387650b 100644 --- a/core/launcher/desktop.cpp +++ b/core/launcher/desktop.cpp @@ -415,132 +415,132 @@ void DesktopApplication::systemMessage( const QCString & msg, const QByteArray & } else if ( msg == "setDisplayState(int)" ) { int state; stream >> state; m_screensaver-> setDisplayState ( state != 0 ); } 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() && 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() ); } } } 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_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; } // 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 ) { if ( press ) emit backlight(); return TRUE; } if ( ke->simpleData.keycode == Key_F32 ) { if ( press ) QCopEnvelope e( "QPE/Desktop", "startSync()" ); return TRUE; } if ( ke->simpleData.keycode == Key_F31 && !ke->simpleData.modifiers ) { if ( press ) emit symbol(); return TRUE; } if ( ke->simpleData.keycode == Key_NumLock ) { if ( press ) emit numLockStateToggle(); } if ( ke->simpleData.keycode == Key_CapsLock ) { if ( press ) emit capsLockStateToggle(); } if ( ( press && !autoRepeat ) || ( !press && autoRepeat ) ) qpedesktop->keyClick(); } else { if ( e->type == QWSEvent::Mouse ) { QWSMouseEvent * me = ( QWSMouseEvent * ) e; static bool up = TRUE; if ( me->simpleData.state & LeftButton ) { if ( up ) { up = FALSE; qpedesktop->screenClick(); } } else { @@ -986,64 +986,79 @@ void DesktopApplication::restart() 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" ); } void Desktop::keyClick() { if ( keyclick ) ODevice::inst ( ) -> keySound ( ); } void Desktop::screenClick() { if ( touchclick ) ODevice::inst ( ) -> touchSound ( ); } void Desktop::soundAlarm() { 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; + } + } + return FALSE; +} diff --git a/core/launcher/desktop.h b/core/launcher/desktop.h index 5de85f4..04c2f61 100644 --- a/core/launcher/desktop.h +++ b/core/launcher/desktop.h @@ -64,84 +64,85 @@ signals: protected: #ifdef Q_WS_QWS bool qwsEventFilter( QWSEvent * ); #endif void shutdown(); void restart(); public slots: virtual void desktopMessage ( const QCString &msg, const QByteArray &data ); virtual void systemMessage ( const QCString &msg, const QByteArray &data ); protected slots: void shutdown( ShutdownImpl::Type ); void psTimeout(); void sendCard(); private: DesktopPowerAlerter *pa; PowerStatus *ps; QTimer *cardSendTimer; QCopChannel *channel; QPEScreenSaver *m_screensaver; }; class Desktop : public QWidget { Q_OBJECT public: Desktop(); ~Desktop(); static bool screenLocked(); void show(); void checkMemory(); void keyClick(); void screenClick(); static void soundAlarm(); public slots: void raiseDatebook(); void raiseContacts(); void raiseMenu(); void raiseLauncher(); void raiseEmail(); void execAutoStart(); void togglePower(); void toggleLight(); void toggleNumLockState(); void toggleCapsLockState(); void toggleSymbolInput(); void terminateServers(); void rereadVolumes(); void home ( ); protected: void executeOrModify( const QString& appLnkFile ); void styleChange( QStyle & ); void timerEvent( QTimerEvent *e ); + bool eventFilter( QObject *, QEvent * ); QWidget *bg; Launcher *launcher; TaskBar *tb; private: void startTransferServer(); bool recoverMemory(); QCopBridge *qcopBridge; TransferServer *transferServer; PackageSlave *packageSlave; QDateTime suspendTime; bool keyclick, touchclick, alarmsound; }; #endif // __DESKTOP_H__ |