1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
From 2647235691ad8e6b9c06cc5feff4d362c85e37ab Mon Sep 17 00:00:00 2001
From: Robert Tari <robert@tari.in>
Date: Thu, 8 May 2025 23:07:09 +0200
Subject: [PATCH] Add desktop greeter profile
Fixes https://salsa.debian.org/ubports-team/lomiri/-/issues/44
Signed-off-by: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
---
data/org.ayatana.indicator.bluetooth | 3 ++
src/CMakeLists.txt | 9 +++++
src/greeter.vala | 50 ++++++++++++++++++++++++++++
src/service.vala | 3 ++
4 files changed, 65 insertions(+)
create mode 100644 src/greeter.vala
diff --git a/data/org.ayatana.indicator.bluetooth b/data/org.ayatana.indicator.bluetooth
index a57ce0a..9f95e01 100644
--- a/data/org.ayatana.indicator.bluetooth
+++ b/data/org.ayatana.indicator.bluetooth
@@ -17,3 +17,6 @@ ObjectPath=/org/ayatana/indicator/bluetooth/desktop
ObjectPath=/org/ayatana/indicator/bluetooth/phone
Position=36
+[desktop_greeter]
+ObjectPath=/org/ayatana/indicator/bluetooth/greeter
+Position=36
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8770323..6b0a1e2 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -54,6 +54,14 @@ vala_add(ayatana-indicator-bluetooth-service
device
)
+vala_add(ayatana-indicator-bluetooth-service
+ greeter.vala
+ DEPENDS
+ profile
+ bluetooth
+ device
+)
+
vala_add(ayatana-indicator-bluetooth-service
device.vala
)
@@ -85,6 +93,7 @@ vala_add(ayatana-indicator-bluetooth-service
device
phone
desktop
+ greeter
)
vala_finish(ayatana-indicator-bluetooth-service
diff --git a/src/greeter.vala b/src/greeter.vala
new file mode 100644
index 0000000..17c2042
--- /dev/null
+++ b/src/greeter.vala
@@ -0,0 +1,50 @@
+/*
+* Copyright 2025 Robert Tari <robert@tari.in>
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation; version 3.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+class Greeter: Profile
+{
+ GLib.SimpleActionGroup action_group;
+
+ public Greeter (Bluetooth bluetooth, GLib.SimpleActionGroup action_group)
+ {
+ base (bluetooth, "greeter");
+ this.bluetooth = bluetooth;
+ this.action_group = action_group;
+ GLib.Action[] actions = {};
+ actions += root_action;
+ actions += create_supported_action (bluetooth);
+ actions += create_enabled_action (bluetooth);
+
+ foreach (GLib.Action action in actions)
+ {
+ action_group.add_action (action);
+ }
+
+ GLib.Menu section = new GLib.Menu ();
+ GLib.MenuItem menu_item = create_enabled_menuitem ();
+ section.append_item (menu_item);
+ menu.append_section (null, section);
+
+ bluetooth.notify.connect (() => update_visibility ());
+ update_visibility ();
+ bluetooth.notify.connect (() => update_root_action_state ());
+ }
+
+ void update_visibility ()
+ {
+ visible = bluetooth.enabled;
+ }
+}
diff --git a/src/service.vala b/src/service.vala
index 524175d..80ccea6 100644
--- a/src/service.vala
+++ b/src/service.vala
@@ -1,5 +1,6 @@
/*
* Copyright 2013 Canonical Ltd.
+ * Copyright 2025 Robert Tari
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,6 +17,7 @@
* Authors:
* Charles Kerr <charles.kerr@canonical.com>
* Robert Ancell <robert.ancell@canonical.com>
+ * Robert Tari <robert@tari.in>
*/
/**
@@ -54,6 +56,7 @@ public class Service: Object
profiles = new HashTable<string,Profile> (str_hash, str_equal);
profiles.insert ("phone", new Phone (bluetooth, actions));
profiles.insert ("desktop", new Desktop (bluetooth, actions));
+ profiles.insert ("greeter", new Greeter (bluetooth, actions));
}
public int run ()
--
2.47.2
|