jenkins-bot has submitted this change and it was merged. Change subject: Use icons in Gallery license information. ......................................................................
Use icons in Gallery license information. Using logic loosely based on the current MultimediaViewer extension's handling of license information. If a media item explicitly licensed under CC (any variation), then show the CC icon. If an item is explicitly licensed as PD, then show the PD icon. In all other cases, show the "cite" icon. Clicking on the icon will launch the associated license URL in the external browser. Long-pressing the icon will pop up a Toast with the UsageTerms for the item. Change-Id: I621b87b2ae1cc89189c7cf7d8e9d1cf030a881c2 --- A icon-svgs/24/ic_license_cc.noflip.svg A icon-svgs/24/ic_license_cite.noflip.svg A icon-svgs/24/ic_license_pd.noflip.svg A wikipedia/res/drawable-hdpi/ic_license_cc.png A wikipedia/res/drawable-hdpi/ic_license_cite.png A wikipedia/res/drawable-hdpi/ic_license_pd.png A wikipedia/res/drawable-ldpi/ic_license_cc.png A wikipedia/res/drawable-ldpi/ic_license_cite.png A wikipedia/res/drawable-ldpi/ic_license_pd.png A wikipedia/res/drawable-mdpi/ic_license_cc.png A wikipedia/res/drawable-mdpi/ic_license_cite.png A wikipedia/res/drawable-mdpi/ic_license_pd.png A wikipedia/res/drawable-xhdpi/ic_license_cc.png A wikipedia/res/drawable-xhdpi/ic_license_cite.png A wikipedia/res/drawable-xhdpi/ic_license_pd.png A wikipedia/res/drawable-xxhdpi/ic_license_cc.png A wikipedia/res/drawable-xxhdpi/ic_license_cite.png A wikipedia/res/drawable-xxhdpi/ic_license_pd.png M wikipedia/res/layout/activity_gallery.xml M wikipedia/res/values-qq/strings.xml M wikipedia/res/values/strings.xml M wikipedia/src/main/java/org/wikipedia/page/gallery/GalleryActivity.java M wikipedia/src/main/java/org/wikipedia/page/gallery/GalleryItem.java 23 files changed, 292 insertions(+), 54 deletions(-) Approvals: BearND: Looks good to me, approved jenkins-bot: Verified diff --git a/icon-svgs/24/ic_license_cc.noflip.svg b/icon-svgs/24/ic_license_cc.noflip.svg new file mode 100644 index 0000000..381c9bf --- /dev/null +++ b/icon-svgs/24/ic_license_cc.noflip.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 24 24" + enable-background="new 0 0 24 24" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="ic_license_cc.noflip.svg"><metadata + id="metadata15"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs13" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1234" + inkscape:window-height="781" + id="namedview11" + showgrid="false" + inkscape:zoom="9.8333333" + inkscape:cx="-16.372881" + inkscape:cy="12" + inkscape:window-x="500" + inkscape:window-y="105" + inkscape:window-maximized="0" + inkscape:current-layer="Layer_1" /><g + id="g3" + style="fill:#aaaaaa;fill-opacity:1" + transform="matrix(1.6828087,0,0,1.6828087,-8.1937046,-9.8934625)"><path + d="m 12,6 c -3.9,0 -7,3.1 -7,7 0,3.9 3.1,7 7,7 3.9,0 7,-3.1 7,-7 0,-3.9 -3.1,-7 -7,-7 z m 0,13 C 8.7,19 6,16.3 6,13 6,9.7 8.7,7 12,7 c 3.3,0 6,2.7 6,6 0,3.3 -2.7,6 -6,6 z" + id="path5" + style="fill:#aaaaaa;fill-opacity:1" + inkscape:connector-curvature="0" /><path + d="m 10.3,14.4 c -0.7,0 -1,-0.4 -1,-1.2 0,-0.8 0.3,-1.2 1,-1.2 0.4,0 0.6,0.2 0.8,0.6 L 12,12.1 c -0.4,-0.7 -1,-1 -1.9,-1 -0.6,0 -1.1,0.2 -1.5,0.6 -0.4,0.4 -0.6,0.8 -0.6,1.5 0,0.7 0.2,1.2 0.6,1.6 0.4,0.4 0.9,0.6 1.5,0.6 0.8,0 1.4,-0.4 1.9,-1.1 l -0.9,-0.4 c -0.2,0.3 -0.5,0.5 -0.8,0.5 z" + id="path7" + style="fill:#aaaaaa;fill-opacity:1" + inkscape:connector-curvature="0" /><path + d="m 14.3,14.4 c -0.7,0 -1,-0.4 -1,-1.2 0,-0.8 0.3,-1.2 1,-1.2 0.4,0 0.6,0.2 0.8,0.6 L 16,12.1 c -0.4,-0.7 -1,-1 -1.9,-1 -0.6,0 -1.1,0.2 -1.5,0.6 -0.4,0.4 -0.6,0.8 -0.6,1.5 0,0.7 0.2,1.2 0.6,1.6 0.4,0.4 0.9,0.6 1.5,0.6 0.8,0 1.4,-0.4 1.9,-1.1 l -0.9,-0.4 c -0.2,0.3 -0.5,0.5 -0.8,0.5 z" + id="path9" + style="fill:#aaaaaa;fill-opacity:1" + inkscape:connector-curvature="0" /></g></svg> \ No newline at end of file diff --git a/icon-svgs/24/ic_license_cite.noflip.svg b/icon-svgs/24/ic_license_cite.noflip.svg new file mode 100644 index 0000000..a04b438 --- /dev/null +++ b/icon-svgs/24/ic_license_cite.noflip.svg @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 24 24" + enable-background="new 0 0 24 24" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="ic_license_cite.noflip.svg"><metadata + id="metadata9"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs7" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1017" + inkscape:window-height="624" + id="namedview5" + showgrid="false" + inkscape:zoom="9.8333333" + inkscape:cx="-5.3389831" + inkscape:cy="12" + inkscape:window-x="161" + inkscape:window-y="141" + inkscape:window-maximized="0" + inkscape:current-layer="Layer_1" /><path + d="m 3.4745762,1.9782082 0,20.3874098 14.0163438,0 c 2.166162,0 3.82264,-1.656477 3.82264,-3.822639 l 0,-16.5647708 -17.8389838,0 z M 17.49092,21.091406 l -11.4679177,0 0,-17.8389846 5.0968527,0 0,10.1937056 2.548426,-2.548427 2.548427,2.548427 0,-10.1937056 3.822639,0 0,15.2905576 c 0,1.401635 -1.146792,2.548427 -2.548427,2.548427 z" + id="path3" + style="fill:#aaaaaa;fill-opacity:1" + inkscape:connector-curvature="0" /></svg> \ No newline at end of file diff --git a/icon-svgs/24/ic_license_pd.noflip.svg b/icon-svgs/24/ic_license_pd.noflip.svg new file mode 100644 index 0000000..dcd7c72 --- /dev/null +++ b/icon-svgs/24/ic_license_pd.noflip.svg @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + viewBox="0 0 24 24" + enable-background="new 0 0 24 24" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="ic_license_pd.noflip.svg"><metadata + id="metadata15"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs + id="defs13" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1022" + inkscape:window-height="625" + id="namedview11" + showgrid="false" + inkscape:zoom="9.8333333" + inkscape:cx="-15.634421" + inkscape:cy="12" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0" + inkscape:current-layer="Layer_1" /><g + id="g3" + style="fill:#aaaaaa;fill-opacity:1" + transform="matrix(1.6828087,0,0,1.6828087,-8.1937046,-9.8934625)"><path + d="M 15.7,15.3 C 15.9,14.9 16,14.4 16,14 l -1.7,0 1.4,1.3 z" + id="path5" + style="fill:#aaaaaa;fill-opacity:1" + inkscape:connector-curvature="0" /><path + d="M 15.5,10.5 C 14.4,8.5 11.6,7.9 9.7,9.3 l 1.2,1.2 c 1.3,-1 3.1,0 3.2,1.5 l 1.8,0 c 0,-0.6 -0.2,-1.3 -0.4,-1.5 -0.2,-0.4 0.2,0.4 0,0 z" + id="path7" + style="fill:#aaaaaa;fill-opacity:1" + inkscape:connector-curvature="0" /><path + d="m 12,6 c -3.9,0 -7,3.1 -7,7 0,3.9 3.1,7 7,7 3.9,0 7,-3.1 7,-7 C 19,9.1 15.9,6 12,6 Z M 6,13 C 6,11.8 6.4,10.7 7,9.8 l 1.4,1.4 C 7.8,12.9 8,15 9.3,16.4 c 1.2,1.2 3.3,1.5 4.9,0.7 l 1,1.1 c -0.9,0.6 -2,0.9 -3.1,0.9 C 8.7,19 6,16.3 6,13 Z m 3.9,-0.2 3,3.1 C 12,16.2 11,15.9 10.4,15.1 10,14.4 9.9,13.5 9.9,12.8 Z M 16.3,17.2 7.9,8.7 C 8.9,7.6 10.4,7 12,7 c 3.3,0 6,2.7 6,6 0,1.6 -0.7,3.1 -1.7,4.2 z" + id="path9" + style="fill:#aaaaaa;fill-opacity:1" + inkscape:connector-curvature="0" /></g></svg> \ No newline at end of file diff --git a/wikipedia/res/drawable-hdpi/ic_license_cc.png b/wikipedia/res/drawable-hdpi/ic_license_cc.png new file mode 100644 index 0000000..5f0f227 --- /dev/null +++ b/wikipedia/res/drawable-hdpi/ic_license_cc.png Binary files differ diff --git a/wikipedia/res/drawable-hdpi/ic_license_cite.png b/wikipedia/res/drawable-hdpi/ic_license_cite.png new file mode 100644 index 0000000..750877a --- /dev/null +++ b/wikipedia/res/drawable-hdpi/ic_license_cite.png Binary files differ diff --git a/wikipedia/res/drawable-hdpi/ic_license_pd.png b/wikipedia/res/drawable-hdpi/ic_license_pd.png new file mode 100644 index 0000000..b687db6 --- /dev/null +++ b/wikipedia/res/drawable-hdpi/ic_license_pd.png Binary files differ diff --git a/wikipedia/res/drawable-ldpi/ic_license_cc.png b/wikipedia/res/drawable-ldpi/ic_license_cc.png new file mode 100644 index 0000000..7143cbc --- /dev/null +++ b/wikipedia/res/drawable-ldpi/ic_license_cc.png Binary files differ diff --git a/wikipedia/res/drawable-ldpi/ic_license_cite.png b/wikipedia/res/drawable-ldpi/ic_license_cite.png new file mode 100644 index 0000000..e43ec21 --- /dev/null +++ b/wikipedia/res/drawable-ldpi/ic_license_cite.png Binary files differ diff --git a/wikipedia/res/drawable-ldpi/ic_license_pd.png b/wikipedia/res/drawable-ldpi/ic_license_pd.png new file mode 100644 index 0000000..47f5feb --- /dev/null +++ b/wikipedia/res/drawable-ldpi/ic_license_pd.png Binary files differ diff --git a/wikipedia/res/drawable-mdpi/ic_license_cc.png b/wikipedia/res/drawable-mdpi/ic_license_cc.png new file mode 100644 index 0000000..3d116bb --- /dev/null +++ b/wikipedia/res/drawable-mdpi/ic_license_cc.png Binary files differ diff --git a/wikipedia/res/drawable-mdpi/ic_license_cite.png b/wikipedia/res/drawable-mdpi/ic_license_cite.png new file mode 100644 index 0000000..431a80c --- /dev/null +++ b/wikipedia/res/drawable-mdpi/ic_license_cite.png Binary files differ diff --git a/wikipedia/res/drawable-mdpi/ic_license_pd.png b/wikipedia/res/drawable-mdpi/ic_license_pd.png new file mode 100644 index 0000000..279e0b4 --- /dev/null +++ b/wikipedia/res/drawable-mdpi/ic_license_pd.png Binary files differ diff --git a/wikipedia/res/drawable-xhdpi/ic_license_cc.png b/wikipedia/res/drawable-xhdpi/ic_license_cc.png new file mode 100644 index 0000000..b904601 --- /dev/null +++ b/wikipedia/res/drawable-xhdpi/ic_license_cc.png Binary files differ diff --git a/wikipedia/res/drawable-xhdpi/ic_license_cite.png b/wikipedia/res/drawable-xhdpi/ic_license_cite.png new file mode 100644 index 0000000..570b83e --- /dev/null +++ b/wikipedia/res/drawable-xhdpi/ic_license_cite.png Binary files differ diff --git a/wikipedia/res/drawable-xhdpi/ic_license_pd.png b/wikipedia/res/drawable-xhdpi/ic_license_pd.png new file mode 100644 index 0000000..5cd6460 --- /dev/null +++ b/wikipedia/res/drawable-xhdpi/ic_license_pd.png Binary files differ diff --git a/wikipedia/res/drawable-xxhdpi/ic_license_cc.png b/wikipedia/res/drawable-xxhdpi/ic_license_cc.png new file mode 100644 index 0000000..23db7cd --- /dev/null +++ b/wikipedia/res/drawable-xxhdpi/ic_license_cc.png Binary files differ diff --git a/wikipedia/res/drawable-xxhdpi/ic_license_cite.png b/wikipedia/res/drawable-xxhdpi/ic_license_cite.png new file mode 100644 index 0000000..5641591 --- /dev/null +++ b/wikipedia/res/drawable-xxhdpi/ic_license_cite.png Binary files differ diff --git a/wikipedia/res/drawable-xxhdpi/ic_license_pd.png b/wikipedia/res/drawable-xxhdpi/ic_license_pd.png new file mode 100644 index 0000000..814e384 --- /dev/null +++ b/wikipedia/res/drawable-xxhdpi/ic_license_pd.png Binary files differ diff --git a/wikipedia/res/layout/activity_gallery.xml b/wikipedia/res/layout/activity_gallery.xml index 1e2f4b3..92a5d87 100644 --- a/wikipedia/res/layout/activity_gallery.xml +++ b/wikipedia/res/layout/activity_gallery.xml @@ -51,23 +51,27 @@ android:fadeScrollbars="false" android:textColor="@color/lead_text_color" android:textColorLink="@color/lead_text_color"/> - <TextView - android:id="@+id/gallery_credit_text" - android:layout_width="wrap_content" + <LinearLayout + android:layout_width="match_parent" android:layout_height="wrap_content" - android:textColor="@color/gallery_license_text" - android:textColorLink="@color/gallery_license_text" - android:ellipsize="end" - android:maxLines="2" - android:layout_marginTop="8dp"/> - <TextView - android:id="@+id/gallery_license_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@color/gallery_license_text" - android:textColorLink="@color/gallery_license_text" - android:ellipsize="end" - android:maxLines="2" - android:layout_marginTop="4dp"/> + android:layout_marginTop="8dp" + android:orientation="horizontal" + android:gravity="center_vertical"> + <ImageView + android:id="@+id/gallery_license_icon" + android:layout_width="20dp" + android:layout_height="20dp" + android:contentDescription="@null"/> + <TextView + android:id="@+id/gallery_credit_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingLeft="8dp" + android:paddingRight="8dp" + android:textColor="@color/gallery_license_text" + android:textColorLink="@color/gallery_license_text" + android:ellipsize="end" + android:maxLines="2"/> + </LinearLayout> </LinearLayout> </FrameLayout> diff --git a/wikipedia/res/values-qq/strings.xml b/wikipedia/res/values-qq/strings.xml index 5ef76b5..91c59b9 100644 --- a/wikipedia/res/values-qq/strings.xml +++ b/wikipedia/res/values-qq/strings.xml @@ -391,10 +391,6 @@ <string name="menu_gallery_visit_page">Menu label for navigating to the File page for the current image being shown in the gallery.</string> <string name="gallery_error_draw_failed">Error message shown when the current image could not be displayed.</string> <string name="license_title">Activity title of license text for the libraries we use</string> - <string name="gallery_license_text">Label that specifies the license under which the image is protected. The \"%s\" symbol will be replaced by the name of the license. -{{Identical|License}}</string> - <string name="gallery_credit_text">Label that specifies the person or entity to whom the image should be credited. The \"%s\" symbol will be replaced by the author of the image. -{{Identical|Author}}</string> <string name="gallery_image_info">Label for a dialog that shows detailed information about the current image shown in the gallery.</string> <string name="gallery_menu_share">Label for menu item to share the current image. {{Identical|Share}}</string> diff --git a/wikipedia/res/values/strings.xml b/wikipedia/res/values/strings.xml index 735304a..4a5a001 100644 --- a/wikipedia/res/values/strings.xml +++ b/wikipedia/res/values/strings.xml @@ -282,8 +282,6 @@ <string name="menu_gallery_visit_page">Go to file page</string> <string name="gallery_error_draw_failed">Could not draw the image.</string> <string name="license_title">License text for %s library</string> - <string name="gallery_license_text">License – %s</string> - <string name="gallery_credit_text">Author – %s</string> <string name="gallery_image_info">Image information</string> <string name="gallery_menu_share">Share</string> <string name="gallery_share_error">Could not share image: %s</string> diff --git a/wikipedia/src/main/java/org/wikipedia/page/gallery/GalleryActivity.java b/wikipedia/src/main/java/org/wikipedia/page/gallery/GalleryActivity.java index 2026413..5d40d23 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/gallery/GalleryActivity.java +++ b/wikipedia/src/main/java/org/wikipedia/page/gallery/GalleryActivity.java @@ -26,12 +26,15 @@ import android.text.TextUtils; import android.util.Log; import android.util.SparseArray; +import android.view.Gravity; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; +import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; +import android.widget.Toast; import de.keyboardsurfer.android.widget.crouton.Crouton; import de.keyboardsurfer.android.widget.crouton.Style; import java.util.HashMap; @@ -79,7 +82,7 @@ private ViewGroup infoContainer; private ProgressBar progressBar; private TextView descriptionText; - private TextView licenseText; + private ImageView licenseIcon; private TextView creditText; private boolean controlsShowing = true; @@ -107,9 +110,30 @@ descriptionText.setShadowLayer(2, 1, 1, getResources().getColor(R.color.lead_text_shadow)); descriptionText.setMovementMethod(linkMovementMethod); - licenseText = (TextView) findViewById(R.id.gallery_license_text); - licenseText.setShadowLayer(2, 1, 1, getResources().getColor(R.color.lead_text_shadow)); - licenseText.setMovementMethod(linkMovementMethod); + licenseIcon = (ImageView) findViewById(R.id.gallery_license_icon); + licenseIcon.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String licenseUrl = (String) v.getTag(); + if (!TextUtils.isEmpty(licenseUrl)) { + Utils.handleExternalLink(GalleryActivity.this, Uri.parse(licenseUrl)); + } + } + }); + licenseIcon.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + if (v.getContentDescription() == null) { + return false; + } + int[] pos = new int[2]; + v.getLocationInWindow(pos); + Toast t = Toast.makeText(GalleryActivity.this, v.getContentDescription(), Toast.LENGTH_SHORT); + t.setGravity(Gravity.TOP | Gravity.START, pos[0], pos[1]); + t.show(); + return true; + } + }); creditText = (TextView) findViewById(R.id.gallery_credit_text); creditText.setShadowLayer(2, 1, 1, getResources().getColor(R.color.lead_text_shadow)); @@ -440,39 +464,47 @@ descriptionText.setVisibility(View.GONE); } - CharSequence licenseStr = ""; - if (item.getMetadata().containsKey("LicenseShortName")) { - licenseStr = item.getMetadata().get("LicenseShortName"); - } else if (item.getMetadata().containsKey("License")) { - licenseStr = item.getMetadata().get("License"); - } - if (!TextUtils.isEmpty(licenseStr)) { - // is there a license URL? If so, surround the string with it! - if (item.getMetadata().containsKey("LicenseUrl")) { - licenseStr = "<a href=\"" + item.getMetadata().get("LicenseUrl") - + "\">" + Utils.trim(licenseStr) + "</a>"; - } - licenseStr = Html - .fromHtml(String.format(getString(R.string.gallery_license_text), licenseStr)); - licenseText.setText(licenseStr); - licenseText.setVisibility(View.VISIBLE); - } else { - licenseText.setVisibility(View.GONE); - } + // determine which icon to display... + licenseIcon.setImageDrawable(getResources().getDrawable(getLicenseIcon(item))); + // Set the icon's content description to the UsageTerms property. + // (will automatically be null if there are no UsageTerms) + licenseIcon.setContentDescription(item.getMetadata().get("UsageTerms")); + // Give the license URL to the icon, to be received by the click handler (may be null). + licenseIcon.setTag(item.getLicenseUrl()); - CharSequence creditStr = ""; + String creditStr = ""; if (item.getMetadata().containsKey("Artist")) { - creditStr = String.format(getString(R.string.gallery_credit_text), Utils.trim( - Html.fromHtml(item.getMetadata().get("Artist")))); - creditText.setText(creditStr); - creditText.setVisibility(View.VISIBLE); - } else { - creditText.setVisibility(View.GONE); + creditStr = Html.fromHtml(item.getMetadata().get("Artist")).toString(); + } else if (item.getMetadata().containsKey("LicenseShortName")) { + // if we don't have the author name, then display the license name + creditStr = item.getMetadata().get("LicenseShortName"); + } else if (item.getMetadata().containsKey("UsageTerms")) { + // and if there's no license name, then at least show usage terms. + creditStr = item.getMetadata().get("UsageTerms"); } + creditText.setText(creditStr.trim()); + infoContainer.setVisibility(View.VISIBLE); } /** + * Return an icon (drawable resource id) that corresponds to the type of license + * under which the specified Gallery item is provided. + * @param item Gallery item for which to give a license icon. + * @return Resource ID of the icon to display. + */ + private static int getLicenseIcon(GalleryItem item) { + if (item.isLicenseFree()) { + if (item.isLicensePD()) { + return R.drawable.ic_license_pd; + } else if (item.isLicenseCC()) { + return R.drawable.ic_license_cc; + } + } + return R.drawable.ic_license_cite; + } + + /** * Adapter that will provide the contents for the ViewPager. * Each media item will be represented by a GalleryItemFragment, which will be instantiated * lazily, and then cached for future use. diff --git a/wikipedia/src/main/java/org/wikipedia/page/gallery/GalleryItem.java b/wikipedia/src/main/java/org/wikipedia/page/gallery/GalleryItem.java index a4ffdaf..ca29deb 100644 --- a/wikipedia/src/main/java/org/wikipedia/page/gallery/GalleryItem.java +++ b/wikipedia/src/main/java/org/wikipedia/page/gallery/GalleryItem.java @@ -2,6 +2,7 @@ import org.json.JSONException; import org.json.JSONObject; +import android.text.TextUtils; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -28,6 +29,36 @@ private final int height; public int getHeight() { return height; } + private String licenseName; + private String licenseUrl; + private boolean licenseFree = true; + + public String getLicenseUrl() { + return licenseUrl; + } + + public boolean isLicenseCC() { + if (!TextUtils.isEmpty(licenseName)) { + if (licenseName.startsWith("cc")) { + return true; + } + } + return false; + } + + public boolean isLicensePD() { + if (!TextUtils.isEmpty(licenseName)) { + if (licenseName.startsWith("pd")) { + return true; + } + } + return false; + } + + public boolean isLicenseFree() { + return licenseFree; + } + public GalleryItem(String name) { this.name = name; this.url = null; @@ -52,7 +83,21 @@ Iterator<String> keys = extmetadata.keys(); while (keys.hasNext()) { String key = keys.next(); - metadata.put(key, extmetadata.getJSONObject(key).getString("value")); + String value = extmetadata.getJSONObject(key).getString("value"); + metadata.put(key, value); + switch (key) { + case "License": + licenseName = value; + break; + case "LicenseUrl": + licenseUrl = value; + break; + case "NonFree": + licenseFree = !value.equals("true"); + break; + default: + break; + } } } } -- To view, visit https://gerrit.wikimedia.org/r/191910 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I621b87b2ae1cc89189c7cf7d8e9d1cf030a881c2 Gerrit-PatchSet: 5 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Dbrant <[email protected]> Gerrit-Reviewer: BearND <[email protected]> Gerrit-Reviewer: Brion VIBBER <[email protected]> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
