diff --git a/app/src/main/java/com/app/trackit/model/db/TrackItRepository.java b/app/src/main/java/com/app/trackit/model/db/TrackItRepository.java index 23d7d72..c7113c7 100644 --- a/app/src/main/java/com/app/trackit/model/db/TrackItRepository.java +++ b/app/src/main/java/com/app/trackit/model/db/TrackItRepository.java @@ -15,7 +15,6 @@ import com.app.trackit.model.db.dao.PhotoDao; import com.app.trackit.model.db.dao.WorkoutDao; import com.app.trackit.ui.MainActivity; -import com.google.common.util.concurrent.ListenableFuture; import java.util.Date; import java.util.List; @@ -38,7 +37,7 @@ public TrackItRepository(Application application) { workoutDao = db.workoutDao(); photoDao = db.photoDao(); exercises = exerciseDao.getAllExercises(); - workouts = workoutDao.getAll(); + workouts = workoutDao.getObservableWorkouts(); // photos = photoDao.getAllByDate(); } @@ -148,15 +147,6 @@ public List getPerformancesForExercise(int exerciseId) { return null; } - public int getBestReps(int exerciseId) { - try { - return exerciseDao.getBestReps(exerciseId).get(); - } catch (ExecutionException | InterruptedException e) { - Log.d(TAG, e.toString()); - } - return 0; - } - public Set getBestSetForReps(int performedExerciseId) { try { return exerciseDao.getBestSetForReps(performedExerciseId).get(); @@ -183,6 +173,15 @@ public LiveData> loadAllWorkouts() { return workouts; } + public List getAllWorkouts() { + try { + return workoutDao.getWorkouts().get(); + } catch (ExecutionException | InterruptedException e) { + e.printStackTrace(); + } + return null; + } + public List getWorkoutExercises(int workoutId) { try { return exerciseDao.getExercisesFromWorkout(workoutId).get(); diff --git a/app/src/main/java/com/app/trackit/model/db/dao/WorkoutDao.java b/app/src/main/java/com/app/trackit/model/db/dao/WorkoutDao.java index 8c77f9a..e0cf644 100644 --- a/app/src/main/java/com/app/trackit/model/db/dao/WorkoutDao.java +++ b/app/src/main/java/com/app/trackit/model/db/dao/WorkoutDao.java @@ -34,7 +34,10 @@ public interface WorkoutDao { void editWorkout(int id); @Query("SELECT * FROM workouts ORDER BY date DESC") - LiveData> getAll(); + LiveData> getObservableWorkouts(); + + @Query("SELECT * FROM workouts ORDER BY date DESC") + ListenableFuture> getWorkouts(); @Query("SELECT * FROM workouts WHERE workoutId = :id") ListenableFuture getWorkout(int id); diff --git a/app/src/main/java/com/app/trackit/model/viewmodel/ExercisesViewModel.java b/app/src/main/java/com/app/trackit/model/viewmodel/ExercisesViewModel.java index 13a2f33..ecb3bc9 100644 --- a/app/src/main/java/com/app/trackit/model/viewmodel/ExercisesViewModel.java +++ b/app/src/main/java/com/app/trackit/model/viewmodel/ExercisesViewModel.java @@ -31,6 +31,4 @@ public boolean isFavorite(Exercise exercise) { return repository.isExerciseFavorite(exercise.getExerciseId()); } - // FIXME: - // A population method for the main exercises could be added here } diff --git a/app/src/main/java/com/app/trackit/model/viewmodel/WorkoutListViewModel.java b/app/src/main/java/com/app/trackit/model/viewmodel/WorkoutListViewModel.java index a7ff619..b489f52 100644 --- a/app/src/main/java/com/app/trackit/model/viewmodel/WorkoutListViewModel.java +++ b/app/src/main/java/com/app/trackit/model/viewmodel/WorkoutListViewModel.java @@ -30,4 +30,8 @@ public WorkoutListViewModel(Application application) { public LiveData> getObservableWorkouts() { return workouts; } + + public List getWorkouts() { + return repository.getAllWorkouts(); + } } diff --git a/app/src/main/java/com/app/trackit/ui/ExercisesFragment.java b/app/src/main/java/com/app/trackit/ui/ExercisesFragment.java index 7d3595a..e755fee 100644 --- a/app/src/main/java/com/app/trackit/ui/ExercisesFragment.java +++ b/app/src/main/java/com/app/trackit/ui/ExercisesFragment.java @@ -37,10 +37,6 @@ public ExercisesFragment() { public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); model = new ViewModelProvider(this).get(ExercisesViewModel.class); - model.getAllExercises().observe(this, exerciseList -> { - exerciseListAdapter.submitList(exerciseList); - exerciseListAdapter.notifyDataSetChanged(); - }); } @Nullable @@ -55,6 +51,14 @@ public View onCreateView(@NonNull LayoutInflater inflater, false); rootView.setTag(TAG); + model.getAllExercises().observe(getViewLifecycleOwner(), exerciseList -> { + if (exerciseList.size() > 0) { + rootView.findViewById(R.id.exercise_helper).setVisibility(View.GONE); + } + exerciseListAdapter.submitList(exerciseList); + exerciseListAdapter.notifyDataSetChanged(); + }); + recyclerView = rootView.findViewById(R.id.exercises_recycler_view); recyclerView.setHasFixedSize(true); exerciseListAdapter = new ExerciseListAdapter(new ExerciseListAdapter.ExerciseDiff()); diff --git a/app/src/main/java/com/app/trackit/ui/MainActivity.java b/app/src/main/java/com/app/trackit/ui/MainActivity.java index 8b5b966..f9aa203 100644 --- a/app/src/main/java/com/app/trackit/ui/MainActivity.java +++ b/app/src/main/java/com/app/trackit/ui/MainActivity.java @@ -53,6 +53,7 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // To disable the Night mode. It will be developed in the future releases AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); + // To tolerate Uri exposure and share images with phone's gallery apps StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); StrictMode.setVmPolicy(builder.build()); repo = new TrackItRepository(getApplication()); @@ -68,7 +69,7 @@ protected void onCreate(Bundle savedInstanceState) { alarmManager.setRepeating( AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (1000*60), - (AlarmManager.INTERVAL_FIFTEEN_MINUTES/15), + AlarmManager.INTERVAL_DAY, pendingIntent); BottomNavigationView navigationView = findViewById(R.id.bottom_navigation); diff --git a/app/src/main/java/com/app/trackit/ui/ProgressFragment.java b/app/src/main/java/com/app/trackit/ui/ProgressFragment.java index bd63b95..2170b8c 100644 --- a/app/src/main/java/com/app/trackit/ui/ProgressFragment.java +++ b/app/src/main/java/com/app/trackit/ui/ProgressFragment.java @@ -57,11 +57,6 @@ public void onCreate(@Nullable Bundle savedInstanceState) { statsModel = new ViewModelProvider(requireActivity()).get(StatsViewModel.class); workoutModel = new ViewModelProvider(requireActivity()).get(WorkoutViewModel.class); - workoutModel.getObservableFavorites().observe(this, exerciseList -> { - Log.d(TAG, exerciseList.toString()); - chartAdapter.submitList(exerciseList); - chartAdapter.notifyDataSetChanged(); - }); } @Nullable @@ -72,6 +67,14 @@ public View onCreateView(@NonNull LayoutInflater inflater, View rootView = inflater.inflate(R.layout.fragment_progress, container, false); + workoutModel.getObservableFavorites().observe( getViewLifecycleOwner(), exerciseList -> { + if (exerciseList.size() > 0 ) { + rootView.findViewById(R.id.progress_helper).setVisibility(View.GONE); + } + chartAdapter.submitList(exerciseList); + chartAdapter.notifyDataSetChanged(); + }); + recyclerView = rootView.findViewById(R.id.progress_recycler_view); linearLayoutManager = new LinearLayoutManager(getActivity()); diff --git a/app/src/main/java/com/app/trackit/ui/WorkoutsFragment.java b/app/src/main/java/com/app/trackit/ui/WorkoutsFragment.java index 78ac936..7115cd4 100644 --- a/app/src/main/java/com/app/trackit/ui/WorkoutsFragment.java +++ b/app/src/main/java/com/app/trackit/ui/WorkoutsFragment.java @@ -1,6 +1,7 @@ package com.app.trackit.ui; import android.os.Bundle; +import android.util.Log; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; @@ -15,6 +16,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.app.trackit.R; +import com.app.trackit.model.Workout; import com.app.trackit.model.utility.Utilities; import com.app.trackit.model.viewmodel.WorkoutListViewModel; import com.app.trackit.ui.components.AddFab; @@ -22,6 +24,7 @@ import com.google.android.material.bottomnavigation.BottomNavigationView; import java.util.Collections; +import java.util.List; public class WorkoutsFragment extends Fragment implements LifecycleOwner { @@ -53,12 +56,18 @@ public View onCreateView(@NonNull LayoutInflater inflater, View rootView = inflater.inflate(R.layout.fragment_workouts, container, false); rootView.setTag(TAG); + List list = model.getWorkouts(); + + if (list.size() > 0) { + rootView.findViewById(R.id.workout_helper).setVisibility(View.GONE); + } + model.getObservableWorkouts().observe(getViewLifecycleOwner(), workouts -> { workoutListAdapter.submitList(workouts); workoutListAdapter.notifyDataSetChanged(); }); - // FIXME: put this button inside the other fragments too + // FIXME: put this button inside the other fragments too, for a better UX this.fab = new AddFab( rootView.findViewById(R.id.fab_add), rootView.findViewById(R.id.fab_add_exercise), @@ -76,8 +85,6 @@ public View onCreateView(@NonNull LayoutInflater inflater, workoutListAdapter = new WorkoutListAdapter(new WorkoutListAdapter.WorkoutDiff(), getActivity()); recyclerView.setAdapter(workoutListAdapter); -// Log.d(TAG, String.valueOf(MainActivity.repo.getBestSetForReps(1).getReps())); - return rootView; } } \ No newline at end of file diff --git a/app/src/main/java/com/app/trackit/ui/recycler_view/viewholder/WorkoutListViewHolder.java b/app/src/main/java/com/app/trackit/ui/recycler_view/viewholder/WorkoutListViewHolder.java index 5d9f49e..d1e73d5 100644 --- a/app/src/main/java/com/app/trackit/ui/recycler_view/viewholder/WorkoutListViewHolder.java +++ b/app/src/main/java/com/app/trackit/ui/recycler_view/viewholder/WorkoutListViewHolder.java @@ -25,7 +25,6 @@ public class WorkoutListViewHolder extends RecyclerView.ViewHolder { private static final String TAG = "WorkoutListViewHolder"; private int workoutId; - private boolean edit; private final MaterialTextView titleTextView; private final MaterialTextView dateTextView; @@ -40,7 +39,6 @@ public WorkoutListViewHolder(@NonNull View itemView) { MaterialCardView cardView = itemView.findViewById(R.id.home_item_card_view); cardView.setOnClickListener(v -> { model.editWorkout(); - edit = true; Bundle bundle = new Bundle(); bundle.putBoolean("edit", true); bundle.putInt("workoutId", workoutId); diff --git a/app/src/main/res/layout/fragment_exercise_list.xml b/app/src/main/res/layout/fragment_exercise_list.xml index 39fc222..6bc838b 100644 --- a/app/src/main/res/layout/fragment_exercise_list.xml +++ b/app/src/main/res/layout/fragment_exercise_list.xml @@ -20,6 +20,32 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + + + + + + app:layout_constraintTop_toBottomOf="@+id/exercise_helper"/> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_photos.xml b/app/src/main/res/layout/fragment_photos.xml index 4ce1752..31ea471 100644 --- a/app/src/main/res/layout/fragment_photos.xml +++ b/app/src/main/res/layout/fragment_photos.xml @@ -21,24 +21,40 @@ android:textAppearance="@style/TextAppearance.AppCompat.Display1" android:textColor="@color/black" /> + + + + + -