Bug 553143 - Make it easier to view all add-ons (recommended and search results) [r=vingtetun]
authorMark Finkle <mfinkle@mozilla.com>
Fri, 19 Mar 2010 00:22:47 -0400
changeset 66049 ac75b71a97158a64dfc83392594ccee1be65a45e
parent 66048 c80cccb6d5faad21cd466b85bda4414405382601
child 66050 e97d7d84f68a67b1234fbf4d80c277f02da54917
push id1
push userroot
push dateTue, 26 Apr 2011 22:38:44 +0000
treeherdermozilla-beta@bfdb6e623a36 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersvingtetun
bugs553143
Bug 553143 - Make it easier to view all add-ons (recommended and search results) [r=vingtetun]
mobile/chrome/content/bindings/extensions.xml
mobile/chrome/content/browser.css
mobile/chrome/content/extensions.js
mobile/locales/en-US/chrome/browser.properties
mobile/themes/hildon/browser.css
mobile/themes/hildon/images/addons-32.png
mobile/themes/hildon/jar.mn
mobile/themes/wince/browser.css
mobile/themes/wince/images/addons-32.png
mobile/themes/wince/jar.mn
--- a/mobile/chrome/content/bindings/extensions.xml
+++ b/mobile/chrome/content/bindings/extensions.xml
@@ -220,9 +220,23 @@
     </content>
   </binding>
 
   <binding id="extension-search-no-rating">
     <content>
     </content>
   </binding>
 
+  <binding id="extension-search-showmore" extends="chrome://browser/content/bindings.xml#richlistitem">
+    <content orient="vertical">
+      <xul:hbox align="start">
+        <xul:image class="addon-showmore-image" xbl:inherits="src=image"/>
+        <xul:vbox flex="1">
+          <xul:label class="title" xbl:inherits="value=title"/>
+          <xul:description class="normal" xbl:inherits="xbl:text=description" flex="1"/>
+        </xul:vbox>
+        <xul:spacer flex="1"/>
+        <xul:button label="&addonShowPage.label;" oncommand="ExtensionsView.showMoreResults(document.getBindingParent(this));"/>
+      </xul:hbox>
+    </content>
+  </binding>
+
 </bindings>
--- a/mobile/chrome/content/browser.css
+++ b/mobile/chrome/content/browser.css
@@ -125,16 +125,20 @@ richlistitem[typeName="search"] hbox.add
 richlistitem[typeName="search"] hbox.addon-type-or-rating[rating="-1"] {
   -moz-binding: url("chrome://browser/content/bindings/extensions.xml#extension-search-no-rating");
 }
 
 richlistitem[typeName="message"] {
   -moz-binding: url("chrome://browser/content/bindings/extensions.xml#extension-message");
 }
 
+richlistitem[typeName="showmore"] {
+  -moz-binding: url("chrome://browser/content/bindings/extensions.xml#extension-search-showmore");
+}
+
 richlistitem[typeName="download"] {
   -moz-binding: url("chrome://browser/content/bindings/downloads.xml#download-downloading");
 }
 
 richlistitem[typeName="download"][state="1"] {
   -moz-binding: url("chrome://browser/content/bindings/downloads.xml#download-done");
 }
 
--- a/mobile/chrome/content/extensions.js
+++ b/mobile/chrome/content/extensions.js
@@ -593,18 +593,43 @@ var ExtensionsView = {
 
       if (aSelectFirstResult && !foundItem) {
         foundItem = true;
         this._list.selectItem(item);
         this._list.scrollBoxObject.scrollToElement(item);
       }
     }
 
-    if (!aIsRecommended)
+    let formatter = Cc["@mozilla.org/toolkit/URLFormatterService;1"].getService(Ci.nsIURLFormatter);
+
+    if (!aIsRecommended) {
+      if (aTotalResults > aAddons.length) {
+        let showmore = document.createElement("richlistitem");
+        showmore.setAttribute("typeName", "showmore");
+        showmore.setAttribute("title", strings.getFormattedString("addonsSearchMore.label", [aTotalResults]));
+        showmore.setAttribute("description", strings.getFormattedString("addonsSearchMore.description", [aAddons.length]));
+  
+        let url = gPrefService.getCharPref("extensions.getAddons.search.browseURL");
+        url = url.replace(/%TERMS%/g, encodeURIComponent(this.searchBox.value));
+        url = formatter.formatURL(url);
+        showmore.setAttribute("url", url);
+        this._list.appendChild(showmore);
+      }
+
       this.displaySectionMessage("repo", null, strings.getString("addonsSearchSuccess2.button"), true);
+    } else {
+      let showmore = document.createElement("richlistitem");
+      showmore.setAttribute("typeName", "showmore");
+      showmore.setAttribute("title", strings.getString("addonsBrowseAll.label"));
+      showmore.setAttribute("description", strings.getString("addonsBrowseAll.description"));
+
+      let url = formatter.formatURLPref("extensions.getAddons.browseAddons");
+      showmore.setAttribute("url", url);
+      this._list.appendChild(showmore);
+    }
   },
 
   showPage: function ev_showPage(aItem) {
     let uri = aItem.getAttribute("homepageURL");
     if (uri)
       BrowserUI.newTab(uri);
   },
 
@@ -618,16 +643,22 @@ var ExtensionsView = {
     this.getAddonsFromRepo(aTerms, true);
   },
 
   resetSearch: function ev_resetSearch() {
     this.searchBox.value = "";
     this.getAddonsFromRepo("");
   },
 
+  showMoreResults: function ev_showMoreResults(aItem) {
+    let uri = aItem.getAttribute("url");
+    if (uri)
+      BrowserUI.newTab(uri);
+  },
+
   observe: function ev_observe(aSubject, aTopic, aData) {
     if (!document)
       return;
 
     let addon = aSubject.QueryInterface(Ci.nsIUpdateItem);
     let strings = Elements.browserBundle;
     let element = document.getElementById(PREFIX_ITEM_URI + addon.id);
     if (!element)
--- a/mobile/locales/en-US/chrome/browser.properties
+++ b/mobile/locales/en-US/chrome/browser.properties
@@ -3,16 +3,20 @@ addonsLocalNone.label=No add-ons install
 addonsSearchStart.label=Searching for add-ons…
 addonsSearchStart.button=Cancel
 addonsSearchNone.search=No matches found
 addonsSearchNone.recommended=No recommended add-ons
 addonsSearchNone.button=Try Again
 addonsSearchFail.label=%S couldn't retrieve add-ons
 addonsSearchFail.button=OK
 addonsSearchSuccess2.button=Clear Search
+addonsSearchMore.label=Show all %S results
+addonsSearchMore.description=If these %S results aren't what you're looking for, try this
+addonsBrowseAll.label=Browse all add-ons
+addonsBrowseAll.description=addons.mozilla.org has many to explore
 
 addonsSearchEngine.description=Integrated Search
 
 addonsConfirmInstall.title=Installing Add-on
 addonsConfirmInstall.install=Install
 
 addonType.2=Extension
 addonType.4=Theme
--- a/mobile/themes/hildon/browser.css
+++ b/mobile/themes/hildon/browser.css
@@ -398,16 +398,22 @@ toolbarbutton.page-button {
 .addon-rating[rating="4"] {
   -moz-image-region: rect(72px 78px 90px 0px);
 }
 
 .addon-rating[rating="5"] {
   -moz-image-region: rect(90px 78px 108px 0px);
 }
 
+.addon-showmore-image {
+  width: 32px;
+  height: 32px;
+  list-style-image: url("chrome://browser/skin/images/addons-32.png");
+}
+
 richlistitem[isDisabled="true"] .title {
   color: gray;
 }
 
 richlistitem[isDisabled="true"] .normal {
   color: lightgray;
 }
 
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9679afd823c321f28e5511eeee4a1f16d5c6caac
GIT binary patch
literal 2628
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
--- a/mobile/themes/hildon/jar.mn
+++ b/mobile/themes/hildon/jar.mn
@@ -11,16 +11,17 @@ chrome.jar:
   browser.css                          (browser.css)
   notification.css                     (notification.css)
 % override chrome://global/skin/about.css chrome://browser/skin/about.css
 
   images/addons.png                    (images/addons.png)
   images/weave.png                     (images/weave.png)
   images/aboutBackground.png           (images/aboutBackground.png)
   images/panel-shadow.png              (images/panel-shadow.png)
+  images/addons-32.png                 (images/addons-32.png)
   images/arrowleft-16.png              (images/arrowleft-16.png)
   images/arrowright-16.png             (images/arrowright-16.png)
   images/arrowup-16.png                (images/arrowup-16.png)
   images/arrowdown-16.png              (images/arrowdown-16.png)
   images/arrowleftdark-16.png          (images/arrowleftdark-16.png)
   images/arrowrightdark-16.png         (images/arrowrightdark-16.png)
   images/ratings-18.png                (images/ratings-18.png)
   images/favicon-default-30.png        (images/favicon-default-30.png)
--- a/mobile/themes/wince/browser.css
+++ b/mobile/themes/wince/browser.css
@@ -180,16 +180,22 @@ toolbarbutton.page-button {
   }
 
   /* let the buttons in a selected addon wrap */
   #addons-list > richlistitem .buttons-box {
     display: block;
   }
 }
 
+.addon-showmore-image {
+  width: 32px;
+  height: 32px;
+  list-style-image: url("chrome://browser/skin/images/addons-32.png");
+}
+
 richlistitem[isDisabled="true"] .title {
   color: gray;
 }
 
 richlistitem[isDisabled="true"] .normal {
   color: lightgray;
 }
 
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9679afd823c321f28e5511eeee4a1f16d5c6caac
GIT binary patch
literal 2628
zc$@)53cK}*P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU*=1D|BRCwCNS9@?&<rV+kyYJ0zb_3Zw
z$tDCsB#9D2fXKsvhz@P-NM*D$ZHLimN88S*<BU~wMxjnyuz%D-2a8VaD70Ffjwn?S
za2j5k7|4UX2r<bf+3aSMZ1#C~@7>3}x98qXFj%P4f86Bk?%n&{@BF@Ve&_d{kC9~=
z-{wmzL@%pfj3y(dr#Q&684iaA$z&S-DGywOE{wZJz%YzDj$v4|o%=xjocnG5OIeV!
z*wKI2-QTY?nXSIo3m-l<Fz7yZqp>d@_#E0>MXWfGB$1rUU|CiLf_Zb(*NuHW-paA@
z6DV_93iO7=2ju(_y7lG_BXH{gB<$J$KD4$9JaNxbXf&GHNGK+QPl=5VX9coyOY!zQ
zN8xmuQBrDqjPAXufX@WtOT_F={QR9PNdsTH&bjhO07Owzua!tBlPWaI+=DSE$M$Uf
zhAl|&Q5ukfq*6@Yql~MpydO!q1}Rjl_7wn(RapuBo8!FoM?zeuOT~p3=*HoU^URy-
zOwIt<fAkcL#YUJGnXq~bO)847ISQSoR5F3#D_v@2TtmSf^u)2kqDBSs>`Ze;0GLc3
zw+TFgbiIiliVHk{AsiS-EaXA9QT_=zt%17IjA6ENWJ$^x0g@!?zUtMt?^sw=jMg)!
z5DWy67G*DuKm7EwFV2C^{x1#;Upk>oxZPH;LX&{y)!y!=sx=K;pO!?iC6!7eDMYY%
zQQm_zwnuSZwfqjq^9iX;EU`6#K=@x<@BcAO1_Pqu0d#by6;M0L=u=Hk&7|M|9tGu5
zTI88)9N@VS_*i&x*gpb$PX2OA!Y@yL^oA7W!jV);gpdM?95%Vgk&TLSCpnyrf*JuC
zd-s0;y<WS0-NwyWT)qNRo<3*|465#Mc+zR{@IU^!O98UOQBrWRt><b*b9<-sSz8C1
z$<zqQtU*nOD6>@i0!p1F2lRS9@szGbWrbRmbaP~z_bQ@awonSn>Q~l2;H+4UI2QyL
z3B&926DWi}8~Yd|Ef=1MM??Ec79_Ez(hA4g0(rh75CD@BOBXc8^@0#b;gSuo<xV0v
z?LsO|9$7s>kxpjW7b<yF2Ja=pJ{liuGK%p@C^Wxo{U)S1H)bfBz5RpWc_AiB(q2&%
zb@t-h_YPfbf^TdBR)b87<gZ%=%V;fNbe5gam=i2TL#EZH#1uJCLzE~EtPbs6-OrF?
zjow;((N?nI3B4hUoKI7FWVHFMIOokl`=k{*4U5%vwJ;iu2Y>t5*Z*eFt$5CCGnpLu
z2_&g3Ery^V%glLF1IV*lFegMFoxxtO)te7eZLb&8RNn-GO-CqyM%W$Y+q~Y1;i|Qp
zoUF!xM06ZcNsnGr17^|^#-kyOPsVVvBZ!CZVDZBT?k%UhQ;BPyiTRqaaDf>`3n#$G
zxtHw-T`R$PI-u5n4}IC76fd#gGwmHfEFQu1v=17+1@4KUQ%;8wcb`QhIF4k&CM?Od
zA<w3VV}XS%3tY}B96HBCOecPj4C~+Jqdi$NAHd9nkNCmykeQdSD`y1&OH!(8I;&A_
zY`B+@#-7s=`Ai~%Y}%wEGgA<?b_{o(0v{TIn6((iwrn`eTG9y(40;CEECaI4I*eyG
zVr+Z{mIY<oIqxS#Mhje5`xKpgnK;BNWqaq=omk%Ra3%%s9(pw+qeQ0Fb<0s-w+6X+
z&cpA#*ZyaT=dvtTGqMPTsk#xpu1Tz`&V^Q=11=T;PZ>-QXS7-dI!dO+NQBMGgH&=4
z#KbrdpFkiGLo5>JD8j#6`<<Pb@Q$dWB$JG*09Yc95)Da_Nk%ifQ84S4-tNq5I^B%;
zm>aQh7+Xr~07C%=$9!0B3qhdlahfbBsn%*3)$}@+A_i=3To2Cu4$WjlD8OOW_g-qX
z8=0N)cx05EADZ8Tu$e7Y;Q+G@8If(6_IrL+UcC}895{j(Uwa#iD)W(7SO~qrgsWZ_
z?93pN;R(dJh^mAdg>K5OOxW+Mw?HSl5uF@H%XtoU+YTV7pt^Bz@XAX<JoFZgk;$IA
z2H-cZx1+qY5Tzvr&#tVkg~(`{jTXnY{DLKrI1di(dmb&Vok&i#QNUx6Df}IM{YXaq
zNT!606f;m2Qm>J)xmpX(a~_|b9!LG=jYQfeaQ*?bNZ-XPt!0>s>fmy9|3TUGu2sR$
zUO0}r6}KI1`s7U4jBlI-LkA%|ib>xXLYx4z*$kUii#+WRW@e^wVK|0pf^>qEGLcAv
z=hQr--YGzn_QB^K!nlXh6!GFx+eH}jYo(11wS0Er66v$P5d71AdNx@<rvqvyvG##|
zZykKD@ztfvYE-pi>{W19)nn0_RvN+L{iCO;RkMR<%MnRfG0@cttMMY1u3CpAiJ6uO
zVa>8-m>f8dk--QG^6a!Jh2bpBK`_aRvPqk?=U8+>eGY4~vVz&N&@~qUg%Jw-a`+@;
zR!HFUd7!nFATV?qXFooI&h`$Bc*E48=ul{kqQUNghU)w72Y-sn+IwM1j$(cO6nvk5
zglU%#(J=wtJ#Ms|X-7I8$KX(>)H>uRO$lm^2^V~mfj69MA9v4JLZv1`<NkQ_#g5)P
zQ$h%F{ihh|I)Q<q2`sK$in59oFt9P?%4v9JVtD8m4^g;zaKooCIKyBdl#fM5pv)9U
z&u}wF`@TS5&nRlvRv<EU%;1Uj8n|GB$8`7eZ0?Fb-l!)eb~5YQx(A;WgxDVU@m;3U
z(j};=uLGYpL5>Bnfa=^un@WB~F(i`ez*rjudo5DVI}uL$(K&3wR^ufsURI0`k8~s%
zt1Q3%m!pQdHR})>J@%=XNIZmWgZHLAp{f83v+wHg)KagXzi{btKcYMhNpe_bXD~AA
z!I*c7h?hVtmVlQ;#agry6(u<+apuC7vk;yrwfA8z(Iw-H%aPROw?B5D{r&zUkC5bU
zpw7#S>wD6#bj3`jmI;KH^kHM)(A1Mgy?@V!<wd5pu0bRO0gpWXa}*ZaX)s5dj15<2
z5-{l)B$7$>c{@q+grF`=DYJI!XPzRdnPHgO$-#VmTRwM&U>WQi7zv!vB$7vq?E0#T
z0xRNlSUKK&77bhOqV`M1aDO{E{UR!@2oSuA;lUQ1X?7{3{u9|N*M;}i&jqSN4v<xQ
zgZyqTF6?5Cokh8`0LM=>p|0*W=;DVF=JOGc#9)mM;OfY9-<UVNogVK0Cg%+HYy5-x
zk{i4Elw8w2GTrN<BV0s~@$Yk25D29axN;J{?&C<yhF>dS$@;(X+3;3QMKp0Q%P=(^
zSEhEmKJx8~iy{n$X33Uo?<{ua?kFi^dT$!*|0@DF4hrpH%x=M8sF5t$?x}>hlde}O
m;QmLdZ$96*eLVk<00RJfB<0r!)?Ic00000<MNUMnLSTZ?=<jd<
--- a/mobile/themes/wince/jar.mn
+++ b/mobile/themes/wince/jar.mn
@@ -11,16 +11,17 @@ chrome.jar:
   browser-high.css                     (browser-high.css)
   browser-low.css                      (browser-low.css)
   notification.css                     (notification.css)
 
   images/addons.png                    (images/addons.png)
   images/weave.png                     (images/weave.png)
   images/panel-shadow.png              (images/panel-shadow.png)
   images/aboutBackground.png           (images/aboutBackground.png)
+  images/addons-32.png                 (images/addons-32.png)
   images/arrowleft-16.png              (images/arrowleft-16.png)
   images/arrowright-16.png             (images/arrowright-16.png)
   images/arrowup-16.png                (images/arrowup-16.png)
   images/arrowdown-16.png              (images/arrowdown-16.png)
   images/arrowleftdark-16.png          (images/arrowleftdark-16.png)
   images/arrowrightdark-16.png         (images/arrowrightdark-16.png)
   images/ratings-18.png                (images/ratings-18.png)
   images/favicon-default-30.png        (images/favicon-default-30.png)