From 7bca88bf39013d31a086ba92fe929b076fc68607 Mon Sep 17 00:00:00 2001 From: maskara Date: Sun, 5 Mar 2017 05:36:35 +0530 Subject: [PATCH] Fixes #323: Provide explicit selection of licenses when uploading image --- .../commons/upload/SingleUploadFragment.java | 63 +++++++++++++++++-- .../res/layout/fragment_single_upload.xml | 7 +++ 2 files changed, 65 insertions(+), 5 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 3bfd34280..4b7cb24ee 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 @@ -6,6 +6,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import android.os.Bundle; +import android.preference.ListPreference; import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.text.Editable; @@ -19,10 +20,16 @@ import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; +import android.widget.Spinner; import android.widget.TextView; +import java.util.ArrayList; +import java.util.List; + import fr.free.nrw.commons.Prefs; import fr.free.nrw.commons.R; import fr.free.nrw.commons.Utils; @@ -36,6 +43,7 @@ public class SingleUploadFragment extends Fragment { private EditText titleEdit; private EditText descEdit; private TextView licenseSummaryView; + private Spinner licenseSpinner; private OnUploadActionInitiated uploadActionInitiatedHandler; @@ -79,6 +87,51 @@ public class SingleUploadFragment extends Fragment { 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); + + ArrayList licenseItems = new ArrayList<>(); + licenseItems.add(getString(R.string.license_name_cc0)); + licenseItems.add(getString(R.string.license_name_cc_by)); + licenseItems.add(getString(R.string.license_name_cc_by_sa)); + + final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); + final String license = prefs.getString(Prefs.DEFAULT_LICENSE, Prefs.Licenses.CC_BY_SA); + + Log.d("Single Upload fragment", license); + + ArrayAdapter adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_spinner_dropdown_item, licenseItems); + licenseSpinner.setAdapter(adapter); + + int position = licenseItems.indexOf(getString(Utils.licenseNameFor(license))); + 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) { + String licenseName = parent.getItemAtPosition(position).toString(); + + String license = Prefs.Licenses.CC_BY_SA; // 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; + } else if(getString(R.string.license_name_cc_by_sa).equals(licenseName)) { + license = Prefs.Licenses.CC_BY_SA; + } + + setLicenseSummary(license); + SharedPreferences.Editor editor = prefs.edit(); + editor.putString(Prefs.DEFAULT_LICENSE, license); + editor.commit(); + } + + @Override + public void onNothingSelected(AdapterView parent) { + + } + }); titleDescButton.setOnClickListener(new View.OnClickListener() { @@ -96,8 +149,6 @@ public class SingleUploadFragment extends Fragment { } }); - licenseSummaryView = (TextView)rootView.findViewById(R.id.share_license_summary); - TextWatcher uploadEnabler = new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { } @@ -115,9 +166,7 @@ public class SingleUploadFragment extends Fragment { titleEdit.addTextChangedListener(uploadEnabler); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); - final String license = prefs.getString(Prefs.DEFAULT_LICENSE, Prefs.Licenses.CC_BY_SA); - licenseSummaryView.setText(getString(R.string.share_license_summary, getString(Utils.licenseNameFor(license)))); + setLicenseSummary(license); // Open license page on touch licenseSummaryView.setOnTouchListener(new View.OnTouchListener() { @@ -138,6 +187,10 @@ public class SingleUploadFragment extends Fragment { return rootView; } + private void setLicenseSummary(String license) { + licenseSummaryView.setText(getString(R.string.share_license_summary, getString(Utils.licenseNameFor(license)))); + } + @Override public void onAttach(Activity activity) { super.onAttach(activity); diff --git a/app/src/main/res/layout/fragment_single_upload.xml b/app/src/main/res/layout/fragment_single_upload.xml index 09aa1c2d0..6fc61bca0 100644 --- a/app/src/main/res/layout/fragment_single_upload.xml +++ b/app/src/main/res/layout/fragment_single_upload.xml @@ -32,6 +32,13 @@ android:imeOptions="flagNoExtractUi" /> + + +