Skip to content

Commit

Permalink
#51 added action and move methods to application service
Browse files Browse the repository at this point in the history
  • Loading branch information
avalax committed Sep 26, 2014
1 parent 73887d7 commit 77ab90c
Show file tree
Hide file tree
Showing 12 changed files with 159 additions and 90 deletions.
12 changes: 0 additions & 12 deletions res/menu/edit_exercise_actions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,4 @@
android:icon="@drawable/ic_action_accept"
android:showAsAction="always"
android:title="save changes" />
<item
android:id="@+id/action_add_exercise"
android:showAsAction="collapseActionView"
android:title="add exercise before" />
<item
android:id="@+id/action_add_exercise_after"
android:showAsAction="collapseActionView"
android:title="add exercise after" />
<item
android:id="@+id/action_delete_exercise"
android:showAsAction="collapseActionView"
android:title="delete exercise" />
</menu>
18 changes: 18 additions & 0 deletions res/menu/edit_exerciselist_actions.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_add_exercise"
android:showAsAction="collapseActionView"
android:title="add exercise" />
<item
android:id="@+id/action_move_exercise_up"
android:showAsAction="collapseActionView"
android:title="move up" />
<item
android:id="@+id/action_move_exercise_down"
android:showAsAction="collapseActionView"
android:title="move down" />
<item
android:id="@+id/action_delete_exercise"
android:showAsAction="collapseActionView"
android:title="delete" />
</menu>
File renamed without changes.
7 changes: 0 additions & 7 deletions res/menu/manage_workout_cab_actions.xml

This file was deleted.

File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -139,13 +139,7 @@ public void createExercise() {
setUnsavedChanges(false);
}

public void createExerciseBefore(int position) {
workout.createExercise(position);
workoutRepository.save(workout);
setUnsavedChanges(false);
}

public void createExerciseAfter(int position) {
public void createExerciseAfterPosition(int position) {
workout.createExercise(position + 1);
workoutRepository.save(workout);
setUnsavedChanges(false);
Expand Down Expand Up @@ -197,4 +191,26 @@ public void changeSetAmount(Exercise exercise, int newSetAmount) throws Ressourc
}
setUnsavedChanges(false);
}

public void moveExerciseAtPositionUp(int position) throws RessourceNotFoundException {
if (position <= 0) {
return;
}
Exercise exercise = workout.exerciseAtPosition(position);
workout.deleteExercise(exercise);
workout.addExercise(position - 1, exercise);
workoutRepository.save(workout);
setUnsavedChanges(false);
}

public void moveExerciseAtPositionDown(int position) throws RessourceNotFoundException {
if (position + 1 >= workout.countOfExercises()) {
return;
}
Exercise exercise = workout.exerciseAtPosition(position);
workout.deleteExercise(exercise);
workout.addExercise(position + 1, exercise);
workoutRepository.save(workout);
setUnsavedChanges(false);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,22 +55,10 @@ public boolean onCreateOptionsMenu(Menu menu) {

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_delete_exercise) {
editWorkoutApplicationService.deleteExercise(exercise, position);
setResult(RESULT_OK);
finish();
} else if (item.getItemId() == R.id.action_save_exercise) {
if (item.getItemId() == R.id.action_save_exercise) {
editWorkoutApplicationService.saveExercise(exercise, position);
setResult(RESULT_OK);
finish();
} else if (item.getItemId() == R.id.action_add_exercise) {
editWorkoutApplicationService.createExerciseBefore(position);
setResult(RESULT_OK);
finish();
} else if (item.getItemId() == R.id.action_add_exercise_after) {
editWorkoutApplicationService.createExerciseAfter(position);
setResult(RESULT_OK);
finish();
}
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public void onSaveInstanceState(Bundle savedInstanceState) {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.manage_workout_actions, menu);
inflater.inflate(R.menu.edit_workout_actions, menu);
return super.onCreateOptionsMenu(menu);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import android.support.v4.app.ListFragment;
import android.util.Log;
import android.view.*;
import android.widget.AbsListView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
Expand Down Expand Up @@ -49,7 +48,7 @@ public void onActivityCreated(Bundle savedInstanceState) {

private void initContextualActionBar() {
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
getListView().setMultiChoiceModeListener(new MultiChoiceModeListener());
getListView().setMultiChoiceModeListener(new ExerciseListMultiChoiceModeListener(this));
}

protected void initListView() {
Expand Down Expand Up @@ -123,43 +122,4 @@ protected void addExercise() {
initListView();
}

private class MultiChoiceModeListener implements AbsListView.MultiChoiceModeListener {

@Override
public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
setTitle(mode);
}

@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
//TODO: change menu,when more then one is selected
mode.getMenuInflater().inflate(R.menu.manage_workout_cab_actions, menu);
setTitle(mode);
return true;
}

@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}

@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
//TODO: add ActionItemClicked Events
return false;
}

@Override
public void onDestroyActionMode(ActionMode mode) {

}

private void setTitle(ActionMode mode) {
if (getListView().getCheckedItemCount() > 1) {
mode.setTitle(getResources().getText(R.string.cab_title_manage_exercises));
} else {
mode.setTitle(getResources().getText(R.string.cab_title_manage_exercise));
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package de.avalax.fitbuddy.presentation.edit.workout;

import android.util.Log;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.AbsListView;
import de.avalax.fitbuddy.presentation.R;

class ExerciseListMultiChoiceModeListener implements AbsListView.MultiChoiceModeListener {
private ExerciseListFragment exerciseListFragment;
private MenuItem addExerciseMenuItem;
private MenuItem moveExerciseUpMenuItem;
private MenuItem moveExerciseDownMenuItem;

public ExerciseListMultiChoiceModeListener(ExerciseListFragment exerciseListFragment) {
this.exerciseListFragment = exerciseListFragment;
}

@Override
public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
updateMenuItems();
}

@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mode.getMenuInflater().inflate(R.menu.edit_exerciselist_actions, mode.getMenu());
mode.setTitle(exerciseListFragment.getResources().getText(R.string.cab_title_manage_exercises));
addExerciseMenuItem = menu.findItem(R.id.action_add_exercise);
moveExerciseUpMenuItem = menu.findItem(R.id.action_move_exercise_up);
moveExerciseDownMenuItem = menu.findItem(R.id.action_move_exercise_down);
updateMenuItems();
return true;
}

@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}

@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
if (item.getItemId() == R.id.action_add_exercise) {
Log.d("onActionItemClicked","add exercise");
}
if (item.getItemId() == R.id.action_move_exercise_up) {
Log.d("onActionItemClicked","move exercise up");
}
if (item.getItemId() == R.id.action_move_exercise_down) {
Log.d("onActionItemClicked","move exercise down");
}
if (item.getItemId() == R.id.action_delete_exercise) {
Log.d("onActionItemClicked","add exercise after");
}

return false;
}

@Override
public void onDestroyActionMode(ActionMode mode) {

}

private void updateMenuItems() {
boolean multiSelect = exerciseListFragment.getListView().getCheckedItemCount() > 1;
addExerciseMenuItem.setVisible(!multiSelect);
moveExerciseUpMenuItem.setVisible(!multiSelect);
moveExerciseDownMenuItem.setVisible(!multiSelect);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public void onCreate(Bundle savedInstanceState) {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.activity_main_actions, menu);
inflater.inflate(R.menu.workout_actions, menu);
this.menuItem = menu.findItem(R.id.action_change_weight);
try {
viewPager.setAdapter(new ExercisePagerAdapter(getSupportFragmentManager(), workoutApplicationService.countOfExercises()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ public void setUp() throws Exception {
workout.setWorkoutId(workoutId);
when(workoutRepository.load(workoutId)).thenReturn(workout);
exercise = workout.createExercise();
exercise.setName("ExerciseOne");

editWorkoutApplicationService.setWorkout(workoutId);
}
Expand Down Expand Up @@ -147,8 +148,8 @@ public void createExercise_shouldPersistTheExercise() throws Exception {
}

@Test
public void createExerciseAfter_shouldPlaceTheExerciseAfterTheGiven() throws Exception {
editWorkoutApplicationService.createExerciseAfter(0);
public void createExerciseAfterPosition_shouldPlaceTheExerciseAfterTheGiven() throws Exception {
editWorkoutApplicationService.createExerciseAfterPosition(0);

assertThat(workout.countOfExercises(), equalTo(2));
Exercise newExercise = workout.exerciseAtPosition(1);
Expand All @@ -158,13 +159,48 @@ public void createExerciseAfter_shouldPlaceTheExerciseAfterTheGiven() throws Exc
}

@Test
public void createExerciseBefore_shouldPlaceTheExerciseBeforeTheGiven() throws Exception {
editWorkoutApplicationService.createExerciseBefore(0);
public void moveFirstExerciseAtPositionUp_shouldDoNothing() throws Exception {
editWorkoutApplicationService.moveExerciseAtPositionUp(0);

verify(workoutRepository, never()).save(workout);
assertThat(workout.exerciseAtPosition(0), equalTo(exercise));
assertThat(editWorkoutApplicationService.unsavedChangesVisibility(), equalTo(View.GONE));
}

@Test
public void moveExerciseAtPositionUp_shouldPlaceTheExerciseAtTheRightPosition() throws Exception {
Exercise exerciseToMove = workout.createExercise();
exerciseToMove.setName("ExerciseTwo");

editWorkoutApplicationService.moveExerciseAtPositionUp(1);

assertThat(workout.countOfExercises(), equalTo(2));
Exercise newExercise = workout.exerciseAtPosition(0);
verify(workoutRepository).save(workout);
assertThat(newExercise, not(equalTo(exercise)));
assertThat(workout.exerciseAtPosition(0), equalTo(exerciseToMove));
assertThat(editWorkoutApplicationService.unsavedChangesVisibility(), equalTo(View.GONE));
}

@Test
public void moveLastExerciseAtPositionDown_shouldDoNothing() throws Exception {
Exercise lastExercise = workout.createExercise();

editWorkoutApplicationService.moveExerciseAtPositionDown(1);

verify(workoutRepository, never()).save(workout);
assertThat(workout.exerciseAtPosition(1), equalTo(lastExercise));
assertThat(editWorkoutApplicationService.unsavedChangesVisibility(), equalTo(View.GONE));
}

@Test
public void moveExerciseAtPositionDown_shouldPlaceTheExerciseAtTheRightPosition() throws Exception {
Exercise exerciseToMove = workout.createExercise();
exerciseToMove.setName("ExerciseToMove");
Exercise lastExercise = workout.createExercise();
lastExercise.setName("ExerciseLast");

editWorkoutApplicationService.moveExerciseAtPositionDown(1);

verify(workoutRepository).save(workout);
assertThat(workout.exerciseAtPosition(2), equalTo(exerciseToMove));
assertThat(editWorkoutApplicationService.unsavedChangesVisibility(), equalTo(View.GONE));
}

Expand Down Expand Up @@ -311,7 +347,7 @@ public void changeSetAmountToOne_shouldRemoveTwoSets() throws Exception {

editWorkoutApplicationService.changeSetAmount(exercise, 1);

assertThat(exercise.countOfSets(),equalTo(1));
assertThat(exercise.countOfSets(), equalTo(1));
}

@Test
Expand Down

0 comments on commit 77ab90c

Please sign in to comment.