/* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.example.android.wearable.recipeassistant; import android.app.Activity; import android.app.PendingIntent; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import org.json.JSONObject; public class RecipeActivity extends Activity { private static final String TAG = "RecipeAssistant"; private String mRecipeName; private Recipe mRecipe; private ImageView mImageView; private TextView mTitleTextView; private TextView mSummaryTextView; private TextView mIngredientsTextView; private LinearLayout mStepsLayout; @Override protected void onStart() { super.onStart(); Intent intent = getIntent(); mRecipeName = intent.getStringExtra(Constants.RECIPE_NAME_TO_LOAD); if (Log.isLoggable(TAG, Log.DEBUG)) { Log.d(TAG, "Intent: " + intent.toString() + " " + mRecipeName); } loadRecipe(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.recipe); mTitleTextView = (TextView) findViewById(R.id.recipeTextTitle); mSummaryTextView = (TextView) findViewById(R.id.recipeTextSummary); mImageView = (ImageView) findViewById(R.id.recipeImageView); mIngredientsTextView = (TextView) findViewById(R.id.textIngredients); mStepsLayout = (LinearLayout) findViewById(R.id.layoutSteps); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case R.id.action_cook: startCooking(); return true; } return super.onOptionsItemSelected(item); } private void loadRecipe() { JSONObject jsonObject = AssetUtils.loadJSONAsset(this, mRecipeName); if (jsonObject != null) { mRecipe = Recipe.fromJson(this, jsonObject); if (mRecipe != null) { displayRecipe(mRecipe); } } } private void displayRecipe(Recipe recipe) { Animation fadeIn = AnimationUtils.loadAnimation(this, android.R.anim.fade_in); mTitleTextView.setAnimation(fadeIn); mTitleTextView.setText(recipe.titleText); mSummaryTextView.setText(recipe.summaryText); if (recipe.recipeImage != null) { mImageView.setAnimation(fadeIn); Bitmap recipeImage = AssetUtils.loadBitmapAsset(this, recipe.recipeImage); mImageView.setImageBitmap(recipeImage); } mIngredientsTextView.setText(recipe.ingredientsText); findViewById(R.id.ingredientsHeader).setAnimation(fadeIn); findViewById(R.id.ingredientsHeader).setVisibility(View.VISIBLE); findViewById(R.id.stepsHeader).setAnimation(fadeIn); findViewById(R.id.stepsHeader).setVisibility(View.VISIBLE); LayoutInflater inf = LayoutInflater.from(this); mStepsLayout.removeAllViews(); int stepNumber = 1; for (Recipe.RecipeStep step : recipe.recipeSteps) { View view = inf.inflate(R.layout.step_item, null); ImageView iv = (ImageView) view.findViewById(R.id.stepImageView); if (step.stepImage == null) { iv.setVisibility(View.GONE); } else { Bitmap stepImage = AssetUtils.loadBitmapAsset(this, step.stepImage); iv.setImageBitmap(stepImage); } ((TextView) view.findViewById(R.id.textStep)).setText( (stepNumber++) + ". " + step.stepText); mStepsLayout.addView(view); } } private void startCooking() { Intent intent = new Intent(this, RecipeService.class); intent.setAction(Constants.ACTION_START_COOKING); intent.putExtra(Constants.EXTRA_RECIPE, mRecipe.toBundle()); startService(intent); } }