appDisplay: Make _loadCategory() a utility function

When we bring back categories as folders, this method will be
useful outside of AppDisplay.

https://bugzilla.gnome.org/show_bug.cgi?id=694192
This commit is contained in:
Florian Müllner 2013-01-31 15:16:25 +01:00
parent f21b8206af
commit 9758029c11

View File

@ -28,6 +28,25 @@ const MAX_APPLICATION_WORK_MILLIS = 75;
const MENU_POPUP_TIMEOUT = 600; const MENU_POPUP_TIMEOUT = 600;
const SCROLL_TIME = 0.1; const SCROLL_TIME = 0.1;
// Recursively load a GMenuTreeDirectory; we could put this in ShellAppSystem too
function _loadCategory(dir, view) {
let iter = dir.iter();
let appSystem = Shell.AppSystem.get_default();
let nextType;
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
if (nextType == GMenu.TreeItemType.ENTRY) {
let entry = iter.get_entry();
let app = appSystem.lookup_app_by_tree_entry(entry);
if (!entry.get_app_info().get_nodisplay())
view.addApp(app);
} else if (nextType == GMenu.TreeItemType.DIRECTORY) {
let itemDir = iter.get_directory();
if (!itemDir.get_is_nodisplay())
_loadCategory(itemDir, view);
}
}
};
const AlphabeticalView = new Lang.Class({ const AlphabeticalView = new Lang.Class({
Name: 'AlphabeticalView', Name: 'AlphabeticalView',
@ -132,24 +151,6 @@ const AppDisplay = new Lang.Class({
this._workId = Main.initializeDeferredWork(this.actor, Lang.bind(this, this._redisplay)); this._workId = Main.initializeDeferredWork(this.actor, Lang.bind(this, this._redisplay));
}, },
// Recursively load a GMenuTreeDirectory; we could put this in ShellAppSystem too
_loadCategory: function(dir) {
var iter = dir.iter();
var nextType;
while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) {
if (nextType == GMenu.TreeItemType.ENTRY) {
var entry = iter.get_entry();
var app = this._appSystem.lookup_app_by_tree_entry(entry);
if (!entry.get_app_info().get_nodisplay())
this._view.addApp(app);
} else if (nextType == GMenu.TreeItemType.DIRECTORY) {
var itemDir = iter.get_directory();
if (!itemDir.get_is_nodisplay())
this._loadCategory(itemDir);
}
}
},
_removeAll: function() { _removeAll: function() {
this._view.removeAll(); this._view.removeAll();
}, },
@ -168,7 +169,7 @@ const AppDisplay = new Lang.Class({
if (dir.get_is_nodisplay()) if (dir.get_is_nodisplay())
continue; continue;
this._loadCategory(dir); _loadCategory(dir, this._view);
} }
} }