aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/com/example/wiimmterfaceandroid/viewmodel/FriendCodeViewModel.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/com/example/wiimmterfaceandroid/viewmodel/FriendCodeViewModel.java')
-rw-r--r--app/src/main/java/com/example/wiimmterfaceandroid/viewmodel/FriendCodeViewModel.java79
1 files changed, 76 insertions, 3 deletions
diff --git a/app/src/main/java/com/example/wiimmterfaceandroid/viewmodel/FriendCodeViewModel.java b/app/src/main/java/com/example/wiimmterfaceandroid/viewmodel/FriendCodeViewModel.java
index 82b892a..cf31868 100644
--- a/app/src/main/java/com/example/wiimmterfaceandroid/viewmodel/FriendCodeViewModel.java
+++ b/app/src/main/java/com/example/wiimmterfaceandroid/viewmodel/FriendCodeViewModel.java
@@ -1,9 +1,82 @@
package com.example.wiimmterfaceandroid.viewmodel;
+import android.app.Application;
+
+import androidx.lifecycle.AndroidViewModel;
+import androidx.lifecycle.MutableLiveData;
+
+import com.example.wiimmterfaceandroid.database.AppDatabase;
import com.example.wiimmterfaceandroid.model.FriendCode;
-public class FriendCodeViewModel {
- FriendCode friendCode = new FriendCode();
+import androidx.databinding.ObservableArrayList;
+import androidx.lifecycle.AndroidViewModel;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
+import androidx.room.Room;
+import androidx.room.RoomDatabase;
+
+import androidx.databinding.ObservableArrayList;
+
+public class FriendCodeViewModel extends AndroidViewModel {
+ ObservableArrayList<FriendCode> entries = new ObservableArrayList<>();
+ MutableLiveData<Boolean> saving = new MutableLiveData<>();
+ MutableLiveData<FriendCode> currentEntry = new MutableLiveData<>();
+ AppDatabase db;
+ public FriendCodeViewModel(Application app) {
+ super(app);
+ saving.setValue(false);
+ db = Room.databaseBuilder(app, AppDatabase.class, "fc-database").build();
+ new Thread(() -> {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ entries.addAll(db.getFriendCodeDao().getAll());
+ }).start();
+ }
+
+ public void setCurrentEntry(FriendCode entry) {
+ currentEntry.postValue(entry);
+ }
+
+ public MutableLiveData<FriendCode> getCurrentEntry() {
+ return currentEntry;
+ }
+
+ public MutableLiveData<Boolean> getSaving() {
+ return saving;
+ }
+
+ public ObservableArrayList<FriendCode> getEntries() {
+ return entries;
+ }
+
+ public void saveFriendCode(String name, String friendCode) {
+ saving.setValue(true);
+ new Thread(() -> {
+ if (currentEntry.getValue() != null) {
+ FriendCode current = currentEntry.getValue();
+ current.name = name;
+ current.friendCode = friendCode;
+ db.getFriendCodeDao().update(current);
+ int index = entries.indexOf(current);
+ entries.set(index, current);
+ } else {
+ FriendCode newEntry = new FriendCode();
+ newEntry.name = name;
+ newEntry.friendCode = friendCode;
+ entries.add(newEntry);
+ }
+ saving.postValue(false);
+ }).start();
+ }
-}
+ public void deleteEntry(FriendCode entry) {
+ new Thread(() -> {
+ db.getFriendCodeDao().delete(entry);
+ entries.remove(entry);
+ }).start();
+ }
+ }