package com.sanchez.fmf; import android.content.Intent; import android.content.res.ColorStateList; import android.graphics.Color; import android.net.Uri; import android.os.Build; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.Window; import android.webkit.WebView; import android.webkit.WebViewClient; import com.sanchez.fmf.application.FMFApplication; import com.sanchez.fmf.util.MarketUtils; import com.sanchez.fmf.util.ViewUtils; import java.util.LinkedHashMap; import butterknife.Bind; import butterknife.ButterKnife; public class MarketDetailActivity extends AppCompatActivity { public static final String TAG = MarketDetailActivity.class.getSimpleName(); public static final String EXTRA_MARKET_ID = "com.sanchez.market_id"; public static final String EXTRA_MARKET_NAME = "com.sanchez.market_name"; private static final String BASE_URL = "http://search.ams.usda.gov/farmersmarkets/Row.aspx?ID="; @Bind(R.id.toolbar_market_detail) Toolbar mToolbar; @Bind(R.id.progress_bar) View mProgressBar; @Bind(R.id.market_detail_webview) WebView mWebView; @Bind(R.id.favorite_fab) FloatingActionButton mFavoriteFab; private static int MED_ANIM_TIME; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_market_detail); ButterKnife.bind(this); setSupportActionBar(mToolbar); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); // color nav and status bar with app color Window w = getWindow(); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { w.setNavigationBarColor(getResources().getColor(R.color.primary_dark)); } MED_ANIM_TIME = getResources().getInteger(android.R.integer.config_mediumAnimTime); String marketId = getIntent().getStringExtra(EXTRA_MARKET_ID); String marketName = getIntent().getStringExtra(EXTRA_MARKET_NAME); getSupportActionBar().setTitle(marketName); int marketColor = getResources().getColor(MarketUtils.getRandomMarketColor()); ColorStateList cSL = new ColorStateList(new int[][]{new int[0]}, new int[]{marketColor}); mFavoriteFab.setBackgroundTintList(cSL); LinkedHashMap<String, String> favoriteMarkets = FMFApplication.getGlobalPreferences().getFavoriteMarkets(); if (null != favoriteMarkets && favoriteMarkets.containsKey(marketId)) { mFavoriteFab.setEnabled(false); mFavoriteFab.setBackgroundTintList( new ColorStateList(new int[][]{new int[0]}, new int[]{Color.GRAY}) ); } mFavoriteFab.setOnClickListener((v) -> { Snackbar.make(v, R.string.added_to_favorites, Snackbar.LENGTH_LONG).show(); mFavoriteFab.setEnabled(false); mFavoriteFab.setBackgroundTintList( new ColorStateList(new int[][]{new int[0]}, new int[]{Color.GRAY}) ); // update favorite markets list LinkedHashMap<String, String> favorites = FMFApplication .getGlobalPreferences() .getFavoriteMarkets(); if(null == favorites) { favorites = new LinkedHashMap<>(); } favorites.put(marketId, marketName); FMFApplication.getGlobalPreferences().setFavoriteMarkets(favorites); }); mWebView.getSettings().setJavaScriptEnabled(false); mWebView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { ViewUtils.crossfadeTwoViews(mWebView, mProgressBar, MED_ANIM_TIME); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // Don't load links in the web view Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); return true; } }); mWebView.loadUrl(BASE_URL + marketId); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_market_detail, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case android.R.id.home: finish(); return true; default: return super.onOptionsItemSelected(item); } } }