aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Kerr <charles.kerr@canonical.com>2014-10-09 13:44:12 +0000
committerCI bot <ps-jenkins@lists.canonical.com>2014-10-09 13:44:12 +0000
commitc8edcbeb3add928e37705ec51c8739d953f0d540 (patch)
treefd2bff9b14767a059828dc8460f14b94a98c58cd
parent7eaeb6486f681391b5d5b9a3d15ceeedc4313244 (diff)
parent94ba0a4147052dec53e2ba818ec3d03141e8f26b (diff)
downloadayatana-indicator-display-c8edcbeb3add928e37705ec51c8739d953f0d540.tar.gz
ayatana-indicator-display-c8edcbeb3add928e37705ec51c8739d953f0d540.tar.bz2
ayatana-indicator-display-c8edcbeb3add928e37705ec51c8739d953f0d540.zip
Use com.ubuntu.touch.system's "rotation-lock" boolean for the rotation lock indicator. Fixes: 1378078
Approved by: Ted Gould, PS Jenkins bot
-rw-r--r--src/exporter.cpp4
-rw-r--r--src/exporter.h6
-rw-r--r--src/indicator.h1
-rw-r--r--src/rotation-lock.cpp29
-rw-r--r--tests/glib-fixture.h13
-rw-r--r--tests/gtestdbus-fixture.h10
-rw-r--r--tests/manual8
7 files changed, 40 insertions, 31 deletions
diff --git a/src/exporter.cpp b/src/exporter.cpp
index f45d9d6..21e8af7 100644
--- a/src/exporter.cpp
+++ b/src/exporter.cpp
@@ -140,8 +140,8 @@ private:
g_action_map_add_action(G_ACTION_MAP(action_group), G_ACTION(a));
profile->header().changed().connect([action_group,action_name](const Header& header){
auto state = create_header_state(header);
- auto tmp = g_variant_print(state, true);
- g_message("header changed; updating action state to '%s'", tmp);
+ char* tmp = g_variant_print(state, true);
+ g_debug("header changed; updating action state to '%s'", tmp);
g_action_group_change_action_state(G_ACTION_GROUP(action_group),
action_name.c_str(),
create_header_state(header));
diff --git a/src/exporter.h b/src/exporter.h
index 6367f3a..8867d32 100644
--- a/src/exporter.h
+++ b/src/exporter.h
@@ -17,6 +17,9 @@
* Charles Kerr <charles.kerr@canonical.com>
*/
+#ifndef INDICATOR_DISPLAY_EXPORTER_H
+#define INDICATOR_DISPLAY_EXPORTER_H
+
#include <src/indicator.h>
#include <core/signal.h>
@@ -26,7 +29,7 @@
class Exporter
{
public:
- Exporter(const std::shared_ptr<Indicator>& indicator);
+ explicit Exporter(const std::shared_ptr<Indicator>& indicator);
~Exporter();
core::Signal<std::string>& name_lost();
@@ -38,3 +41,4 @@ private:
Exporter& operator=(const Exporter&) =delete;
};
+#endif /* INDICATOR_DISPLAY_EXPORTER_H */
diff --git a/src/indicator.h b/src/indicator.h
index dc4df09..d0834fd 100644
--- a/src/indicator.h
+++ b/src/indicator.h
@@ -52,6 +52,7 @@ public:
virtual std::string name() const =0;
virtual const core::Property<Header>& header() const =0;
virtual std::shared_ptr<GMenuModel> menu_model() const =0;
+ virtual ~Profile() =default;
protected:
Profile() =default;
diff --git a/src/rotation-lock.cpp b/src/rotation-lock.cpp
index e305b38..31e9d12 100644
--- a/src/rotation-lock.cpp
+++ b/src/rotation-lock.cpp
@@ -30,7 +30,7 @@ public:
m_action_group(create_action_group())
{
// build the rotation lock icon
- auto icon = g_themed_icon_new_with_default_fallbacks("orientation-lock");
+ auto icon = g_themed_icon_new_with_default_fallbacks(m_rotation_lock_icon_name);
auto icon_deleter = [](GIcon* o){g_object_unref(G_OBJECT(o));};
m_icon.reset(icon, icon_deleter);
@@ -69,8 +69,7 @@ private:
GVariant *variant,
gpointer /*unused*/)
{
- bool is_locked = g_strcmp0(g_variant_get_string(variant, nullptr), "none");
- g_value_set_variant(value, g_variant_new_boolean(is_locked));
+ g_value_set_variant(value, variant);
return TRUE;
}
@@ -78,16 +77,7 @@ private:
const GVariantType * /*expected_type*/,
gpointer /*unused*/)
{
- // Toggling to 'on' *should* lock to the screen's current orientation.
- // We don't have any way of knowing Screen.orientation in this service,
- // so just pick one at random to satisfy the binding's needs.
- //
- // In practice this doesn't matter since the indicator isn't visible
- // when the lock mode is 'none' so the end user won't ever be able
- // to toggle the menuitem from None to anything else.
-
- auto state_is_true = g_variant_get_boolean(g_value_get_variant(value));
- return g_variant_new_string(state_is_true ? "PrimaryOrientation" : "none");
+ return g_variant_new_boolean(g_value_get_boolean(value));
}
GSimpleActionGroup* create_action_group()
@@ -99,17 +89,18 @@ private:
action = g_simple_action_new_stateful("rotation-lock",
nullptr,
g_variant_new_boolean(false));
- g_settings_bind_with_mapping(m_settings, "orientation-lock",
+ g_settings_bind_with_mapping(m_settings, "rotation-lock",
action, "state",
G_SETTINGS_BIND_DEFAULT,
settings_to_action_state,
action_state_to_settings,
nullptr,
nullptr);
+
g_action_map_add_action(G_ACTION_MAP(group), G_ACTION(action));
g_object_unref(G_OBJECT(action));
- g_signal_connect_swapped(m_settings, "changed::orientation-lock",
- G_CALLBACK(on_orientation_lock_setting_changed), this);
+ g_signal_connect_swapped(m_settings, "changed::rotation-lock",
+ G_CALLBACK(on_rotation_lock_setting_changed), this);
return group;
}
@@ -118,7 +109,7 @@ private:
**** Phone profile
***/
- static void on_orientation_lock_setting_changed (gpointer gself)
+ static void on_rotation_lock_setting_changed (gpointer gself)
{
static_cast<Impl*>(gself)->update_phone_header();
}
@@ -143,7 +134,7 @@ private:
Header h;
h.title = _("Rotation");
h.a11y = h.title;
- h.is_visible = g_settings_get_enum(m_settings, "orientation-lock") != 0;
+ h.is_visible = g_settings_get_boolean(m_settings, "rotation-lock");
h.icon = m_icon;
m_phone->header().set(h);
}
@@ -153,7 +144,7 @@ private:
***/
static constexpr char const * m_schema_name {"com.ubuntu.touch.system"};
- static constexpr char const * m_orientation_lock_icon_name {"orientation-lock"};
+ static constexpr char const * m_rotation_lock_icon_name {"orientation-lock"};
GSettings* m_settings = nullptr;
GSimpleActionGroup* m_action_group = nullptr;
std::shared_ptr<SimpleProfile> m_phone;
diff --git a/tests/glib-fixture.h b/tests/glib-fixture.h
index a8f3a76..65d2921 100644
--- a/tests/glib-fixture.h
+++ b/tests/glib-fixture.h
@@ -17,6 +17,9 @@
* Charles Kerr <charles.kerr@canonical.com>
*/
+#ifndef INDICATOR_TESTS_GLIB_FIXTURE_H
+#define INDICATOR_TESTS_GLIB_FIXTURE_H
+
#include <map>
#include <glib.h>
@@ -52,7 +55,7 @@ class GlibFixture : public ::testing::Test
if (expected_log[level] != n)
for (size_t i=0; i<n; ++i)
- g_message("%d %s", (n+1), v[i].c_str());
+ g_print("%d %s\n", (n+1), v[i].c_str());
}
expected_log.clear();
@@ -64,7 +67,7 @@ class GlibFixture : public ::testing::Test
const gchar * message,
gpointer self)
{
- auto tmp = g_strdup_printf ("%s:%d \"%s\"", log_domain, (int)log_level, message);
+ char* tmp = g_strdup_printf ("%s:%d \"%s\"", log_domain, (int)log_level, message);
static_cast<GlibFixture*>(self)->log[log_level].push_back(tmp);
g_free(tmp);
}
@@ -140,4 +143,10 @@ class GlibFixture : public ::testing::Test
}
GMainLoop * loop;
+
+ public:
+
+ virtual ~GlibFixture() =default;
};
+
+#endif /* INDICATOR_TESTS_GLIB_FIXTURE_H */
diff --git a/tests/gtestdbus-fixture.h b/tests/gtestdbus-fixture.h
index 541050e..c592033 100644
--- a/tests/gtestdbus-fixture.h
+++ b/tests/gtestdbus-fixture.h
@@ -17,6 +17,9 @@
* Charles Kerr <charles.kerr@canonical.com>
*/
+#ifndef INDICATOR_TESTS_GTESTDBUS_FIXTURE_H
+#define INDICATOR_TESTS_GTESTDBUS_FIXTURE_H
+
#include "glib-fixture.h"
/***
@@ -27,9 +30,10 @@ class GTestDBusFixture: public GlibFixture
{
public:
- GTestDBusFixture() {}
+ GTestDBusFixture() =default;
+ virtual ~GTestDBusFixture() =default;
- GTestDBusFixture(const std::vector<std::string>& service_dirs_in): service_dirs(service_dirs_in) {}
+ explicit GTestDBusFixture(const std::vector<std::string>& service_dirs_in): service_dirs(service_dirs_in) {}
private:
@@ -100,3 +104,5 @@ class GTestDBusFixture: public GlibFixture
super::TearDown();
}
};
+
+#endif /* INDICATOR_TESTS_GTESTDBUS_FIXTURE_H */
diff --git a/tests/manual b/tests/manual
index ff283cb..2de2d89 100644
--- a/tests/manual
+++ b/tests/manual
@@ -1,14 +1,12 @@
Test-case indicator-display/rotation-indicator
<dl>
- <dt>On the phone, enable the orientation lock in ubuntu-system-settings.</dt>
+ <dt>On the phone, enable the rotation lock in ubuntu-system-settings.</dt>
<dd>The rotation lock indicator should appear, and its switch menuitem should be set to 'true'.</dd>
- <dd>NOTE: Current builds this is broken, until it is fixed in system settings you can set it with: <tt>gsettings set com.ubuntu.touch.system orientation-lock 'LandscapeOrientation'</tt></dd>
- <dt>With the orientation locked, click on the indicator's switch menuitem to toggle from locked to unlocked.</dd>
+ <dt>With the rotation locked, click on the indicator's switch menuitem to toggle from locked to unlocked.</dd>
<dd>The rotation lock indicator should disappear</dd>
- <dd>In ubuntu-system-settings, the orientation lock control should change to 'none'.</dd>
- <dd>NOTE: Current builds this is broken, until it is fixed in system settings you can get it with: <tt>gsettings get com.ubuntu.touch.system orientation-lock</tt></dd>
+ <dd>In ubuntu-system-settings, the rotation lock control should change to 'none'.</dd>
</dl>