Skip to content

Commit 4441226

Browse files
committed
MenuWidgetDesktop: More powerful menu.
1 parent b458a82 commit 4441226

File tree

2 files changed

+63
-7
lines changed

2 files changed

+63
-7
lines changed

lib/appmenu-desktop.vala

Lines changed: 47 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ namespace Appmenu
2525
internal class MenuWidgetDesktop: MenuWidgetMenumodel
2626
{
2727
private GLib.Menu files_menu;
28+
private GLib.Menu documents_menu;
29+
private GLib.Menu pictures_menu;
30+
private GLib.Menu music_menu;
31+
private GLib.Menu videos_menu;
2832
private const GLib.ActionEntry[] menu_entries =
2933
{
3034
{"launch-id", activate_menu_id, "s", null, null},
@@ -33,7 +37,11 @@ namespace Appmenu
3337
{"launch-type", activate_menu_launch_type, "s", null, null},
3438
{"desktop-settings", activate_desktop, null, null, null},
3539
{"control-center", activate_control, null, null, null},
36-
{"populate-files", null, "b", "false", state_populate_files}
40+
{"populate-files", null, "b", "false", state_populate_files},
41+
{"populate-docs", null, "b", "false", state_populate_docs},
42+
{"populate-music", null, "b", "false", state_populate_music},
43+
{"populate-picts", null, "b", "false", state_populate_picts},
44+
{"populate-video", null, "b", "false", state_populate_video}
3745
};
3846
public MenuWidgetDesktop(Bamf.Application? app, Bamf.Window? window)
3947
{
@@ -64,6 +72,10 @@ namespace Appmenu
6472
if ((completed_menus & MenuWidgetCompletionFlags.MENUBAR) == 0)
6573
{
6674
files_menu = builder.get_object("files") as GLib.Menu;
75+
documents_menu = builder.get_object("docs") as GLib.Menu;
76+
music_menu = builder.get_object("music") as GLib.Menu;
77+
pictures_menu = builder.get_object("picts") as GLib.Menu;
78+
videos_menu = builder.get_object("video") as GLib.Menu;
6779
unowned GLib.Menu gmenu = builder.get_object("menubar") as GLib.Menu;
6880
var menubar = new Gtk.MenuBar.from_model(gmenu);
6981
completed_menus |= MenuWidgetCompletionFlags.MENUBAR;
@@ -143,8 +155,33 @@ namespace Appmenu
143155
}
144156
public void state_populate_files(SimpleAction action, Variant? param)
145157
{
146-
var desktop_dir = Environment.get_user_special_dir(UserDirectory.DESKTOP);
147-
files_menu.remove_all();
158+
populate_menu(files_menu,UserDirectory.DOWNLOAD);
159+
action.set_state(new Variant.boolean(true));
160+
}
161+
public void state_populate_docs(SimpleAction action, Variant? param)
162+
{
163+
populate_menu(documents_menu,UserDirectory.DOCUMENTS);
164+
action.set_state(new Variant.boolean(true));
165+
}
166+
public void state_populate_music(SimpleAction action, Variant? param)
167+
{
168+
populate_menu(music_menu,UserDirectory.MUSIC);
169+
action.set_state(new Variant.boolean(true));
170+
}
171+
public void state_populate_picts(SimpleAction action, Variant? param)
172+
{
173+
populate_menu(pictures_menu,UserDirectory.PICTURES);
174+
action.set_state(new Variant.boolean(true));
175+
}
176+
public void state_populate_video(SimpleAction action, Variant? param)
177+
{
178+
populate_menu(videos_menu,UserDirectory.VIDEOS);
179+
action.set_state(new Variant.boolean(true));
180+
}
181+
private void populate_menu(GLib.Menu menu, GLib.UserDirectory udir)
182+
{
183+
var desktop_dir = Environment.get_user_special_dir(udir);
184+
menu.remove_all();
148185
try
149186
{
150187
var dir = Dir.open(desktop_dir);
@@ -155,18 +192,21 @@ namespace Appmenu
155192
+FileAttribute.STANDARD_IS_HIDDEN,
156193
FileQueryInfoFlags.NOFOLLOW_SYMLINKS);
157194
if (!info.get_is_hidden())
158-
files_menu.append(info.get_display_name(),"menu.launch-uri('%s')".printf(file.get_uri()));
195+
menu.append(info.get_display_name(),"menu.launch-uri('%s')".printf(file.get_uri()));
159196
}
160197
} catch (Error e) {
161198
stderr.printf("%s\n",e.message);
162199
}
163-
if (files_menu.get_n_items() == 0)
164-
files_menu.append(_("No files"),"ls.this-should-not-be-reached");
165-
action.set_state(new Variant.boolean(true));
200+
if (menu.get_n_items() == 0)
201+
menu.append(_("No files"),"ls.this-should-not-be-reached");
166202
}
167203
~MenuWidgetDesktop()
168204
{
169205
files_menu = null;
206+
documents_menu = null;
207+
pictures_menu = null;
208+
music_menu = null;
209+
videos_menu = null;
170210
}
171211
}
172212
}

lib/desktop-menus.ui

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,22 @@
1717
<attribute name="label" translatable="yes">_Files</attribute>
1818
<attribute name="submenu-action">menu.populate-files</attribute>
1919
</submenu>
20+
<submenu id="docs">
21+
<attribute name="label" translatable="yes">_Documents</attribute>
22+
<attribute name="submenu-action">menu.populate-docs</attribute>
23+
</submenu>
24+
<submenu id="music">
25+
<attribute name="label" translatable="yes">_Music</attribute>
26+
<attribute name="submenu-action">menu.populate-music</attribute>
27+
</submenu>
28+
<submenu id="picts">
29+
<attribute name="label" translatable="yes">_Pictures</attribute>
30+
<attribute name="submenu-action">menu.populate-picts</attribute>
31+
</submenu>
32+
<submenu id="video">
33+
<attribute name="label" translatable="yes">_Video</attribute>
34+
<attribute name="submenu-action">menu.populate-video</attribute>
35+
</submenu>
2036
</menu>
2137
<menu id="appmenu-bamf">
2238
<section>

0 commit comments

Comments
 (0)