messenger-android

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

AccountOverviewFragment.kt (2993B)


      1 /*
      2    This file is part of GNUnet.
      3    Copyright (C) 2021--2025 GNUnet e.V.
      4 
      5    GNUnet is free software: you can redistribute it and/or modify it
      6    under the terms of the GNU Affero General Public License as published
      7    by the Free Software Foundation, either version 3 of the License,
      8    or (at your option) any later version.
      9 
     10    GNUnet is distributed in the hope that it will be useful, but
     11    WITHOUT ANY WARRANTY; without even the implied warranty of
     12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13    Affero General Public License for more details.
     14 
     15    You should have received a copy of the GNU Affero General Public License
     16    along with this program.  If not, see <http://www.gnu.org/licenses/>.
     17 
     18    SPDX-License-Identifier: AGPL3.0-or-later
     19  */
     20 /*
     21  * @author t3sserakt
     22  * @file GNUnetMessenger/app/src/main/java/org/gnunet/gnunetmessenger/ui/account/AccountOverviewFragment.kt
     23  */
     24 
     25 package org.gnunet.gnunetmessenger.ui.account
     26 
     27 import android.os.Bundle
     28 import android.view.*
     29 import androidx.drawerlayout.widget.DrawerLayout
     30 import androidx.fragment.app.Fragment
     31 import androidx.fragment.app.activityViewModels
     32 import androidx.navigation.fragment.findNavController
     33 import androidx.recyclerview.widget.LinearLayoutManager
     34 import org.gnunet.gnunetmessenger.MainActivity
     35 import org.gnunet.gnunetmessenger.databinding.FragmentAccountOverviewBinding
     36 import org.gnunet.gnunetmessenger.ui.adapters.ChatListAdapter
     37 import org.gnunet.gnunetmessenger.viewmodel.ChatOverviewViewModel
     38 
     39 class AccountOverviewFragment : Fragment() {
     40 
     41     private var _binding: FragmentAccountOverviewBinding? = null
     42     private val binding get() = _binding!!
     43 
     44     private lateinit var drawerLayout: DrawerLayout
     45     private lateinit var adapter: ChatListAdapter
     46 
     47     private val viewModel: ChatOverviewViewModel by activityViewModels()
     48 
     49     override fun onCreateView(
     50         inflater: LayoutInflater, container: ViewGroup?,
     51         savedInstanceState: Bundle?
     52     ): View {
     53         _binding = FragmentAccountOverviewBinding.inflate(inflater, container, false)
     54 
     55         val args = AccountOverviewFragmentArgs.fromBundle(requireArguments())
     56         (activity as MainActivity).setCurrentAccount(args.account)
     57 
     58         drawerLayout = binding.accountDrawerLayout
     59 
     60         adapter = ChatListAdapter(emptyList()) { selectedChat ->
     61             val action = AccountOverviewFragmentDirections
     62                 .actionAccountOverviewFragmentToChatFragment(chatContext = selectedChat.chatContext)
     63             findNavController().navigate(action)
     64         }
     65 
     66         binding.chatListRecyclerView.layoutManager = LinearLayoutManager(requireContext())
     67         binding.chatListRecyclerView.adapter = adapter
     68 
     69         // Observer auf LiveData aus dem ViewModel
     70         viewModel.chats.observe(viewLifecycleOwner) { chatList ->
     71             adapter.submitList(chatList)
     72         }
     73 
     74         return binding.root
     75     }
     76 
     77     override fun onDestroyView() {
     78         super.onDestroyView()
     79         _binding = null
     80     }
     81 }