[gnome-shell/wip/raresv/system-actions: 2/2] appDisplay: include system actions in search results
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/raresv/system-actions: 2/2] appDisplay: include system actions in search results
- Date: Mon, 21 Aug 2017 21:48:45 +0000 (UTC)
commit bf177bcd8fd350186b8fd4de83c09019e541f659
Author: Rares Visalom <rares visalom gmail com>
Date: Mon Aug 21 16:20:25 2017 +0300
appDisplay: include system actions in search results
data/theme/gnome-shell-high-contrast.css | 6 +++
data/theme/gnome-shell.css | 6 +++
js/ui/appDisplay.js | 54 ++++++++++++++++++++++++-----
3 files changed, 56 insertions(+), 10 deletions(-)
---
diff --git a/data/theme/gnome-shell-high-contrast.css b/data/theme/gnome-shell-high-contrast.css
index 6b4ea12..7662029 100644
--- a/data/theme/gnome-shell-high-contrast.css
+++ b/data/theme/gnome-shell-high-contrast.css
@@ -1210,6 +1210,12 @@ StScrollBar {
.icon-grid .overview-icon {
icon-size: 96px; }
+.system-action-icon {
+ background-color: black;
+ color: white;
+ border-radius: 99px;
+ icon-size: 48px; }
+
.app-view-controls {
padding-bottom: 32px; }
diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css
index 34d3c88..f94c67c 100644
--- a/data/theme/gnome-shell.css
+++ b/data/theme/gnome-shell.css
@@ -1210,6 +1210,12 @@ StScrollBar {
.icon-grid .overview-icon {
icon-size: 96px; }
+.system-action-icon {
+ background-color: black;
+ color: white;
+ border-radius: 99px;
+ icon-size: 48px; }
+
.app-view-controls {
padding-bottom: 32px; }
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 428b3c0..9b92311 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -24,8 +24,11 @@ const OverviewControls = imports.ui.overviewControls;
const PopupMenu = imports.ui.popupMenu;
const Tweener = imports.ui.tweener;
const Workspace = imports.ui.workspace;
+const Search = imports.ui.search;
+const System = imports.ui.status.system;
const Params = imports.misc.params;
const Util = imports.misc.util;
+const SystemActions = imports.misc.systemActions;
var MAX_APPLICATION_WORK_MILLIS = 75;
var MENU_POPUP_TIMEOUT = 600;
@@ -1085,19 +1088,35 @@ var AppSearchProvider = new Lang.Class({
this.id = 'applications';
this.isRemoteProvider = false;
this.canLaunchSearch = false;
+
+ this._systemActions = new SystemActions.getDefault();
},
getResultMetas: function(apps, callback) {
let metas = [];
- for (let i = 0; i < apps.length; i++) {
- let app = this._appSys.lookup_app(apps[i]);
- metas.push({ 'id': app.get_id(),
- 'name': app.get_name(),
- 'createIcon': function(size) {
- return app.create_icon_texture(size);
- }
- });
+ for (let id of apps) {
+ if (id.endsWith('.desktop')) {
+ let app = this._appSys.lookup_app(id);
+
+ metas.push({ 'id': app.get_id(),
+ 'name': app.get_name(),
+ 'createIcon': function(size) {
+ return app.create_icon_texture(size);
+ }
+ });
+ } else {
+ let name = this._systemActions.getName(id);
+ let iconName = this._systemActions.getIconName(id);
+
+ let createIcon = size => new St.Icon({ icon_name: iconName,
+ width: size,
+ height: size,
+ style_class: 'system-action-icon' });
+
+ metas.push({ id, name, createIcon });
+ }
}
+
callback(metas);
},
@@ -1119,6 +1138,9 @@ var AppSearchProvider = new Lang.Class({
return usage.compare('', a, b);
}));
});
+
+ results = results.concat(this._systemActions.getMatchingActions(terms));
+
callback(results);
},
@@ -1127,8 +1149,10 @@ var AppSearchProvider = new Lang.Class({
},
createResultObject: function (resultMeta) {
- let app = this._appSys.lookup_app(resultMeta['id']);
- return new AppIcon(app);
+ if (resultMeta.id.endsWith('.desktop'))
+ return new AppIcon(this._appSys.lookup_app(resultMeta['id']));
+ else
+ return new SystemActionIcon(this, resultMeta);
}
});
@@ -1983,3 +2007,13 @@ var AppIconMenu = new Lang.Class({
}
});
Signals.addSignalMethods(AppIconMenu.prototype);
+
+var SystemActionIcon = new Lang.Class({
+ Name: 'SystemActionIcon',
+ Extends: Search.GridSearchResult,
+
+ activate: function() {
+ SystemActions.getDefault().activateAction(this.metaInfo['id']);
+ Main.overview.hide();
+ }
+});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]