]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/activities/BookmarksActivity.java
Fix Russian plurals. https://redmine.stoutner.com/issues/291
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / activities / BookmarksActivity.java
index 2f6738cd88a9064b02b6d9a405f411b90037d0bc..c822e0e78d1112bf7b94c9dafd786211ac540239 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2016-2017 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
  *
@@ -43,6 +43,7 @@ import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.WindowManager;
 import android.widget.AbsListView;
 import android.widget.CursorAdapter;
 import android.widget.EditText;
@@ -103,6 +104,11 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
+        // Disable screenshots if not allowed.
+        if (!MainWebViewActivity.allowScreenshots) {
+            getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+        }
+
         // Set the activity theme.
         if (MainWebViewActivity.darkTheme) {
             setTheme(R.style.PrivacyBrowserDark_SecondaryActivity);
@@ -130,15 +136,15 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
         final Toolbar bookmarksAppBar = findViewById(R.id.bookmarks_toolbar);
         setSupportActionBar(bookmarksAppBar);
 
-        // Get a handle for the activity, the app bar, and the `ListView`.
+        // Get a handle for the activity, the app bar, and the ListView.
         final Activity bookmarksActivity = this;
         appBar = getSupportActionBar();
         bookmarksListView = findViewById(R.id.bookmarks_listview);
 
-        // This assert removes the incorrect warning in Android Studio on the following line that `appBar` might be null.
+        // Remove the incorrect lint warning that `appBar` might be null.
         assert appBar != null;
 
-        // Display the home arrow on `SupportActionBar`.
+        // Display the home arrow on the app bar.
         appBar.setDisplayHomeAsUpEnabled(true);
 
         // Initialize the database helper.  `this` specifies the context.  The two `nulls` do not specify the database name or a `CursorFactory`.
@@ -264,8 +270,24 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
                     // Update the enabled status of the move icons.
                     updateMoveIcons();
                 } else {  // More than one bookmark is selected.
-                    // List the number of selected bookmarks in the subtitle.
-                    mode.setSubtitle(numberOfSelectedBookmarks + " " + getString(R.string.selected));
+                    // List the number of selected bookmarks according to the language.
+                    if (getString(R.string.android_asset_path).equals("ru")) {  // The Russian translation is used.
+                        // Convert the number of selected bookmarks to a string.
+                        String numberOfSelectedBookmarksString = String.valueOf(numberOfSelectedBookmarks);
+
+                        // Russian follows rule #7 at <https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals>.
+                        if (numberOfSelectedBookmarksString.endsWith("1") && !numberOfSelectedBookmarksString.equals("11")) {  //  Ends in 1.
+                            mode.setSubtitle(numberOfSelectedBookmarks + " " + getString(R.string.selected_russian_ends_in_1));
+                        } else if ((numberOfSelectedBookmarksString.endsWith("2") || numberOfSelectedBookmarksString.endsWith("3") || numberOfSelectedBookmarksString.endsWith("4")) &&
+                                !numberOfSelectedBookmarksString.equals("12") && !numberOfSelectedBookmarksString.equals("13") && !numberOfSelectedBookmarksString.equals("14")) {  // Ends in 2-4.
+                            mode.setSubtitle(numberOfSelectedBookmarks + " " + getString(R.string.selected_russian_ends_in_2));
+                        } else {  // Everything else.
+                            mode.setSubtitle(numberOfSelectedBookmarks + " " + getString(R.string.selected_russian_everything_else));
+                        }
+                    } else {  // Another language is used.
+                        // List the number of selected bookmarks in the subtitle.
+                        mode.setSubtitle(numberOfSelectedBookmarks + " " + getString(R.string.selected));
+                    }
 
                     // Hide non-applicable `MenuItems`.
                     moveBookmarkUpMenuItem.setVisible(false);
@@ -441,11 +463,27 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
                         // Instantiate `snackbarMessage`.
                         String snackbarMessage;
 
-                        // Determine how many items are in the array and prepare an appropriate `Snackbar` message.
+                        // Determine how many items are in the array and prepare an appropriate snackbar message.
                         if (selectedBookmarksIdsLongArray.length == 1) {
                             snackbarMessage = getString(R.string.one_bookmark_deleted);
                         } else {
-                            snackbarMessage = selectedBookmarksIdsLongArray.length + " " + getString(R.string.bookmarks_deleted);
+                            // Prepare a snackbar according to the language.
+                            if (getString(R.string.android_asset_path).equals("ru")) {  // The Russian translation is used.
+                                // Convert the number of selected bookmarks to a string.
+                                String numberOfBookmarksString = String.valueOf(selectedBookmarksIdsLongArray.length);
+
+                                // Russian follows rule #7 at <https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals>.
+                                if (numberOfBookmarksString.endsWith("1") && !numberOfBookmarksString.equals("11")) {  //  Ends in 1.
+                                    snackbarMessage = numberOfBookmarksString + " " + getString(R.string.bookmarks_deleted_russian_ends_in_1);
+                                } else if ((numberOfBookmarksString.endsWith("2") || numberOfBookmarksString.endsWith("3") || numberOfBookmarksString.endsWith("4")) &&
+                                        !numberOfBookmarksString.equals("12") && !numberOfBookmarksString.equals("13") && !numberOfBookmarksString.equals("14")) {  // Ends in 2-4.
+                                    snackbarMessage = numberOfBookmarksString + " " + getString(R.string.bookmarks_deleted_russian_ends_in_2);
+                                } else {  // Everything else.
+                                    snackbarMessage = numberOfBookmarksString + " " + getString(R.string.bookmarks_deleted_russian_everything_else);
+                                }
+                            } else {  // Another language is used.
+                                snackbarMessage = selectedBookmarksIdsLongArray.length + " " + getString(R.string.bookmarks_deleted);
+                            }
                         }
 
                         // Show a SnackBar.