on xenial help sign in
Rework 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

commit163d36893f028dc57857c12de3312cbe99c64b27 authorAlbert Astals Cid <albert.astals@canonical.com> dateTue 4 Oct 2016, 17:35 (10 years ago) parentc898524
8 files changed+58−31
qml/Dash/Previews/Preview.qml+18−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+18−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
@@ -73,7 +74,9 @@ Item {
7374 bottom: parent.bottom
7475 }
7576 width: row.columnWidth
76− spacing: row.spacing
77+ spacing: units.gu(1)
78+
79+ readonly property int columnNumber: index
7780
7881 ListViewOSKScroller {
7982 id: oskScroller
@@ -96,8 +99,16 @@ Item {
9699 anchors {
97100 left: parent.left
98101 right: parent.right
99− leftMargin: widgetMargins
100− rightMargin: widgetMargins
102+ leftMargin: if (row.columns == 1) {
103+ return singleColumnMarginless ? 0 : row.singleColumnMargin;
104+ } else {
105+ return column.columnNumber == 0 ? row.spacing : 0;
106+ }
107+ rightMargin: if (row.columns == 1) {
108+ return singleColumnMarginless ? 0 : row.singleColumnMargin;
109+ } else {
110+ return column.columnNumber == 1 ? row.spacing : 0;
111+ }
101112 }
102113
103114 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 : true
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+ QVariantMap buttonData;
60+ buttonData["label"] = "Button";
61+ buttonData["id"] = "open_click";
62+ QVariantList buttons;
63+ buttons << buttonData << buttonData << buttonData;
64+ attributes["actions"] = QVariant::fromValue(buttons);
65+ PreviewData* preview_data = new PreviewData(QString("widget-21"), QString("actions"), attributes);
66+ m_previewWidgets.append(QSharedPointer<PreviewData>(preview_data));
67+ }
6668
67− endResetModel();
69+ {
70+ QVariantMap attributes;
71+ attributes["source"] = QVariant("qrc:///Unity/Application/screenshots/browser@12.png");
72+ PreviewData* preview_data = new PreviewData(QString("widget-22"), QString("image"), attributes);
73+ m_previewWidgets.append(QSharedPointer<PreviewData>(preview_data));
74+ }
6875
76+ endResetModel();
6977}
7078
7179int PreviewWidgetModel::rowCount(const QModelIndex&) const