author | mickeyl <mickeyl> | 2003-10-02 15:53:52 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2003-10-02 15:53:52 (UTC) |
commit | 4c9bda8027049b7ea423471a213eca2068490b08 (patch) (side-by-side diff) | |
tree | a2400c2a77847764cd09e4c882caf521e503a423 /core/launcher | |
parent | 4dd842eacb6c04303932e4cbebedff14db7cbc87 (diff) | |
download | opie-4c9bda8027049b7ea423471a213eca2068490b08.zip opie-4c9bda8027049b7ea423471a213eca2068490b08.tar.gz opie-4c9bda8027049b7ea423471a213eca2068490b08.tar.bz2 |
Start with some customization bits for inputmethods as part of the
BigScreen initiative. You can now choose to have free floating and
resizable inputmethods.
Two outstanding things: 1.) Hiding the inputmethod via the [x] button
confuses the show/hide toggle button. 2.) The new size and position of
a moved/resized inputmethod should be remembered.
-rw-r--r-- | core/launcher/inputmethods.cpp | 14 | ||||
-rw-r--r-- | core/launcher/inputmethods.h | 2 | ||||
-rw-r--r-- | core/launcher/taskbar.cpp | 41 | ||||
-rw-r--r-- | core/launcher/taskbar.h | 30 |
4 files changed, 48 insertions, 39 deletions
diff --git a/core/launcher/inputmethods.cpp b/core/launcher/inputmethods.cpp index f0d8294..d89a366 100644 --- a/core/launcher/inputmethods.cpp +++ b/core/launcher/inputmethods.cpp @@ -65,18 +65,12 @@ static const char * tri_xpm[]={ "...aaa...", "..aaaaa..", ".aaaaaaa.", ".........", "........."}; -static const int inputWidgetStyle = QWidget::WStyle_Customize | - QWidget::WStyle_Tool | - QWidget::WStyle_StaysOnTop | - QWidget::WGroupLeader; - - int InputMethod::operator <(const InputMethod& o) const { return name() < o.name(); } int InputMethod::operator >(const InputMethod& o) const { @@ -101,12 +95,18 @@ public: InputMethods::InputMethods( QWidget *parent ) : QWidget( parent, "InputMethods", WStyle_Tool | WStyle_Customize ), mkeyboard(0), imethod(0) { + Config cfg( "Launcher" ); + cfg.setGroup( "InputMethods" ); + inputWidgetStyle = QWidget::WStyle_Customize | QWidget::WStyle_StaysOnTop | QWidget::WGroupLeader; + inputWidgetStyle |= cfg.readBoolEntry( "Float", false ) ? QWidget::WStyle_DialogBorder : QWidget::WStyle_Tool; + inputWidgetWidth = cfg.readNumEntry( "Width", 100 ); + setBackgroundMode( PaletteBackground ); QHBoxLayout *hbox = new QHBoxLayout( this ); kbdButton = new IMToolButton( this); kbdButton->setFocusPolicy(NoFocus); kbdButton->setToggleButton( TRUE ); @@ -534,13 +534,13 @@ void InputMethods::showKbd( bool on ) if ( on ) { mkeyboard->resetState(); // HACK... Make the texteditor fit with all input methods // Input methods should also never use more than about 40% of the screen int height = QMIN( mkeyboard->widget->sizeHint().height(), 134 ); - mkeyboard->widget->resize( qApp->desktop()->width(), height ); + mkeyboard->widget->resize( qApp->desktop()->width() * (inputWidgetWidth*0.01), height ); mkeyboard->widget->move( 0, mapToGlobal( QPoint() ).y() - height ); mkeyboard->widget->show(); } else { mkeyboard->widget->hide(); } diff --git a/core/launcher/inputmethods.h b/core/launcher/inputmethods.h index 93b69de..246661a 100644 --- a/core/launcher/inputmethods.h +++ b/core/launcher/inputmethods.h @@ -100,11 +100,13 @@ private: QWidgetStack *imButton; // later will be widget stack QToolButton *imChoice; InputMethod *mkeyboard; InputMethod *imethod; QValueList<InputMethod> inputMethodList; QValueList<InputMethod> inputModifierList; + int inputWidgetStyle; + int inputWidgetWidth; }; #endif // __INPUT_METHODS_H__ diff --git a/core/launcher/taskbar.cpp b/core/launcher/taskbar.cpp index 37fdb30..2966168 100644 --- a/core/launcher/taskbar.cpp +++ b/core/launcher/taskbar.cpp @@ -25,12 +25,13 @@ #include "wait.h" #include "appicons.h" #include "taskbar.h" #include "server.h" +#include <qtopia/config.h> #include <qtopia/qpeapplication.h> #ifdef QWS #include <qtopia/qcopenvelope_qws.h> #endif #include <qtopia/global.h> #include <qtopia/custom.h> @@ -169,12 +170,16 @@ TaskBar::~TaskBar() { } TaskBar::TaskBar() : QHBox(0, 0, WStyle_Customize | WStyle_Tool | WStyle_StaysOnTop | WGroupLeader) { + Config cfg( "Launcher" ); + cfg.setGroup( "InputMethods" ); + resizeRunningApp = cfg.readBoolEntry( "Resize", true ); + sm = new StartMenu( this ); connect( sm, SIGNAL(tabSelected(const QString&)), this, SIGNAL(tabSelected(const QString&)) ); inputMethods = new InputMethods( this ); connect( inputMethods, SIGNAL(inputToggled(bool)), @@ -288,32 +293,30 @@ void TaskBar::styleChange( QStyle &s ) QHBox::styleChange( s ); calcMaxWindowRect(); } void TaskBar::calcMaxWindowRect() { - /* -#ifdef Q_WS_QWS - QRect wr; - int displayWidth = qApp->desktop()->width(); - QRect ir = inputMethods->inputRect(); - if ( ir.isValid() ) { - wr.setCoords( 0, 0, displayWidth-1, ir.top()-1 ); - } else { - wr.setCoords( 0, 0, displayWidth-1, y()-1 ); + if ( resizeRunningApp ) + { + #if defined(Q_WS_QWS) + QRect wr; + int displayWidth = qApp->desktop()->width(); + QRect ir = inputMethods->inputRect(); + if ( ir.isValid() ) { + wr.setCoords( 0, 0, displayWidth-1, ir.top()-1 ); + } else { + wr.setCoords( 0, 0, displayWidth-1, y()-1 ); + } + #if QT_VERSION < 0x030000 + QWSServer::setMaxWindowRect( qt_screen->mapToDevice(wr,QSize(qt_screen->width(),qt_screen->height())) ); + #else + QWSServer::setMaxWindowRect( wr ); + #endif + #endif } - -#if QT_VERSION < 0x030000 - QWSServer::setMaxWindowRect( qt_screen->mapToDevice(wr, - QSize(qt_screen->width(),qt_screen->height())) - ); -#else - QWSServer::setMaxWindowRect( wr ); -#endif -#endif - */ } void TaskBar::receive( const QCString &msg, const QByteArray &data ) { QDataStream stream( data, IO_ReadOnly ); if ( msg == "message(QString)" ) { diff --git a/core/launcher/taskbar.h b/core/launcher/taskbar.h index 0cfc123..ed558b1 100644 --- a/core/launcher/taskbar.h +++ b/core/launcher/taskbar.h @@ -1,10 +1,10 @@ /********************************************************************** -** 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. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** @@ -15,69 +15,73 @@ ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ -#ifndef __TASKBAR_H__ -#define __TASKBAR_H__ +#ifndef TASKBAR_H +#define TASKBAR_H #include <qhbox.h> +#include "serverinterface.h" +#include "startmenu.h" class QLabel; class QTimer; class InputMethods; class Wait; class SysTray; class RunningAppBar; class QWidgetStack; class QTimer; class QLabel; -class StartMenu; class LockKeyState; +class AppLnkSet; class TaskBar : public QHBox { Q_OBJECT public: TaskBar(); ~TaskBar(); - static QWidget *calibrate( bool ); + void launchStartMenu() { if (sm) sm->launch(); } + void refreshStartMenu() { if (sm) sm->refreshMenu(); } + void setApplicationState( const QString &name, ServerInterface::ApplicationState state ); - bool recoverMemory(); +signals: + void tabSelected(const QString&); - StartMenu *startMenu() const { return sm; } public slots: void startWait(); void stopWait(const QString&); void stopWait(); + void clearStatusBar(); void toggleNumLockState(); void toggleCapsLockState(); void toggleSymbolInput(); + void calcMaxWindowRect(); protected: void resizeEvent( QResizeEvent * ); void styleChange( QStyle & ); void setStatusMessage( const QString &text ); - -public slots: - void calcMaxWindowRect(); + private slots: void receive( const QCString &msg, const QByteArray &data ); private: - QTimer *waitTimer; Wait *waitIcon; InputMethods *inputMethods; SysTray *sysTray; RunningAppBar* runningAppBar; QWidgetStack *stack; QTimer *clearer; QLabel *label; LockKeyState* lockState; StartMenu *sm; + bool resizeRunningApp; }; -#endif // __TASKBAR_H__ +#endif // TASKBAR_H |