Search in sources :

Example 1 with IncidentViewModel

use of com.example.first_responder_app.viewModels.IncidentViewModel in project FirstResponse by mattpost1700.

the class HomeFragment method onCreateView.

@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    DrawerLocker drawerLocker = ((DrawerLocker) getActivity());
    if (drawerLocker != null) {
        drawerLocker.setDrawerLocked(false);
    }
    FragmentHomeBinding binding = DataBindingUtil.inflate(inflater, R.layout.fragment_home, container, false);
    NavHostFragment navHostFragment = (NavHostFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
    bindingView = binding.getRoot();
    // TODO: navCont created for side bar(still need to be implemented)
    NavController navController = navHostFragment.getNavController();
    // switch to Home fragment upon clicking it
    // also if you have any other code relates to onCreateView just add it from here
    activeUser = AppUtil.getActiveUser(getActivity());
    if (activeUser == null) {
        getActivity().getFragmentManager().popBackStack();
        Toast.makeText(getContext(), "User is not logged in!", Toast.LENGTH_SHORT).show();
    }
    // Setup click listeners for the view all incidents and view all responders buttons
    binding.viewAllIncidents.setOnClickListener(view -> {
        NavDirections action = HomeFragmentDirections.actionHomeFragmentToIncidentGroupFragment();
        Navigation.findNavController(binding.getRoot()).navigate(action);
    });
    binding.viewAllResponders.setOnClickListener(view -> {
        NavDirections action = HomeFragmentDirections.actionHomeFragmentToRespondingFragment();
        Navigation.findNavController(binding.getRoot()).navigate(action);
    });
    binding.sortIncidentsButton.setOnClickListener(view -> {
        PopupMenu popupMenu = new PopupMenu(getContext(), view);
        popupMenu.setOnMenuItemClickListener(this);
        popupMenu.inflate(R.menu.incident_popup_menu);
        popupMenu.show();
    });
    binding.sortRespondersButton.setOnClickListener(view -> {
        PopupMenu popupMenu = new PopupMenu(getContext(), view);
        popupMenu.setOnMenuItemClickListener(this);
        popupMenu.inflate(R.menu.user_popup_menu);
        popupMenu.show();
    });
    final SwipeRefreshLayout pullToRefresh = bindingView.findViewById(R.id.homeSwipeRefreshLayout);
    pullToRefresh.setOnRefreshListener(() -> {
        // your code
        refreshData();
        pullToRefresh.setRefreshing(false);
    });
    listOfIncidentDataModel = new ArrayList<>();
    respondersList = new ArrayList<>();
    listOfRanks = new ArrayList<>();
    // automatically subscribes everyone who logs in to get notifications for these topics
    FirebaseMessaging.getInstance().subscribeToTopic("events").addOnCompleteListener(new OnCompleteListener<>() {

        @Override
        public void onComplete(@NonNull Task<Void> task) {
        }
    });
    FirebaseMessaging.getInstance().subscribeToTopic("announcements").addOnCompleteListener(new OnCompleteListener<Void>() {

        @Override
        public void onComplete(@NonNull Task<Void> task) {
        }
    });
    FirebaseMessaging.getInstance().subscribeToTopic("incidents").addOnCompleteListener(new OnCompleteListener<Void>() {

        @Override
        public void onComplete(@NonNull Task<Void> task) {
        }
    });
    saveRanksCollection();
    RespondersRecyclerViewAdapter.ResponderClickListener responderClickListener = (view, position) -> {
        UserViewModel userViewModel = new ViewModelProvider(requireActivity()).get(UserViewModel.class);
        userViewModel.setUserDataModel(respondersList.get(position));
        NavDirections action = HomeFragmentDirections.actionHomeFragmentToUserFragment();
        Navigation.findNavController(binding.getRoot()).navigate(action);
    };
    IncidentRecyclerViewAdapter.IncidentClickListener incidentClickListener = (view, position) -> {
        IncidentDataModel incident = listOfIncidentDataModel.get(position);
        IncidentViewModel incidentViewModel = new ViewModelProvider(requireActivity()).get(IncidentViewModel.class);
        incidentViewModel.setIncidentDataModel(incident);
        NavDirections action = HomeFragmentDirections.actionHomeFragmentToIncidentFragment();
        Navigation.findNavController(binding.getRoot()).navigate(action);
    };
    // RecyclerViews
    RecyclerView incidentRecyclerView = bindingView.findViewById(R.id.incidents_recycler_view);
    incidentRecyclerView.setLayoutManager(new LinearLayoutManager(bindingView.getContext()));
    incidentRecyclerViewAdapter = new IncidentRecyclerViewAdapter(bindingView.getContext(), listOfIncidentDataModel);
    incidentRecyclerViewAdapter.setIncidentClickListener(incidentClickListener);
    incidentRecyclerView.setAdapter(incidentRecyclerViewAdapter);
    RecyclerView respondersRecyclerView = bindingView.findViewById(R.id.responders_recycler_view);
    respondersRecyclerView.setLayoutManager(new LinearLayoutManager(bindingView.getContext()));
    respondersRecyclerViewAdapter = new RespondersRecyclerViewAdapter(bindingView.getContext(), respondersList, listOfIncidentDataModel);
    respondersRecyclerViewAdapter.setResponderClickListener(responderClickListener);
    respondersRecyclerView.setAdapter(respondersRecyclerViewAdapter);
    // Start event listeners (live data)
    addIncidentEventListener();
    addResponderEventListener();
    return bindingView;
}
Also used : Bundle(android.os.Bundle) NonNull(androidx.annotation.NonNull) IncidentRecyclerViewAdapter(com.example.first_responder_app.recyclerViews.IncidentRecyclerViewAdapter) DrawerLocker(com.example.first_responder_app.interfaces.DrawerLocker) Task(com.google.android.gms.tasks.Task) MenuItem(android.view.MenuItem) NavController(androidx.navigation.NavController) ArrayList(java.util.ArrayList) QueryDocumentSnapshot(com.google.firebase.firestore.QueryDocumentSnapshot) IncidentDataModel(com.example.first_responder_app.dataModels.IncidentDataModel) PopupMenu(android.widget.PopupMenu) Toast(android.widget.Toast) Fragment(androidx.fragment.app.Fragment) HomeViewModel(com.example.first_responder_app.viewModels.HomeViewModel) View(android.view.View) ListenerRegistration(com.google.firebase.firestore.ListenerRegistration) RecyclerView(androidx.recyclerview.widget.RecyclerView) TAG(android.content.ContentValues.TAG) Log(android.util.Log) NavHostFragment(androidx.navigation.fragment.NavHostFragment) DataBindingUtil(androidx.databinding.DataBindingUtil) UsersDataModel(com.example.first_responder_app.dataModels.UsersDataModel) FragmentManager(androidx.fragment.app.FragmentManager) ViewModelProvider(androidx.lifecycle.ViewModelProvider) NavDirections(androidx.navigation.NavDirections) LayoutInflater(android.view.LayoutInflater) SwipeRefreshLayout(androidx.swiperefreshlayout.widget.SwipeRefreshLayout) AppUtil(com.example.first_responder_app.AppUtil) FragmentHomeBinding(com.example.first_responder_app.databinding.FragmentHomeBinding) FirebaseMessaging(com.google.firebase.messaging.FirebaseMessaging) FirestoreDatabase(com.example.first_responder_app.FirestoreDatabase) IncidentViewModel(com.example.first_responder_app.viewModels.IncidentViewModel) OnCompleteListener(com.google.android.gms.tasks.OnCompleteListener) FragmentTransaction(androidx.fragment.app.FragmentTransaction) ViewGroup(android.view.ViewGroup) UserViewModel(com.example.first_responder_app.viewModels.UserViewModel) R(com.example.first_responder_app.R) FirebaseFirestore(com.google.firebase.firestore.FirebaseFirestore) List(java.util.List) Nullable(androidx.annotation.Nullable) Navigation(androidx.navigation.Navigation) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) RespondersRecyclerViewAdapter(com.example.first_responder_app.recyclerViews.RespondersRecyclerViewAdapter) RanksDataModel(com.example.first_responder_app.dataModels.RanksDataModel) IncidentViewModel(com.example.first_responder_app.viewModels.IncidentViewModel) RespondersRecyclerViewAdapter(com.example.first_responder_app.recyclerViews.RespondersRecyclerViewAdapter) IncidentDataModel(com.example.first_responder_app.dataModels.IncidentDataModel) NavController(androidx.navigation.NavController) DrawerLocker(com.example.first_responder_app.interfaces.DrawerLocker) FragmentHomeBinding(com.example.first_responder_app.databinding.FragmentHomeBinding) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) SwipeRefreshLayout(androidx.swiperefreshlayout.widget.SwipeRefreshLayout) NavDirections(androidx.navigation.NavDirections) UserViewModel(com.example.first_responder_app.viewModels.UserViewModel) RecyclerView(androidx.recyclerview.widget.RecyclerView) IncidentRecyclerViewAdapter(com.example.first_responder_app.recyclerViews.IncidentRecyclerViewAdapter) NavHostFragment(androidx.navigation.fragment.NavHostFragment) PopupMenu(android.widget.PopupMenu) ViewModelProvider(androidx.lifecycle.ViewModelProvider)

Example 2 with IncidentViewModel

use of com.example.first_responder_app.viewModels.IncidentViewModel in project FirstResponse by mattpost1700.

the class IncidentGroupFragment method onCreateView.

@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    binding = DataBindingUtil.inflate(inflater, R.layout.fragment_incident_group, container, false);
    listOfIncidentDataModel = new ArrayList<>();
    activeUser = AppUtil.getActiveUser(getActivity());
    if (activeUser == null) {
        getActivity().getFragmentManager().popBackStack();
        Toast.makeText(getContext(), "User is not logged in!", Toast.LENGTH_SHORT).show();
    }
    final SwipeRefreshLayout pullToRefresh = binding.incidentGroupSwipeRefreshLayout;
    pullToRefresh.setOnRefreshListener(() -> {
        refreshData();
        pullToRefresh.setRefreshing(false);
    });
    IncidentGroupRecyclerViewAdapter.IncidentClickListener incidentClickListener = (view, position) -> {
        IncidentDataModel incident = listOfIncidentDataModel.get(position);
        IncidentViewModel incidentViewModel = new ViewModelProvider(requireActivity()).get(IncidentViewModel.class);
        incidentViewModel.setIncidentDataModel(incident);
        NavDirections action = IncidentGroupFragmentDirections.actionIncidentGroupFragmentToIncidentFragment();
        Navigation.findNavController(binding.getRoot()).navigate(action);
    };
    binding.sortIncidentsButton.setOnClickListener(view -> {
        PopupMenu popupMenu = new PopupMenu(getContext(), view);
        popupMenu.setOnMenuItemClickListener(this);
        popupMenu.inflate(R.menu.incident_popup_menu);
        popupMenu.show();
    });
    // Recycler view
    RecyclerView incidentRecyclerView = binding.incidentsGroupRecyclerView;
    incidentRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
    incidentGroupRecyclerViewAdapter = new IncidentGroupRecyclerViewAdapter(getContext(), listOfIncidentDataModel);
    incidentGroupRecyclerViewAdapter.setIncidentClickListener(incidentClickListener);
    incidentRecyclerView.setAdapter(incidentGroupRecyclerViewAdapter);
    addIncidentEventListener();
    // inflater.inflate(R.layout.fragment_incident_group, container, false);
    return binding.getRoot();
}
Also used : Bundle(android.os.Bundle) NonNull(androidx.annotation.NonNull) Query(com.google.firebase.firestore.Query) IncidentGroupViewModel(com.example.first_responder_app.viewModels.IncidentGroupViewModel) MenuItem(android.view.MenuItem) ArrayList(java.util.ArrayList) QueryDocumentSnapshot(com.google.firebase.firestore.QueryDocumentSnapshot) IncidentDataModel(com.example.first_responder_app.dataModels.IncidentDataModel) PopupMenu(android.widget.PopupMenu) Toast(android.widget.Toast) Fragment(androidx.fragment.app.Fragment) View(android.view.View) ListenerRegistration(com.google.firebase.firestore.ListenerRegistration) RecyclerView(androidx.recyclerview.widget.RecyclerView) TAG(android.content.ContentValues.TAG) Log(android.util.Log) DataBindingUtil(androidx.databinding.DataBindingUtil) UsersDataModel(com.example.first_responder_app.dataModels.UsersDataModel) ViewModelProvider(androidx.lifecycle.ViewModelProvider) NavDirections(androidx.navigation.NavDirections) LayoutInflater(android.view.LayoutInflater) SwipeRefreshLayout(androidx.swiperefreshlayout.widget.SwipeRefreshLayout) AppUtil(com.example.first_responder_app.AppUtil) FirestoreDatabase(com.example.first_responder_app.FirestoreDatabase) IncidentViewModel(com.example.first_responder_app.viewModels.IncidentViewModel) ViewGroup(android.view.ViewGroup) R(com.example.first_responder_app.R) FirebaseFirestore(com.google.firebase.firestore.FirebaseFirestore) List(java.util.List) Nullable(androidx.annotation.Nullable) FragmentIncidentGroupBinding(com.example.first_responder_app.databinding.FragmentIncidentGroupBinding) Navigation(androidx.navigation.Navigation) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) IncidentGroupRecyclerViewAdapter(com.example.first_responder_app.recyclerViews.IncidentGroupRecyclerViewAdapter) IncidentViewModel(com.example.first_responder_app.viewModels.IncidentViewModel) IncidentDataModel(com.example.first_responder_app.dataModels.IncidentDataModel) RecyclerView(androidx.recyclerview.widget.RecyclerView) IncidentGroupRecyclerViewAdapter(com.example.first_responder_app.recyclerViews.IncidentGroupRecyclerViewAdapter) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) SwipeRefreshLayout(androidx.swiperefreshlayout.widget.SwipeRefreshLayout) ViewModelProvider(androidx.lifecycle.ViewModelProvider) NavDirections(androidx.navigation.NavDirections) PopupMenu(android.widget.PopupMenu)

Aggregations

TAG (android.content.ContentValues.TAG)2 Bundle (android.os.Bundle)2 Log (android.util.Log)2 LayoutInflater (android.view.LayoutInflater)2 MenuItem (android.view.MenuItem)2 View (android.view.View)2 ViewGroup (android.view.ViewGroup)2 PopupMenu (android.widget.PopupMenu)2 Toast (android.widget.Toast)2 NonNull (androidx.annotation.NonNull)2 Nullable (androidx.annotation.Nullable)2 DataBindingUtil (androidx.databinding.DataBindingUtil)2 Fragment (androidx.fragment.app.Fragment)2 ViewModelProvider (androidx.lifecycle.ViewModelProvider)2 NavDirections (androidx.navigation.NavDirections)2 Navigation (androidx.navigation.Navigation)2 LinearLayoutManager (androidx.recyclerview.widget.LinearLayoutManager)2 RecyclerView (androidx.recyclerview.widget.RecyclerView)2 SwipeRefreshLayout (androidx.swiperefreshlayout.widget.SwipeRefreshLayout)2 AppUtil (com.example.first_responder_app.AppUtil)2