Make ShellAppMonitor and ShellAppSystem singletons, remove unused code in appDisplay

We shouldn't create multiple instances of either.  Also remove a bit
of unused code in appDisplay.
This commit is contained in:
Colin Walters 2009-06-18 12:27:19 -04:00
parent dd1c95b3ce
commit e7771b4eb0
6 changed files with 37 additions and 31 deletions

View File

@ -104,7 +104,7 @@ function getAppInfo(appId) {
//
// Return value: the list of #AppInfo
function getMostUsedApps(count) {
let appMonitor = new Shell.AppMonitor();
let appMonitor = Shell.AppMonitor.get_default();
// Ask for more apps than we need, since the list of recently used
// apps might contain an app we don't have a desktop file for

View File

@ -18,32 +18,6 @@ ENTERED_MENU_COLOR.from_pixel(0x00ff0022);
const MENU_ICON_SIZE = 24;
const MENU_SPACING = 15;
// TODO - move this into GConf once we're not a plugin anymore
// but have taken over metacity
// This list is taken from GNOME Online popular applications
// http://online.gnome.org/applications
// but with nautilus removed (since it should already be running)
// and evince, totem, and gnome-file-roller removed (since they're
// usually started by opening documents, not by opening the app
// directly)
const DEFAULT_APPLICATIONS = [
'mozilla-firefox.desktop',
'gnome-terminal.desktop',
'evolution.desktop',
'gedit.desktop',
'mozilla-thunderbird.desktop',
'rhythmbox.desktop',
'epiphany.desktop',
'xchat.desktop',
'openoffice.org-1.9-writer.desktop',
'emacs.desktop',
'gnome-system-monitor.desktop',
'openoffice.org-1.9-calc.desktop',
'eclipse.desktop',
'openoffice.org-1.9-impress.desktop',
'vncviewer.desktop'
];
const MAX_ITEMS = 30;
/* This class represents a single display item containing information about an application.
@ -196,8 +170,8 @@ AppDisplay.prototype = {
// map<itemId, array of category names>
this._appCategories = {};
this._appMonitor = new Shell.AppMonitor();
this._appSystem = new Shell.AppSystem();
this._appMonitor = Shell.AppMonitor.get_default();
this._appSystem = Shell.AppSystem.get_default();
this._appsStale = true;
this._appSystem.connect('changed', Lang.bind(this, function(appSys) {
this._appsStale = true;

View File

@ -912,3 +912,19 @@ on_enable_monitoring_key_changed (GConfClient *client,
{
update_enable_monitoring ((ShellAppMonitor *) monitor);
}
/**
* shell_app_monitor_get_default:
*
* Return Value: (transfer none): The global #ShellAppMonitor instance
*/
ShellAppMonitor *
shell_app_monitor_get_default ()
{
static ShellAppMonitor *instance;
if (instance == NULL)
instance = g_object_new (SHELL_TYPE_APP_MONITOR, NULL);
return instance;
}

View File

@ -33,7 +33,7 @@ struct _ShellAppMonitorClass
GType shell_app_monitor_get_type (void) G_GNUC_CONST;
ShellAppMonitor* shell_app_monitor_new(void);
ShellAppMonitor* shell_app_monitor_get_default(void);
/* Get the most popular applications for a given activity */
GSList *shell_app_monitor_get_most_used_apps (ShellAppMonitor *monitor,

View File

@ -299,3 +299,19 @@ shell_app_system_get_all_settings (ShellAppSystem *monitor)
{
return monitor->priv->cached_setting_ids;
}
/**
* shell_app_system_get_default:
*
* Return Value: (transfer none): The global #ShellAppSystem singleton
*/
ShellAppSystem *
shell_app_system_get_default ()
{
static ShellAppSystem *instance = NULL;
if (instance == NULL)
instance = g_object_new (SHELL_TYPE_APP_SYSTEM, NULL);
return instance;
}

View File

@ -29,7 +29,7 @@ struct _ShellAppSystemClass
};
GType shell_app_system_get_type (void) G_GNUC_CONST;
ShellAppSystem* shell_app_system_new(void);
ShellAppSystem* shell_app_system_get_default(void);
GSList *shell_app_system_get_applications_for_menu (ShellAppSystem *system, const char *menu);