aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/org.ayatana.indicator.bluetooth3
-rw-r--r--src/CMakeLists.txt9
-rw-r--r--src/greeter.vala50
-rw-r--r--src/service.vala3
4 files changed, 65 insertions, 0 deletions
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
@@ -55,6 +55,14 @@ vala_add(ayatana-indicator-bluetooth-service
)
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 ()