summaryrefslogtreecommitdiffstats
path: root/src
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 /src
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
Diffstat (limited to 'src')
-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
3 files changed, 55 insertions, 23 deletions
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);
}