Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)

[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" alt="Get it on F-Droid" height="80">](https://f-droid.org/packages/com.codedead.advancedpassgen/)
[<img src="https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png" alt="Get it on Google Play" height="80">](https://play.google.com/store/apps/details?id=com.codedead.advancedpassgen)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -26,6 +27,8 @@ public class PasswordAdapter extends RecyclerView.Adapter<PasswordViewHolder> {

private final Context context;
private final List<PasswordItem> items;
private boolean displayStrength;
private PasswordViewHolder holder;

/**
* Initialize a new PasswordAdapter
Expand All @@ -35,6 +38,7 @@ public class PasswordAdapter extends RecyclerView.Adapter<PasswordViewHolder> {
public PasswordAdapter(final Context context) {
this.context = context;
this.items = new ArrayList<>();
this.displayStrength = true;
}

/**
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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"));
Expand Down Expand Up @@ -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"));
}
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,6 @@
<string name="automatic_thread_management_summary">Gérer automatiquement les threads pour la génération de mot de passe</string>
<string name="threads">Threads</string>
<string name="threads_summary">Le nombre de threads à utiliser pour la génération de mot de passe</string>
<string name="display_password_strength">Afficher la force du mot de passe</string>
<string name="display_password_strength_summary">Afficher la force du mot de passe généré dans la liste</string>
</resources>
2 changes: 2 additions & 0 deletions app/src/main/res/values-nl/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,6 @@
<string name="automatic_thread_management_summary">Automatisch beheer van threading voor wachtwoordgeneratie</string>
<string name="threads">Threads</string>
<string name="threads_summary">Het aantal threads dat moet worden gebruikt voor wachtwoordgeneratie</string>
<string name="display_password_strength">Toon wachtwoordsterkte</string>
<string name="display_password_strength_summary">Toon de sterkte van het gegenereerde wachtwoord in de lijst</string>
</resources>
2 changes: 2 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,6 @@
<string name="automatic_thread_management_summary">Automatically manage threading for password generation</string>
<string name="threads">Threads</string>
<string name="threads_summary">The amount of threads to use for password generation</string>
<string name="display_password_strength">Display password strength</string>
<string name="display_password_strength_summary">Display the strength of the generated password in the list</string>
</resources>
6 changes: 6 additions & 0 deletions app/src/main/res/xml/root_preferences.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@
app:summary="@string/applanguage_summary"
app:title="@string/application_languages" />

<SwitchPreferenceCompat
app:defaultValue="true"
app:key="showPasswordStrength"
app:summary="@string/display_password_strength_summary"
app:title="@string/display_password_strength" />

<SwitchPreferenceCompat
android:disableDependentsState="true"
app:defaultValue="true"
Expand Down
Loading