diff --git a/commons/AndroidManifest.xml b/commons/AndroidManifest.xml index 612881600..82b930f24 100644 --- a/commons/AndroidManifest.xml +++ b/commons/AndroidManifest.xml @@ -73,6 +73,10 @@ + + + diff --git a/commons/res/values/strings.xml b/commons/res/values/strings.xml index 805e36e59..ba2d06fd4 100644 --- a/commons/res/values/strings.xml +++ b/commons/res/values/strings.xml @@ -72,4 +72,7 @@ No categories matching %1$s found Add categories to make your images more discoverable on Wikimedia Commons.\n\nStart typing to add categories.\nTap this message (or hit back) to skip this step. Categories + Usage reports + Send usage reports to Wikimedia to help us improve the app + Settings diff --git a/commons/src/main/java/org/wikimedia/commons/CommonsApplication.java b/commons/src/main/java/org/wikimedia/commons/CommonsApplication.java index b5f0bdd83..faa563601 100644 --- a/commons/src/main/java/org/wikimedia/commons/CommonsApplication.java +++ b/commons/src/main/java/org/wikimedia/commons/CommonsApplication.java @@ -100,9 +100,8 @@ public class CommonsApplication extends Application { throw new RuntimeException(e); } - // Enable / disable tracking based on user preference. Defaults to true - SharedPreferences settings = getSharedPreferences(Prefs.GLOBAL_PREFS, MODE_PRIVATE); - EventLog.enabled = settings.getBoolean(Prefs.TRACKING_ENABLED, EventLog.enabled); + // Initialize EventLogging + EventLog.setApp(this); } public MWApi getApi() { diff --git a/commons/src/main/java/org/wikimedia/commons/EventLog.java b/commons/src/main/java/org/wikimedia/commons/EventLog.java index 576b54993..dee4663c1 100644 --- a/commons/src/main/java/org/wikimedia/commons/EventLog.java +++ b/commons/src/main/java/org/wikimedia/commons/EventLog.java @@ -1,6 +1,9 @@ package org.wikimedia.commons; +import android.content.Context; +import android.content.SharedPreferences; import android.os.*; +import android.preference.PreferenceManager; import android.util.*; import in.yuvi.http.fluent.Http; import org.apache.http.HttpResponse; @@ -10,8 +13,7 @@ import java.net.*; public class EventLog { - // Set to false in CommonsApplication if the user has disabled tracking - public static boolean enabled = true; + private static CommonsApplication app; private static class LogTask extends AsyncTask { @@ -52,6 +54,10 @@ public class EventLog { } } + public static void setApp(CommonsApplication app) { + EventLog.app = app; + } + public static class LogBuilder { private JSONObject data; private long rev; @@ -91,7 +97,8 @@ public class EventLog { } public void log() { - if(!enabled) { + SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(app); + if(!settings.getBoolean(Prefs.TRACKING_ENABLED, true)) { return; // User has disabled tracking } LogTask logTask = new LogTask(); diff --git a/commons/src/main/java/org/wikimedia/commons/SettingsActivity.java b/commons/src/main/java/org/wikimedia/commons/SettingsActivity.java new file mode 100644 index 000000000..074811e43 --- /dev/null +++ b/commons/src/main/java/org/wikimedia/commons/SettingsActivity.java @@ -0,0 +1,13 @@ +package org.wikimedia.commons; + + +import android.os.Bundle; +import com.actionbarsherlock.app.SherlockPreferenceActivity; + +public class SettingsActivity extends SherlockPreferenceActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.preferences); + } +} diff --git a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java index bbba04c20..217dfa4a6 100644 --- a/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java +++ b/commons/src/main/java/org/wikimedia/commons/contributions/ContributionsListFragment.java @@ -217,6 +217,10 @@ public class ContributionsListFragment extends SherlockFragment { takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, lastGeneratedCaptureURI); startActivityForResult(takePictureIntent, SELECT_FROM_CAMERA); return true; + case R.id.menu_settings: + Intent settingsIntent = new Intent(getActivity(), SettingsActivity.class); + startActivity(settingsIntent); + return true; default: return super.onOptionsItemSelected(item); }