on xenial help sign in
Rework Dash Preview column margins

    If there's one column      Preview widgets have 2GU on each side       Unless it's one of the "full screen" widgets, i.e. video/image      This hasn't changed in this patch     If there's two columns      the columns have 4GU on each side and between eachother      This has changed according to design guidelines Approved by: Andrea Cimitan, Unity8 CI Bot

commit3d551b3eadd3aaeaf58227f7a5c3b5686a57f8f4 authorAlbert Astals Cid <albert.astals@canonical.com> dateWed 9 Nov 2016, 15:03 (10 years ago) parent36123c1ecba1de
8 files changed+59−31
qml/Dash/Previews/Preview.qml+19−7 qml/Dash/Previews/PreviewInlineVideo.qml+1−1 qml/Dash/Previews/PreviewVideoPlayback.qml+1−1 qml/Dash/Previews/PreviewWidget.qml+2−2 qml/Dash/Previews/PreviewWidgetFactory.qml+2−2 qml/Dash/Previews/PreviewZoomableImage.qml+1−1 tests/mocks/Unity/fake_previewmodel.cpp+15−7 tests/mocks/Unity/fake_previewwidgetmodel.cpp+18−10
qml/Dash/Previews/Preview.qml+19−7
@@ -56,11 +56,12 @@ Item {
5656 Row {
5757 id: row
5858
59− spacing: units.gu(1)
60− anchors { fill: parent; margins: spacing }
59+ spacing: units.gu(4)
60+ anchors.fill: parent
6161
62− property int columns: width >= units.gu(80) ? 2 : 1
63− property real columnWidth: width / columns
62+ readonly property int columns: width >= units.gu(80) ? 2 : 1
63+ readonly property real columnWidth: (width - (spacing * (columns - 1))) / columns
64+ readonly property int singleColumnMargin: units.gu(2)
6465
6566 Repeater {
6667 model: previewModel
@@ -72,8 +73,11 @@ Item {
7273 top: parent.top
7374 bottom: parent.bottom
7475 }
76+ topMargin: units.gu(2)
7577 width: row.columnWidth
76− spacing: row.spacing
78+ spacing: units.gu(1)
79+
80+ readonly property int columnNumber: index
7781
7882 ListViewOSKScroller {
7983 id: oskScroller
@@ -96,8 +100,16 @@ Item {
96100 anchors {
97101 left: parent.left
98102 right: parent.right
99− leftMargin: widgetMargins
100− rightMargin: widgetMargins
103+ leftMargin: if (row.columns == 1) {
104+ return singleColumnMarginless ? 0 : row.singleColumnMargin;
105+ } else {
106+ return column.columnNumber == 0 ? row.singleColumnMargin : 0;
107+ }
108+ rightMargin: if (row.columns == 1) {
109+ return singleColumnMarginless ? 0 : row.singleColumnMargin;
110+ } else {
111+ return column.columnNumber == 1 ? row.singleColumnMargin : 0;
112+ }
101113 }
102114
103115 onTriggered: {
qml/Dash/Previews/PreviewInlineVideo.qml+1−1
@@ -33,7 +33,7 @@ PreviewWidget {
3333 implicitWidth: units.gu(35)
3434 implicitHeight: services.height
3535
36− widgetMargins: -units.gu(1)
36+ singleColumnMarginless: true
3737 orientationLock: services.fullscreen
3838
3939 property alias rootItem: services.rootItem
qml/Dash/Previews/PreviewVideoPlayback.qml+1−1
@@ -30,7 +30,7 @@ PreviewWidget {
3030 implicitWidth: units.gu(35)
3131 implicitHeight: childrenRect.height
3232
33− widgetMargins: -units.gu(1)
33+ singleColumnMarginless: true
3434
3535 LazyImage {
3636 objectName: "screenshot"
qml/Dash/Previews/PreviewWidget.qml+2−2
@@ -34,8 +34,8 @@ Item {
3434 //! Should the orientation be locked
3535 property bool orientationLock: false
3636
37− //! Set margins width.
38− property real widgetMargins: units.gu(1)
37+ //! Should it have margins when on a single columns?
38+ property bool singleColumnMarginless: false
3939
4040 /// The parent (vertical) flickable this widget is in (if any)
4141 property var parentFlickable: null
qml/Dash/Previews/PreviewWidgetFactory.qml+2−2
@@ -40,8 +40,8 @@ Loader {
4040 //! Should the orientation be locked
4141 readonly property bool orientationLock: status === Loader.Ready ? item.orientationLock : false
4242
43− //! Set margins width.
44− property real widgetMargins: status === Loader.Ready ? item.widgetMargins : units.gu(1)
43+ //! Should it have margins when on a single columns?
44+ readonly property bool singleColumnMarginless: status === Loader.Ready ? item.singleColumnMarginless : false
4545
4646 /// The parent (vertical) flickable this widget is in (if any)
4747 property var parentFlickable: null
qml/Dash/Previews/PreviewZoomableImage.qml+1−1
@@ -30,7 +30,7 @@ PreviewWidget {
3030 implicitWidth: units.gu(35)
3131 implicitHeight: lazyImage.height
3232
33− widgetMargins: -units.gu(1)
33+ singleColumnMarginless: true
3434 orientationLock: overlay.visible
3535
3636 property Item rootItem: QuickUtils.rootItem(root)
tests/mocks/Unity/fake_previewmodel.cpp+15−7
@@ -34,22 +34,30 @@ PreviewModel::PreviewModel(QObject* parent, Scope* scope)
3434 , m_loaded(true)
3535 , m_scope(scope)
3636{
37− // we have one column by default
38− PreviewWidgetModel* columnModel = new PreviewWidgetModel(this);
39− m_previewWidgetModels.append(columnModel);
37+ setWidgetColumnCount(1);
4038 connect(this, &PreviewModel::triggered, this, &PreviewModel::triggeredSlot);
4139}
4240
4341void PreviewModel::setWidgetColumnCount(int count)
4442{
45− if (count != 1) {
46− qWarning("PreviewModel::setWidgetColumnCount != 1 not implemented");
43+ if (count != widgetColumnCount()) {
44+ beginResetModel();
45+
46+ m_previewWidgetModels.clear();
47+ for (int i = 0; i < count; ++i) {
48+ PreviewWidgetModel* columnModel = new PreviewWidgetModel(this);
49+ m_previewWidgetModels.append(columnModel);
50+ }
51+
52+ endResetModel();
53+
54+ Q_EMIT widgetColumnCountChanged();
4755 }
4856}
4957
5058int PreviewModel::widgetColumnCount() const
5159{
52− return 1;
60+ return m_previewWidgetModels.size();
5361}
5462
5563bool PreviewModel::loaded() const
@@ -64,7 +72,7 @@ bool PreviewModel::processingAction() const
6472
6573int PreviewModel::rowCount(const QModelIndex&) const
6674{
67− return m_previewWidgetModels.size();
75+ return widgetColumnCount();
6876}
6977
7078QVariant PreviewModel::data(const QModelIndex& index, int role) const
tests/mocks/Unity/fake_previewwidgetmodel.cpp+18−10
@@ -54,18 +54,26 @@ void PreviewWidgetModel::populateWidgets()
5454 m_previewWidgets.append(QSharedPointer<PreviewData>(preview_data));
5555 }
5656
57− QVariantMap attributes;
58− QVariantMap buttonData;
59− buttonData["label"] = "Button";
60− buttonData["id"] = "open_click";
61− QVariantList buttons;
62− buttons << buttonData << buttonData << buttonData;
63− attributes["actions"] = QVariant::fromValue(buttons);
64− PreviewData* preview_data = new PreviewData(QString("widget-21"), QString("actions"), attributes);
65− m_previewWidgets.append(QSharedPointer<PreviewData>(preview_data));
57+ {
58+ QVariantMap attributes;
59+ attributes["source"] = QVariant("qrc:///Unity/Application/screenshots/browser@12.png");
60+ PreviewData* preview_data = new PreviewData(QString("widget-22"), QString("image"), attributes);
61+ m_previewWidgets.append(QSharedPointer<PreviewData>(preview_data));
62+ }
6663
67− endResetModel();
64+ {
65+ QVariantMap attributes;
66+ QVariantMap buttonData;
67+ buttonData["label"] = "Button";
68+ buttonData["id"] = "open_click";
69+ QVariantList buttons;
70+ buttons << buttonData << buttonData << buttonData;
71+ attributes["actions"] = QVariant::fromValue(buttons);
72+ PreviewData* preview_data = new PreviewData(QString("widget-21"), QString("actions"), attributes);
73+ m_previewWidgets.append(QSharedPointer<PreviewData>(preview_data));
74+ }
6875
76+ endResetModel();
6977}
7078
7179int PreviewWidgetModel::rowCount(const QModelIndex&) const