summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJanne Koskinen <janne.p.koskinen@digia.com>2009-06-17 15:59:42 (GMT)
committerJanne Koskinen <janne.p.koskinen@digia.com>2009-06-17 15:59:42 (GMT)
commitf0f77eadbefdae45c70945392f6acdc21d47c601 (patch)
tree0392804b739b0aa57043f214e24ac9063d07dc0e
parent4dcd6946fdc6940388b2ba573650143b9469d532 (diff)
parent1ec7f4029a47d22f7585c554d32ae975946ab3ce (diff)
downloadQt-f0f77eadbefdae45c70945392f6acdc21d47c601.zip
Qt-f0f77eadbefdae45c70945392f6acdc21d47c601.tar.gz
Qt-f0f77eadbefdae45c70945392f6acdc21d47c601.tar.bz2
Merge branch 'master' of git@scm.dev.nokia.troll.no:qt/qt-s60-public
-rw-r--r--dist/changes-4.5.2-tower29
-rw-r--r--src/gui/kernel/qaction.h9
-rw-r--r--src/gui/kernel/qwidget_s60.cpp65
-rw-r--r--src/gui/widgets/qmainwindow.cpp4
4 files changed, 82 insertions, 25 deletions
diff --git a/dist/changes-4.5.2-tower b/dist/changes-4.5.2-tower
index 41dc8c8..1ed5aaa 100644
--- a/dist/changes-4.5.2-tower
+++ b/dist/changes-4.5.2-tower
@@ -61,6 +61,11 @@ Features
- QSslSocket
* Added support for -openssl option i.e. runtime resolving of OpenSSL
symbols
+
+- QWidget
+ * Basic widgets are now navigatable and usable via keypad on SDK 3
+ FP 1 and FP 2.
+
- todo
* todo
@@ -169,6 +174,8 @@ Optimizations
* Fix for frame masks with color depth other than EGrey2.
* Fix for squeezed QTabBars.
* Fix memory leak when color skinning graphics.
+ * Show focus/Editfocus visualization for KeyPad navigation on
+ SDK 3 FP 1 and FP 2
- QDesktopServices
* Switched QDesktopServices mail-to URL handling to RSendAs in Symbian,
@@ -199,6 +206,21 @@ Optimizations
* Fix to Open C bug: select sometimes returns -1 and errno is
ECONNREFUSED
+- QWidget
+ * Added API for setting softkeys
+
+- QMenuBar
+ * Native menus are handled properly even when application has multiple QMainWindows
+ * Fixed a bug causing both native and qt menu to be created
+ * Fix for disappearing options menu after coming back from dialog
+
+- QFontDataBase
+ * Now, also fonts from the user's /resources/fonts direactories are
+ available.
+
+- QFontMetrics
+ * Fixed the boundingRect calculation for text.
+
****************************************************************************
* Examples and demos *
****************************************************************************
@@ -224,12 +246,15 @@ Optimizations
since the issue has been fixed in qmake.
* Included drilldown to demonstrate QtSql usage
* Updated screenshots to S60 style
+ * Added softkeys example
+
+- Softkeys
+ * New example showing how to use softkeys API in QWidget
****************************************************************************
* Tools *
****************************************************************************
-
- qmake
* Support for generating Symbian "test" targets: CONFIG += symbian_test.
* Support for Symbian Build System, version 2 (aka Raptor) via
@@ -259,7 +284,7 @@ Optimizations
* Will now patch also vendor id.
****************************************************************************
-* Documnetation *
+* Documentation *
****************************************************************************
- qmake-manual
* 250370: Added documentation for ICON keyword
diff --git a/src/gui/kernel/qaction.h b/src/gui/kernel/qaction.h
index dfa4933..3449acf 100644
--- a/src/gui/kernel/qaction.h
+++ b/src/gui/kernel/qaction.h
@@ -91,11 +91,10 @@ class Q_GUI_EXPORT QAction : public QObject
public:
enum MenuRole { NoRole, TextHeuristicRole, ApplicationSpecificRole, AboutQtRole,
AboutRole, PreferencesRole, QuitRole };
- enum SoftKeyRole { OptionsSoftKey, SelectSoftKey, BackSoftKey, NextSoftKey, PreviousSoftKey,
- OkSoftKey, CancelSoftKey, EditSoftKey, ViewSoftKey, BackSpaceSoftKey,
- EndEditSoftKey, RevertEditSoftKey, DeselectSoftKey, FinishSoftKey,
- MenuSoftKey, ContextMenuSoftKey, ExitSoftKey, Key1SoftKey, Key2SoftKey,
- Key3SoftKey, Key4SoftKey, CustomSoftKey };
+ enum SoftKeyRole { OptionsSoftKey, SelectSoftKey, BackSoftKey, NextSoftKey, PreviousSoftKey,
+ OkSoftKey, CancelSoftKey, EditSoftKey, ViewSoftKey, BackSpaceSoftKey,
+ EndEditSoftKey, RevertEditSoftKey, DeselectSoftKey, FinishSoftKey,
+ MenuSoftKey, ContextMenuSoftKey, ExitSoftKey };
explicit QAction(QObject* parent);
QAction(const QString &text, QObject* parent);
QAction(const QIcon &icon, const QString &text, QObject* parent);
diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp
index bc69d6d..6109f17 100644
--- a/src/gui/kernel/qwidget_s60.cpp
+++ b/src/gui/kernel/qwidget_s60.cpp
@@ -85,29 +85,62 @@ void QWidgetPrivate::setSoftKeys_sys(const QList<QAction*> &softkeys)
if (isEqual(old, softkeys ))
return;
}
- CCoeAppUi* appui = CEikonEnv::Static()->AppUi();
- CAknAppUi* aknAppUi = static_cast <CAknAppUi*>(appui);
- CEikButtonGroupContainer* nativeContainer = aknAppUi->Cba();
+ CEikButtonGroupContainer* nativeContainer = S60->buttonGroupContainer();
nativeContainer->SetCommandSetL(R_AVKON_SOFTKEYS_EMPTY_WITH_IDS);
- int placeInScreen=0;
+ int position = -1;
+ int command;
+ bool needsExitButton = true;
+
for (int index = 0; index < softkeys.count(); index++) {
const QAction* softKeyAction = softkeys.at(index);
- if (softKeyAction->softKeyRole() != QAction::ContextMenuSoftKey) {
+ switch (softKeyAction->softKeyRole()) {
+ // Positive Actions go on LSK
+ case QAction::OptionsSoftKey:
+ case QAction::MenuSoftKey:
+ case QAction::ContextMenuSoftKey:
+ command = EAknSoftkeyOptions; //Calls DynInitMenuPane in AppUI
+ position = 0;
+ break;
+ case QAction::SelectSoftKey:
+ case QAction::PreviousSoftKey:
+ case QAction::OkSoftKey:
+ case QAction::EditSoftKey:
+ case QAction::ViewSoftKey:
+ case QAction::EndEditSoftKey:
+ case QAction::FinishSoftKey:
+ command = SOFTKEYSTART + index;
+ position = 0;
+ break;
+ // Negative Actions on the RSK
+ case QAction::BackSoftKey:
+ case QAction::NextSoftKey:
+ case QAction::CancelSoftKey:
+ case QAction::BackSpaceSoftKey:
+ case QAction::RevertEditSoftKey:
+ case QAction::DeselectSoftKey:
+ needsExitButton = false;
+ command = SOFTKEYSTART + index;
+ position = 2;
+ break;
+ case QAction::ExitSoftKey:
+ needsExitButton = false;
+ command = EAknSoftkeyExit; //Calls HandleCommand in AppUI
+ position = 2;
+ break;
+ default:
+ break;
+ }
- HBufC* text = qt_QString2HBufC(softKeyAction->text());
- CleanupStack::PushL(text);
- if (softKeyAction->softKeyRole() == QAction::MenuSoftKey) {
- nativeContainer->SetCommandL(placeInScreen, EAknSoftkeyOptions, *text);
- } else {
- nativeContainer->SetCommandL(placeInScreen, SOFTKEYSTART + index, *text);
- }
- CleanupStack::PopAndDestroy();
- placeInScreen++;
+ if (position != -1) {
+ TPtrC text = qt_QString2TPtrC(softKeyAction->text());
+ nativeContainer->SetCommandL(position, command, text);
}
- if (placeInScreen==1)
- placeInScreen=2;
}
+
+ if (needsExitButton)
+ nativeContainer->SetCommandL(2, EAknSoftkeyExit, qt_QString2TPtrC(QObject::tr("Exit")));
+
nativeContainer->DrawDeferred(); // 3.1 needs an extra invitation
}
diff --git a/src/gui/widgets/qmainwindow.cpp b/src/gui/widgets/qmainwindow.cpp
index 5f8371c..394523a 100644
--- a/src/gui/widgets/qmainwindow.cpp
+++ b/src/gui/widgets/qmainwindow.cpp
@@ -482,7 +482,7 @@ void QMainWindow::setMenuBar(QMenuBar *menuBar)
}
d->layout->setMenuBar(menuBar);
if (menuBar) {
- QAction* menu = new QAction(QString::fromLatin1("Menu"), this);
+ QAction* menu = new QAction(QString::fromLatin1("Options"), this);
menu->setSoftKeyRole(QAction::MenuSoftKey);
setSoftKey(menu);
}
@@ -1400,7 +1400,7 @@ bool QMainWindow::event(QEvent *event)
case QEvent::WindowActivate:
if (d->layout->menuBar()) {
// ### TODO: This is evil, there is no need to create a new action every time
- QAction* menu = new QAction(QString::fromLatin1("Menu"), this);
+ QAction* menu = new QAction(QString::fromLatin1("Options"), this);
menu->setSoftKeyRole(QAction::MenuSoftKey);
setSoftKey(menu);
}