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