aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2021-11-19 09:16:00 +0100
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2021-11-19 09:34:25 +0100
commitf59500bfe360dce317af6b3c24c9a71206e9011a (patch)
treec83c457014f69088aecfeef6cc3b4cb5f455e474
parent5a2368bf0bf87721540ec0183b6ba4c88fd0be3e (diff)
downloadayatana-indicator-display-f59500bfe360dce317af6b3c24c9a71206e9011a.tar.gz
ayatana-indicator-display-f59500bfe360dce317af6b3c24c9a71206e9011a.tar.bz2
ayatana-indicator-display-f59500bfe360dce317af6b3c24c9a71206e9011a.zip
GSettings: Use org.ayatana.display.gschema.xml for non-Lomiri sessions and unit tests.
Additionally, internationalize the org.ayatana.display GSettings schema. Fixes https://github.com/AyatanaIndicators/ayatana-indicator-display/issues/39
-rw-r--r--data/CMakeLists.txt17
-rw-r--r--data/org.ayatana.display.gschema.xml.in (renamed from data/org.ayatana.display.gschema.xml)10
-rw-r--r--src/rotation-lock.cpp25
-rw-r--r--tests/unit/CMakeLists.txt7
4 files changed, 37 insertions, 22 deletions
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
index acc462f..6f8cda1 100644
--- a/data/CMakeLists.txt
+++ b/data/CMakeLists.txt
@@ -1,12 +1,21 @@
find_package(GSettings)
##
-## GSettings
+## GSettings schema
##
-if(NOT EXISTS /usr/share/glib-2.0/schemas/com.lomiri.touch.system.gschema.xml)
- add_schema ("org.ayatana.indicator.display.gschema.xml")
-endif()
+set (SCHEMA_NAME "org.ayatana.display.gschema.xml")
+set (SCHEMA_FILE "${CMAKE_CURRENT_BINARY_DIR}/${SCHEMA_NAME}")
+set (SCHEMA_FILE_IN "${CMAKE_CURRENT_SOURCE_DIR}/${SCHEMA_NAME}.in")
+
+# generate the .xml file using intltool
+find_package(Intltool REQUIRED)
+set (ENV{LC_ALL} "C")
+intltool_merge_translations("${SCHEMA_FILE_IN}" "${SCHEMA_FILE}" ALL UTF8 STYLE "xml" NO_TRANSLATIONS)
+
+# let GSettings do the rest
+find_package(GSettings REQUIRED)
+add_schema (${SCHEMA_NAME})
##
## Systemd Unit File
diff --git a/data/org.ayatana.display.gschema.xml b/data/org.ayatana.display.gschema.xml.in
index 9afa253..afcd996 100644
--- a/data/org.ayatana.display.gschema.xml
+++ b/data/org.ayatana.display.gschema.xml.in
@@ -10,15 +10,15 @@
<schema id="org.ayatana.indicator.display" path="/org/ayatana/indicator/display/">
<key name="rotation-lock" type="b">
<default>false</default>
- <summary>Lock rotation</summary>
- <description>
+ <_summary>Lock rotation</_summary>
+ <_description>
Lock automatic display rotation.
- </description>
+ </_description>
</key>
<key name="orientation-lock" enum="org.ayatana.indicator.display.ScreenOrientation">
<default>"none"</default>
- <summary>Orientation lock</summary>
- <description>Locks orientation to a specific value.</description>
+ <_summary>Orientation lock</_summary>
+ <_description>Locks orientation to a specific value.</_description>
</key>
</schema>
</schemalist>
diff --git a/src/rotation-lock.cpp b/src/rotation-lock.cpp
index ad89e10..cb864af 100644
--- a/src/rotation-lock.cpp
+++ b/src/rotation-lock.cpp
@@ -38,16 +38,24 @@ public:
if (pSource != NULL)
{
- GSettingsSchema *pSchema = g_settings_schema_source_lookup(pSource, "com.lomiri.touch.system", FALSE);
+ if (ayatana_common_utils_is_lomiri()) {
+
+ GSettingsSchema *pSchema = g_settings_schema_source_lookup(pSource, "com.lomiri.touch.system", FALSE);
+
+ if (pSchema != NULL)
+ {
+ g_settings_schema_unref(pSchema);
+ m_settings = g_settings_new("com.lomiri.touch.system");
+ }
+ else
+ {
+ g_error("No schema could be found");
+ }
- if (pSchema != NULL)
- {
- g_settings_schema_unref(pSchema);
- m_settings = g_settings_new("com.lomiri.touch.system");
}
- else
- {
- pSchema = g_settings_schema_source_lookup(pSource, "org.ayatana.indicator.display", FALSE);
+ else {
+
+ GSettingsSchema *pSchema = g_settings_schema_source_lookup(pSource, "org.ayatana.indicator.display", FALSE);
if (pSchema != NULL)
{
@@ -58,6 +66,7 @@ public:
{
g_error("No schema could be found");
}
+
}
}
diff --git a/tests/unit/CMakeLists.txt b/tests/unit/CMakeLists.txt
index 5656bed..a70362a 100644
--- a/tests/unit/CMakeLists.txt
+++ b/tests/unit/CMakeLists.txt
@@ -12,16 +12,13 @@ set_source_files_properties (gschemas.compiled GENERATED)
# and help the tests to find that file by setting -DSCHEMA_DIR
set (XDG_DATA_DIRS "${CMAKE_CURRENT_BINARY_DIR}/gsettings-schemas")
set (SCHEMA_DIR "${XDG_DATA_DIRS}/glib-2.0/schemas")
-if (EXISTS /usr/share/glib-2.0/schemas/com.lomiri.touch.system.gschema.xml)
- set (DISPLAY_SCHEMA /usr/share/glib-2.0/schemas/com.lomiri.touch.system.gschema.xml)
-else()
- set (DISPLAY_SCHEMA ${CMAKE_SOURCE_DIR}/data/org.ayatana.display.gschema.xml)
-endif()
+set (DISPLAY_SCHEMA ${CMAKE_BINARY_DIR}/data/org.ayatana.display.gschema.xml)
add_definitions(-DSCHEMA_DIR="${SCHEMA_DIR}")
execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} gio-2.0 --variable glib_compile_schemas
OUTPUT_VARIABLE COMPILE_SCHEMA_EXECUTABLE
OUTPUT_STRIP_TRAILING_WHITESPACE)
add_custom_command (OUTPUT gschemas.compiled
+ DEPENDS ${CMAKE_BINARY_DIR}/data/org.ayatana.display.gschema.xml
COMMAND mkdir -p ${SCHEMA_DIR}
COMMAND cp -f ${DISPLAY_SCHEMA} ${SCHEMA_DIR}
COMMAND ${COMPILE_SCHEMA_EXECUTABLE} ${SCHEMA_DIR})