package mil.nga.giat.mage.filter; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.RadioButton; import mil.nga.giat.mage.R; /** * Created by wnewman on 1/25/17. */ public class FilterActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener { private Integer timeFilter = 0; private Integer activeTimeFilter = 0; private CheckBox favoriteCheckBox; private boolean activeFavoriteFilter = false; private CheckBox importantCheckBox; private boolean activeImportantFilter = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_filter); ActionBar actionBar = getSupportActionBar(); actionBar.setTitle("Filter"); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeButtonEnabled(true); actionBar.setHomeAsUpIndicator(R.drawable.ic_close_white_24dp); SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); timeFilter = activeTimeFilter = preferences.getInt(getResources().getString(R.string.activeTimeFilterKey), getResources().getInteger(R.integer.time_filter_none)); activeFavoriteFilter = preferences.getBoolean(getResources().getString(R.string.activeFavoritesFilterKey), false); activeImportantFilter = preferences.getBoolean(getResources().getString(R.string.activeImportantFilterKey), false); final RadioButton noneRadioButton = ((RadioButton) findViewById(R.id.none_radio)); findViewById(R.id.none_time_filter).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onCheckedChanged(noneRadioButton, false); } }); final RadioButton todayRadioButton = ((RadioButton) findViewById(R.id.since_midnight_radio)); findViewById(R.id.today_time_filter).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onCheckedChanged(todayRadioButton, false); } }); final RadioButton last24HoursRadioButton = ((RadioButton) findViewById(R.id.last_24_hours_radio)); findViewById(R.id.last_24_hours_time_filter).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onCheckedChanged(last24HoursRadioButton, false); } }); final RadioButton lastWeekRadioButton = ((RadioButton) findViewById(R.id.last_week_radio)); findViewById(R.id.last_week_time_filter).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onCheckedChanged(lastWeekRadioButton, false); } }); final RadioButton lastMonthRadioButton = ((RadioButton) findViewById(R.id.last_month_radio)); findViewById(R.id.last_month_time_filter).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onCheckedChanged(lastMonthRadioButton, false); } }); importantCheckBox = (CheckBox) findViewById(R.id.status_important); favoriteCheckBox = (CheckBox) findViewById(R.id.status_favorite); View view = findViewById(android.R.id.content).findViewWithTag(timeFilter.toString()); if (view == null) { view = findViewById(android.R.id.content).findViewWithTag("0"); timeFilter = activeTimeFilter = getResources().getInteger(R.integer.time_filter_none); } ((RadioButton) view).setChecked(true); boolean favorite = preferences.getBoolean(getResources().getString(R.string.activeFavoritesFilterKey), false); favoriteCheckBox.setChecked(favorite); boolean important = preferences.getBoolean(getResources().getString(R.string.activeImportantFilterKey), false); importantCheckBox.setChecked(important); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu items for use in the action bar getMenuInflater().inflate(R.menu.filter_menu, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); break; case R.id.filter_button: setFilter(); break; } return super.onOptionsItemSelected(item); } public void onFavoriteFilter(View view) { favoriteCheckBox.setChecked(!favoriteCheckBox.isChecked()); } public void onImportantFilter(View view) { importantCheckBox.setChecked(!importantCheckBox.isChecked()); } public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { int filter = Integer.parseInt(buttonView.getTag().toString()); ((RadioButton) findViewById(android.R.id.content).findViewWithTag(timeFilter.toString())).setChecked(false); timeFilter = filter; buttonView.setChecked(true); } private void setFilter() { SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit(); if (activeTimeFilter != timeFilter) { activeTimeFilter = timeFilter; editor.putInt(getResources().getString(R.string.activeTimeFilterKey), activeTimeFilter); } if (activeFavoriteFilter != favoriteCheckBox.isChecked()) { activeFavoriteFilter = favoriteCheckBox.isChecked(); editor.putBoolean(getResources().getString(R.string.activeFavoritesFilterKey), activeFavoriteFilter); } if (activeImportantFilter != importantCheckBox.isChecked()) { activeImportantFilter = importantCheckBox.isChecked(); editor.putBoolean(getResources().getString(R.string.activeImportantFilterKey), activeImportantFilter); } editor.commit(); finish(); } }