Remove deprecated menu and use MenuProvider instead

This commit is contained in:
M M Arif
2025-01-29 18:37:03 +05:00
parent 29dfac9ba6
commit 7bbcf93335
17 changed files with 555 additions and 351 deletions
@@ -18,7 +18,6 @@ import org.mian.gitnex.R;
import org.mian.gitnex.activities.MainActivity;
import org.mian.gitnex.helpers.AppDatabaseSettings;
import org.mian.gitnex.helpers.AppUtil;
import org.mian.gitnex.helpers.TinyDB;
import org.mian.gitnex.helpers.ViewPager2Transformers;
/**
@@ -35,7 +34,6 @@ public class ExploreFragment extends Fragment {
View view = inflater.inflate(R.layout.fragment_explore, container, false);
Context ctx = getContext();
TinyDB tinyDB = TinyDB.getInstance(ctx);
((MainActivity) requireActivity())
.setActionBarTitle(getResources().getString(R.string.pageTitleExplore));
@@ -105,7 +105,7 @@ public class ExplorePublicOrganizationsFragment extends Fragment {
@NonNull Call<List<Organization>> call,
@NonNull Response<List<Organization>> response) {
if (response.isSuccessful()) {
if (response.body() != null && response.body().size() > 0) {
if (response.body() != null && !response.body().isEmpty()) {
organizationsList.clear();
organizationsList.addAll(response.body());
adapter.notifyDataChanged();
@@ -147,7 +147,7 @@ public class ExplorePublicOrganizationsFragment extends Fragment {
if (response.isSuccessful()) {
List<Organization> result = response.body();
if (result != null) {
if (result.size() > 0) {
if (!result.isEmpty()) {
pageSize = result.size();
organizationsList.addAll(result);
} else {
@@ -15,7 +15,9 @@ import android.view.inputmethod.EditorInfo;
import androidx.activity.OnBackPressedCallback;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.SearchView;
import androidx.core.view.MenuProvider;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -76,7 +78,6 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
binding = FragmentFilesBinding.inflate(inflater, container, false);
setHasOptionsMenu(true);
boolean canPush = repository.getPermissions().isPush();
boolean archived = repository.getRepository().isArchived();
@@ -184,6 +185,51 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
binding.switchBranch.setOnClickListener(switchBranch -> chooseBranch());
requireActivity()
.addMenuProvider(
new MenuProvider() {
@Override
public void onCreateMenu(
@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
menuInflater.inflate(R.menu.search_menu, menu);
menuInflater.inflate(R.menu.files_switch_branches_menu, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
androidx.appcompat.widget.SearchView searchView =
(androidx.appcompat.widget.SearchView)
searchItem.getActionView();
assert searchView != null;
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(
new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
if (binding.recyclerView.getAdapter() != null) {
filesAdapter.getFilter().filter(newText);
}
return false;
}
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
});
}
@Override
public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
return false;
}
},
getViewLifecycleOwner(),
Lifecycle.State.RESUMED);
return binding.getRoot();
}
@@ -415,39 +461,4 @@ public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapter
}
});
}
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
menu.clear();
inflater.inflate(R.menu.search_menu, menu);
inflater.inflate(R.menu.files_switch_branches_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) searchItem.getActionView();
assert searchView != null;
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(
new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
if (binding.recyclerView.getAdapter() != null) {
filesAdapter.getFilter().filter(newText);
}
return false;
}
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
});
}
}
@@ -13,7 +13,9 @@ import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.view.MenuProvider;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.ArrayList;
import java.util.List;
@@ -41,7 +43,6 @@ public class IssuesFragment extends Fragment {
private final String requestType = Constants.issuesRequestType;
private FragmentIssuesBinding fragmentIssuesBinding;
private Context context;
private Menu menu;
private List<Issue> issuesList;
private List<Issue> pinnedIssuesList;
private IssuesAdapter adapter;
@@ -63,7 +64,6 @@ public class IssuesFragment extends Fragment {
@Nullable Bundle savedInstanceState) {
fragmentIssuesBinding = FragmentIssuesBinding.inflate(inflater, container, false);
setHasOptionsMenu(true);
context = getContext();
repository = RepositoryContext.fromBundle(requireArguments());
@@ -126,12 +126,6 @@ public class IssuesFragment extends Fragment {
((RepoDetailActivity) requireActivity())
.setFragmentRefreshListener(
issueState -> {
if (issueState.equals("closed")) {
menu.getItem(1).setIcon(R.drawable.ic_filter_closed);
} else {
menu.getItem(1).setIcon(R.drawable.ic_filter);
}
issuesList.clear();
adapter = new IssuesAdapter(context, issuesList, "");
@@ -247,6 +241,64 @@ public class IssuesFragment extends Fragment {
fragmentIssuesBinding.createNewIssue.setVisibility(View.GONE);
}
requireActivity()
.addMenuProvider(
new MenuProvider() {
@Override
public void onCreateMenu(
@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
menuInflater.inflate(R.menu.search_menu, menu);
menuInflater.inflate(R.menu.filter_menu, menu);
if (repository.getIssueState().toString().equals("closed")) {
menu.getItem(1).setIcon(R.drawable.ic_filter_closed);
} else {
menu.getItem(1).setIcon(R.drawable.ic_filter);
}
MenuItem searchItem = menu.findItem(R.id.action_search);
androidx.appcompat.widget.SearchView searchView =
(androidx.appcompat.widget.SearchView)
searchItem.getActionView();
assert searchView != null;
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(
new androidx.appcompat.widget.SearchView
.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
loadInitial(
repository.getOwner(),
repository.getName(),
resultLimit,
requestType,
repository.getIssueState().toString(),
repository.getIssueMilestoneFilterName(),
query);
searchView.setQuery(null, false);
searchItem.collapseActionView();
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
}
@Override
public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
return false;
}
},
getViewLifecycleOwner(),
Lifecycle.State.RESUMED);
return fragmentIssuesBinding.getRoot();
}
@@ -439,7 +491,7 @@ public class IssuesFragment extends Fragment {
});
}
@Override
/*@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
this.menu = menu;
@@ -481,5 +533,5 @@ public class IssuesFragment extends Fragment {
return false;
}
});
}
}*/
}
@@ -53,7 +53,6 @@ public class LabelsFragment extends Fragment {
FragmentLabelsBinding fragmentLabelsBinding =
FragmentLabelsBinding.inflate(inflater, container, false);
setHasOptionsMenu(true);
boolean canPush = repository.getPermissions().isPush();
boolean archived = repository.getRepository().isArchived();
@@ -13,7 +13,9 @@ import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.view.MenuProvider;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.ArrayList;
@@ -34,7 +36,6 @@ public class MilestonesFragment extends Fragment {
private MilestonesViewModel milestonesViewModel;
private FragmentMilestonesBinding viewBinding;
private Menu menu;
private List<Milestone> dataList;
private MilestonesAdapter adapter;
private RepositoryContext repository;
@@ -59,7 +60,6 @@ public class MilestonesFragment extends Fragment {
@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
viewBinding = FragmentMilestonesBinding.inflate(inflater, container, false);
setHasOptionsMenu(true);
Context ctx = getContext();
milestonesViewModel = new ViewModelProvider(this).get(MilestonesViewModel.class);
@@ -96,11 +96,6 @@ public class MilestonesFragment extends Fragment {
.setFragmentRefreshListenerMilestone(
milestoneState -> {
state = milestoneState;
if (milestoneState.equals("open")) {
menu.getItem(1).setIcon(R.drawable.ic_filter);
} else {
menu.getItem(1).setIcon(R.drawable.ic_filter_closed);
}
page = 1;
dataList.clear();
@@ -119,6 +114,56 @@ public class MilestonesFragment extends Fragment {
v13 -> startActivity(repository.getIntent(ctx, CreateMilestoneActivity.class)));
fetchDataAsync(repository.getOwner(), repository.getName(), state);
requireActivity()
.addMenuProvider(
new MenuProvider() {
@Override
public void onCreateMenu(
@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
menuInflater.inflate(R.menu.search_menu, menu);
menuInflater.inflate(R.menu.filter_menu_milestone, menu);
if (repository.getMilestoneState().toString().equals("open")) {
menu.getItem(1).setIcon(R.drawable.ic_filter);
} else {
menu.getItem(1).setIcon(R.drawable.ic_filter_closed);
}
MenuItem searchItem = menu.findItem(R.id.action_search);
androidx.appcompat.widget.SearchView searchView =
(androidx.appcompat.widget.SearchView)
searchItem.getActionView();
assert searchView != null;
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(
new androidx.appcompat.widget.SearchView
.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
filter(newText);
return false;
}
});
}
@Override
public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
return false;
}
},
getViewLifecycleOwner(),
Lifecycle.State.RESUMED);
return viewBinding.getRoot();
}
@@ -195,37 +240,6 @@ public class MilestonesFragment extends Fragment {
return -1;
}
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
this.menu = menu;
inflater.inflate(R.menu.search_menu, menu);
inflater.inflate(R.menu.filter_menu_milestone, menu);
super.onCreateOptionsMenu(menu, inflater);
MenuItem searchItem = menu.findItem(R.id.action_search);
androidx.appcompat.widget.SearchView searchView =
(androidx.appcompat.widget.SearchView) searchItem.getActionView();
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(
new androidx.appcompat.widget.SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
filter(newText);
return false;
}
});
}
private void filter(String text) {
List<Milestone> arr = new ArrayList<>();
@@ -12,7 +12,9 @@ import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.view.MenuProvider;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
@@ -45,11 +47,8 @@ public class NotificationsFragment extends Fragment
private final List<NotificationThread> notificationThreads = new ArrayList<>();
private FragmentNotificationsBinding viewBinding;
private NotificationsAdapter notificationsAdapter;
private Activity activity;
private Context context;
private Menu menu;
private int pageCurrentIndex = 1;
private int pageResultLimit;
private String currentFilterMode = "unread";
@@ -68,7 +67,6 @@ public class NotificationsFragment extends Fragment
@Nullable Bundle savedInstanceState) {
viewBinding = FragmentNotificationsBinding.inflate(inflater, container, false);
setHasOptionsMenu(true);
activity = requireActivity();
context = getContext();
@@ -133,37 +131,42 @@ public class NotificationsFragment extends Fragment
loadNotifications(false);
} else {
if (!emptyErrorResponse.isEmpty()) {
if (emptyErrorResponse.contains(
"205")) {
if (emptyErrorResponse != null) {
if (!emptyErrorResponse.isEmpty()) {
if (emptyErrorResponse.contains(
"205")) {
SnackBar.success(
context,
requireActivity()
.findViewById(
android.R.id
.content),
getString(
R.string
.markedNotificationsAsRead));
pageCurrentIndex = 1;
loadNotifications(false);
SnackBar.success(
context,
requireActivity()
.findViewById(
android
.R
.id
.content),
getString(
R.string
.markedNotificationsAsRead));
pageCurrentIndex = 1;
loadNotifications(false);
}
} else {
activity.runOnUiThread(
() ->
SnackBar.error(
context,
requireActivity()
.findViewById(
android
.R
.id
.content),
getString(
R
.string
.genericError)));
}
} else {
activity.runOnUiThread(
() ->
SnackBar.error(
context,
requireActivity()
.findViewById(
android
.R
.id
.content),
getString(
R.string
.genericError)));
}
}
}));
@@ -176,6 +179,73 @@ public class NotificationsFragment extends Fragment
});
loadNotifications(true);
requireActivity()
.addMenuProvider(
new MenuProvider() {
Menu menu;
@Override
public void onCreateMenu(
@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
this.menu = menu;
menuInflater.inflate(R.menu.filter_menu_notifications, menu);
int filterIcon =
currentFilterMode.equalsIgnoreCase("read")
? R.drawable.ic_filter_closed
: R.drawable.ic_filter;
menu.getItem(0).setIcon(filterIcon);
if (currentFilterMode.equalsIgnoreCase("read")) {
viewBinding.markAllAsRead.setVisibility(View.GONE);
} else {
viewBinding.markAllAsRead.setVisibility(View.VISIBLE);
}
}
@Override
public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
if (menu.getItem(0).getItemId() == R.id.filterNotifications) {
BottomSheetNotificationsFilterFragment
bottomSheetNotificationsFilterFragment =
new BottomSheetNotificationsFilterFragment();
bottomSheetNotificationsFilterFragment.show(
getChildFragmentManager(),
"notificationsFilterBottomSheet");
bottomSheetNotificationsFilterFragment.setOnClickListener(
(text) -> {
currentFilterMode = text;
pageCurrentIndex = 1;
loadNotifications(false);
int filterIcon =
currentFilterMode.equalsIgnoreCase("read")
? R.drawable.ic_filter_closed
: R.drawable.ic_filter;
menu.getItem(0).setIcon(filterIcon);
if (currentFilterMode.equalsIgnoreCase("read")) {
viewBinding.markAllAsRead.setVisibility(
View.GONE);
} else {
viewBinding.markAllAsRead.setVisibility(
View.VISIBLE);
}
});
}
return false;
}
},
getViewLifecycleOwner(),
Lifecycle.State.RESUMED);
return viewBinding.getRoot();
}
@@ -216,9 +286,9 @@ public class NotificationsFragment extends Fragment
}
if (!append
|| Objects.requireNonNull(listResponse.get().body())
.size()
> 0) {
|| !Objects.requireNonNull(
listResponse.get().body())
.isEmpty()) {
notificationsAdapter.notifyDataChanged();
}
}
@@ -241,53 +311,6 @@ public class NotificationsFragment extends Fragment
});
}
private void changeFilterMode() {
int filterIcon =
currentFilterMode.equalsIgnoreCase("read")
? R.drawable.ic_filter_closed
: R.drawable.ic_filter;
menu.getItem(0).setIcon(filterIcon);
if (currentFilterMode.equalsIgnoreCase("read")) {
viewBinding.markAllAsRead.setVisibility(View.GONE);
} else {
viewBinding.markAllAsRead.setVisibility(View.VISIBLE);
}
}
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
this.menu = menu;
inflater.inflate(R.menu.filter_menu_notifications, menu);
changeFilterMode();
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == R.id.filterNotifications) {
BottomSheetNotificationsFilterFragment bottomSheetNotificationsFilterFragment =
new BottomSheetNotificationsFilterFragment();
bottomSheetNotificationsFilterFragment.show(
getChildFragmentManager(), "notificationsFilterBottomSheet");
bottomSheetNotificationsFilterFragment.setOnClickListener(
(text) -> {
currentFilterMode = text;
changeFilterMode();
pageCurrentIndex = 1;
loadNotifications(false);
});
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onNotificationClicked(NotificationThread notificationThread) {
@@ -65,7 +65,6 @@ public class OrganizationLabelsFragment extends Fragment {
FragmentLabelsBinding fragmentLabelsBinding =
FragmentLabelsBinding.inflate(inflater, container, false);
setHasOptionsMenu(true);
organizationLabelsViewModel =
new ViewModelProvider(this).get(OrganizationLabelsViewModel.class);
@@ -12,9 +12,12 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import androidx.annotation.NonNull;
import androidx.core.view.MenuProvider;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.Objects;
import org.gitnex.tea4j.v2.models.OrganizationPermissions;
import org.mian.gitnex.R;
import org.mian.gitnex.activities.CreateRepoActivity;
@@ -65,7 +68,6 @@ public class OrganizationRepositoriesFragment extends Fragment {
fragmentRepositoriesBinding =
FragmentRepositoriesBinding.inflate(inflater, container, false);
setHasOptionsMenu(true);
repositoriesViewModel = new ViewModelProvider(this).get(RepositoriesViewModel.class);
resultLimit = Constants.getCurrentResultLimit(getContext());
@@ -102,10 +104,57 @@ public class OrganizationRepositoriesFragment extends Fragment {
Intent intentRepo = new Intent(getContext(), CreateRepoActivity.class);
intentRepo.putExtra("organizationAction", true);
intentRepo.putExtra("orgName", orgName);
intentRepo.putExtras(requireActivity().getIntent().getExtras());
intentRepo.putExtras(
Objects.requireNonNull(requireActivity().getIntent().getExtras()));
startActivity(intentRepo);
});
requireActivity()
.addMenuProvider(
new MenuProvider() {
@Override
public void onCreateMenu(
@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
menuInflater.inflate(R.menu.search_menu, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
androidx.appcompat.widget.SearchView searchView =
(androidx.appcompat.widget.SearchView)
searchItem.getActionView();
assert searchView != null;
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(
new androidx.appcompat.widget.SearchView
.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
if (fragmentRepositoriesBinding.recyclerView
.getAdapter()
!= null) {
adapter.getFilter().filter(newText);
}
return false;
}
});
}
@Override
public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
return false;
}
},
getViewLifecycleOwner(),
Lifecycle.State.RESUMED);
return fragmentRepositoriesBinding.getRoot();
}
@@ -176,32 +225,4 @@ public class OrganizationRepositoriesFragment extends Fragment {
OrganizationDetailActivity.updateOrgFABActions = false;
}
}
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
inflater.inflate(R.menu.search_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
MenuItem searchItem = menu.findItem(R.id.action_search);
androidx.appcompat.widget.SearchView searchView =
(androidx.appcompat.widget.SearchView) searchItem.getActionView();
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(
new androidx.appcompat.widget.SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
if (fragmentRepositoriesBinding.recyclerView.getAdapter() != null) {
adapter.getFilter().filter(newText);
}
return false;
}
});
}
}
@@ -12,9 +12,12 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import androidx.annotation.NonNull;
import androidx.core.view.MenuProvider;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.Objects;
import org.gitnex.tea4j.v2.models.OrganizationPermissions;
import org.gitnex.tea4j.v2.models.Team;
import org.mian.gitnex.R;
@@ -58,7 +61,7 @@ public class OrganizationTeamInfoReposFragment extends Fragment {
FragmentRepositoriesBinding.inflate(inflater, container, false);
resultLimit = Constants.getCurrentResultLimit(getContext());
setHasOptionsMenu(true);
team = (Team) requireArguments().getSerializable("team");
repositoriesViewModel = new ViewModelProvider(this).get(RepositoriesViewModel.class);
@@ -89,7 +92,8 @@ public class OrganizationTeamInfoReposFragment extends Fragment {
(OrganizationPermissions)
requireActivity().getIntent().getSerializableExtra("permissions");
if (!requireArguments().getBoolean("showRepo") || !permissions.isIsOwner()) {
if (!requireArguments().getBoolean("showRepo")
|| !Objects.requireNonNull(permissions).isIsOwner()) {
fragmentRepositoriesBinding.addNewRepo.setVisibility(View.GONE);
}
fragmentRepositoriesBinding.addNewRepo.setOnClickListener(
@@ -102,6 +106,52 @@ public class OrganizationTeamInfoReposFragment extends Fragment {
startActivity(intent);
});
requireActivity()
.addMenuProvider(
new MenuProvider() {
@Override
public void onCreateMenu(
@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
menuInflater.inflate(R.menu.search_menu, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
androidx.appcompat.widget.SearchView searchView =
(androidx.appcompat.widget.SearchView)
searchItem.getActionView();
assert searchView != null;
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(
new androidx.appcompat.widget.SearchView
.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
if (fragmentRepositoriesBinding.recyclerView
.getAdapter()
!= null) {
adapter.getFilter().filter(newText);
}
return false;
}
});
}
@Override
public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
return false;
}
},
getViewLifecycleOwner(),
Lifecycle.State.RESUMED);
return fragmentRepositoriesBinding.getRoot();
}
@@ -170,33 +220,4 @@ public class OrganizationTeamInfoReposFragment extends Fragment {
MainActivity.reloadRepos = false;
}
}
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
inflater.inflate(R.menu.search_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
MenuItem searchItem = menu.findItem(R.id.action_search);
androidx.appcompat.widget.SearchView searchView =
(androidx.appcompat.widget.SearchView) searchItem.getActionView();
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(
new androidx.appcompat.widget.SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
if (fragmentRepositoriesBinding.recyclerView.getAdapter() != null) {
adapter.getFilter().filter(newText);
}
return false;
}
});
}
}
@@ -1,5 +1,6 @@
package org.mian.gitnex.fragments;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
@@ -14,11 +15,14 @@ import android.view.inputmethod.EditorInfo;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.view.MenuProvider;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import java.util.Objects;
import org.gitnex.tea4j.v2.models.OrganizationPermissions;
import org.mian.gitnex.R;
import org.mian.gitnex.activities.CreateTeamByOrgActivity;
@@ -69,7 +73,7 @@ public class OrganizationTeamsFragment extends Fragment {
FragmentOrganizationTeamsBinding fragmentTeamsByOrgBinding =
FragmentOrganizationTeamsBinding.inflate(inflater, container, false);
setHasOptionsMenu(true);
teamsByOrgViewModel = new ViewModelProvider(this).get(TeamsByOrgViewModel.class);
noDataTeams = fragmentTeamsByOrgBinding.noDataTeams;
@@ -105,10 +109,55 @@ public class OrganizationTeamsFragment extends Fragment {
fragmentTeamsByOrgBinding.createTeam.setOnClickListener(
v1 -> {
Intent intentTeam = new Intent(getContext(), CreateTeamByOrgActivity.class);
intentTeam.putExtras(requireActivity().getIntent().getExtras());
intentTeam.putExtras(
Objects.requireNonNull(requireActivity().getIntent().getExtras()));
startActivity(intentTeam);
});
requireActivity()
.addMenuProvider(
new MenuProvider() {
@Override
public void onCreateMenu(
@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
menuInflater.inflate(R.menu.search_menu, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
androidx.appcompat.widget.SearchView searchView =
(androidx.appcompat.widget.SearchView)
searchItem.getActionView();
assert searchView != null;
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(
new androidx.appcompat.widget.SearchView
.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
if (mRecyclerView.getAdapter() != null) {
adapter.getFilter().filter(newText);
}
return false;
}
});
}
@Override
public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
return false;
}
},
getViewLifecycleOwner(),
Lifecycle.State.RESUMED);
return fragmentTeamsByOrgBinding.getRoot();
}
@@ -122,6 +171,7 @@ public class OrganizationTeamsFragment extends Fragment {
}
}
@SuppressLint("NotifyDataSetChanged")
private void fetchDataAsync(String owner) {
teamsByOrgViewModel
@@ -143,32 +193,4 @@ public class OrganizationTeamsFragment extends Fragment {
mProgressBar.setVisibility(View.GONE);
});
}
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
inflater.inflate(R.menu.search_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
MenuItem searchItem = menu.findItem(R.id.action_search);
androidx.appcompat.widget.SearchView searchView =
(androidx.appcompat.widget.SearchView) searchItem.getActionView();
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(
new androidx.appcompat.widget.SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
if (mRecyclerView.getAdapter() != null) {
adapter.getFilter().filter(newText);
}
return false;
}
});
}
}
@@ -14,12 +14,13 @@ import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.widget.RelativeLayout;
import androidx.annotation.NonNull;
import androidx.core.view.MenuProvider;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.ArrayList;
import java.util.List;
import org.gitnex.tea4j.v2.models.Commit;
import org.jetbrains.annotations.NotNull;
import org.mian.gitnex.R;
import org.mian.gitnex.adapters.CommitsAdapter;
import org.mian.gitnex.clients.RetrofitClient;
@@ -108,6 +109,48 @@ public class PullRequestCommitsFragment extends Fragment {
loadInitial(issue, resultLimit);
requireActivity()
.addMenuProvider(
new MenuProvider() {
@Override
public void onCreateMenu(
@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
menuInflater.inflate(R.menu.search_menu, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
androidx.appcompat.widget.SearchView searchView =
(androidx.appcompat.widget.SearchView)
searchItem.getActionView();
assert searchView != null;
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(
new androidx.appcompat.widget.SearchView
.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
filter(newText);
return false;
}
});
}
@Override
public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
return false;
}
},
getViewLifecycleOwner(),
Lifecycle.State.RESUMED);
return binding.getRoot();
}
@@ -142,7 +185,7 @@ public class PullRequestCommitsFragment extends Fragment {
if (response.code() == 200) {
assert response.body() != null;
if (response.body().size() > 0) {
if (!response.body().isEmpty()) {
commitsList.clear();
commitsList.addAll(response.body());
@@ -203,7 +246,7 @@ public class PullRequestCommitsFragment extends Fragment {
List<Commit> result = response.body();
assert result != null;
if (result.size() > 0) {
if (!result.isEmpty()) {
pageSize = result.size();
commitsList.addAll(result);
@@ -230,34 +273,6 @@ public class PullRequestCommitsFragment extends Fragment {
});
}
@Override
public void onCreateOptionsMenu(@NotNull Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.search_menu, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
androidx.appcompat.widget.SearchView searchView =
(androidx.appcompat.widget.SearchView) searchItem.getActionView();
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(
new androidx.appcompat.widget.SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
filter(newText);
return true;
}
});
}
private void filter(String text) {
List<Commit> arr = new ArrayList<>();
@@ -14,7 +14,9 @@ import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.view.MenuProvider;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import java.util.ArrayList;
@@ -41,7 +43,6 @@ public class PullRequestsFragment extends Fragment {
public static boolean resumePullRequests = false;
private final String TAG = "PullRequestFragment";
private FragmentPullRequestsBinding fragmentPullRequestsBinding;
private Menu menu;
private List<PullRequest> prList;
private PullRequestsAdapter adapter;
private Context context;
@@ -64,7 +65,6 @@ public class PullRequestsFragment extends Fragment {
fragmentPullRequestsBinding =
FragmentPullRequestsBinding.inflate(inflater, container, false);
setHasOptionsMenu(true);
context = getContext();
final SwipeRefreshLayout swipeRefresh = fragmentPullRequestsBinding.pullToRefresh;
@@ -113,12 +113,6 @@ public class PullRequestsFragment extends Fragment {
((RepoDetailActivity) requireActivity())
.setFragmentRefreshListenerPr(
prState -> {
if (prState.equals("closed")) {
menu.getItem(1).setIcon(R.drawable.ic_filter_closed);
} else {
menu.getItem(1).setIcon(R.drawable.ic_filter);
}
prList.clear();
adapter = new PullRequestsAdapter(context, prList);
@@ -180,6 +174,55 @@ public class PullRequestsFragment extends Fragment {
fragmentPullRequestsBinding.createPullRequest.setVisibility(View.GONE);
}
requireActivity()
.addMenuProvider(
new MenuProvider() {
@Override
public void onCreateMenu(
@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
menuInflater.inflate(R.menu.search_menu, menu);
menuInflater.inflate(R.menu.filter_menu_pr, menu);
if (repository.getPrState().toString().equals("closed")) {
menu.getItem(1).setIcon(R.drawable.ic_filter_closed);
} else {
menu.getItem(1).setIcon(R.drawable.ic_filter);
}
MenuItem searchItem = menu.findItem(R.id.action_search);
androidx.appcompat.widget.SearchView searchView =
(androidx.appcompat.widget.SearchView)
searchItem.getActionView();
assert searchView != null;
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(
new androidx.appcompat.widget.SearchView
.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
filter(newText);
return false;
}
});
}
@Override
public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
return false;
}
},
getViewLifecycleOwner(),
Lifecycle.State.RESUMED);
return fragmentPullRequestsBinding.getRoot();
}
@@ -226,7 +269,7 @@ public class PullRequestsFragment extends Fragment {
if (response.code() == 200) {
assert response.body() != null;
if (response.body().size() > 0) {
if (!response.body().isEmpty()) {
prList.clear();
prList.addAll(response.body());
adapter.notifyDataChanged();
@@ -285,7 +328,7 @@ public class PullRequestsFragment extends Fragment {
List<PullRequest> result = response.body();
assert result != null;
if (result.size() > 0) {
if (!result.isEmpty()) {
pageSize = result.size();
prList.addAll(result);
} else {
@@ -305,41 +348,6 @@ public class PullRequestsFragment extends Fragment {
});
}
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
this.menu = menu;
inflater.inflate(R.menu.search_menu, menu);
inflater.inflate(R.menu.filter_menu_pr, menu);
super.onCreateOptionsMenu(menu, inflater);
if (repository.getPrState().toString().equals("closed")) {
menu.getItem(1).setIcon(R.drawable.ic_filter_closed);
} else {
menu.getItem(1).setIcon(R.drawable.ic_filter);
}
MenuItem searchItem = menu.findItem(R.id.action_search);
androidx.appcompat.widget.SearchView searchView =
(androidx.appcompat.widget.SearchView) searchItem.getActionView();
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setOnQueryTextListener(
new androidx.appcompat.widget.SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
filter(newText);
return false;
}
});
}
private void filter(String text) {
List<PullRequest> arr = new ArrayList<>();
@@ -11,13 +11,16 @@ import android.os.Looper;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
import androidx.core.view.MenuProvider;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.LinearLayoutManager;
import java.io.IOException;
@@ -121,7 +124,6 @@ public class ReleasesFragment extends Fragment {
fetchDataAsync(repository.getOwner(), repository.getName());
setHasOptionsMenu(true);
((RepoDetailActivity) requireActivity())
.setFragmentRefreshListenerReleases(
type -> {
@@ -149,6 +151,25 @@ public class ReleasesFragment extends Fragment {
startActivity(
repository.getIntent(getContext(), CreateReleaseActivity.class)));
requireActivity()
.addMenuProvider(
new MenuProvider() {
@Override
public void onCreateMenu(
@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
menuInflater.inflate(R.menu.filter_menu_releases, menu);
}
@Override
public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
return false;
}
},
getViewLifecycleOwner(),
Lifecycle.State.RESUMED);
return fragmentReleasesBinding.getRoot();
}
@@ -282,14 +303,14 @@ public class ReleasesFragment extends Fragment {
return -1;
}
@Override
/*@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
if (!((BaseActivity) requireActivity()).getAccount().requiresVersion("1.15.0")) {
return;
}
inflater.inflate(R.menu.filter_menu_releases, menu);
super.onCreateOptionsMenu(menu, inflater);
}
}*/
private void requestFileDownload(String url) {
currentDownloadUrl = url;
@@ -400,8 +421,7 @@ public class ReleasesFragment extends Fragment {
@NonNull Response response)
throws IOException {
if (!response.isSuccessful()
|| response.body() == null) {
if (!response.isSuccessful()) {
onFailure(call, new IOException());
return;
}
@@ -410,8 +430,10 @@ public class ReleasesFragment extends Fragment {
requireContext()
.getContentResolver()
.openOutputStream(
result.getData()
.getData());
Objects
.requireNonNull(
result.getData()
.getData()));
AppUtil.copyProgress(
Objects.requireNonNull(
@@ -51,7 +51,6 @@ public class WikiFragment extends Fragment {
@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
fragmentWikiBinding = FragmentWikiBinding.inflate(inflater, container, false);
setHasOptionsMenu(true);
AccountContext account = ((BaseActivity) requireActivity()).getAccount();
boolean archived = repository.getRepository().isArchived();
+2 -2
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"
@@ -91,4 +91,4 @@
android:textSize="@dimen/dimen20sp"
android:visibility="gone"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</RelativeLayout>
@@ -5,7 +5,7 @@
<item
android:id="@+id/branchCommits"
android:icon="@drawable/ic_commit"
android:orderInCategory="2"
android:orderInCategory="0"
android:title="@string/commitTitle"
app:showAsAction="ifRoom" />