mirror of
				https://github.com/commons-app/apps-android-commons.git
				synced 2025-10-30 22:34:02 +01:00 
			
		
		
		
	Merge pull request #777 from akaita/media_detail
Fix issues in Media Detail screen
This commit is contained in:
		
						commit
						19a3fa3adc
					
				
					 6 changed files with 51 additions and 30 deletions
				
			
		|  | @ -1,5 +1,7 @@ | |||
| package fr.free.nrw.commons; | ||||
| 
 | ||||
| import android.support.annotation.Nullable; | ||||
| 
 | ||||
| public class License { | ||||
|     String key; | ||||
|     String template; | ||||
|  | @ -36,7 +38,7 @@ public class License { | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public String getUrl(String language) { | ||||
|     public @Nullable String getUrl(String language) { | ||||
|         if (url == null) { | ||||
|             return null; | ||||
|         } else { | ||||
|  |  | |||
|  | @ -3,6 +3,7 @@ package fr.free.nrw.commons; | |||
| import android.net.Uri; | ||||
| import android.os.Parcel; | ||||
| import android.os.Parcelable; | ||||
| import android.support.annotation.Nullable; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.Date; | ||||
|  | @ -12,6 +13,8 @@ import java.util.Map; | |||
| import java.util.regex.Matcher; | ||||
| import java.util.regex.Pattern; | ||||
| 
 | ||||
| import fr.free.nrw.commons.location.LatLng; | ||||
| 
 | ||||
| public class Media implements Parcelable { | ||||
| 
 | ||||
|     public static Creator<Media> CREATOR = new Creator<Media>() { | ||||
|  | @ -99,7 +102,7 @@ public class Media implements Parcelable { | |||
|         this.dateCreated = date; | ||||
|     } | ||||
| 
 | ||||
|     public Date getDateUploaded() { | ||||
|     public @Nullable Date getDateUploaded() { | ||||
|         return dateUploaded; | ||||
|     } | ||||
| 
 | ||||
|  | @ -135,11 +138,11 @@ public class Media implements Parcelable { | |||
|         this.license = license; | ||||
|     } | ||||
| 
 | ||||
|     public String getCoordinates() { | ||||
|     public @Nullable LatLng getCoordinates() { | ||||
|         return coordinates; | ||||
|     } | ||||
| 
 | ||||
|     public void setCoordinates(String coordinates) { | ||||
|     public void setCoordinates(LatLng coordinates) { | ||||
|         this.coordinates = coordinates; | ||||
|     } | ||||
| 
 | ||||
|  | @ -150,11 +153,11 @@ public class Media implements Parcelable { | |||
|     protected String description; // monolingual description on input... | ||||
|     protected long dataLength; | ||||
|     protected Date dateCreated; | ||||
|     protected Date dateUploaded; | ||||
|     protected @Nullable Date dateUploaded; | ||||
|     protected int width; | ||||
|     protected int height; | ||||
|     protected String license; | ||||
|     private String coordinates; | ||||
|     private @Nullable LatLng coordinates; | ||||
|     protected String creator; | ||||
|     protected ArrayList<String> categories; // as loaded at runtime? | ||||
|     protected Map<String, String> descriptions; // multilingual descriptions as loaded | ||||
|  |  | |||
|  | @ -1,5 +1,8 @@ | |||
| package fr.free.nrw.commons; | ||||
| 
 | ||||
| import android.support.annotation.Nullable; | ||||
| 
 | ||||
| import org.mediawiki.api.ApiResult; | ||||
| import org.w3c.dom.Document; | ||||
| import org.w3c.dom.Element; | ||||
| import org.w3c.dom.Node; | ||||
|  | @ -38,7 +41,7 @@ public class MediaDataExtractor { | |||
|     private Map<String, String> descriptions; | ||||
|     private Date date; | ||||
|     private String license; | ||||
|     private String coordinates; | ||||
|     private @Nullable LatLng coordinates; | ||||
|     private LicenseList licenseList; | ||||
| 
 | ||||
|     /** | ||||
|  | @ -112,7 +115,7 @@ public class MediaDataExtractor { | |||
|         if (coordinateTemplateNode != null) { | ||||
|             coordinates = getCoordinates(coordinateTemplateNode); | ||||
|         } else { | ||||
|             coordinates = "No coordinates found"; | ||||
|             coordinates = null; | ||||
|         } | ||||
| 
 | ||||
|         /* | ||||
|  | @ -236,22 +239,20 @@ public class MediaDataExtractor { | |||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Extracts the coordinates from the template and returns them as pretty formatted string. | ||||
|      * Extracts the coordinates from the template. | ||||
|      * Loops over the children of the coordinate template: | ||||
|      *      {{Location|47.50111007666667|19.055700301944444}} | ||||
|      * and extracts the latitude and longitude as a pretty string. | ||||
|      * and extracts the latitude and longitude. | ||||
|      * | ||||
|      * @param parentNode The node of the coordinates template. | ||||
|      * @return Pretty formatted coordinates. | ||||
|      * @return Extracted coordinates. | ||||
|      * @throws IOException Parsing failed. | ||||
|      */ | ||||
|     private String getCoordinates(Node parentNode) throws IOException { | ||||
|     private LatLng getCoordinates(Node parentNode) throws IOException { | ||||
|         NodeList childNodes = parentNode.getChildNodes(); | ||||
|         double latitudeText = Double.parseDouble(childNodes.item(1).getTextContent()); | ||||
|         double longitudeText = Double.parseDouble(childNodes.item(2).getTextContent()); | ||||
|         LatLng coordinates = new LatLng(latitudeText, longitudeText, 0); | ||||
| 
 | ||||
|         return coordinates.getPrettyCoordinateString(); | ||||
|         return new LatLng(latitudeText, longitudeText, 0); | ||||
|     } | ||||
| 
 | ||||
|     // Extract a dictionary of multilingual texts from a subset of the parse tree. | ||||
|  |  | |||
|  | @ -2,8 +2,10 @@ package fr.free.nrw.commons.media; | |||
| 
 | ||||
| import android.content.Intent; | ||||
| import android.database.DataSetObserver; | ||||
| import android.net.Uri; | ||||
| import android.os.AsyncTask; | ||||
| import android.os.Bundle; | ||||
| import android.support.annotation.Nullable; | ||||
| import android.support.v4.app.Fragment; | ||||
| import android.util.TypedValue; | ||||
| import android.view.LayoutInflater; | ||||
|  | @ -18,6 +20,7 @@ import java.io.IOException; | |||
| import java.text.SimpleDateFormat; | ||||
| import java.util.ArrayList; | ||||
| import java.util.Date; | ||||
| import java.util.Locale; | ||||
| 
 | ||||
| import fr.free.nrw.commons.License; | ||||
| import fr.free.nrw.commons.LicenseList; | ||||
|  | @ -26,6 +29,7 @@ import fr.free.nrw.commons.MediaDataExtractor; | |||
| import fr.free.nrw.commons.MediaWikiImageView; | ||||
| import fr.free.nrw.commons.PageTitle; | ||||
| import fr.free.nrw.commons.R; | ||||
| import fr.free.nrw.commons.location.LatLng; | ||||
| import timber.log.Timber; | ||||
| 
 | ||||
| public class MediaDetailFragment extends Fragment { | ||||
|  | @ -262,6 +266,7 @@ public class MediaDetailFragment extends Fragment { | |||
|     } | ||||
| 
 | ||||
|     private void rebuildCatList() { | ||||
|         categoryContainer.removeAllViews(); | ||||
|         // @fixme add the category items | ||||
|         for (String cat : categoryNames) { | ||||
|             View catLabel = buildCatLabel(cat); | ||||
|  | @ -327,7 +332,7 @@ public class MediaDetailFragment extends Fragment { | |||
| 
 | ||||
|     private String prettyUploadedDate(Media media) { | ||||
|         Date date = media.getDateUploaded(); | ||||
|         if (date.toString() == null || date.toString().isEmpty()) { | ||||
|         if (date == null || date.toString() == null || date.toString().isEmpty()) { | ||||
|             return "Uploaded date not available"; | ||||
|         } | ||||
|         SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy"); | ||||
|  | @ -340,6 +345,9 @@ public class MediaDetailFragment extends Fragment { | |||
|      * @return Coordinates as text. | ||||
|      */ | ||||
|     private String prettyCoordinates(Media media) { | ||||
|         return media.getCoordinates(); | ||||
|         if (media.getCoordinates() == null) { | ||||
|             return getString(R.string.media_detail_coordinates_empty); | ||||
|         } | ||||
|         return media.getCoordinates().getPrettyCoordinateString(); | ||||
|     } | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Josephine Lim
						Josephine Lim