From b081e1206fd24d7622c9ad473a4a9583de5f3f6c Mon Sep 17 00:00:00 2001 From: misaochan Date: Mon, 20 Mar 2017 18:44:36 +1000 Subject: [PATCH 1/8] Revert commit --- .../commons/auth/AuthenticatedActivity.java | 37 +++++-------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java index 83c68d6df..6dc138a0f 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/AuthenticatedActivity.java @@ -1,16 +1,12 @@ package fr.free.nrw.commons.auth; -import android.Manifest; import android.accounts.Account; import android.accounts.AccountManager; import android.accounts.AccountManagerFuture; import android.accounts.AuthenticatorException; import android.accounts.OperationCanceledException; -import android.content.pm.PackageManager; import android.os.AsyncTask; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v4.app.ActivityCompat; import java.io.IOException; @@ -24,24 +20,23 @@ public abstract class AuthenticatedActivity extends BaseAppCompatActivity { CommonsApplication app; private String authCookie; - + public AuthenticatedActivity(String accountType) { - this.accountType = accountType; + this.accountType = accountType; } - + private class GetAuthCookieTask extends AsyncTask { private Account account; private AccountManager accountManager; - public GetAuthCookieTask(Account account, AccountManager accountManager) { this.account = account; this.accountManager = accountManager; } - + @Override protected void onPostExecute(String result) { super.onPostExecute(result); - if (result != null) { + if(result != null) { authCookie = result; onAuthCookieAcquired(result); } else { @@ -65,19 +60,19 @@ public abstract class AuthenticatedActivity extends BaseAppCompatActivity { } } } - + private class AddAccountTask extends AsyncTask { private AccountManager accountManager; - public AddAccountTask(AccountManager accountManager) { this.accountManager = accountManager; } - + @Override protected void onPostExecute(String result) { super.onPostExecute(result); - if (result != null) { - Account curAccount = getCurrentAccount(); + if(result != null) { + Account[] allAccounts =accountManager.getAccountsByType(accountType); + Account curAccount = allAccounts[0]; GetAuthCookieTask getCookieTask = new GetAuthCookieTask(curAccount, accountManager); getCookieTask.execute(); } else { @@ -85,18 +80,6 @@ public abstract class AuthenticatedActivity extends BaseAppCompatActivity { } } - @Nullable - private Account getCurrentAccount() { - if (ActivityCompat.checkSelfPermission(AuthenticatedActivity.this, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) { - return null; - } - Account[] allAccounts = accountManager.getAccountsByType(accountType); - if (allAccounts == null) { - return null; - } - return allAccounts[0]; - } - @Override protected String doInBackground(Void... params) { AccountManagerFuture resultFuture = accountManager.addAccount(accountType, null, null, null, AuthenticatedActivity.this, null, null); From 8617347927968f0c5eaa32a7c1794eea96be2324 Mon Sep 17 00:00:00 2001 From: misaochan Date: Mon, 20 Mar 2017 19:03:31 +1000 Subject: [PATCH 2/8] Add check for null dialog --- .../main/java/fr/free/nrw/commons/auth/LoginActivity.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 9b76fb627..3fdf419e0 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 @@ -69,7 +69,10 @@ public class LoginActivity extends AccountAuthenticatorActivity { .log(); if (result.equals("Success")) { - dialog.dismiss(); + //dialog.dismiss(); + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } Toast successToast = Toast.makeText(context, R.string.login_success, Toast.LENGTH_SHORT); successToast.show(); Account account = new Account(username, WikiAccountAuthenticator.COMMONS_ACCOUNT_TYPE); From d7f7a07485eaa0cb317c11c06eaaa32b9ebc5494 Mon Sep 17 00:00:00 2001 From: misaochan Date: Mon, 20 Mar 2017 19:04:20 +1000 Subject: [PATCH 3/8] Remove comment --- app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java | 1 - 1 file changed, 1 deletion(-) 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 3fdf419e0..3acc349f3 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 @@ -69,7 +69,6 @@ public class LoginActivity extends AccountAuthenticatorActivity { .log(); if (result.equals("Success")) { - //dialog.dismiss(); if (dialog != null && dialog.isShowing()) { dialog.dismiss(); } From b076ba809072c0912fdfb42a0065d1391be2c8d5 Mon Sep 17 00:00:00 2001 From: veyndan Date: Mon, 20 Mar 2017 13:11:59 +0000 Subject: [PATCH 4/8] Make description text white --- app/src/main/res/layout-land/welcome_do_upload.xml | 4 +++- app/src/main/res/layout-land/welcome_dont_upload.xml | 4 +++- app/src/main/res/layout-land/welcome_image_details.xml | 4 +++- app/src/main/res/layout-land/welcome_wikipedia.xml | 4 +++- app/src/main/res/layout/welcome_do_upload.xml | 1 + app/src/main/res/layout/welcome_dont_upload.xml | 1 + app/src/main/res/layout/welcome_image_details.xml | 1 + app/src/main/res/layout/welcome_wikipedia.xml | 1 + 8 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/layout-land/welcome_do_upload.xml b/app/src/main/res/layout-land/welcome_do_upload.xml index 3aab6ca70..17db68f8f 100644 --- a/app/src/main/res/layout-land/welcome_do_upload.xml +++ b/app/src/main/res/layout-land/welcome_do_upload.xml @@ -78,6 +78,8 @@ android:layout_gravity="center" android:textAlignment="textStart" android:paddingTop="16dp" - android:gravity="start"/> + android:gravity="start" + android:textColor="@android:color/white" + /> diff --git a/app/src/main/res/layout-land/welcome_dont_upload.xml b/app/src/main/res/layout-land/welcome_dont_upload.xml index bef612905..df7fa1e40 100644 --- a/app/src/main/res/layout-land/welcome_dont_upload.xml +++ b/app/src/main/res/layout-land/welcome_dont_upload.xml @@ -60,6 +60,8 @@ android:layout_gravity="center" android:textAlignment="textStart" android:paddingTop="16dp" - android:gravity="start"/> + android:gravity="start" + android:textColor="@android:color/white" + /> diff --git a/app/src/main/res/layout-land/welcome_image_details.xml b/app/src/main/res/layout-land/welcome_image_details.xml index bbd0b0392..b5dbe0824 100644 --- a/app/src/main/res/layout-land/welcome_image_details.xml +++ b/app/src/main/res/layout-land/welcome_image_details.xml @@ -45,6 +45,8 @@ android:layout_gravity="center" android:textAlignment="textStart" android:paddingTop="16dp" - android:gravity="start"/> + android:gravity="start" + android:textColor="@android:color/white" + /> diff --git a/app/src/main/res/layout-land/welcome_wikipedia.xml b/app/src/main/res/layout-land/welcome_wikipedia.xml index 3b52dfd3a..d7c77669d 100644 --- a/app/src/main/res/layout-land/welcome_wikipedia.xml +++ b/app/src/main/res/layout-land/welcome_wikipedia.xml @@ -40,6 +40,8 @@ android:layout_gravity="center" android:textAlignment="center" android:paddingTop="16dp" - android:gravity="center_horizontal"/> + android:gravity="center_horizontal" + android:textColor="@android:color/white" + /> diff --git a/app/src/main/res/layout/welcome_do_upload.xml b/app/src/main/res/layout/welcome_do_upload.xml index d983e5684..74d62ec8a 100644 --- a/app/src/main/res/layout/welcome_do_upload.xml +++ b/app/src/main/res/layout/welcome_do_upload.xml @@ -74,5 +74,6 @@ android:textAlignment="textStart" android:paddingTop="16dp" android:gravity="start" + android:textColor="@android:color/white" /> \ 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 c2591943d..516b21c90 100644 --- a/app/src/main/res/layout/welcome_dont_upload.xml +++ b/app/src/main/res/layout/welcome_dont_upload.xml @@ -53,5 +53,6 @@ android:textAlignment="textStart" android:paddingTop="16dp" android:gravity="start" + android:textColor="@android:color/white" /> \ 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 3653733dd..4fed858ea 100644 --- a/app/src/main/res/layout/welcome_image_details.xml +++ b/app/src/main/res/layout/welcome_image_details.xml @@ -39,5 +39,6 @@ android:textAlignment="textStart" android:paddingTop="16dp" android:gravity="start" + android:textColor="@android:color/white" /> \ 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 e6490d2b5..ad48eb8d9 100644 --- a/app/src/main/res/layout/welcome_wikipedia.xml +++ b/app/src/main/res/layout/welcome_wikipedia.xml @@ -37,5 +37,6 @@ android:textAlignment="center" android:paddingTop="16dp" android:gravity="center_horizontal" + android:textColor="@android:color/white" /> \ No newline at end of file From 5ecc48fe7056a2d4fbef5906403fbfac2e0e5c0d Mon Sep 17 00:00:00 2001 From: Neslihan Date: Mon, 20 Mar 2017 16:46:20 +0300 Subject: [PATCH 5/8] Fix new theme issue (number 3) --- app/src/main/java/fr/free/nrw/commons/SettingsActivity.java | 2 +- app/src/main/java/fr/free/nrw/commons/theme/BaseActivity.java | 4 ++-- .../java/fr/free/nrw/commons/theme/BaseAppCompatActivity.java | 4 ++-- app/src/main/res/xml/preferences.xml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/SettingsActivity.java b/app/src/main/java/fr/free/nrw/commons/SettingsActivity.java index 00c660aa0..b279175e5 100644 --- a/app/src/main/java/fr/free/nrw/commons/SettingsActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/SettingsActivity.java @@ -24,7 +24,7 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer getDelegate().installViewFactory(); getDelegate().onCreate(savedInstanceState); // Check prefs on every activity starts - if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean("theme",false)) { + if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean("theme",true)) { setTheme(R.style.DarkAppTheme); }else { setTheme(R.style.LightAppTheme); // default diff --git a/app/src/main/java/fr/free/nrw/commons/theme/BaseActivity.java b/app/src/main/java/fr/free/nrw/commons/theme/BaseActivity.java index c93332bfe..e0e61cbc1 100644 --- a/app/src/main/java/fr/free/nrw/commons/theme/BaseActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/theme/BaseActivity.java @@ -13,7 +13,7 @@ public class BaseActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { - if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean("theme",false)) { + if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean("theme",true)) { currentTheme = true; setTheme(R.style.DarkAppTheme); }else { @@ -26,7 +26,7 @@ public class BaseActivity extends Activity { @Override protected void onResume() { // Restart activity if theme is changed - boolean newTheme = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("theme",false); + boolean newTheme = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("theme",true); if(currentTheme!=newTheme){ // is activity theme changed Intent intent = getIntent(); finish(); diff --git a/app/src/main/java/fr/free/nrw/commons/theme/BaseAppCompatActivity.java b/app/src/main/java/fr/free/nrw/commons/theme/BaseAppCompatActivity.java index 606d30347..bd25e6296 100644 --- a/app/src/main/java/fr/free/nrw/commons/theme/BaseAppCompatActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/theme/BaseAppCompatActivity.java @@ -12,7 +12,7 @@ public class BaseAppCompatActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { - if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean("theme",false)) { + if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean("theme",true)) { currentTheme = true; setTheme(R.style.DarkAppTheme); }else { @@ -25,7 +25,7 @@ public class BaseAppCompatActivity extends AppCompatActivity { @Override protected void onResume() { // Restart activity if theme is changed - boolean newTheme = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("theme",false); + boolean newTheme = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("theme",true); if(currentTheme!=newTheme){ //is activity theme changed Intent intent = getIntent(); finish(); diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index b7d8e6974..ddb4c93d6 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -21,7 +21,7 @@ From 9be987cd4c66a56564d1018aab29ad4396f020f4 Mon Sep 17 00:00:00 2001 From: misaochan Date: Tue, 21 Mar 2017 00:54:42 +1000 Subject: [PATCH 6/8] Check for leaky window --- .../fr/free/nrw/commons/auth/LoginActivity.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) 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 3acc349f3..c66c82910 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 @@ -50,11 +50,11 @@ public class LoginActivity extends AccountAuthenticatorActivity { Button signupButton; EditText usernameEdit; EditText passwordEdit; + ProgressDialog dialog; private class LoginTask extends AsyncTask { Activity context; - ProgressDialog dialog; String username; String password; @@ -221,6 +221,20 @@ public class LoginActivity extends AccountAuthenticatorActivity { } } + + @Override + protected void onDestroy() { + try { + // To prevent leaked window when finish() is called, see http://stackoverflow.com/questions/32065854/activity-has-leaked-window-at-alertdialog-show-method + if (dialog != null && dialog.isShowing()) { + dialog.dismiss(); + } + } catch (Exception e) { + e.printStackTrace(); + } + super.onDestroy(); + } + private void performLogin() { String username = usernameEdit.getText().toString(); // Because Mediawiki is upercase-first-char-then-case-sensitive :) From da35bf7831f98ea22d63f6ac74d72f4e23a3bd6a Mon Sep 17 00:00:00 2001 From: Neslihan Date: Mon, 20 Mar 2017 18:59:05 +0300 Subject: [PATCH 7/8] Cahnge gallery icon color if it is on overlay menu --- .../ContributionsListFragment.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java index 91ba8d4dc..18df10801 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java @@ -6,11 +6,16 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; +import android.content.res.Resources; +import android.content.res.TypedArray; import android.os.Build; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.content.ContextCompat; +import android.util.DisplayMetrics; import android.util.Log; +import android.util.TypedValue; +import android.view.Display; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -32,6 +37,7 @@ import fr.free.nrw.commons.SettingsActivity; import fr.free.nrw.commons.nearby.NearbyActivity; import static android.app.Activity.RESULT_OK; +import static android.content.Context.LOCATION_SERVICE; public class ContributionsListFragment extends Fragment { @@ -229,6 +235,28 @@ public class ContributionsListFragment extends Fragment { throw new RuntimeException(e); } } + + MenuItem galleryMenu = menu.findItem(R.id.menu_from_gallery); + + // Get background resource id to recognize current themes + TypedArray typedArray = getActivity().getTheme().obtainStyledAttributes(new int[] {R.attr.mainBackground}); + int galleryIconResourceId = typedArray.getResourceId(0, 0); + typedArray.recycle(); + + // Get width in dp http://stackoverflow.com/questions/11999260/check-if-menuitem-is-in-actionbar-overflow + DisplayMetrics metrics = new DisplayMetrics(); + Display display = getActivity().getWindowManager().getDefaultDisplay(); + display.getMetrics(metrics); + float logicalDensity = metrics.density; + int dp = (int) (metrics.widthPixels / logicalDensity + 0.5); + + if(dp < 360) { // only two icons, there is no room + if(galleryIconResourceId==getActivity().obtainStyledAttributes(R.style.LightAppTheme, new int[] {R.attr.mainBackground}).getResourceId(0, 0)){ + galleryMenu.setIcon(R.drawable.ic_photo_black_24dp); //If theme is light, display dark icon on overlay menu + }else{ + galleryMenu.setIcon(R.drawable.ic_photo_white_24dp); //If theme is dark, display light icon on overlay menu + } + } } super.onPrepareOptionsMenu(menu); } From 060750b05069a1689b6f8ac80e8be372c879e82c Mon Sep 17 00:00:00 2001 From: maskara Date: Thu, 9 Mar 2017 00:23:19 +0530 Subject: [PATCH 8/8] Added support for butterknife library for view bindings --- app/build.gradle | 2 + .../fr/free/nrw/commons/AboutActivity.java | 20 ++- .../ContributionsListFragment.java | 14 +- .../commons/upload/SingleUploadFragment.java | 141 ++++++++---------- gradle.properties | 4 + script/style/checkstyle.xml | 28 ++++ 6 files changed, 109 insertions(+), 100 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 20e337c69..92183ceef 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,6 +16,8 @@ dependencies { compile "com.android.support:appcompat-v7:${project.supportLibVersion}" compile "com.android.support:design:${project.supportLibVersion}" compile 'com.google.code.gson:gson:2.7' + compile "com.jakewharton:butterknife:$BUTTERKNIFE_VERSION" + annotationProcessor "com.jakewharton:butterknife-compiler:$BUTTERKNIFE_VERSION" testCompile 'junit:junit:4.12' } 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 7e6351ee0..81d0b3efb 100644 --- a/app/src/main/java/fr/free/nrw/commons/AboutActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/AboutActivity.java @@ -7,23 +7,21 @@ import android.widget.TextView; import fr.free.nrw.commons.theme.BaseActivity; +import butterknife.BindView; +import butterknife.ButterKnife; + public class AboutActivity extends BaseActivity { - private TextView versionText; - private TextView licenseText; - private TextView improveText; - private TextView privacyPolicyText; - private TextView uploadsToText; + @BindView(R.id.about_version) TextView versionText; + @BindView(R.id.about_license) TextView licenseText; + @BindView(R.id.about_improve) TextView improveText; + @BindView(R.id.about_privacy_policy) TextView privacyPolicyText; + @BindView(R.id.about_uploads_to) TextView uploadsToText; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); - - versionText = (TextView) findViewById(R.id.about_version); - licenseText = (TextView) findViewById(R.id.about_license); - improveText = (TextView) findViewById(R.id.about_improve); - privacyPolicyText = (TextView) findViewById(R.id.about_privacy_policy); - uploadsToText = (TextView) findViewById(R.id.about_uploads_to); + ButterKnife.bind(this); uploadsToText.setText(CommonsApplication.EVENTLOG_WIKI); versionText.setText(CommonsApplication.APPLICATION_VERSION); diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java index 91ba8d4dc..0cf911e35 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java @@ -25,6 +25,8 @@ import android.widget.Toast; import java.lang.reflect.Method; +import butterknife.BindView; +import butterknife.ButterKnife; import fr.free.nrw.commons.AboutActivity; import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.R; @@ -39,9 +41,9 @@ public class ContributionsListFragment extends Fragment { void refreshSource(); } - private GridView contributionsList; - private TextView waitingMessage; - private TextView emptyMessage; + @BindView(R.id.contributionsList) GridView contributionsList; + @BindView(R.id.waitingMessage) TextView waitingMessage; + @BindView(R.id.emptyMessage) TextView emptyMessage; private ContributionController controller; private static final String TAG = "ContributionsList"; @@ -49,11 +51,7 @@ public class ContributionsListFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_contributions, container, false); - - - contributionsList = (GridView) v.findViewById(R.id.contributionsList); - waitingMessage = (TextView) v.findViewById(R.id.waitingMessage); - emptyMessage = (TextView) v.findViewById(R.id.emptyMessage); + ButterKnife.bind(this, v); contributionsList.setOnItemClickListener((AdapterView.OnItemClickListener)getActivity()); if(savedInstanceState != null) { 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 e03cf07db..f05c3e915 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 @@ -29,20 +29,28 @@ import android.widget.TextView; import java.util.ArrayList; +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; +import butterknife.OnItemSelected; +import butterknife.OnTouch; import fr.free.nrw.commons.Prefs; import fr.free.nrw.commons.R; import fr.free.nrw.commons.Utils; public class SingleUploadFragment extends Fragment { + private SharedPreferences prefs; + private String license; public interface OnUploadActionInitiated { void uploadActionInitiated(String title, String description); } - private EditText titleEdit; - private EditText descEdit; - private TextView licenseSummaryView; - private Spinner licenseSpinner; + @BindView(R.id.titleEdit) EditText titleEdit; + @BindView(R.id.descEdit) EditText descEdit; + @BindView(R.id.titleDescButton) Button titleDescButton; + @BindView(R.id.share_license_summary) TextView licenseSummaryView; + @BindView(R.id.licenseSpinner) Spinner licenseSpinner; private OnUploadActionInitiated uploadActionInitiatedHandler; @@ -82,12 +90,7 @@ public class SingleUploadFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_single_upload, null); - - titleEdit = (EditText)rootView.findViewById(R.id.titleEdit); - descEdit = (EditText)rootView.findViewById(R.id.descEdit); - Button titleDescButton = (Button) rootView.findViewById(R.id.titleDescButton); - licenseSpinner = (Spinner) rootView.findViewById(R.id.licenseSpinner); - licenseSummaryView = (TextView)rootView.findViewById(R.id.share_license_summary); + ButterKnife.bind(this, rootView); ArrayList licenseItems = new ArrayList<>(); licenseItems.add(getString(R.string.license_name_cc0)); @@ -96,8 +99,8 @@ public class SingleUploadFragment extends Fragment { licenseItems.add(getString(R.string.license_name_cc_by_four)); licenseItems.add(getString(R.string.license_name_cc_by_sa_four)); - final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); - final String license = prefs.getString(Prefs.DEFAULT_LICENSE, Prefs.Licenses.CC_BY_SA_3); + prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); + license = prefs.getString(Prefs.DEFAULT_LICENSE, Prefs.Licenses.CC_BY_SA_3); Log.d("Single Upload fragment", license); @@ -108,59 +111,6 @@ public class SingleUploadFragment extends Fragment { Log.d("Single Upload fragment", "Position:"+position+" "+getString(Utils.licenseNameFor(license))); licenseSpinner.setSelection(position); - licenseSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - - //Set selected color to white because it should be readable on random images. - TextView selectedText = (TextView) licenseSpinner.getChildAt(0); - if (selectedText != null ) { - selectedText.setTextColor(Color.WHITE); - } - - String licenseName = parent.getItemAtPosition(position).toString(); - - String license = Prefs.Licenses.CC_BY_SA_3; // default value - if(getString(R.string.license_name_cc0).equals(licenseName)) { - license = Prefs.Licenses.CC0; - } else if(getString(R.string.license_name_cc_by).equals(licenseName)) { - license = Prefs.Licenses.CC_BY_3; - } else if(getString(R.string.license_name_cc_by_sa).equals(licenseName)) { - license = Prefs.Licenses.CC_BY_SA_3; - } else if(getString(R.string.license_name_cc_by_four).equals(licenseName)) { - license = Prefs.Licenses.CC_BY_4; - } else if(getString(R.string.license_name_cc_by_sa_four).equals(licenseName)) { - license = Prefs.Licenses.CC_BY_SA_4; - } - - setLicenseSummary(license); - SharedPreferences.Editor editor = prefs.edit(); - editor.putString(Prefs.DEFAULT_LICENSE, license); - editor.apply(); - } - - @Override - public void onNothingSelected(AdapterView parent) { - - } - }); - - titleDescButton.setOnClickListener(new View.OnClickListener() - { - @Override - public void onClick(View v) - { - //Retrieve last title and desc entered - SharedPreferences titleDesc = PreferenceManager.getDefaultSharedPreferences(getActivity()); - String title = titleDesc.getString("Title", ""); - String desc = titleDesc.getString("Desc", ""); - Log.d(TAG, "Title: " + title + ", Desc: " + desc); - - titleEdit.setText(title); - descEdit.setText(desc); - } - }); - TextWatcher uploadEnabler = new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { } @@ -180,25 +130,54 @@ public class SingleUploadFragment extends Fragment { setLicenseSummary(license); - // Open license page on touch - licenseSummaryView.setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View view, MotionEvent motionEvent) { - if (motionEvent.getActionMasked() == MotionEvent.ACTION_DOWN) { - Intent intent = new Intent(); - intent.setAction(Intent.ACTION_VIEW); - intent.setData(Uri.parse(Utils.licenseUrlFor(license))); - startActivity(intent); - return true; - } else { - return false; - } - } - }); - return rootView; } + @OnItemSelected(R.id.licenseSpinner) void onLicenseSelected(AdapterView parent, View view, int position, long id) { + String licenseName = parent.getItemAtPosition(position).toString(); + + String license = Prefs.Licenses.CC_BY_SA_3; // default value + if(getString(R.string.license_name_cc0).equals(licenseName)) { + license = Prefs.Licenses.CC0; + } else if(getString(R.string.license_name_cc_by).equals(licenseName)) { + license = Prefs.Licenses.CC_BY_3; + } else if(getString(R.string.license_name_cc_by_sa).equals(licenseName)) { + license = Prefs.Licenses.CC_BY_SA_3; + } else if(getString(R.string.license_name_cc_by_four).equals(licenseName)) { + license = Prefs.Licenses.CC_BY_4; + } else if(getString(R.string.license_name_cc_by_sa_four).equals(licenseName)) { + license = Prefs.Licenses.CC_BY_SA_4; + } + + setLicenseSummary(license); + SharedPreferences.Editor editor = prefs.edit(); + editor.putString(Prefs.DEFAULT_LICENSE, license); + editor.commit(); + } + + @OnTouch(R.id.share_license_summary) boolean showLicence(View view, MotionEvent motionEvent) { + if (motionEvent.getActionMasked() == MotionEvent.ACTION_DOWN) { + Intent intent = new Intent(); + intent.setAction(Intent.ACTION_VIEW); + intent.setData(Uri.parse(Utils.licenseUrlFor(license))); + startActivity(intent); + return true; + } else { + return false; + } + } + + @OnClick(R.id.titleDescButton) void setTitleDescButton() { + //Retrieve last title and desc entered + SharedPreferences titleDesc = PreferenceManager.getDefaultSharedPreferences(getActivity()); + String title = titleDesc.getString("Title", ""); + String desc = titleDesc.getString("Desc", ""); + Log.d(TAG, "Title: " + title + ", Desc: " + desc); + + titleEdit.setText(title); + descEdit.setText(desc); + } + private void setLicenseSummary(String license) { licenseSummaryView.setText(getString(R.string.share_license_summary, getString(Utils.licenseNameFor(license)))); } diff --git a/gradle.properties b/gradle.properties index 8fc61a30f..3e851c675 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,3 +7,7 @@ buildToolsVersion = 25.0.1 minSdkVersion = 15 targetSdkVersion = 25 +android.useDeprecatedNdk=true + +# Library dependencies +BUTTERKNIFE_VERSION=8.4.0 diff --git a/script/style/checkstyle.xml b/script/style/checkstyle.xml index baebde870..339d9131f 100644 --- a/script/style/checkstyle.xml +++ b/script/style/checkstyle.xml @@ -77,6 +77,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +