From 5860825a0945f8809572a1f250f14173e3cc997d Mon Sep 17 00:00:00 2001 From: hismaeel Date: Sat, 17 Feb 2018 11:02:35 -0500 Subject: [PATCH 01/32] Issue #1156 --- .../fr/free/nrw/commons/AboutActivity.java | 40 +++++++++++++++++-- .../commons/media/MediaDetailFragment.java | 23 ++++++++++- .../media/MediaDetailPagerFragment.java | 13 +++++- .../notification/NotificationActivity.java | 15 ++++++- 4 files changed, 83 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/AboutActivity.java b/app/src/main/java/fr/free/nrw/commons/AboutActivity.java index 260878b00..7fd96d9bb 100644 --- a/app/src/main/java/fr/free/nrw/commons/AboutActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/AboutActivity.java @@ -1,10 +1,13 @@ package fr.free.nrw.commons; +import android.annotation.SuppressLint; import android.content.Intent; import android.net.Uri; import android.os.Bundle; +import android.util.Log; import android.view.View; import android.widget.TextView; +import android.widget.Toast; import butterknife.BindView; import butterknife.ButterKnife; @@ -25,12 +28,12 @@ public class AboutActivity extends NavigationBaseActivity { * @param savedInstanceState Data bundle */ @Override + @SuppressLint("StringFormatInvalid") public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); ButterKnife.bind(this); - String aboutText = getString(R.string.about_license, getString(R.string.trademarked_name)); aboutLicenseText.setHtmlText(aboutText); @@ -42,12 +45,25 @@ public class AboutActivity extends NavigationBaseActivity { public void launchFacebook(View view) { Intent intent; + try { intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/" + "1921335171459985")); intent.setPackage("com.facebook.katana"); startActivity(intent); + } catch (Exception e) { - startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/" + "1921335171459985"))); + intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/" + "1921335171459985\\")); + //check if web browser available + if(intent.resolveActivity(this.getPackageManager()) != null){ + startActivity(intent); + } else { + CharSequence text = "No app found to open URL"; + int duration = Toast.LENGTH_SHORT; + + Toast toast = Toast.makeText(this, text, duration); + toast.show(); + } + } } @@ -56,13 +72,29 @@ public class AboutActivity extends NavigationBaseActivity { public void launchGithub(View view) { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/commons-app/apps-android-commons\\")); - startActivity(browserIntent); + //check if web browser available + if (browserIntent.resolveActivity(this.getPackageManager()) != null) { + startActivity(browserIntent); + } else { + CharSequence text = "No app found to open URL"; + int duration = Toast.LENGTH_SHORT; + Toast toast = Toast.makeText(this, text, duration); + toast.show(); + } } @OnClick(R.id.website_launch_icon) public void launchWebsite(View view) { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://commons-app.github.io/\\")); - startActivity(browserIntent); + //check if web browser available + if (browserIntent.resolveActivity(this.getPackageManager()) != null) { + startActivity(browserIntent); + } else { + CharSequence text = "No app found to open URL"; + int duration = Toast.LENGTH_SHORT; + Toast toast = Toast.makeText(this, text, duration); + toast.show(); + } } } \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 60577ead7..96ce8da29 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -14,6 +14,7 @@ import android.view.ViewTreeObserver; import android.widget.LinearLayout; import android.widget.ScrollView; import android.widget.TextView; +import android.widget.Toast; import java.io.IOException; import java.text.SimpleDateFormat; @@ -298,7 +299,15 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment { Intent viewIntent = new Intent(); viewIntent.setAction(Intent.ACTION_VIEW); viewIntent.setData(new PageTitle(selectedCategoryTitle).getCanonicalUri()); - startActivity(viewIntent); + //check if web browser available + if(viewIntent.resolveActivity(getActivity().getPackageManager()) != null){ + startActivity(viewIntent); + } else { + CharSequence text = "No app found to open URL"; + int duration = Toast.LENGTH_SHORT; + Toast toast = Toast.makeText(getContext(), text, duration); + toast.show(); + } }); } return item; @@ -377,7 +386,17 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment { private void openWebBrowser(String url) { Intent browser = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); - startActivity(browser); + //check if web browser available + if(browser.resolveActivity(getActivity().getPackageManager()) != null){ + startActivity(browser); + } else { + CharSequence text = "No app found to open URL"; + int duration = Toast.LENGTH_SHORT; + + Toast toast = Toast.makeText(getContext(), text, duration); + toast.show(); + } + } private void openMap(LatLng coordinates) { diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java index d70b515bb..f0e0c635b 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java @@ -24,6 +24,7 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.widget.Toast; import javax.inject.Inject; import javax.inject.Named; @@ -114,7 +115,17 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple Intent viewIntent = new Intent(); viewIntent.setAction(ACTION_VIEW); viewIntent.setData(m.getFilePageTitle().getMobileUri()); - startActivity(viewIntent); + //check if web browser available + if(viewIntent.resolveActivity(getActivity().getPackageManager()) != null){ + startActivity(viewIntent); + } else { + CharSequence text = "No app found to open URL"; + int duration = Toast.LENGTH_SHORT; + + Toast toast = Toast.makeText(getContext(), text, duration); + toast.show(); + } + return true; case R.id.menu_download_current_image: // Download diff --git a/app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java b/app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java index c90e61318..20efa40e1 100644 --- a/app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java @@ -7,6 +7,7 @@ import android.net.Uri; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.widget.Toast; import com.pedrogomez.renderers.RVRendererAdapter; @@ -66,10 +67,22 @@ public class NotificationActivity extends NavigationBaseActivity { } private void handleUrl(String url) { + if (url == null || url.equals("")) { return; } - startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); + + Intent browser = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); + //check if web browser available + if(browser.resolveActivity(this.getPackageManager()) != null){ + startActivity(browser); + } else { + CharSequence text = "No app found to open URL"; + int duration = Toast.LENGTH_SHORT; + Toast toast = Toast.makeText(this, text, duration); + toast.show(); + } + } private void setAdapter(List notificationList) { From 6b63fad4071ba6f299a9032afe98049fc8028204 Mon Sep 17 00:00:00 2001 From: hismaeel Date: Sat, 17 Feb 2018 12:42:57 -0500 Subject: [PATCH 02/32] issue 1130 (b) --- .../java/fr/free/nrw/commons/media/MediaDetailFragment.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 5f41007ff..9b6bf02a1 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -274,7 +274,9 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment { } private void setOnClickListeners(final Media media) { - license.setOnClickListener(v -> openWebBrowser(licenseLink(media))); + if (licenseLink(media) != null) { + license.setOnClickListener(v -> openWebBrowser(licenseLink(media))); + } if (media.getCoordinates() != null) { coordinates.setOnClickListener(v -> openMap(media.getCoordinates())); } From 1132e57feba143e88f1590baeb285a3d855e33a4 Mon Sep 17 00:00:00 2001 From: Hassan Date: Sun, 18 Feb 2018 01:17:55 -0500 Subject: [PATCH 03/32] Reverting 1130(b) Creating separate PR for 1130 --- .../java/fr/free/nrw/commons/media/MediaDetailFragment.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 9b6bf02a1..4437fc9e6 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -274,9 +274,7 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment { } private void setOnClickListeners(final Media media) { - if (licenseLink(media) != null) { license.setOnClickListener(v -> openWebBrowser(licenseLink(media))); - } if (media.getCoordinates() != null) { coordinates.setOnClickListener(v -> openMap(media.getCoordinates())); } From ce9795cdfa049a93b63b26e989a6f6d3de34442a Mon Sep 17 00:00:00 2001 From: Hassan Date: Sun, 18 Feb 2018 10:37:36 -0500 Subject: [PATCH 04/32] Indent fix --- .../java/fr/free/nrw/commons/media/MediaDetailFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 4437fc9e6..5f41007ff 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -274,7 +274,7 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment { } private void setOnClickListeners(final Media media) { - license.setOnClickListener(v -> openWebBrowser(licenseLink(media))); + license.setOnClickListener(v -> openWebBrowser(licenseLink(media))); if (media.getCoordinates() != null) { coordinates.setOnClickListener(v -> openMap(media.getCoordinates())); } From 52a1ed459faed3e4d98455bd45374c4bb2e2757c Mon Sep 17 00:00:00 2001 From: hismaeel Date: Tue, 20 Feb 2018 17:42:25 -0500 Subject: [PATCH 05/32] issue #1130 (b) --- .../java/fr/free/nrw/commons/media/MediaDetailFragment.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 9b6bf02a1..f582a778e 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -276,6 +276,9 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment { private void setOnClickListeners(final Media media) { if (licenseLink(media) != null) { license.setOnClickListener(v -> openWebBrowser(licenseLink(media))); + } else { + Toast toast = Toast.makeText(getContext(), getString(R.string.description_info), Toast.LENGTH_SHORT); + toast.show(); } if (media.getCoordinates() != null) { coordinates.setOnClickListener(v -> openMap(media.getCoordinates())); From 683eb158125355e27e0e8d17c91075b124140693 Mon Sep 17 00:00:00 2001 From: hismaeel Date: Tue, 20 Feb 2018 17:42:48 -0500 Subject: [PATCH 06/32] issue #1130 (b) --- app/src/main/res/values/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ceba924e1..fecfff942 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -211,6 +211,7 @@ Send log file Send log file to developers via email Login to your account + URL not found Location has not changed. Location not available. From 33f6c5053055232c28d7b886ceec7d6a7bddb04b Mon Sep 17 00:00:00 2001 From: Hassan Date: Tue, 20 Feb 2018 18:58:22 -0500 Subject: [PATCH 07/32] Reverting 1130 Still finding way around VCS :-)) Will make separate PR for 1130 (b) --- .../fr/free/nrw/commons/media/MediaDetailFragment.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index f582a778e..5f41007ff 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -274,12 +274,7 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment { } private void setOnClickListeners(final Media media) { - if (licenseLink(media) != null) { - license.setOnClickListener(v -> openWebBrowser(licenseLink(media))); - } else { - Toast toast = Toast.makeText(getContext(), getString(R.string.description_info), Toast.LENGTH_SHORT); - toast.show(); - } + license.setOnClickListener(v -> openWebBrowser(licenseLink(media))); if (media.getCoordinates() != null) { coordinates.setOnClickListener(v -> openMap(media.getCoordinates())); } From f9b99f9280d0d09a5d0c46ae7e17ffa3088b025e Mon Sep 17 00:00:00 2001 From: hismaeel Date: Tue, 20 Feb 2018 21:38:22 -0500 Subject: [PATCH 08/32] issue #1156 fix --- .../java/fr/free/nrw/commons/AboutActivity.java | 15 +++++---------- .../nrw/commons/media/MediaDetailFragment.java | 11 ++++------- .../commons/media/MediaDetailPagerFragment.java | 6 ++---- .../notification/NotificationActivity.java | 9 +++------ app/src/main/res/values/strings.xml | 2 +- 5 files changed, 15 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/AboutActivity.java b/app/src/main/java/fr/free/nrw/commons/AboutActivity.java index 46e1441d6..a2635d0dc 100644 --- a/app/src/main/java/fr/free/nrw/commons/AboutActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/AboutActivity.java @@ -15,6 +15,8 @@ import butterknife.OnClick; import fr.free.nrw.commons.theme.NavigationBaseActivity; import fr.free.nrw.commons.ui.widget.HtmlTextView; +import static android.widget.Toast.LENGTH_SHORT; + /** * Represents about screen of this app */ @@ -57,10 +59,7 @@ public class AboutActivity extends NavigationBaseActivity { if(intent.resolveActivity(this.getPackageManager()) != null){ startActivity(intent); } else { - CharSequence text = "No app found to open URL"; - int duration = Toast.LENGTH_SHORT; - - Toast toast = Toast.makeText(this, text, duration); + Toast toast = Toast.makeText(this, getString(R.string.no_web_browser), LENGTH_SHORT); toast.show(); } @@ -76,9 +75,7 @@ public class AboutActivity extends NavigationBaseActivity { if (browserIntent.resolveActivity(this.getPackageManager()) != null) { startActivity(browserIntent); } else { - CharSequence text = "No app found to open URL"; - int duration = Toast.LENGTH_SHORT; - Toast toast = Toast.makeText(this, text, duration); + Toast toast = Toast.makeText(this, getString(R.string.no_web_browser), LENGTH_SHORT); toast.show(); } } @@ -91,9 +88,7 @@ public class AboutActivity extends NavigationBaseActivity { if (browserIntent.resolveActivity(this.getPackageManager()) != null) { startActivity(browserIntent); } else { - CharSequence text = "No app found to open URL"; - int duration = Toast.LENGTH_SHORT; - Toast toast = Toast.makeText(this, text, duration); + Toast toast = Toast.makeText(this, getString(R.string.no_web_browser), LENGTH_SHORT); toast.show(); } } diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index f582a778e..aabfe1c81 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -37,6 +37,8 @@ import fr.free.nrw.commons.location.LatLng; import fr.free.nrw.commons.ui.widget.CompatTextView; import timber.log.Timber; +import static android.widget.Toast.LENGTH_SHORT; + public class MediaDetailFragment extends CommonsDaggerSupportFragment { private boolean editable; @@ -309,9 +311,7 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment { if(viewIntent.resolveActivity(getActivity().getPackageManager()) != null){ startActivity(viewIntent); } else { - CharSequence text = "No app found to open URL"; - int duration = Toast.LENGTH_SHORT; - Toast toast = Toast.makeText(getContext(), text, duration); + Toast toast = Toast.makeText(getContext(), getString(R.string.no_web_browser), LENGTH_SHORT); toast.show(); } }); @@ -397,10 +397,7 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment { if(browser.resolveActivity(getActivity().getPackageManager()) != null){ startActivity(browser); } else { - CharSequence text = "No app found to open URL"; - int duration = Toast.LENGTH_SHORT; - - Toast toast = Toast.makeText(getContext(), text, duration); + Toast toast = Toast.makeText(getContext(), getString(R.string.no_web_browser), LENGTH_SHORT); toast.show(); } diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java index d1f4ffd97..be7aea836 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java @@ -41,6 +41,7 @@ import static android.Manifest.permission.READ_EXTERNAL_STORAGE; import static android.content.Context.DOWNLOAD_SERVICE; import static android.content.Intent.ACTION_VIEW; import static android.content.pm.PackageManager.PERMISSION_GRANTED; +import static android.widget.Toast.LENGTH_SHORT; public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment implements ViewPager.OnPageChangeListener { @@ -123,10 +124,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple if(viewIntent.resolveActivity(getActivity().getPackageManager()) != null){ startActivity(viewIntent); } else { - CharSequence text = "No app found to open URL"; - int duration = Toast.LENGTH_SHORT; - - Toast toast = Toast.makeText(getContext(), text, duration); + Toast toast = Toast.makeText(getContext(), getString(R.string.no_web_browser), LENGTH_SHORT); toast.show(); } diff --git a/app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java b/app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java index 43e880ba2..39d5252ee 100644 --- a/app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java @@ -24,6 +24,8 @@ import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; import timber.log.Timber; +import static android.widget.Toast.LENGTH_SHORT; + /** * Created by root on 18.12.2017. */ @@ -65,22 +67,17 @@ public class NotificationActivity extends NavigationBaseActivity { } private void handleUrl(String url) { - if (url == null || url.equals("")) { return; } - Intent browser = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); //check if web browser available if(browser.resolveActivity(this.getPackageManager()) != null){ startActivity(browser); } else { - CharSequence text = "No app found to open URL"; - int duration = Toast.LENGTH_SHORT; - Toast toast = Toast.makeText(this, text, duration); + Toast toast = Toast.makeText(this, getString(R.string.no_web_browser), LENGTH_SHORT); toast.show(); } - } private void setAdapter(List notificationList) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fecfff942..9f8f30ccb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -211,7 +211,7 @@ Send log file Send log file to developers via email Login to your account - URL not found + No app found to open URL Location has not changed. Location not available. From 163e840c126c9c8e9a631201fc16ee956f75b803 Mon Sep 17 00:00:00 2001 From: Hassan Date: Wed, 21 Feb 2018 11:52:15 -0500 Subject: [PATCH 09/32] White Spaces fix --- .../java/fr/free/nrw/commons/media/MediaDetailFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index 48ba70d07..4c38af529 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -389,7 +389,7 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment { private void openWebBrowser(String url) { Intent browser = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); //check if web browser available - if(browser.resolveActivity(getActivity().getPackageManager()) != null){ + if (browser.resolveActivity(getActivity().getPackageManager()) != null) { startActivity(browser); } else { Toast toast = Toast.makeText(getContext(), getString(R.string.no_web_browser), LENGTH_SHORT); From 167dabc73dfd6eaee23d32d0eca8eea71106d216 Mon Sep 17 00:00:00 2001 From: Hassan Date: Wed, 21 Feb 2018 12:05:52 -0500 Subject: [PATCH 10/32] Update strings.xml --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fd8d60f81..79614f218 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -213,7 +213,7 @@ Login to your account Send log file Send log file to developers via email - No app found to open URL + No web browser found to open URL Location has not changed. Location not available. From 4037972e95ecfe990caf0d9c7e2c6480a4adde30 Mon Sep 17 00:00:00 2001 From: Shradheya Thakre Date: Mon, 26 Feb 2018 14:11:51 +0800 Subject: [PATCH 11/32] Added Toast message content --- app/src/main/res/values/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3c9c67947..bc6dfcee0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -36,6 +36,7 @@ Share View in Browser Title + Please give a Title to proceed Description Unable to login - network failure Unable to login - please check your username From 8ce0a6d6d48fa2f5542ad52c7faab49ab8fd2257 Mon Sep 17 00:00:00 2001 From: Shradheya Thakre Date: Mon, 26 Feb 2018 14:12:49 +0800 Subject: [PATCH 12/32] Enables submit button by default --- app/src/main/res/menu/activity_share.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/menu/activity_share.xml b/app/src/main/res/menu/activity_share.xml index 67b23a77e..99290b787 100644 --- a/app/src/main/res/menu/activity_share.xml +++ b/app/src/main/res/menu/activity_share.xml @@ -3,6 +3,6 @@ From 6a052318780a9fb170a8bbe0aa05b79f3b5c01c8 Mon Sep 17 00:00:00 2001 From: Shradheya Thakre Date: Mon, 26 Feb 2018 14:13:31 +0800 Subject: [PATCH 13/32] Logic to show toast on click --- .../fr/free/nrw/commons/upload/SingleUploadFragment.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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 be2401b5c..78e0bddc0 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 @@ -25,6 +25,7 @@ import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; +import android.widget.Toast; import java.util.ArrayList; @@ -62,9 +63,6 @@ public class SingleUploadFragment extends CommonsDaggerSupportFragment { @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.activity_share, menu); - if (titleEdit != null) { - menu.findItem(R.id.menu_upload_single).setEnabled(titleEdit.getText().length() != 0); - } } @Override @@ -73,6 +71,11 @@ public class SingleUploadFragment extends CommonsDaggerSupportFragment { //What happens when the 'submit' icon is tapped case R.id.menu_upload_single: + if (titleEdit.getText().toString().isEmpty()) { + Toast.makeText(getContext(), R.string.add_title_toast, Toast.LENGTH_LONG).show(); + return false; + } + String title = titleEdit.getText().toString(); String desc = descEdit.getText().toString(); From 8addd10ef8177d730dd206fd02e1c447d2ae0fda Mon Sep 17 00:00:00 2001 From: Hassan Date: Wed, 28 Feb 2018 13:07:50 -0500 Subject: [PATCH 14/32] update PR quality --- .../main/java/fr/free/nrw/commons/AboutActivity.java | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/AboutActivity.java b/app/src/main/java/fr/free/nrw/commons/AboutActivity.java index 1b27c86b7..91a4f6eb9 100644 --- a/app/src/main/java/fr/free/nrw/commons/AboutActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/AboutActivity.java @@ -47,17 +47,13 @@ public class AboutActivity extends NavigationBaseActivity { @OnClick(R.id.facebook_launch_icon) public void launchFacebook(View view) { - Intent intent; - try { intent = new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/" + "1921335171459985")); intent.setPackage("com.facebook.katana"); startActivity(intent); - } catch (Exception e) { intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/" + "1921335171459985\\")); - //check if web browser available if(intent.resolveActivity(this.getPackageManager()) != null){ Utils.handleWebUrl(this,Uri.parse("https://www.facebook.com/" + "1921335171459985")); } else { @@ -82,7 +78,6 @@ public class AboutActivity extends NavigationBaseActivity { @OnClick(R.id.website_launch_icon) public void launchWebsite(View view) { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://commons-app.github.io/\\")); - //check if web browser available if (browserIntent.resolveActivity(this.getPackageManager()) != null) { Utils.handleWebUrl(this,Uri.parse("https://commons-app.github.io/\\")); } else { @@ -95,7 +90,6 @@ public class AboutActivity extends NavigationBaseActivity { @OnClick(R.id.about_credits) public void launchCredits(View view) { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/commons-app/apps-android-commons/blob/master/CREDITS/\\")); - //check if web browser available if (browserIntent.resolveActivity(this.getPackageManager()) != null) { Utils.handleWebUrl(this,Uri.parse("https://github.com/commons-app/apps-android-commons/blob/master/CREDITS/\\")); } else { @@ -107,14 +101,12 @@ public class AboutActivity extends NavigationBaseActivity { @OnClick(R.id.about_privacy_policy) public void launchPrivacyPolicy(View view) { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\\")); - //check if web browser available if (browserIntent.resolveActivity(this.getPackageManager()) != null) { Utils.handleWebUrl(this,Uri.parse("https://github.com/commons-app/apps-android-commons/wiki/Privacy-policy\\")); } else { Toast toast = Toast.makeText(this, getString(R.string.no_web_browser), LENGTH_SHORT); toast.show(); } - } -} \ No newline at end of file +} From 534215fdbc81b182a708ffdce43e81f0becb2a80 Mon Sep 17 00:00:00 2001 From: Jatin Rao Date: Thu, 1 Mar 2018 15:57:13 +0530 Subject: [PATCH 15/32] Fix for issue #1224 showing complete notification on click --- .../notification/ExpandableTextView.java | 87 +++++++++++++++++++ .../notification/NotificationRenderer.java | 4 +- app/src/main/res/layout/item_notification.xml | 8 +- app/src/main/res/values/attrs.xml | 4 + gradle.properties | 44 ++++++---- 5 files changed, 123 insertions(+), 24 deletions(-) create mode 100644 app/src/main/java/fr/free/nrw/commons/notification/ExpandableTextView.java diff --git a/app/src/main/java/fr/free/nrw/commons/notification/ExpandableTextView.java b/app/src/main/java/fr/free/nrw/commons/notification/ExpandableTextView.java new file mode 100644 index 000000000..473a4ebf1 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/notification/ExpandableTextView.java @@ -0,0 +1,87 @@ +package fr.free.nrw.commons.notification; + +/** + * Created by jatin on 1/3/18. + */ + +import android.content.Context; +import android.content.res.TypedArray; +import android.text.SpannableStringBuilder; +import android.util.AttributeSet; +import android.view.View; + +import fr.free.nrw.commons.R; + +/** + * User: Bazlur Rahman Rokon + * Date: 9/7/13 - 3:33 AM + */ +public class ExpandableTextView extends android.support.v7.widget.AppCompatTextView { + private static final int DEFAULT_TRIM_LENGTH = 40; + private static final String ELLIPSIS = "...More"; + + private CharSequence originalText; + private CharSequence trimmedText; + private BufferType bufferType; + private boolean trim = true; + private int trimLength; + + public ExpandableTextView(Context context) { + this(context, null); + } + + public ExpandableTextView(Context context, AttributeSet attrs) { + super(context, attrs); + + TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ExpandableTextView); + this.trimLength = typedArray.getInt(R.styleable.ExpandableTextView_trimLength, DEFAULT_TRIM_LENGTH); + typedArray.recycle(); + + setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + trim = !trim; + setText(); + requestFocusFromTouch(); + } + }); + } + + private void setText() { + super.setText(getDisplayableText(), bufferType); + } + + private CharSequence getDisplayableText() { + return trim ? trimmedText : originalText; + } + + @Override + public void setText(CharSequence text, BufferType type) { + originalText = text; + trimmedText = getTrimmedText(text); + bufferType = type; + setText(); + } + + private CharSequence getTrimmedText(CharSequence text) { + if (originalText != null && originalText.length() > trimLength) { + return new SpannableStringBuilder(originalText, 0, trimLength + 1).append(ELLIPSIS); + } else { + return originalText; + } + } + + public CharSequence getOriginalText() { + return originalText; + } + + public void setTrimLength(int trimLength) { + this.trimLength = trimLength; + trimmedText = getTrimmedText(originalText); + setText(); + } + + public int getTrimLength() { + return trimLength; + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/notification/NotificationRenderer.java b/app/src/main/java/fr/free/nrw/commons/notification/NotificationRenderer.java index a5aac0508..3e5e470a1 100644 --- a/app/src/main/java/fr/free/nrw/commons/notification/NotificationRenderer.java +++ b/app/src/main/java/fr/free/nrw/commons/notification/NotificationRenderer.java @@ -17,8 +17,8 @@ import fr.free.nrw.commons.R; */ public class NotificationRenderer extends Renderer { - @BindView(R.id.title) TextView title; - @BindView(R.id.description) TextView description; + @BindView(R.id.title) ExpandableTextView title; + @BindView(R.id.description) ExpandableTextView description; @BindView(R.id.time) TextView time; @BindView(R.id.icon) ImageView icon; private NotificationClicked listener; diff --git a/app/src/main/res/layout/item_notification.xml b/app/src/main/res/layout/item_notification.xml index d8f4dd8d4..593f2ab4f 100644 --- a/app/src/main/res/layout/item_notification.xml +++ b/app/src/main/res/layout/item_notification.xml @@ -34,7 +34,7 @@ tools:text="@string/placeholder_place_distance" /> - - diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 38331d635..0a1df6e2f 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -16,4 +16,8 @@ + + + + \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 10685ea11..0f0385cbb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,21 +1,29 @@ -gradleVersion = 3.0.0 - -SUPPORT_LIB_VERSION = 26.0.2 - -compileSdkVersion = android-26 -buildToolsVersion = 26.0.2 - -minSdkVersion = 15 - -targetSdkVersion = 25 +## Project-wide Gradle settings. +# +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx1024m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +# +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +#Thu Mar 01 15:28:48 IST 2018 +systemProp.http.proxyPort=0 +compileSdkVersion=android-26 android.useDeprecatedNdk=true - -# Library dependencies BUTTERKNIFE_VERSION=8.6.0 -DAGGER_VERSION=2.13 -LEAK_CANARY=1.5.4 org.gradle.jvmargs=-Xmx1536M - -#TODO: Temporary disabled. https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#aapt2 -#Refer to PR: https://github.com/commons-app/apps-android-commons/pull/932 -android.enableAapt2=false \ No newline at end of file +buildToolsVersion=26.0.2 +targetSdkVersion=25 +android.enableAapt2=false +SUPPORT_LIB_VERSION=26.0.2 +minSdkVersion=15 +systemProp.http.proxyHost= +LEAK_CANARY=1.5.4 +DAGGER_VERSION=2.13 +gradleVersion=3.0.0 From 0a861317f4a1f319165d1e87a6b0db33c4e2e243 Mon Sep 17 00:00:00 2001 From: Jatin Rao Date: Thu, 1 Mar 2018 17:14:55 +0530 Subject: [PATCH 16/32] Removed unsused variable from method getTrimmedText --- .../free/nrw/commons/notification/ExpandableTextView.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/notification/ExpandableTextView.java b/app/src/main/java/fr/free/nrw/commons/notification/ExpandableTextView.java index 473a4ebf1..c66d145bd 100644 --- a/app/src/main/java/fr/free/nrw/commons/notification/ExpandableTextView.java +++ b/app/src/main/java/fr/free/nrw/commons/notification/ExpandableTextView.java @@ -58,12 +58,12 @@ public class ExpandableTextView extends android.support.v7.widget.AppCompatTextV @Override public void setText(CharSequence text, BufferType type) { originalText = text; - trimmedText = getTrimmedText(text); + trimmedText = getTrimmedText(); bufferType = type; setText(); } - private CharSequence getTrimmedText(CharSequence text) { + private CharSequence getTrimmedText() { if (originalText != null && originalText.length() > trimLength) { return new SpannableStringBuilder(originalText, 0, trimLength + 1).append(ELLIPSIS); } else { @@ -77,7 +77,7 @@ public class ExpandableTextView extends android.support.v7.widget.AppCompatTextV public void setTrimLength(int trimLength) { this.trimLength = trimLength; - trimmedText = getTrimmedText(originalText); + trimmedText = getTrimmedText(); setText(); } From d7e0c819699670aa36a6941455c996c858040cd7 Mon Sep 17 00:00:00 2001 From: knightshade Date: Fri, 2 Mar 2018 10:28:28 +0530 Subject: [PATCH 17/32] Add multidex library and extend CommonsApplication from MultiDexApplication. Fixes #1225 --- app/build.gradle | 2 ++ app/src/main/java/fr/free/nrw/commons/CommonsApplication.java | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 6f225dc2f..99eabcaf8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,6 +48,8 @@ dependencies { compile 'com.facebook.fresco:fresco:1.3.0' compile 'com.facebook.stetho:stetho:1.5.0' + compile 'com.android.support:multidex:1.0.2' + testCompile 'junit:junit:4.12' testCompile 'org.robolectric:robolectric:3.7.1' diff --git a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java index ab156bab7..e092a90c4 100644 --- a/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java +++ b/app/src/main/java/fr/free/nrw/commons/CommonsApplication.java @@ -4,6 +4,7 @@ import android.app.Application; import android.content.Context; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; +import android.support.multidex.MultiDexApplication; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.stetho.Stetho; @@ -40,7 +41,7 @@ import timber.log.Timber; resDialogCommentPrompt = R.string.crash_dialog_comment_prompt, resDialogOkToast = R.string.crash_dialog_ok_toast ) -public class CommonsApplication extends Application { +public class CommonsApplication extends MultiDexApplication { @Inject SessionManager sessionManager; @Inject DBOpenHelper dbOpenHelper; From 81147aada129d8ffac154faa957af317166131c4 Mon Sep 17 00:00:00 2001 From: Jatin Rao Date: Sat, 3 Mar 2018 19:55:09 +0530 Subject: [PATCH 18/32] Fixes issue 1224 --- app/build.gradle | 2 + .../notification/ExpandableTextView.java | 87 ------------------- .../notification/NotificationRenderer.java | 5 +- app/src/main/res/layout/item_notification.xml | 15 ++-- app/src/main/res/values/attrs.xml | 4 - 5 files changed, 13 insertions(+), 100 deletions(-) delete mode 100644 app/src/main/java/fr/free/nrw/commons/notification/ExpandableTextView.java diff --git a/app/build.gradle b/app/build.gradle index 6f225dc2f..5ae2e70df 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -94,6 +94,8 @@ dependencies { implementation "com.google.dagger:dagger-android-support:$DAGGER_VERSION" kapt "com.google.dagger:dagger-compiler:$DAGGER_VERSION" kapt "com.google.dagger:dagger-android-processor:$DAGGER_VERSION" + + compile 'com.borjabravo:readmoretextview:2.1.0' } android { diff --git a/app/src/main/java/fr/free/nrw/commons/notification/ExpandableTextView.java b/app/src/main/java/fr/free/nrw/commons/notification/ExpandableTextView.java deleted file mode 100644 index c66d145bd..000000000 --- a/app/src/main/java/fr/free/nrw/commons/notification/ExpandableTextView.java +++ /dev/null @@ -1,87 +0,0 @@ -package fr.free.nrw.commons.notification; - -/** - * Created by jatin on 1/3/18. - */ - -import android.content.Context; -import android.content.res.TypedArray; -import android.text.SpannableStringBuilder; -import android.util.AttributeSet; -import android.view.View; - -import fr.free.nrw.commons.R; - -/** - * User: Bazlur Rahman Rokon - * Date: 9/7/13 - 3:33 AM - */ -public class ExpandableTextView extends android.support.v7.widget.AppCompatTextView { - private static final int DEFAULT_TRIM_LENGTH = 40; - private static final String ELLIPSIS = "...More"; - - private CharSequence originalText; - private CharSequence trimmedText; - private BufferType bufferType; - private boolean trim = true; - private int trimLength; - - public ExpandableTextView(Context context) { - this(context, null); - } - - public ExpandableTextView(Context context, AttributeSet attrs) { - super(context, attrs); - - TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ExpandableTextView); - this.trimLength = typedArray.getInt(R.styleable.ExpandableTextView_trimLength, DEFAULT_TRIM_LENGTH); - typedArray.recycle(); - - setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - trim = !trim; - setText(); - requestFocusFromTouch(); - } - }); - } - - private void setText() { - super.setText(getDisplayableText(), bufferType); - } - - private CharSequence getDisplayableText() { - return trim ? trimmedText : originalText; - } - - @Override - public void setText(CharSequence text, BufferType type) { - originalText = text; - trimmedText = getTrimmedText(); - bufferType = type; - setText(); - } - - private CharSequence getTrimmedText() { - if (originalText != null && originalText.length() > trimLength) { - return new SpannableStringBuilder(originalText, 0, trimLength + 1).append(ELLIPSIS); - } else { - return originalText; - } - } - - public CharSequence getOriginalText() { - return originalText; - } - - public void setTrimLength(int trimLength) { - this.trimLength = trimLength; - trimmedText = getTrimmedText(); - setText(); - } - - public int getTrimLength() { - return trimLength; - } -} diff --git a/app/src/main/java/fr/free/nrw/commons/notification/NotificationRenderer.java b/app/src/main/java/fr/free/nrw/commons/notification/NotificationRenderer.java index 3e5e470a1..87924d286 100644 --- a/app/src/main/java/fr/free/nrw/commons/notification/NotificationRenderer.java +++ b/app/src/main/java/fr/free/nrw/commons/notification/NotificationRenderer.java @@ -6,6 +6,7 @@ import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; +import com.borjabravo.readmoretextview.ReadMoreTextView; import com.pedrogomez.renderers.Renderer; import butterknife.BindView; @@ -17,8 +18,8 @@ import fr.free.nrw.commons.R; */ public class NotificationRenderer extends Renderer { - @BindView(R.id.title) ExpandableTextView title; - @BindView(R.id.description) ExpandableTextView description; + @BindView(R.id.title) ReadMoreTextView title; + @BindView(R.id.description) ReadMoreTextView description; @BindView(R.id.time) TextView time; @BindView(R.id.icon) ImageView icon; private NotificationClicked listener; diff --git a/app/src/main/res/layout/item_notification.xml b/app/src/main/res/layout/item_notification.xml index 593f2ab4f..bd364c029 100644 --- a/app/src/main/res/layout/item_notification.xml +++ b/app/src/main/res/layout/item_notification.xml @@ -1,11 +1,10 @@ - + android:minHeight="72dp"> - - diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 0a1df6e2f..38331d635 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -16,8 +16,4 @@ - - - - \ No newline at end of file From 48de0e9ca41a1364b428a23085e758d9ca37b91f Mon Sep 17 00:00:00 2001 From: Shradheya Thakre Date: Sun, 4 Mar 2018 13:12:23 +0800 Subject: [PATCH 19/32] fix-string-message --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 81974eb37..15db0cab5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -38,7 +38,7 @@ Share View in Browser Title - Please give a Title to proceed + Please provide a title for this file Description Unable to login - network failure Unable to login - please check your username From a446b5b662f83e748385c6a5aacf31f38934f69b Mon Sep 17 00:00:00 2001 From: Jatin Rao Date: Sun, 4 Mar 2018 14:20:20 +0530 Subject: [PATCH 20/32] Fixes #1250 Removed creation of multiple instances of Notification activity --- .../fr/free/nrw/commons/notification/NotificationActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java b/app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java index 663845384..f66b0b6a0 100644 --- a/app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.java @@ -95,6 +95,7 @@ public class NotificationActivity extends NavigationBaseActivity { public static void startYourself(Context context) { Intent intent = new Intent(context, NotificationActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); context.startActivity(intent); } } From ff11c9d1f0427b34f0ac533662b01f141c153daa Mon Sep 17 00:00:00 2001 From: Jatin Rao Date: Sun, 4 Mar 2018 22:19:40 +0530 Subject: [PATCH 21/32] Added a white space between text and show less --- .../nrw/commons/notification/NotificationRenderer.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/notification/NotificationRenderer.java b/app/src/main/java/fr/free/nrw/commons/notification/NotificationRenderer.java index 87924d286..a02b9eff4 100644 --- a/app/src/main/java/fr/free/nrw/commons/notification/NotificationRenderer.java +++ b/app/src/main/java/fr/free/nrw/commons/notification/NotificationRenderer.java @@ -1,5 +1,6 @@ package fr.free.nrw.commons.notification; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -47,9 +48,13 @@ public class NotificationRenderer extends Renderer { @Override public void render() { Notification notification = getContent(); - title.setText(notification.notificationText); + StringBuilder str = new StringBuilder(notification.notificationText); + str.append(" " ); + title.setText(str); time.setText(notification.date); - description.setText(notification.description); + StringBuilder desc = new StringBuilder(notification.description); + desc.append(" "); + description.setText(desc); switch (notification.notificationType) { case THANK_YOU_EDIT: icon.setImageResource(R.drawable.ic_edit_black_24dp); From 7009537e8e81edfa7ddb97b44944e7aee7832c51 Mon Sep 17 00:00:00 2001 From: knightshade Date: Tue, 6 Mar 2018 08:43:30 +0530 Subject: [PATCH 22/32] Wraps string stored in strings.xml with CDATA to prevent PHP's SimpleXML return null when string contains other tags. Fixes #1258 --- app/src/main/res/values/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2ba510572..1e6172515 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -79,8 +79,8 @@ The Wikimedia Commons app is an open-source app created and maintained by grantees and volunteers of the Wikimedia community. The Wikimedia Foundation is not involved in the creation, development, or maintenance of the app. Wikimedia Commons Create a new <a href=\"https://github.com/commons-app/apps-android-commons/issues\">GitHub issue</a> for bug reports and suggestions. - Privacy policy - Credits + Privacy policy]]> + [Credits]]> About Send Feedback (via Email) No email client installed From 0a45e0cc43bfd7c99176abfacb963b5abf06621a Mon Sep 17 00:00:00 2001 From: knightshade Date: Wed, 7 Mar 2018 00:07:21 +0530 Subject: [PATCH 23/32] Fixed typo. --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1e6172515..89ebb228e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -80,7 +80,7 @@ Wikimedia Commons Create a new <a href=\"https://github.com/commons-app/apps-android-commons/issues\">GitHub issue</a> for bug reports and suggestions. Privacy policy]]> - [Credits]]> + Credits]]> About Send Feedback (via Email) No email client installed From cfc1449615559e8c8326071906d18393d6098d76 Mon Sep 17 00:00:00 2001 From: Ayushi Negi Date: Wed, 7 Mar 2018 06:44:51 +0530 Subject: [PATCH 24/32] Launch Rate Us Feature from AboutActivity (#1264) * Launch Rate Us Feature from AboutActivity Rate us feature is added in Utils, But it is never used/launched. * Add LaunchRatings Method in AboutActivity * Fix Package Name to enable rate us feature The rate us feature was not working for the debug build type since getPackageName() was returning the fr.free.nrw.commons.debug. Use of this package name was leading to an error on google play. * Replace getPackageName() with BuildConfig.class.getPackage().getName() in rateApp method of Utils.java --- app/src/main/java/fr/free/nrw/commons/AboutActivity.java | 6 +++++- app/src/main/java/fr/free/nrw/commons/Utils.java | 3 +-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/AboutActivity.java b/app/src/main/java/fr/free/nrw/commons/AboutActivity.java index 91a4f6eb9..bb7b1fc1e 100644 --- a/app/src/main/java/fr/free/nrw/commons/AboutActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/AboutActivity.java @@ -86,7 +86,11 @@ public class AboutActivity extends NavigationBaseActivity { } } - + @OnClick(R.id.about_rate_us) + public void launchRatings(View view){ + Utils.rateApp(this); + } + @OnClick(R.id.about_credits) public void launchCredits(View view) { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/commons-app/apps-android-commons/blob/master/CREDITS/\\")); diff --git a/app/src/main/java/fr/free/nrw/commons/Utils.java b/app/src/main/java/fr/free/nrw/commons/Utils.java index 1044a7c17..2b6ba9907 100644 --- a/app/src/main/java/fr/free/nrw/commons/Utils.java +++ b/app/src/main/java/fr/free/nrw/commons/Utils.java @@ -166,14 +166,13 @@ public class Utils { } public static void rateApp(Context context) { - final String appPackageName = context.getPackageName(); + final String appPackageName = BuildConfig.class.getPackage().getName(); try { context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName))); } catch (android.content.ActivityNotFoundException anfe) { context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName))); } - return ; } public static void handleWebUrl(Context context,Uri url){ From 2ad985cd73305d66af8006546e0a6d135e266e35 Mon Sep 17 00:00:00 2001 From: Josephine Lim Date: Wed, 7 Mar 2018 20:50:53 +1000 Subject: [PATCH 25/32] Update PULL_REQUEST_TEMPLATE.md --- PULL_REQUEST_TEMPLATE.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md index f58c9225b..34078f07e 100644 --- a/PULL_REQUEST_TEMPLATE.md +++ b/PULL_REQUEST_TEMPLATE.md @@ -4,6 +4,12 @@ Fixes #{GitHub issue number} {Describe the changes made and why they were made.} +## Tests performed + +Tested on {API level & name of device/emulator}, with {build variant, e.g. ProdDebug}. + +{Please test your PR at least once before submitting.} + ## Screenshots showing what changed {Only for user interface changes, otherwise remove this section. See [how to take a screenshot](https://android.stackexchange.com/questions/1759/how-to-take-a-screenshot-with-an-android-device)} From 0acc42dd524365884654b8787c1bfd4934952f30 Mon Sep 17 00:00:00 2001 From: knightshade Date: Wed, 7 Mar 2018 23:09:39 +0530 Subject: [PATCH 26/32] Fixes failing of tests after addition of multidex. --- app/build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 99eabcaf8..1f593e3e6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,10 +48,11 @@ dependencies { compile 'com.facebook.fresco:fresco:1.3.0' compile 'com.facebook.stetho:stetho:1.5.0' - compile 'com.android.support:multidex:1.0.2' + compile 'com.android.support:multidex:1.0.3' testCompile 'junit:junit:4.12' testCompile 'org.robolectric:robolectric:3.7.1' + testCompile "org.robolectric:multidex:3.4.2" testCompile 'com.squareup.okhttp3:mockwebserver:3.8.1' androidTestCompile 'com.squareup.okhttp3:mockwebserver:3.8.1' From 57bfb7b3283e0a87c0e9dee24a3e87664b9dbd6e Mon Sep 17 00:00:00 2001 From: Tanvi Dadu Date: Sat, 10 Mar 2018 22:47:21 +0530 Subject: [PATCH 27/32] Skip option in Welcome Screen (#1251) * Skip option in Welcome Screen * Tutorial screen Revamped * fixed the prodDebug visibility --- .../free/nrw/commons/WelcomePagerAdapter.java | 14 +++++++-- app/src/main/res/layout/welcome_do_upload.xml | 26 ++++++++++++++-- .../main/res/layout/welcome_dont_upload.xml | 27 +++++++++++++++-- .../main/res/layout/welcome_image_details.xml | 30 +++++++++++++++---- app/src/main/res/layout/welcome_wikipedia.xml | 26 ++++++++++++++-- app/src/main/res/values/strings.xml | 1 + 6 files changed, 111 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/WelcomePagerAdapter.java b/app/src/main/java/fr/free/nrw/commons/WelcomePagerAdapter.java index a346655cf..705de23da 100644 --- a/app/src/main/java/fr/free/nrw/commons/WelcomePagerAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/WelcomePagerAdapter.java @@ -5,6 +5,7 @@ import android.support.v4.view.PagerAdapter; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.TextView; import butterknife.ButterKnife; import butterknife.OnClick; @@ -54,10 +55,18 @@ public class WelcomePagerAdapter extends PagerAdapter { public Object instantiateItem(ViewGroup container, int position) { LayoutInflater inflater = LayoutInflater.from(container.getContext()); ViewGroup layout = (ViewGroup) inflater.inflate(PAGE_LAYOUTS[position], container, false); - - if (position == PAGE_FINAL) { + if( BuildConfig.FLAVOR == "beta"){ + TextView textView = (TextView) layout.findViewById(R.id.welcomeYesButton); + if( textView.getVisibility() != View.VISIBLE){ + textView.setVisibility(View.VISIBLE); + } ViewHolder holder = new ViewHolder(layout); layout.setTag(holder); + } else { + if (position == PAGE_FINAL) { + ViewHolder holder = new ViewHolder(layout); + layout.setTag(holder); + } } container.addView(layout); return layout; @@ -92,5 +101,6 @@ public class WelcomePagerAdapter extends PagerAdapter { callback.onYesClicked(); } } + } } diff --git a/app/src/main/res/layout/welcome_do_upload.xml b/app/src/main/res/layout/welcome_do_upload.xml index fab6452df..bf2401913 100644 --- a/app/src/main/res/layout/welcome_do_upload.xml +++ b/app/src/main/res/layout/welcome_do_upload.xml @@ -1,5 +1,5 @@ - + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/welcome_dont_upload.xml b/app/src/main/res/layout/welcome_dont_upload.xml index d819bc035..3e244e1fa 100644 --- a/app/src/main/res/layout/welcome_dont_upload.xml +++ b/app/src/main/res/layout/welcome_dont_upload.xml @@ -1,11 +1,18 @@ - + + - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/layout/welcome_image_details.xml b/app/src/main/res/layout/welcome_image_details.xml index e38eb5979..7202df4c0 100644 --- a/app/src/main/res/layout/welcome_image_details.xml +++ b/app/src/main/res/layout/welcome_image_details.xml @@ -1,12 +1,18 @@ - - + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/welcome_wikipedia.xml b/app/src/main/res/layout/welcome_wikipedia.xml index ece52628e..0708b5ea9 100644 --- a/app/src/main/res/layout/welcome_wikipedia.xml +++ b/app/src/main/res/layout/welcome_wikipedia.xml @@ -1,11 +1,18 @@ - + - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 15db0cab5..3769d24bd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -240,4 +240,5 @@ %1$s mentioned you on %2$s. Toggle view Rate Us + Skip Tutorial From de673eb4cae0d39f51d54e658ad057bc353af4ba Mon Sep 17 00:00:00 2001 From: Madhur Gupta <30932899+madhurgupta10@users.noreply.github.com> Date: Sat, 10 Mar 2018 23:00:05 +0530 Subject: [PATCH 28/32] Add Forgot Password Option in LoginActivity (#1242) * Add Forgot Password Option in LoginActivity * Add Forgot Password Option in LoginActivity * Add Forgot Password Option in LoginActivity * Update URL for the "beta" flavor * Update forgotPassword function --- app/build.gradle | 2 ++ .../fr/free/nrw/commons/auth/LoginActivity.java | 13 ++++++++++++- app/src/main/res/layout-land/activity_login.xml | 13 ++++++++++++- .../main/res/layout-xlarge/activity_login.xml | 13 ++++++++++++- app/src/main/res/layout/activity_login.xml | 17 ++++++++++++++--- app/src/main/res/values/strings.xml | 3 ++- gradle/wrapper/gradle-wrapper.properties | 3 ++- 7 files changed, 56 insertions(+), 8 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 349a5f432..550019cc5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -154,6 +154,7 @@ android { buildConfigField "String", "EVENTLOG_WIKI", "\"commonswiki\"" buildConfigField "String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\"" buildConfigField "String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.org/w/index.php?title=Main_Page&welcome=yes\"" + buildConfigField "String", "FORGOT_PASSWORD_URL", "\"https://commons.wikimedia.org/wiki/Special:PasswordReset\"" dimension 'tier' } @@ -168,6 +169,7 @@ android { buildConfigField "String", "EVENTLOG_WIKI", "\"commonswiki\"" buildConfigField "String", "SIGNUP_LANDING_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Special:CreateAccount&returnto=Main+Page&returntoquery=welcome%3Dyes\"" buildConfigField "String", "SIGNUP_SUCCESS_REDIRECTION_URL", "\"https://commons.m.wikimedia.beta.wmflabs.org/w/index.php?title=Main_Page&welcome=yes\"" + buildConfigField "String", "FORGOT_PASSWORD_URL", "\"https://commons.wikimedia.beta.wmflabs.org/wiki/Special:PasswordReset\"" dimension 'tier' } } diff --git a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java index cbdff2e0b..8a41664a9 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java @@ -8,6 +8,7 @@ import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.content.SharedPreferences; +import android.net.Uri; import android.os.Bundle; import android.support.annotation.ColorRes; import android.support.annotation.NonNull; @@ -27,6 +28,7 @@ import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; +import android.widget.Toast; import java.io.IOException; @@ -44,6 +46,7 @@ import fr.free.nrw.commons.contributions.ContributionsActivity; import fr.free.nrw.commons.di.ApplicationlessInjection; import fr.free.nrw.commons.mwapi.MediaWikiApi; import fr.free.nrw.commons.theme.NavigationBaseActivity; +import fr.free.nrw.commons.ui.widget.HtmlTextView; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; @@ -73,7 +76,9 @@ public class LoginActivity extends AccountAuthenticatorActivity { @BindView(R.id.error_message_container) ViewGroup errorMessageContainer; @BindView(R.id.error_message) TextView errorMessage; @BindView(R.id.login_credentials) TextView loginCredentials; - @BindView(R.id.two_factor_container)TextInputLayout twoFactorContainer; + @BindView(R.id.two_factor_container) TextInputLayout twoFactorContainer; + @BindView(R.id.forgotPassword) HtmlTextView forgotPasswordText; + ProgressDialog progressDialog; private AppCompatDelegate delegate; private LoginTextWatcher textWatcher = new LoginTextWatcher(); @@ -114,6 +119,8 @@ public class LoginActivity extends AccountAuthenticatorActivity { loginButton.setOnClickListener(view -> performLogin()); signupButton.setOnClickListener(view -> signUp()); + forgotPasswordText.setOnClickListener(view -> forgotPassword()); + if(BuildConfig.FLAVOR == "beta"){ loginCredentials.setText(getString(R.string.login_credential)); } else { @@ -121,6 +128,10 @@ public class LoginActivity extends AccountAuthenticatorActivity { } } + private void forgotPassword() { + Utils.handleWebUrl(this, Uri.parse(BuildConfig.FORGOT_PASSWORD_URL)); + } + public void hideKeyboard(View view) { InputMethodManager inputMethodManager =(InputMethodManager)this.getSystemService(Activity.INPUT_METHOD_SERVICE); diff --git a/app/src/main/res/layout-land/activity_login.xml b/app/src/main/res/layout-land/activity_login.xml index 2914f9530..deb295438 100644 --- a/app/src/main/res/layout-land/activity_login.xml +++ b/app/src/main/res/layout-land/activity_login.xml @@ -187,12 +187,23 @@ + + + + + + + - diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3769d24bd..e7da11672 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,8 +5,9 @@ Settings Username Password - Log in to your Commons Beta account + Log in to your Commons Beta account Log in + Forgot Password? Sign up Logging in Please wait… diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f16d26666..c25f3eb11 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Sat Mar 03 13:58:47 IST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip From bdd7a86cd5bf9f53c0fec4e1b044934d226c6ab5 Mon Sep 17 00:00:00 2001 From: Madhur Gupta <30932899+madhurgupta10@users.noreply.github.com> Date: Sun, 11 Mar 2018 00:56:05 +0530 Subject: [PATCH 29/32] Revamp the Settings page (#1259) * Revamp the Settings page * Update License Test --- .../nrw/commons/SettingsActivityTest.java | 9 +- .../commons/settings/SettingsFragment.java | 4 +- app/src/main/res/values/strings.xml | 8 +- app/src/main/res/xml/preferences.xml | 105 ++++++++++-------- 4 files changed, 68 insertions(+), 58 deletions(-) diff --git a/app/src/androidTest/java/fr/free/nrw/commons/SettingsActivityTest.java b/app/src/androidTest/java/fr/free/nrw/commons/SettingsActivityTest.java index 5be309252..80caf0010 100644 --- a/app/src/androidTest/java/fr/free/nrw/commons/SettingsActivityTest.java +++ b/app/src/androidTest/java/fr/free/nrw/commons/SettingsActivityTest.java @@ -5,6 +5,7 @@ import android.preference.PreferenceManager; import android.support.test.espresso.Espresso; import android.support.test.espresso.action.ViewActions; import android.support.test.espresso.assertion.ViewAssertions; +import android.support.test.espresso.matcher.PreferenceMatchers; import android.support.test.espresso.matcher.ViewMatchers; import android.support.test.filters.LargeTest; import android.support.test.rule.ActivityTestRule; @@ -61,7 +62,7 @@ public class SettingsActivityTest { @Test public void oneLicenseIsChecked() { // click "License" (the first item) - Espresso.onData(Matchers.anything()) + Espresso.onData(PreferenceMatchers.withKey("defaultLicense")) .inAdapterView(ViewMatchers.withId(android.R.id.list)) .atPosition(0) .perform(ViewActions.click()); @@ -74,7 +75,7 @@ public class SettingsActivityTest { @Test public void afterClickingCcby4ItWillStay() { // click "License" (the first item) - Espresso.onData(Matchers.anything()) + Espresso.onData(PreferenceMatchers.withKey("defaultLicense")) .inAdapterView(ViewMatchers.withId(android.R.id.list)) .atPosition(0) .perform(ViewActions.click()); @@ -85,7 +86,7 @@ public class SettingsActivityTest { ).perform(ViewActions.click()); // click "License" (the first item) - Espresso.onData(Matchers.anything()) + Espresso.onData(PreferenceMatchers.withKey("defaultLicense")) .inAdapterView(ViewMatchers.withId(android.R.id.list)) .atPosition(0) .perform(ViewActions.click()); @@ -96,4 +97,4 @@ public class SettingsActivityTest { ViewMatchers.withText(R.string.license_name_cc_by_four) )); } -} \ No newline at end of file +} diff --git a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java index 66be88e3f..c7ee3df48 100644 --- a/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/settings/SettingsFragment.java @@ -10,7 +10,7 @@ import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.preference.CheckBoxPreference; +import android.preference.SwitchPreference; import android.preference.EditTextPreference; import android.preference.ListPreference; import android.preference.Preference; @@ -59,7 +59,7 @@ public class SettingsFragment extends PreferenceFragment { return true; }); - CheckBoxPreference themePreference = (CheckBoxPreference) findPreference("theme"); + SwitchPreference themePreference = (SwitchPreference) findPreference("theme"); themePreference.setOnPreferenceChangeListener((preference, newValue) -> { getActivity().recreate(); return true; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e7da11672..2aa47bcfd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,9 @@ + Appearance + General + Feedback + Location Commons Settings @@ -94,7 +98,7 @@ This image will be licensed under %1$s By submitting this picture, I declare that this is my own work, that it does not contain copyrighted material or selfies, and otherwise adheres to <a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">Wikimedia Commons policies</a>. Download - License + Default License Use previous title/description Automatically get current location Retrieve current location to offer category suggestions if image is not geotagged @@ -170,8 +174,6 @@ Become a Beta Tester Opt-in to our beta channel on Google Play and get early access to new features and bug fixes https://play.google.com/apps/testing/fr.free.nrw.commons - Use Wikidata - (Warning: disabling this may cause large mobile data consumption) mapbox://styles/mapbox/traffic-day-v2 mapbox://styles/mapbox/traffic-night-v2 pk.eyJ1IjoibWFza2FyYXZpdmVrIiwiYSI6ImNqMmxvdzFjMTAwMHYzM283ZWM3eW5tcDAifQ.ib5SZ9EVjwJe6GSKve0bcg diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index b7b63d39c..70ab2736f 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -1,61 +1,68 @@ + xmlns:android="http://schemas.android.com/apk/res/android"> - + - + - - - + - + - + - + - + - + + + + + + + + + + + + + + + + + \ No newline at end of file From 1a041e2a9b3a34be5c79adba07f022452f180f9f Mon Sep 17 00:00:00 2001 From: Ujjwal Agrawal Date: Sun, 11 Mar 2018 12:04:14 +0530 Subject: [PATCH 30/32] Updated login UI --- app/src/main/res/layout/activity_login.xml | 33 +++++++++++++--------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 4120c2924..18b4510e3 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -2,8 +2,12 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" + android:fillViewport="true" android:layout_height="match_parent"> - + - - + android:text="@string/forgot_password" /> @@ -236,4 +228,17 @@ tools:ignore="UnusedAttribute" /> + + + + From ede8c76d4593ae0381b568f4021f49d429135406 Mon Sep 17 00:00:00 2001 From: Ujjwal Agrawal Date: Sun, 11 Mar 2018 13:28:26 +0530 Subject: [PATCH 31/32] Faqs added in About Activity (#1256) * Faqs added in About Activity * Added CDATA in strings * removed cdata, added SpannableString --- .../main/java/fr/free/nrw/commons/AboutActivity.java | 12 +++++++++++- app/src/main/res/layout/activity_about.xml | 10 ++++++++++ app/src/main/res/values/strings.xml | 3 ++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/AboutActivity.java b/app/src/main/java/fr/free/nrw/commons/AboutActivity.java index bb7b1fc1e..97fe27aa4 100644 --- a/app/src/main/java/fr/free/nrw/commons/AboutActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/AboutActivity.java @@ -4,6 +4,8 @@ import android.annotation.SuppressLint; import android.content.Intent; import android.net.Uri; import android.os.Bundle; +import android.text.SpannableString; +import android.text.style.UnderlineSpan; import android.util.Log; import android.support.customtabs.CustomTabsIntent; import android.support.v4.content.ContextCompat; @@ -25,6 +27,7 @@ import static android.widget.Toast.LENGTH_SHORT; public class AboutActivity extends NavigationBaseActivity { @BindView(R.id.about_version) TextView versionText; @BindView(R.id.about_license) HtmlTextView aboutLicenseText; + @BindView(R.id.about_faq) TextView faqText; /** * This method helps in the creation About screen @@ -40,7 +43,9 @@ public class AboutActivity extends NavigationBaseActivity { ButterKnife.bind(this); String aboutText = getString(R.string.about_license); aboutLicenseText.setHtmlText(aboutText); - + SpannableString content = new SpannableString(getString(R.string.about_faq)); + content.setSpan(new UnderlineSpan(), 0, content.length(), 0); + faqText.setText(content); versionText.setText(BuildConfig.VERSION_NAME); initDrawer(); } @@ -113,4 +118,9 @@ public class AboutActivity extends NavigationBaseActivity { } } + @OnClick(R.id.about_faq) + public void launchFrequentlyAskedQuesions(View view) { + Utils.handleWebUrl(this,Uri.parse("https://github.com/commons-app/apps-android-commons/wiki/Frequently-Asked-Questions\\")); + } + } diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index 00c7fa5b8..f4a295d95 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -133,6 +133,16 @@ android:gravity="center" android:text="@string/about_credits" /> + + %1$s mentioned you on %2$s. Toggle view Rate Us - Skip Tutorial + Frequently Asked Questions + Skip Tutorial From 143231d404d61963a3303732d536fdaf1c899728 Mon Sep 17 00:00:00 2001 From: Ujjwal Agrawal Date: Sun, 11 Mar 2018 13:51:11 +0530 Subject: [PATCH 32/32] Shifted cardview to center in login page --- app/src/main/res/layout/activity_login.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 18b4510e3..5d1345bd3 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -11,6 +11,7 @@