package com.ghostflying.portalwaitinglist; import android.content.pm.PackageManager; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.View; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.TextView; import com.ghostflying.portalwaitinglist.fragment.BaseAlertDialogFragment; import com.ghostflying.portalwaitinglist.fragment.DaysPickerDialogFragment; import com.ghostflying.portalwaitinglist.util.SettingUtil; public class SettingActivity extends ActionBarActivity implements BaseAlertDialogFragment.OnFragmentInteractionListener{ public static final int REQUEST_SETTING = 1; CheckBox imageToggle; CheckBox inverseToggle; CheckBox forceChineseToggle; CheckBox showStatusInListToggle; TextView shortTimeValue; TextView longTimeValue; TextView smartOrderSortValue; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setting); initialViews(); } private void initialViews(){ // action bar Toolbar toolbar = (Toolbar)findViewById(R.id.action_bar_in_setting); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); // portal image setting imageToggle = (CheckBox)findViewById(R.id.setting_image_toggle); imageToggle.setChecked(SettingUtil.getIfShowImages()); imageToggle.setOnCheckedChangeListener(onCheckedChangeListener); findViewById(R.id.setting_show_image_line).setOnClickListener(onClickListener); // show status in list showStatusInListToggle = (CheckBox)findViewById(R.id.setting_show_status_in_list_toggle); showStatusInListToggle.setChecked(SettingUtil.getShowStatusInList()); showStatusInListToggle.setOnCheckedChangeListener(onCheckedChangeListener); findViewById(R.id.setting_show_status_in_list_line).setOnClickListener(onClickListener); // default sort inverseToggle = (CheckBox)findViewById(R.id.setting_smart_order_inverse_toggle); inverseToggle.setChecked(SettingUtil.getIfInverseWaitingInSmart()); inverseToggle.setOnCheckedChangeListener(onCheckedChangeListener); updateSmartOrderSortValue(); findViewById(R.id.setting_inverse_sort_line).setOnClickListener(onClickListener); // short time setting findViewById(R.id.setting_short_time_line).setOnClickListener(onClickListener); updateShortTimeValue(); // long time setting findViewById(R.id.setting_long_time_line).setOnClickListener(onClickListener); updateLongTimeValue(); // other sort findViewById(R.id.setting_force_chinese_line).setOnClickListener(onClickListener); forceChineseToggle = (CheckBox)findViewById(R.id.setting_force_chinese_toggle); forceChineseToggle.setChecked(SettingUtil.getForceChinese()); forceChineseToggle.setOnCheckedChangeListener(onCheckedChangeListener); // version code try{ ((TextView)findViewById(R.id.version_name)).setText( getResources().getString(R.string.setting_version) + getPackageManager().getPackageInfo(getPackageName(), 0).versionName); } catch (PackageManager.NameNotFoundException e){ e.printStackTrace(); } } private void updateShortTimeValue(){ if (shortTimeValue == null) shortTimeValue = (TextView)findViewById(R.id.setting_smart_order_short_time_value); shortTimeValue.setText(Integer.toString(SettingUtil.getShortTime())); } private void updateLongTimeValue(){ if (longTimeValue == null) longTimeValue = (TextView)findViewById(R.id.setting_smart_order_long_time_value); longTimeValue.setText(Integer.toString(SettingUtil.getLongTime())); } private void updateSmartOrderSortValue(){ if (smartOrderSortValue == null) smartOrderSortValue = (TextView)findViewById(R.id.setting_smart_order_sort_value); if (SettingUtil.getIfInverseWaitingInSmart()) smartOrderSortValue.setText(R.string.last_desc_order); else smartOrderSortValue.setText(R.string.last_asc_order); } // on click listener for all need View.OnClickListener onClickListener = new View.OnClickListener() { @Override public void onClick(View v) { switch (v.getId()){ case R.id.setting_show_image_line: imageToggle.setChecked(!imageToggle.isChecked()); break; case R.id.setting_short_time_line: DaysPickerDialogFragment shortFragment = DaysPickerDialogFragment .newInstance( SettingUtil.getShortTime(), R.integer.setting_short_time_min, R.integer.setting_short_time_max, R.string.setting_short_time_dialog_title ); shortFragment.show(getFragmentManager(), null); break; case R.id.setting_long_time_line: DaysPickerDialogFragment longFragment = DaysPickerDialogFragment .newInstance( SettingUtil.getLongTime(), R.integer.setting_long_time_min, R.integer.setting_long_time_max, R.string.setting_long_time_dialog_title ); longFragment.show(getFragmentManager(), null); break; case R.id.setting_inverse_sort_line: inverseToggle.setChecked(!inverseToggle.isChecked()); break; case R.id.setting_force_chinese_line: forceChineseToggle.setChecked(!forceChineseToggle.isChecked()); break; case R.id.setting_show_status_in_list_line: showStatusInListToggle.setChecked(!showStatusInListToggle.isChecked()); break; } } }; // check changed listener CompoundButton.OnCheckedChangeListener onCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { switch (buttonView.getId()){ case R.id.setting_image_toggle: SettingUtil.setIfShowImages(isChecked); break; case R.id.setting_smart_order_inverse_toggle: SettingUtil.setIfInverseWaitingInSmart(isChecked); updateSmartOrderSortValue(); setNeedFilterOrSort(); break; case R.id.setting_force_chinese_toggle: SettingUtil.setForceChinese(isChecked); setNeedFilterOrSort(); break; case R.id.setting_show_status_in_list_toggle: SettingUtil.setShowStatusInList(isChecked); setNeedFilterOrSort(); break; } } }; @Override public void onPositiveButtonClick(int value, int title) { switch (title){ case R.string.setting_short_time_dialog_title: SettingUtil.setShortTime(value); updateShortTimeValue(); setNeedFilterOrSort(); break; case R.string.setting_long_time_dialog_title: SettingUtil.setLongTime(value); updateLongTimeValue(); setNeedFilterOrSort(); break; } } private void setNeedFilterOrSort() { // set result to filter or sort date in main activity setResult(RESULT_OK); } @Override public void onNegativeButtonClick(int value, int title) { } @Override public void onBackPressed(){ super.onBackPressed(); this.overridePendingTransition(R.animator.setting_swap_in_top, R.animator.setting_swap_out_top); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { finish(); this.overridePendingTransition(R.animator.setting_swap_in_top, R.animator.setting_swap_out_top); return true; } return super.onOptionsItemSelected(item); } }