package com.loopeer.codereader.ui.activity; import android.os.Bundle; import android.support.v7.app.AppCompatDelegate; import android.support.v7.widget.AppCompatCheckBox; import android.support.v7.widget.AppCompatSeekBar; import android.view.View; import android.widget.ImageView; import android.widget.SeekBar; import android.widget.TextView; import com.loopeer.codereader.Navigator; import com.loopeer.codereader.R; import com.loopeer.codereader.event.ThemeRecreateEvent; import com.loopeer.codereader.ui.view.ForegroundRelativeLayout; import com.loopeer.codereader.ui.view.ThemeChooser; import com.loopeer.codereader.utils.PrefUtils; import com.loopeer.codereader.utils.RxBus; import com.loopeer.codereader.utils.ThemeUtils; import com.loopeer.directorychooser.ForegroundLinearLayout; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; public class SettingActivity extends BaseActivity implements SeekBar.OnSeekBarChangeListener, ThemeChooser.OnItemSelectListener { @BindView(R.id.item_setting_font_size) ForegroundRelativeLayout mItemSettingFontSize; @BindView(R.id.item_setting_line_number) ForegroundLinearLayout mItemSettingLineNumber; @BindView(R.id.item_setting_use_menlo) ForegroundLinearLayout mItemSettingUseMenlo; @BindView(R.id.item_setting_theme) ForegroundLinearLayout mItemSettingTheme; @BindView(R.id.checkbox_show_line_number) AppCompatCheckBox mCheckboxShowLineNumber; @BindView(R.id.checkbox_menlo_font) AppCompatCheckBox mCheckboxMenloFont; @BindView(R.id.text_setting_font_size_temp) TextView mTextSettingFontSizeTemp; @BindView(R.id.seekbar_setting_font_size) AppCompatSeekBar mSeekbarSettingFontSize; @BindView(R.id.text_setting_font_current) TextView mTextSettingFontCurrent; @BindView(R.id.view_setting_theme_day) ImageView mViewSettingThemeDay; @BindView(R.id.view_setting_theme_night) ImageView mViewSettingThemeNight; private ThemeChooser mThemeChooser; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setting); ButterKnife.bind(this); mThemeChooser = new ThemeChooser(this, this); mThemeChooser.addItem(mViewSettingThemeDay.getId(), ThemeUtils.THEME_DAY); mThemeChooser.addItem(mViewSettingThemeNight.getId(), ThemeUtils.THEME_NIGHT); initViewData(); setUpView(); } private void initViewData() { mCheckboxShowLineNumber.setChecked(PrefUtils.getPrefDisplayLineNumber(this)); mCheckboxMenloFont.setChecked(PrefUtils.getPrefMenlofont(this)); int fontSize = (int) PrefUtils.getPrefFontSize(this); mSeekbarSettingFontSize.setProgress(fontSize); mTextSettingFontCurrent.setText(String.valueOf(fontSize)); mTextSettingFontSizeTemp.setTextSize(fontSize); mThemeChooser.onItemSelectByTag(PrefUtils.getPrefTheme(this)); } private void setUpView() { mCheckboxShowLineNumber.setOnCheckedChangeListener((compoundButton, b) -> PrefUtils.setPrefDisplayLineNumber(SettingActivity.this, b)); mCheckboxMenloFont.setOnCheckedChangeListener((compoundButton, b) -> PrefUtils.setPrefMenlofont(SettingActivity.this, b)); mSeekbarSettingFontSize.setOnSeekBarChangeListener(this); } @OnClick({ R.id.item_setting_font_size, R.id.item_setting_line_number, R.id.item_setting_use_menlo, R.id.item_setting_theme, R.id.view_setting_theme_day, R.id.view_setting_theme_night, R.id.item_setting_about }) @SuppressWarnings("unused") public void onClick(View view) { switch (view.getId()) { case R.id.item_setting_font_size: break; case R.id.item_setting_line_number: mCheckboxShowLineNumber.setChecked(!mCheckboxShowLineNumber.isChecked()); break; case R.id.item_setting_use_menlo: mCheckboxMenloFont.setChecked(!mCheckboxMenloFont.isChecked()); break; case R.id.item_setting_theme: break; case R.id.view_setting_theme_day: case R.id.view_setting_theme_night: mThemeChooser.onItemSelect(view); break; case R.id.item_setting_about: Navigator.startAboutActivity(this); break; } } @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { mTextSettingFontSizeTemp.setTextSize(i); PrefUtils.setPrefFontSize(this, i); mTextSettingFontCurrent.setText(String.valueOf(i)); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } @Override public void onItemSelect(int id, String tag) { if (PrefUtils.getPrefTheme(this).equals(tag)) { return; } AppCompatDelegate.setDefaultNightMode(tag.equals(ThemeUtils.THEME_DAY) ? AppCompatDelegate.MODE_NIGHT_NO : AppCompatDelegate.MODE_NIGHT_YES); RxBus.getInstance().send(new ThemeRecreateEvent()); PrefUtils.setPrefTheme(this, tag); } }