Initaler Commit

This commit is contained in:
2026-05-03 21:53:03 +02:00
commit b37b162662
634 changed files with 73932 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:padding="32dp"
android:background="@color/bg">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mit Deezer anmelden"
android:textSize="22sp"
android:textStyle="bold"
android:textColor="@color/text"
android:layout_marginBottom="16dp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Um auf deine Playlists zugreifen zu können, musst du dich bei Deezer anmelden. Du wirst in deinem Browser weitergeleitet."
android:textColor="@color/text_muted"
android:textSize="14sp"
android:gravity="center"
android:layout_marginBottom="40dp"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/btnOpenDeezerLogin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Mit Deezer anmelden"
android:padding="16dp"
android:layout_marginBottom="12dp"
style="@style/Widget.Material3.Button"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/btnCancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Abbrechen"
style="@style/Widget.Material3.Button.TextButton"/>
</LinearLayout>

View File

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bg">
<!-- Subtle radial glow top-right, matching the web hero -->
<View
android:layout_width="320dp"
android:layout_height="320dp"
android:layout_gravity="top|end"
android:background="@drawable/bg_glow_teal"
android:alpha="0.18"/>
<!-- Centre content: logo + start button -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical"
android:gravity="center"
android:paddingLeft="40dp"
android:paddingRight="40dp">
<ImageView
android:id="@+id/ivLogo"
android:layout_width="200dp"
android:layout_height="200dp"
android:src="@drawable/logo"
android:scaleType="fitCenter"
android:layout_marginBottom="48dp"
android:contentDescription="LibreDeck Logo"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/btnStart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Starten"
android:textSize="17sp"
android:paddingTop="18dp"
android:paddingBottom="18dp"/>
</LinearLayout>
<!-- Bottom link -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:orientation="vertical"
android:gravity="center"
android:paddingBottom="32dp"
android:paddingTop="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Neue Decks erstellen?"
android:textColor="@color/text_dim"
android:textSize="13sp"
android:layout_marginBottom="4dp"/>
<TextView
android:id="@+id/tvCreateLink"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="libredeck.langhei.de"
android:textColor="@color/accent"
android:textSize="14sp"
android:textStyle="bold"
android:clickable="true"
android:focusable="true"/>
</LinearLayout>
</FrameLayout>

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bg">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipeRefresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerPlaylists"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:padding="8dp"/>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<TextView
android:id="@+id/tvEmpty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Keine Playlists gefunden"
android:textColor="@color/text_muted"
android:visibility="gone"/>
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone"/>
<TextView
android:id="@+id/tvLoadingMsg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="72dp"
android:textColor="@color/text_muted"
android:visibility="gone"/>
</FrameLayout>

View File

@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bg">
<!-- Camera preview (fills screen) -->
<androidx.camera.view.PreviewView
android:id="@+id/previewView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<!-- Scanning hint bar at bottom -->
<LinearLayout
android:id="@+id/layoutHint"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@drawable/bg_scan_hint"
android:orientation="vertical"
android:gravity="center"
android:paddingLeft="32dp"
android:paddingRight="32dp"
android:paddingTop="24dp"
android:paddingBottom="32dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="QR-Code auf die Karte halten"
android:textColor="@color/text_muted"
android:textSize="15sp"
android:layout_marginBottom="20dp"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/btnCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Abbrechen"
android:textColor="@color/text_muted"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingLeft="28dp"
android:paddingRight="28dp"
app:backgroundTint="@null"
android:background="@drawable/bg_button_outline"
style="@style/Widget.Material3.Button.OutlinedButton"/>
</LinearLayout>
<!-- Success overlay shown after successful scan -->
<FrameLayout
android:id="@+id/overlaySuccess"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F0080D0E"
android:visibility="gone">
<!-- Glow behind button -->
<View
android:layout_width="280dp"
android:layout_height="280dp"
android:layout_gravity="center"
android:background="@drawable/bg_glow_teal"
android:alpha="0.25"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical"
android:gravity="center"
android:paddingLeft="40dp"
android:paddingRight="40dp">
<com.google.android.material.button.MaterialButton
android:id="@+id/btnNextCard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Nächste Karte"
android:textSize="17sp"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:minWidth="240dp"/>
</LinearLayout>
</FrameLayout>
</FrameLayout>

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="6dp"
app:cardBackgroundColor="@color/surface"
app:cardCornerRadius="12dp"
app:strokeColor="@color/border"
app:strokeWidth="1dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="12dp"
android:gravity="center_vertical">
<ImageView
android:id="@+id/ivCover"
android:layout_width="56dp"
android:layout_height="56dp"
android:scaleType="centerCrop"
android:background="@color/bg"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:paddingStart="12dp"
android:paddingEnd="8dp">
<TextView
android:id="@+id/tvTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/text"
android:textSize="15sp"
android:textStyle="bold"
android:maxLines="2"
android:ellipsize="end"/>
<TextView
android:id="@+id/tvCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_muted"
android:textSize="12sp"
android:layout_marginTop="2dp"/>
</LinearLayout>
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/ic_arrow_right"
android:tint="@color/accent"/>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>