Android Open Source - opentraining Sync Finished Dialog






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

/**
 * /*from  w  w w  .  j  a v  a2  s.c om*/
 * This is OpenTraining, an Android application for planning your your fitness training.
 * Copyright (C) 2012-2014 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.settings.sync;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import de.skubware.opentraining.R;
import de.skubware.opentraining.basic.ExerciseType;
import de.skubware.opentraining.db.DataProvider;
import de.skubware.opentraining.db.IDataProvider;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.util.Log;
import android.util.SparseBooleanArray;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ListView;
import android.widget.TextView;

/**
 * A dialog that is shown after the exercises have been downloaded. The user can
 * choose which exercises should be saved.
 * 
 */
public class SyncFinishedDialog extends AlertDialog.Builder {
  /** Tag for logging*/
  private final String TAG = "SyncFinishedDialog";
  
  private Context mContext;
  
  private ArrayList<ExerciseType> mAllExercisesList;
  private ArrayList<ExerciseType> mExerciseToSaveList;
  private TextView mExerciseCountTextView;

  /** Indicates whether only exercises with images should be saved. */
  private boolean withImagesOnly = false;
  /** Indicates whether only exercises with images should be saved. */

  private boolean withDescriptionOnly = false;
  /** Exercises with one of this Locale will be saved. */
  private Set<Locale> localesToSave = new HashSet<Locale>();
  
  public SyncFinishedDialog(final Context context,
      ArrayList<ExerciseType> newExerciseList) {
    super(context);
    mContext = context;
    mAllExercisesList = new ArrayList<ExerciseType>(newExerciseList);
     
    LayoutInflater inflater = ((Activity) context).getLayoutInflater();
    View v = inflater.inflate(R.layout.dialog_sync_finished, null);
    this.setView(v);

    mExerciseCountTextView = (TextView) v.findViewById(R.id.textview_exercise_count);

    this.setPositiveButton(context.getString(R.string.save),
        new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int id) {
            dialog.dismiss();
            saveExercises();
          }
        });
    
    this.setNegativeButton(context.getString(android.R.string.cancel),
        new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int id) {
            dialog.dismiss();
          }
        });
    
    
    // show exercises in ListView
    final ListView exerciseListView = (ListView) v.findViewById(R.id.new_exercise_list);
    Set<Locale> localeSet= new HashSet<Locale>();
    for(ExerciseType ex:mAllExercisesList){
      localeSet.addAll(ex.getTranslationMap().keySet());
    }
    final List<Locale> localeList = new ArrayList<Locale>(localeSet);
    // create String list with the full language-String(e.g. not 'en' but'English')
    final List<String> localeStringList = new ArrayList<String>();
    for(Locale locale:localeList){
      localeStringList.add(locale.getDisplayLanguage(locale));
    }
    
    final ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(
        context, android.R.layout.simple_list_item_multiple_choice,
        localeStringList);
    exerciseListView.setAdapter(listAdapter);
    exerciseListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    
    // update the mExerciseCountTextView when items are (un)checked
    exerciseListView.setOnItemClickListener(new OnItemClickListener(){
      @Override
      public void onItemClick(AdapterView<?> adapter, View view, int wich,
          long id) {
        // get checked Locales
        SparseBooleanArray checkedItemPositions = exerciseListView.getCheckedItemPositions();
        localesToSave = new HashSet<Locale>();
        for(int i = 0; i<localeList.size(); i++){
          // add checked Locales to Set
          if(checkedItemPositions.get(i))
            localesToSave.add(localeList.get(i));
        }
        
        updateExercisesToSave();        
      }
    });
    
    // set listeners for CheckBoxes
    CheckBox checkbox_only_with_description = (CheckBox) v.findViewById(R.id.checkbox_only_with_description);
    CheckBox checkbox_only_with_images = (CheckBox) v.findViewById(R.id.checkbox_only_with_images);
    checkbox_only_with_description.setOnCheckedChangeListener( new OnCheckedChangeListener(){
      @Override
      public void onCheckedChanged(CompoundButton buttonView,
          boolean isChecked) {
        withDescriptionOnly = isChecked;
        updateExercisesToSave();
      }
    });
    checkbox_only_with_images.setOnCheckedChangeListener( new OnCheckedChangeListener(){
      @Override
      public void onCheckedChanged(CompoundButton buttonView,
          boolean isChecked) {
        withImagesOnly = isChecked;
        updateExercisesToSave();
      }
    });

  }
  
  /**
   * Updates the list with exercises that should be saved. Also updates the
   * number of exercises displayed on the GUI.
   */
  private void updateExercisesToSave() {
    Log.v(TAG, "updateExercisesToSave(); withImagesOnly=" + withImagesOnly + ", withDescriptionOnly=" + withDescriptionOnly);
    mExerciseToSaveList = new ArrayList<ExerciseType>(mAllExercisesList);

    for (ExerciseType exercise : mAllExercisesList) {
      // remove exercises without images
      if (withImagesOnly && exercise.getImagePaths().isEmpty()) {
        mExerciseToSaveList.remove(exercise);
        continue;
      }
      
      if(withDescriptionOnly && (exercise.getDescription()==null || exercise.getDescription().equals(""))){
        mExerciseToSaveList.remove(exercise);
        continue;
      }

      // remove exercises with wrong localization
      boolean keepExercise = false;
      for (Locale localeToSave : localesToSave) {
        for (Locale exerciseLocale : exercise.getTranslationMap()
            .keySet()) {
          // only language needs to be compared
          if (localeToSave.getLanguage().equals(
              exerciseLocale.getLanguage())) {
            keepExercise = true;
          }
        }
      }
      if (!keepExercise) {
        mExerciseToSaveList.remove(exercise);
        continue;
      }
    }

    mExerciseCountTextView.setText(Integer.toString(mExerciseToSaveList
        .size()));
    Log.v(TAG, "There are " + mExerciseToSaveList
        .size() + " exercises that should be saved.");
  }
  
  private void saveExercises(){
    // create ProgessDialog
    final ProgressDialog mProgressDialog = new ProgressDialog(mContext);
    mProgressDialog.setTitle(mContext.getString(R.string.sync_in_progess));
    mProgressDialog.setMessage(mContext
        .getString(R.string.saving_exercises));
    mProgressDialog.setIndeterminate(true);
    mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    mProgressDialog.setCancelable(true);
    mProgressDialog.setOnCancelListener(new OnCancelListener() {
      @Override
      public void onCancel(DialogInterface dialog) {
        Toast.makeText(mContext,
            mContext.getString(R.string.sync_canceled),
            Toast.LENGTH_LONG).show();
        dialog.dismiss();
      }
    });
    mProgressDialog.show();
    
    // finally save the exercises
    IDataProvider dataProvider = new DataProvider(mContext);
    dataProvider.saveSyncedExercises(mExerciseToSaveList);
    // close dialog when finished
    mProgressDialog.dismiss();
  }
}




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