From 51b90310d7246ccce9e51954b17cb0666059c6df Mon Sep 17 00:00:00 2001 From: M M Arif Date: Fri, 8 Sep 2023 10:30:00 +0500 Subject: [PATCH] Fix link to APK builds, add search to repo watchers and stargazors --- README.md | 2 +- .../activities/RepoStargazersActivity.java | 89 ++++++++++++++----- .../activities/RepoWatchersActivity.java | 88 +++++++++++++----- .../gitnex/adapters/PullRequestsAdapter.java | 8 +- app/src/main/res/layout/list_pr.xml | 8 +- 5 files changed, 141 insertions(+), 54 deletions(-) diff --git a/README.md b/README.md index 6aa594e6..bc8be288 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ GitNex is licensed under the GPLv3 License. Please refer to the LICENSE file for [Get it on F-Droid](https://f-droid.org/en/packages/org.mian.gitnex/) [Get it on Google Play](https://play.google.com/store/apps/details?id=org.mian.gitnex.pro) -[Download builds and releases](https://cloud.swatian.com/s/DN7E5xxtaw4fRbE) +[Download builds and releases](https://cloud.swatian.com/s/WS4k3seXnmfQppo) ## Note about Forgejo and Gitea version diff --git a/app/src/main/java/org/mian/gitnex/activities/RepoStargazersActivity.java b/app/src/main/java/org/mian/gitnex/activities/RepoStargazersActivity.java index 0b36c9c6..ea5de6af 100644 --- a/app/src/main/java/org/mian/gitnex/activities/RepoStargazersActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/RepoStargazersActivity.java @@ -1,15 +1,19 @@ package org.mian.gitnex.activities; import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.ProgressBar; -import android.widget.TextView; +import android.view.inputmethod.EditorInfo; +import androidx.appcompat.widget.SearchView; import androidx.lifecycle.ViewModelProvider; import org.mian.gitnex.R; import org.mian.gitnex.adapters.UserGridAdapter; import org.mian.gitnex.databinding.ActivityRepoStargazersBinding; +import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.contexts.RepositoryContext; import org.mian.gitnex.viewmodels.RepoStargazersViewModel; @@ -18,37 +22,30 @@ import org.mian.gitnex.viewmodels.RepoStargazersViewModel; */ public class RepoStargazersActivity extends BaseActivity { - private TextView noDataStargazers; private View.OnClickListener onClickListener; private UserGridAdapter adapter; - private GridView mGridView; - private ProgressBar mProgressBar; - + private Boolean searchFilter = false; private RepositoryContext repository; + private ActivityRepoStargazersBinding activityRepoStargazersBinding; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ActivityRepoStargazersBinding activityRepoStargazersBinding = - ActivityRepoStargazersBinding.inflate(getLayoutInflater()); + activityRepoStargazersBinding = ActivityRepoStargazersBinding.inflate(getLayoutInflater()); setContentView(activityRepoStargazersBinding.getRoot()); - ImageView closeActivity = activityRepoStargazersBinding.close; - TextView toolbarTitle = activityRepoStargazersBinding.toolbarTitle; - noDataStargazers = activityRepoStargazersBinding.noDataStargazers; - mGridView = activityRepoStargazersBinding.gridView; - mProgressBar = activityRepoStargazersBinding.progressBar; + setSupportActionBar(activityRepoStargazersBinding.toolbar); repository = RepositoryContext.fromIntent(getIntent()); final String repoOwner = repository.getOwner(); final String repoName = repository.getName(); initCloseListener(); - closeActivity.setOnClickListener(onClickListener); + activityRepoStargazersBinding.close.setOnClickListener(onClickListener); - toolbarTitle.setText(R.string.repoStargazersInMenu); + activityRepoStargazersBinding.toolbarTitle.setText(R.string.repoStargazersInMenu); fetchDataAsync(repoOwner, repoName); } @@ -67,16 +64,19 @@ public class RepoStargazersActivity extends BaseActivity { if (adapter.getCount() > 0) { - mGridView.setAdapter(adapter); - noDataStargazers.setVisibility(View.GONE); + activityRepoStargazersBinding.gridView.setAdapter(adapter); + activityRepoStargazersBinding.noDataStargazers.setVisibility( + View.GONE); + searchFilter = true; } else { adapter.notifyDataSetChanged(); - mGridView.setAdapter(adapter); - noDataStargazers.setVisibility(View.VISIBLE); + activityRepoStargazersBinding.gridView.setAdapter(adapter); + activityRepoStargazersBinding.noDataStargazers.setVisibility( + View.VISIBLE); } - mProgressBar.setVisibility(View.GONE); + activityRepoStargazersBinding.progressBar.setVisibility(View.GONE); }); } @@ -90,4 +90,49 @@ public class RepoStargazersActivity extends BaseActivity { super.onResume(); repository.checkAccountSwitch(this); } + + @Override + public boolean onCreateOptionsMenu(final Menu menu) { + + final MenuInflater inflater = getMenuInflater(); + + new Handler(Looper.getMainLooper()) + .postDelayed( + () -> { + if (searchFilter) { + + boolean connToInternet = AppUtil.hasNetworkConnection(appCtx); + + inflater.inflate(R.menu.search_menu, menu); + + MenuItem searchItem = menu.findItem(R.id.action_search); + SearchView searchView = (SearchView) searchItem.getActionView(); + searchView.setImeOptions(EditorInfo.IME_ACTION_DONE); + + if (!connToInternet) { + return; + } + + searchView.setOnQueryTextListener( + new androidx.appcompat.widget.SearchView + .OnQueryTextListener() { + + @Override + public boolean onQueryTextSubmit(String query) { + return true; + } + + @Override + public boolean onQueryTextChange(String newText) { + + adapter.getFilter().filter(newText); + return false; + } + }); + } + }, + 500); + + return true; + } } diff --git a/app/src/main/java/org/mian/gitnex/activities/RepoWatchersActivity.java b/app/src/main/java/org/mian/gitnex/activities/RepoWatchersActivity.java index a684b8bc..4228c609 100644 --- a/app/src/main/java/org/mian/gitnex/activities/RepoWatchersActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/RepoWatchersActivity.java @@ -1,15 +1,19 @@ package org.mian.gitnex.activities; import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; -import android.widget.GridView; -import android.widget.ImageView; -import android.widget.ProgressBar; -import android.widget.TextView; +import android.view.inputmethod.EditorInfo; +import androidx.appcompat.widget.SearchView; import androidx.lifecycle.ViewModelProvider; import org.mian.gitnex.R; import org.mian.gitnex.adapters.UserGridAdapter; import org.mian.gitnex.databinding.ActivityRepoWatchersBinding; +import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.contexts.RepositoryContext; import org.mian.gitnex.viewmodels.RepoWatchersViewModel; @@ -18,12 +22,10 @@ import org.mian.gitnex.viewmodels.RepoWatchersViewModel; */ public class RepoWatchersActivity extends BaseActivity { - private TextView noDataWatchers; private View.OnClickListener onClickListener; private UserGridAdapter adapter; - private GridView mGridView; - private ProgressBar mProgressBar; - + private Boolean searchFilter = false; + private ActivityRepoWatchersBinding activityRepoWatchersBinding; private RepositoryContext repository; @Override @@ -31,24 +33,19 @@ public class RepoWatchersActivity extends BaseActivity { super.onCreate(savedInstanceState); - ActivityRepoWatchersBinding activityRepoWatchersBinding = - ActivityRepoWatchersBinding.inflate(getLayoutInflater()); + activityRepoWatchersBinding = ActivityRepoWatchersBinding.inflate(getLayoutInflater()); setContentView(activityRepoWatchersBinding.getRoot()); - ImageView closeActivity = activityRepoWatchersBinding.close; - TextView toolbarTitle = activityRepoWatchersBinding.toolbarTitle; - noDataWatchers = activityRepoWatchersBinding.noDataWatchers; - mGridView = activityRepoWatchersBinding.gridView; - mProgressBar = activityRepoWatchersBinding.progressBar; + setSupportActionBar(activityRepoWatchersBinding.toolbar); repository = RepositoryContext.fromIntent(getIntent()); final String repoOwner = repository.getOwner(); final String repoName = repository.getName(); initCloseListener(); - closeActivity.setOnClickListener(onClickListener); + activityRepoWatchersBinding.close.setOnClickListener(onClickListener); - toolbarTitle.setText(R.string.repoWatchersInMenu); + activityRepoWatchersBinding.toolbarTitle.setText(R.string.repoWatchersInMenu); fetchDataAsync(repoOwner, repoName); } @@ -67,16 +64,18 @@ public class RepoWatchersActivity extends BaseActivity { if (adapter.getCount() > 0) { - mGridView.setAdapter(adapter); - noDataWatchers.setVisibility(View.GONE); + activityRepoWatchersBinding.gridView.setAdapter(adapter); + activityRepoWatchersBinding.noDataWatchers.setVisibility(View.GONE); + searchFilter = true; } else { adapter.notifyDataSetChanged(); - mGridView.setAdapter(adapter); - noDataWatchers.setVisibility(View.VISIBLE); + activityRepoWatchersBinding.gridView.setAdapter(adapter); + activityRepoWatchersBinding.noDataWatchers.setVisibility( + View.VISIBLE); } - mProgressBar.setVisibility(View.GONE); + activityRepoWatchersBinding.progressBar.setVisibility(View.GONE); }); } @@ -90,4 +89,49 @@ public class RepoWatchersActivity extends BaseActivity { super.onResume(); repository.checkAccountSwitch(this); } + + @Override + public boolean onCreateOptionsMenu(final Menu menu) { + + final MenuInflater inflater = getMenuInflater(); + + new Handler(Looper.getMainLooper()) + .postDelayed( + () -> { + if (searchFilter) { + + boolean connToInternet = AppUtil.hasNetworkConnection(appCtx); + + inflater.inflate(R.menu.search_menu, menu); + + MenuItem searchItem = menu.findItem(R.id.action_search); + SearchView searchView = (SearchView) searchItem.getActionView(); + searchView.setImeOptions(EditorInfo.IME_ACTION_DONE); + + if (!connToInternet) { + return; + } + + searchView.setOnQueryTextListener( + new androidx.appcompat.widget.SearchView + .OnQueryTextListener() { + + @Override + public boolean onQueryTextSubmit(String query) { + return true; + } + + @Override + public boolean onQueryTextChange(String newText) { + + adapter.getFilter().filter(newText); + return false; + } + }); + } + }, + 500); + + return true; + } } diff --git a/app/src/main/java/org/mian/gitnex/adapters/PullRequestsAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/PullRequestsAdapter.java index 7f2b7e57..7fab2a24 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/PullRequestsAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/PullRequestsAdapter.java @@ -298,10 +298,10 @@ public class PullRequestsAdapter extends RecyclerView.Adapter