@@ -25,6 +25,10 @@ namespace Appmenu
25
25
internal class MenuWidgetDesktop : MenuWidgetMenumodel
26
26
{
27
27
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;
28
32
private const GLib . ActionEntry [] menu_entries =
29
33
{
30
34
{" launch-id" , activate_menu_id, " s" , null , null },
@@ -33,7 +37,11 @@ namespace Appmenu
33
37
{" launch-type" , activate_menu_launch_type, " s" , null , null },
34
38
{" desktop-settings" , activate_desktop, null , null , null },
35
39
{" 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}
37
45
};
38
46
public MenuWidgetDesktop (Bamf .Application ? app , Bamf .Window ? window )
39
47
{
@@ -64,6 +72,10 @@ namespace Appmenu
64
72
if ((completed_menus & MenuWidgetCompletionFlags . MENUBAR ) == 0 )
65
73
{
66
74
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 ;
67
79
unowned GLib . Menu gmenu = builder. get_object(" menubar" ) as GLib . Menu ;
68
80
var menubar = new Gtk .MenuBar .from_model(gmenu);
69
81
completed_menus |= MenuWidgetCompletionFlags . MENUBAR ;
@@ -143,8 +155,33 @@ namespace Appmenu
143
155
}
144
156
public void state_populate_files (SimpleAction action , Variant ? param )
145
157
{
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();
148
185
try
149
186
{
150
187
var dir = Dir . open(desktop_dir);
@@ -155,18 +192,21 @@ namespace Appmenu
155
192
+ FileAttribute . STANDARD_IS_HIDDEN ,
156
193
FileQueryInfoFlags . NOFOLLOW_SYMLINKS );
157
194
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()));
159
196
}
160
197
} catch (Error e) {
161
198
stderr. printf(" %s\n " ,e. message);
162
199
}
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" );
166
202
}
167
203
~MenuWidgetDesktop ()
168
204
{
169
205
files_menu = null ;
206
+ documents_menu = null ;
207
+ pictures_menu = null ;
208
+ music_menu = null ;
209
+ videos_menu = null ;
170
210
}
171
211
}
172
212
}
0 commit comments