[gnome-shell] searchDisplay: Add a base class for common parts of search results



commit e602199bfbc5b86b25adb1e4ce37ef63105bb0e2
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Fri Feb 8 17:05:22 2013 -0500

    searchDisplay: Add a base class for common parts of search results
    
    Right now, this doesn't give us very much, since IconGrid and StBoxLayout
    have different APIs. But since we want to introduce result caching, it
    makes to reduce the duplication we already have so we don't need to add
    the code to do so in both places.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=693836

 js/ui/searchDisplay.js |   65 +++++++++++++++++++++--------------------------
 1 files changed, 29 insertions(+), 36 deletions(-)
---
diff --git a/js/ui/searchDisplay.js b/js/ui/searchDisplay.js
index ec8650c..40d29cc 100644
--- a/js/ui/searchDisplay.js
+++ b/js/ui/searchDisplay.js
@@ -180,11 +180,37 @@ const GridSearchResult = new Lang.Class({
     }
 });
 
+const SearchResultsBase = new Lang.Class({
+    Name: 'SearchResultsBase',
+
+    _init: function(provider) {
+        this.provider = provider;
+
+        this._notDisplayedResult = [];
+        this._terms = [];
+    },
+
+    hasMoreResults: function() {
+        return this._notDisplayedResult.length > 0;
+    },
+
+    _keyFocusIn: function(icon) {
+        this.emit('key-focus-in', icon);
+    },
+
+    setResults: function(results, terms) {
+        // copy the lists
+        this._notDisplayedResult = results.slice(0);
+        this._terms = terms.slice(0);
+    }
+});
+
 const ListSearchResults = new Lang.Class({
     Name: 'ListSearchResults',
+    Extends: SearchResultsBase,
 
     _init: function(provider) {
-        this.provider = provider;
+        this.parent(provider);
 
         this.actor = new St.BoxLayout({ style_class: 'search-section-content' });
         this.providerIcon = new ProviderIcon(provider);
@@ -202,9 +228,6 @@ const ListSearchResults = new Lang.Class({
         this._content = new St.BoxLayout({ style_class: 'list-search-results',
                                            vertical: true });
         this.actor.add(this._content, { expand: true });
-
-        this._notDisplayedResult = [];
-        this._terms = [];
     },
 
     getResultsForDisplay: function() {
@@ -217,20 +240,6 @@ const ListSearchResults = new Lang.Class({
         return this._content.get_n_children();
     },
 
-    hasMoreResults: function() {
-        return this._notDisplayedResult.length > 0;
-    },
-
-    setResults: function(results, terms) {
-        // copy the lists
-        this._notDisplayedResult = results.slice(0);
-        this._terms = terms.slice(0);
-    },
-
-    _keyFocusIn: function(icon) {
-        this.emit('key-focus-in', icon);
-    },
-
     renderResults: function(metas) {
         for (let i = 0; i < metas.length; i++) {
             let display = new ListSearchResult(this.provider, metas[i], this._terms);
@@ -254,18 +263,16 @@ Signals.addSignalMethods(ListSearchResults.prototype);
 
 const GridSearchResults = new Lang.Class({
     Name: 'GridSearchResults',
+    Extends: SearchResultsBase,
 
     _init: function(provider) {
-        this.provider = provider;
+        this.parent(provider);
 
         this._grid = new IconGrid.IconGrid({ rowLimit: MAX_GRID_SEARCH_RESULTS_ROWS,
                                              xAlign: St.Align.START });
         this.actor = new St.Bin({ x_align: St.Align.MIDDLE });
 
         this.actor.set_child(this._grid.actor);
-
-        this._notDisplayedResult = [];
-        this._terms = [];
     },
 
     getResultsForDisplay: function() {
@@ -278,20 +285,6 @@ const GridSearchResults = new Lang.Class({
         return this._grid.visibleItemsCount();
     },
 
-    hasMoreResults: function() {
-        return this._notDisplayedResult.length > 0;
-    },
-
-    setResults: function(results, terms) {
-        // copy the lists
-        this._notDisplayedResult = results.slice(0);
-        this._terms = terms.slice(0);
-    },
-
-    _keyFocusIn: function(icon) {
-        this.emit('key-focus-in', icon);
-    },
-
     renderResults: function(metas) {
         for (let i = 0; i < metas.length; i++) {
             let display = new GridSearchResult(this.provider, metas[i], this._terms);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]