From bcf8403dd2e37b02da8871592023fd3b4920f12c Mon Sep 17 00:00:00 2001 From: CodeDead Date: Fri, 21 Mar 2025 16:30:24 +0100 Subject: [PATCH 1/2] feat: added github actions workflow, added setting to disable the strength indicator --- .github/workflows/test.yml | 33 +++++++++++++++++++ .../domain/PasswordAdapter.java | 28 ++++++++++++++++ .../advancedpassgen/ui/home/HomeFragment.java | 8 +++-- app/src/main/res/values-fr/strings.xml | 2 ++ app/src/main/res/values-nl/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/root_preferences.xml | 6 ++++ 7 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..5b6aca7 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,33 @@ +name: Test + +on: + pull_request: + branches: + - master + - development + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Setup JDK 17 + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '17' + cache: 'gradle' + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Test + run: ./gradlew test + + - name: Build + run: ./gradlew build diff --git a/app/src/main/java/com/codedead/advancedpassgen/domain/PasswordAdapter.java b/app/src/main/java/com/codedead/advancedpassgen/domain/PasswordAdapter.java index e26cca0..0671cc2 100644 --- a/app/src/main/java/com/codedead/advancedpassgen/domain/PasswordAdapter.java +++ b/app/src/main/java/com/codedead/advancedpassgen/domain/PasswordAdapter.java @@ -9,6 +9,7 @@ import android.os.Build; import android.os.PersistableBundle; import android.view.LayoutInflater; +import android.view.View; import android.view.ViewGroup; import android.widget.Toast; @@ -26,6 +27,8 @@ public class PasswordAdapter extends RecyclerView.Adapter { private final Context context; private final List items; + private boolean displayStrength; + private PasswordViewHolder holder; /** * Initialize a new PasswordAdapter @@ -35,6 +38,7 @@ public class PasswordAdapter extends RecyclerView.Adapter { public PasswordAdapter(final Context context) { this.context = context; this.items = new ArrayList<>(); + this.displayStrength = true; } /** @@ -88,11 +92,18 @@ public PasswordViewHolder onCreateViewHolder(@NonNull final ViewGroup parent, fi */ @Override public void onBindViewHolder(@NonNull final PasswordViewHolder holder, final int position) { + this.holder = holder; final PasswordItem item = items.get(position); holder.getPasswordTextView().setText(item.password()); holder.getStrengthProgressBar().setProgress(item.strength()); + if (displayStrength) { + holder.getStrengthProgressBar().setVisibility(View.VISIBLE); + } else { + holder.getStrengthProgressBar().setVisibility(View.GONE); + } + if (item.strength() == 100) { DrawableCompat.setTint(holder.getStrengthProgressBar().getProgressDrawable(), Color.GREEN); } else if (item.strength() <= 35) { @@ -134,4 +145,21 @@ public void onBindViewHolder(@NonNull final PasswordViewHolder holder, final int public int getItemCount() { return items.size(); } + + /** + * Set the display strength setting + * + * @param displayStrength The display strength setting + */ + public void setDisplayStrength(final boolean displayStrength) { + this.displayStrength = displayStrength; + + if (holder != null) { + if (displayStrength) { + holder.getStrengthProgressBar().setVisibility(View.VISIBLE); + } else { + holder.getStrengthProgressBar().setVisibility(View.GONE); + } + } + } } diff --git a/app/src/main/java/com/codedead/advancedpassgen/ui/home/HomeFragment.java b/app/src/main/java/com/codedead/advancedpassgen/ui/home/HomeFragment.java index d9fdbd5..4583ea2 100644 --- a/app/src/main/java/com/codedead/advancedpassgen/ui/home/HomeFragment.java +++ b/app/src/main/java/com/codedead/advancedpassgen/ui/home/HomeFragment.java @@ -45,13 +45,16 @@ public View onCreateView(@NonNull final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) { binding = FragmentHomeBinding.inflate(inflater, container, false); - View root = binding.getRoot(); + sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext()); + + final View root = binding.getRoot(); binding.swipeRefresh.setOnRefreshListener(this); binding.textHome.setOnRefreshListener(this); final RecyclerView recyclerView = binding.recyclerView; adapter = new PasswordAdapter(requireContext()); + adapter.setDisplayStrength(sharedPreferences.getBoolean("showPasswordStrength", true)); recyclerView.setLayoutManager(new LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)); recyclerView.setAdapter(adapter); @@ -82,8 +85,6 @@ public View onCreateView(@NonNull final LayoutInflater inflater, }); binding.fabRefresh.setOnClickListener(view -> refreshPasswords()); - - sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext()); customCharacterSet = sharedPreferences.getString("customCharacterSet", ""); minimumLength = Integer.parseInt(sharedPreferences.getString("minimumLength", "8")); maximumLength = Integer.parseInt(sharedPreferences.getString("maximumLength", "30")); @@ -174,6 +175,7 @@ public void onResume() { specialCharacters = sharedPreferences.getBoolean("specialCharacters", true); numbers = sharedPreferences.getBoolean("numbers", true); brackets = sharedPreferences.getBoolean("brackets", false); + adapter.setDisplayStrength(sharedPreferences.getBoolean("showPasswordStrength", true)); if (!sharedPreferences.getBoolean("automaticThreading", true)) { poolSize = Integer.parseInt(sharedPreferences.getString("poolSize", "1")); } diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 8e32076..2a78631 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -57,4 +57,6 @@ Gérer automatiquement les threads pour la génération de mot de passe Threads Le nombre de threads à utiliser pour la génération de mot de passe + Afficher la force du mot de passe + Afficher la force du mot de passe généré dans la liste diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index b2ad60a..a9d4c60 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -57,4 +57,6 @@ Automatisch beheer van threading voor wachtwoordgeneratie Threads Het aantal threads dat moet worden gebruikt voor wachtwoordgeneratie + Toon wachtwoordsterkte + Toon de sterkte van het gegenereerde wachtwoord in de lijst diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9edf9b8..9104dd5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -56,4 +56,6 @@ Automatically manage threading for password generation Threads The amount of threads to use for password generation + Display password strength + Display the strength of the generated password in the list diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index 94f2b28..ac6e2f3 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -13,6 +13,12 @@ app:summary="@string/applanguage_summary" app:title="@string/application_languages" /> + + Date: Fri, 21 Mar 2025 16:33:40 +0100 Subject: [PATCH 2/2] feat: added actions tag --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 06befd1..894e2bd 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ ![GitHub release (latest by date)](https://img.shields.io/github/v/release/CodeDead/advanced-passgen-android) ![GitHub](https://img.shields.io/badge/language-Java-green) ![GitHub](https://img.shields.io/github/license/CodeDead/advanced-passgen-android) +[![Test](https://github.com/CodeDead/advanced-passgen-android/actions/workflows/test.yml/badge.svg)](https://github.com/CodeDead/advanced-passgen-android/actions/workflows/test.yml) [Get it on F-Droid](https://f-droid.org/packages/com.codedead.advancedpassgen/) [Get it on Google Play](https://play.google.com/store/apps/details?id=com.codedead.advancedpassgen)