From 88fbf1a0de5e61d4d0ae5d2d39065e45e66a24b9 Mon Sep 17 00:00:00 2001 From: Patrick Schneider Date: Thu, 9 Jan 2025 16:41:19 +0100 Subject: [PATCH 1/5] [fix] temporarily deactivate the 16x16 and easy/moderate game modes. --- .../controller/GeneratorService.java | 4 ++++ .../privacyfriendlysudoku/ui/MainActivity.java | 14 +++++++++++++- app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/secuso/privacyfriendlysudoku/controller/GeneratorService.java b/app/src/main/java/org/secuso/privacyfriendlysudoku/controller/GeneratorService.java index 62044b3e..1637c25e 100644 --- a/app/src/main/java/org/secuso/privacyfriendlysudoku/controller/GeneratorService.java +++ b/app/src/main/java/org/secuso/privacyfriendlysudoku/controller/GeneratorService.java @@ -81,6 +81,10 @@ private void buildGenerationList() { for(GameType validType : GameType.getValidGameTypes()) { for(GameDifficulty validDifficulty : GameDifficulty.getValidDifficultyList()) { + // currently it's extremely unlikely to generate 16x16 easier than hard + if (validType.equals(GameType.Default_16x16) && (validDifficulty.equals(GameDifficulty.Easy) || validDifficulty.equals(GameDifficulty.Moderate))) { + continue; + } int levelCount = dbHelper.getLevels(validDifficulty, validType).size(); Log.d(TAG, "\tType: "+ validType.name() + " Difficulty: " + validDifficulty.name() + "\t: " + levelCount); // add the missing levels to the list diff --git a/app/src/main/java/org/secuso/privacyfriendlysudoku/ui/MainActivity.java b/app/src/main/java/org/secuso/privacyfriendlysudoku/ui/MainActivity.java index 0b54dc9e..30b0bf50 100644 --- a/app/src/main/java/org/secuso/privacyfriendlysudoku/ui/MainActivity.java +++ b/app/src/main/java/org/secuso/privacyfriendlysudoku/ui/MainActivity.java @@ -167,11 +167,23 @@ public void onPageScrollStateChanged(int state) { @Override public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { createGameBar.setChecked(false); - ((Button) findViewById(R.id.playButton)).setText(R.string.new_game); + Button button = findViewById(R.id.playButton); + button.setText(R.string.new_game); if (rating >= 1) { + if (GameType.getValidGameTypes().get(mViewPager.getCurrentItem()) == GameType.Default_16x16 && rating <= 2) { + button.setEnabled(false); + button.setText(R.string.game_config_unsupported); + button.setBackgroundResource(R.drawable.button_inactive); + } else { + button.setEnabled(true); + button.setText(R.string.new_game); + button.setBackgroundResource(R.drawable.button_standalone); + } difficultyText.setText(getString(difficultyList.get((int) ratingBar.getRating() - 1).getStringResID())); } else { + button.setEnabled(true); + button.setBackgroundResource(R.drawable.button_standalone); difficultyText.setText(R.string.difficulty_custom); createGameBar.setChecked(true); ((Button)findViewById(R.id.playButton)).setText(R.string.create_game); diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index b0c636eb..0e41a956 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -129,5 +129,6 @@ Verifizierung abgeschlossen! Verifizierung fehlgeschlagen: Dein Sudoku kann nicht gelöst werden. Zeit deaktivieren + Diese Spielkombination ist momentan nicht unterstützt. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8939e4f8..5b2e1c10 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -204,5 +204,6 @@ Only download attachments when manually requested Sudoku 16x16 + This game combination is currently not supported. From b35faf00fd1cc079c558f70b96ade7c23a37cc7b Mon Sep 17 00:00:00 2001 From: Patrick Schneider Date: Thu, 9 Jan 2025 16:41:45 +0100 Subject: [PATCH 2/5] [fix] fix pref_deactivate_timer_summary in german. --- app/src/main/res/values-de/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 0e41a956..05b23de0 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -89,7 +89,7 @@ Löscht das ausgewählte Feld Löschen Privatsphäre Information - Zeit deaktivieren + Deaktiviere die Zeitmessung beim Spielen. Spiele ohne Zeitmessung werden nicht in die Statistiken aufgenommen. Zeit zurücksetzen Beim zurücksetzen des Spielfeldes wird die Zeit auch zurückgesetzt. Okay From 28a1992c6e839a783ebe8365319b216d9eb6eadc Mon Sep 17 00:00:00 2001 From: Patrick Schneider Date: Thu, 9 Jan 2025 17:53:21 +0100 Subject: [PATCH 3/5] [feat] shows how many levels are available for each game/difficulty. --- .../controller/NewLevelManager.java | 3 +++ .../ui/MainActivity.java | 20 ++++++++++++++++++- .../main/res/layout/activity_main_menu.xml | 6 ++++++ app/src/main/res/values-de/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/secuso/privacyfriendlysudoku/controller/NewLevelManager.java b/app/src/main/java/org/secuso/privacyfriendlysudoku/controller/NewLevelManager.java index 32d23ac1..24ffbb45 100644 --- a/app/src/main/java/org/secuso/privacyfriendlysudoku/controller/NewLevelManager.java +++ b/app/src/main/java/org/secuso/privacyfriendlysudoku/controller/NewLevelManager.java @@ -77,6 +77,9 @@ private NewLevelManager(Context context, SharedPreferences settings) { public boolean isLevelLoadable(GameType type, GameDifficulty diff) { return dbHelper.getLevels(diff, type).size() > 0; } + public int getCountAvailableLevels(GameType type, GameDifficulty diff) { + return dbHelper.getLevels(diff, type).size(); + } @Deprecated public boolean isLevelLoadableOld(GameType type, GameDifficulty diff) { diff --git a/app/src/main/java/org/secuso/privacyfriendlysudoku/ui/MainActivity.java b/app/src/main/java/org/secuso/privacyfriendlysudoku/ui/MainActivity.java index 30b0bf50..31ecd6f1 100644 --- a/app/src/main/java/org/secuso/privacyfriendlysudoku/ui/MainActivity.java +++ b/app/src/main/java/org/secuso/privacyfriendlysudoku/ui/MainActivity.java @@ -147,6 +147,12 @@ public void onPageScrolled(int position, float positionOffset, int positionOffse public void onPageSelected(int position) { arrowLeft.setVisibility((position==0)?View.INVISIBLE:View.VISIBLE); arrowRight.setVisibility((position==mSectionsPagerAdapter.getCount()-1)?View.INVISIBLE:View.VISIBLE); + + GameType gameType = GameType.getValidGameTypes().get(mViewPager.getCurrentItem()); + int index = difficultyBar.getProgress()-1; + GameDifficulty gameDifficulty = GameDifficulty.getValidDifficultyList().get(index < 0 ? 0 : index); + ((TextView) findViewById(R.id.level_count)) + .setText(String.format(getString(R.string.levels_available), newLevelManager.getCountAvailableLevels(gameType, gameDifficulty))); } @Override @@ -171,7 +177,10 @@ public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) button.setText(R.string.new_game); if (rating >= 1) { - if (GameType.getValidGameTypes().get(mViewPager.getCurrentItem()) == GameType.Default_16x16 && rating <= 2) { + GameType gameType = GameType.getValidGameTypes().get(mViewPager.getCurrentItem()); + int index = difficultyBar.getProgress()-1; + GameDifficulty gameDifficulty = GameDifficulty.getValidDifficultyList().get(index < 0 ? 0 : index); + if (gameType == GameType.Default_16x16 && rating <= 2) { button.setEnabled(false); button.setText(R.string.game_config_unsupported); button.setBackgroundResource(R.drawable.button_inactive); @@ -180,6 +189,10 @@ public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) button.setText(R.string.new_game); button.setBackgroundResource(R.drawable.button_standalone); } + + ((TextView) findViewById(R.id.level_count)) + .setText(String.format(getString(R.string.levels_available), newLevelManager.getCountAvailableLevels(gameType, gameDifficulty))); + difficultyText.setText(getString(difficultyList.get((int) ratingBar.getRating() - 1).getStringResID())); } else { button.setEnabled(true); @@ -191,6 +204,11 @@ public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) } }); + GameType gameType = GameType.getValidGameTypes().get(mViewPager.getCurrentItem()); + GameDifficulty gameDifficulty = GameDifficulty.getValidDifficultyList().get(index < 0 ? 0 : index); + ((TextView) findViewById(R.id.level_count)) + .setText(String.format(getString(R.string.levels_available), newLevelManager.getCountAvailableLevels(gameType, gameDifficulty))); + createGameBar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/app/src/main/res/layout/activity_main_menu.xml b/app/src/main/res/layout/activity_main_menu.xml index 39c22732..865033ee 100644 --- a/app/src/main/res/layout/activity_main_menu.xml +++ b/app/src/main/res/layout/activity_main_menu.xml @@ -100,6 +100,12 @@ android:layout_width="wrap_content" android:text="@string/difficulty_easy" android:textSize="@dimen/main_text_difficulty"/> + Verifizierung fehlgeschlagen: Dein Sudoku kann nicht gelöst werden. Zeit deaktivieren Diese Spielkombination ist momentan nicht unterstützt. + Levels verfügbar: %s diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5b2e1c10..1433c402 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -205,5 +205,6 @@ Only download attachments when manually requested Sudoku 16x16 This game combination is currently not supported. + Levels available: %s From d76865b266be46da7a9b555f347c25a6c8df4205 Mon Sep 17 00:00:00 2001 From: Patrick Schneider Date: Thu, 9 Jan 2025 17:53:36 +0100 Subject: [PATCH 4/5] [update] increases version. --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8f24f1c4..2e1a9b5f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "org.secuso.privacyfriendlysudoku" minSdkVersion 17 targetSdkVersion 34 - versionCode 16 - versionName "3.2.1" + versionCode 17 + versionName "3.2.2" vectorDrawables.useSupportLibrary = true multiDexEnabled = true } From 1e37cb6c81b3325c0240d5dbbd63360243aead24 Mon Sep 17 00:00:00 2001 From: Patrick Schneider Date: Thu, 9 Jan 2025 18:01:16 +0100 Subject: [PATCH 5/5] [fix] format string. --- app/src/main/res/values-de/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 261e8bda..9b3b6df2 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -130,6 +130,6 @@ Verifizierung fehlgeschlagen: Dein Sudoku kann nicht gelöst werden. Zeit deaktivieren Diese Spielkombination ist momentan nicht unterstützt. - Levels verfügbar: %s + Levels verfügbar: %d diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1433c402..bb6ab1ea 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -205,6 +205,6 @@ Only download attachments when manually requested Sudoku 16x16 This game combination is currently not supported. - Levels available: %s + Levels available: %d