Android Open Source - opentraining Workout Detail Fragment






From Project

Back to project page opentraining.

License

The source code is released under:

GNU General Public License

If you think the Android project opentraining listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * //  w w  w .  ja va2 s.c o m
 * This is OpenTraining, an Android application for planning your your fitness training.
 * Copyright (C) 2012 Christian Skubich
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * 
 */

package de.skubware.opentraining.activity.manage_workouts;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

import de.skubware.opentraining.R;
import de.skubware.opentraining.activity.create_workout.ExerciseTypeListActivity;
import de.skubware.opentraining.basic.FitnessExercise;
import de.skubware.opentraining.basic.Workout;
import de.skubware.opentraining.db.DataProvider;
import de.skubware.opentraining.db.IDataProvider;
import de.skubware.opentraining.db.parser.XMLSaver;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.widget.ShareActionProvider;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

/**
 * A fragment representing a single Workout detail screen. This fragment is
 * either contained in a {@link WorkoutListActivity} in two-pane mode (on
 * tablets) or a {@link WorkoutDetailActivity} on handsets.
 */
public class WorkoutDetailFragment extends Fragment {
  /**
   * The fragment argument representing the item ID that this fragment
   * represents.
   */
  public static final String ARG_WORKOUT = "workout";

  private static final String TAG = "WorkoutDetailFragment";
  
  /**
   * The {@link Workout} this fragment is presenting.
   */
  private Workout mWorkout;
  

  /**
   * Mandatory empty constructor for the fragment manager to instantiate the
   * fragment (e.g. upon screen orientation changes).
   */
  public WorkoutDetailFragment() {
  }

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setHasOptionsMenu(true);

    if (getArguments().containsKey(ARG_WORKOUT)) {
      mWorkout = (Workout) getArguments().getSerializable(ARG_WORKOUT);
    }
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_workout_detail, container, false);

    // Show the dummy content as text in a TextView.
    if (mWorkout != null) {
      ((TextView) rootView.findViewById(R.id.textview_workout_name)).setText(mWorkout.getName());

      ListView listview_exercises = (ListView) rootView.findViewById(R.id.listview_exercises);
      FitnessExercise[] arr = mWorkout.getFitnessExercises().toArray(new FitnessExercise[mWorkout.getFitnessExercises().size()]);
      ArrayAdapter<FitnessExercise> adapter = new ArrayAdapter<FitnessExercise>(getActivity(), android.R.layout.simple_list_item_2,
          android.R.id.text1, arr);

      listview_exercises.setAdapter(adapter);
    }

    return rootView;
  }

  @Override
  public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.workout_detail_menu, menu);

    // configure menu_item_rename_workout
    MenuItem menu_item_rename_workout = (MenuItem) menu.findItem(R.id.menu_item_rename_workout);
    menu_item_rename_workout.setOnMenuItemClickListener(new OnMenuItemClickListener() {
      public boolean onMenuItemClick(MenuItem item) {

        FragmentTransaction ft = getFragmentManager().beginTransaction();
        Fragment prev = getFragmentManager().findFragmentByTag("dialog");
        if (prev != null) {
          ft.remove(prev);
        }
        ft.addToBackStack(null);

        // Create and show the dialog.
        DialogFragment newFragment = RenameWorkoutDialogFragment.newInstance(mWorkout);
        newFragment.show(ft, "dialog");

        return true;
      }
    });

    // configure menu_item_delete_workout
    MenuItem menu_item_delete_workout = (MenuItem) menu.findItem(R.id.menu_item_delete_workout);
    menu_item_delete_workout.setOnMenuItemClickListener(new OnMenuItemClickListener() {
      public boolean onMenuItemClick(MenuItem item) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

        builder.setTitle(getString(R.string.really_delete));
        builder.setMessage(getString(R.string.really_delete_long));

        builder.setPositiveButton(getString(R.string.delete_workout), new OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int wich) {
            IDataProvider dataProvider = new DataProvider(getActivity());
            dataProvider.deleteWorkout(mWorkout);

            if (getActivity() instanceof WorkoutDetailActivity) {
              // request WorkoutListActivity to
              // finish too
              Intent i = new Intent();
              getActivity().setResult(WorkoutListActivity.REQUEST_EXIT, i);
            }

            // finish WorkoutListActivity
            getActivity().finish();

            startActivity(new Intent(getActivity(), WorkoutListActivity.class));

          }
        });
        builder.setNegativeButton(getString(R.string.cancel), new OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int wich) {
            dialog.dismiss();
          }
        });

        builder.create().show();

        return true;
      }
    });
    

    // configure menu_item_edit_workout
    MenuItem menu_item_edit_workout = (MenuItem) menu.findItem(R.id.menu_item_edit_workout);
    menu_item_edit_workout.setOnMenuItemClickListener(new OnMenuItemClickListener() {
      public boolean onMenuItemClick(MenuItem item) {
        
        Intent editItent = new Intent(getActivity(), ExerciseTypeListActivity.class);
        editItent.putExtra(ExerciseTypeListActivity.ARG_WORKOUT, mWorkout);
        startActivity(editItent);
        
        // close the manage workout activities
        if(getActivity() instanceof WorkoutDetailActivity)
          getActivity().finishFromChild(getActivity());
        getActivity().finish();

        return true;
      }
    });
    
    
    // configure menu_item_share

    MenuItem menu_item_share = menu.findItem(R.id.menu_item_share);
    
    menu_item_share.setOnMenuItemClickListener(new OnMenuItemClickListener(){
      @Override
      public boolean onMenuItemClick(MenuItem item) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        
        builder.setTitle(getString(R.string.share_workout));
        builder.setMessage(getString(R.string.should_workout_history_be_included));
          
        builder.setPositiveButton(getString(R.string.workout_with_history), new OnClickListener(){
          @Override
          public void onClick(DialogInterface dialog, int which) {
            Intent shareIntent = getShareIntent(mWorkout);
            startActivity(Intent.createChooser(shareIntent, "R.string.send_workout_to"));        
          }
        });
        
        
        builder.setNeutralButton(getString(R.string.workout_without_history), new OnClickListener(){
          @Override
          public void onClick(DialogInterface dialog, int which) {
            
            Intent shareIntent = getShareIntent(mWorkout.getWorkoutWithoutHistory());
            startActivity(Intent.createChooser(shareIntent, getString(R.string.send_workout_to)));        
          }
        });
        
        builder.show();
        
        return false;
      }
    });
    

     /* // Fetch and store ShareActionProvider
      mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(menu_item_share);
      
      if (mShareActionProvider != null) {
        Intent shareIntent = new Intent();
        shareIntent.setAction(Intent.ACTION_SEND);
        
        // write workout (without history) to tmp file
        Workout w = mWorkout.getWorkoutWithoutHistory();
        File cacheDir = getActivity().getExternalCacheDir();
        XMLSaver.writeTrainingPlan(w, cacheDir);
        File tmpFile = new File(cacheDir + "/"  + w.getName() + ".xml");
        
        if(!tmpFile.exists()){
          Log.e(TAG, "Temporary Workout file does not exist");
        }
        
        // read file
        StringBuilder text = new StringBuilder();
        try {
            BufferedReader br = new BufferedReader(new FileReader(tmpFile));
            String line;

            while ((line = br.readLine()) != null) {
                text.append(line);
                text.append('\n');
            }
            br.close();
        }
        catch(IOException e) {
          Log.e(TAG, "Could not read workout", e);
        }
        Log.e(TAG, "Finished reading file: " + text.toString());
        
        
        shareIntent.putExtra(Intent.EXTRA_TEXT, text.toString());
        shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(tmpFile));
        shareIntent.setType("text/plain");

          mShareActionProvider.setShareIntent(shareIntent);
      }*/


  }
  
  private Intent getShareIntent(Workout w){
    Intent shareIntent = new Intent();
      shareIntent.setAction(Intent.ACTION_SEND);
      
      // write workout (without history) to tmp file
      File cacheDir = getActivity().getExternalCacheDir();
      XMLSaver.writeTrainingPlan(w, cacheDir);
      File tmpFile = new File(cacheDir + "/"  + w.getName() + ".xml");
      
      if(!tmpFile.exists()){
        Log.e(TAG, "Temporary Workout file does not exist");
      }
      
      // read file
      StringBuilder text = new StringBuilder();
      try {
          BufferedReader br = new BufferedReader(new FileReader(tmpFile));
          String line;

          while ((line = br.readLine()) != null) {
              text.append(line);
              text.append('\n');
          }
          br.close();
      }
      catch(IOException e) {
        Log.e(TAG, "Could not read workout", e);
      }
      Log.e(TAG, "Finished reading file: " + text.toString());
      
      
      shareIntent.putExtra(Intent.EXTRA_TEXT, text.toString());
      shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(tmpFile));
      shareIntent.setType("text/plain");

      return shareIntent;
  }

}




Java Source Code List

at.technikum.mti.fancycoverflow.FancyCoverFlowAdapter.java
at.technikum.mti.fancycoverflow.FancyCoverFlowItemWrapper.java
at.technikum.mti.fancycoverflow.FancyCoverFlow.java
de.skubware.opentraining.activity.ChangeLogDialog.java
de.skubware.opentraining.activity.DisclaimerDialog.java
de.skubware.opentraining.activity.MainActivity.java
de.skubware.opentraining.activity.NavigationGalleryAdapter.java
de.skubware.opentraining.activity.SelectWorkoutDialogFragment.java
de.skubware.opentraining.activity.WhatsNewDialog.java
de.skubware.opentraining.activity.acra.ACRACrashReportMailer.java
de.skubware.opentraining.activity.acra.ACRAFeedbackMailer.java
de.skubware.opentraining.activity.acra.OpenTrainingApplication.java
de.skubware.opentraining.activity.acra.RequestExerciseUpdate.java
de.skubware.opentraining.activity.create_exercise.CreateExerciseActivity.java
de.skubware.opentraining.activity.create_exercise.CustomSpinner.java
de.skubware.opentraining.activity.create_exercise.DescriptionFragment.java
de.skubware.opentraining.activity.create_exercise.EditImageMetadataDialog.java
de.skubware.opentraining.activity.create_exercise.EquipmentDataFragment.java
de.skubware.opentraining.activity.create_exercise.ExerciseImageListAdapter.java
de.skubware.opentraining.activity.create_exercise.ImageFragment.java
de.skubware.opentraining.activity.create_exercise.MuscleDataFragment.java
de.skubware.opentraining.activity.create_exercise.NameFragment.java
de.skubware.opentraining.activity.create_exercise.SimpleDataFragment.java
de.skubware.opentraining.activity.create_exercise.SpinnerDataFragment.java
de.skubware.opentraining.activity.create_workout.DialogFilterMusclesAndEquipment.java
de.skubware.opentraining.activity.create_workout.DialogWorkoutOverviewFragment.java
de.skubware.opentraining.activity.create_workout.ExerciseDetailOnGestureListener.java
de.skubware.opentraining.activity.create_workout.ExerciseTypeDetailActivity.java
de.skubware.opentraining.activity.create_workout.ExerciseTypeDetailFragment.java
de.skubware.opentraining.activity.create_workout.ExerciseTypeListActivity.java
de.skubware.opentraining.activity.create_workout.ExerciseTypeListAdapter.java
de.skubware.opentraining.activity.create_workout.ExerciseTypeListFragment.java
de.skubware.opentraining.activity.create_workout.SelectMuscleDialog.java
de.skubware.opentraining.activity.create_workout.SendExerciseFeedbackDialogFragment.java
de.skubware.opentraining.activity.create_workout.upload_exercise.ExerciseImage.java
de.skubware.opentraining.activity.create_workout.upload_exercise.UploadExerciseAsyncTask.java
de.skubware.opentraining.activity.create_workout.upload_exercise.UploadExerciseImagesAsyncTask.java
de.skubware.opentraining.activity.create_workout.upload_exercise.WgerRestService.java
de.skubware.opentraining.activity.manage_workouts.RenameWorkoutDialogFragment.java
de.skubware.opentraining.activity.manage_workouts.WorkoutDetailActivity.java
de.skubware.opentraining.activity.manage_workouts.WorkoutDetailFragment.java
de.skubware.opentraining.activity.manage_workouts.WorkoutListActivity.java
de.skubware.opentraining.activity.manage_workouts.WorkoutListFragment.java
de.skubware.opentraining.activity.settings.LicenseDialog.java
de.skubware.opentraining.activity.settings.SettingsActivity.java
de.skubware.opentraining.activity.settings.sync.OpenTrainingSyncResultReceiver.java
de.skubware.opentraining.activity.settings.sync.OpenTrainingSyncService.java
de.skubware.opentraining.activity.settings.sync.RestClient.java
de.skubware.opentraining.activity.settings.sync.SyncFinishedDialog.java
de.skubware.opentraining.activity.settings.sync.WgerImageDownloader.java
de.skubware.opentraining.activity.settings.sync.WgerJSONParser.java
de.skubware.opentraining.activity.start_training.DialogFragmentAddEntry.java
de.skubware.opentraining.activity.start_training.DialogFragmentTrainingEntryTable.java
de.skubware.opentraining.activity.start_training.FExDetailActivity.java
de.skubware.opentraining.activity.start_training.FExDetailFragment.java
de.skubware.opentraining.activity.start_training.FExListActivity.java
de.skubware.opentraining.activity.start_training.FExListAdapter.java
de.skubware.opentraining.activity.start_training.FExListFragment.java
de.skubware.opentraining.activity.start_training.RecoveryTimerManager.java
de.skubware.opentraining.activity.start_training.SwipeDismissListViewTouchListener.java
de.skubware.opentraining.activity.start_training.SwipeDismissTouchListener.java
de.skubware.opentraining.activity.start_training.TrainingEntryListAdapter.java
de.skubware.opentraining.basic.ActivationLevel.java
de.skubware.opentraining.basic.ExerciseTag.java
de.skubware.opentraining.basic.ExerciseType.java
de.skubware.opentraining.basic.FSet.java
de.skubware.opentraining.basic.FitnessExercise.java
de.skubware.opentraining.basic.IExercise.java
de.skubware.opentraining.basic.License.java
de.skubware.opentraining.basic.Muscle.java
de.skubware.opentraining.basic.SportsEquipment.java
de.skubware.opentraining.basic.TrainingEntry.java
de.skubware.opentraining.basic.Translatable.java
de.skubware.opentraining.basic.Workout.java
de.skubware.opentraining.db.Cache.java
de.skubware.opentraining.db.DataHelper.java
de.skubware.opentraining.db.DataProvider.java
de.skubware.opentraining.db.IDataProvider.java
de.skubware.opentraining.db.parser.AbstractJSONParser.java
de.skubware.opentraining.db.parser.ExerciseTagJSONParser.java
de.skubware.opentraining.db.parser.ExerciseTypeXMLParser.java
de.skubware.opentraining.db.parser.IParser.java
de.skubware.opentraining.db.parser.MuscleJSONParser.java
de.skubware.opentraining.db.parser.SportsEquipmentJSONParser.java
de.skubware.opentraining.db.parser.WorkoutXMLParser.java
de.skubware.opentraining.db.parser.XMLSaver.java
de.skubware.opentraining.db.rest.ExerciseImageGSONSerializer.java
de.skubware.opentraining.db.rest.ExerciseTypeGSONSerializer.java
de.skubware.opentraining.db.rest.LanguageGSONDeserializer.java
de.skubware.opentraining.db.rest.MuscleGSONDeserializer.java
de.skubware.opentraining.db.rest.ServerModel.java
de.skubware.opentraining.db.rest.SportsEquipmentGSONDeserializer.java
de.skubware.opentraining.exporter.HTMLExporter.java
de.skubware.opentraining.exporter.LaTeXExporter.java
de.skubware.opentraining.exporter.WorkoutExporter.java