blob: cc7f034a76f6482430ccd0ef298150f238e09082 [file] [log] [blame]
/*
* 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);
}
}