commit b789c416f27d4009ae9357ed3deff492653be5c6 parent 7bb9bb3382d45606713f649fb17e0090e3f2198b Author: t3sserakt <t3sserakt@posteo.de> Date: Fri, 11 Apr 2025 19:49:00 +0200 Layout fixes. Diffstat:
15 files changed, 96 insertions(+), 24 deletions(-)
diff --git a/GNUnetMessenger/.idea/compiler.xml b/GNUnetMessenger/.idea/compiler.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="CompilerConfiguration"> - <bytecodeTargetLevel target="17" /> + <bytecodeTargetLevel target="21" /> </component> </project> \ No newline at end of file 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_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" 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 @@ -73,8 +73,10 @@ class MainActivity : AppCompatActivity() { override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { R.id.menu_current_account -> { - val action = NavGraphDirections.actionGlobalAccountDetailsFragment() - navController.navigate(action) + if (null != currentAccount) { + val action = NavGraphDirections.actionGlobalAccountDetailsFragment() + navController.navigate(action) + } true } R.id.menu_create_lobby -> { diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/service/GnunetChat.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/service/GnunetChat.kt @@ -12,11 +12,12 @@ interface GnunetChat { fun startChat(messengerApp: MessengerApp, callback: (ChatContext, ChatMessage) -> Unit): ChatHandle fun iterateAccounts(handle: ChatHandle, callback: (ChatAccount) -> Unit) fun createAccount(handle: ChatHandle, name: String): GnunetReturnValue - fun connect(handle: ChatHandle, accountId: Long) + fun connect(handle: ChatHandle, account: ChatAccount) fun getProfileName(handle: ChatHandle): String fun setProfileName(handle: ChatHandle, name: String) fun getProfileKey(handle: ChatHandle): String fun setContactBlock(isBlocked: Boolean) fun setAttribute(handle: ChatHandle,key: String, value: String) fun getAttributes(handle: ChatHandle, callback: (String, String) -> Unit) + fun lobbyOpen(handle: ChatHandle, callback: (String) -> Unit) } \ No newline at end of file diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/service/boundimpl/GnunetChatBoundService.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/service/boundimpl/GnunetChatBoundService.kt @@ -25,7 +25,7 @@ class GnunetChatBoundService : GnunetChat { TODO("Not yet implemented") } - override fun connect(handle: ChatHandle, accountId: Long) { + override fun connect(handle: ChatHandle, account: ChatAccount) { TODO("Not yet implemented") } @@ -52,4 +52,8 @@ class GnunetChatBoundService : GnunetChat { override fun getAttributes(handle: ChatHandle, callback: (String, String) -> Unit) { TODO("Not yet implemented") } + + override fun lobbyOpen(handle: ChatHandle, callback: (String) -> Unit) { + TODO("Not yet implemented") + } } \ No newline at end of file diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/service/mock/GnunetChatMock.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/service/mock/GnunetChatMock.kt @@ -32,10 +32,10 @@ class GnunetChatMock : GnunetChat { override fun createAccount(handle: ChatHandle, name: String): GnunetReturnValue { println("create account") - return GnunetReturnValue.YES + return GnunetReturnValue.OK } - override fun connect(handle: ChatHandle, accountId: Long) { + override fun connect(handle: ChatHandle, account: ChatAccount) { println("connect") } @@ -56,7 +56,7 @@ class GnunetChatMock : GnunetChat { } override fun setAttribute(handle: ChatHandle, key: String, value: String) { - TODO("Not yet implemented") + println("setting Attribute withj key: ${key} and value ${value}") } override fun getAttributes(handle: ChatHandle, callback: (String, String) -> Unit) { @@ -70,4 +70,8 @@ class GnunetChatMock : GnunetChat { callback(key, value) } } + + override fun lobbyOpen(handle: ChatHandle, callback: (String) -> Unit) { + callback("000G006K2TJNMD9VTCYRX7BRVV3HAEPS15E6NHDXKPJA1KAJJEG9AFF884") + } } \ No newline at end of file diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/account/AccountListFragment.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/account/AccountListFragment.kt @@ -29,11 +29,15 @@ class AccountListFragment : Fragment() { ChatAccount(2, "Bob") )*/ val view = inflater.inflate(R.layout.fragment_account_list, container, false) + val activity = activity as MainActivity + val gnunetChat = activity.getGnunetChatInstance() + val handle = activity.getChatHandle() + recycler = view.findViewById(R.id.account_recycler) createButton = view.findViewById(R.id.btn_create_account) adapter = AccountAdapter { selectedAccount -> - // Navigation zu Chats dieses Accounts (wird später implementiert) + gnunetChat.connect(handle, selectedAccount) val action = AccountListFragmentDirections.actionAccountListFragmentToAccountOverviewFragment(account = selectedAccount) findNavController().navigate(action) } @@ -42,7 +46,8 @@ class AccountListFragment : Fragment() { recycler.adapter = adapter createButton.setOnClickListener { - // Navigation zu CreateAccountFragment (wird später gemacht) + val action = AccountListFragmentDirections.actionAccountListFragmentToCreateAccountFragment() + findNavController().navigate(action) } (activity as MainActivity).getGnunetChatInstance().iterateAccounts((activity as MainActivity).getChatHandle()) { account -> 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 @@ -6,8 +6,10 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.activity.result.contract.ActivityResultContracts +import androidx.navigation.fragment.findNavController import org.gnunet.gnunetmessenger.MainActivity import org.gnunet.gnunetmessenger.databinding.FragmentCreateAccountBinding +import org.gnunet.gnunetmessenger.model.ChatAccount import org.gnunet.gnunetmessenger.model.ChatHandle import org.gnunet.gnunetmessenger.service.GnunetChat import org.gnunet.gnunetmessenger.model.GnunetReturnValue @@ -15,7 +17,9 @@ import org.gnunet.gnunetmessenger.model.GnunetReturnValue class CreateAccountFragment : Fragment() { private lateinit var binding: FragmentCreateAccountBinding + private lateinit var mainActivity: MainActivity private lateinit var gnunetChat: GnunetChat + private lateinit var handle: ChatHandle // Request code for selecting avatar image private val avatarImageRequest = registerForActivityResult(ActivityResultContracts.GetContent()) { uri -> @@ -26,10 +30,11 @@ class CreateAccountFragment : Fragment() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { - binding = FragmentCreateAccountBinding.inflate(inflater, container, false) + mainActivity = activity as MainActivity + gnunetChat = mainActivity.getGnunetChatInstance() + handle = mainActivity.getChatHandle() - // Initialize GnunetChat (or get it from the ServiceFactory) - gnunetChat = (activity as MainActivity).getGnunetChatInstance() + binding = FragmentCreateAccountBinding.inflate(inflater, container, false) // Set up listeners binding.selectAvatarButton.setOnClickListener { @@ -57,10 +62,20 @@ class CreateAccountFragment : Fragment() { when (result) { GnunetReturnValue.OK -> { - // Handle success (e.g., navigate back or show a success message) + gnunetChat.iterateAccounts(handle) { account -> + if (account.name == accountName) { + gnunetChat.connect(handle, account) + val action = + CreateAccountFragmentDirections.actionCreateAccountFragmentToAccountOverviewFragment( + account = account + ) + findNavController().navigate(action) + } + + } } else -> { - // Handle failure (e.g., show an error message) + println("result ${result} not ok") } } } diff --git a/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/account/LobbyCreateFragment.kt b/GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/account/LobbyCreateFragment.kt @@ -6,9 +6,11 @@ import android.view.View import android.view.ViewGroup import android.widget.ArrayAdapter import android.widget.Button +import android.widget.ProgressBar import android.widget.Spinner import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController +import org.gnunet.gnunetmessenger.MainActivity import org.gnunet.gnunetmessenger.R import java.util.UUID @@ -21,6 +23,10 @@ class LobbyCreateFragment : Fragment() { val spinner = view.findViewById<Spinner>(R.id.lifetime_spinner) val adapter = ArrayAdapter(requireContext(), android.R.layout.simple_spinner_item, lifetimes) + val activity = activity as MainActivity + val gnunetChat = activity.getGnunetChatInstance() + val handle = activity.getChatHandle() + adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) spinner.adapter = adapter @@ -30,8 +36,20 @@ class LobbyCreateFragment : Fragment() { view.findViewById<Button>(R.id.btn_generate).setOnClickListener { val selectedLifetime = spinner.selectedItem.toString() - val action = LobbyCreateFragmentDirections.actionLobbyCreateFragmentToLobbyDisplayFragment(lobbyId = UUID.randomUUID().toString(), lifetime = selectedLifetime) - findNavController().navigate(action) + val progressBar = view.findViewById<ProgressBar>(R.id.progress_bar) + progressBar.visibility = View.VISIBLE + gnunetChat.lobbyOpen(handle){ lobbyPubKey -> + progressBar.post { + progressBar.visibility = View.GONE + val action = + LobbyCreateFragmentDirections.actionLobbyCreateFragmentToLobbyDisplayFragment( + lobbyId = lobbyPubKey, + lifetime = selectedLifetime + ) + findNavController().navigate(action) + } + } + } return view diff --git a/GNUnetMessenger/app/src/main/res/layout/fragment_account_list.xml b/GNUnetMessenger/app/src/main/res/layout/fragment_account_list.xml @@ -21,6 +21,8 @@ android:layout_height="0dp" android:layout_weight="1" tools:listitem="@layout/item_account" - android:contentDescription="@string/account_list_description" /> + android:contentDescription="@string/account_list_description" + android:scrollbars="vertical" + android:fadeScrollbars="false"/> </LinearLayout> \ No newline at end of file diff --git a/GNUnetMessenger/app/src/main/res/layout/fragment_account_overview.xml b/GNUnetMessenger/app/src/main/res/layout/fragment_account_overview.xml @@ -19,6 +19,8 @@ android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" - android:contentDescription="@string/chat_list_description" /> + android:contentDescription="@string/chat_list_description" + android:scrollbars="vertical" + android:fadeScrollbars="false"/> </LinearLayout> </androidx.drawerlayout.widget.DrawerLayout> diff --git a/GNUnetMessenger/app/src/main/res/layout/fragment_attribute_list.xml b/GNUnetMessenger/app/src/main/res/layout/fragment_attribute_list.xml @@ -41,7 +41,9 @@ android:id="@+id/attribute_list" android:layout_width="match_parent" android:layout_height="match_parent" - android:contentDescription="@string/attribute_list_description"/> + android:contentDescription="@string/attribute_list_description" + android:scrollbars="vertical" + android:fadeScrollbars="false"/> </androidx.cardview.widget.CardView> <EditText diff --git a/GNUnetMessenger/app/src/main/res/layout/fragment_lobby_create.xml b/GNUnetMessenger/app/src/main/res/layout/fragment_lobby_create.xml @@ -23,6 +23,15 @@ android:layout_marginTop="24dp" android:padding="8dp" /> <!-- Padding hinzugefügt für besseren Touch-Bereich --> + <ProgressBar + android:id="@+id/progress_bar" + style="?android:attr/progressBarStyleLarge" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:visibility="gone" /> + + <!-- LinearLayout für Buttons --> <LinearLayout android:orientation="horizontal" diff --git a/GNUnetMessenger/app/src/main/res/menu/main_menu.xml b/GNUnetMessenger/app/src/main/res/menu/main_menu.xml @@ -17,10 +17,10 @@ <item android:id="@+id/menu_settings" android:title="@string/settings" - app:showAsAction="always" /> + app:showAsAction="never" /> <item android:id="@+id/menu_about" android:title="@string/about" - app:showAsAction="ifRoom" /> + app:showAsAction="never" /> </menu> diff --git a/GNUnetMessenger/app/src/main/res/navigation/nav_graph.xml b/GNUnetMessenger/app/src/main/res/navigation/nav_graph.xml @@ -27,7 +27,15 @@ android:id="@+id/createAccountFragment" android:name="org.gnunet.gnunetmessenger.ui.account.CreateAccountFragment" android:label="Create Account" - tools:layout="@layout/fragment_create_account"/> + tools:layout="@layout/fragment_create_account"> + <action + android:id="@+id/action_createAccountFragment_to_accountOverviewFragment" + app:destination="@id/accountOverviewFragment"> + <argument + android:name="account" + app:argType="org.gnunet.gnunetmessenger.model.ChatAccount" /> + </action> + </fragment> <!-- Account Overview --> <fragment