/* * Copyright (C) 2015 Naman Dwivedi * * Licensed under the GNU General Public License v3 * * This is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. */ package com.naman14.timber.activities; import android.os.Bundle; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import android.support.annotation.ColorInt; import android.support.annotation.NonNull; import android.support.annotation.StyleRes; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import com.afollestad.appthemeengine.ATE; import com.afollestad.appthemeengine.Config; import com.afollestad.appthemeengine.customizers.ATEActivityThemeCustomizer; import com.afollestad.materialdialogs.color.ColorChooserDialog; import com.naman14.timber.R; import com.naman14.timber.fragments.SettingsFragment; import com.naman14.timber.subfragments.StyleSelectorFragment; import com.naman14.timber.utils.Constants; import com.naman14.timber.utils.PreferencesUtility; public class SettingsActivity extends BaseThemedActivity implements ColorChooserDialog.ColorCallback, ATEActivityThemeCustomizer { String action; @Override public void onCreate(Bundle savedInstanceState) { if (PreferencesUtility.getInstance(this).getTheme().equals("dark")) setTheme(R.style.AppThemeNormalDark); else if (PreferencesUtility.getInstance(this).getTheme().equals("black")) setTheme(R.style.AppThemeNormalBlack); super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); action = getIntent().getAction(); if (action.equals(Constants.SETTINGS_STYLE_SELECTOR)) { getSupportActionBar().setTitle(R.string.now_playing); String what = getIntent().getExtras().getString(Constants.SETTINGS_STYLE_SELECTOR_WHAT); Fragment fragment = StyleSelectorFragment.newInstance(what); FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction() .add(R.id.fragment_container, fragment).commit(); } else { getSupportActionBar().setTitle(R.string.settings); PreferenceFragment fragment = new SettingsFragment(); android.app.FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction() .replace(R.id.fragment_container, fragment).commit(); } } @Override public boolean onOptionsItemSelected(final MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; default: break; } return super.onOptionsItemSelected(item); } @StyleRes @Override public int getActivityTheme() { return PreferenceManager.getDefaultSharedPreferences(this).getBoolean("dark_theme", false) ? R.style.AppThemeDark : R.style.AppThemeLight; } @Override public void onColorSelection(@NonNull ColorChooserDialog dialog, @ColorInt int selectedColor) { final Config config = ATE.config(this, getATEKey()); switch (dialog.getTitle()) { case R.string.primary_color: config.primaryColor(selectedColor); break; case R.string.accent_color: config.accentColor(selectedColor); break; } config.commit(); recreate(); // recreation needed to reach the checkboxes in the preferences layout } }