aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Borgmann <ext-daniel.borgmann@nokia.com>2010-11-23 15:00:53 +0200
committerAdrian Yanes <ext-adrian.yanes@nokia.com>2010-12-06 19:09:55 +0000
commit411bd63dd2f871ed1080c4c107ca238195316704 (patch)
tree7dd9b3cc6471c44f65f05b4a02cd8e612a14c061
parent3f1fc12f12306bdff91c77dc28420c7a8469612c (diff)
Changes: Add MSeparator to object menu title.
Details: adding stylename properties through CSS RevBy: Adrian Yanes
-rw-r--r--src/views/mobjectmenuview.cpp46
-rw-r--r--src/views/mobjectmenuview_p.h5
-rw-r--r--src/views/style/mobjectmenustyle.h4
3 files changed, 36 insertions, 19 deletions
diff --git a/src/views/mobjectmenuview.cpp b/src/views/mobjectmenuview.cpp
index 3232ded6..99c35676 100644
--- a/src/views/mobjectmenuview.cpp
+++ b/src/views/mobjectmenuview.cpp
@@ -23,9 +23,11 @@
#include "mbutton.h"
#include "mimagewidget.h"
#include "mlabel.h"
+#include "mseparator.h"
#include "mviewcreator.h"
#include "mobjectmenu.h"
+#include <QGraphicsGridLayout>
#include <QGraphicsLinearLayout>
#include "mwidgetaction.h"
@@ -39,10 +41,11 @@ MObjectMenuViewPrivate::MObjectMenuViewPrivate() :
mainLayout(0),
actionLayout(0),
titleLayout(0),
- controller(0),
+ controller(0),
titleArea(0),
titleLabel(0),
titleIcon(0),
+ titleSeparator(0),
actionViewport(0),
actionWidget(0)
{
@@ -61,24 +64,28 @@ void MObjectMenuViewPrivate::init()
controller->setLayout(mainLayout);
//create title bar
- titleLayout = new QGraphicsLinearLayout(Qt::Horizontal);
+ titleLayout = new QGraphicsGridLayout();
titleLayout->setSpacing(0);
titleLayout->setContentsMargins(0.0,0.0,0.0,0.0);
titleArea = new MObjectMenuTitleArea(controller);
- titleArea->setStyleName("ObjectMenuTitleArea");
titleArea->setLayout(titleLayout);
-
+
//create and add title icon
titleIcon = new MImageWidget(titleArea);
- titleLayout->addItem(titleIcon);
- titleLayout->setAlignment(titleIcon, Qt::AlignCenter);
-
+ titleLayout->addItem(titleIcon, 0, 0);
+ titleLayout->setAlignment(titleIcon, Qt::AlignCenter);
+
//create and add title label
titleLabel = new MLabel("", titleArea);
titleLabel->setTextElide(true);
- titleLayout->addItem(titleLabel);
+ titleLayout->addItem(titleLabel, 0, 1);
titleLayout->setAlignment(titleLabel, Qt::AlignCenter);
+ //create and add title separator
+ titleSeparator = new MSeparator(titleArea);
+ titleLayout->addItem(titleSeparator, 1, 0, 1, 2);
+ titleLayout->setAlignment(titleSeparator, Qt::AlignCenter);
+
//setup pannable viewport for the action buttons
actionLayout = new QGraphicsLinearLayout(Qt::Vertical);
actionLayout->setSpacing(0);
@@ -95,8 +102,8 @@ void MObjectMenuViewPrivate::updateIcon()
{
Q_Q(MObjectMenuView);
- //setup the icon, first try to load it from filesystem,
- //if it fails load it from theme, if iconId is "" hide
+ //setup the icon, first try to load it from filesystem,
+ //if it fails load it from theme, if iconId is "" hide
//the image widget
if( !q->model()->iconId().isEmpty() ) {
QPixmap pm(q->model()->iconId());
@@ -105,21 +112,20 @@ void MObjectMenuViewPrivate::updateIcon()
else
titleIcon->setImage(q->model()->iconId());
titleIcon->show();
- titleLayout->insertItem(0, titleIcon);
- titleLayout->setAlignment(titleIcon, Qt::AlignCenter);
+ titleLayout->addItem(titleIcon, 0, 0);
+ titleLayout->setAlignment(titleIcon, Qt::AlignCenter);
} else {
-
titleIcon->setImage(q->model()->iconId());
titleIcon->hide();
- titleLayout->removeItem(titleIcon);
+ titleLayout->removeAt(0);
}
}
void MObjectMenuViewPrivate::updateTitleAreaVisibility()
{
Q_Q(MObjectMenuView);
-
- //hide whole title area if title == "" and icon is not visible
+
+ //hide whole title area if title == "" and icon is not visible
if( q->model()->title().isEmpty() && q->model()->iconId().isEmpty() ) {
mainLayout->removeItem(titleArea);
titleArea->hide();
@@ -203,7 +209,7 @@ void MObjectMenuView::actionAdded(MAction *action)
}
d->buttons.insert(action, button);
-
+
//viewport doesnt update its size without this
d->actionViewport->setWidget(d->actionWidget);
}
@@ -280,7 +286,7 @@ void MObjectMenuView::updateData(const QList<const char *> &modifications)
d->titleLabel->setText(model()->title());
d->updateTitleAreaVisibility();
} else if (member == MObjectMenuModel::IconId ) {
- d->updateIcon();
+ d->updateIcon();
d->updateTitleAreaVisibility();
}
}
@@ -332,6 +338,10 @@ void MObjectMenuView::setupModel()
actionAdded(action);
}
#endif
+ d->titleArea->setStyleName(style()->titleStyleName());
+ d->titleIcon->setStyleName(style()->titleIconStyleName());
+ d->titleLabel->setStyleName(style()->titleLabelStyleName());
+ d->titleSeparator->setStyleName(style()->titleSeparatorStyleName());
d->titleLabel->setText(model()->title());
d->updateIcon();
diff --git a/src/views/mobjectmenuview_p.h b/src/views/mobjectmenuview_p.h
index b848bcc3..1f31f384 100644
--- a/src/views/mobjectmenuview_p.h
+++ b/src/views/mobjectmenuview_p.h
@@ -29,9 +29,11 @@
class MButton;
class MAction;
+class QGraphicsGridLayout;
class QGraphicsLinearLayout;
class MLabel;
class MImageWidget;
+class MSeparator;
class MPannableViewport;
class MObjectMenuViewPrivate
@@ -58,13 +60,14 @@ public:
QGraphicsLinearLayout* mainLayout;
QGraphicsLinearLayout* actionLayout;
- QGraphicsLinearLayout* titleLayout;
+ QGraphicsGridLayout* titleLayout;
MObjectMenu *controller;
MWidgetController* titleArea;
MLabel* titleLabel;
MImageWidget* titleIcon;
+ MSeparator* titleSeparator;
MPannableViewport* actionViewport;
QGraphicsWidget* actionWidget;
diff --git a/src/views/style/mobjectmenustyle.h b/src/views/style/mobjectmenustyle.h
index 0bb171a9..8b6a06f7 100644
--- a/src/views/style/mobjectmenustyle.h
+++ b/src/views/style/mobjectmenustyle.h
@@ -28,6 +28,10 @@ class M_VIEWS_EXPORT MObjectMenuStyle : public MSceneWindowStyle
{
Q_OBJECT
M_STYLE_INTERNAL(MObjectMenuStyle)
+ M_STYLE_ATTRIBUTE(QString, titleStyleName, TitleStyleName)
+ M_STYLE_ATTRIBUTE(QString, titleIconStyleName, TitleIconStyleName)
+ M_STYLE_ATTRIBUTE(QString, titleLabelStyleName, TitleLabelStyleName)
+ M_STYLE_ATTRIBUTE(QString, titleSeparatorStyleName, TitleSeparatorStyleName)
};
class M_VIEWS_EXPORT MObjectMenuStyleContainer : public MSceneWindowStyleContainer