/** * Wire * Copyright (C) 2016 Wire Swiss GmbH * * This program 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 program 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. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.waz.zclient; import android.annotation.SuppressLint; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.widget.TextViewCompat; import android.support.v7.app.ActionBar; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceFragmentCompat; import android.support.v7.preference.PreferenceScreen; import android.support.v7.widget.AppCompatTextView; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.TextSwitcher; import android.widget.TextView; import android.widget.ViewSwitcher; import com.waz.zclient.pages.main.profile.preferences.PreferenceScreenStrategy; import com.waz.zclient.utils.ViewUtils; public abstract class BasePreferenceActivity extends BaseActivity implements PreferenceFragmentCompat.OnPreferenceStartScreenCallback, PreferenceFragmentCompat.OnPreferenceDisplayDialogCallback, PreferenceScreenStrategy.ReplaceFragment.Callbacks { private PreferenceScreenStrategy.ReplaceFragment replaceFragmentStrategy; private Toolbar toolbar; private TextSwitcher titleSwitcher; private CharSequence title; @SuppressLint("PrivateResource") @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings); replaceFragmentStrategy = new PreferenceScreenStrategy.ReplaceFragment(this, R.anim.abc_fade_in, R.anim.abc_fade_out, R.anim.abc_fade_in, R.anim.abc_fade_out); toolbar = ViewUtils.getView(this, R.id.toolbar); setSupportActionBar(toolbar); ActionBar ab = getSupportActionBar(); assert ab != null; ab.setDisplayHomeAsUpEnabled(true); title = getTitle(); titleSwitcher = new TextSwitcher(toolbar.getContext()); titleSwitcher.setFactory(new ViewSwitcher.ViewFactory() { @Override public View makeView() { TextView tv = new AppCompatTextView(toolbar.getContext()); TextViewCompat.setTextAppearance(tv, R.style.TextAppearance_AppCompat_Widget_ActionBar_Title); return tv; } }); titleSwitcher.setCurrentText(title); ab.setCustomView(titleSwitcher); ab.setDisplayShowCustomEnabled(true); ab.setDisplayShowTitleEnabled(false); titleSwitcher.setInAnimation(this, R.anim.abc_fade_in); titleSwitcher.setOutAnimation(this, R.anim.abc_fade_out); } @Override protected void onTitleChanged(CharSequence title, int color) { super.onTitleChanged(title, color); if (title == null) { return; } if (title.equals(this.title)) { return; } this.title = title; if (this.titleSwitcher != null) { this.titleSwitcher.setText(this.title); } } @Override public int getBaseTheme() { return R.style.Theme_Dark_Preferences; } @Override public boolean onPreferenceStartScreen(final PreferenceFragmentCompat preferenceFragmentCompat, final PreferenceScreen preferenceScreen) { replaceFragmentStrategy.onPreferenceStartScreen(getSupportFragmentManager(), preferenceFragmentCompat, preferenceScreen); return true; } @Override public boolean onPreferenceDisplayDialog(PreferenceFragmentCompat preferenceFragmentCompat, Preference preference) { return false; } }