From e2b54c04787472659ed81b4dabb8878b91c4ff11 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 16 Mar 2018 19:48:09 +1000 Subject: [PATCH 01/22] Add categories to Wikidata query --- app/src/main/resources/queries/nearby_query.rq | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/resources/queries/nearby_query.rq b/app/src/main/resources/queries/nearby_query.rq index 1542233c1d..d5b3805277 100644 --- a/app/src/main/resources/queries/nearby_query.rq +++ b/app/src/main/resources/queries/nearby_query.rq @@ -6,6 +6,7 @@ SELECT (SAMPLE(COALESCE(?class_label_preferred_language, ?class_label_any_language, "?")) as ?class_label) (SAMPLE(COALESCE(?icon0, ?icon1)) as ?icon) (SAMPLE(COALESCE(?emoji0, ?emoji1)) as ?emoji) + (SAMPLE(?Commons_category) as ?Commons_category) ?wikipediaArticle ?commonsArticle WHERE { @@ -23,6 +24,9 @@ SELECT OPTIONAL {?item rdfs:label ?item_label_preferred_language. FILTER (lang(?item_label_preferred_language) = "${LANG}")} OPTIONAL {?item rdfs:label ?item_label_any_language} + # Get Commons category (P373) + OPTIONAL { ?item wdt:P373 ?Commons_category. } + # Get the class label in the preferred language of the user, or any other language if no label is available in that language. OPTIONAL { ?item p:P31/ps:P31 ?classId. @@ -35,10 +39,6 @@ SELECT # Get emoji OPTIONAL { ?classId wdt:P487 ?emoji0. } OPTIONAL { ?classId wdt:P279*/wdt:P487 ?emoji1. } - OPTIONAL { - ?sitelink schema:about ?item . - ?sitelink schema:inLanguage "en" - } OPTIONAL { ?wikipediaArticle schema:about ?item ; schema:isPartOf . From 2c6b6f9beaa8f4dc646be87b640e5048b9494e59 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 16 Mar 2018 19:49:48 +1000 Subject: [PATCH 02/22] Add TODO for category suggestions --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index c826013f00..92b521188e 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -262,6 +262,7 @@ private Observable defaultCategories() { .concatWith(recentCategories()); } + //TODO: Add category suggestions for direct uploads here private Observable gpsCategories() { return Observable.fromIterable( MwVolleyApi.GpsCatExists.getGpsCatExists() From 8133ba1d23146eb36cc75ea703082aadb6cbd9d2 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 16 Mar 2018 20:00:23 +1000 Subject: [PATCH 03/22] Strip string for categories and add them to a Place --- .../nrw/commons/nearby/NearbyMapFragment.java | 1 + .../free/nrw/commons/nearby/NearbyPlaces.java | 18 +++++++++++++++--- .../java/fr/free/nrw/commons/nearby/Place.java | 6 +++++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java index 6a1475e5ac..7308c2d862 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java @@ -580,6 +580,7 @@ void storeSharedPrefs() { SharedPreferences.Editor editor = directPrefs.edit(); editor.putString("Title", place.getName()); editor.putString("Desc", place.getLongDescription()); + editor.putString("Category", place.getCategory()); editor.apply(); } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java index 0137516bba..424af416af 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java @@ -8,6 +8,7 @@ import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Locale; @@ -99,14 +100,24 @@ private List getFromWikidataQuery(LatLng cur, continue; } + + // Fields: ["Point(153.073 -27.6111)"^^, , "Queensland State Archives"@en, , "government agency"@en, , , Images from the Queensland State Archives, , + // Produces: 02-11 21:32:45.015: V/NearbyPlaces(9300): Name: Queensland State Archives, type: government agency, category: Images from the Queensland State Archives, wikipediaSitelink: , commonsSitelink: + + //TODO: What about items with more than 1 Commons category??? Might need to rearrange categories to the end of the string + String[] fields = line.split("\t"); + Timber.v("Fields: " + Arrays.toString(fields)); String point = fields[0]; + String wikiDataLink = Utils.stripLocalizedString(fields[1]); String name = Utils.stripLocalizedString(fields[2]); String type = Utils.stripLocalizedString(fields[4]); - String wikipediaSitelink = Utils.stripLocalizedString(fields[7]); - String commonsSitelink = Utils.stripLocalizedString(fields[8]); - String wikiDataLink = Utils.stripLocalizedString(fields[1]); String icon = fields[5]; + String category = Utils.stripLocalizedString(fields[7]); + String wikipediaSitelink = Utils.stripLocalizedString(fields[8]); + String commonsSitelink = Utils.stripLocalizedString(fields[9]); + + Timber.v("Name: " + name + ", type: " + type + ", category: " + category + ", wikipediaSitelink: " + wikipediaSitelink + ", commonsSitelink: " + commonsSitelink); double latitude; double longitude; @@ -128,6 +139,7 @@ private List getFromWikidataQuery(LatLng cur, type, // details Uri.parse(icon), new LatLng(latitude, longitude, 0), + category, new Sitelinks.Builder() .setWikipediaLink(wikipediaSitelink) .setCommonsLink(commonsSitelink) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/Place.java b/app/src/main/java/fr/free/nrw/commons/nearby/Place.java index eaab3e4477..9c51382459 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/Place.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/Place.java @@ -17,6 +17,7 @@ public class Place { private final String longDescription; private final Uri secondaryImageUrl; public final LatLng location; + private final String category; public Bitmap image; public Bitmap secondaryImage; @@ -25,12 +26,13 @@ public class Place { public Place(String name, Label label, String longDescription, - Uri secondaryImageUrl, LatLng location, Sitelinks siteLinks) { + Uri secondaryImageUrl, LatLng location, String category, Sitelinks siteLinks) { this.name = name; this.label = label; this.longDescription = longDescription; this.secondaryImageUrl = secondaryImageUrl; this.location = location; + this.category = category; this.siteLinks = siteLinks; } @@ -42,6 +44,8 @@ public Label getLabel() { public String getLongDescription() { return longDescription; } + public String getCategory() {return category; } + public void setDistance(String distance) { this.distance = distance; } From 5e828d45412eef9eb172b3ca86e774a04bbb4920 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 16 Mar 2018 20:01:52 +1000 Subject: [PATCH 04/22] Save categories in PlaceRenderer and SingleUploadFragment --- .../main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java | 1 + .../java/fr/free/nrw/commons/upload/SingleUploadFragment.java | 3 +++ 2 files changed, 4 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java index 0d432f90e4..10699c6e68 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java @@ -124,6 +124,7 @@ private void storeSharedPrefs() { Timber.d("directPrefs stored"); editor.putString("Title", place.getName()); editor.putString("Desc", place.getLongDescription()); + editor.putString("Category", place.getCategory()); editor.apply(); } diff --git a/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java index 395873c1db..39c0f18ee8 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java @@ -114,6 +114,9 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, if (isNearbyUpload) { String imageTitle = directPrefs.getString("Title", ""); String imageDesc = directPrefs.getString("Desc", ""); + //TODO: Remove this later, this fragment does not need to know categories + String imageCats = directPrefs.getString("Category", ""); + Timber.d("Image title: " + imageTitle + ", image desc: " + imageDesc + ", image categories: " + imageCats); titleEdit.setText(imageTitle); descEdit.setText(imageDesc); } From c1f451258c1e6ff19f1efc718884c7d5e79558c3 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 16 Mar 2018 20:25:22 +1000 Subject: [PATCH 05/22] Add FIXME to PlaceRenderer --- app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java index 10699c6e68..4f16f8de7e 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java @@ -120,6 +120,7 @@ protected void hookListeners(View view) { } private void storeSharedPrefs() { + //FIXME: This line crashes on list, but not on map SharedPreferences.Editor editor = directPrefs.edit(); Timber.d("directPrefs stored"); editor.putString("Title", place.getName()); From 2099a99e4fc0289d12903112f06d21114d6282d4 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 16 Mar 2018 20:36:57 +1000 Subject: [PATCH 06/22] Add Dagger injector to render() --- .../fr/free/nrw/commons/di/CommonsApplicationComponent.java | 1 + app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationComponent.java b/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationComponent.java index 080f61b610..a8962fed9d 100644 --- a/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationComponent.java +++ b/app/src/main/java/fr/free/nrw/commons/di/CommonsApplicationComponent.java @@ -39,6 +39,7 @@ public interface CommonsApplicationComponent extends AndroidInjector Date: Fri, 16 Mar 2018 20:48:30 +1000 Subject: [PATCH 07/22] Add FIXME for injector() --- app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java index 3722f2f728..7912e26420 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java @@ -140,6 +140,7 @@ private void openLayout(LinearLayout buttonLayout){ @Override public void render() { + //FIXME: injector() method has been removed from CommonsApplication.java ((CommonsApplication) getContext().getApplicationContext()).injector().inject(this); place = getContent(); tvName.setText(place.name); From a0ecf1ff47019a0ae1a8d33d23a9574c07e97f03 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 18 Mar 2018 17:50:31 +1000 Subject: [PATCH 08/22] Switch to ApplicationlessInjection in PlaceRenderer.java --- .../main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java index 7912e26420..65bd6f69fd 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java @@ -28,6 +28,7 @@ import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.R; import fr.free.nrw.commons.contributions.ContributionController; +import fr.free.nrw.commons.di.ApplicationlessInjection; import timber.log.Timber; public class PlaceRenderer extends Renderer { @@ -141,7 +142,9 @@ private void openLayout(LinearLayout buttonLayout){ @Override public void render() { //FIXME: injector() method has been removed from CommonsApplication.java - ((CommonsApplication) getContext().getApplicationContext()).injector().inject(this); + ApplicationlessInjection.getInstance(getContext().getApplicationContext()) + .getCommonsApplicationComponent().inject(this); + //((CommonsApplication) getContext().getApplicationContext()).injector().inject(this); place = getContent(); tvName.setText(place.name); String descriptionText = place.getLongDescription(); From 787425b8e7d180dceecaf7629b334cfe3d8e7e6f Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 18 Mar 2018 17:51:07 +1000 Subject: [PATCH 09/22] Change ImageUtil log to verbose to prevent logcat spam --- app/src/main/java/fr/free/nrw/commons/utils/ImageUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/utils/ImageUtils.java b/app/src/main/java/fr/free/nrw/commons/utils/ImageUtils.java index 6627f28869..4f6a6d456f 100644 --- a/app/src/main/java/fr/free/nrw/commons/utils/ImageUtils.java +++ b/app/src/main/java/fr/free/nrw/commons/utils/ImageUtils.java @@ -54,7 +54,7 @@ public static Result checkIfImageIsTooDark(BitmapRegionDecoder bitmapRegionDecod while ((checkImageRightPosition <= loadImageWidth) && (checkImageLeftPosition < checkImageRightPosition)) { while ((checkImageBottomPosition <= loadImageHeight) && (checkImageTopPosition < checkImageBottomPosition)) { - Timber.d("left: " + checkImageLeftPosition + " right: " + checkImageRightPosition + " top: " + checkImageTopPosition + " bottom: " + checkImageBottomPosition); + Timber.v("left: " + checkImageLeftPosition + " right: " + checkImageRightPosition + " top: " + checkImageTopPosition + " bottom: " + checkImageBottomPosition); Rect rect = new Rect(checkImageLeftPosition,checkImageTopPosition,checkImageRightPosition,checkImageBottomPosition); totalDividedRectangles++; From 945aa358641d0bed2a7713f3b99638eba21d7f1e Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 18 Mar 2018 18:12:18 +1000 Subject: [PATCH 10/22] Add TODO for concat --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 92b521188e..a014830bb2 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -260,9 +260,11 @@ private Observable defaultCategories() { return gpsCategories() .concatWith(titleCategories()) .concatWith(recentCategories()); + //TODO: Add category suggestions for direct uploads here } //TODO: Add category suggestions for direct uploads here + private Observable gpsCategories() { return Observable.fromIterable( MwVolleyApi.GpsCatExists.getGpsCatExists() From d2b0ffc69db149bd8dfe6d6712e941adea9b530d Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 18 Mar 2018 18:26:13 +1000 Subject: [PATCH 11/22] Add directPrefs injection and obtain CategoryItem for direct cats --- .../category/CategorizationFragment.java | 33 +++++++++++++++---- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index a014830bb2..70fc2885ae 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -70,9 +70,19 @@ public class CategorizationFragment extends CommonsDaggerSupportFragment { @BindView(R.id.categoriesExplanation) TextView categoriesSkip; - @Inject MediaWikiApi mwApi; - @Inject @Named("default_preferences") SharedPreferences prefs; - @Inject CategoryDao categoryDao; + @Inject + MediaWikiApi mwApi; + @Inject + @Named("default_preferences") + SharedPreferences prefs; + @Inject + @Named("prefs") + SharedPreferences prefsPrefs; + @Inject + @Named("direct_nearby_upload_prefs") + SharedPreferences directPrefs; + @Inject + CategoryDao categoryDao; private RVRendererAdapter categoriesAdapter; private OnCategoriesSaveHandler onCategoriesSaveHandler; @@ -127,7 +137,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, } public void hideKeyboard(View view) { - InputMethodManager inputMethodManager =(InputMethodManager)getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE); + InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); } @@ -222,7 +232,7 @@ private void updateCategoryList(String filter) { .observeOn(AndroidSchedulers.mainThread()) .subscribe( s -> categoriesAdapter.add(s), - Timber::e, + Timber::e, () -> { categoriesAdapter.notifyDataSetChanged(); categoriesSearchInProgress.setVisibility(View.GONE); @@ -259,12 +269,21 @@ private List getStringList(List input) { private Observable defaultCategories() { return gpsCategories() .concatWith(titleCategories()) - .concatWith(recentCategories()); + .concatWith(recentCategories()) + .concatWith(directCategories()); //TODO: Add category suggestions for direct uploads here } //TODO: Add category suggestions for direct uploads here - + private Observable directCategories() { + String directCategory = directPrefs.getString("Category", ""); + Timber.d("Direct category found: " + directCategory); + //String[] myStringArray = {directCategory}; + List categoryList = new ArrayList<>(); + categoryList.add(directCategory); + return Observable.fromIterable(categoryList).map(name -> new CategoryItem(name, false)); + } + private Observable gpsCategories() { return Observable.fromIterable( MwVolleyApi.GpsCatExists.getGpsCatExists() From eb4646df4bb1a38ed0bad3fce1fc485df2aef2e3 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 18 Mar 2018 18:28:44 +1000 Subject: [PATCH 12/22] Tidy up CategorizationFragment --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 70fc2885ae..fbfff44037 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -271,16 +271,15 @@ private Observable defaultCategories() { .concatWith(titleCategories()) .concatWith(recentCategories()) .concatWith(directCategories()); - //TODO: Add category suggestions for direct uploads here } - //TODO: Add category suggestions for direct uploads here private Observable directCategories() { String directCategory = directPrefs.getString("Category", ""); Timber.d("Direct category found: " + directCategory); - //String[] myStringArray = {directCategory}; + List categoryList = new ArrayList<>(); categoryList.add(directCategory); + return Observable.fromIterable(categoryList).map(name -> new CategoryItem(name, false)); } From d0908abc4a49063e752a869491bb768c5cd1f39c Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 18 Mar 2018 18:32:15 +1000 Subject: [PATCH 13/22] Put directCats on top of other categories --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index fbfff44037..6ff40ebc9a 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -268,9 +268,9 @@ private List getStringList(List input) { private Observable defaultCategories() { return gpsCategories() + .concatWith(directCategories()) .concatWith(titleCategories()) - .concatWith(recentCategories()) - .concatWith(directCategories()); + .concatWith(recentCategories()); } private Observable directCategories() { From 2249284ded6fcb6af01166a03b0e67a1a054ff7e Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 18 Mar 2018 18:33:26 +1000 Subject: [PATCH 14/22] Really put directCats on top this time --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 6ff40ebc9a..a62452e370 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -267,8 +267,8 @@ private List getStringList(List input) { } private Observable defaultCategories() { - return gpsCategories() - .concatWith(directCategories()) + return directCategories() + .concatWith(gpsCategories()) .concatWith(titleCategories()) .concatWith(recentCategories()); } From efa7820fe451e8672b0a6185842d79b08bdb9933 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 18 Mar 2018 18:35:50 +1000 Subject: [PATCH 15/22] Comment out UploadController.java line to test with Prod categories --- .../main/java/fr/free/nrw/commons/upload/UploadController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java index 32554da0fd..126c541a2b 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java @@ -195,7 +195,7 @@ protected Contribution doInBackground(Void... voids /* stare into you */) { protected void onPostExecute(Contribution contribution) { super.onPostExecute(contribution); //Starts the upload. If commented out, user can proceed to next Fragment but upload doesn't happen - uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); + //uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); onComplete.onUploadStarted(contribution); } }.executeOnExecutor(Executors.newFixedThreadPool(1)); // TODO remove this by using a sensible thread handling strategy From 819ec795bdc9891c48402ddc8fff834d63d425b3 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 18 Mar 2018 18:51:17 +1000 Subject: [PATCH 16/22] Add check for empty direct categories --- .../nrw/commons/category/CategorizationFragment.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index a62452e370..bdf000288b 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -89,6 +89,7 @@ public class CategorizationFragment extends CommonsDaggerSupportFragment { private HashMap> categoriesCache; private List selectedCategories = new ArrayList<>(); private TitleTextWatcher textWatcher = new TitleTextWatcher(); + private boolean hasDirectCategories = false; private final CategoriesAdapterFactory adapterFactory = new CategoriesAdapterFactory(item -> { if (item.isSelected()) { @@ -275,11 +276,13 @@ private Observable defaultCategories() { private Observable directCategories() { String directCategory = directPrefs.getString("Category", ""); - Timber.d("Direct category found: " + directCategory); - List categoryList = new ArrayList<>(); - categoryList.add(directCategory); + Timber.d("Direct category found: " + directCategory); + if (!directCategory.equals("")) { + hasDirectCategories = true; + categoryList.add(directCategory); + } return Observable.fromIterable(categoryList).map(name -> new CategoryItem(name, false)); } From 666b7a0843de404362c5ac7ebff916083d3e8162 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 18 Mar 2018 19:16:31 +1000 Subject: [PATCH 17/22] Set if-else block for direct Cats in CategorizationFragment --- .../category/CategorizationFragment.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index bdf000288b..9c2946326d 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -268,10 +268,21 @@ private List getStringList(List input) { } private Observable defaultCategories() { - return directCategories() - .concatWith(gpsCategories()) - .concatWith(titleCategories()) - .concatWith(recentCategories()); + + Observable directCat = directCategories(); + if (hasDirectCategories) { + Timber.d("Image has direct Cat"); + return directCat + .concatWith(gpsCategories()) + .concatWith(titleCategories()) + .concatWith(recentCategories()); + } + else { + Timber.d("Image has no direct Cat"); + return gpsCategories() + .concatWith(titleCategories()) + .concatWith(recentCategories()); + } } private Observable directCategories() { @@ -282,6 +293,7 @@ private Observable directCategories() { if (!directCategory.equals("")) { hasDirectCategories = true; categoryList.add(directCategory); + Timber.d("DirectCat does not equal emptyString. Direct Cat list has " + categoryList); } return Observable.fromIterable(categoryList).map(name -> new CategoryItem(name, false)); } From d6e848b32e221493f08be0d37d172fd0f14ac6c7 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 18 Mar 2018 19:17:02 +1000 Subject: [PATCH 18/22] Remove comment from UploadController.java --- .../main/java/fr/free/nrw/commons/upload/UploadController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java index 126c541a2b..32554da0fd 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java @@ -195,7 +195,7 @@ protected Contribution doInBackground(Void... voids /* stare into you */) { protected void onPostExecute(Contribution contribution) { super.onPostExecute(contribution); //Starts the upload. If commented out, user can proceed to next Fragment but upload doesn't happen - //uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); + uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); onComplete.onUploadStarted(contribution); } }.executeOnExecutor(Executors.newFixedThreadPool(1)); // TODO remove this by using a sensible thread handling strategy From 29ccd5826c2ece02b97b4dcb872e9f880f295d8f Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 18 Mar 2018 19:21:34 +1000 Subject: [PATCH 19/22] Remove FIXMEs in PlaceRenderer --- .../main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java index 65bd6f69fd..01dacdb0eb 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java @@ -121,14 +121,12 @@ protected void hookListeners(View view) { } private void storeSharedPrefs() { - //FIXME: This line crashes on list, but not on map SharedPreferences.Editor editor = directPrefs.edit(); Timber.d("directPrefs stored"); editor.putString("Title", place.getName()); editor.putString("Desc", place.getLongDescription()); editor.putString("Category", place.getCategory()); editor.apply(); - } private void closeLayout(LinearLayout buttonLayout){ @@ -141,10 +139,8 @@ private void openLayout(LinearLayout buttonLayout){ @Override public void render() { - //FIXME: injector() method has been removed from CommonsApplication.java ApplicationlessInjection.getInstance(getContext().getApplicationContext()) .getCommonsApplicationComponent().inject(this); - //((CommonsApplication) getContext().getApplicationContext()).injector().inject(this); place = getContent(); tvName.setText(place.name); String descriptionText = place.getLongDescription(); From b600f51564516f1905667640689bd6696e72d6b5 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 18 Mar 2018 20:07:56 +1000 Subject: [PATCH 20/22] Fix newlines --- .../category/CategorizationFragment.java | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 9c2946326d..53e154eb6e 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -70,19 +70,11 @@ public class CategorizationFragment extends CommonsDaggerSupportFragment { @BindView(R.id.categoriesExplanation) TextView categoriesSkip; - @Inject - MediaWikiApi mwApi; - @Inject - @Named("default_preferences") - SharedPreferences prefs; - @Inject - @Named("prefs") - SharedPreferences prefsPrefs; - @Inject - @Named("direct_nearby_upload_prefs") - SharedPreferences directPrefs; - @Inject - CategoryDao categoryDao; + @Inject MediaWikiApi mwApi; + @Inject @Named("default_preferences") SharedPreferences prefs; + @Inject @Named("prefs") SharedPreferences prefsPrefs; + @Inject @Named("direct_nearby_upload_prefs") SharedPreferences directPrefs; + @Inject CategoryDao categoryDao; private RVRendererAdapter categoriesAdapter; private OnCategoriesSaveHandler onCategoriesSaveHandler; From a2db56247695c04ab0d45635ff9f724cb356224d Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 18 Mar 2018 20:44:49 +1000 Subject: [PATCH 21/22] Switch Commons categories to the end of the query to prevent cases with >1 cat from messing up wikipedia and commons articles --- .../fr/free/nrw/commons/nearby/NearbyPlaces.java | 12 +++--------- app/src/main/resources/queries/nearby_query.rq | 2 +- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java index 424af416af..a2f4b23520 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java @@ -100,12 +100,6 @@ private List getFromWikidataQuery(LatLng cur, continue; } - - // Fields: ["Point(153.073 -27.6111)"^^, , "Queensland State Archives"@en, , "government agency"@en, , , Images from the Queensland State Archives, , - // Produces: 02-11 21:32:45.015: V/NearbyPlaces(9300): Name: Queensland State Archives, type: government agency, category: Images from the Queensland State Archives, wikipediaSitelink: , commonsSitelink: - - //TODO: What about items with more than 1 Commons category??? Might need to rearrange categories to the end of the string - String[] fields = line.split("\t"); Timber.v("Fields: " + Arrays.toString(fields)); String point = fields[0]; @@ -113,9 +107,9 @@ private List getFromWikidataQuery(LatLng cur, String name = Utils.stripLocalizedString(fields[2]); String type = Utils.stripLocalizedString(fields[4]); String icon = fields[5]; - String category = Utils.stripLocalizedString(fields[7]); - String wikipediaSitelink = Utils.stripLocalizedString(fields[8]); - String commonsSitelink = Utils.stripLocalizedString(fields[9]); + String wikipediaSitelink = Utils.stripLocalizedString(fields[7]); + String commonsSitelink = Utils.stripLocalizedString(fields[8]); + String category = Utils.stripLocalizedString(fields[9]); Timber.v("Name: " + name + ", type: " + type + ", category: " + category + ", wikipediaSitelink: " + wikipediaSitelink + ", commonsSitelink: " + commonsSitelink); diff --git a/app/src/main/resources/queries/nearby_query.rq b/app/src/main/resources/queries/nearby_query.rq index d5b3805277..0453005e8b 100644 --- a/app/src/main/resources/queries/nearby_query.rq +++ b/app/src/main/resources/queries/nearby_query.rq @@ -6,9 +6,9 @@ SELECT (SAMPLE(COALESCE(?class_label_preferred_language, ?class_label_any_language, "?")) as ?class_label) (SAMPLE(COALESCE(?icon0, ?icon1)) as ?icon) (SAMPLE(COALESCE(?emoji0, ?emoji1)) as ?emoji) - (SAMPLE(?Commons_category) as ?Commons_category) ?wikipediaArticle ?commonsArticle + (SAMPLE(?Commons_category) as ?Commons_category) WHERE { # Around given location... SERVICE wikibase:around { From eaed36555c4143c67729d23d9c012dc93327c092 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 18 Mar 2018 20:45:51 +1000 Subject: [PATCH 22/22] Remove TODO --- .../java/fr/free/nrw/commons/upload/SingleUploadFragment.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java index 39c0f18ee8..dbaa2d1d29 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java @@ -114,7 +114,6 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, if (isNearbyUpload) { String imageTitle = directPrefs.getString("Title", ""); String imageDesc = directPrefs.getString("Desc", ""); - //TODO: Remove this later, this fragment does not need to know categories String imageCats = directPrefs.getString("Category", ""); Timber.d("Image title: " + imageTitle + ", image desc: " + imageDesc + ", image categories: " + imageCats); titleEdit.setText(imageTitle);