commit f68f2dd26efefec9e8114544effded92df529287
parent 3af09e6c6afc60512d30305c9916715c65767d0e
Author: t3serakt <t3ss@posteo.de>
Date: Tue, 8 Apr 2025 20:44:22 +0200
Changed account fragments
Diffstat:
7 files changed, 54 insertions(+), 96 deletions(-)
diff --git a/GNUnetMessenger/.idea/misc.xml b/GNUnetMessenger/.idea/misc.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
- <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/MainActivity.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/MainActivity.kt
@@ -1,72 +1,55 @@
package org.gnunet.gnunetmessenger
import android.os.Bundle
-import android.view.View
-import android.widget.LinearLayout
-import androidx.appcompat.widget.SearchView
-import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
+import androidx.navigation.NavController
+import androidx.navigation.findNavController
+import androidx.navigation.ui.AppBarConfiguration
+import androidx.navigation.ui.NavigationUI
import androidx.appcompat.widget.Toolbar
-import androidx.recyclerview.widget.RecyclerView
+import androidx.navigation.fragment.NavHostFragment
import org.gnunet.gnunetmessenger.service.GnunetChat
import org.gnunet.gnunetmessenger.service.ServiceFactory
class MainActivity : AppCompatActivity() {
private lateinit var gnunetChat: GnunetChat
- private lateinit var noChatBox: LinearLayout
- private lateinit var noChatLabel: TextView
- private lateinit var chatsSearchEntry: SearchView
- private lateinit var chatsStack: RecyclerView
- private lateinit var navBar: Toolbar
- private lateinit var appName: TextView
+ private lateinit var navController: NavController
+ private lateinit var appBarConfiguration: AppBarConfiguration
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
-
- gnunetChat = ServiceFactory.create(this, useMock = true)
setContentView(R.layout.activity_main)
- // Initialize Views
- navBar = findViewById(R.id.nav_bar)
- appName = findViewById(R.id.app_name)
- noChatBox = findViewById(R.id.no_chat_box)
- noChatLabel = findViewById(R.id.no_chat_label)
- chatsSearchEntry = findViewById(R.id.chats_search_entry)
- chatsStack = findViewById(R.id.chats_stack)
+ // Initialize GnunetChat (keep this line!)
+ gnunetChat = ServiceFactory.create(this, useMock = true)
- // Set up the navigation bar (Toolbar)
- setSupportActionBar(navBar)
- supportActionBar?.setDisplayShowTitleEnabled(false) // Hide default title
+ // Initialize the NavController
+ val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
+ navController = navHostFragment.navController
+ //navController = findNavController(R.id.nav_host_fragment)
- // Handle visibility of no chat box
- toggleNoChatBox(true)
+ // Set up the Toolbar with the NavController
+ val toolbar = findViewById<Toolbar>(R.id.nav_bar)
+ setSupportActionBar(toolbar)
- // Set up SearchView behavior
- chatsSearchEntry.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
- override fun onQueryTextSubmit(query: String?): Boolean {
- // Handle search submission if needed
- return false
- }
+ // Define the AppBarConfiguration (Drawer layout can be added later if needed)
+ appBarConfiguration = AppBarConfiguration(
+ setOf(R.id.accountListFragment), // Define start destination fragment
+ null // No drawer layout for now
+ )
- override fun onQueryTextChange(newText: String?): Boolean {
- // Handle real-time search updates if needed
- return false
- }
- })
+ // Set up ActionBar with NavController
+ NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration)
}
- private fun toggleNoChatBox(shouldShow: Boolean) {
- if (shouldShow) {
- noChatBox.visibility = View.VISIBLE
- chatsStack.visibility = View.GONE
- } else {
- noChatBox.visibility = View.GONE
- chatsStack.visibility = View.VISIBLE
- }
+ override fun onSupportNavigateUp(): Boolean {
+ return NavigationUI.navigateUp(navController, appBarConfiguration)
+ || super.onSupportNavigateUp()
}
+ // Add the method to access the GnunetChat instance
fun getGnunetChatInstance(): GnunetChat {
return gnunetChat
}
-}
-\ No newline at end of file
+}
diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/account/CreateAccountFragment.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/account/CreateAccountFragment.kt
@@ -1,4 +1,4 @@
-package org.gnunet.gnunetmessenger
+package org.gnunet.gnunetmessenger.ui.account
import android.os.Bundle
import android.view.LayoutInflater
@@ -6,6 +6,7 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.activity.result.contract.ActivityResultContracts
+import org.gnunet.gnunetmessenger.MainActivity
import org.gnunet.gnunetmessenger.databinding.FragmentCreateAccountBinding
import org.gnunet.gnunetmessenger.model.ChatHandle
import org.gnunet.gnunetmessenger.service.GnunetChat
@@ -24,7 +25,7 @@ class CreateAccountFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
- ): View? {
+ ): View {
binding = FragmentCreateAccountBinding.inflate(inflater, container, false)
// Initialize GnunetChat (or get it from the ServiceFactory)
diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/adapter/ChatListAdapter.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/adapters/ChatListAdapter.kt
diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/chat/ChatFragment.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/chat/ChatFragment.kt
@@ -0,0 +1,6 @@
+package org.gnunet.gnunetmessenger.ui.chat
+
+import androidx.fragment.app.Fragment
+
+class ChatFragment : Fragment() {
+}
+\ No newline at end of file
diff --git a/GNUnetMessenger/app/src/main/res/layout/activity_main.xml b/GNUnetMessenger/app/src/main/res/layout/activity_main.xml
@@ -7,7 +7,7 @@
android:fitsSystemWindows="true"
tools:context=".MainActivity">
- <!-- Title bar (Nav Bar) -->
+ <!-- Toolbar -->
<androidx.appcompat.widget.Toolbar
android:id="@+id/nav_bar"
android:layout_width="0dp"
@@ -17,7 +17,6 @@
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
-
<TextView
android:id="@+id/app_name"
android:layout_width="wrap_content"
@@ -25,50 +24,19 @@
android:text="GNUnet Messenger"
android:textAppearance="?android:textAppearanceLarge"
android:textColor="@android:color/white" />
-
</androidx.appcompat.widget.Toolbar>
- <!-- Main content box -->
- <androidx.recyclerview.widget.RecyclerView
- android:id="@+id/chats_stack"
+ <!-- NavHost Fragment for Navigation -->
+ <androidx.fragment.app.FragmentContainerView
+ android:id="@+id/nav_host_fragment"
+ android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="0dp"
- android:layout_marginTop="16dp"
- app:layout_constraintTop_toBottomOf="@id/nav_bar"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintBottom_toBottomOf="parent"
- tools:listitem="@layout/item_chat" />
-
- <!-- Empty chat placeholder box -->
- <LinearLayout
- android:id="@+id/no_chat_box"
- android:orientation="vertical"
- android:gravity="center"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:visibility="gone"
- app:layout_constraintTop_toBottomOf="@id/nav_bar"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent">
-
- <TextView
- android:id="@+id/no_chat_label"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Select a chat to start messaging..."
- android:textAppearance="?android:textAppearanceMedium" />
- </LinearLayout>
-
- <!-- Search bar -->
- <androidx.appcompat.widget.SearchView
- android:id="@+id/chats_search_entry"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:iconifiedByDefault="false"
- app:layout_constraintTop_toBottomOf="@id/nav_bar"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- android:queryHint="Search Chats" />
-
+ android:layout_marginTop="8dp"
+ app:defaultNavHost="true"
+ app:navGraph="@navigation/nav_graph"
+ app:layout_constraintTop_toBottomOf="@id/nav_bar"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/GNUnetMessenger/app/src/main/res/navigation/nav_graph.xml b/GNUnetMessenger/app/src/main/res/navigation/nav_graph.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/accountListFragment">
@@ -19,13 +20,13 @@
<fragment
android:id="@+id/createAccountFragment"
android:name="org.gnunet.gnunetmessenger.ui.account.CreateAccountFragment"
- android:label="Create Account" />
+ android:label="Create Account"
+ tools:layout="@layout/fragment_create_account"/>
<fragment
android:id="@+id/accountOverviewFragment"
android:name="org.gnunet.gnunetmessenger.ui.account.AccountOverviewFragment"
android:label="Account Overview">
- <!-- Action zur ChatFragment (Argument chatName übergeben) -->
<action
android:id="@+id/action_accountOverviewFragment_to_chatFragment"
app:destination="@id/chatFragment">
@@ -34,7 +35,6 @@
app:argType="string" />
</action>
- <!-- Action zur AccountDetailsFragment -->
<action
android:id="@+id/action_accountOverviewFragment_to_accountDetailsFragment"
app:destination="@id/accountDetailsFragment" />