package com.ftinc.scoop.ui; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.annotation.StringRes; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.text.TextUtils; import android.view.MenuItem; import android.view.View; import com.ftinc.scoop.R; import com.ftinc.scoop.Scoop; import com.ftinc.scoop.Flavor; /** * Project: ThemeEngineTest * Package: com.ftinc.scoop.ui * Created by drew.heavner on 6/8/16. */ public class ScoopSettingsActivity extends AppCompatActivity implements FlavorRecyclerAdapter.OnItemClickListener { /*********************************************************************************************** * * Intent Factories * */ public static Intent createIntent(Context ctx){ return createIntent(ctx, null); } public static Intent createIntent(Context ctx, @StringRes int titleResId){ return createIntent(ctx, ctx.getString(titleResId)); } public static Intent createIntent(Context ctx, @Nullable String title){ Intent intent = new Intent(ctx, ScoopSettingsActivity.class); if(!TextUtils.isEmpty(title)) intent.putExtra(EXTRA_TITLE, title); return intent; } /*********************************************************************************************** * * Constants * */ private static final String EXTRA_TITLE = "com.ftinc.scoop.intent.EXTRA_TITLE"; /*********************************************************************************************** * * Variables * */ private Toolbar mAppBar; private RecyclerView mRecyclerView; private FlavorRecyclerAdapter mAdapter; private String mTitle; /*********************************************************************************************** * * Lifecycle Methods * */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Apply the current flavor of ice cream Scoop.getInstance().apply(this); // Set the activity content setContentView(R.layout.activity_scoop_settings); // Setup UI parseExtras(savedInstanceState); setupActionBar(); setupRecyclerView(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString(EXTRA_TITLE, mTitle); } @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId() == android.R.id.home){ finish(); return true; } return super.onOptionsItemSelected(item); } /*********************************************************************************************** * * Helper Methods * */ private void parseExtras(Bundle savedInstanceState) { if(getIntent() != null){ mTitle = getIntent().getStringExtra(EXTRA_TITLE); } if(savedInstanceState != null){ mTitle = savedInstanceState.getString(EXTRA_TITLE); } } private void setupActionBar() { if(getSupportActionBar() == null){ mAppBar = (Toolbar) findViewById(R.id.appbar); setSupportActionBar(mAppBar); mAppBar.setVisibility(View.VISIBLE); mAppBar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); } if(TextUtils.isEmpty(mTitle)) { getSupportActionBar().setTitle(R.string.activity_settings); }else{ getSupportActionBar().setTitle(mTitle); } getSupportActionBar().setDisplayHomeAsUpEnabled(true); } private void setupRecyclerView(){ mRecyclerView = (RecyclerView) findViewById(R.id.recycler); mAdapter = new FlavorRecyclerAdapter(this); mAdapter.setItemClickListener(this); mAdapter.addAll(Scoop.getInstance().getFlavors()); mAdapter.setCurrentFlavor(Scoop.getInstance().getCurrentFlavor()); mRecyclerView.setAdapter(mAdapter); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); } /*********************************************************************************************** * * Listener Methods * */ @Override public void onItemClicked(View view, Flavor item, int position) { // Update Scoops Scoop.getInstance().choose(item); // Update adapter mAdapter.setCurrentFlavor(item); // Restart this activity Intent restart = new Intent(this, ScoopSettingsActivity.class); setResult(RESULT_OK); finish(); startActivity(restart); overridePendingTransition(0, 0); } }