on xenial help sign in
Switch from image://gicon to image://theme
commitea43c0b2e299ffbfb8d87b0666284f193b3d903c authorMichael Terry <michael.terry@canonical.com> dateTue 3 Sep 2013, 15:04 (13 years ago) parent913bd75
15 files changed+71−32
Components/IconUtil.js+4−4 Panel/Indicators/DefaultIndicatorWidget.qml+1−1 Panel/Indicators/MessagingIndicatorWidget.qml+1−1 Panel/Indicators/NetworkIndicatorWidget.qml+6−6 Panel/Indicators/SoundIndicatorWidget.qml+1−1 debian/control+2−2 plugins/Unity/Indicators/Network/qml/AccessPoint.qml+1−1 plugins/Unity/Indicators/rootactionstate.cpp+8−8 plugins/Unity/IndicatorsLegacy/Messaging/qml/GroupedMessage.qml+1−1 plugins/Unity/IndicatorsLegacy/Messaging/qml/HeroMessage.qml+2−2 plugins/Unity/IndicatorsLegacy/Network/qml/AccessPoint.qml+2−2 plugins/Unity/Launcher/backend/launcherbackend.cpp+1−1 tests/plugins/Unity/Launcher/launcherbackendtest.cpp+2−2 tests/qmltests/CMakeLists.txt+1 tests/qmltests/Components/tst_IconUtil.qml+38
Components/IconUtil.js+4−4
@@ -25,17 +25,17 @@ function from_gicon(name) {
2525 if (annotated_re.test(name)) {
2626 var base_icon_re = /'base-icon':.+?'(.+?)'/;
2727 var base_icon = name.toString().match(base_icon_re);
28− icon_name = base_icon[1];
28+ return from_gicon(unescape(base_icon[1]));
2929 } else {
30− var themed_re = /^. GThemedIcon\s*([^\s]+)\s*/;
30+ var themed_re = /^. GThemedIcon (.+)/;
3131 var themed = name.match(themed_re);
3232 if (themed) {
33− return "image://gicon/" + themed[1];
33+ return "image://theme/" + themed[1].replace(" ", ",");
3434 }
3535 }
3636 var name_re = /^[a-z0-9\._-]+$/;
3737 if (name_re.test(icon_name)) {
38− return "image://gicon/" + icon_name;
38+ return "image://theme/" + icon_name;
3939 } else {
4040 return icon_name;
4141 }
Panel/Indicators/DefaultIndicatorWidget.qml+1−1
@@ -74,7 +74,7 @@ Indicators.IndicatorWidget {
7474 }
7575
7676 label = action.state[Indicators.ActionState.Label];
77− iconSource = "image://gicon/" + action.state[Indicators.ActionState.IconSource];
77+ iconSource = "image://theme/" + action.state[Indicators.ActionState.IconSource];
7878 enabled = action.state[Indicators.ActionState.Visible];
7979 }
8080}
Panel/Indicators/MessagingIndicatorWidget.qml+1−1
@@ -21,5 +21,5 @@ import QtQuick 2.0
2121
2222DefaultIndicatorWidget {
2323 // default the icon so we have something to show when we don't have the bus.
24− iconSource: "image://gicon/indicator-messages"
24+ iconSource: "image://theme/indicator-messages"
2525}
Panel/Indicators/NetworkIndicatorWidget.qml+6−6
@@ -94,16 +94,16 @@ Indicators.IndicatorWidget {
9494 function get_icon_for_signal(con_state, value) {
9595 if (con_state >= Indicators.NetworkConnection.Activating && con_state <= Indicators.NetworkConnection.Deactivating) {
9696 if (value == 0) {
97− return "image://gicon/nm-signal-00";
97+ return "image://theme/nm-signal-00";
9898 } else if (value <= 25) {
99− return "image://gicon/nm-signal-25";
99+ return "image://theme/nm-signal-25";
100100 } else if (value <= 50) {
101− return "image://gicon/nm-signal-50";
101+ return "image://theme/nm-signal-50";
102102 } else if (value <= 75) {
103− return "image://gicon/nm-signal-75";
103+ return "image://theme/nm-signal-75";
104104 }
105− return "image://gicon/nm-signal-100";
105+ return "image://theme/nm-signal-100";
106106 }
107− return "image://gicon/wifi-none";
107+ return "image://theme/wifi-none";
108108 }
109109}
Panel/Indicators/SoundIndicatorWidget.qml+1−1
@@ -21,5 +21,5 @@ import QtQuick 2.0
2121
2222DefaultIndicatorWidget {
2323 // default the icon so we have something to show when we don't have the bus.
24− iconSource: "image://gicon/audio-volume-high"
24+ iconSource: "image://theme/audio-volume-high"
2525}
debian/control+2−2
@@ -53,7 +53,7 @@ Vcs-Browser: https://bazaar.launchpad.net/~unity-team/unity8/trunk
5353Package: indicators-client
5454Architecture: amd64 armhf i386
5555Depends: qmenumodel-qml (>= 0.2.7),
56− qtdeclarative5-ubuntu-ui-toolkit-plugin | qt-components-ubuntu,
56+ qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.46+13.10.20130829.1-0ubuntu1),
5757 unity8 (= ${binary:Version}),
5858 ${misc:Depends},
5959 ${shlibs:Depends},
@@ -67,7 +67,7 @@ Depends: gsettings-desktop-schemas,
6767 qmenumodel-qml (>= 0.2.7),
6868 qtdeclarative5-dee-plugin,
6969 qtdeclarative5-gsettings1.0,
70− qtdeclarative5-ubuntu-ui-toolkit-plugin,
70+ qtdeclarative5-ubuntu-ui-toolkit-plugin (>= 0.1.46+13.10.20130829.1-0ubuntu1),
7171 qtdeclarative5-unity-notifications-plugin | unity-notifications-impl,
7272 qtdeclarative5-xmllistmodel-plugin,
7373 unity-launcher-impl-2,
plugins/Unity/Indicators/Network/qml/AccessPoint.qml+1−1
@@ -55,7 +55,7 @@ Indicators.FramedMenuItem {
5555 if (secure) {
5656 imageName += "-secure";
5757 }
58− return "image://gicon/" + imageName;
58+ return "image://theme/" + imageName;
5959 }
6060
6161 iconFrame: false
plugins/Unity/Indicators/rootactionstate.cpp+8−8
@@ -141,15 +141,15 @@ static QString iconUri(GIcon *icon)
141141 QString uri;
142142
143143 if (G_IS_THEMED_ICON (icon)) {
144−
145144 const gchar* const* iconNames = g_themed_icon_get_names (G_THEMED_ICON (icon));
146− guint index = 0;
147− while(iconNames[index] != NULL) {
148− if (QIcon::hasThemeIcon(iconNames[index])) {
149− uri = QString("image://theme/%1").arg(iconNames[index]);
150− break;
151− }
152− index++;
145+
146+ QStringList iconNameList;
147+ for (guint index = 0; iconNames[index] != NULL; index++) {
148+ iconNameList << iconNames[index];
149+ }
150+
151+ if (!iconNameList.empty()) {
152+ uri = QString("image://theme/%1").arg(iconNameList.join(","));
153153 }
154154 }
155155 else if (G_IS_FILE_ICON (icon)) {
plugins/Unity/IndicatorsLegacy/Messaging/qml/GroupedMessage.qml+1−1
@@ -44,7 +44,7 @@ Indicators.BasicMenuItem {
4444 height: units.gu(6)
4545 width: units.gu(6)
4646 image: Image {
47− source: menu && (menu.extra.canonical_icon.length > 0) ? "image://gicon/" + encodeURI(menu.extra.canonical_icon) : "qrc:/indicators/artwork/messaging/default_app.svg"
47+ source: menu && (menu.extra.canonical_icon.length > 0) ? "image://theme/" + encodeURI(menu.extra.canonical_icon) : "qrc:/indicators/artwork/messaging/default_app.svg"
4848 fillMode: Image.PreserveAspectFit
4949 }
5050 }
plugins/Unity/IndicatorsLegacy/Messaging/qml/HeroMessage.qml+2−2
@@ -48,8 +48,8 @@ Indicators.BasicMenuItem {
4848 anchors.left: parent.left
4949 anchors.right: parent.right
5050
51− avatar: menu && (menu.extra.canonical_icon.length > 0) ? "image://gicon/" + encodeURI(menu.extra.canonical_icon) : "qrc:/indicators/artwork/messaging/default_contact.png"
52− icon: menu && (menu.extra.canonical_app_icon.length > 0) ? "image://gicon/" + encodeURI(menu.extra.canonical_app_icon) : ""
51+ avatar: menu && (menu.extra.canonical_icon.length > 0) ? "image://theme/" + encodeURI(menu.extra.canonical_icon) : "qrc:/indicators/artwork/messaging/default_contact.png"
52+ icon: menu && (menu.extra.canonical_app_icon.length > 0) ? "image://theme/" + encodeURI(menu.extra.canonical_app_icon) : ""
5353 appIcon: icon
5454
5555 state: heroMessage.state
plugins/Unity/IndicatorsLegacy/Network/qml/AccessPoint.qml+2−2
@@ -47,10 +47,10 @@ Indicators.MenuItem {
4747 imageName += "-secure";
4848 }
4949
50− return "image://gicon/" + imageName;
50+ return "image://theme/" + imageName;
5151 }
5252
53− icon: menu && wifiApStrength ? getNetworkIcon(menu) : "image://gicon/wifi-none"
53+ icon: menu && wifiApStrength ? getNetworkIcon(menu) : "image://theme/wifi-none"
5454 iconFrame: false
5555 control: CheckBox {
5656 id: checkBoxActive
plugins/Unity/Launcher/backend/launcherbackend.cpp+1−1
@@ -99,7 +99,7 @@ QString LauncherBackend::icon(const QString &appId) const
9999 if (!iconName.isEmpty()) {
100100 QFileInfo iconFileInfo(iconName);
101101 if (iconFileInfo.isRelative()) {
102− iconName = "image://gicon/" + iconName;
102+ iconName = "image://theme/" + iconName;
103103 }
104104 }
105105
tests/plugins/Unity/Launcher/launcherbackendtest.cpp+2−2
@@ -46,7 +46,7 @@ private Q_SLOTS:
4646 LauncherBackend backend(false);
4747
4848 QCOMPARE(backend.displayName(SRCDIR "/rel-icon.desktop"), QString("Relative Icon"));
49− QCOMPARE(backend.icon(SRCDIR "/rel-icon.desktop"), QString("image://gicon/rel-icon"));
49+ QCOMPARE(backend.icon(SRCDIR "/rel-icon.desktop"), QString("image://theme/rel-icon"));
5050
5151 QCOMPARE(backend.displayName(SRCDIR "/abs-icon.desktop"), QString("Absolute Icon"));
5252 QCOMPARE(backend.icon(SRCDIR "/abs-icon.desktop"), QString("/path/to/icon.png"));
@@ -55,7 +55,7 @@ private Q_SLOTS:
5555 QCOMPARE(backend.icon(SRCDIR "/no-icon.desktop"), QString(""));
5656
5757 QCOMPARE(backend.displayName(SRCDIR "/no-name.desktop"), QString(""));
58− QCOMPARE(backend.icon(SRCDIR "/no-name.desktop"), QString("image://gicon/no-name"));
58+ QCOMPARE(backend.icon(SRCDIR "/no-name.desktop"), QString("image://theme/no-name"));
5959
6060 QCOMPARE(backend.displayName(SRCDIR "/no-exist.desktop"), QString(""));
6161 QCOMPARE(backend.icon(SRCDIR "/no-exist.desktop"), QString(""));
tests/qmltests/CMakeLists.txt+1
@@ -14,6 +14,7 @@ set(qmltest_DEFAULT_PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=minimal")
1414add_qml_test(Components AnimationControllerWithSignals)
1515add_qml_test(Components Carousel)
1616add_qml_test(Components CrossFadeImage)
17+add_qml_test(Components IconUtil)
1718add_qml_test(Components MathLocal)
1819add_qml_test(Components OpenEffect)
1920add_qml_test(Components RatingStars)
tests/qmltests/Components/tst_IconUtil.qmlnew file+38
@@ -0,0 +1,38 @@
1+/*
2+ * Copyright 2013 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import QtTest 1.0
19+import "../../../Components/IconUtil.js" as IconUtil
20+
21+TestCase {
22+ id: root
23+ name: "IconUtil"
24+
25+ function test_from_gicon_data() {
26+ return [ {in: ". GThemedIcon one", out: "image://theme/one"},
27+ {in: ". GThemedIcon one two", out: "image://theme/one,two"},
28+ {in: ". UnityProtocolAnnotatedIcon %7B'base-icon':%20%3C'.%20GThemedIcon%20one%20two'%3E%7D", out: "image://theme/one,two"},
29+ {in: "icon.test_0-name", out: "image://theme/icon.test_0-name"},
30+ {in: "?^713]p", out: "?^713]p"},
31+ ]
32+ }
33+
34+ function test_from_gicon(data) {
35+ var out = IconUtil.from_gicon(data.in)
36+ compare(out, data.out)
37+ }
38+}