diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 13566b8..0000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
deleted file mode 100644
index a55e7a1..0000000
--- a/.idea/codeStyles/codeStyleConfig.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
deleted file mode 100644
index 3ca65a2..0000000
--- a/.idea/dataSources.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
- sqlite.xerial
- true
- org.sqlite.JDBC
- jdbc:sqlite:$PROJECT_DIR$/music_database
-
-
-
- $ProjectFileDir$
-
-
- sqlite.xerial
- true
- org.sqlite.JDBC
- jdbc:sqlite:$PROJECT_DIR$/music_database
-
-
-
- $ProjectFileDir$
-
-
- sqlite.xerial
- true
- org.sqlite.JDBC
- jdbc:sqlite:$USER_HOME$/.cache/JetBrains/IntelliJIdea2024.1/device-explorer/Pixel Tablet API 30/_/data/data/core.notevault/databases/music_database
-
-
-
- $ProjectFileDir$
-
-
- file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.45.1/org/xerial/sqlite-jdbc/3.45.1.0/sqlite-jdbc-3.45.1.0.jar
-
-
- file://$APPLICATION_CONFIG_DIR$/jdbc-drivers/Xerial SQLiteJDBC/3.45.1/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
deleted file mode 100644
index 612ad88..0000000
--- a/.idea/deploymentTargetDropDown.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
deleted file mode 100644
index b268ef3..0000000
--- a/.idea/deploymentTargetSelector.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 7c2d85a..ed6ca53 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,12 +1,5 @@
+
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
deleted file mode 100644
index 2b63946..0000000
--- a/.idea/uiDesigner.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
- -
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 94a25f7..35eb1dd 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index ebf81a8..c7463f6 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -1,16 +1,15 @@
plugins {
- alias(libs.plugins.android.application)
-
+ id("com.android.application")
}
android {
- namespace = "core.notevault"
- compileSdk = 35
+ namespace = "com.stormtales.notevault"
+ compileSdk = 34
defaultConfig {
- applicationId = "core.notevault"
- minSdk = 28
- targetSdk = 35
+ applicationId = "com.stormtales.notevault"
+ minSdk = 29
+ targetSdk = 34
versionCode = 1
versionName = "1.0"
@@ -22,10 +21,6 @@ android {
isMinifyEnabled = false
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
- debug {
- // Setzt den Manifest-Platzhalter nur für den Debug-Build auf true
- manifestPlaceholders["usesCleartextTraffic"] = "true"
- }
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
@@ -38,32 +33,14 @@ android {
dependencies {
- implementation(libs.appcompat)
- implementation(libs.material)
- implementation(libs.constraintlayout)
- implementation(libs.lifecycle.livedata.ktx)
- implementation(libs.lifecycle.viewmodel.ktx)
- implementation(libs.navigation.fragment)
- implementation(libs.navigation.ui)
- implementation(libs.room.common)
- implementation("androidx.recyclerview:recyclerview:1.3.2")
- implementation("com.github.chrisbanes:PhotoView:2.3.0")
- implementation(libs.car.ui.lib)
- testImplementation(libs.junit)
- androidTestImplementation(libs.ext.junit)
- androidTestImplementation(libs.espresso.core)
- implementation("com.squareup.retrofit2:retrofit:2.9.0")
- implementation("com.squareup.retrofit2:converter-gson:2.9.0")
- implementation("com.squareup.okhttp3:logging-interceptor:4.9.1")
-
-
- val room_version = "2.6.1" // Aktuelle Room-Version
-
- implementation("androidx.room:room-runtime:$room_version")
- annotationProcessor("androidx.room:room-compiler:$room_version") // Für Annotation Processing
-
- // Optional: Unterstützung für Kotlin Coroutines oder RxJava
- implementation("androidx.room:room-ktx:$room_version") // Für Kotlin-Extensions
- implementation("androidx.room:room-rxjava3:$room_version") // Für RxJava-Unterstützung
- implementation("androidx.work:work-runtime:2.10.0")
+ implementation("androidx.appcompat:appcompat:1.7.0")
+ implementation("com.google.android.material:material:1.12.0")
+ implementation("androidx.constraintlayout:constraintlayout:2.2.0")
+ implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.8.7")
+ implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7")
+ implementation("androidx.navigation:navigation-fragment:2.8.3")
+ implementation("androidx.navigation:navigation-ui:2.8.3")
+ testImplementation("junit:junit:4.13.2")
+ androidTestImplementation("androidx.test.ext:junit:1.2.1")
+ androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1")
}
\ No newline at end of file
diff --git a/app/src/androidTest/java/core/notevault/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/stormtales/notevault/ExampleInstrumentedTest.java
similarity index 85%
rename from app/src/androidTest/java/core/notevault/ExampleInstrumentedTest.java
rename to app/src/androidTest/java/com/stormtales/notevault/ExampleInstrumentedTest.java
index 165c633..b779b0e 100644
--- a/app/src/androidTest/java/core/notevault/ExampleInstrumentedTest.java
+++ b/app/src/androidTest/java/com/stormtales/notevault/ExampleInstrumentedTest.java
@@ -1,4 +1,4 @@
-package core.notevault;
+package com.stormtales.notevault;
import android.content.Context;
import androidx.test.platform.app.InstrumentationRegistry;
@@ -20,6 +20,6 @@ public class ExampleInstrumentedTest {
public void useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
- assertEquals("core.notevault", appContext.getPackageName());
+ assertEquals("com.stormtales.notevault", appContext.getPackageName());
}
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ddcd607..71d1156 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,8 +1,7 @@
-
-
+
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/com/stormtales/notevault/MainActivity.java b/app/src/main/java/com/stormtales/notevault/MainActivity.java
new file mode 100644
index 0000000..2e62dcf
--- /dev/null
+++ b/app/src/main/java/com/stormtales/notevault/MainActivity.java
@@ -0,0 +1,62 @@
+package com.stormtales.notevault;
+
+import android.os.Bundle;
+import android.view.View;
+import android.view.Menu;
+import com.google.android.material.snackbar.Snackbar;
+import com.google.android.material.navigation.NavigationView;
+import androidx.navigation.NavController;
+import androidx.navigation.Navigation;
+import androidx.navigation.ui.AppBarConfiguration;
+import androidx.navigation.ui.NavigationUI;
+import androidx.drawerlayout.widget.DrawerLayout;
+import androidx.appcompat.app.AppCompatActivity;
+import com.stormtales.notevault.databinding.ActivityMainBinding;
+
+public class MainActivity extends AppCompatActivity {
+
+ private AppBarConfiguration mAppBarConfiguration;
+ private ActivityMainBinding binding;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ binding = ActivityMainBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
+
+ setSupportActionBar(binding.appBarMain.toolbar);
+ binding.appBarMain.fab.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
+ .setAction("Action", null).show();
+ }
+ });
+ DrawerLayout drawer = binding.drawerLayout;
+ NavigationView navigationView = binding.navView;
+ // Passing each menu ID as a set of Ids because each
+ // menu should be considered as top level destinations.
+ mAppBarConfiguration = new AppBarConfiguration.Builder(
+ R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
+ .setOpenableLayout(drawer)
+ .build();
+ NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
+ NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
+ NavigationUI.setupWithNavController(navigationView, navController);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ // Inflate the menu; this adds items to the action bar if it is present.
+ getMenuInflater().inflate(R.menu.main, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onSupportNavigateUp() {
+ NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
+ return NavigationUI.navigateUp(navController, mAppBarConfiguration)
+ || super.onSupportNavigateUp();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/stormtales/notevault/ui/gallery/GalleryFragment.java b/app/src/main/java/com/stormtales/notevault/ui/gallery/GalleryFragment.java
new file mode 100644
index 0000000..582a46e
--- /dev/null
+++ b/app/src/main/java/com/stormtales/notevault/ui/gallery/GalleryFragment.java
@@ -0,0 +1,35 @@
+package com.stormtales.notevault.ui.gallery;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.ViewModelProvider;
+import com.stormtales.notevault.databinding.FragmentGalleryBinding;
+
+public class GalleryFragment extends Fragment {
+
+ private FragmentGalleryBinding binding;
+
+ public View onCreateView(@NonNull LayoutInflater inflater,
+ ViewGroup container, Bundle savedInstanceState) {
+ GalleryViewModel galleryViewModel =
+ new ViewModelProvider(this).get(GalleryViewModel.class);
+
+ binding = FragmentGalleryBinding.inflate(inflater, container, false);
+ View root = binding.getRoot();
+
+ final TextView textView = binding.textGallery;
+ galleryViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);
+ return root;
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ binding = null;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/stormtales/notevault/ui/gallery/GalleryViewModel.java b/app/src/main/java/com/stormtales/notevault/ui/gallery/GalleryViewModel.java
new file mode 100644
index 0000000..cfb1d06
--- /dev/null
+++ b/app/src/main/java/com/stormtales/notevault/ui/gallery/GalleryViewModel.java
@@ -0,0 +1,19 @@
+package com.stormtales.notevault.ui.gallery;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
+
+public class GalleryViewModel extends ViewModel {
+
+ private final MutableLiveData mText;
+
+ public GalleryViewModel() {
+ mText = new MutableLiveData<>();
+ mText.setValue("This is gallery fragment");
+ }
+
+ public LiveData getText() {
+ return mText;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/stormtales/notevault/ui/home/HomeFragment.java b/app/src/main/java/com/stormtales/notevault/ui/home/HomeFragment.java
new file mode 100644
index 0000000..9fa2a76
--- /dev/null
+++ b/app/src/main/java/com/stormtales/notevault/ui/home/HomeFragment.java
@@ -0,0 +1,35 @@
+package com.stormtales.notevault.ui.home;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.ViewModelProvider;
+import com.stormtales.notevault.databinding.FragmentHomeBinding;
+
+public class HomeFragment extends Fragment {
+
+ private FragmentHomeBinding binding;
+
+ public View onCreateView(@NonNull LayoutInflater inflater,
+ ViewGroup container, Bundle savedInstanceState) {
+ HomeViewModel homeViewModel =
+ new ViewModelProvider(this).get(HomeViewModel.class);
+
+ binding = FragmentHomeBinding.inflate(inflater, container, false);
+ View root = binding.getRoot();
+
+ final TextView textView = binding.textHome;
+ homeViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);
+ return root;
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ binding = null;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/stormtales/notevault/ui/home/HomeViewModel.java b/app/src/main/java/com/stormtales/notevault/ui/home/HomeViewModel.java
new file mode 100644
index 0000000..cef39e9
--- /dev/null
+++ b/app/src/main/java/com/stormtales/notevault/ui/home/HomeViewModel.java
@@ -0,0 +1,19 @@
+package com.stormtales.notevault.ui.home;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
+
+public class HomeViewModel extends ViewModel {
+
+ private final MutableLiveData mText;
+
+ public HomeViewModel() {
+ mText = new MutableLiveData<>();
+ mText.setValue("This is home fragment");
+ }
+
+ public LiveData getText() {
+ return mText;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/core/notevault/ui/slideshow/SlideshowFragment.java b/app/src/main/java/com/stormtales/notevault/ui/slideshow/SlideshowFragment.java
similarity index 89%
rename from app/src/main/java/core/notevault/ui/slideshow/SlideshowFragment.java
rename to app/src/main/java/com/stormtales/notevault/ui/slideshow/SlideshowFragment.java
index 32dc7b7..dcb2624 100644
--- a/app/src/main/java/core/notevault/ui/slideshow/SlideshowFragment.java
+++ b/app/src/main/java/com/stormtales/notevault/ui/slideshow/SlideshowFragment.java
@@ -1,4 +1,4 @@
-package core.notevault.ui.slideshow;
+package com.stormtales.notevault.ui.slideshow;
import android.os.Bundle;
import android.view.LayoutInflater;
@@ -8,7 +8,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
-import core.notevault.databinding.FragmentSlideshowBinding;
+import com.stormtales.notevault.databinding.FragmentSlideshowBinding;
public class SlideshowFragment extends Fragment {
diff --git a/app/src/main/java/core/notevault/ui/slideshow/SlideshowViewModel.java b/app/src/main/java/com/stormtales/notevault/ui/slideshow/SlideshowViewModel.java
similarity index 89%
rename from app/src/main/java/core/notevault/ui/slideshow/SlideshowViewModel.java
rename to app/src/main/java/com/stormtales/notevault/ui/slideshow/SlideshowViewModel.java
index 9dd8fe3..bb4af34 100644
--- a/app/src/main/java/core/notevault/ui/slideshow/SlideshowViewModel.java
+++ b/app/src/main/java/com/stormtales/notevault/ui/slideshow/SlideshowViewModel.java
@@ -1,4 +1,4 @@
-package core.notevault.ui.slideshow;
+package com.stormtales.notevault.ui.slideshow;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
diff --git a/app/src/main/java/core/notevault/MainActivity.java b/app/src/main/java/core/notevault/MainActivity.java
deleted file mode 100644
index d8fe049..0000000
--- a/app/src/main/java/core/notevault/MainActivity.java
+++ /dev/null
@@ -1,308 +0,0 @@
-package core.notevault;
-
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.Menu;
-import android.widget.Toast;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.navigation.fragment.NavHostFragment;
-import androidx.work.OneTimeWorkRequest;
-import androidx.work.WorkManager;
-import com.google.android.material.snackbar.Snackbar;
-import com.google.android.material.navigation.NavigationView;
-import androidx.navigation.NavController;
-import androidx.navigation.Navigation;
-import androidx.navigation.ui.AppBarConfiguration;
-import androidx.navigation.ui.NavigationUI;
-import androidx.drawerlayout.widget.DrawerLayout;
-import androidx.appcompat.app.AppCompatActivity;
-import core.notevault.data.*;
-import core.notevault.databinding.ActivityMainBinding;
-import core.notevault.sync.SyncWorker;
-import core.notevault.sync.auth.AuthRepository;
-import core.notevault.sync.auth.LoginCallback;
-import core.notevault.ui.gallery.GalleryFragment;
-import core.notevault.ui.gallery.detail.ConcertSongSelector;
-import core.notevault.ui.gallery.editor.ConcertEditorDialog;
-import core.notevault.ui.home.HomeFragment;
-import core.notevault.ui.login.LoginCallBackImpl;
-import core.notevault.ui.login.LoginDialogFragment;
-import core.notevault.ui.login.RegisterCallback;
-import core.notevault.ui.metadatadialog.MetaDataDialog;
-import core.notevault.ui.metadatadialog.SongEditDialog;
-import core.notevault.util.NoteSheetsUtil;
-
-import java.io.*;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-public class MainActivity extends AppCompatActivity implements MetaDataDialog.OnMetadataListener,
- ConcertEditorDialog.OnConcertEditorListener, ConcertSongSelector.OnSongSelectedListener, LoginCallback, SongEditDialog.SongEditorListener {
-
- private AppBarConfiguration mAppBarConfiguration;
- private ActivityMainBinding binding;
-
- private MusicDatabase musicDB;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- binding = ActivityMainBinding.inflate(getLayoutInflater());
- setContentView(binding.getRoot());
-
- setSupportActionBar(binding.appBarMain.toolbar);
- DrawerLayout drawer = binding.drawerLayout;
- NavigationView navigationView = binding.navView;
- // Passing each menu ID as a set of Ids because each
- // menu should be considered as top level destinations.
- mAppBarConfiguration = new AppBarConfiguration.Builder(
- R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
- .setOpenableLayout(drawer)
- .build();
- NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
- NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
- NavigationUI.setupWithNavController(navigationView, navController);
-
- setupLoginButton();
- musicDB = MusicDatabase.getDatabase(this);
- scheduleSync();
- }
-
- public void scheduleSync() {
- // Setze eine Uhrzeit für die Synchronisation
- Calendar calendar = Calendar.getInstance();
- calendar.set(Calendar.HOUR_OF_DAY,11);
- calendar.set(Calendar.MINUTE, 32);
- calendar.set(Calendar.SECOND, 0);
-
- long triggerTime = calendar.getTimeInMillis(); // Zeitstempel für den Trigger
-
- // Erstelle die OneTimeWorkRequest für den SyncWorker
- OneTimeWorkRequest syncRequest = new OneTimeWorkRequest.Builder(SyncWorker.class)
- .setInitialDelay(triggerTime - System.currentTimeMillis(), TimeUnit.MILLISECONDS) // Verzögerung bis zur Ausführung
- .build();
-
- // Planen des Workers mit WorkManager
- WorkManager.getInstance(getBaseContext()).enqueue(syncRequest);
- }
-
- @Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- MenuItem loginItem = menu.findItem(R.id.action_login);
- if (isLoggedIn()) {
- loginItem.setIcon(R.drawable.logout); // Setze das Logout-Symbol
- } else {
- loginItem.setIcon(R.drawable.login); // Setze das Login-Symbol
- }
- return super.onPrepareOptionsMenu(menu);
- }
-
- public void updateLoginButton() {
- invalidateOptionsMenu(); // Menü neu zeichnen
- }
-
- private void setupLoginButton() {
- binding.appBarMain.toolbar.setOnMenuItemClickListener(item -> {
- if (item.getItemId() == R.id.action_login) {
- if (isLoggedIn()) {
- performLogout(); // Logout-Logik aufrufen
- } else {
- showLoginDialog(); // Zeige das Login-Fenster an
- }
- return true;
- }
- return false;
- });
- }
-
- private boolean isLoggedIn() {
- AuthRepository authRepository = new AuthRepository(this);
- return !TextUtils.isEmpty(authRepository.getToken());
- }
-
- private void showLoginDialog() {
- LoginDialogFragment loginDialogFragment = LoginDialogFragment.newInstance(new LoginCallBackImpl(this), new RegisterCallback(this));
- loginDialogFragment.show(getSupportFragmentManager(), "login");
- }
-
- private void performLogout() {
- // Füge hier deine Logout-Logik hinzu
- AuthRepository authRepository = new AuthRepository(this);
-
- authRepository.logout(); // Implementiere die Token-Löschung
- updateLoginButton();
- }
-
-
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- int id = item.getItemId();
- if(id == R.id.action_login) {
- openLoginDialog();
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
-
- private void openLoginDialog() {
- LoginDialogFragment loginDialogFragment = new LoginDialogFragment();
- loginDialogFragment.show(getSupportFragmentManager(), "LOGIN_TAG");
- }
-
- @Override
- public boolean onSupportNavigateUp() {
- NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);
- return NavigationUI.navigateUp(navController, mAppBarConfiguration)
- || super.onSupportNavigateUp();
- }
-
- @Override
- public void onMetadataEntered(Uri[] uris, String title, String composer, int year, String genre) {
- new Thread(() -> {
- MusicNote musicNote = new MusicNote(title, composer, year, genre);
- long musicNoteID = musicDB.musicNoteDao().insert(musicNote);
- musicNote.setMusicNoteId(musicNoteID);
-
- Log.d("MainActivity", "MusicNoteID of inserted song: " + musicNoteID);
- Log.d("MainActivity", "MusicNoteID of referenced song: " + musicNote.getMusicNoteId());
- for(Uri uri: uris) {
- String filePath = saveImageInternally(uri);
- NoteSheet noteSheet = new NoteSheet(musicNoteID, filePath);
- musicDB.musicNoteDao().insertNoteSheet(noteSheet);
- }
-
- runOnUiThread(() -> {
- NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment_content_main);
- Fragment currentFragment = navHostFragment != null ? navHostFragment.getChildFragmentManager().getFragments().get(0) : null;
-
- if(currentFragment instanceof HomeFragment) {
- HomeFragment homeFragment = (HomeFragment) currentFragment;
- homeFragment.addSong(musicNote);
- }
- });
- }).start();
- }
-
- // Speichere eine Kopie des Bilds im internen Speicher
- private String saveImageInternally(Uri uri) {
- try (InputStream inputStream = getContentResolver().openInputStream(uri)) {
- File imageFile = new File(getFilesDir(), "saved_image_" + System.currentTimeMillis() + ".jpg");
- try (OutputStream outputStream = Files.newOutputStream(imageFile.toPath())) {
- byte[] buffer = new byte[4096];
- int bytesRead;
- while ((bytesRead = inputStream.read(buffer)) != -1) {
- outputStream.write(buffer, 0, bytesRead);
- }
- }
- return imageFile.getAbsolutePath(); // Pfad speichern, um später darauf zuzugreifen
- } catch (IOException e) {
- e.printStackTrace();
- return null;
- }
- }
-
- @Override
- public void onConcertEditorClosed(String concertTitle, String concertDate, int concertID) {
- new Thread(() -> {
- if(concertID < 0) {
- Concert concert = new Concert(concertTitle, concertDate);
- Log.d("ConcertEditor", "Saved Concert: " + concertTitle + " on " + concertDate);
- musicDB.musicNoteDao().insertConcert(concert);
-
- runOnUiThread(() -> {
- NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment_content_main);
- Fragment currentFragment = navHostFragment != null ? navHostFragment.getChildFragmentManager().getFragments().get(0) : null;
-
- Log.d("MainActivity", "Test for GalleryFragment");
- Log.d("MainActivity", "Current Fragment: " + currentFragment.getClass().getSimpleName());
- if(currentFragment instanceof GalleryFragment) {
- Log.d("MainActivity", "GalleryFragment Found");
- GalleryFragment galleryFragment = (GalleryFragment) currentFragment;
- galleryFragment.addConcert(concert);
- } else {
- Log.d("MainActivity", "GalleryFragment Not Found");
- }
- });
- } else {
- Concert concert = new Concert(concertID, concertTitle, concertDate);
- musicDB.musicNoteDao().updateConcert(concert);
- runOnUiThread(() -> {
- NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment_content_main);
- Fragment currentFragment = navHostFragment != null ? navHostFragment.getChildFragmentManager().getFragments().get(0) : null;
-
- Log.d("MainActivity", "Test for GalleryFragment");
- Log.d("MainActivity", "Current Fragment: " + currentFragment.getClass().getSimpleName());
- if(currentFragment instanceof GalleryFragment) {
- Log.d("MainActivity", "GalleryFragment Found");
- GalleryFragment galleryFragment = (GalleryFragment) currentFragment;
- galleryFragment.updateConcert(concert);
- } else {
- Log.d("MainActivity", "GalleryFragment Not Found");
- }
- });
- }
-
- }).start();
- }
-
- @Override
- public void onSongsSelected(List songs, int concertID) {
- Log.d("MainActivity", "Inserted Songs: " + songs.size());
- new Thread(() -> {
- for(MusicNote musicNote : songs) {
- ConcertSong concertSong = new ConcertSong(musicNote.getMusicNoteId(), concertID);
- musicDB.musicNoteDao().insertConcertSong(concertSong);
- Log.d("MainActivity", "Insert Song: " + musicNote.getTitle());
- }
- }).start();
- }
-
-
- @Override
- public void onSuccess() {
- updateLoginButton();
- }
-
- @Override
- public void onError(String error) {
- Toast.makeText(this, error, Toast.LENGTH_LONG).show();
- Log.d("LoginError", error);
- }
-
- @Override
- public void onSongEdited(MusicNote updatedSong) {
- new Thread(() -> {
- musicDB.musicNoteDao().updateSong(updatedSong);
- Log.d("MainActivity", "Updated Song: " + updatedSong.getTitle());
- }).start();
- NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment_content_main);
- Fragment currentFragment = navHostFragment != null ? navHostFragment.getChildFragmentManager().getFragments().get(0) : null;
-
- if(currentFragment instanceof HomeFragment) {
- HomeFragment homeFragment = (HomeFragment) currentFragment;
- homeFragment.updateSong(updatedSong);
- } else if(currentFragment instanceof GalleryFragment) {
- GalleryFragment galleryFragment = (GalleryFragment) currentFragment;
-
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/core/notevault/data/Concert.java b/app/src/main/java/core/notevault/data/Concert.java
deleted file mode 100644
index 84087ff..0000000
--- a/app/src/main/java/core/notevault/data/Concert.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package core.notevault.data;
-
-import androidx.room.*;
-import core.notevault.data.sync.SyncStatus;
-import core.notevault.data.sync.SyncStatusConverter;
-
-import java.text.SimpleDateFormat;
-import java.time.LocalDateTime;
-import java.util.Date;
-import java.util.Locale;
-
-@Entity(tableName = "concerts")
-@TypeConverters(SyncStatusConverter.class)
-public class Concert {
-
- @PrimaryKey(autoGenerate = true)
- private int id;
-
- private String serverSpecificConcertID;
- private String title;
- private String concertDate;
- private SyncStatus syncStatus;
-
- private LocalDateTime lastModified;
-
- @Ignore
- public Concert(String title, String concertDate) {
- this.title = title;
- this.concertDate = concertDate;
- this.lastModified = LocalDateTime.now();
- }
-
- public Concert() {
- }
-
- @Ignore
- public Concert(int id, String title, String concertDate) {
- this.id = id;
- this.title = title;
- this.concertDate = concertDate;
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public String getConcertDate() {
- return concertDate;
- }
-
- public void setConcertDate(String concertDate) {
- this.concertDate = concertDate;
- }
-
- public String getServerSpecificConcertID() {
- return serverSpecificConcertID;
- }
-
- public void setServerSpecificConcertID(String serverSpecificConcertID) {
- this.serverSpecificConcertID = serverSpecificConcertID;
- }
-
- public SyncStatus getSyncStatus() {
- return syncStatus;
- }
-
- public void setSyncStatus(SyncStatus syncStatus) {
- this.syncStatus = syncStatus;
- }
-
- public LocalDateTime getLastModified() {
- return lastModified;
- }
-
- public void setLastModified(LocalDateTime lastModified) {
- this.lastModified = lastModified;
- }
-}
diff --git a/app/src/main/java/core/notevault/data/ConcertSong.java b/app/src/main/java/core/notevault/data/ConcertSong.java
deleted file mode 100644
index 3411d14..0000000
--- a/app/src/main/java/core/notevault/data/ConcertSong.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package core.notevault.data;
-
-import androidx.room.Entity;
-import androidx.room.Ignore;
-import androidx.room.PrimaryKey;
-
-@Entity(tableName = "concert_songs")
-public class ConcertSong {
-
- @PrimaryKey(autoGenerate = true)
- private int id;
-
- private long musicNoteID;
- private int concertID;
-
- @Ignore
- public ConcertSong(long musicNoteID, int concertID) {
- this.musicNoteID = musicNoteID;
- this.concertID = concertID;
- }
-
- @Ignore
- public ConcertSong(int id, long musicNoteID, int concertID) {
- this.id = id;
- this.musicNoteID = musicNoteID;
- this.concertID = concertID;
- }
-
- public ConcertSong() {
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public long getMusicNoteID() {
- return musicNoteID;
- }
-
- public void setMusicNoteID(long musicNoteID) {
- this.musicNoteID = musicNoteID;
- }
-
- public int getConcertID() {
- return concertID;
- }
-
- public void setConcertID(int concertID) {
- this.concertID = concertID;
- }
-}
diff --git a/app/src/main/java/core/notevault/data/DateConverter.java b/app/src/main/java/core/notevault/data/DateConverter.java
deleted file mode 100644
index 5125be5..0000000
--- a/app/src/main/java/core/notevault/data/DateConverter.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package core.notevault.data;
-
-import androidx.room.TypeConverter;
-
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-
-public class DateConverter {
- // Konvertiere LocalDateTime in String
- @TypeConverter
- public static String fromLocalDateTime(LocalDateTime localDateTime) {
- return localDateTime == null ? null : localDateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
- }
-
- // Konvertiere String zurück in LocalDateTime
- @TypeConverter
- public static LocalDateTime toLocalDateTime(String dateTimeString) {
- return dateTimeString == null ? null : LocalDateTime.parse(dateTimeString, DateTimeFormatter.ISO_LOCAL_DATE_TIME);
- }
-}
diff --git a/app/src/main/java/core/notevault/data/MusicDatabase.java b/app/src/main/java/core/notevault/data/MusicDatabase.java
deleted file mode 100644
index 20b8e27..0000000
--- a/app/src/main/java/core/notevault/data/MusicDatabase.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package core.notevault.data;
-
-import android.content.Context;
-import androidx.room.*;
-import core.notevault.data.sync.SyncDataObject;
-import core.notevault.data.sync.SyncStatusConverter;
-
-@Database(entities = {MusicNote.class, NoteSheet.class, Concert.class, ConcertSong.class, SyncDataObject.class}, version = 2, exportSchema = false)
-@TypeConverters(DateConverter.class)
-public abstract class MusicDatabase extends RoomDatabase {
- public abstract MusicNoteDAO musicNoteDao();
-
- private static MusicDatabase INSTANCE;
-
- public static MusicDatabase getDatabase(final Context context) {
- if (INSTANCE == null) {
- synchronized (MusicDatabase.class) {
- if (INSTANCE == null) {
- INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
- MusicDatabase.class, "music_database")
- .build();
- }
- }
- }
- return INSTANCE;
- }
-}
diff --git a/app/src/main/java/core/notevault/data/MusicNote.java b/app/src/main/java/core/notevault/data/MusicNote.java
deleted file mode 100644
index 308e946..0000000
--- a/app/src/main/java/core/notevault/data/MusicNote.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package core.notevault.data;
-
-import androidx.room.Entity;
-import androidx.room.Ignore;
-import androidx.room.PrimaryKey;
-import core.notevault.data.sync.SyncStatus;
-
-import java.time.LocalDateTime;
-
-@Entity(tableName = "music_notes")
-public class MusicNote {
-
- @PrimaryKey(autoGenerate = true)
- private long musicNoteId;
- private String serverID;
- private SyncStatus syncStatus;
- private LocalDateTime last_sync;
-
- private String title;
- private String composer;
- private int year;
- private String genre;
-
- @Ignore
- public MusicNote(String title, String composer, int year, String genre) {
- this.title = title;
- this.composer = composer;
- this.year = year;
- this.genre = genre;
- this.syncStatus = SyncStatus.CREATED;
- }
-
- public MusicNote(long musicNoteId, String title) {
- this.musicNoteId = musicNoteId;
- this.title = title;
- this.syncStatus = SyncStatus.CREATED;
- }
-
- @Ignore
- public MusicNote() {
- }
-
- public long getMusicNoteId() {
- return musicNoteId;
- }
-
- public void setMusicNoteId(long musicNoteId) {
- this.musicNoteId = musicNoteId;
- }
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public String getComposer() {
- return composer;
- }
-
- public void setComposer(String composer) {
- this.composer = composer;
- }
-
- public String getGenre() {
- return genre;
- }
-
- public void setGenre(String genre) {
- this.genre = genre;
- }
-
- public int getYear() {
- return year;
- }
-
- public void setYear(int year) {
- this.year = year;
- }
-
- public String getServerID() {
- return serverID;
- }
-
- public void setServerID(String serverID) {
- this.serverID = serverID;
- }
-
- public SyncStatus getSyncStatus() {
- return syncStatus;
- }
-
- public void setSyncStatus(SyncStatus syncStatus) {
- this.syncStatus = syncStatus;
- }
-
- public LocalDateTime getLast_sync() {
-
- return last_sync;
- }
-
- public void setLast_sync(LocalDateTime last_sync) {
- this.last_sync = last_sync;
- }
-}
diff --git a/app/src/main/java/core/notevault/data/MusicNoteDAO.java b/app/src/main/java/core/notevault/data/MusicNoteDAO.java
deleted file mode 100644
index e742c7a..0000000
--- a/app/src/main/java/core/notevault/data/MusicNoteDAO.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package core.notevault.data;
-
-import androidx.room.*;
-
-import core.notevault.data.sync.SyncDataObject;
-import core.notevault.data.sync.SyncStatus;
-import core.notevault.sync.synchronisation.songs.creation.SongCreationResponse;
-
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Optional;
-
-@Dao
-public interface MusicNoteDAO {
-
- @Insert
- long insert(MusicNote musicNote);
-
- @Insert
- void insertNoteSheet(NoteSheet noteSheet);
-
- @Query("SELECT * FROM music_notes WHERE syncStatus != 'DELETED'")
- List getAllNotes();
-
- @Query("SELECT * FROM note_sheets WHERE musicNoteId = :musicNoteId")
- List getNoteSheetsForMusicSong(long musicNoteId);
-
- @Query("SELECT * FROM concerts WHERE syncStatus = :status")
- List getConcertsWithSyncStatus(SyncStatus status);
-
- @Query("SELECT * FROM music_notes WHERE syncStatus = :status")
- List getSongsWithSyncStatus(SyncStatus status);
-
- @Insert
- void insertConcert(Concert concert);
-
- @Query("SELECT * FROM concerts")
- List getAllConcerts();
-
- @Delete
- void deleteConcert(Concert concert);
-
- @Update
- void updateConcert(Concert concert);
-
- @Delete
- void deleteSong(MusicNote musicNote);
-
- @Insert
- void insertConcertSong(ConcertSong concertSong);
-
- @Query("SELECT m.* FROM music_notes m JOIN concert_songs cs ON m.musicNoteId = cs.musicNoteID WHERE cs.id = :concertID")
- List getAllMusicNotesOfConcert(long concertID);
-
- @Query("DELETE FROM concert_songs WHERE concertID = :concertID AND musicNoteID = :songID")
- void deleteConcertSong(long songID, int concertID);
-
- @Transaction
- default void storeSongSyncResponses(List songCreationResponses) {
- for (SongCreationResponse response : songCreationResponses) {
- storeSongSyncResponse(response.getLocalID(), SyncStatus.SYNCED, response.getServerID());
- }
- }
-
- @Query("UPDATE music_notes SET syncStatus = :status, serverID = :serverID WHERE musicNoteId = :localID")
- void storeSongSyncResponse(long localID, SyncStatus status, String serverID);
-
- @Query("UPDATE music_notes SET syncStatus = :status, last_sync = :currentTime WHERE serverID IN (:serverIDs)")
- void storeSongSyncModifyResponses(List serverIDs, SyncStatus status, LocalDateTime currentTime);
-
- @Update
- void updateSong(MusicNote musicNote);
-
- @Query("DELETE FROM music_notes WHERE serverID IN (:serverIDs)")
- void deleteSongs(List serverIDs);
-
- @Query("SELECT * FROM note_sheets ns WHERE ns.syncStatus = :status")
- List getNoteSheetsWithStatus(SyncStatus status);
-
- @Query("SELECT mn.serverID FROM music_notes mn WHERE mn.musicNoteId =:musicNoteId")
- Optional getMusicNoteByLocalID(long musicNoteId);
-
- @Update
- void updateNoteSheet(NoteSheet noteSheet);
-
- @Transaction
- @Insert(onConflict = OnConflictStrategy.REPLACE) // oder andere Strategie je nach Bedarf
- void insertSyncDataObjects(List syncDataObjects);
-}
diff --git a/app/src/main/java/core/notevault/data/NoteSheet.java b/app/src/main/java/core/notevault/data/NoteSheet.java
deleted file mode 100644
index 3a5e644..0000000
--- a/app/src/main/java/core/notevault/data/NoteSheet.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package core.notevault.data;
-
-import androidx.room.Entity;
-import androidx.room.PrimaryKey;
-import core.notevault.data.sync.SyncStatus;
-
-@Entity(tableName = "note_sheets")
-public class NoteSheet {
-
- @PrimaryKey(autoGenerate = true)
- private int id;
- private SyncStatus syncStatus;
- private long musicNoteId;
- private String filePath;
-
- public NoteSheet(long musicNoteID, String filePath) {
- this.musicNoteId = musicNoteID;
- this.filePath = filePath;
- this.syncStatus = SyncStatus.CREATED;
- }
-
- public NoteSheet() {
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public long getMusicNoteId() {
- return musicNoteId;
- }
-
- public void setMusicNoteId(long musicNoteId) {
- this.musicNoteId = musicNoteId;
- }
-
- public String getFilePath() {
- return filePath;
- }
-
- public void setFilePath(String filePath) {
- this.filePath = filePath;
- }
-
- public SyncStatus getSyncStatus() {
- return syncStatus;
- }
-
- public void setSyncStatus(SyncStatus syncStatus) {
- this.syncStatus = syncStatus;
- }
-}
diff --git a/app/src/main/java/core/notevault/data/sync/SyncDataObject.java b/app/src/main/java/core/notevault/data/sync/SyncDataObject.java
deleted file mode 100644
index 344da9d..0000000
--- a/app/src/main/java/core/notevault/data/sync/SyncDataObject.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package core.notevault.data.sync;
-
-import androidx.room.Entity;
-import androidx.room.Ignore;
-import androidx.room.PrimaryKey;
-import androidx.room.TypeConverters;
-
-@Entity(tableName = "sync_data_objects")
-@TypeConverters(SyncDataObjectTypeConverter.class)
-public class SyncDataObject {
- @PrimaryKey(autoGenerate = true)
- private int id;
-
- private String serverID;
- private SyncDataObjectType type;
-
- @Ignore
- public SyncDataObject(String serverID, SyncDataObjectType type) {
- this.serverID = serverID;
- this.type = type;
- }
-
- public SyncDataObject() {
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getServerID() {
- return serverID;
- }
-
- public void setServerID(String serverID) {
- this.serverID = serverID;
- }
-
- public SyncDataObjectType getType() {
- return type;
- }
-
- public void setType(SyncDataObjectType type) {
- this.type = type;
- }
-}
diff --git a/app/src/main/java/core/notevault/data/sync/SyncDataObjectType.java b/app/src/main/java/core/notevault/data/sync/SyncDataObjectType.java
deleted file mode 100644
index 82e184c..0000000
--- a/app/src/main/java/core/notevault/data/sync/SyncDataObjectType.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package core.notevault.data.sync;
-
-public enum SyncDataObjectType {
- MUSIC_NOTE
-}
diff --git a/app/src/main/java/core/notevault/data/sync/SyncDataObjectTypeConverter.java b/app/src/main/java/core/notevault/data/sync/SyncDataObjectTypeConverter.java
deleted file mode 100644
index 86385a2..0000000
--- a/app/src/main/java/core/notevault/data/sync/SyncDataObjectTypeConverter.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package core.notevault.data.sync;
-
-import androidx.room.TypeConverter;
-
-public class SyncDataObjectTypeConverter {
- @TypeConverter
- public static SyncDataObjectType fromInt(int value) {
- return SyncDataObjectType.values()[value];
- }
-
- @TypeConverter
- public static int toInt(SyncDataObjectType objectType) {
- return objectType.ordinal();
- }
-}
diff --git a/app/src/main/java/core/notevault/data/sync/SyncStatus.java b/app/src/main/java/core/notevault/data/sync/SyncStatus.java
deleted file mode 100644
index 09e686e..0000000
--- a/app/src/main/java/core/notevault/data/sync/SyncStatus.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package core.notevault.data.sync;
-
-public enum SyncStatus {
- CREATED,
- DELETED,
- MODIFIED,
- REMOTE_MODIFIED,
- SYNCED;
-}
diff --git a/app/src/main/java/core/notevault/data/sync/SyncStatusConverter.java b/app/src/main/java/core/notevault/data/sync/SyncStatusConverter.java
deleted file mode 100644
index a8ac3eb..0000000
--- a/app/src/main/java/core/notevault/data/sync/SyncStatusConverter.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package core.notevault.data.sync;
-
-import androidx.room.TypeConverter;
-
-public class SyncStatusConverter {
- @TypeConverter
- public static SyncStatus fromInt(int value) {
- return SyncStatus.values()[value];
- }
-
- @TypeConverter
- public static int toInt(SyncStatus syncStatus) {
- return syncStatus.ordinal();
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/APICallback.java b/app/src/main/java/core/notevault/sync/APICallback.java
deleted file mode 100644
index 683079e..0000000
--- a/app/src/main/java/core/notevault/sync/APICallback.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package core.notevault.sync;
-
-public interface APICallback {
-
- void onSuccess();
- void onError(String error);
-}
diff --git a/app/src/main/java/core/notevault/sync/ApiClient.java b/app/src/main/java/core/notevault/sync/ApiClient.java
deleted file mode 100644
index ed8191e..0000000
--- a/app/src/main/java/core/notevault/sync/ApiClient.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package core.notevault.sync;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import core.notevault.sync.auth.AuthInterceptor;
-import core.notevault.sync.auth.TokenManager;
-import okhttp3.OkHttpClient;
-import okhttp3.logging.HttpLoggingInterceptor;
-import retrofit2.Retrofit;
-import retrofit2.converter.gson.GsonConverterFactory;
-
-public class ApiClient {
- private static Retrofit retrofit;
-
- public static Retrofit getRetrofitInstance(Context context) {
- if (retrofit == null) {
- HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
- loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
-
- TokenManager tokenManager = new TokenManager(context);
- OkHttpClient client = new OkHttpClient.Builder()
- .addInterceptor(new AuthInterceptor(tokenManager))
- .addInterceptor(loggingInterceptor)
- .build();
-
- retrofit = new Retrofit.Builder()
- .baseUrl("http://192.168.178.30:8000/")
- .client(client)
- .addConverterFactory(GsonConverterFactory.create())
- .build();
- }
- return retrofit;
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/StatusResponse.java b/app/src/main/java/core/notevault/sync/StatusResponse.java
deleted file mode 100644
index b5a3a7e..0000000
--- a/app/src/main/java/core/notevault/sync/StatusResponse.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package core.notevault.sync;
-
-public class StatusResponse {
-
- private String status;
-
- public String getStatus() {
- return status;
- }
-
- public void setStatus(String status) {
- this.status = status;
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/SyncWorker.java b/app/src/main/java/core/notevault/sync/SyncWorker.java
deleted file mode 100644
index 72246ce..0000000
--- a/app/src/main/java/core/notevault/sync/SyncWorker.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package core.notevault.sync;
-import android.content.Context;
-import androidx.annotation.NonNull;
-import androidx.work.Worker;
-import androidx.work.WorkerParameters;
-import core.notevault.data.MusicDatabase;
-
-import core.notevault.sync.synchronisation.*;
-import core.notevault.sync.synchronisation.songs.SongSyncWorker;
-
-
-public class SyncWorker extends Worker{
- private SongSyncWorker songSyncWorker;
- public SyncWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
- super(context, workerParams);
- SyncService syncService = ApiClient.getRetrofitInstance(context).create(SyncService.class);
- MusicDatabase musicDatabase = MusicDatabase.getDatabase(context);
- this.songSyncWorker = new SongSyncWorker(syncService, musicDatabase.musicNoteDao(), context);
- }
-
- @NonNull
- @Override
- public Result doWork() {
- try {
- songSyncWorker.syncSongCreations();
- songSyncWorker.syncSongModifications();
- songSyncWorker.syncSongDeletions();
- songSyncWorker.uploadNoteSheets();
- songSyncWorker.fetchModifiedSongs();
- return Result.success();
- } catch (Exception e) {
- e.printStackTrace();
- return Result.failure();
- }
- }
-
-
-}
diff --git a/app/src/main/java/core/notevault/sync/auth/AuthInterceptor.java b/app/src/main/java/core/notevault/sync/auth/AuthInterceptor.java
deleted file mode 100644
index 5f6cb6f..0000000
--- a/app/src/main/java/core/notevault/sync/auth/AuthInterceptor.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package core.notevault.sync.auth;
-
-import android.content.SharedPreferences;
-import android.util.Log;
-import okhttp3.Interceptor;
-import okhttp3.Request;
-import okhttp3.Response;
-
-
-import java.io.IOException;
-
-public class AuthInterceptor implements Interceptor {
- private TokenManager tokenManager;
-
- public AuthInterceptor(TokenManager tokenManager) {
- this.tokenManager = tokenManager;
- }
-
- @Override
- public Response intercept(Chain chain) throws IOException {
- Request originalRequest = chain.request();
-
- String token = tokenManager.getToken();
- if (token == null) {
- return chain.proceed(originalRequest);
- }
-
- Request authenticatedRequest = originalRequest.newBuilder()
- .header("Authorization", "Bearer " + token).build();
- return chain.proceed(authenticatedRequest);
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/auth/AuthRepository.java b/app/src/main/java/core/notevault/sync/auth/AuthRepository.java
deleted file mode 100644
index 7c8587d..0000000
--- a/app/src/main/java/core/notevault/sync/auth/AuthRepository.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package core.notevault.sync.auth;
-
-import android.content.Context;
-import core.notevault.sync.APICallback;
-import core.notevault.sync.ApiClient;
-import core.notevault.sync.StatusResponse;
-import core.notevault.sync.auth.apimodel.LoginRequest;
-import core.notevault.sync.auth.apimodel.LoginResponse;
-import core.notevault.sync.auth.apimodel.RegisterRequest;
-import core.notevault.sync.auth.apimodel.RegisterResponse;
-import retrofit2.Call;
-import retrofit2.Callback;
-import retrofit2.Response;
-
-public class AuthRepository {
- private final AuthService authService;
- private final TokenManager tokenManager;
-
- public AuthRepository(Context context) {
- this.authService = ApiClient.getRetrofitInstance(context).create(AuthService.class);
- this.tokenManager = new TokenManager(context);
- }
-
- public void performLogin(String email, String password, APICallback callback) {
- LoginRequest loginRequest = new LoginRequest(email, password);
-
- authService.login(loginRequest).enqueue(new Callback() {
- @Override
- public void onResponse(Call call, Response response) {
- if (response.isSuccessful() && response.body() != null) {
- String token = response.body().getToken();
- saveToken(token);
- // Erfolgsrückmeldung an den Callback senden
- callback.onSuccess();
- } else {
- // Fehlermeldung an den Callback senden
- callback.onError("Login fehlgeschlagen. Überprüfe Benutzername und Passwort.");
- }
- }
-
- @Override
- public void onFailure(Call call, Throwable t) {
- // Netzwerkfehler an den Callback senden
- callback.onError("Netzwerkfehler: " + t.getMessage());
- }
- });
- }
-
- public void performRegistration(String email, String username, String password, APICallback callback) {
- RegisterRequest registerRequest = new RegisterRequest(username, password, email);
- authService.registration(registerRequest).enqueue(new Callback() {
-
- @Override
- public void onResponse(Call call, Response response) {
- if(response.isSuccessful() && response.body() != null) {
- callback.onSuccess();
- } else {
- callback.onError("Registration fehlgeschlagen. Überprüfe Benutzername und Passwort.");
- }
- }
-
- @Override
- public void onFailure(Call call, Throwable throwable) {
- callback.onError("Netzwerkfehler: " + throwable.getMessage());
- }
- });
- }
-
- private void saveToken(String token) {
- tokenManager.saveToken(token);
- }
-
- public String getToken() {
- return tokenManager.getToken();
- }
-
- public void logout() {
- tokenManager.clearToken();
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/auth/AuthService.java b/app/src/main/java/core/notevault/sync/auth/AuthService.java
deleted file mode 100644
index abe2d19..0000000
--- a/app/src/main/java/core/notevault/sync/auth/AuthService.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package core.notevault.sync.auth;
-
-import core.notevault.sync.StatusResponse;
-import core.notevault.sync.auth.apimodel.LoginRequest;
-import core.notevault.sync.auth.apimodel.LoginResponse;
-import core.notevault.sync.auth.apimodel.RegisterRequest;
-import retrofit2.Call;
-import retrofit2.http.Body;
-import retrofit2.http.Headers;
-import retrofit2.http.POST;
-
-public interface AuthService {
-
- @POST("/login/")
- Call login(@Body LoginRequest loginRequest);
-
- @POST("/register/")
- @Headers("Content-Type: application/json")
- Call registration(@Body RegisterRequest registerRequest);
-}
diff --git a/app/src/main/java/core/notevault/sync/auth/LoginCallback.java b/app/src/main/java/core/notevault/sync/auth/LoginCallback.java
deleted file mode 100644
index 565944f..0000000
--- a/app/src/main/java/core/notevault/sync/auth/LoginCallback.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package core.notevault.sync.auth;
-
-public interface LoginCallback {
-
- void onSuccess();
- void onError(String error);
-}
diff --git a/app/src/main/java/core/notevault/sync/auth/TokenManager.java b/app/src/main/java/core/notevault/sync/auth/TokenManager.java
deleted file mode 100644
index 98951f2..0000000
--- a/app/src/main/java/core/notevault/sync/auth/TokenManager.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package core.notevault.sync.auth;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-
-public class TokenManager {
- private static final String PREF_NAME = "app_preferences";
- private static final String KEY_TOKEN = "jwt_token";
-
- private SharedPreferences sharedPreferences;
-
- public TokenManager(Context context) {
- sharedPreferences = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
- }
-
- public void saveToken(String token) {
- SharedPreferences.Editor editor = sharedPreferences.edit();
- editor.putString(KEY_TOKEN, token);
- editor.apply();
- }
-
- public String getToken() {
- return sharedPreferences.getString(KEY_TOKEN, null);
- }
-
- public void clearToken() {
- SharedPreferences.Editor editor = sharedPreferences.edit();
- editor.remove(KEY_TOKEN);
- editor.apply();
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/auth/apimodel/LoginRequest.java b/app/src/main/java/core/notevault/sync/auth/apimodel/LoginRequest.java
deleted file mode 100644
index cb4417c..0000000
--- a/app/src/main/java/core/notevault/sync/auth/apimodel/LoginRequest.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package core.notevault.sync.auth.apimodel;
-
-public class LoginRequest {
- private String email;
- private String password;
-
- public LoginRequest(String email, String password) {
- this.email = email;
- this.password = password;
- }
-
-
-}
diff --git a/app/src/main/java/core/notevault/sync/auth/apimodel/LoginResponse.java b/app/src/main/java/core/notevault/sync/auth/apimodel/LoginResponse.java
deleted file mode 100644
index 2f10347..0000000
--- a/app/src/main/java/core/notevault/sync/auth/apimodel/LoginResponse.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package core.notevault.sync.auth.apimodel;
-
-public class LoginResponse {
- private String token;
- private String username;
-
- public String getToken() {
- return token;
- }
-
- public void setToken(String token) {
- this.token = token;
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/auth/apimodel/RegisterRequest.java b/app/src/main/java/core/notevault/sync/auth/apimodel/RegisterRequest.java
deleted file mode 100644
index 56adf17..0000000
--- a/app/src/main/java/core/notevault/sync/auth/apimodel/RegisterRequest.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package core.notevault.sync.auth.apimodel;
-
-public class RegisterRequest {
- private String username;
- private String email;
- private String password;
-
- public RegisterRequest(String username, String password, String email) {
- this.username = username;
- this.password = password;
- this.email = email;
- }
-
-}
diff --git a/app/src/main/java/core/notevault/sync/auth/apimodel/RegisterResponse.java b/app/src/main/java/core/notevault/sync/auth/apimodel/RegisterResponse.java
deleted file mode 100644
index db52523..0000000
--- a/app/src/main/java/core/notevault/sync/auth/apimodel/RegisterResponse.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package core.notevault.sync.auth.apimodel;
-
-public class RegisterResponse {
-
- private String username;
- private String email;
-
- public RegisterResponse(String username, String email) {
- this.username = username;
- this.email = email;
- }
-
- public RegisterResponse() {
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
- public String getEmail() {
- return email;
- }
-
- public void setEmail(String email) {
- this.email = email;
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/synchronisation/FetchRequest.java b/app/src/main/java/core/notevault/sync/synchronisation/FetchRequest.java
deleted file mode 100644
index 360f883..0000000
--- a/app/src/main/java/core/notevault/sync/synchronisation/FetchRequest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package core.notevault.sync.synchronisation;
-
-import java.time.LocalDateTime;
-
-public class FetchRequest {
- private LocalDateTime client_last_sync;
-
- public FetchRequest(LocalDateTime client_last_sync) {
- this.client_last_sync = client_last_sync;
- }
-
- public LocalDateTime getClient_last_sync() {
- return client_last_sync;
- }
-
- public void setClient_last_sync(LocalDateTime client_last_sync) {
- this.client_last_sync = client_last_sync;
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/synchronisation/FetchResponse.java b/app/src/main/java/core/notevault/sync/synchronisation/FetchResponse.java
deleted file mode 100644
index 8ff6f71..0000000
--- a/app/src/main/java/core/notevault/sync/synchronisation/FetchResponse.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package core.notevault.sync.synchronisation;
-
-import java.util.List;
-
-public class FetchResponse {
- private List serverIDs;
-
- public FetchResponse(List serverIDs) {
- this.serverIDs = serverIDs;
- }
-
- public List getServerIDs() {
- return serverIDs;
- }
-
- public void setServerIDs(List serverIDs) {
- this.serverIDs = serverIDs;
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/synchronisation/SyncService.java b/app/src/main/java/core/notevault/sync/synchronisation/SyncService.java
deleted file mode 100644
index 00d9ffd..0000000
--- a/app/src/main/java/core/notevault/sync/synchronisation/SyncService.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package core.notevault.sync.synchronisation;
-
-
-import core.notevault.sync.synchronisation.songs.creation.SongCreationBatchRequest;
-import core.notevault.sync.synchronisation.songs.creation.SongCreationBatchResponse;
-import core.notevault.sync.synchronisation.songs.deletion.SongDeletionBatchRequest;
-import core.notevault.sync.synchronisation.songs.deletion.SongDeletionBatchResponse;
-import core.notevault.sync.synchronisation.songs.modification.SongModificationBatchRequest;
-import core.notevault.sync.synchronisation.songs.modification.SongModificationBatchResponse;
-import core.notevault.sync.synchronisation.songs.notesheets.UploadResponse;
-import okhttp3.MultipartBody;
-import okhttp3.RequestBody;
-import retrofit2.Call;
-import retrofit2.http.*;
-
-import java.time.LocalDateTime;
-
-public interface SyncService {
-
- @POST("/sync/songs/create")
- Call performSongCreation(@Body SongCreationBatchRequest syncRequest);
-
- @POST("/sync/songs/modify")
- Call performSongModification(@Body SongModificationBatchRequest syncRequest);
-
- @POST("/sync/songs/delete")
- Call performSongDeletion(@Body SongDeletionBatchRequest syncRequest);
-
- @Multipart
- @POST("/sync/songs/note_sheet/upload")
- Call uploadNoteSheet(@Part("serverID") RequestBody serverID, @Part("fileName") RequestBody fileName,
- @Part MultipartBody.Part image);
-
- @GET("/sync/songs/fetch")
- Call fetchModifiedSongs(@Query("last_client_sync") LocalDateTime last_client_sync);
-}
diff --git a/app/src/main/java/core/notevault/sync/synchronisation/songs/SongSyncWorker.java b/app/src/main/java/core/notevault/sync/synchronisation/songs/SongSyncWorker.java
deleted file mode 100644
index d85d92a..0000000
--- a/app/src/main/java/core/notevault/sync/synchronisation/songs/SongSyncWorker.java
+++ /dev/null
@@ -1,199 +0,0 @@
-package core.notevault.sync.synchronisation.songs;
-
-import android.content.Context;
-import android.os.AsyncTask;
-import android.widget.Toast;
-import core.notevault.data.MusicNote;
-import core.notevault.data.MusicNoteDAO;
-import core.notevault.data.NoteSheet;
-import core.notevault.data.sync.SyncDataObject;
-import core.notevault.data.sync.SyncDataObjectType;
-import core.notevault.data.sync.SyncStatus;
-import core.notevault.sync.synchronisation.FetchRequest;
-import core.notevault.sync.synchronisation.FetchResponse;
-import core.notevault.sync.synchronisation.SyncService;
-import core.notevault.sync.synchronisation.songs.creation.SongCreationBatchRequest;
-import core.notevault.sync.synchronisation.songs.creation.SongCreationBatchResponse;
-import core.notevault.sync.synchronisation.songs.creation.SongCreationRequest;
-import core.notevault.sync.synchronisation.songs.deletion.SongDeletionBatchRequest;
-import core.notevault.sync.synchronisation.songs.deletion.SongDeletionBatchResponse;
-import core.notevault.sync.synchronisation.songs.modification.SongModificationBatchRequest;
-import core.notevault.sync.synchronisation.songs.modification.SongModificationBatchResponse;
-import core.notevault.sync.synchronisation.songs.modification.SongModificationRequest;
-import core.notevault.sync.synchronisation.songs.notesheets.UploadResponse;
-import okhttp3.MediaType;
-import okhttp3.MultipartBody;
-import okhttp3.RequestBody;
-import retrofit2.Call;
-import retrofit2.Callback;
-import retrofit2.Response;
-
-import java.io.File;
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.stream.Collectors;
-
-public class SongSyncWorker {
- private SyncService syncService;
- private MusicNoteDAO database;
- private Context context;
- private ExecutorService executorService = Executors.newSingleThreadExecutor();
-
- public SongSyncWorker(SyncService syncService, MusicNoteDAO database, Context context) {
- this.syncService = syncService;
- this.database = database;
- this.context = context;
- }
-
- private SongCreationBatchRequest buildCreationRequest() {
- List created_songs = database.getSongsWithSyncStatus(SyncStatus.CREATED);
- List songCreationRequests = new ArrayList<>();
- for(MusicNote musicNote : created_songs) {
- songCreationRequests.add(new SongCreationRequest(musicNote.getMusicNoteId(), musicNote.getTitle(), musicNote.getComposer(), musicNote.getGenre(), musicNote.getYear()));
- }
- return new SongCreationBatchRequest(songCreationRequests);
- }
-
- public void syncSongCreations() {
- SongCreationBatchRequest request = buildCreationRequest();
- syncService.performSongCreation(request).enqueue(new Callback() {
- @Override
- public void onResponse(Call call, Response response) {
- if(response.isSuccessful() && response.body() != null) {
- executorService.execute(() -> {
- database.storeSongSyncResponses(response.body().getSongs());
- });
- } else {
- Toast.makeText(context, "Song creation failed", Toast.LENGTH_LONG).show();
- }
- }
-
- @Override
- public void onFailure(Call call, Throwable throwable) {
- Toast.makeText(context, "Song creation failed", Toast.LENGTH_LONG).show();
- }
- });
- }
-
- private SongModificationBatchRequest buildModificationRequest() {
- List modified_songs = database.getSongsWithSyncStatus(SyncStatus.MODIFIED);
- List songModificationRequests = new ArrayList<>();
- for(MusicNote musicNote : modified_songs) {
- songModificationRequests.add(new SongModificationRequest(musicNote.getServerID(), musicNote.getTitle(), musicNote.getComposer(), musicNote.getGenre(), musicNote.getYear()));
- }
- return new SongModificationBatchRequest(songModificationRequests);
- }
-
- public void syncSongModifications() {
- SongModificationBatchRequest request = buildModificationRequest();
- syncService.performSongModification(request).enqueue(new Callback() {
- @Override
- public void onResponse(Call call, Response response) {
- executorService.execute(() -> {
- database.storeSongSyncModifyResponses(response.body().getUpdated_songs(), SyncStatus.SYNCED, LocalDateTime.now());
- });
- }
-
- @Override
- public void onFailure(Call call, Throwable throwable) {
- Toast.makeText(context, "Sync of Modified Songs failed", Toast.LENGTH_LONG).show();
- }
- });
- }
-
- private SongDeletionBatchRequest buildDeletionBatchRequest() {
- List deleted_songs = database.getSongsWithSyncStatus(SyncStatus.DELETED);
- List deleted_song_ids = deleted_songs.stream().map(MusicNote::getServerID).collect(Collectors.toList());
- return new SongDeletionBatchRequest(deleted_song_ids);
- }
-
- public void syncSongDeletions() {
- SongDeletionBatchRequest request = buildDeletionBatchRequest();
- syncService.performSongDeletion(request).enqueue(new Callback() {
- @Override
- public void onResponse(Call call, Response response) {
- if(response.isSuccessful() && response.body() != null) {
- executorService.execute(() -> {
- database.deleteSongs(response.body().getDeletedSongs());
- });
- }
- }
-
- @Override
- public void onFailure(Call call, Throwable throwable) {
- Toast.makeText(context, "Sync of Deleted Songs failed", Toast.LENGTH_LONG).show();
- }
- });
- }
-
- public void uploadNoteSheets() {
- List noteSheets = database.getNoteSheetsWithStatus(SyncStatus.CREATED);
- for(NoteSheet noteSheet : noteSheets) {
- Optional serverID = database.getMusicNoteByLocalID(noteSheet.getMusicNoteId());
-
- if(serverID.isPresent()) {
- File imageFile = new File(noteSheet.getFilePath());
- // Erstelle Request-Bodies für serverID und fileName
- RequestBody serverIDBody = RequestBody.create(MediaType.parse("text/plain"), serverID.get());
- RequestBody fileNameBody = RequestBody.create(MediaType.parse("text/plain"), imageFile.getName());
-
- // Erstelle den Multipart-Body für die Bilddatei
- RequestBody imageRequestBody = RequestBody.create(MediaType.parse("image/*"), imageFile);
- MultipartBody.Part imagePart = MultipartBody.Part.createFormData("image", imageFile.getName(), imageRequestBody);
-
- syncService.uploadNoteSheet(serverIDBody, fileNameBody, imagePart).enqueue(new Callback() {
- @Override
- public void onResponse(Call call, Response response) {
- if (response.isSuccessful() && response.body() != null) {
- // Erfolg: Antwort verarbeiten
- Toast.makeText(context, "Upload erfolgreich", Toast.LENGTH_LONG).show();
- executorService.execute(() -> {
- noteSheet.setSyncStatus(SyncStatus.SYNCED);
- database.updateNoteSheet(noteSheet);
- });
- } else {
- // Fehler: Antwort prüfen
- Toast.makeText(context, "Fehler beim Upload: " + response.code(), Toast.LENGTH_LONG).show();
- }
-
- }
-
- @Override
- public void onFailure(Call call, Throwable throwable) {
- Toast.makeText(context, "Fehler beim Upload: " + throwable.toString(), Toast.LENGTH_LONG).show();
- }
- });
- }
- }
- }
-
- public void fetchModifiedSongs() {
- FetchRequest request = new FetchRequest(LocalDateTime.MIN);
-
- syncService.fetchModifiedSongs(LocalDateTime.MIN).enqueue(new Callback() {
- @Override
- public void onResponse(Call call, Response response) {
- if(response.isSuccessful() && response.body() != null) {
- executorService.execute(() -> {
- List syncDataObjects = new ArrayList<>();
- for(String serverID: response.body().getServerIDs()) {
- syncDataObjects.add(new SyncDataObject(serverID, SyncDataObjectType.MUSIC_NOTE));
- }
- database.insertSyncDataObjects(syncDataObjects);
- });
- } else {
- Toast.makeText(context, "Fehler beim Fetch: " + response.code(), Toast.LENGTH_LONG).show();
- }
- }
-
- @Override
- public void onFailure(Call call, Throwable throwable) {
- Toast.makeText(context, "Fehler beim Fetch: " + throwable.getMessage(), Toast.LENGTH_LONG).show();
- }
- });
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/synchronisation/songs/creation/SongCreationBatchRequest.java b/app/src/main/java/core/notevault/sync/synchronisation/songs/creation/SongCreationBatchRequest.java
deleted file mode 100644
index 1bb9986..0000000
--- a/app/src/main/java/core/notevault/sync/synchronisation/songs/creation/SongCreationBatchRequest.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package core.notevault.sync.synchronisation.songs.creation;
-
-import java.util.List;
-
-public class SongCreationBatchRequest {
- private List songs;
-
- public SongCreationBatchRequest(List songs) {
- this.songs = songs;
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/synchronisation/songs/creation/SongCreationBatchResponse.java b/app/src/main/java/core/notevault/sync/synchronisation/songs/creation/SongCreationBatchResponse.java
deleted file mode 100644
index f1329b9..0000000
--- a/app/src/main/java/core/notevault/sync/synchronisation/songs/creation/SongCreationBatchResponse.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package core.notevault.sync.synchronisation.songs.creation;
-
-import java.util.List;
-
-public class SongCreationBatchResponse {
- private List songs;
-
- public SongCreationBatchResponse(List songs) {
- this.songs = songs;
- }
-
- public List getSongs() {
- return songs;
- }
-
- public void setSongs(List songs) {
- this.songs = songs;
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/synchronisation/songs/creation/SongCreationRequest.java b/app/src/main/java/core/notevault/sync/synchronisation/songs/creation/SongCreationRequest.java
deleted file mode 100644
index 30cc11a..0000000
--- a/app/src/main/java/core/notevault/sync/synchronisation/songs/creation/SongCreationRequest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package core.notevault.sync.synchronisation.songs.creation;
-
-public class SongCreationRequest {
- private long localID;
- private String title;
- private String composer;
- private String genre;
- private int year;
-
- public SongCreationRequest(long localID, String title, String composer, String genre, int year) {
- this.localID = localID;
- this.title = title;
- this.composer = composer;
- this.genre = genre;
- this.year = year;
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/synchronisation/songs/creation/SongCreationResponse.java b/app/src/main/java/core/notevault/sync/synchronisation/songs/creation/SongCreationResponse.java
deleted file mode 100644
index fe47041..0000000
--- a/app/src/main/java/core/notevault/sync/synchronisation/songs/creation/SongCreationResponse.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package core.notevault.sync.synchronisation.songs.creation;
-
-public class SongCreationResponse {
- private int localID;
- private String serverID;
-
- public SongCreationResponse(int localID, String serverID) {
- this.localID = localID;
- this.serverID = serverID;
- }
-
- public int getLocalID() {
- return localID;
- }
-
- public void setLocalID(int localID) {
- this.localID = localID;
- }
-
- public String getServerID() {
- return serverID;
- }
-
- public void setServerID(String serverID) {
- this.serverID = serverID;
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/synchronisation/songs/deletion/SongDeletionBatchRequest.java b/app/src/main/java/core/notevault/sync/synchronisation/songs/deletion/SongDeletionBatchRequest.java
deleted file mode 100644
index 76eeb37..0000000
--- a/app/src/main/java/core/notevault/sync/synchronisation/songs/deletion/SongDeletionBatchRequest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package core.notevault.sync.synchronisation.songs.deletion;
-
-import java.util.List;
-
-public class SongDeletionBatchRequest {
- private List songs;
-
- public SongDeletionBatchRequest(List songs) {
- this.songs = songs;
- }
-
- public List getSongs() {
- return songs;
- }
-
- public void setSongs(List songs) {
- this.songs = songs;
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/synchronisation/songs/deletion/SongDeletionBatchResponse.java b/app/src/main/java/core/notevault/sync/synchronisation/songs/deletion/SongDeletionBatchResponse.java
deleted file mode 100644
index 61fa249..0000000
--- a/app/src/main/java/core/notevault/sync/synchronisation/songs/deletion/SongDeletionBatchResponse.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package core.notevault.sync.synchronisation.songs.deletion;
-
-import java.util.List;
-
-public class SongDeletionBatchResponse {
- private List deletedSongs;
-
- public SongDeletionBatchResponse(List deletedSongs) {
- this.deletedSongs = deletedSongs;
- }
-
- public List getDeletedSongs() {
- return deletedSongs;
- }
-
- public void setDeletedSongs(List deletedSongs) {
- this.deletedSongs = deletedSongs;
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/synchronisation/songs/modification/SongModificationBatchRequest.java b/app/src/main/java/core/notevault/sync/synchronisation/songs/modification/SongModificationBatchRequest.java
deleted file mode 100644
index 4f5f59e..0000000
--- a/app/src/main/java/core/notevault/sync/synchronisation/songs/modification/SongModificationBatchRequest.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package core.notevault.sync.synchronisation.songs.modification;
-
-import java.util.List;
-
-public class SongModificationBatchRequest {
- private List songs;
-
- public SongModificationBatchRequest(List songs) {
- this.songs = songs;
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/synchronisation/songs/modification/SongModificationBatchResponse.java b/app/src/main/java/core/notevault/sync/synchronisation/songs/modification/SongModificationBatchResponse.java
deleted file mode 100644
index 1ad55ac..0000000
--- a/app/src/main/java/core/notevault/sync/synchronisation/songs/modification/SongModificationBatchResponse.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package core.notevault.sync.synchronisation.songs.modification;
-
-import java.util.List;
-
-public class SongModificationBatchResponse {
- private List songs;
-
- public SongModificationBatchResponse(List songs) {
- this.songs = songs;
- }
-
- public List getUpdated_songs() {
- return songs;
- }
-
- public void setUpdated_songs(List updated_songs) {
- this.songs = updated_songs;
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/synchronisation/songs/modification/SongModificationRequest.java b/app/src/main/java/core/notevault/sync/synchronisation/songs/modification/SongModificationRequest.java
deleted file mode 100644
index e2fc333..0000000
--- a/app/src/main/java/core/notevault/sync/synchronisation/songs/modification/SongModificationRequest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package core.notevault.sync.synchronisation.songs.modification;
-
-public class SongModificationRequest {
- private String serverID;
- private String title;
- private String composer;
- private String genre;
- private int year;
-
- public SongModificationRequest(String serverID, String title, String composer, String genre, int year) {
- this.serverID = serverID;
- this.title = title;
- this.composer = composer;
- this.genre = genre;
- this.year = year;
- }
-
- public String getServerID() {
- return serverID;
- }
-
- public void setServerID(String serverID) {
- this.serverID = serverID;
- }
-
- public String getTitle() {
- return title;
- }
-
- public void setTitle(String title) {
- this.title = title;
- }
-
- public String getComposer() {
- return composer;
- }
-
- public void setComposer(String composer) {
- this.composer = composer;
- }
-
- public String getGenre() {
- return genre;
- }
-
- public void setGenre(String genre) {
- this.genre = genre;
- }
-
- public int getYear() {
- return year;
- }
-
- public void setYear(int year) {
- this.year = year;
- }
-}
diff --git a/app/src/main/java/core/notevault/sync/synchronisation/songs/notesheets/UploadResponse.java b/app/src/main/java/core/notevault/sync/synchronisation/songs/notesheets/UploadResponse.java
deleted file mode 100644
index 05a4801..0000000
--- a/app/src/main/java/core/notevault/sync/synchronisation/songs/notesheets/UploadResponse.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package core.notevault.sync.synchronisation.songs.notesheets;
-
-public class UploadResponse {
- private String serverID;
-}
diff --git a/app/src/main/java/core/notevault/ui/gallery/ConcertAdapter.java b/app/src/main/java/core/notevault/ui/gallery/ConcertAdapter.java
deleted file mode 100644
index 6513eb2..0000000
--- a/app/src/main/java/core/notevault/ui/gallery/ConcertAdapter.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package core.notevault.ui.gallery;
-
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageButton;
-import android.widget.TextView;
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-import core.notevault.R;
-import core.notevault.data.Concert;
-import core.notevault.ui.home.NoteSongAdapter;
-import org.jetbrains.annotations.NotNull;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ConcertAdapter extends RecyclerView.Adapter {
-
- private final List concertList;
- private final OnConcertClickListener concertClickListener;
-
- public interface OnConcertClickListener {
- void onDeleteConcert(Concert concert);
- void onOpenConcertEditor(Concert concert);
- void onConcertClick(Concert concert);
- }
-
-
- public ConcertAdapter(List concertList, OnConcertClickListener concertClickListener) {
- this.concertList = concertList;
- this.concertClickListener = concertClickListener;
- }
-
- public ConcertAdapter(OnConcertClickListener onConcertClickListener) {
- this.concertClickListener = onConcertClickListener;
- this.concertList = new ArrayList<>();
- }
-
- @Override
- public void onBindViewHolder(@NonNull ConcertViewHolder holder, int position) {
- holder.concertTitleView.setText(concertList.get(position).getTitle());
- holder.dateHolder.setText(concertList.get(position).getConcertDate());
-
- holder.deleteButton.setOnClickListener(v -> concertClickListener.onDeleteConcert(concertList.get(position)));
- holder.editButton.setOnClickListener(v -> concertClickListener.onOpenConcertEditor(concertList.get(position)));
- holder.itemView.setOnClickListener(v -> concertClickListener.onConcertClick(concertList.get(position)));
- }
-
- @Override
- public int getItemCount() {
- return concertList.size();
- }
-
- @NonNull
- @Override
- public ConcertViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- View view = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.concert_item, parent, false);
- return new ConcertViewHolder(view);
- }
-
- public void updateConcerts(List concerts) {
- Log.d("ConcertAdapter", "Update Concerts: " + this.concertList.size() + "vs new: " + concerts.size());
- this.concertList.clear();
- this.concertList.addAll(concerts);
- notifyDataSetChanged();
- }
-
- public class ConcertViewHolder extends RecyclerView.ViewHolder {
- TextView concertTitleView;
- TextView dateHolder;
-
- ImageButton deleteButton;
- ImageButton editButton;
-
- public ConcertViewHolder(@NonNull @NotNull View itemView) {
- super(itemView);
- concertTitleView = itemView.findViewById(R.id.concert_title);
- dateHolder = itemView.findViewById(R.id.concert_date);
- deleteButton = itemView.findViewById(R.id.delete_concert_button);
- editButton = itemView.findViewById(R.id.edit_concert_button);
- }
- }
-}
diff --git a/app/src/main/java/core/notevault/ui/gallery/GalleryFragment.java b/app/src/main/java/core/notevault/ui/gallery/GalleryFragment.java
deleted file mode 100644
index 365250f..0000000
--- a/app/src/main/java/core/notevault/ui/gallery/GalleryFragment.java
+++ /dev/null
@@ -1,153 +0,0 @@
-package core.notevault.ui.gallery;
-
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-import androidx.annotation.NonNull;
-import androidx.fragment.app.Fragment;
-import androidx.lifecycle.ViewModelProvider;
-import androidx.navigation.NavController;
-import androidx.navigation.NavDirections;
-import androidx.navigation.Navigation;
-import androidx.recyclerview.widget.DividerItemDecoration;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import com.google.android.material.floatingactionbutton.FloatingActionButton;
-import core.notevault.R;
-import core.notevault.data.Concert;
-import core.notevault.data.MusicDatabase;
-import core.notevault.data.MusicNote;
-import core.notevault.data.MusicNoteDAO;
-import core.notevault.databinding.FragmentGalleryBinding;
-import core.notevault.ui.gallery.editor.ConcertEditorDialog;
-
-import java.util.List;
-
-public class GalleryFragment extends Fragment {
-
- private FragmentGalleryBinding binding;
- private ConcertAdapter concertAdapter;
- private GalleryViewModel galleryViewModel;
-
- public View onCreateView(@NonNull LayoutInflater inflater,
- ViewGroup container, Bundle savedInstanceState) {
- galleryViewModel =
- new ViewModelProvider(this).get(GalleryViewModel.class);
-
- binding = FragmentGalleryBinding.inflate(inflater, container, false);
- View root = binding.getRoot();
-
- RecyclerView recyclerView = root.findViewById(R.id.concert_recycler_view);
- concertAdapter = new ConcertAdapter(new ConcertAdapter.OnConcertClickListener() {
- @Override
- public void onDeleteConcert(Concert concert) {
- deleteConcert(concert);
- }
-
- @Override
- public void onOpenConcertEditor(Concert concert) {
- editConcert(concert);
- }
-
- @Override
- public void onConcertClick(Concert concert) {
- Log.d("GalleryFragment", "Clicked on Concert: " + concert.getTitle());
- Bundle bundle = new Bundle();
- bundle.putInt("concertID", concert.getId());
- bundle.putString("concertTitle", concert.getTitle());
- bundle.putString("concertDate", concert.getConcertDate());
-
- NavController navController = Navigation.findNavController(getActivity(), R.id.nav_host_fragment_content_main);
- navController.navigate(R.id.concertDetailFragment, bundle);
- }
- });
- recyclerView.setAdapter(concertAdapter);
- recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
-
- DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(), LinearLayoutManager.VERTICAL);
- recyclerView.addItemDecoration(dividerItemDecoration);
-
-
- FloatingActionButton addConcertBtn = root.findViewById(R.id.add_concert_btn);
- addConcertBtn.setOnClickListener(v -> onCreateNewConcert());
-
- galleryViewModel.getConcerts().observe(getViewLifecycleOwner(), newConcerts -> {
- concertAdapter.updateConcerts(newConcerts);
- });
-
- new LoadConcerts().execute();
- return root;
- }
-
- public void deleteConcert(Concert concert) {
- Log.d("GalleryFragment", "Delete Concert");
- new Thread(() -> {
- MusicDatabase musicDatabase = MusicDatabase.getDatabase(this.getContext());
- MusicNoteDAO musicNoteDAO = musicDatabase.musicNoteDao();
- musicNoteDAO.deleteConcert(concert);
-
- new Handler(Looper.getMainLooper()).post(() -> {
- galleryViewModel.deleteConcert(concert);
- Log.d("GalleryFragment", "Concert deleted successfully and ViewModel updated");
- });
- }).start();
- }
-
- public void editConcert(Concert concert) {
- ConcertEditorDialog concertEditorDialog = new ConcertEditorDialog();
-
- Bundle args = new Bundle();
- args.putString("concert_title", concert.getTitle());
- args.putString("concert_date", concert.getConcertDate());
- args.putInt("concertID", concert.getId());
-
- concertEditorDialog.setArguments(args);
-
- concertEditorDialog.show(getParentFragmentManager(), ConcertEditorDialog.TAG);
- }
-
- public void updateConcert(Concert concert) {
- galleryViewModel.updateConcert(concert);
- }
-
- private class LoadConcerts extends AsyncTask> {
-
- @Override
- protected List doInBackground(Void... voids) {
- MusicDatabase db = MusicDatabase.getDatabase(getContext());
- MusicNoteDAO musicNoteDAO = db.musicNoteDao();
- List concerts = musicNoteDAO.getAllConcerts();
- Log.d("GalleryFragment", "Fetching concerts: " + concerts.size());
- return concerts;
-
- }
-
- @Override
- protected void onPostExecute(List concerts) {
- Log.d("GalleryFragment", "Concerts size in onPostExecute: " + concerts.size());
- // concertAdapter.updateConcerts(concerts); // Aktualisiere den Adapter mit den Titeln
- galleryViewModel.setConcerts(concerts);
- }
- }
-
- public void onCreateNewConcert() {
- ConcertEditorDialog concertEditorDialog = new ConcertEditorDialog();
- concertEditorDialog.show(getParentFragmentManager(), ConcertEditorDialog.TAG);
- }
-
- public void addConcert(Concert concert) {
- this.galleryViewModel.addConcert(concert);
- }
-
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- binding = null;
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/core/notevault/ui/gallery/GalleryViewModel.java b/app/src/main/java/core/notevault/ui/gallery/GalleryViewModel.java
deleted file mode 100644
index 48132b8..0000000
--- a/app/src/main/java/core/notevault/ui/gallery/GalleryViewModel.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package core.notevault.ui.gallery;
-
-import android.util.Log;
-import androidx.lifecycle.LiveData;
-import androidx.lifecycle.MutableLiveData;
-import androidx.lifecycle.ViewModel;
-import core.notevault.data.Concert;
-
-import java.util.List;
-
-public class GalleryViewModel extends ViewModel {
-
- private final MutableLiveData> concerts;
-
- public GalleryViewModel() {
- this.concerts = new MutableLiveData<>();
- }
-
-
- public LiveData> getConcerts() {
- return concerts;
- }
-
- public void setConcerts(List concerts) {
- this.concerts.setValue(concerts);
- }
-
- public void addConcert(Concert concert) {
- List currentConcerts = this.concerts.getValue();
- Log.d("GalleryViewModel", "Add Concert");
- if(currentConcerts != null) {
- currentConcerts.add(concert);
- concerts.setValue(currentConcerts);
- }
- }
-
- public void deleteConcert(Concert concert) {
- List currentConcerts = concerts.getValue();
- if(currentConcerts != null) {
- currentConcerts.remove(concert);
- concerts.setValue(currentConcerts);
- }
- }
-
- public void updateConcert(Concert concert) {
- List currentConcerts = concerts.getValue();
- if(currentConcerts != null) {
- for(int i = 0; i < currentConcerts.size(); i++) {
- if(currentConcerts.get(i).getId() == concert.getId()) {
- currentConcerts.get(i).setTitle(concert.getTitle());
- currentConcerts.get(i).setConcertDate(concert.getConcertDate());
- break;
- }
- }
- concerts.setValue(currentConcerts);
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/core/notevault/ui/gallery/detail/ConcertDetailFragment.java b/app/src/main/java/core/notevault/ui/gallery/detail/ConcertDetailFragment.java
deleted file mode 100644
index e9ab23e..0000000
--- a/app/src/main/java/core/notevault/ui/gallery/detail/ConcertDetailFragment.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package core.notevault.ui.gallery.detail;
-
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import androidx.fragment.app.Fragment;
-import androidx.lifecycle.ViewModelProvider;
-import androidx.recyclerview.widget.DividerItemDecoration;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import androidx.room.util.ViewInfo;
-import com.google.android.material.floatingactionbutton.FloatingActionButton;
-import core.notevault.data.Concert;
-import core.notevault.data.MusicDatabase;
-import core.notevault.data.MusicNote;
-import core.notevault.data.MusicNoteDAO;
-import core.notevault.databinding.FragmentConcertDetailBinding;
-import core.notevault.ui.home.NoteSongAdapter;
-import core.notevault.ui.metadatadialog.SongEditDialog;
-
-import java.util.Collections;
-import java.util.List;
-
-public class ConcertDetailFragment extends Fragment {
-
- public interface OnConcertSongsLoadedListener {
- void onSongsLoaded(List songs);
- }
-
- private FragmentConcertDetailBinding binding;
- private Concert concert;
- private ConcertDetailViewModel concertDetailViewModel;
- private NoteSongAdapter noteSongAdapter;
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- concertDetailViewModel = new ViewModelProvider(this).get(ConcertDetailViewModel.class);
-
- binding = FragmentConcertDetailBinding.inflate(inflater, container, false);
- int concertId = getArguments().getInt("concertID");
- String concertTitle = getArguments().getString("concertTitle");
- String concertDate = getArguments().getString("concertDate");
- concert = new Concert(concertId, concertTitle, concertDate);
-
- binding.textConcertDetailsTitle.setText(concertTitle);
- binding.textConcertDetailsDate.setText(concertDate);
-
- RecyclerView recyclerView = binding.noteRecyclerView;
- noteSongAdapter = new NoteSongAdapter(this::deleteSongFromConcert, this::editSongFromConcert);
- recyclerView.setAdapter(noteSongAdapter);
- recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
-
- DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(), LinearLayoutManager.VERTICAL);
- recyclerView.addItemDecoration(dividerItemDecoration);
-
- FloatingActionButton fab = binding.addSongConcert;
- fab.setOnClickListener(view -> {
- ConcertSongSelector concertSongSelector = new ConcertSongSelector();
-
- Bundle bundle = new Bundle();
- bundle.putString("concertTitle", concertTitle);
- bundle.putString("concertDate", concertDate);
- bundle.putInt("concertID", concertId);
-
- concertSongSelector.setArguments(bundle);
-
- concertSongSelector.show(getParentFragmentManager(), ConcertSongSelector.TAG);
- });
-
- concertDetailViewModel.getConcertSongs().observe(getViewLifecycleOwner(), songs -> {
- noteSongAdapter.updateSongTitles(songs);
- });
-
- new LoadConcertSongsTask(concertId, songs -> {
- this.concertDetailViewModel.setConcertSongs(songs);
- }).execute();
-
- return binding.getRoot();
- }
-
- private void deleteSongFromConcert(MusicNote musicNote) {
- this.concertDetailViewModel.deleteConcertSong(musicNote);
- new Thread(() -> {
- MusicNoteDAO musicNoteDAO = MusicDatabase.getDatabase(getContext()).musicNoteDao();
- musicNoteDAO.deleteConcertSong(musicNote.getMusicNoteId(), concert.getId());
- }).start();
- }
-
- private void editSongFromConcert(MusicNote musicNote) {
- SongEditDialog songEditDialog = new SongEditDialog();
- songEditDialog.setSong(musicNote);
- songEditDialog.show(getParentFragmentManager(), SongEditDialog.TAG);
- }
-
- private class LoadConcertSongsTask extends AsyncTask> {
- private final int concertID;
- private final OnConcertSongsLoadedListener listener;
-
- public LoadConcertSongsTask(int concertID, OnConcertSongsLoadedListener listener) {
- this.concertID = concertID;
- this.listener = listener;
- }
-
- @Override
- protected List doInBackground(Void... voids) {
- MusicDatabase db = MusicDatabase.getDatabase(getContext());
- return db.musicNoteDao().getAllMusicNotesOfConcert(concertID);
- }
-
- @Override
- protected void onPostExecute(List songs) {
- Log.d("ConcertDetailFragment", "Loaded Concertsongs: " + songs.size());
- listener.onSongsLoaded(songs);
- }
- }
-}
diff --git a/app/src/main/java/core/notevault/ui/gallery/detail/ConcertDetailViewModel.java b/app/src/main/java/core/notevault/ui/gallery/detail/ConcertDetailViewModel.java
deleted file mode 100644
index 69920ca..0000000
--- a/app/src/main/java/core/notevault/ui/gallery/detail/ConcertDetailViewModel.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package core.notevault.ui.gallery.detail;
-
-import androidx.lifecycle.LiveData;
-import androidx.lifecycle.MutableLiveData;
-import androidx.lifecycle.ViewModel;
-import core.notevault.data.MusicNote;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ConcertDetailViewModel extends ViewModel {
- private final MutableLiveData> concertSongs;
-
- public ConcertDetailViewModel() {
- this.concertSongs = new MutableLiveData<>(new ArrayList<>());
- }
-
- public LiveData> getConcertSongs() {
- return concertSongs;
- }
-
- public void setConcertSongs(List concertSongs) {
- this.concertSongs.setValue(concertSongs);
- }
-
- public void deleteConcertSong(MusicNote note) {
- List currentConcertSongs = concertSongs.getValue();
- if(currentConcertSongs != null) {
- currentConcertSongs.remove(note);
- this.concertSongs.setValue(currentConcertSongs);
- }
- }
-
- public void addConcertSongs(List concertSongs) {
- List currentConcertSongs = this.concertSongs.getValue();
- if(currentConcertSongs != null) {
- currentConcertSongs.addAll(concertSongs);
- this.concertSongs.setValue(currentConcertSongs);
- }
- }
-}
diff --git a/app/src/main/java/core/notevault/ui/gallery/detail/ConcertSongSelector.java b/app/src/main/java/core/notevault/ui/gallery/detail/ConcertSongSelector.java
deleted file mode 100644
index c024799..0000000
--- a/app/src/main/java/core/notevault/ui/gallery/detail/ConcertSongSelector.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package core.notevault.ui.gallery.detail;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.Context;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.SearchView;
-import android.widget.TextView;
-import androidx.annotation.NonNull;
-import androidx.fragment.app.DialogFragment;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import core.notevault.R;
-import core.notevault.data.ConcertSong;
-import core.notevault.data.MusicDatabase;
-import core.notevault.data.MusicNote;
-import core.notevault.data.MusicNoteDAO;
-import core.notevault.ui.metadatadialog.MetaDataDialog;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class ConcertSongSelector extends DialogFragment {
-
- private ConcertSongSelectorAdapter adapter;
- private OnSongSelectedListener listener;
- private int concertID;
-
- public interface OnSongSelectedListener {
- void onSongsSelected(List songs, int concertID);
- }
-
- @NonNull
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- LayoutInflater inflater = getActivity().getLayoutInflater();
- View dialogView = inflater.inflate(R.layout.dialog_concert_song_selector, null);
-
- String concertTitle = getArguments().getString("concertTitle");
- String concertDate = getArguments().getString("concertDate");
- concertID = getArguments().getInt("concertID");
-
- TextView dialogTitle = dialogView.findViewById(R.id.dialog_title_concert_song_selector);
- dialogTitle.setText("Wähle Stücke für das Konzert '" + concertTitle + "' am " + concertDate + " aus");
-
- RecyclerView recyclerView = dialogView.findViewById(R.id.concert_song_selector_recycler);
- recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
-
-
- adapter = new ConcertSongSelectorAdapter(new ArrayList<>());
- recyclerView.setAdapter(adapter);
-
- SearchView searchView = dialogView.findViewById(R.id.search_view);
- searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
- @Override
- public boolean onQueryTextSubmit(String s) {
- return false;
- }
-
- @Override
- public boolean onQueryTextChange(String s) {
- adapter.filter(s);
- return true;
- }
- });
-
- fetchAllSongs();
-
- return new AlertDialog.Builder(requireContext())
- .setView(dialogView)
- .setPositiveButton("Speichern", (dialog, which) -> {
- List selectedSongs = adapter.getSelectedSongs();
- listener.onSongsSelected(selectedSongs, concertID);
- })
- .setNegativeButton("Abbrechen", (dialog, which) -> {} )
- .create();
- }
-
- @Override
- public void onAttach(@NonNull Context context) {
- super.onAttach(context);
- if (context instanceof ConcertSongSelector.OnSongSelectedListener) {
- listener = (ConcertSongSelector.OnSongSelectedListener) context;
- } else {
- throw new RuntimeException(context.toString()
- + " must implement OnMetadataListener");
- }
- }
-
- private void fetchAllSongs() {
- // Ersetze dies durch das Laden der Songs aus der Datenbank oder einer anderen Quelle
- new LoadSongTitlesTask().execute();
- }
-
- private class LoadSongTitlesTask extends AsyncTask> {
-
- @Override
- protected List doInBackground(Void... voids) {
- MusicDatabase db = MusicDatabase.getDatabase(getContext());
- MusicNoteDAO musicNoteDAO = db.musicNoteDao();
- return musicNoteDAO.getAllNotes();
- }
-
- @Override
- protected void onPostExecute(List songs) {
- adapter.setSongs(songs);
- }
- }
-
- public static String TAG = "ConcertSongSelector";
-}
diff --git a/app/src/main/java/core/notevault/ui/gallery/detail/ConcertSongSelectorAdapter.java b/app/src/main/java/core/notevault/ui/gallery/detail/ConcertSongSelectorAdapter.java
deleted file mode 100644
index 3a4eeef..0000000
--- a/app/src/main/java/core/notevault/ui/gallery/detail/ConcertSongSelectorAdapter.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package core.notevault.ui.gallery.detail;
-
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.CheckBox;
-import android.widget.TextView;
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-import core.notevault.R;
-import core.notevault.data.MusicNote;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ConcertSongSelectorAdapter extends RecyclerView.Adapter {
- private List songs;
- private List selectedSongs = new ArrayList<>();
- private List filteredSongs;
-
- public ConcertSongSelectorAdapter(List songs) {
- this.songs = songs;
- this.filteredSongs = new ArrayList<>(songs);
- }
-
- @NonNull
- @Override
- public ConcertSongSelectorViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- View view = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.item_concert_song, parent, false);
- return new ConcertSongSelectorViewHolder(view);
- }
-
- @Override
- public void onBindViewHolder(@NonNull ConcertSongSelectorViewHolder holder, int position) {
- MusicNote song = filteredSongs.get(position);
- holder.bind(song);
- }
-
-
- @Override
- public int getItemCount() {
- return filteredSongs.size();
- }
-
- public List getSelectedSongs() {
- return selectedSongs;
- }
-
- public void setSongs(List musicNotes) {
- songs = musicNotes;
- filteredSongs = new ArrayList<>(musicNotes);
- notifyDataSetChanged();
- }
-
- public void filter(String query) {
- filteredSongs.clear();
- if (query.isEmpty()) {
- filteredSongs.addAll(songs);
- } else {
- for (MusicNote song : songs) {
- if (song.getTitle().toLowerCase().contains(query.toLowerCase())) {
- filteredSongs.add(song);
- }
- }
- }
- notifyDataSetChanged();
- }
-
- class ConcertSongSelectorViewHolder extends RecyclerView.ViewHolder {
- private final TextView songTitle;
- private final CheckBox songCheckbox;
-
- ConcertSongSelectorViewHolder(View itemView) {
- super(itemView);
- songTitle = itemView.findViewById(R.id.song_title);
- songCheckbox = itemView.findViewById(R.id.song_checkbox);
-
- songCheckbox.setOnCheckedChangeListener((buttonView, isChecked) -> {
- MusicNote musicNote = filteredSongs.get(getAbsoluteAdapterPosition());
- selectedSongs.add(musicNote);
- });
- }
-
- void bind(MusicNote song) {
- songTitle.setText(song.getTitle());
- songCheckbox.setChecked(selectedSongs.contains(song));
- }
- }
-}
diff --git a/app/src/main/java/core/notevault/ui/gallery/editor/ConcertEditorDialog.java b/app/src/main/java/core/notevault/ui/gallery/editor/ConcertEditorDialog.java
deleted file mode 100644
index 3f5e9c5..0000000
--- a/app/src/main/java/core/notevault/ui/gallery/editor/ConcertEditorDialog.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package core.notevault.ui.gallery.editor;
-
-import android.app.AlertDialog;
-import android.app.DatePickerDialog;
-import android.app.Dialog;
-import android.content.Context;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.EditText;
-import androidx.annotation.NonNull;
-import androidx.fragment.app.DialogFragment;
-import core.notevault.R;
-import core.notevault.data.Concert;
-import core.notevault.ui.metadatadialog.MetaDataDialog;
-
-import java.util.Calendar;
-import java.util.Date;
-
-public class ConcertEditorDialog extends DialogFragment {
- private Concert concert;
-
- private EditText concert_date_input;
- private EditText concertTitleInput;
-
- private OnConcertEditorListener listener;
-
- private int concertID = -1;
-
- public void setConcert(Concert concert) {
- concert_date_input.setText(concert.getConcertDate());
- concertTitleInput.setText(concert.getTitle());
- this.concert = concert;
- }
-
- public interface OnConcertEditorListener {
- void onConcertEditorClosed(String concertTitle, String concertDate, int concertID);
- }
-
- public interface OnConcertEditorEditListener {
- void onConcertEditorEditClosed(String concertTitle, String concertDate);
- }
-
- @NonNull
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- LayoutInflater inflater = requireActivity().getLayoutInflater();
- View dialogView = inflater.inflate(R.layout.concert_editor, null);
-
- EditText title_input = dialogView.findViewById(R.id.concert_title_input);
- concert_date_input = dialogView.findViewById(R.id.concert_date_input);
-
- concert_date_input.setOnClickListener(v -> showDatePickerDialog());
-
- if(getArguments() != null) {
- String concertTitle = getArguments().getString("concert_title");
- String concertDate = getArguments().getString("concert_date");
- concertID = getArguments().getInt("concertID");
- title_input.setText(concertTitle);
- concert_date_input.setText(concertDate);
-
- }
-
- return new AlertDialog.Builder(requireContext())
- .setView(dialogView)
- .setPositiveButton("Speichern", (dialog, which) -> {
- String title = title_input.getText().toString();
- String concertDate = concert_date_input.getText().toString();
- Log.d("ConcertEditor", "ConcertDate: " + concertDate);
-
- listener.onConcertEditorClosed(title, concertDate, concertID);
-
-
- })
- .setNegativeButton("Abbrechen", (dialog, which) -> {} )
- .create();
- }
-
- @Override
- public void onAttach(@NonNull Context context) {
- super.onAttach(context);
- if (context instanceof OnConcertEditorListener) {
- listener = (OnConcertEditorListener) context;
- } else {
- throw new RuntimeException(context.toString()
- + " must implement OnMetadataListener");
- }
- }
-
- private void showDatePickerDialog() {
- // Erhalte das aktuelle Datum
- final Calendar calendar = Calendar.getInstance();
- int year = calendar.get(Calendar.YEAR);
- int month = calendar.get(Calendar.MONTH);
- int day = calendar.get(Calendar.DAY_OF_MONTH);
-
- // Erstelle den DatePickerDialog
- DatePickerDialog datePickerDialog = new DatePickerDialog(this.getContext(),
- (view, selectedYear, selectedMonth, selectedDay) -> {
- // Setze das ausgewählte Datum in das EditText
- concert_date_input.setText(selectedDay + "/" + (selectedMonth + 1) + "/" + selectedYear);
- }, year, month, day);
-
- // Zeige den Dialog an
- datePickerDialog.show();
- }
-
-
- public static String TAG = "ConcertEditorDialog";
-}
diff --git a/app/src/main/java/core/notevault/ui/home/FullScreenImageActivity.java b/app/src/main/java/core/notevault/ui/home/FullScreenImageActivity.java
deleted file mode 100644
index 5d00fc2..0000000
--- a/app/src/main/java/core/notevault/ui/home/FullScreenImageActivity.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package core.notevault.ui.home;
-
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.widget.ImageView;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.viewpager2.widget.ViewPager2;
-import core.notevault.R;
-import core.notevault.ui.noteviewer.ImagePagerAdapter;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class FullScreenImageActivity extends AppCompatActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_fullscreen_image); // Erstelle eine Layout-Datei
-
- ViewPager2 imageView = findViewById(R.id.viewPager); // Angenommen, du hast ein ImageView
-
- // Die URI aus dem Intent erhalten
- Intent intent = getIntent();
- String[] imageUris = intent.getStringArrayExtra("imageUris");
- if (imageUris != null) {
- List uriList = Arrays.asList(imageUris);
- ImagePagerAdapter adapter = new ImagePagerAdapter(this, uriList);
- imageView.setAdapter(adapter); // Setze die URI in das ImageView
- } else {
- throw new NullPointerException();
- }
- }
-}
diff --git a/app/src/main/java/core/notevault/ui/home/HomeFragment.java b/app/src/main/java/core/notevault/ui/home/HomeFragment.java
deleted file mode 100644
index 016989c..0000000
--- a/app/src/main/java/core/notevault/ui/home/HomeFragment.java
+++ /dev/null
@@ -1,160 +0,0 @@
-package core.notevault.ui.home;
-
-import android.content.Intent;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Toast;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-import androidx.lifecycle.ViewModelProvider;
-import androidx.recyclerview.widget.DividerItemDecoration;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-import com.google.android.material.floatingactionbutton.FloatingActionButton;
-import core.notevault.R;
-import core.notevault.data.MusicDatabase;
-import core.notevault.data.MusicNote;
-import core.notevault.data.MusicNoteDAO;
-import core.notevault.data.sync.SyncStatus;
-import core.notevault.databinding.FragmentHomeBinding;
-import core.notevault.ui.metadatadialog.MetaDataDialog;
-import core.notevault.ui.metadatadialog.SongEditDialog;
-import core.notevault.util.NoteSheetsUtil;
-
-import java.util.List;
-
-public class HomeFragment extends Fragment {
-
- private NoteSongAdapter noteSongAdapter;
-
- private static final int PICK_FILE_REQUEST_CODE = 1;
- private FragmentHomeBinding binding;
- private HomeViewModel homeViewModel;
-
- public View onCreateView(@NonNull LayoutInflater inflater,
- ViewGroup container, Bundle savedInstanceState) {
- homeViewModel =
- new ViewModelProvider(this).get(HomeViewModel.class);
-
- binding = FragmentHomeBinding.inflate(inflater, container, false);
- View root = binding.getRoot();
-
- FloatingActionButton importBtn = root.findViewById(R.id.add_song_concert);
- importBtn.setOnClickListener(v -> openFileChooser());
-
- RecyclerView recyclerView = root.findViewById(R.id.note_recycler_view);
- noteSongAdapter = new NoteSongAdapter(this::deleteSong, this::editSong);
- recyclerView.setAdapter(noteSongAdapter);
- recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
-
- DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(), LinearLayoutManager.VERTICAL);
- recyclerView.addItemDecoration(dividerItemDecoration);
-
- homeViewModel.getNoteTitles().observe(getViewLifecycleOwner(), songs -> {
- noteSongAdapter.updateSongTitles(songs);
- });
-
- new LoadSongTitlesTask().execute();
-
- return root;
- }
-
- private void editSong(MusicNote musicNote) {
- //Open Dialog
- SongEditDialog songEditDialog = new SongEditDialog();
- songEditDialog.setSong(musicNote);
- songEditDialog.show(getParentFragmentManager(), SongEditDialog.TAG);
-
- }
-
- public void deleteSong(MusicNote musicNote) {
- new Thread(() -> {
- MusicDatabase musicDatabase = MusicDatabase.getDatabase(getContext());
- MusicNoteDAO musicNoteDAO = musicDatabase.musicNoteDao();
- musicNote.setSyncStatus(SyncStatus.DELETED);
- musicNoteDAO.updateSong(musicNote);
- Log.d("HomeFragment", "Delete Song: " + musicNote.getTitle());
- new Handler(Looper.getMainLooper()).post(()-> {
- homeViewModel.deleteSong(musicNote);
- });
- }).start();
- }
-
- private class LoadSongTitlesTask extends AsyncTask> {
-
- @Override
- protected List doInBackground(Void... voids) {
- MusicDatabase db = MusicDatabase.getDatabase(getContext());
- MusicNoteDAO musicNoteDAO = db.musicNoteDao();
- return musicNoteDAO.getAllNotes();
- }
-
- @Override
- protected void onPostExecute(List songs) {
- homeViewModel.setNoteTitles(songs);
- }
- }
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (requestCode == PICK_FILE_REQUEST_CODE && resultCode == getActivity().RESULT_OK && data != null) {
- if(data.getClipData() != null) {
- int count = data.getClipData().getItemCount();
- Uri[] uris = new Uri[count];
- for(int i = 0; i < count; i++) {
- uris[i] = data.getClipData().getItemAt(i).getUri();
- }
- handleFile(uris);
- } else if(data.getData() != null) {
- Uri uri = data.getData();
- handleFile(uri);
- }
- }
- }
-
- private void handleFile(Uri... uris) {
- // Hier kannst du die Logik zum Speichern oder Anzeigen der Datei implementieren
- NoteSheetsUtil.sortNoteSheetsByTimestamp(getContext(), uris);
-
- MetaDataDialog metaDataDialog = new MetaDataDialog();
- metaDataDialog.setFileUri(uris);
- metaDataDialog.show(getParentFragmentManager(), MetaDataDialog.TAG);
-
- Toast.makeText(getActivity(), "Datei ausgewählt: " + uris[0].getPath(), Toast.LENGTH_SHORT).show();
- }
-
- private void openFileChooser() {
- Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
- intent.setType("*/*"); // Alle Dateitypen
-
- String[] mimeTypes = {"application/pdf", "image/png", "image/jpeg"};
- intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
- intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
-
- intent.addCategory(Intent.CATEGORY_OPENABLE);
- startActivityForResult(intent, PICK_FILE_REQUEST_CODE);
- }
-
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- binding = null;
- }
-
- public void addSong(MusicNote musicNote) {
- this.homeViewModel.addSong(musicNote);
- }
-
- public void updateSong(MusicNote song) {
- this.homeViewModel.updateSong(song);
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/core/notevault/ui/home/HomeViewModel.java b/app/src/main/java/core/notevault/ui/home/HomeViewModel.java
deleted file mode 100644
index bb58cca..0000000
--- a/app/src/main/java/core/notevault/ui/home/HomeViewModel.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package core.notevault.ui.home;
-
-import android.net.Uri;
-import androidx.lifecycle.LiveData;
-import androidx.lifecycle.MutableLiveData;
-import androidx.lifecycle.ViewModel;
-import core.notevault.MainActivity;
-import core.notevault.data.MusicDatabase;
-import core.notevault.data.MusicNote;
-import core.notevault.ui.metadatadialog.MetaDataDialog;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class HomeViewModel extends ViewModel {
-
- private final MutableLiveData> noteTitles;
-
-
-
-
- public HomeViewModel() {
- noteTitles = new MutableLiveData<>(new ArrayList<>());
- }
-
- public LiveData> getNoteTitles() {
- return noteTitles;
- }
-
- public void setNoteTitles(List noteTitles) {
- this.noteTitles.setValue(noteTitles);
- }
-
-
- public void addSong(MusicNote song) {
- List songs = noteTitles.getValue();
- if(songs != null) {
- songs.add(song);
- this.noteTitles.setValue(songs);
- }
- }
-
- public void deleteSong(MusicNote musicNote) {
- List currentSongs = noteTitles.getValue();
- if(currentSongs != null) {
- currentSongs.remove(musicNote);
- noteTitles.setValue(currentSongs);
- }
- }
-
- public void updateSong(MusicNote updatedSong) {
- List currentSongs = noteTitles.getValue();
- if(currentSongs != null) {
- for(int i=0; i {
-
- private final List noteTitles;
- private final OnSongDeleteListener onSongDeleteListener;
- private final OnSongEditListener onSongEditListener;
- public interface OnSongDeleteListener {
- void onSongDeleted(MusicNote song);
- }
-
- public interface OnSongEditListener {
- void onSongEdit(MusicNote song);
- }
-
- public NoteSongAdapter(List noteTitles, OnSongDeleteListener onSongDeleteListener, OnSongEditListener onSongEditListener) {
- this.noteTitles = noteTitles;
- this.onSongDeleteListener = onSongDeleteListener;
- this.onSongEditListener = onSongEditListener;
- }
-
- public NoteSongAdapter(OnSongDeleteListener onSongDeleteListener, OnSongEditListener onSongEditListener) {
- this.onSongDeleteListener = onSongDeleteListener;
- this.noteTitles = new ArrayList<>();
- this.onSongEditListener = onSongEditListener;
- }
-
- @NonNull
- @Override
- public NoteViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- View view = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.item_song, parent, false);
- return new NoteViewHolder(view);
- }
-
- @Override
- public void onBindViewHolder(@NonNull NoteViewHolder holder, int position) {
- holder.titleTextView.setText(noteTitles.get(position).getTitle());
- holder.yearTextView.setText(String.valueOf(noteTitles.get(position).getYear()));
- holder.compositionTextView.setText(noteTitles.get(position).getComposer());
-
- holder.deleteButton.setOnClickListener(v -> {
- onSongDeleteListener.onSongDeleted(noteTitles.get(position));
- });
-
- holder.editButton.setOnClickListener(v -> {
- onSongEditListener.onSongEdit(noteTitles.get(position));
- });
- }
-
- @Override
- public int getItemCount() {
- return noteTitles.size();
- }
-
- public void updateSongTitles(List songs) {
- this.noteTitles.clear();
- this.noteTitles.addAll(songs);
- notifyDataSetChanged();
- }
-
- public class NoteViewHolder extends RecyclerView.ViewHolder{
- TextView titleTextView;
- TextView yearTextView;
- TextView compositionTextView;
-
- ImageButton deleteButton;
- ImageButton editButton;
-
- NoteViewHolder(View itemView) {
- super(itemView);
- titleTextView = itemView.findViewById(R.id.text_title);
- yearTextView = itemView.findViewById(R.id.text_year);
- compositionTextView = itemView.findViewById(R.id.text_composition);
-
- deleteButton = itemView.findViewById(R.id.delete_song_button);
- editButton = itemView.findViewById(R.id.edit_song_button);
- titleTextView.setOnClickListener(v -> {
- int position = getAdapterPosition();
- if(position != RecyclerView.NO_POSITION) {
- MusicNote musicNote = noteTitles.get(position);
-
- Intent intent = new Intent(itemView.getContext(), FullScreenImageActivity.class);
- new LoadNoteSheetsTask(musicNote.getMusicNoteId(),
- MusicDatabase.getDatabase(itemView.getContext()).musicNoteDao(), new OnNoteSheedsLoadedListener() {
- @Override
- public void onNoteSheetsLoaded(List noteSheets) {
- String[] noteSheetFiles = new String[noteSheets.size()];
- for (int i = 0; i < noteSheets.size(); i++) {
- noteSheetFiles[i] = noteSheets.get(i).getFilePath();
- }
- intent.putExtra("imageUris", noteSheetFiles);
- itemView.getContext().startActivity(intent);
- }
- }).execute();
-
- }
- });
- }
-
- public void bind(MusicNote note) {
- titleTextView.setText(note.getTitle());
- }
-
-
- }
-
- public interface OnNoteSheedsLoadedListener {
- void onNoteSheetsLoaded(List noteSheets);
- }
-
- private class LoadNoteSheetsTask extends AsyncTask> {
- private final long musicNoteId;
- private final MusicNoteDAO musicNoteDAO;
- private final OnNoteSheedsLoadedListener listener;
-
-
-
- public LoadNoteSheetsTask(long musicNoteId, MusicNoteDAO musicNoteDAO, OnNoteSheedsLoadedListener listener) {
- this.musicNoteId = musicNoteId;
- this.musicNoteDAO = musicNoteDAO;
- this.listener = listener;
- }
-
- @Override
- protected List doInBackground(Void... voids) {
- List sheets = musicNoteDAO.getNoteSheetsForMusicSong(this.musicNoteId);
- Log.d("LoadedNoteSheetsTask", "ID: " + this.musicNoteId);
- Log.d("LoadNoteSheetsTask", "Loaded NoteSheets: " + sheets.size());
- return sheets;
- }
-
- @Override
- protected void onPostExecute(List sheets) {
- listener.onNoteSheetsLoaded(sheets);
- }
- }
-}
diff --git a/app/src/main/java/core/notevault/ui/login/LoginCallBackImpl.java b/app/src/main/java/core/notevault/ui/login/LoginCallBackImpl.java
deleted file mode 100644
index b71777d..0000000
--- a/app/src/main/java/core/notevault/ui/login/LoginCallBackImpl.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package core.notevault.ui.login;
-
-import android.content.Context;
-import android.util.Log;
-import android.widget.Toast;
-import core.notevault.sync.APICallback;
-import core.notevault.sync.auth.LoginCallback;
-
-public class LoginCallBackImpl implements APICallback {
- private Context context;
-
- public LoginCallBackImpl(Context context) {
- this.context = context;
- }
-
- @Override
- public void onSuccess() {
- Toast.makeText(context, "Login successfull", Toast.LENGTH_SHORT).show();
-
- }
-
- @Override
- public void onError(String error) {
- Log.d("Login", error);
- Toast.makeText(context, "Login not successfull: " + error, Toast.LENGTH_LONG).show();
- }
-}
diff --git a/app/src/main/java/core/notevault/ui/login/LoginDialogFragment.java b/app/src/main/java/core/notevault/ui/login/LoginDialogFragment.java
deleted file mode 100644
index 5723e68..0000000
--- a/app/src/main/java/core/notevault/ui/login/LoginDialogFragment.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package core.notevault.ui.login;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.Context;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.TextView;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.DialogFragment;
-import core.notevault.R;
-import core.notevault.sync.APICallback;
-import core.notevault.sync.auth.AuthRepository;
-import core.notevault.sync.auth.LoginCallback;
-import retrofit2.Call;
-import retrofit2.Callback;
-
-public class LoginDialogFragment extends DialogFragment {
- private APICallback loginCallback;
- private APICallback registerCallback;
-
- private boolean isLoginMode = true; // Default mode
-
- @Override
- public void onAttach(Context context) {
- super.onAttach(context);
- if (loginCallback == null || registerCallback == null) {
- throw new IllegalStateException("LoginDialogFragment must be created using newInstance()");
- }
- }
-
- public static LoginDialogFragment newInstance(APICallback loginCallback, APICallback registerCallback) {
- LoginDialogFragment fragment = new LoginDialogFragment();
- fragment.loginCallback = loginCallback;
- fragment.registerCallback = registerCallback;
- return fragment;
- }
-
- @NonNull
- @Override
- public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
- /*return new AlertDialog.Builder(requireContext())
- .setView(loginView)
- .setPositiveButton("Speichern", (dialog, which) -> {
- String username = usernameInput.getText().toString();
- String password = passwordInput.getText().toString();
-
- authRepository.performLogin(username, password, loginCallback);
- } )
- .setNegativeButton("Abbrechen", (dialog, which) -> {} )
- .create();*/
-
- AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());
- LayoutInflater inflater = requireActivity().getLayoutInflater();
- View view = inflater.inflate(R.layout.fragment_login_dialog, null);
-
- TextView textViewTitle = view.findViewById(R.id.textViewTitle);
- EditText editTextUsername = view.findViewById(R.id.editTextUsername);
- EditText editTextEmail = view.findViewById(R.id.editTextEmail);
- EditText editTextPassword = view.findViewById(R.id.editTextPassword);
- Button buttonAction = view.findViewById(R.id.buttonAction);
- TextView textViewSwitch = view.findViewById(R.id.textViewSwitch);
-
- // Handle action button click
- buttonAction.setOnClickListener(v -> {
- if (isLoginMode) {
- // Handle login logic
- String email = editTextEmail.getText().toString();
- String password = editTextPassword.getText().toString();
- AuthRepository authRepository = new AuthRepository(this.getContext());
- authRepository.performLogin(email, password, loginCallback);
- } else {
- // Handle registration logic
- String email = editTextEmail.getText().toString();
- String password = editTextPassword.getText().toString();
- String username = editTextUsername.getText().toString();
- AuthRepository authRepository = new AuthRepository(this.getContext());
- authRepository.performRegistration(email, username, password, registerCallback);
- }
- });
-
- // Toggle between Login and Registration
- textViewSwitch.setOnClickListener(v -> {
- isLoginMode = !isLoginMode;
- textViewTitle.setText(isLoginMode ? "Login" : "Register");
- editTextUsername.setVisibility(isLoginMode ? View.GONE : View.VISIBLE);
- buttonAction.setText(isLoginMode ? "Login" : "Register");
- textViewSwitch.setText(isLoginMode ? "Don't have an account? Register" : "Already have an account? Login");
- });
-
- builder.setView(view);
- return builder.create();
- }
-
-
-}
diff --git a/app/src/main/java/core/notevault/ui/login/RegisterCallback.java b/app/src/main/java/core/notevault/ui/login/RegisterCallback.java
deleted file mode 100644
index c9c905b..0000000
--- a/app/src/main/java/core/notevault/ui/login/RegisterCallback.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package core.notevault.ui.login;
-
-import android.content.Context;
-import android.util.Log;
-import android.widget.Toast;
-import core.notevault.sync.APICallback;
-
-public class RegisterCallback implements APICallback {
- private Context context;
-
- public RegisterCallback(Context context) {
- this.context = context;
- }
-
- @Override
- public void onSuccess() {
- Toast.makeText(context, "Registration successfull", Toast.LENGTH_SHORT).show();
- }
-
- @Override
- public void onError(String error) {
- Log.d("Login", error);
- Toast.makeText(context, "Login not successfull: " + error, Toast.LENGTH_LONG).show();
- }
-}
diff --git a/app/src/main/java/core/notevault/ui/metadatadialog/MetaDataDialog.java b/app/src/main/java/core/notevault/ui/metadatadialog/MetaDataDialog.java
deleted file mode 100644
index 784309f..0000000
--- a/app/src/main/java/core/notevault/ui/metadatadialog/MetaDataDialog.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package core.notevault.ui.metadatadialog;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.OpenableColumns;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.EditText;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.DialogFragment;
-import core.notevault.R;
-
-public class MetaDataDialog extends DialogFragment {
- private Uri[] fileUri;
-
- public interface OnMetadataListener {
- void onMetadataEntered(Uri[] uri, String title, String composer, int year, String genre);
- }
-
- private OnMetadataListener listener;
-
- @NonNull
- @Override
- public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
- LayoutInflater inflater = requireActivity().getLayoutInflater();
- View dialogView = inflater.inflate(R.layout.fragment_metadata_dialog, null); // Ersetze 'your_dialog_layout' durch deinen Dateinamen
-
- EditText title_input = dialogView.findViewById(R.id.title_input);
- title_input.setText(this.extraxtTitleFromFilePath());
- EditText composer_input = dialogView.findViewById(R.id.composer_input);
- EditText year_input = dialogView.findViewById(R.id.year_input);
- EditText genre_input = dialogView.findViewById(R.id.genre_input);
-
- return new AlertDialog.Builder(requireContext())
- .setView(dialogView)
- .setPositiveButton("Speichern", (dialog, which) -> {
- String title = title_input.getText().toString();
- String composer = composer_input.getText().toString();
-
- String year_string = year_input.getText().toString();
- int year = 0;
- if(!year_string.isEmpty()) {
- year = Integer.parseInt(year_input.getText().toString());
- }
-
- String genre = genre_input.getText().toString();
-
- listener.onMetadataEntered(fileUri, title, composer, year, genre);
- } )
- .setNegativeButton("Abbrechen", (dialog, which) -> {} )
- .create();
- }
-
- @Override
- public void onAttach(@NonNull Context context) {
- super.onAttach(context);
- if (context instanceof OnMetadataListener) {
- listener = (OnMetadataListener) context;
- } else {
- throw new RuntimeException(context.toString()
- + " must implement OnMetadataListener");
- }
- }
-
- public Uri[] getFileUri() {
- return fileUri;
- }
-
- public void setFileUri(Uri[] fileUri) {
- this.fileUri = fileUri;
- }
-
- private String extraxtTitleFromFilePath() {
- String fileName = "";
-
- // Überprüfen, ob die Uri ein Content-Uri ist
- if (this.fileUri[0].getScheme().equals("content")) {
- // ContentResolver verwenden, um die Datei zu finden
- Cursor cursor = requireContext().getContentResolver().query(this.fileUri[0], null, null, null, null);
- if (cursor != null) {
- int nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
- if (cursor.moveToFirst()) {
- // Den Dateinamen aus dem Cursor abfragen
- fileName = cursor.getString(nameIndex);
- }
- cursor.close();
- }
- } else if (this.fileUri[0].getScheme().equals("file")) {
- // Bei einer Datei-Uri einfach den letzten Pfadsegment verwenden
- fileName = this.fileUri[0].getLastPathSegment();
- }
-
- if(fileName.contains(".")) {
- fileName = fileName.substring(0, fileName.lastIndexOf("."));
- fileName = fileName.replace("_", " ");
- fileName = fileName.replace("-", "");
- }
-
- return fileName;
- }
-
- public static String TAG = "MetaDataDialog";
-}
diff --git a/app/src/main/java/core/notevault/ui/metadatadialog/SongEditDialog.java b/app/src/main/java/core/notevault/ui/metadatadialog/SongEditDialog.java
deleted file mode 100644
index 85bc808..0000000
--- a/app/src/main/java/core/notevault/ui/metadatadialog/SongEditDialog.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package core.notevault.ui.metadatadialog;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.Context;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.EditText;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.DialogFragment;
-import core.notevault.R;
-import core.notevault.data.MusicNote;
-import core.notevault.data.sync.SyncStatus;
-
-public class SongEditDialog extends DialogFragment {
-
- private MusicNote song;
- private SongEditorListener songEditorListener;
-
- public interface SongEditorListener {
- void onSongEdited(MusicNote updatedSong);
- }
-
- @NonNull
- @Override
- public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
- LayoutInflater inflater = requireActivity().getLayoutInflater();
- View dialogView = inflater.inflate(R.layout.song_metadata_edit_dialog, null); // Ersetze 'your_dialog_layout' durch deinen Dateinamen
-
- EditText title_input = dialogView.findViewById(R.id.title_input);
- title_input.setText(song.getTitle());
- EditText composer_input = dialogView.findViewById(R.id.composer_input);
- composer_input.setText(song.getComposer());
- EditText year_input = dialogView.findViewById(R.id.year_input);
- year_input.setText(String.valueOf(song.getYear()));
- EditText genre_input = dialogView.findViewById(R.id.genre_input);
- genre_input.setText(song.getGenre());
-
- return new AlertDialog.Builder(requireContext())
- .setView(dialogView)
- .setPositiveButton("Speichern", (dialog, which) -> {
- String title = title_input.getText().toString();
- String composer = composer_input.getText().toString();
-
- String year_string = year_input.getText().toString();
- int year = 0;
- if(!year_string.isEmpty()) {
- year = Integer.parseInt(year_input.getText().toString());
- }
-
- String genre = genre_input.getText().toString();
-
- song.setTitle(title);
- song.setComposer(composer);
- song.setGenre(genre);
- song.setYear(year);
-
- if(song.getSyncStatus() == SyncStatus.SYNCED) {
- song.setSyncStatus(SyncStatus.MODIFIED);
- }
-
- songEditorListener.onSongEdited(song);
- } )
- .setNegativeButton("Abbrechen", (dialog, which) -> {} )
- .create();
- }
-
- public MusicNote getSong() {
- return song;
- }
-
- public void setSong(MusicNote song) {
- this.song = song;
- }
-
- @Override
- public void onAttach(@NonNull Context context) {
- super.onAttach(context);
- if (context instanceof MetaDataDialog.OnMetadataListener) {
- songEditorListener = (SongEditorListener) context;
- } else {
- throw new RuntimeException(context.toString()
- + " must implement OnMetadataListener");
- }
- }
-
- public static String TAG = "SONGEDITDIALOG";
-}
diff --git a/app/src/main/java/core/notevault/ui/noteviewer/ImagePagerAdapter.java b/app/src/main/java/core/notevault/ui/noteviewer/ImagePagerAdapter.java
deleted file mode 100644
index ade40ba..0000000
--- a/app/src/main/java/core/notevault/ui/noteviewer/ImagePagerAdapter.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package core.notevault.ui.noteviewer;
-
-import android.content.Context;
-import android.net.Uri;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-import com.github.chrisbanes.photoview.PhotoView;
-import core.notevault.R;
-
-import java.util.List;
-
-public class ImagePagerAdapter extends RecyclerView.Adapter {
- private final List imageUris;
- private final Context context;
-
- public ImagePagerAdapter(Context context, List imageUris) {
- this.context = context;
- this.imageUris = imageUris;
- }
-
- @NonNull
- @Override
- public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- View view = LayoutInflater.from(context).inflate(R.layout.item_image, parent, false);
- return new ImageViewHolder(view);
- }
-
- @Override
- public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) {
- Uri uri = Uri.parse(imageUris.get(position));
- holder.photoView.setImageURI(uri);
- }
-
- @Override
- public int getItemCount() {
- return imageUris.size();
- }
-
- static class ImageViewHolder extends RecyclerView.ViewHolder {
- PhotoView photoView;
-
- ImageViewHolder(View itemView) {
- super(itemView);
- photoView = itemView.findViewById(R.id.photoView);
- }
- }
-}
diff --git a/app/src/main/java/core/notevault/util/NoteSheetsUtil.java b/app/src/main/java/core/notevault/util/NoteSheetsUtil.java
deleted file mode 100644
index f98ea4a..0000000
--- a/app/src/main/java/core/notevault/util/NoteSheetsUtil.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package core.notevault.util;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.media.ExifInterface;
-import android.net.Uri;
-import android.provider.MediaStore;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-public class NoteSheetsUtil {
-
- private static long getImageTimestamp(Context context, Uri imageUri) {
- try {
- InputStream inputStream = context.getContentResolver().openInputStream(imageUri);
- ExifInterface exif = new ExifInterface(inputStream);
-
- String dateTime = exif.getAttribute(ExifInterface.TAG_DATETIME);
- if(dateTime != null) {
- SimpleDateFormat format = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss", Locale.getDefault());
- Date date = format.parse(dateTime);
- return date != null ? date.getTime() : 0;
- } else {
- File file = new File(imageUri.getPath());
- return file.lastModified();
- }
- } catch (IOException | ParseException e) {
- throw new RuntimeException(e);
- }
- }
-
- public static void sortNoteSheetsByTimestamp(Context context, Uri[] uris) {
- ArrayList uriTimestamps = new ArrayList<>();
-
- for(Uri uri : uris) {
- long timestamp = getImageTimestamp(context, uri);
- uriTimestamps.add(new UriTimestamp(uri, timestamp));
- }
-
- Collections.sort(uriTimestamps, Comparator.comparingLong(UriTimestamp::getTimestamp));
-
- for(int i=0; i
-
-
diff --git a/app/src/main/res/drawable/delete.xml b/app/src/main/res/drawable/delete.xml
deleted file mode 100644
index 0b9c437..0000000
--- a/app/src/main/res/drawable/delete.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/dialog_background.xml b/app/src/main/res/drawable/dialog_background.xml
deleted file mode 100644
index 5b12544..0000000
--- a/app/src/main/res/drawable/dialog_background.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/edit_24dp_e8eaed_fill0_wght400_grad0_opsz24.xml b/app/src/main/res/drawable/edit_24dp_e8eaed_fill0_wght400_grad0_opsz24.xml
deleted file mode 100644
index a2f714d..0000000
--- a/app/src/main/res/drawable/edit_24dp_e8eaed_fill0_wght400_grad0_opsz24.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/login.xml b/app/src/main/res/drawable/login.xml
deleted file mode 100644
index 2e5aa22..0000000
--- a/app/src/main/res/drawable/login.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/drawable/logout.xml b/app/src/main/res/drawable/logout.xml
deleted file mode 100644
index d1d6253..0000000
--- a/app/src/main/res/drawable/logout.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/app/src/main/res/layout/activity_fullscreen_image.xml b/app/src/main/res/layout/activity_fullscreen_image.xml
deleted file mode 100644
index d771ad9..0000000
--- a/app/src/main/res/layout/activity_fullscreen_image.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml
index 544ae28..9faa0bb 100644
--- a/app/src/main/res/layout/app_bar_main.xml
+++ b/app/src/main/res/layout/app_bar_main.xml
@@ -23,4 +23,13 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/concert_editor.xml b/app/src/main/res/layout/concert_editor.xml
deleted file mode 100644
index f9d07fb..0000000
--- a/app/src/main/res/layout/concert_editor.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/concert_item.xml b/app/src/main/res/layout/concert_item.xml
deleted file mode 100644
index 657a951..0000000
--- a/app/src/main/res/layout/concert_item.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/dialog_concert_song_selector.xml b/app/src/main/res/layout/dialog_concert_song_selector.xml
deleted file mode 100644
index f010800..0000000
--- a/app/src/main/res/layout/dialog_concert_song_selector.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_concert_detail.xml b/app/src/main/res/layout/fragment_concert_detail.xml
deleted file mode 100644
index 12156cc..0000000
--- a/app/src/main/res/layout/fragment_concert_detail.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/fragment_gallery.xml b/app/src/main/res/layout/fragment_gallery.xml
index 5704324..82d5b10 100644
--- a/app/src/main/res/layout/fragment_gallery.xml
+++ b/app/src/main/res/layout/fragment_gallery.xml
@@ -7,17 +7,17 @@
android:layout_height="match_parent"
tools:context=".ui.gallery.GalleryFragment">
-
-
-
+ android:layout_marginStart="8dp"
+ android:layout_marginTop="8dp"
+ android:layout_marginEnd="8dp"
+ android:textAlignment="center"
+ android:textSize="20sp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index 925a47e..d91141c 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -7,22 +7,17 @@
android:layout_height="match_parent"
tools:context=".ui.home.HomeFragment">
-
-
-
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_login_dialog.xml b/app/src/main/res/layout/fragment_login_dialog.xml
deleted file mode 100644
index da64177..0000000
--- a/app/src/main/res/layout/fragment_login_dialog.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/fragment_metadata_dialog.xml b/app/src/main/res/layout/fragment_metadata_dialog.xml
deleted file mode 100644
index a8182ed..0000000
--- a/app/src/main/res/layout/fragment_metadata_dialog.xml
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_concert_song.xml b/app/src/main/res/layout/item_concert_song.xml
deleted file mode 100644
index 8e85ef5..0000000
--- a/app/src/main/res/layout/item_concert_song.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_image.xml b/app/src/main/res/layout/item_image.xml
deleted file mode 100644
index 1ccfcc7..0000000
--- a/app/src/main/res/layout/item_image.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
diff --git a/app/src/main/res/layout/item_song.xml b/app/src/main/res/layout/item_song.xml
deleted file mode 100644
index c93a434..0000000
--- a/app/src/main/res/layout/item_song.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/song_metadata_edit_dialog.xml b/app/src/main/res/layout/song_metadata_edit_dialog.xml
deleted file mode 100644
index a8182ed..0000000
--- a/app/src/main/res/layout/song_metadata_edit_dialog.xml
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml
index eb9f353..192740c 100644
--- a/app/src/main/res/menu/main.xml
+++ b/app/src/main/res/menu/main.xml
@@ -1,9 +1,8 @@
-
-
+
\ No newline at end of file
diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml
index 3d62d21..efe37ae 100644
--- a/app/src/main/res/navigation/mobile_navigation.xml
+++ b/app/src/main/res/navigation/mobile_navigation.xml
@@ -7,25 +7,19 @@
-
-
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 4ee6d8f..f8c6127 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -7,5 +7,4 @@
#FF018786
#FF000000
#FFFFFFFF
- #FF0000
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 119394b..f98fd0e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -8,6 +8,6 @@
Settings
Home
- Concerts
+ Gallery
Slideshow
\ No newline at end of file
diff --git a/app/src/test/java/core/notevault/ExampleUnitTest.java b/app/src/test/java/com/stormtales/notevault/ExampleUnitTest.java
similarity index 90%
rename from app/src/test/java/core/notevault/ExampleUnitTest.java
rename to app/src/test/java/com/stormtales/notevault/ExampleUnitTest.java
index f2c31eb..c5683dc 100644
--- a/app/src/test/java/core/notevault/ExampleUnitTest.java
+++ b/app/src/test/java/com/stormtales/notevault/ExampleUnitTest.java
@@ -1,4 +1,4 @@
-package core.notevault;
+package com.stormtales.notevault;
import org.junit.Test;
diff --git a/build.gradle.kts b/build.gradle.kts
index 3756278..29be0c4 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,4 +1,4 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
- alias(libs.plugins.android.application) apply false
+ id("com.android.application") version "8.2.0" apply false
}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 4387edc..3e927b1 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -8,8 +8,8 @@
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. For more details, visit
-# https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
deleted file mode 100644
index b10c347..0000000
--- a/gradle/libs.versions.toml
+++ /dev/null
@@ -1,32 +0,0 @@
-[versions]
-agp = "8.2.0"
-junit = "4.13.2"
-junitVersion = "1.1.5"
-espressoCore = "3.5.1"
-appcompat = "1.6.1"
-material = "1.10.0"
-constraintlayout = "2.1.4"
-lifecycleLivedataKtx = "2.6.1"
-lifecycleViewmodelKtx = "2.6.1"
-navigationFragment = "2.6.0"
-navigationUi = "2.6.0"
-roomCommon = "2.6.1"
-carUiLib = "2.6.0"
-
-[libraries]
-junit = { group = "junit", name = "junit", version.ref = "junit" }
-ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
-material = { group = "com.google.android.material", name = "material", version.ref = "material" }
-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" }
-lifecycle-livedata-ktx = { group = "androidx.lifecycle", name = "lifecycle-livedata-ktx", version.ref = "lifecycleLivedataKtx" }
-lifecycle-viewmodel-ktx = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "lifecycleViewmodelKtx" }
-navigation-fragment = { group = "androidx.navigation", name = "navigation-fragment", version.ref = "navigationFragment" }
-navigation-ui = { group = "androidx.navigation", name = "navigation-ui", version.ref = "navigationUi" }
-room-common = { group = "androidx.room", name = "room-common", version.ref = "roomCommon" }
-car-ui-lib = { group = "com.android.car.ui", name = "car-ui-lib", version.ref = "carUiLib" }
-
-[plugins]
-android-application = { id = "com.android.application", version.ref = "agp" }
-
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 7209a7c..1c3347b 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Tue Oct 15 13:41:13 CEST 2024
+#Sat Jan 18 08:00:40 CET 2025
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 99f28df..a553d27 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,14 +1,7 @@
pluginManagement {
repositories {
- google {
- content {
- includeGroupByRegex("com\\.android.*")
- includeGroupByRegex("com\\.google.*")
- includeGroupByRegex("androidx.*")
- }
- }
+ google()
mavenCentral()
-
gradlePluginPortal()
}
}
@@ -17,7 +10,6 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
- maven { url = uri("https://www.jitpack.io") }
}
}