aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMiroslav Safr <miroslav.safr@tieto.com>2010-09-15 09:24:31 +0300
committerMiroslav Safr <miroslav.safr@tieto.com>2010-09-15 09:24:31 +0300
commit9c97a8f71501df5005dece8c1280bcf9910b0e5f (patch)
treed5f15bc4aa8decfbf185e108cd6e1e046d459b7c /src
parentb0c75a53d281004801491d83350794a3e6df0dca (diff)
parente3f1df5d00cce7501d401b8686f525c1c11dd448 (diff)
Merge branch 'master' of gitorious.org:meegotouch/libmeegotouch
Diffstat (limited to 'src')
-rw-r--r--src/corelib/core/minputmethodstate.cpp11
-rw-r--r--src/corelib/core/minputmethodstate.h13
-rw-r--r--src/corelib/widgets/mdialog.cpp4
-rw-r--r--src/corelib/widgets/mdialog.h48
-rw-r--r--src/corelib/widgets/mdialogmodel.h9
-rw-r--r--src/corelib/widgets/minfobanner.h2
-rw-r--r--src/corelib/widgets/mmessagebox.cpp1
-rw-r--r--src/views/mapplicationpageview.cpp27
-rw-r--r--src/views/mapplicationpageview_p.h3
-rw-r--r--src/views/mdialogview.cpp64
-rw-r--r--src/views/mdialogview.h1
-rw-r--r--src/views/mdialogview_p.h1
-rw-r--r--src/views/mspinnerview.cpp7
-rw-r--r--src/views/mspinnerview_p.h3
-rw-r--r--src/views/style/mapplicationpagestyle.h6
-rw-r--r--src/views/style/mdialogstyle.h22
-rw-r--r--src/views/style/mspinnerstyle.h6
17 files changed, 180 insertions, 48 deletions
diff --git a/src/corelib/core/minputmethodstate.cpp b/src/corelib/core/minputmethodstate.cpp
index 76927a9c..dad2fd7e 100644
--- a/src/corelib/core/minputmethodstate.cpp
+++ b/src/corelib/core/minputmethodstate.cpp
@@ -21,6 +21,7 @@
#include "minputmethodstate_p.h"
#include <QTimer>
+#include <QKeyEvent>
MInputMethodStatePrivate::MInputMethodStatePrivate()
@@ -92,6 +93,16 @@ M::OrientationAngle MInputMethodState::activeWindowOrientationAngle() const
return d->orientation;
}
+void MInputMethodState::emitKeyPress(const QKeyEvent &event)
+{
+ emit keyPress(event);
+}
+
+void MInputMethodState::emitKeyRelease(const QKeyEvent &event)
+{
+ emit keyRelease(event);
+}
+
int MInputMethodState::registerToolbar(const QString &fileName)
{
Q_D(MInputMethodState);
diff --git a/src/corelib/core/minputmethodstate.h b/src/corelib/core/minputmethodstate.h
index 159762ef..44a756e3 100644
--- a/src/corelib/core/minputmethodstate.h
+++ b/src/corelib/core/minputmethodstate.h
@@ -26,6 +26,8 @@
#include "mnamespace.h"
#include "mexport.h"
+class QKeyEvent;
+
class MInputMethodStatePrivate;
/*!
@@ -55,6 +57,11 @@ public:
//! \return orientation of application's active window
M::OrientationAngle activeWindowOrientationAngle() const;
+ //! \internal
+ void emitKeyPress(const QKeyEvent &event);
+ void emitKeyRelease(const QKeyEvent &event);
+ //! \internal_end
+
public Q_SLOTS:
//! \brief Set the orientation of application's active window to \a newOrientation
void setActiveWindowOrientationAngle(M::OrientationAngle newOrientation);
@@ -105,6 +112,12 @@ Q_SIGNALS:
//! Emitted when input method toolbar item attribute is changed.
void toolbarItemAttributeChanged(int id, const QString &item, const QString &attribute, const QVariant &value);
+ //! Can be emitted by input method to notify about raw key press event it receives.
+ void keyPress(const QKeyEvent &);
+
+ //! Can be emitted by input method to notify about raw key release event it receives.
+ void keyRelease(const QKeyEvent &);
+
private:
//! Disable default construction
MInputMethodState();
diff --git a/src/corelib/widgets/mdialog.cpp b/src/corelib/widgets/mdialog.cpp
index b29f1fb3..c880316c 100644
--- a/src/corelib/widgets/mdialog.cpp
+++ b/src/corelib/widgets/mdialog.cpp
@@ -487,11 +487,13 @@ void MDialog::setButtonBoxVisible(bool visible)
bool MDialog::isCloseButtonVisible() const
{
+ mWarning("MDialog") << Q_FUNC_INFO << "is deprecated. Use styles instead";
return model()->closeButtonVisible();
}
void MDialog::setCloseButtonVisible(bool visible)
{
+ mWarning("MDialog") << Q_FUNC_INFO << "is deprecated. Use styles instead";
model()->setCloseButtonVisible(visible);
}
@@ -507,11 +509,13 @@ void MDialog::setProgressIndicatorVisible(bool visible)
bool MDialog::isTitleBarVisible() const
{
+ mWarning("MDialog") << Q_FUNC_INFO << "is deprecated. Use styles instead";
return model()->titleBarVisible();
}
void MDialog::setTitleBarVisible(bool visible)
{
+ mWarning("MDialog") << Q_FUNC_INFO << "is deprecated. Use styles instead";
model()->setTitleBarVisible(visible);
}
diff --git a/src/corelib/widgets/mdialog.h b/src/corelib/widgets/mdialog.h
index 7218c506..ce7e7241 100644
--- a/src/corelib/widgets/mdialog.h
+++ b/src/corelib/widgets/mdialog.h
@@ -172,8 +172,35 @@ class M_EXPORT MDialog : public MSceneWindow
Q_PROPERTY(bool buttonBoxVisible READ isButtonBoxVisible WRITE setButtonBoxVisible)
+ /*!
+ \property MDialog::closeButtonVisible
+ \brief Whether the close button should be visible.
+ \deprecated Use MDialogStyle::hasCloseButton instead.
+
+ The dialog's optional close button is provided as a convenient way of
+ rejecting the dialog and discarding all changes. It's visible by default.
+
+ Since the close button is part of the title bar, setting its visibility to
+ true when the title bar is invisible has no effect.
+ */
Q_PROPERTY(bool closeButtonVisible READ isCloseButtonVisible WRITE setCloseButtonVisible)
+
+ /*!
+ \property MDialog::titleBarVisible
+ \brief Whether the title bar should be visible.
+ \deprecated Use MDialogStyle::hasTitleBar instead.
+
+ The title bar sits on top of the dialog and contains a title text, an
+ optional close button and an optional progress indicator.
+
+ Since both close button and progress indicator are part of the title bar,
+ setting their visibilities to true when the title bar itself is invisible
+ has no effect.
+
+ The title bar is visible by default.
+ */
Q_PROPERTY(bool titleBarVisible READ isTitleBarVisible WRITE setTitleBarVisible)
+
Q_PROPERTY(QString title READ title WRITE setTitle)
Q_PROPERTY(bool system READ isSystem WRITE setSystem)
Q_PROPERTY(bool modal READ isModal WRITE setModal)
@@ -263,19 +290,14 @@ public:
/*!
* \brief Returns true if the dialog's close button is visible, false otherwise.
- *
+ * \deprecated Use MDialogStyle::hasCloseButton instead.
* \sa setCloseButtonVisible()
*/
bool isCloseButtonVisible() const;
/*!
* \brief Sets the visibility of the dialog's close button.
- *
- * The dialog's optional close button is provided as a convenient way of
- * rejecting the dialog and discarding all changes. It's visible by default.
- *
- * Since the close button is part of the title bar, setting its visibility to
- * true when the title bar is invisible has no effect.
+ * \deprecated Use MDialogStyle::hasCloseButton instead.
*
* \sa isCloseButtonVisible(), setTitleBarVisible()
*/
@@ -304,22 +326,14 @@ public:
/*!
* \brief Returns true if the dialog's title bar is visible and false otherwise.
- *
+ * \deprecated Use MDialogStyle::hasTitleBar instead.
* \sa setTitleBarVisible()
*/
bool isTitleBarVisible() const;
/*!
* \brief Sets the visibility of the dialog's title bar.
- *
- * The title bar sits on top of the dialog and contains a title text, an
- * optional close button and an optional progress indicator.
- *
- * Since both close button and progress indicator are part of the title bar,
- * setting their visibilities to true when the title bar itself is invisible
- * has no effect.
- *
- * The title bar is visible by default.
+ * \deprecated Use MDialogStyle::hasTitleBar instead.
*
* \sa isTitleBarVisible(), setCloseButtonVisible(), setTitle()
*/
diff --git a/src/corelib/widgets/mdialogmodel.h b/src/corelib/widgets/mdialogmodel.h
index dce9966f..35affc35 100644
--- a/src/corelib/widgets/mdialogmodel.h
+++ b/src/corelib/widgets/mdialogmodel.h
@@ -38,8 +38,17 @@ private:
M_MODEL_PROPERTY(int, resultCode, ResultCode, true, 0)
+ /*!
+ \property MDialogModel::closeButtonVisible
+ \deprecated Use MDialogStyle::hasCloseButton instead.
+ */
M_MODEL_PROPERTY(bool, closeButtonVisible, CloseButtonVisible, true, true)
M_MODEL_PROPERTY(bool, buttonBoxVisible, ButtonBoxVisible, true, true)
+
+ /*!
+ \property MDialogModel::titleBarVisible
+ \deprecated Use MDialogStyle::hasTitleBar instead.
+ */
M_MODEL_PROPERTY(bool, titleBarVisible, TitleBarVisible, true, true)
M_MODEL_PROPERTY(QString, title, Title, true, QString())
M_MODEL_PROPERTY(bool, system, System, true, false)
diff --git a/src/corelib/widgets/minfobanner.h b/src/corelib/widgets/minfobanner.h
index d7226746..77433fc8 100644
--- a/src/corelib/widgets/minfobanner.h
+++ b/src/corelib/widgets/minfobanner.h
@@ -80,6 +80,8 @@ class MInfoBannerPrivate;
QTimer::singleShot(3000, infoBanner, SLOT(disappear()));
\endcode
\sa MNotification
+
+ \deprecated MInfoBanner is deprecated, use MBanner for any component with banner requirements
*/
class M_EXPORT MInfoBanner : public MSceneWindow
diff --git a/src/corelib/widgets/mmessagebox.cpp b/src/corelib/widgets/mmessagebox.cpp
index 3098801a..e55b34e9 100644
--- a/src/corelib/widgets/mmessagebox.cpp
+++ b/src/corelib/widgets/mmessagebox.cpp
@@ -33,7 +33,6 @@ MMessageBox::MMessageBox(const QString &text, M::StandardButtons buttons)
model()->setText(text);
setCentralWidget(0);
- setTitleBarVisible(false);
}
MMessageBox::MMessageBox(const QString &title, const QString &text, M::StandardButtons buttons)
diff --git a/src/views/mapplicationpageview.cpp b/src/views/mapplicationpageview.cpp
index b54f6565..ccb13699 100644
--- a/src/views/mapplicationpageview.cpp
+++ b/src/views/mapplicationpageview.cpp
@@ -24,6 +24,7 @@
#include "mapplicationwindow.h"
#include "mscalableimage.h"
#include "mapplicationpage.h"
+#include "mlabel.h"
#include "mscenemanager.h"
#include "mviewcreator.h"
#include "mpannableviewport.h"
@@ -38,6 +39,7 @@ MApplicationPageViewPrivate::MApplicationPageViewPrivate()
topSpacer(0),
bottomSpacer(0),
mainWidget(0),
+ titleLabel(0),
mainLayout(0),
centralWidget(0)
{
@@ -114,7 +116,7 @@ void MApplicationPageViewPrivate::setCentralWidget(QGraphicsWidget *newCentralWi
// Place the new one
if (newCentralWidget) {
- mainLayout->insertItem(1, newCentralWidget);
+ mainLayout->insertItem(mainLayout->count()-1, newCentralWidget);
centralWidget = newCentralWidget;
propagateOnDisplayChangeEvent(controller->isOnDisplay());
}
@@ -162,6 +164,26 @@ void MApplicationPageViewPrivate::resetPannableViewportPositionIfNeeded()
controller->pannableViewport()->setPosition(QPointF(0, 0));
}
+void MApplicationPageViewPrivate::updateTitleLabel()
+{
+ Q_Q(MApplicationPageView);
+
+ if (q->style()->hasTitleLabel() &&
+ !q->model()->title().isEmpty())
+ {
+ if (titleLabel)
+ delete titleLabel;
+
+ titleLabel = new MLabel;
+ titleLabel->setStyleName("titleLabel");
+ titleLabel->setText(q->model()->title());
+ mainLayout->insertItem(1,titleLabel);
+ } else {
+ delete titleLabel;
+ titleLabel = 0;
+ }
+}
+
MApplicationPageView::MApplicationPageView(MApplicationPage *controller) :
MSceneWindowView(controller),
d_ptr(new MApplicationPageViewPrivate)
@@ -194,6 +216,7 @@ void MApplicationPageView::applyStyle()
MSceneWindowView::applyStyle();
d->updateAutoMarginsForComponents();
d->resetPannableViewportPositionIfNeeded();
+ d->updateTitleLabel();
}
void MApplicationPageView::setupModel()
@@ -221,6 +244,8 @@ void MApplicationPageView::updateData(const QList<const char *> &modifications)
member == MApplicationPageModel::ExposedContentRect)
{
d->updateAutoMarginsForComponents();
+ } else if (member == MApplicationPageModel::Title) {
+ d->updateTitleLabel();
}
}
}
diff --git a/src/views/mapplicationpageview_p.h b/src/views/mapplicationpageview_p.h
index d8a31ef7..264a203f 100644
--- a/src/views/mapplicationpageview_p.h
+++ b/src/views/mapplicationpageview_p.h
@@ -23,6 +23,7 @@
#include "mapplicationpageview.h"
#include <QPointer>
+class MLabel;
class QGraphicsLinearLayout;
class MApplicationPageViewPrivate
@@ -44,6 +45,7 @@ public:
void propagateOnDisplayChangeEvent(bool visible);
void setCentralWidget(QGraphicsWidget *newCentralWidget);
void updateAutoMarginsForComponents();
+ void updateTitleLabel();
void resetPannableViewportPositionIfNeeded();
void _q_onPageStateChanged();
@@ -51,6 +53,7 @@ public:
MWidget *topSpacer;
MWidget *bottomSpacer;
MWidget *mainWidget;
+ MLabel *titleLabel;
QGraphicsLinearLayout *mainLayout;
QPointer<QGraphicsWidget> centralWidget;
diff --git a/src/views/mdialogview.cpp b/src/views/mdialogview.cpp
index fc0005fc..30233d11 100644
--- a/src/views/mdialogview.cpp
+++ b/src/views/mdialogview.cpp
@@ -252,11 +252,8 @@ void MDialogView::applyStyle()
MSceneWindowView::applyStyle();
d->realignButtonBox();
- // update title bar height
- if (style()->titleBarHeight() <= 0)
- d->titleBar->hide();
- else if(model()->titleBarVisible())
- d->titleBar->show();
+ d->closeButton->setVisible(style()->hasCloseButton());
+ d->updateTitleBarVisibility();
d->titleBar->setMinimumHeight(style()->titleBarHeight());
d->titleBar->setPreferredHeight(style()->titleBarHeight());
@@ -317,6 +314,39 @@ void MDialogViewPrivate::setupDialogVerticalAlignment()
}
}
+void MDialogViewPrivate::updateTitleBarVisibility()
+{
+ Q_Q(MDialogView);
+ bool visible = q->style()->titleBarHeight() > 0.0 && q->style()->hasTitleBar();
+
+ if (titleBar->isVisible() == visible) {
+ // nothing to do here
+ return;
+ }
+
+ // invisible items still occupy space in layouts, therefore I manually have
+ // to remove them.
+
+ if (visible) {
+ // I am currenly invisible and therefore not part of the layout.
+ // To become visible I have to be added to the layout.
+ dialogBoxLayout->insertItem(0, titleBar);
+ } else {
+ // I am currently visible and therefore part of the layout.
+ // To become invisible I have to be removed from it.
+ dialogBoxLayout->removeItem(titleBar);
+ }
+
+ // update visibility property
+ titleBar->setVisible(visible);
+
+ if (visible) {
+ contentsViewport->setViewType(MPannableWidget::defaultType);
+ } else {
+ contentsViewport->setViewType("titlebarless");
+ }
+}
+
void MDialogViewPrivate::updateWidgetVisibility(QGraphicsWidget *widget, bool visible, int index,
QGraphicsLinearLayout *layout)
{
@@ -340,14 +370,6 @@ void MDialogViewPrivate::updateWidgetVisibility(QGraphicsWidget *widget, bool vi
// update visibility property
widget->setVisible(visible);
-
- if (widget == titleBar) {
- if (visible) {
- contentsViewport->setViewType(MPannableWidget::defaultType);
- } else {
- contentsViewport->setViewType("titlebarless");
- }
- }
}
void MDialogViewPrivate::repopulateButtonBox()
@@ -555,7 +577,6 @@ void MDialogView::setupModel()
}
d->titleLabel->setText(model()->title());
- d->closeButton->setVisible(model()->closeButtonVisible());
d->setSpinnerVisibility(model()->progressIndicatorVisible());
d->updateWidgetVisibility(d->buttonBox,
@@ -563,11 +584,6 @@ void MDialogView::setupModel()
2,
d->dialogBoxLayout);
- d->updateWidgetVisibility(d->titleBar,
- model()->titleBarVisible(),
- 0,
- d->dialogBoxLayout);
-
d->repopulateButtonBox();
d->setCentralWidget(model()->centralWidget());
@@ -588,9 +604,7 @@ void MDialogView::updateData(const QList<const char *> &modifications)
}
foreach(member, modifications) {
- if (member == MDialogModel::CloseButtonVisible) {
- d->closeButton->setVisible(model()->closeButtonVisible());
- } else if (member == MDialogModel::ProgressIndicatorVisible) {
+ if (member == MDialogModel::ProgressIndicatorVisible) {
d->setSpinnerVisibility(model()->progressIndicatorVisible());
} else if (member == MDialogModel::Title) {
d->titleLabel->setText(model()->title());
@@ -599,12 +613,6 @@ void MDialogView::updateData(const QList<const char *> &modifications)
model()->buttonBoxVisible(),
2,
d->dialogBoxLayout);
- } else if (member == MDialogModel::TitleBarVisible) {
- d->updateWidgetVisibility(d->titleBar,
- model()->titleBarVisible(),
- 0,
- d->dialogBoxLayout);
-
} else if (member == MDialogModel::CentralWidget) {
d->setCentralWidget(model()->centralWidget());
} else if (member == MDialogModel::Buttons) {
diff --git a/src/views/mdialogview.h b/src/views/mdialogview.h
index f6230d80..4b4fb672 100644
--- a/src/views/mdialogview.h
+++ b/src/views/mdialogview.h
@@ -126,6 +126,7 @@ private:
Q_DISABLE_COPY(MDialogView)
#ifdef UNIT_TEST
friend class Ut_MDialog;
+ friend class Ut_MDialogView;
#endif
};
diff --git a/src/views/mdialogview_p.h b/src/views/mdialogview_p.h
index 18bda00b..7321bd35 100644
--- a/src/views/mdialogview_p.h
+++ b/src/views/mdialogview_p.h
@@ -82,6 +82,7 @@ public:
MDialogViewPrivate();
virtual ~MDialogViewPrivate();
+ void updateTitleBarVisibility();
void updateWidgetVisibility(QGraphicsWidget *widget, bool visible, int index,
QGraphicsLinearLayout *layout);
void setupDialogVerticalAlignment();
diff --git a/src/views/mspinnerview.cpp b/src/views/mspinnerview.cpp
index e2ac6c46..ac92c5a3 100644
--- a/src/views/mspinnerview.cpp
+++ b/src/views/mspinnerview.cpp
@@ -86,6 +86,7 @@ void MSpinnerView::setupAnimation()
d->positionAnimation->setStartValue(0);
d->positionAnimation->setEndValue(360);
d->positionAnimation->setLoopCount(-1);
+ d->elapsedTime.start();
}
if (model()->unknownDuration()) {
@@ -111,7 +112,11 @@ void MSpinnerView::setAngle(int angle)
Q_D(MSpinnerView);
d->angle = angle;
- update();
+
+ if (d->elapsedTime.elapsed() > style()->refreshRate()) {
+ d->elapsedTime.start();
+ update();
+ }
}
void MSpinnerView::updateData(const QList<const char *>& modifications)
diff --git a/src/views/mspinnerview_p.h b/src/views/mspinnerview_p.h
index 7d1f07ef..07aabff9 100644
--- a/src/views/mspinnerview_p.h
+++ b/src/views/mspinnerview_p.h
@@ -20,6 +20,8 @@
#ifndef MSPINNERVIEW_P_H
#define MSPINNERVIEW_P_H
+#include <QElapsedTimer>
+
class MStyle;
class MProgressIndicator;
class QTimer;
@@ -51,6 +53,7 @@ public:
QPropertyAnimation* positionAnimation;
int angle;
+ QElapsedTimer elapsedTime;
#ifdef M_UNIT_TEST
M_UNIT_TEST;
diff --git a/src/views/style/mapplicationpagestyle.h b/src/views/style/mapplicationpagestyle.h
index dfe4648c..46b6aed4 100644
--- a/src/views/style/mapplicationpagestyle.h
+++ b/src/views/style/mapplicationpagestyle.h
@@ -28,6 +28,12 @@ class M_EXPORT MApplicationPageStyle : public MSceneWindowStyle
Q_OBJECT
M_STYLE_INTERNAL(MApplicationPageStyle)
+ /*!
+ \property MApplicationPageStyle::hasTitleLabel
+ \brief Controls whether the title Label should be visible or not.
+ */
+ M_STYLE_ATTRIBUTE(bool, hasTitleLabel, HasTitleLabel)
+
};
class M_EXPORT MApplicationPageStyleContainer : public MSceneWindowStyleContainer
diff --git a/src/views/style/mdialogstyle.h b/src/views/style/mdialogstyle.h
index d42a3641..02ab5b9f 100644
--- a/src/views/style/mdialogstyle.h
+++ b/src/views/style/mdialogstyle.h
@@ -44,6 +44,10 @@
dialog-preferred-size: 100% -1;
button-box-orientation: horizontal;
+ button-box-centered: false;
+
+ has-close-button: true;
+ has-title-bar: true;
}
\endcode
@@ -160,6 +164,24 @@ class M_EXPORT MDialogStyle : public MSceneWindowStyle
\brief If true, title text will be all uppercase.
*/
M_STYLE_ATTRIBUTE(bool, titleCapitalization, titleCapitalization)
+
+ /*!
+ \property MDialogStyle::hasTitleBar
+ \brief Whether the dialog should have a title bar.
+
+ The title bar usually sits on top of the dialog and contains a title
+ text, an optional close button and an optional progress indicator.
+ */
+ M_STYLE_ATTRIBUTE(bool, hasTitleBar, HasTitleBar)
+
+ /*!
+ \property MDialogStyle::hasCloseButton
+ \brief Whether the dialog should have a close button.
+
+ The dialog's optional close button is provided as a convenient way of
+ rejecting the dialog and discarding all changes.
+ */
+ M_STYLE_ATTRIBUTE(bool, hasCloseButton, HasCloseButton)
};
/*!
diff --git a/src/views/style/mspinnerstyle.h b/src/views/style/mspinnerstyle.h
index 4ab244f2..e42552ad 100644
--- a/src/views/style/mspinnerstyle.h
+++ b/src/views/style/mspinnerstyle.h
@@ -51,6 +51,12 @@ class M_EXPORT MSpinnerStyle : public MWidgetStyle
\brief Period of unknown duration spinner (duration of one full spin in msec).
*/
M_STYLE_ATTRIBUTE(int, period, Period)
+
+ /*!
+ \property MSpinnerStyle::refreshRate
+ \brief Refresh rate of unknown duration spinner (interval between frames in msec).
+ */
+ M_STYLE_ATTRIBUTE(int, refreshRate, RefreshRate)
};
/*!