Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
ximper-shell-notification-center
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ximper Linux
ximper-shell-notification-center
Commits
cf789064
Verified
Commit
cf789064
authored
Apr 18, 2026
by
Kirill Unitsaev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
quick-settings: extract reusable submenu row builder
parent
009d8c3c
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
55 additions
and
117 deletions
+55
-117
quickSettingsTile.vala
...ontrolCenter/widgets/quickSettings/quickSettingsTile.vala
+26
-0
bluetoothTile.vala
...trolCenter/widgets/quickSettings/tiles/bluetoothTile.vala
+10
-34
powerProfilesTile.vala
...Center/widgets/quickSettings/tiles/powerProfilesTile.vala
+6
-19
vpnTile.vala
src/controlCenter/widgets/quickSettings/tiles/vpnTile.vala
+6
-32
wifiTile.vala
src/controlCenter/widgets/quickSettings/tiles/wifiTile.vala
+7
-32
No files found.
src/controlCenter/widgets/quickSettings/quickSettingsTile.vala
View file @
cf789064
...
...
@@ -148,6 +148,32 @@ namespace XimperShellNotificationCenter.Widgets {
submenu_box
.
prepend
(
header
);
}
protected
Gtk
.
Button
build_submenu_row
(
string
icon_name
,
string
label_text
,
Gtk
.
Widget
?
trailing
=
null
)
{
var
row
=
new
Gtk
.
Box
(
Gtk
.
Orientation
.
HORIZONTAL
,
8
);
row
.
add_css_class
(
"submenu-row"
);
row
.
append
(
new
Gtk
.
Image
.
from_icon_name
(
icon_name
));
var
lbl
=
new
Gtk
.
Label
(
label_text
);
lbl
.
set_ellipsize
(
Pango
.
EllipsizeMode
.
END
);
lbl
.
set_hexpand
(
true
);
lbl
.
set_halign
(
Gtk
.
Align
.
START
);
row
.
append
(
lbl
);
if
(
trailing
!=
null
)
{
row
.
append
(
trailing
);
}
var
btn
=
new
Gtk
.
Button
();
btn
.
set_child
(
row
);
btn
.
add_css_class
(
"flat"
);
return
btn
;
}
protected
void
clear_submenu_content
(
Gtk
.
Box
submenu_box
)
{
for
(
var
child
=
...
...
src/controlCenter/widgets/quickSettings/tiles/bluetoothTile.vala
View file @
cf789064
...
...
@@ -102,22 +102,6 @@ namespace XimperShellNotificationCenter.Widgets {
}
foreach
(
var
dev
in
bt_proxy
.
devices
)
{
var
row
=
new
Gtk
.
Box
(
Gtk
.
Orientation
.
HORIZONTAL
,
8
);
row
.
add_css_class
(
"submenu-row"
);
var
row_icon
=
new
Gtk
.
Image
.
from_icon_name
(
BluetoothProxy
.
get_device_icon
(
dev
.
icon_name
));
var
row_label
=
new
Gtk
.
Label
(
dev
.
name
);
row_label
.
set_ellipsize
(
Pango
.
EllipsizeMode
.
END
);
row_label
.
set_hexpand
(
true
);
row_label
.
set_halign
(
Gtk
.
Align
.
START
);
row
.
append
(
row_icon
);
row
.
append
(
row_label
);
ObjectPath
dev_path
=
dev
.
path
;
bool
is_connected
=
dev
.
connected
;
bool
is_busy
=
...
...
@@ -125,22 +109,25 @@ namespace XimperShellNotificationCenter.Widgets {
&&
(
string
)
bt_proxy
.
connecting_device
==
(
string
)
dev
.
path
;
Gtk
.
Widget
trailing
;
if
(
is_busy
)
{
var
spinner
=
new
Gtk
.
Spinner
();
spinner
.
start
();
row
.
append
(
spinner
)
;
trailing
=
spinner
;
}
else
{
var
action_label
=
new
Gtk
.
Label
(
is_connected
?
_
(
"Disconnect"
)
:
_
(
"Connect"
));
action_label
.
add_css_class
(
"dim-label"
);
row
.
append
(
action_label
)
;
trailing
=
action_label
;
}
var
btn
=
new
Gtk
.
Button
();
btn
.
set_child
(
row
);
btn
.
add_css_class
(
"flat"
);
var
btn
=
build_submenu_row
(
BluetoothProxy
.
get_device_icon
(
dev
.
icon_name
),
dev
.
name
,
trailing
);
btn
.
set_sensitive
(!
is_busy
);
btn
.
clicked
.
connect
(()
=>
{
...
...
@@ -169,20 +156,9 @@ namespace XimperShellNotificationCenter.Widgets {
Gtk
.
Orientation
.
HORIZONTAL
));
}
var
row
=
new
Gtk
.
Box
(
Gtk
.
Orientation
.
HORIZONTAL
,
8
);
row
.
add_css_class
(
"submenu-row"
);
row
.
append
(
new
Gtk
.
Image
.
from_icon_name
(
"emblem-system-symbolic"
));
var
label
=
new
Gtk
.
Label
(
var
btn
=
build_submenu_row
(
"emblem-system-symbolic"
,
_
(
"Bluetooth Settings"
));
label
.
set_hexpand
(
true
);
label
.
set_halign
(
Gtk
.
Align
.
START
);
row
.
append
(
label
);
var
btn
=
new
Gtk
.
Button
();
btn
.
set_child
(
row
);
btn
.
add_css_class
(
"flat"
);
btn
.
clicked
.
connect
(()
=>
{
try
{
...
...
src/controlCenter/widgets/quickSettings/tiles/powerProfilesTile.vala
View file @
cf789064
...
...
@@ -148,29 +148,16 @@ namespace XimperShellNotificationCenter.Widgets {
string
current
=
proxy
.
active_profile
;
foreach
(
string
name
in
profile_names
)
{
var
row
=
new
Gtk
.
Box
(
Gtk
.
Orientation
.
HORIZONTAL
,
8
);
row
.
add_css_class
(
"submenu-row"
);
var
row_icon
=
new
Gtk
.
Image
.
from_icon_name
(
get_profile_icon
(
name
));
var
row_label
=
new
Gtk
.
Label
(
get_profile_label
(
name
));
row_label
.
set_hexpand
(
true
);
row_label
.
set_halign
(
Gtk
.
Align
.
START
);
row
.
append
(
row_icon
);
row
.
append
(
row_label
);
Gtk
.
Widget
?
check
=
null
;
if
(
name
==
current
)
{
var
check
=
new
Gtk
.
Image
.
from_icon_name
(
check
=
new
Gtk
.
Image
.
from_icon_name
(
"object-select-symbolic"
);
row
.
append
(
check
);
}
var
btn
=
new
Gtk
.
Button
();
btn
.
set_child
(
row
);
btn
.
add_css_class
(
"flat"
);
var
btn
=
build_submenu_row
(
get_profile_icon
(
name
),
get_profile_label
(
name
),
check
);
string
profile_name
=
name
;
btn
.
clicked
.
connect
(()
=>
{
...
...
src/controlCenter/widgets/quickSettings/tiles/vpnTile.vala
View file @
cf789064
...
...
@@ -281,18 +281,6 @@ namespace XimperShellNotificationCenter.Widgets {
}
foreach
(
var
vpn
in
vpn_list
)
{
var
row
=
new
Gtk
.
Box
(
Gtk
.
Orientation
.
HORIZONTAL
,
8
);
row
.
add_css_class
(
"submenu-row"
);
var
row_icon
=
new
Gtk
.
Image
.
from_icon_name
(
"network-vpn-symbolic"
);
var
row_label
=
new
Gtk
.
Label
(
vpn
.
name
);
row_label
.
set_ellipsize
(
Pango
.
EllipsizeMode
.
END
);
row_label
.
set_hexpand
(
true
);
row_label
.
set_halign
(
Gtk
.
Align
.
START
);
var
vpn_switch
=
new
Gtk
.
Switch
();
vpn_switch
.
set_valign
(
Gtk
.
Align
.
CENTER
);
vpn_switch
.
set_active
(
vpn
.
is_active
);
...
...
@@ -313,13 +301,10 @@ namespace XimperShellNotificationCenter.Widgets {
});
});
row
.
append
(
row_icon
);
row
.
append
(
row_label
);
row
.
append
(
vpn_switch
);
var
btn
=
new
Gtk
.
Button
();
btn
.
set_child
(
row
);
btn
.
add_css_class
(
"flat"
);
var
btn
=
build_submenu_row
(
"network-vpn-symbolic"
,
vpn
.
name
,
vpn_switch
);
btn
.
clicked
.
connect
(()
=>
{
vpn_switch
.
set_active
(
!
vpn_switch
.
active
);
...
...
@@ -341,20 +326,9 @@ namespace XimperShellNotificationCenter.Widgets {
Gtk
.
Orientation
.
HORIZONTAL
));
}
var
row
=
new
Gtk
.
Box
(
Gtk
.
Orientation
.
HORIZONTAL
,
8
);
row
.
add_css_class
(
"submenu-row"
);
row
.
append
(
new
Gtk
.
Image
.
from_icon_name
(
"emblem-system-symbolic"
));
var
label
=
new
Gtk
.
Label
(
var
btn
=
build_submenu_row
(
"emblem-system-symbolic"
,
_
(
"VPN Settings"
));
label
.
set_hexpand
(
true
);
label
.
set_halign
(
Gtk
.
Align
.
START
);
row
.
append
(
label
);
var
btn
=
new
Gtk
.
Button
();
btn
.
set_child
(
row
);
btn
.
add_css_class
(
"flat"
);
btn
.
clicked
.
connect
(()
=>
{
try
{
...
...
src/controlCenter/widgets/quickSettings/tiles/wifiTile.vala
View file @
cf789064
...
...
@@ -362,19 +362,6 @@ namespace XimperShellNotificationCenter.Widgets {
}
foreach
(
var
ap
in
aps
)
{
var
row
=
new
Gtk
.
Box
(
Gtk
.
Orientation
.
HORIZONTAL
,
8
);
row
.
add_css_class
(
"submenu-row"
);
var
row_icon
=
new
Gtk
.
Image
.
from_icon_name
(
NetworkManagerProxy
.
get_signal_icon
(
ap
.
strength
));
var
row_label
=
new
Gtk
.
Label
(
ap
.
ssid
);
row_label
.
set_ellipsize
(
Pango
.
EllipsizeMode
.
END
);
row_label
.
set_hexpand
(
true
);
row_label
.
set_halign
(
Gtk
.
Align
.
START
);
var
status_stack
=
new
Gtk
.
Stack
();
status_stack
.
set_transition_type
(
Gtk
.
StackTransitionType
.
CROSSFADE
);
...
...
@@ -401,15 +388,14 @@ namespace XimperShellNotificationCenter.Widgets {
"empty"
);
}
row
.
append
(
row_icon
);
row
.
append
(
row_label
);
row
.
append
(
status_stack
);
var
btn
=
build_submenu_row
(
NetworkManagerProxy
.
get_signal_icon
(
ap
.
strength
),
ap
.
ssid
,
status_stack
);
var
item_box
=
new
Gtk
.
Box
(
Gtk
.
Orientation
.
VERTICAL
,
0
);
var
btn
=
new
Gtk
.
Button
();
btn
.
set_child
(
row
);
btn
.
add_css_class
(
"flat"
);
item_box
.
append
(
btn
);
if
(
ap
.
secured
&&
!
ap
.
has_saved
...
...
@@ -525,20 +511,9 @@ namespace XimperShellNotificationCenter.Widgets {
box
.
append
(
new
Gtk
.
Separator
(
Gtk
.
Orientation
.
HORIZONTAL
));
var
row
=
new
Gtk
.
Box
(
Gtk
.
Orientation
.
HORIZONTAL
,
8
);
row
.
add_css_class
(
"submenu-row"
);
row
.
append
(
new
Gtk
.
Image
.
from_icon_name
(
"emblem-system-symbolic"
));
var
label
=
new
Gtk
.
Label
(
var
btn
=
build_submenu_row
(
"emblem-system-symbolic"
,
_
(
"Network Settings"
));
label
.
set_hexpand
(
true
);
label
.
set_halign
(
Gtk
.
Align
.
START
);
row
.
append
(
label
);
var
btn
=
new
Gtk
.
Button
();
btn
.
set_child
(
row
);
btn
.
add_css_class
(
"flat"
);
btn
.
clicked
.
connect
(()
=>
{
try
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment