appDisplay: Support the 'categories' key for app folders
https://bugzilla.gnome.org/show_bug.cgi?id=723179
This commit is contained in:
parent
10147ee331
commit
bb8fa61cb4
@ -61,6 +61,13 @@ function _isTerminal(app) {
|
|||||||
return categories.indexOf('TerminalEmulator') > -1;
|
return categories.indexOf('TerminalEmulator') > -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _listsIntersect(a, b) {
|
||||||
|
for (let itemA of a)
|
||||||
|
if (b.indexOf(itemA) >= 0)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
function _getFolderName(folder) {
|
function _getFolderName(folder) {
|
||||||
let name = folder.get_string('name');
|
let name = folder.get_string('name');
|
||||||
|
|
||||||
@ -1069,9 +1076,7 @@ const FolderIcon = new Lang.Class({
|
|||||||
this.view.removeAll();
|
this.view.removeAll();
|
||||||
|
|
||||||
let appSys = Shell.AppSystem.get_default();
|
let appSys = Shell.AppSystem.get_default();
|
||||||
|
let addAppId = (function addAppId(appId) {
|
||||||
let folderApps = this._folder.get_strv('apps');
|
|
||||||
folderApps.forEach(Lang.bind(this, function(appId) {
|
|
||||||
let app = appSys.lookup_app(appId);
|
let app = appSys.lookup_app(appId);
|
||||||
if (!app)
|
if (!app)
|
||||||
return;
|
return;
|
||||||
@ -1081,7 +1086,20 @@ const FolderIcon = new Lang.Class({
|
|||||||
|
|
||||||
let icon = new AppIcon(app);
|
let icon = new AppIcon(app);
|
||||||
this.view.addItem(icon);
|
this.view.addItem(icon);
|
||||||
}));
|
}).bind(this);
|
||||||
|
|
||||||
|
let folderApps = this._folder.get_strv('apps');
|
||||||
|
folderApps.forEach(addAppId);
|
||||||
|
|
||||||
|
let folderCategories = this._folder.get_strv('categories');
|
||||||
|
Gio.AppInfo.get_all().forEach(function(appInfo) {
|
||||||
|
let appCategories = _getCategories(appInfo);
|
||||||
|
if (!_listsIntersect(folderCategories, appCategories))
|
||||||
|
return;
|
||||||
|
|
||||||
|
addAppId(appInfo.get_id());
|
||||||
|
});
|
||||||
|
|
||||||
this.view.loadGrid();
|
this.view.loadGrid();
|
||||||
this.emit('apps-changed');
|
this.emit('apps-changed');
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user