messenger-android

Android graphical user interfaces for GNUnet Messenger
Log | Files | Refs | README | LICENSE

commit f68f2dd26efefec9e8114544effded92df529287
parent 3af09e6c6afc60512d30305c9916715c65767d0e
Author: t3serakt <t3ss@posteo.de>
Date:   Tue,  8 Apr 2025 20:44:22 +0200

Changed account fragments

Diffstat:
MGNUnetMessenger/.idea/misc.xml | 2+-
MGNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/MainActivity.kt | 74++++++++++++++++++++++++++++----------------------------------------------
MGNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/account/CreateAccountFragment.kt | 5+++--
RGNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/adapter/ChatListAdapter.kt -> GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/adapters/ChatListAdapter.kt | 0
AGNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/chat/ChatFragment.kt | 7+++++++
MGNUnetMessenger/app/src/main/res/layout/activity_main.xml | 56++++++++++++--------------------------------------------
MGNUnetMessenger/app/src/main/res/navigation/nav_graph.xml | 6+++---
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" />