author | zecke <zecke> | 2003-08-28 14:49:24 (UTC) |
---|---|---|
committer | zecke <zecke> | 2003-08-28 14:49:24 (UTC) |
commit | 704de5567caccd769c693676a55a4af45c85e044 (patch) (side-by-side diff) | |
tree | 36ba1b370136a89d9b41a596e72db9a6bfbe6730 | |
parent | 6ae5aaad2dec2470940f83f1e8629aec48f284a7 (diff) | |
download | opie-704de5567caccd769c693676a55a4af45c85e044.zip opie-704de5567caccd769c693676a55a4af45c85e044.tar.gz opie-704de5567caccd769c693676a55a4af45c85e044.tar.bz2 |
-Implement new QCOP method for toggling the start menu
-almost kill resizeEvent ( todo )
-rw-r--r-- | core/launcher/taskbar.cpp | 215 |
1 files changed, 137 insertions, 78 deletions
diff --git a/core/launcher/taskbar.cpp b/core/launcher/taskbar.cpp index e8a81c3..37fdb30 100644 --- a/core/launcher/taskbar.cpp +++ b/core/launcher/taskbar.cpp @@ -1,5 +1,5 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** @@ -18,3 +18,3 @@ ** -*********************************************************************/ +**********************************************************************/ @@ -24,3 +24,2 @@ #include "systray.h" -#include "calibrate.h" #include "wait.h" @@ -29,13 +28,10 @@ #include "taskbar.h" -#include "desktop.h" +#include "server.h" -#include <qpe/qpeapplication.h> -#include <qpe/qcopenvelope_qws.h> -#include <qpe/global.h> - -#if defined( QT_QWS_SL5XXX ) || defined( QT_QWS_IPAQ ) || defined( QT_QWS_RAMSES) -#include <qpe/custom.h> +#include <qtopia/qpeapplication.h> +#ifdef QWS +#include <qtopia/qcopenvelope_qws.h> #endif - -#include <opie/odevice.h> +#include <qtopia/global.h> +#include <qtopia/custom.h> @@ -44,3 +40,5 @@ #include <qtimer.h> +#ifdef QWS #include <qwindowsystem_qws.h> +#endif #include <qwidgetstack.h> @@ -53,17 +51,2 @@ -using namespace Opie; - -static Global::Command builtins[] = { - -#if defined(QT_QWS_IPAQ) || defined(QT_QWS_CASSIOPEIA) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_RAMSES) - { "calibrate", TaskBar::calibrate, 1, 0 }, -#endif -#if !defined(QT_QWS_CASSIOPEIA) - { "shutdown", Global::shutdown, 1, 0 }, -// { "run", run, 1, 0 }, -#endif - - { 0, TaskBar::calibrate, 0, 0 }, -}; - static bool initNumLock() @@ -76,2 +59,72 @@ static bool initNumLock() +//--------------------------------------------------------------------------- + +class SafeMode : public QWidget +{ + Q_OBJECT +public: + SafeMode( QWidget *parent ) : QWidget( parent ), menu(0) + { + message = tr("Safe Mode"); + QFont f( font() ); + f.setWeight( QFont::Bold ); + setFont( f ); + } + + void mousePressEvent( QMouseEvent *); + QSize sizeHint() const; + void paintEvent( QPaintEvent* ); + +private slots: + void action(int i); + +private: + QString message; + QPopupMenu *menu; +}; + +void SafeMode::mousePressEvent( QMouseEvent *) +{ + if ( !menu ) { + menu = new QPopupMenu(this); + menu->insertItem( tr("Plugin Manager..."), 0 ); + menu->insertItem( tr("Restart Qtopia"), 1 ); + menu->insertItem( tr("Help..."), 2 ); + connect(menu, SIGNAL(activated(int)), this, SLOT(action(int))); + } + QPoint curPos = mapToGlobal( QPoint(0,0) ); + QSize sh = menu->sizeHint(); + menu->popup( curPos-QPoint((sh.width()-width())/2,sh.height()) ); +} + +void SafeMode::action(int i) +{ + switch (i) { + case 0: + Global::execute( "pluginmanager" ); + break; + case 1: + Global::restart(); + break; + case 2: + Global::execute( "helpbrowser", "safemode.html" ); + break; + } +} + +QSize SafeMode::sizeHint() const +{ + QFontMetrics fm = fontMetrics(); + + return QSize( fm.width(message), fm.height() ); +} + +void SafeMode::paintEvent( QPaintEvent* ) +{ + QPainter p(this); + p.drawText( rect(), AlignCenter, message ); +} + +//--------------------------------------------------------------------------- + class LockKeyState : public QWidget @@ -112,2 +165,4 @@ private: +//--------------------------------------------------------------------------- + TaskBar::~TaskBar() @@ -119,5 +174,5 @@ TaskBar::TaskBar() : QHBox(0, 0, WStyle_Customize | WStyle_Tool | WStyle_StaysOn { - Global::setBuiltinCommands(builtins); - sm = new StartMenu( this ); + connect( sm, SIGNAL(tabSelected(const QString&)), this, + SIGNAL(tabSelected(const QString&)) ); @@ -139,4 +194,14 @@ TaskBar::TaskBar() : QHBox(0, 0, WStyle_Customize | WStyle_Tool | WStyle_StaysOn + /* ### FIXME plugin loader and safe mode */ +#if 0 + if (PluginLoader::inSafeMode()) + (void)new SafeMode( this ); +#endif + // ## make customizable in some way? +#ifdef QT_QWS_CUSTOM lockState = new LockKeyState( this ); +#else + lockState = 0; +#endif @@ -153,3 +218,6 @@ TaskBar::TaskBar() : QHBox(0, 0, WStyle_Customize | WStyle_Tool | WStyle_StaysOn QObject::connect(clearer, SIGNAL(timeout()), SLOT(clearStatusBar())); - QObject::connect(clearer, SIGNAL(timeout()), sysTray, SLOT(show())); + + connect( qApp, SIGNAL(symbol()), this, SLOT(toggleSymbolInput()) ); + connect( qApp, SIGNAL(numLockStateToggle()), this, SLOT(toggleNumLockState()) ); + connect( qApp, SIGNAL(capsLockStateToggle()), this, SLOT(toggleCapsLockState()) ); } @@ -173,2 +241,4 @@ void TaskBar::clearStatusBar() stack->raiseWidget(runningAppBar); + if ( sysTray ) + sysTray->show(); // stack->raiseWidget( mru ); @@ -183,6 +253,5 @@ void TaskBar::startWait() -void TaskBar::stopWait(const QString& /*app*/) +void TaskBar::stopWait(const QString&) { waitTimer->stop(); - //mru->addTask(sm->execToLink(app)); waitIcon->setWaiting( false ); @@ -193,3 +262,2 @@ void TaskBar::stopWait() waitTimer->stop(); - waitIcon->setWaiting( false ); @@ -197,6 +265,20 @@ void TaskBar::stopWait() +/* + * This resizeEvent will be captured by + * the ServerInterface and it'll layout + * and calc rect. Now if we go from bigger + * to smaller screen the SysTray is out of + * bounds and repaint() won't trigger an Event + */ void TaskBar::resizeEvent( QResizeEvent *e ) { + if ( sysTray ) + sysTray->hide(); + QHBox::resizeEvent( e ); - calcMaxWindowRect(); + + if ( sysTray ) + sysTray->show(); + + qWarning("TaskBar::resize event"); } @@ -211,2 +293,3 @@ void TaskBar::calcMaxWindowRect() { + /* #ifdef Q_WS_QWS @@ -221,3 +304,3 @@ void TaskBar::calcMaxWindowRect() -#if QT_VERSION < 300 +#if QT_VERSION < 0x030000 QWSServer::setMaxWindowRect( qt_screen->mapToDevice(wr, @@ -229,2 +312,3 @@ void TaskBar::calcMaxWindowRect() #endif + */ } @@ -242,48 +326,27 @@ void TaskBar::receive( const QCString &msg, const QByteArray &data ) inputMethods->showInputMethod(); + } else if ( msg == "showInputMethod(QString)" ) { + QString name; + stream >> name; + inputMethods->showInputMethod(name); } else if ( msg == "reloadInputMethods()" ) { inputMethods->loadInputMethods(); - } else if ( msg == "toggleInputMethod()" ) { - inputMethods->shown() ? inputMethods->hideInputMethod() : inputMethods->showInputMethod(); - } else if ( msg == "reloadApps()" ) { - sm->reloadApps(); } else if ( msg == "reloadApplets()" ) { sysTray->clearApplets(); + sm->createMenu(); sysTray->addApplets(); - sm->reloadApplets(); - } else if ( msg == "soundAlarm()" ) { - DesktopApplication::soundAlarm ( ); - } - else if ( msg == "setLed(int,bool)" ) { - int led, status; - stream >> led >> status; - - QValueList <OLed> ll = ODevice::inst ( )-> ledList ( ); - if ( ll. count ( )) { - OLed l = ll. contains ( Led_Mail ) ? Led_Mail : ll [0]; - bool canblink = ODevice::inst ( )-> ledStateList ( l ). contains ( Led_BlinkSlow ); - - ODevice::inst ( )-> setLedState ( l, status ? ( canblink ? Led_BlinkSlow : Led_On ) : Led_Off ); - } - } - else if ( msg == "toggleMenu()" ) { + }else if ( msg == "toggleMenu()" ) { if ( sm-> launchMenu-> isVisible ( )) sm-> launch ( ); - else { + else QCopEnvelope e ( "QPE/System", "toggleApplicationMenu()" ); - } - } - else if ( msg == "toggleStartMenu()" ) { + }else if ( msg == "toggleStartMenu()" ) sm-> launch ( ); } -} -QWidget *TaskBar::calibrate(bool) +void TaskBar::setApplicationState( const QString &name, ServerInterface::ApplicationState state ) { -#ifdef Q_WS_QWS - Calibrate *c = new Calibrate; - c->show(); - return c; -#else - return 0; -#endif + if ( state == ServerInterface::Launching ) + runningAppBar->applicationLaunched( name ); + else if ( state == ServerInterface::Terminated ) + runningAppBar->applicationTerminated( name ); } @@ -302,14 +365,10 @@ void TaskBar::toggleSymbolInput() { - if ( inputMethods->currentShown() == "Unicode" ) { + QString unicodeInput = qApp->translate( "InputMethods", "Unicode" ); + if ( inputMethods->currentShown() == unicodeInput ) { inputMethods->hideInputMethod(); } else { - inputMethods->showInputMethod("Unicode"); - } + inputMethods->showInputMethod( unicodeInput ); } - -bool TaskBar::recoverMemory() -{ - //mru->quitOldApps() is no longer supported - return true; } +#include "taskbar.moc" |