Merge Attachments Branch #155
@@ -2,8 +2,6 @@ package com.example.petstoremobile.fragments.listfragments;
|
||||
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -22,7 +20,6 @@ import com.example.petstoremobile.adapters.AdoptionAdapter;
|
||||
import com.example.petstoremobile.databinding.FragmentAdoptionBinding;
|
||||
import com.example.petstoremobile.dtos.AdoptionDTO;
|
||||
import com.example.petstoremobile.dtos.StoreDTO;
|
||||
import com.example.petstoremobile.fragments.ListFragment;
|
||||
import com.example.petstoremobile.utils.BulkDeleteHandler;
|
||||
import com.example.petstoremobile.utils.Resource;
|
||||
import com.example.petstoremobile.utils.SpinnerUtils;
|
||||
@@ -87,15 +84,7 @@ public class AdoptionFragment extends Fragment implements AdoptionAdapter.OnAdop
|
||||
|
||||
binding.fabAddAdoption.setOnClickListener(v -> openDetail(-1));
|
||||
|
||||
binding.btnHamburgerAdoption.setOnClickListener(v -> {
|
||||
Fragment parent = getParentFragment();
|
||||
if (parent != null) {
|
||||
Fragment grandParent = parent.getParentFragment();
|
||||
if (grandParent instanceof ListFragment) {
|
||||
((ListFragment) grandParent).openDrawer();
|
||||
}
|
||||
}
|
||||
});
|
||||
UIUtils.setupHamburgerMenu(binding.btnHamburgerAdoption, this);
|
||||
|
||||
binding.btnToggleCalendarModeAdoption.setOnClickListener(v -> toggleCalendarMode());
|
||||
|
||||
@@ -219,13 +208,7 @@ public class AdoptionFragment extends Fragment implements AdoptionAdapter.OnAdop
|
||||
* Sets up the search bar for filtering
|
||||
*/
|
||||
private void setupSearch() {
|
||||
binding.etSearchAdoption.addTextChangedListener(new TextWatcher() {
|
||||
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
||||
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
loadAdoptions();
|
||||
}
|
||||
@Override public void afterTextChanged(Editable s) {}
|
||||
});
|
||||
UIUtils.attachSearch(binding.etSearchAdoption, this::loadAdoptions);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -10,8 +10,6 @@ import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.navigation.fragment.NavHostFragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -23,7 +21,6 @@ import com.example.petstoremobile.adapters.AppointmentAdapter;
|
||||
import com.example.petstoremobile.databinding.FragmentAppointmentBinding;
|
||||
import com.example.petstoremobile.dtos.AppointmentDTO;
|
||||
import com.example.petstoremobile.dtos.StoreDTO;
|
||||
import com.example.petstoremobile.fragments.ListFragment;
|
||||
import com.example.petstoremobile.utils.BulkDeleteHandler;
|
||||
import com.example.petstoremobile.utils.Resource;
|
||||
import com.example.petstoremobile.utils.SpinnerUtils;
|
||||
@@ -95,15 +92,7 @@ public class AppointmentFragment extends Fragment implements AppointmentAdapter.
|
||||
|
||||
binding.fabAddAppointment.setOnClickListener(v -> openAppointmentDetails(-1));
|
||||
|
||||
binding.btnHamburger.setOnClickListener(v -> {
|
||||
Fragment parent = getParentFragment();
|
||||
if (parent != null) {
|
||||
Fragment grandParent = parent.getParentFragment();
|
||||
if (grandParent instanceof ListFragment) {
|
||||
((ListFragment) grandParent).openDrawer();
|
||||
}
|
||||
}
|
||||
});
|
||||
UIUtils.setupHamburgerMenu(binding.btnHamburger, this);
|
||||
|
||||
binding.btnToggleCalendarMode.setOnClickListener(v -> toggleCalendarMode());
|
||||
|
||||
@@ -244,13 +233,7 @@ public class AppointmentFragment extends Fragment implements AppointmentAdapter.
|
||||
* Configures the search bar for filtering.
|
||||
*/
|
||||
private void setupSearch() {
|
||||
binding.etSearchAppointment.addTextChangedListener(new TextWatcher() {
|
||||
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
||||
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
loadAppointmentData();
|
||||
}
|
||||
@Override public void afterTextChanged(Editable s) {}
|
||||
});
|
||||
UIUtils.attachSearch(binding.etSearchAppointment, this::loadAppointmentData);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package com.example.petstoremobile.fragments.listfragments;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -22,7 +20,6 @@ import com.example.petstoremobile.adapters.InventoryAdapter;
|
||||
import com.example.petstoremobile.databinding.FragmentInventoryBinding;
|
||||
import com.example.petstoremobile.dtos.InventoryDTO;
|
||||
import com.example.petstoremobile.dtos.StoreDTO;
|
||||
import com.example.petstoremobile.fragments.ListFragment;
|
||||
import com.example.petstoremobile.utils.BulkDeleteHandler;
|
||||
import com.example.petstoremobile.utils.UIUtils;
|
||||
import com.example.petstoremobile.viewmodels.InventoryViewModel;
|
||||
@@ -80,15 +77,7 @@ public class InventoryFragment extends Fragment implements InventoryAdapter.OnIn
|
||||
|
||||
binding.fabAddInventory.setOnClickListener(v -> openDetail(null));
|
||||
|
||||
binding.btnHamburger.setOnClickListener(v -> {
|
||||
Fragment parent = getParentFragment();
|
||||
if (parent != null) {
|
||||
Fragment grandParent = parent.getParentFragment();
|
||||
if (grandParent instanceof ListFragment) {
|
||||
((ListFragment) grandParent).openDrawer();
|
||||
}
|
||||
}
|
||||
});
|
||||
UIUtils.setupHamburgerMenu(binding.btnHamburger, this);
|
||||
|
||||
return binding.getRoot();
|
||||
}
|
||||
@@ -123,13 +112,7 @@ public class InventoryFragment extends Fragment implements InventoryAdapter.OnIn
|
||||
* Sets up the search bar for filtering.
|
||||
*/
|
||||
private void setupSearch() {
|
||||
binding.etSearchInventory.addTextChangedListener(new TextWatcher() {
|
||||
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
||||
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
loadInventory(true);
|
||||
}
|
||||
@Override public void afterTextChanged(Editable s) {}
|
||||
});
|
||||
UIUtils.attachSearch(binding.etSearchInventory, () -> loadInventory(true));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -9,8 +9,6 @@ import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.navigation.fragment.NavHostFragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -23,7 +21,6 @@ import com.example.petstoremobile.api.auth.TokenManager;
|
||||
import com.example.petstoremobile.databinding.FragmentPetBinding;
|
||||
import com.example.petstoremobile.dtos.PetDTO;
|
||||
import com.example.petstoremobile.dtos.StoreDTO;
|
||||
import com.example.petstoremobile.fragments.ListFragment;
|
||||
import com.example.petstoremobile.utils.BulkDeleteHandler;
|
||||
import com.example.petstoremobile.utils.Resource;
|
||||
import com.example.petstoremobile.utils.SpinnerUtils;
|
||||
@@ -81,15 +78,7 @@ public class PetFragment extends Fragment implements PetAdapter.OnPetClickListen
|
||||
|
||||
binding.fabAddPet.setOnClickListener(v -> openPetDetails());
|
||||
|
||||
binding.btnHamburger.setOnClickListener(v -> {
|
||||
Fragment parent = getParentFragment();
|
||||
if (parent != null) {
|
||||
Fragment grandParent = parent.getParentFragment();
|
||||
if (grandParent instanceof ListFragment) {
|
||||
((ListFragment) grandParent).openDrawer();
|
||||
}
|
||||
}
|
||||
});
|
||||
UIUtils.setupHamburgerMenu(binding.btnHamburger, this);
|
||||
|
||||
return binding.getRoot();
|
||||
}
|
||||
@@ -135,13 +124,7 @@ public class PetFragment extends Fragment implements PetAdapter.OnPetClickListen
|
||||
* Configures the search bar.
|
||||
*/
|
||||
private void setupSearch() {
|
||||
binding.etSearchPet.addTextChangedListener(new TextWatcher() {
|
||||
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
||||
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
loadPetData();
|
||||
}
|
||||
@Override public void afterTextChanged(Editable s) {}
|
||||
});
|
||||
UIUtils.attachSearch(binding.etSearchPet, this::loadPetData);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -9,8 +9,6 @@ import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.navigation.fragment.NavHostFragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -22,7 +20,6 @@ import com.example.petstoremobile.adapters.ProductAdapter;
|
||||
import com.example.petstoremobile.databinding.FragmentProductBinding;
|
||||
import com.example.petstoremobile.dtos.CategoryDTO;
|
||||
import com.example.petstoremobile.dtos.ProductDTO;
|
||||
import com.example.petstoremobile.fragments.ListFragment;
|
||||
import com.example.petstoremobile.utils.Resource;
|
||||
import com.example.petstoremobile.utils.SpinnerUtils;
|
||||
import com.example.petstoremobile.utils.UIUtils;
|
||||
@@ -72,15 +69,7 @@ public class ProductFragment extends Fragment implements ProductAdapter.OnProduc
|
||||
|
||||
binding.fabAddProduct.setOnClickListener(v -> openProductDetails(-1));
|
||||
|
||||
binding.btnHamburgerProduct.setOnClickListener(v -> {
|
||||
Fragment parent = getParentFragment();
|
||||
if (parent != null) {
|
||||
Fragment grandParent = parent.getParentFragment();
|
||||
if (grandParent instanceof ListFragment) {
|
||||
((ListFragment) grandParent).openDrawer();
|
||||
}
|
||||
}
|
||||
});
|
||||
UIUtils.setupHamburgerMenu(binding.btnHamburgerProduct, this);
|
||||
|
||||
return binding.getRoot();
|
||||
}
|
||||
@@ -113,13 +102,7 @@ public class ProductFragment extends Fragment implements ProductAdapter.OnProduc
|
||||
* Configures the search bar for triggering data load from backend.
|
||||
*/
|
||||
private void setupSearch() {
|
||||
binding.etSearchProduct.addTextChangedListener(new TextWatcher() {
|
||||
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
||||
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
loadProductData();
|
||||
}
|
||||
@Override public void afterTextChanged(Editable s) {}
|
||||
});
|
||||
UIUtils.attachSearch(binding.etSearchProduct, this::loadProductData);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package com.example.petstoremobile.fragments.listfragments;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -22,7 +20,6 @@ import com.example.petstoremobile.databinding.FragmentProductSupplierBinding;
|
||||
import com.example.petstoremobile.dtos.ProductDTO;
|
||||
import com.example.petstoremobile.dtos.ProductSupplierDTO;
|
||||
import com.example.petstoremobile.dtos.SupplierDTO;
|
||||
import com.example.petstoremobile.fragments.ListFragment;
|
||||
import com.example.petstoremobile.utils.BulkDeleteHandler;
|
||||
import com.example.petstoremobile.utils.Resource;
|
||||
import com.example.petstoremobile.utils.SpinnerUtils;
|
||||
@@ -80,15 +77,7 @@ public class ProductSupplierFragment extends Fragment
|
||||
|
||||
binding.fabAddPS.setOnClickListener(v -> openDetail(-1));
|
||||
|
||||
binding.btnHamburgerPS.setOnClickListener(v -> {
|
||||
Fragment parent = getParentFragment();
|
||||
if (parent != null) {
|
||||
Fragment grandParent = parent.getParentFragment();
|
||||
if (grandParent instanceof ListFragment) {
|
||||
((ListFragment) grandParent).openDrawer();
|
||||
}
|
||||
}
|
||||
});
|
||||
UIUtils.setupHamburgerMenu(binding.btnHamburgerPS, this);
|
||||
|
||||
return binding.getRoot();
|
||||
}
|
||||
@@ -143,13 +132,7 @@ public class ProductSupplierFragment extends Fragment
|
||||
* Configures the search bar for filtering.
|
||||
*/
|
||||
private void setupSearch() {
|
||||
binding.etSearchPS.addTextChangedListener(new TextWatcher() {
|
||||
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
||||
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
loadData();
|
||||
}
|
||||
@Override public void afterTextChanged(Editable s) {}
|
||||
});
|
||||
UIUtils.attachSearch(binding.etSearchPS, this::loadData);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package com.example.petstoremobile.fragments.listfragments;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -21,7 +19,6 @@ import com.example.petstoremobile.adapters.PurchaseOrderAdapter;
|
||||
import com.example.petstoremobile.databinding.FragmentPurchaseOrderBinding;
|
||||
import com.example.petstoremobile.dtos.PurchaseOrderDTO;
|
||||
import com.example.petstoremobile.dtos.StoreDTO;
|
||||
import com.example.petstoremobile.fragments.ListFragment;
|
||||
import com.example.petstoremobile.utils.Resource;
|
||||
import com.example.petstoremobile.utils.SpinnerUtils;
|
||||
import com.example.petstoremobile.utils.UIUtils;
|
||||
@@ -68,15 +65,7 @@ public class PurchaseOrderFragment extends Fragment
|
||||
setupSwipeRefresh();
|
||||
setupFilterToggle();
|
||||
|
||||
binding.btnHamburgerPO.setOnClickListener(v -> {
|
||||
Fragment parent = getParentFragment();
|
||||
if (parent != null) {
|
||||
Fragment grandParent = parent.getParentFragment();
|
||||
if (grandParent instanceof ListFragment) {
|
||||
((ListFragment) grandParent).openDrawer();
|
||||
}
|
||||
}
|
||||
});
|
||||
UIUtils.setupHamburgerMenu(binding.btnHamburgerPO, this);
|
||||
|
||||
return binding.getRoot();
|
||||
}
|
||||
@@ -108,13 +97,7 @@ public class PurchaseOrderFragment extends Fragment
|
||||
* Configures the search bar for filtering.
|
||||
*/
|
||||
private void setupSearch() {
|
||||
binding.etSearchPO.addTextChangedListener(new TextWatcher() {
|
||||
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
||||
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
loadData();
|
||||
}
|
||||
@Override public void afterTextChanged(Editable s) {}
|
||||
});
|
||||
UIUtils.attachSearch(binding.etSearchPO, this::loadData);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,8 +8,6 @@ import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.navigation.fragment.NavHostFragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -21,7 +19,6 @@ import com.example.petstoremobile.adapters.SaleAdapter;
|
||||
import com.example.petstoremobile.databinding.FragmentSaleBinding;
|
||||
import com.example.petstoremobile.dtos.SaleDTO;
|
||||
import com.example.petstoremobile.dtos.StoreDTO;
|
||||
import com.example.petstoremobile.fragments.ListFragment;
|
||||
import com.example.petstoremobile.utils.Resource;
|
||||
import com.example.petstoremobile.utils.SpinnerUtils;
|
||||
import com.example.petstoremobile.utils.UIUtils;
|
||||
@@ -72,15 +69,7 @@ public class SaleFragment extends Fragment implements SaleAdapter.OnSaleClickLis
|
||||
setupFilterToggle();
|
||||
loadSales(true);
|
||||
|
||||
binding.btnHamburger.setOnClickListener(v -> {
|
||||
Fragment parent = getParentFragment();
|
||||
if (parent != null) {
|
||||
Fragment grandParent = parent.getParentFragment();
|
||||
if (grandParent instanceof ListFragment) {
|
||||
((ListFragment) grandParent).openDrawer();
|
||||
}
|
||||
}
|
||||
});
|
||||
UIUtils.setupHamburgerMenu(binding.btnHamburger, this);
|
||||
|
||||
binding.fabAddSale.setOnClickListener(v ->
|
||||
NavHostFragment.findNavController(this).navigate(R.id.nav_sale_detail));
|
||||
@@ -149,14 +138,7 @@ public class SaleFragment extends Fragment implements SaleAdapter.OnSaleClickLis
|
||||
}
|
||||
|
||||
private void setupSearch() {
|
||||
binding.etSearchSale.addTextChangedListener(new TextWatcher() {
|
||||
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
||||
@Override public void afterTextChanged(Editable s) {}
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
loadSales(true);
|
||||
}
|
||||
});
|
||||
UIUtils.attachSearch(binding.etSearchSale, () -> loadSales(true));
|
||||
}
|
||||
|
||||
private void setupSwipeRefresh() {
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package com.example.petstoremobile.fragments.listfragments;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -21,9 +19,7 @@ import com.example.petstoremobile.R;
|
||||
import com.example.petstoremobile.adapters.ServiceAdapter;
|
||||
import com.example.petstoremobile.databinding.FragmentServiceBinding;
|
||||
import com.example.petstoremobile.dtos.ServiceDTO;
|
||||
import com.example.petstoremobile.fragments.ListFragment;
|
||||
import com.example.petstoremobile.utils.BulkDeleteHandler;
|
||||
import com.example.petstoremobile.utils.Resource;
|
||||
import com.example.petstoremobile.utils.UIUtils;
|
||||
import com.example.petstoremobile.viewmodels.ServiceViewModel;
|
||||
|
||||
@@ -78,15 +74,7 @@ public class ServiceFragment extends Fragment implements ServiceAdapter.OnServic
|
||||
|
||||
binding.fabAddService.setOnClickListener(v -> openDetail(null));
|
||||
|
||||
binding.btnHamburger.setOnClickListener(v -> {
|
||||
Fragment parent = getParentFragment();
|
||||
if (parent != null) {
|
||||
Fragment grandParent = parent.getParentFragment();
|
||||
if (grandParent instanceof ListFragment) {
|
||||
((ListFragment) grandParent).openDrawer();
|
||||
}
|
||||
}
|
||||
});
|
||||
UIUtils.setupHamburgerMenu(binding.btnHamburger, this);
|
||||
|
||||
return binding.getRoot();
|
||||
}
|
||||
@@ -121,13 +109,7 @@ public class ServiceFragment extends Fragment implements ServiceAdapter.OnServic
|
||||
* Sets up the search bar for filtering.
|
||||
*/
|
||||
private void setupSearch() {
|
||||
binding.etSearchService.addTextChangedListener(new TextWatcher() {
|
||||
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
||||
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
loadServices(true);
|
||||
}
|
||||
@Override public void afterTextChanged(Editable s) {}
|
||||
});
|
||||
UIUtils.attachSearch(binding.etSearchService, () -> loadServices(true));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.example.petstoremobile.fragments.listfragments;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.text.*;
|
||||
import android.util.Log;
|
||||
import android.view.*;
|
||||
import android.widget.*;
|
||||
@@ -17,7 +16,6 @@ import com.example.petstoremobile.adapters.EmployeeAdapter;
|
||||
import com.example.petstoremobile.api.RetrofitClient;
|
||||
import com.example.petstoremobile.dtos.EmployeeDTO;
|
||||
import com.example.petstoremobile.dtos.PageResponse;
|
||||
import com.example.petstoremobile.fragments.ListFragment;
|
||||
import com.example.petstoremobile.utils.UIUtils;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
import java.util.*;
|
||||
@@ -48,7 +46,7 @@ public class StaffFragment extends Fragment implements EmployeeAdapter.OnEmploye
|
||||
fab.setOnClickListener(v -> openDetail(-1));
|
||||
|
||||
ImageButton hamburger = view.findViewById(R.id.btnHamburgerStaff);
|
||||
hamburger.setOnClickListener(v -> openDrawer());
|
||||
UIUtils.setupHamburgerMenu(hamburger, this);
|
||||
|
||||
ImageButton btnToggleFilter = view.findViewById(R.id.btnToggleFilterStaff);
|
||||
UIUtils.setupFilterToggle(btnToggleFilter, layoutFilter, etSearch);
|
||||
@@ -56,16 +54,6 @@ public class StaffFragment extends Fragment implements EmployeeAdapter.OnEmploye
|
||||
return view;
|
||||
}
|
||||
|
||||
private void openDrawer() {
|
||||
Fragment parent = getParentFragment();
|
||||
if (parent != null) {
|
||||
Fragment grandParent = parent.getParentFragment();
|
||||
if (grandParent instanceof ListFragment) {
|
||||
((ListFragment) grandParent).openDrawer();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setupRecyclerView(View view) {
|
||||
RecyclerView rv = view.findViewById(R.id.recyclerViewStaff);
|
||||
adapter = new EmployeeAdapter(filteredList, this);
|
||||
@@ -75,13 +63,7 @@ public class StaffFragment extends Fragment implements EmployeeAdapter.OnEmploye
|
||||
|
||||
private void setupSearch(View view) {
|
||||
etSearch = view.findViewById(R.id.etSearchStaff);
|
||||
etSearch.addTextChangedListener(new TextWatcher() {
|
||||
public void beforeTextChanged(CharSequence s, int a, int b, int c) {}
|
||||
public void afterTextChanged(Editable s) {}
|
||||
public void onTextChanged(CharSequence s, int a, int b, int c) {
|
||||
filter(s.toString());
|
||||
}
|
||||
});
|
||||
UIUtils.attachSearch(etSearch, () -> filter(etSearch.getText().toString()));
|
||||
}
|
||||
|
||||
private void setupSwipeRefresh(View view) {
|
||||
|
||||
@@ -9,8 +9,6 @@ import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.navigation.fragment.NavHostFragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -21,7 +19,6 @@ import com.example.petstoremobile.R;
|
||||
import com.example.petstoremobile.adapters.SupplierAdapter;
|
||||
import com.example.petstoremobile.databinding.FragmentSupplierBinding;
|
||||
import com.example.petstoremobile.dtos.SupplierDTO;
|
||||
import com.example.petstoremobile.fragments.ListFragment;
|
||||
import com.example.petstoremobile.utils.BulkDeleteHandler;
|
||||
import com.example.petstoremobile.utils.Resource;
|
||||
import com.example.petstoremobile.utils.UIUtils;
|
||||
@@ -68,16 +65,7 @@ public class SupplierFragment extends Fragment implements SupplierAdapter.OnSupp
|
||||
//Add button to opens the add dialog
|
||||
binding.fabAddSupplier.setOnClickListener(v -> openSupplierDetails(-1));
|
||||
|
||||
//Make the hamburger button open the drawer from listFragment
|
||||
binding.btnHamburger.setOnClickListener(v -> {
|
||||
Fragment parent = getParentFragment();
|
||||
if (parent != null) {
|
||||
Fragment grandParent = parent.getParentFragment();
|
||||
if (grandParent instanceof ListFragment) {
|
||||
((ListFragment) grandParent).openDrawer();
|
||||
}
|
||||
}
|
||||
});
|
||||
UIUtils.setupHamburgerMenu(binding.btnHamburger, this);
|
||||
|
||||
return binding.getRoot();
|
||||
}
|
||||
@@ -112,13 +100,7 @@ public class SupplierFragment extends Fragment implements SupplierAdapter.OnSupp
|
||||
* Configures the search bar for filtering.
|
||||
*/
|
||||
private void setupSearch() {
|
||||
binding.etSearchSupplier.addTextChangedListener(new TextWatcher() {
|
||||
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
||||
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
loadSupplierData();
|
||||
}
|
||||
@Override public void afterTextChanged(Editable s) {}
|
||||
});
|
||||
UIUtils.attachSearch(binding.etSearchSupplier, this::loadSupplierData);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,20 +1,23 @@
|
||||
package com.example.petstoremobile.utils;
|
||||
|
||||
import android.telephony.PhoneNumberFormattingTextWatcher;
|
||||
import android.text.Editable;
|
||||
import android.text.InputFilter;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.Spinner;
|
||||
|
||||
import com.example.petstoremobile.R;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import com.example.petstoremobile.fragments.ListFragment;
|
||||
|
||||
/**
|
||||
* Utility class for shared UI component logic and formatting.
|
||||
*/
|
||||
public class UIUtils {
|
||||
/**
|
||||
* Formats an EditText for to phone format
|
||||
* Formats an EditText to phone format.
|
||||
*/
|
||||
public static void formatPhoneInput(EditText editText) {
|
||||
editText.addTextChangedListener(new PhoneNumberFormattingTextWatcher("CA"));
|
||||
@@ -42,4 +45,32 @@ public class UIUtils {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Simplifies setting up the hamburger menu to open the navigation drawer.
|
||||
*/
|
||||
public static void setupHamburgerMenu(ImageButton btnHamburger, Fragment fragment) {
|
||||
btnHamburger.setOnClickListener(v -> {
|
||||
Fragment parent = fragment.getParentFragment();
|
||||
if (parent != null) {
|
||||
Fragment grandParent = parent.getParentFragment();
|
||||
if (grandParent instanceof ListFragment) {
|
||||
((ListFragment) grandParent).openDrawer();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Attaches a simplified TextWatcher to an EditText for search functionality.
|
||||
*/
|
||||
public static void attachSearch(EditText etSearch, Runnable onQueryChanged) {
|
||||
etSearch.addTextChangedListener(new TextWatcher() {
|
||||
@Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
||||
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
onQueryChanged.run();
|
||||
}
|
||||
@Override public void afterTextChanged(Editable s) {}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user