Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d895106c authored by Daniel Bailey's avatar Daniel Bailey Committed by Niedermann IT-Dienstleistungen
Browse files

Dark theme

Configured night mode to allow for a dark theme within the app.
parent 4d531b51
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:name="it.niedermann.owncloud.notes.util.Notes"
        android:allowBackup="true"
        android:fullBackupContent="true"
        android:icon="@mipmap/ic_launcher"
@@ -54,7 +55,9 @@
            android:name="it.niedermann.owncloud.notes.android.activity.PreferencesActivity"
            android:label="@string/action_settings"
            android:parentActivityName="it.niedermann.owncloud.notes.android.activity.NotesListViewActivity"
            android:windowSoftInputMode="stateHidden" />
            android:windowSoftInputMode="stateHidden"
            android:theme="@style/Preferences"
            />

        <activity
            android:name="it.niedermann.owncloud.notes.android.activity.EditNoteActivity"
+1 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ public class PreferencesActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setResult(RESULT_CANCELED);
        getFragmentManager().beginTransaction()
                .replace(android.R.id.content, new PreferencesFragment())
                .commit();
+30 −0
Original line number Diff line number Diff line
package it.niedermann.owncloud.notes.android.fragment;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.preference.SwitchPreference;
import android.support.annotation.Nullable;
import android.widget.Toast;

import at.bitfire.cert4android.CustomCertManager;
import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.util.Notes;

public class PreferencesFragment extends PreferenceFragment {
    @Override
@@ -24,5 +29,30 @@ public class PreferencesFragment extends PreferenceFragment {
                return true;
            }
        });

        final SwitchPreference themePref = (SwitchPreference) findPreference("darkTheme");
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext());
        Boolean darkTheme = sp.getBoolean(getString(R.string.pref_key_theme), false);

        setThemePreferenceSummary(themePref, darkTheme);
        themePref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                Boolean darkTheme = (Boolean) newValue;
                Notes.setTheme(darkTheme);
                getActivity().setResult(Activity.RESULT_OK);
                getActivity().finish();

                return true;
            }
        });
    }

    private void setThemePreferenceSummary(SwitchPreference themePref, Boolean darkTheme) {
        if (darkTheme) {
            themePref.setSummary(getString(R.string.pref_value_theme_dark));
        } else {
            themePref.setSummary(getString(R.string.pref_value_theme_light));
        }
    }
}
+18 −0
Original line number Diff line number Diff line
package it.niedermann.owncloud.notes.model;

import android.content.SharedPreferences;
import android.graphics.Color;
import android.preference.PreferenceManager;
import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
@@ -98,7 +100,23 @@ public class NavigationAdapter extends RecyclerView.Adapter<NavigationAdapter.Vi
                icon.setVisibility(View.GONE);
            }
            view.setBackgroundColor(isSelected ? view.getResources().getColor(R.color.bg_highlighted) : Color.TRANSPARENT);

            SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(view.getContext());
            boolean darkTheme = sp.getBoolean(view.getContext().getString(R.string.pref_key_theme), false);
            int textColor = view.getResources().getColor(isSelected ? R.color.primary_dark : R.color.fg_default);

            if(darkTheme) {
                // TODO dirty. Fix if statement.
                if((item.label != view.getContext().getString(R.string.action_settings)) &&
                   (item.label != view.getContext().getString(R.string.simple_about))) {
                    textColor = view.getResources().getColor(isSelected ? R.color.fg_default :
                                                                          R.color.fg_default_high);
                    view.setBackgroundColor(isSelected ?
                                            view.getResources().getColor(R.color.bg_highlighted) :
                                            Color.TRANSPARENT);
                }
            }

            name.setTextColor(textColor);
            count.setTextColor(textColor);
            icon.setColorFilter(isSelected ? textColor : 0);
+24 −0
Original line number Diff line number Diff line
package it.niedermann.owncloud.notes.util;

import android.app.Application;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatDelegate;

public class Notes extends Application {

    @Override
    public void onCreate() {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        Notes.setTheme(prefs.getBoolean("darkTheme", false));
        super.onCreate();
    }

    public static void setTheme(Boolean darkTheme) {
        if (darkTheme) {
            AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
        } else {
            AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
        }
    }
}
Loading