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 933d39bbd..4f8dd8745 100644
--- a/app/src/main/java/fr/free/nrw/commons/SettingsActivity.java
+++ b/app/src/main/java/fr/free/nrw/commons/SettingsActivity.java
@@ -1,5 +1,6 @@
package fr.free.nrw.commons;
+import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.os.Bundle;
@@ -21,6 +22,13 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer
protected void onCreate(Bundle savedInstanceState) {
getDelegate().installViewFactory();
getDelegate().onCreate(savedInstanceState);
+ //Check prefs on every activity starts
+ if (getSharedPreferences("prefs", Context.MODE_PRIVATE).getBoolean("theme", false)) {
+ setTheme(R.style.LightAppTheme);
+ }else {
+ setTheme(R.style.DarkAppTheme); //default
+ }
+ super.onCreate(savedInstanceState);
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
ListPreference licensePreference = (ListPreference) findPreference(Prefs.DEFAULT_LICENSE);
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 cc0df0e2d..ed6d2c0a7 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
@@ -10,6 +10,7 @@ import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
+import android.support.v4.content.IntentCompat;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -23,6 +24,8 @@ import android.widget.ListAdapter;
import android.widget.TextView;
import android.widget.Toast;
+import java.lang.reflect.Method;
+
import fr.free.nrw.commons.AboutActivity;
import fr.free.nrw.commons.CommonsApplication;
import fr.free.nrw.commons.R;
@@ -163,6 +166,27 @@ public class ContributionsListFragment extends Fragment {
startActivity(nearbyIntent);
return true;
}
+ case R.id.menu_theme_toggle:
+ final SharedPreferences prefs = getActivity().getSharedPreferences("prefs", Context.MODE_PRIVATE);
+ prefs.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener() {
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
+ if(s.equals("theme")){
+ //http://stackoverflow.com/questions/5659742/onsharedpreferencechanged-called-multiple-times-why
+ prefs.unregisterOnSharedPreferenceChangeListener(this);
+ //Finish current activity and tart new one with selected theme
+ Intent intent = getActivity().getIntent();
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);
+ getActivity().finish();
+ startActivity(intent);
+ }
+ }
+ });
+ SharedPreferences.Editor editor = prefs.edit();
+ //put inverse of selected boolean
+ editor.putBoolean("theme", !prefs.getBoolean("theme", false));
+ editor.commit();
+ return true;
case R.id.menu_refresh:
((SourceRefresher)getActivity()).refreshSource();
return true;
@@ -207,6 +231,31 @@ public class ContributionsListFragment extends Fragment {
menu.findItem(R.id.menu_refresh).setVisible(false);
}
+ /*http://stackoverflow.com/questions/30076392/how-does-this-strange-condition-happens-when-show-menu-item-icon-in-toolbar-over/30337653#30337653
+ Overriden to show toggle_layout button on overlay menu
+ */
+ @Override
+ public void onPrepareOptionsMenu(Menu menu) {
+ if(menu != null){
+ if(menu.getClass().getSimpleName().equals("MenuBuilder")){
+ try{
+ Method m = menu.getClass().getDeclaredMethod(
+ "setOptionalIconsVisible", Boolean.TYPE);
+ m.setAccessible(true);
+ m.invoke(menu, true);
+ }
+ catch(NoSuchMethodException e){
+ Log.e(TAG, "onMenuOpened", e);
+ }
+ catch(Exception e){
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ super.onPrepareOptionsMenu(menu);
+ }
+
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
diff --git a/app/src/main/res/drawable/toggle.png b/app/src/main/res/drawable/toggle.png
new file mode 100644
index 000000000..4871bf0b4
Binary files /dev/null and b/app/src/main/res/drawable/toggle.png differ
diff --git a/app/src/main/res/drawable/toggle_inverse.png b/app/src/main/res/drawable/toggle_inverse.png
new file mode 100644
index 000000000..c08d7fc93
Binary files /dev/null and b/app/src/main/res/drawable/toggle_inverse.png differ
diff --git a/app/src/main/res/drawable/toggle_selector.xml b/app/src/main/res/drawable/toggle_selector.xml
new file mode 100644
index 000000000..778560709
--- /dev/null
+++ b/app/src/main/res/drawable/toggle_selector.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_share.xml b/app/src/main/res/layout/activity_share.xml
index e1e58d8dd..3eecb6ec1 100644
--- a/app/src/main/res/layout/activity_share.xml
+++ b/app/src/main/res/layout/activity_share.xml
@@ -1,7 +1,7 @@
@@ -66,7 +66,7 @@
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="#20ffffff"
+ android:background="?attr/subBackground"
android:padding="16dp"
>
@@ -100,7 +100,7 @@
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="#20ffffff"
+ android:background="?attr/subBackground"
android:padding="16dp"
>
diff --git a/app/src/main/res/menu/fragment_contributions_list.xml b/app/src/main/res/menu/fragment_contributions_list.xml
index 06c39006c..20a08cedc 100644
--- a/app/src/main/res/menu/fragment_contributions_list.xml
+++ b/app/src/main/res/menu/fragment_contributions_list.xml
@@ -28,6 +28,11 @@
android:title="@string/menu_nearby"
app:showAsAction="never"
/>
+
-
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 824528460..7c8fad193 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,6 +1,23 @@
-
+
#90000000
+ #ffffffff
+ #000000
+ #bdbdbd
+ #33FFFFFF
+ #33FFFFFF
+ #0c609c
+ #0c609c
+ #20ffffff
+ #20ffffff
+ #AA000000
+ #44ffffff
+ #90000000
+ #60000000
+ #77000000
+ #44000000
-
\ 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 88317229e..3d620bcc2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -33,6 +33,7 @@
Take photo
Nearby
My uploads
+ Night mode
Share
View in Browser
Title
@@ -90,6 +91,8 @@ Tap this message (or hit back) to skip this step.
Use previous title/description
Automatically get current location
Retrieve current location to offer category suggestions if image is not geotagged
+ Select theme
+ Select application theme as light/dark
Attribution-ShareAlike 4.0
Attribution 4.0
Attribution-ShareAlike 3.0