File: 0001_Add-desktop-greeter-profile.patch

package info (click to toggle)
ayatana-indicator-bluetooth 24.5.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 928 kB
  • sloc: sh: 31; makefile: 20; xml: 9
file content (140 lines) | stat: -rw-r--r-- 4,357 bytes parent folder | download
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