package com.perflyst.twire.activities.settings; import android.content.Intent; import android.os.Bundle; import android.view.MenuItem; import android.view.View; import androidx.appcompat.widget.Toolbar; import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityOptionsCompat; import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.perflyst.twire.R; import com.perflyst.twire.activities.ThemeActivity; import com.perflyst.twire.adapters.SettingsCategoryAdapter; import com.perflyst.twire.model.SettingsCategory; import net.nrask.srjneeds.SRJAdapter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; public class SettingsActivity extends ThemeActivity implements SRJAdapter.ItemCallback<SettingsCategoryAdapter.SettingsCategoryViewHolder> { @BindView(R.id.settings_category_list) protected RecyclerView mCategoryList; @BindView(R.id.settings_toolbar) protected Toolbar mToolbar; private String LOG_TAG = "SettingsActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings); ButterKnife.bind(this); setSupportActionBar(mToolbar); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); } SettingsCategoryAdapter mAdapter = new SettingsCategoryAdapter(); mAdapter.setItemCallback(this); mAdapter.addItems(constructSettingsCategories()); mCategoryList.setAdapter(mAdapter); mCategoryList.setLayoutManager(new LinearLayoutManager(getBaseContext())); mCategoryList.setItemAnimator(new DefaultItemAnimator()); } @Override public boolean onOptionsItemSelected(MenuItem item) { // Up/back is the only option available :) onBackPressed(); return super.onOptionsItemSelected(item); } @Override public void onBackPressed() { super.onBackPressed(); this.overridePendingTransition(R.anim.fade_in_semi_anim, R.anim.slide_out_right_anim); } @Override public void onItemClicked(View view, SettingsCategoryAdapter.SettingsCategoryViewHolder settingsCategoryViewHolder) { SettingsCategory category = settingsCategoryViewHolder.getData(); ActivityOptionsCompat settingsAnim = ActivityOptionsCompat.makeCustomAnimation(this, R.anim.slide_in_right_anim, R.anim.fade_out_semi_anim); // First animation is how the new activity enters - Second is how the current activity exits ActivityCompat.startActivity(this, category.getIntent(), settingsAnim.toBundle()); } private List<SettingsCategory> constructSettingsCategories() { return new ArrayList<>(Arrays.asList( new SettingsCategory( R.string.settings_general_name, R.string.settings_general_name_summary, R.drawable.ic_settings_black_24dp, constructCategoryIntent(SettingsGeneralActivity.class) ), new SettingsCategory( R.string.settings_chat_name, R.string.settings_chat_name_summary, R.drawable.ic_chat_black_48dp, constructCategoryIntent(SettingsTwitchChatActivity.class) ), new SettingsCategory( R.string.settings_stream_player_name, R.string.settings_stream_player_summary, R.drawable.ic_filmstrip_black_48dp, constructCategoryIntent(SettingsStreamPlayerActivity.class) ), new SettingsCategory( R.string.settings_appearance_name, R.string.settings_appearance_summary, R.drawable.ic_color_lens_black_48dp, constructCategoryIntent(SettingsAppearanceActivity.class) )/*, new SettingsCategory( R.string.settings_notifications_name, R.string.settings_notifications_summary, R.drawable.ic_notifications_active_black_48dp, constructCategoryIntent(SettingsNotificationsActivity.class) )*/)); } private Intent constructCategoryIntent(final Class toActivity) { Intent intent = new Intent(this, toActivity); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); return intent; } }