From: Soren Stoutner <soren@stoutner.com> Date: Fri, 22 Sep 2017 16:27:11 +0000 (-0700) Subject: Speed up the moving of bookmarks. https://redmine.stoutner.com/issues/48. X-Git-Tag: v2.7~23 X-Git-Url: https://gitweb.stoutner.com/?a=commitdiff_plain;h=398b393f577ac8fb0f08c4ce770d6e064592afd7;p=PrivacyBrowserAndroid.git Speed up the moving of bookmarks. https://redmine.stoutner.com/issues/48. --- diff --git a/app/src/main/assets/de/about_changelog_dark.html b/app/src/main/assets/de/about_changelog_dark.html index 9c62d7c3..d83d5748 100644 --- a/app/src/main/assets/de/about_changelog_dark.html +++ b/app/src/main/assets/de/about_changelog_dark.html @@ -30,7 +30,7 @@ <body> <h3>2.6 (version code 26)</h3> - <p>18. September 2017 - Mindest-API 19, Ziel-API 25</p> + <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ecd1f67963852c0523c42ce1326b78cb7a71f053">18. September 2017</a> - Mindest-API 19, Ziel-API 25</p> <ul> <li>Add <a href="https://redmine.stoutner.com/issues/145">night mode rendering</a>.</li> <li>Update the dark theme rendering of the <a href="https://redmine.stoutner.com/issues/150">About and Guide sections</a>.</li> diff --git a/app/src/main/assets/de/about_changelog_light.html b/app/src/main/assets/de/about_changelog_light.html index 7939dea7..3f10b8d0 100644 --- a/app/src/main/assets/de/about_changelog_light.html +++ b/app/src/main/assets/de/about_changelog_light.html @@ -30,7 +30,7 @@ <body> <h3>2.6 (version code 26)</h3> - <p>18. September 2017 - Mindest-API 19, Ziel-API 25</p> + <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ecd1f67963852c0523c42ce1326b78cb7a71f053">18. September 2017</a> - Mindest-API 19, Ziel-API 25</p> <ul> <li>Add <a href="https://redmine.stoutner.com/issues/145">night mode rendering</a>.</li> <li>Update the dark theme rendering of the <a href="https://redmine.stoutner.com/issues/150">About and Guide sections</a>.</li> diff --git a/app/src/main/assets/en/about_changelog_dark.html b/app/src/main/assets/en/about_changelog_dark.html index d78d63a0..5356ac46 100644 --- a/app/src/main/assets/en/about_changelog_dark.html +++ b/app/src/main/assets/en/about_changelog_dark.html @@ -25,7 +25,7 @@ <body> <h3>2.6 (version code 26)</h3> - <p>18 September 2017 - minimum API 19, target API 25</p> + <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ecd1f67963852c0523c42ce1326b78cb7a71f053">18 September 2017</a> - minimum API 19, target API 25</p> <ul> <li>Add <a href="https://redmine.stoutner.com/issues/145">night mode rendering</a>.</li> <li>Update the dark theme rendering of the <a href="https://redmine.stoutner.com/issues/150">About and Guide sections</a>.</li> diff --git a/app/src/main/assets/en/about_changelog_light.html b/app/src/main/assets/en/about_changelog_light.html index 147473bd..938135e2 100644 --- a/app/src/main/assets/en/about_changelog_light.html +++ b/app/src/main/assets/en/about_changelog_light.html @@ -25,7 +25,7 @@ <body> <h3>2.6 (version code 26)</h3> - <p>18 September 2017 - minimum API 19, target API 25</p> + <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ecd1f67963852c0523c42ce1326b78cb7a71f053">18 September 2017</a> - minimum API 19, target API 25</p> <ul> <li>Add <a href="https://redmine.stoutner.com/issues/145">night mode rendering</a>.</li> <li>Update the dark theme rendering of the <a href="https://redmine.stoutner.com/issues/150">About and Guide sections</a>.</li> diff --git a/app/src/main/assets/es/about_changelog_dark.html b/app/src/main/assets/es/about_changelog_dark.html index c2792b7c..8d7febbc 100644 --- a/app/src/main/assets/es/about_changelog_dark.html +++ b/app/src/main/assets/es/about_changelog_dark.html @@ -27,12 +27,12 @@ <body> <h3>2.6 (código de versión 26)</h3> - <p>18 de septiembre de 2017 - API mÃnimo 19, API dirigido 25</p> + <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ecd1f67963852c0523c42ce1326b78cb7a71f053">18 de septiembre de 2017</a> - API mÃnimo 19, API dirigido 25</p> <ul> - <li>Añadir <a href="https:/ight /redmine.stoutner.com/issues/145">renderizado en modo nocturno</a>.</li> - <li>Actualizar el renderizado del tema oscuro de las<a href="https://redmine.stoutner.com/issues/150">secciones Acerca de y GuÃa</a></li> - <li>Añadir soporte para <a href="https://redmine.stoutner.com/issues/52">autenticación HTTP </a>.</li> - <li><a href="https://redmine.stoutner.com/issues/178">Colorear el Nombre Común</a>en el cuadro de diálogo Ver certificado SSL.</li> + <li>Añadir <a href="https://redmine.stoutner.com/issues/145">renderizado en modo nocturno</a>.</li> + <li>Actualizar el renderizado del tema oscuro de las <a href="https://redmine.stoutner.com/issues/150">secciones Acerca de y GuÃa</a>.</li> + <li>Añadir soporte para <a href="https://redmine.stoutner.com/issues/52">autenticación HTTP</a>.</li> + <li><a href="https://redmine.stoutner.com/issues/178">Colorear el Nombre Común</a> en el cuadro de diálogo Ver certificado SSL.</li> <li>Traducción al español actualizada proporcionada por <a href="mailto:emails@joseleon.me">Jose A. León Becerra</a>.</li> <li>Traducción al italiano actualizada proporcionada por Francesco Buratti.</li> </ul> diff --git a/app/src/main/assets/es/about_changelog_light.html b/app/src/main/assets/es/about_changelog_light.html index 602f9fa0..8ce36216 100644 --- a/app/src/main/assets/es/about_changelog_light.html +++ b/app/src/main/assets/es/about_changelog_light.html @@ -27,12 +27,12 @@ <body> <h3>2.6 (código de versión 26)</h3> - <p>18 de septiembre de 2017 - API mÃnimo 19, API dirigido 25</p> + <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ecd1f67963852c0523c42ce1326b78cb7a71f053">18 de septiembre de 2017</a> - API mÃnimo 19, API dirigido 25</p> <ul> - <li>Añadir <a href="https:/ight /redmine.stoutner.com/issues/145">renderizado en modo nocturno</a>.</li> - <li>Actualizar el renderizado del tema oscuro de las<a href="https://redmine.stoutner.com/issues/150">secciones Acerca de y GuÃa</a></li> - <li>Añadir soporte para <a href="https://redmine.stoutner.com/issues/52">autenticación HTTP </a>.</li> - <li><a href="https://redmine.stoutner.com/issues/178">Colorear el Nombre Común</a>en el cuadro de diálogo Ver certificado SSL.</li> + <li>Añadir <a href="https://redmine.stoutner.com/issues/145">renderizado en modo nocturno</a>.</li> + <li>Actualizar el renderizado del tema oscuro de las <a href="https://redmine.stoutner.com/issues/150">secciones Acerca de y GuÃa</a>.</li> + <li>Añadir soporte para <a href="https://redmine.stoutner.com/issues/52">autenticación HTTP</a>.</li> + <li><a href="https://redmine.stoutner.com/issues/178">Colorear el Nombre Común</a> en el cuadro de diálogo Ver certificado SSL.</li> <li>Traducción al español actualizada proporcionada por <a href="mailto:emails@joseleon.me">Jose A. León Becerra</a>.</li> <li>Traducción al italiano actualizada proporcionada por Francesco Buratti.</li> </ul> diff --git a/app/src/main/assets/it/about_changelog_dark.html b/app/src/main/assets/it/about_changelog_dark.html index 83e8411f..39e4cb89 100644 --- a/app/src/main/assets/it/about_changelog_dark.html +++ b/app/src/main/assets/it/about_changelog_dark.html @@ -27,7 +27,7 @@ <body> <h3>2.6 (versione codice 26)</h3> - <p>18 Settembre 2017 - minima API 19, target API 25</p> + <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ecd1f67963852c0523c42ce1326b78cb7a71f053">18 Settembre 2017</a> - minima API 19, target API 25</p> <ul> <li>Aggiunta la <a href="https://redmine.stoutner.com/issues/145">Modalità Notte</a>.</li> <li>Aggiornamento dell'aspetto del tema âDarkâ delle <a href="https://redmine.stoutner.com/issues/150">sezioni âInformazioniâ e âGuidaâ</a>.</li> diff --git a/app/src/main/assets/it/about_changelog_light.html b/app/src/main/assets/it/about_changelog_light.html index 74f53cbd..39ad3d45 100644 --- a/app/src/main/assets/it/about_changelog_light.html +++ b/app/src/main/assets/it/about_changelog_light.html @@ -27,7 +27,7 @@ <body> <h3>2.6 (versione codice 26)</h3> - <p>18 Settembre 2017 - minima API 19, target API 25</p> + <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ecd1f67963852c0523c42ce1326b78cb7a71f053">18 Settembre 2017</a> - minima API 19, target API 25</p> <ul> <li>Aggiunta la <a href="https://redmine.stoutner.com/issues/145">Modalità Notte</a>.</li> <li>Aggiornamento dell'aspetto del tema âDarkâ delle <a href="https://redmine.stoutner.com/issues/150">sezioni âInformazioniâ e âGuidaâ</a>.</li> diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/BookmarksActivity.java b/app/src/main/java/com/stoutner/privacybrowser/activities/BookmarksActivity.java index cdd90498..5e9d9faf 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/activities/BookmarksActivity.java +++ b/app/src/main/java/com/stoutner/privacybrowser/activities/BookmarksActivity.java @@ -110,7 +110,7 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma // Set the content view. setContentView(R.layout.bookmarks_coordinatorlayout); - // We need to use the `SupportActionBar` from `android.support.v7.app.ActionBar` until the minimum API is >= 21. + // Use the `SupportActionBar` from `android.support.v7.app.ActionBar` until the minimum API is >= 21. final Toolbar bookmarksAppBar = (Toolbar) findViewById(R.id.bookmarks_toolbar); setSupportActionBar(bookmarksAppBar); @@ -281,45 +281,46 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + // Get the menu item ID. int menuItemId = item.getItemId(); - // `numberOfBookmarks` is used in `R.id.move_bookmark_up_enabled`, `R.id.move_bookmark_down_enabled`, and `R.id.context_menu_select_all_bookmarks`. + // Instantiate the common variables. int numberOfBookmarks; - - // `selectedBookmarkLongArray` is used in `R.id.move_bookmark_up`, `R.id.move_bookmark_down`, and `R.id.edit_bookmark`. - long[]selectedBookmarkLongArray; - // `selectedBookmarkDatabaseId` is used in `R.id.move_bookmark_up`, `R.id.move_bookmark_down`, and `R.id.edit_bookmark`. - int selectedBookmarkDatabaseId; - // `selectedBookmarkNewPosition` is used in `R.id.move_bookmark_up` and `R.id.move_bookmark_down`. int selectedBookmarkNewPosition; - // `bookmarkPositionSparseBooleanArray` is used in `R.id.edit_bookmark` and `R.id.delete_bookmark`. SparseBooleanArray bookmarkPositionSparseBooleanArray; switch (menuItemId) { case R.id.move_bookmark_up: - // Get the selected bookmark database ID. - selectedBookmarkLongArray = bookmarksListView.getCheckedItemIds(); - selectedBookmarkDatabaseId = (int) selectedBookmarkLongArray[0]; + // Get the array of checked bookmarks. + bookmarkPositionSparseBooleanArray = bookmarksListView.getCheckedItemPositions(); + + // Store the position of the selected bookmark. + selectedBookmarkPosition = bookmarkPositionSparseBooleanArray.keyAt(0); // Initialize `selectedBookmarkNewPosition`. selectedBookmarkNewPosition = 0; + // Iterate through the bookmarks. for (int i = 0; i < bookmarksListView.getCount(); i++) { - int databaseId = (int) bookmarksListView.getItemIdAtPosition(i); - int nextBookmarkDatabaseId = (int) bookmarksListView.getItemIdAtPosition(i + 1); - - if (databaseId == selectedBookmarkDatabaseId || nextBookmarkDatabaseId == selectedBookmarkDatabaseId) { - if (databaseId == selectedBookmarkDatabaseId) { - // Move the selected bookmark up one and store the new bookmark position. - bookmarksDatabaseHelper.updateBookmarkDisplayOrder(databaseId, i - 1); - selectedBookmarkNewPosition = i - 1; - } else { // Move the bookmark above the selected bookmark down one. - bookmarksDatabaseHelper.updateBookmarkDisplayOrder(databaseId, i + 1); + // Get the database ID for the current bookmark. + int currentBookmarkDatabaseId = (int) bookmarksListView.getItemIdAtPosition(i); + + // Update the display order for the current bookmark. + if (i == selectedBookmarkPosition) { // The current bookmark is the selected bookmark. + // Move the current bookmark up one. + bookmarksDatabaseHelper.updateBookmarkDisplayOrder(currentBookmarkDatabaseId, i - 1); + selectedBookmarkNewPosition = i - 1; + } else if ((i + 1) == selectedBookmarkPosition){ // The current bookmark is immediately above the selected bookmark. + // Move the current bookmark down one. + bookmarksDatabaseHelper.updateBookmarkDisplayOrder(currentBookmarkDatabaseId, i + 1); + } else { // The current bookmark is not changing positions. + // Move `bookmarksCursor` to the current bookmark position. + bookmarksCursor.moveToPosition(i); + + // Update the display order only if it is not correct in the database. + if (bookmarksCursor.getInt(bookmarksCursor.getColumnIndex(BookmarksDatabaseHelper.DISPLAY_ORDER)) != i) { + bookmarksDatabaseHelper.updateBookmarkDisplayOrder(currentBookmarkDatabaseId, i); } - } else { - // Reset the rest of the bookmarks' DISPLAY_ORDER to match the position in the ListView. - // This isn't necessary, but it clears out any stray values that might have crept into the database. - bookmarksDatabaseHelper.updateBookmarkDisplayOrder(databaseId, i); } } @@ -335,29 +336,36 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma break; case R.id.move_bookmark_down: - // Get the selected bookmark database ID. - selectedBookmarkLongArray = bookmarksListView.getCheckedItemIds(); - selectedBookmarkDatabaseId = (int) selectedBookmarkLongArray[0]; + // Get the array of checked bookmarks. + bookmarkPositionSparseBooleanArray = bookmarksListView.getCheckedItemPositions(); + + // Store the position of the selected bookmark. + selectedBookmarkPosition = bookmarkPositionSparseBooleanArray.keyAt(0); // Initialize `selectedBookmarkNewPosition`. selectedBookmarkNewPosition = 0; + // Iterate through the bookmarks. for (int i = 0; i <bookmarksListView.getCount(); i++) { - int databaseId = (int) bookmarksListView.getItemIdAtPosition(i); - int previousBookmarkDatabaseId = (int) bookmarksListView.getItemIdAtPosition(i - 1); - - if (databaseId == selectedBookmarkDatabaseId || previousBookmarkDatabaseId == selectedBookmarkDatabaseId) { - if (databaseId == selectedBookmarkDatabaseId) { - // Move the selected bookmark down one and store the new bookmark position. - bookmarksDatabaseHelper.updateBookmarkDisplayOrder(databaseId, i + 1); - selectedBookmarkNewPosition = i + 1; - } else { // Move the bookmark below the selected bookmark up one. - bookmarksDatabaseHelper.updateBookmarkDisplayOrder(databaseId, i - 1); + // Get the database ID for the current bookmark. + int currentBookmarkDatabaseId = (int) bookmarksListView.getItemIdAtPosition(i); + + // Update the display order for the current bookmark. + if (i == selectedBookmarkPosition) { // The current bookmark is the selected bookmark. + // Move the current bookmark down one. + bookmarksDatabaseHelper.updateBookmarkDisplayOrder(currentBookmarkDatabaseId, i + 1); + selectedBookmarkNewPosition = i + 1; + } else if ((i - 1) == selectedBookmarkPosition) { // The current bookmark is immediately below the selected bookmark. + // Move the bookmark below the selected bookmark up one. + bookmarksDatabaseHelper.updateBookmarkDisplayOrder(currentBookmarkDatabaseId, i - 1); + } else { // The current bookmark is not changing positions. + // Move `bookmarksCursor` to the current bookmark position. + bookmarksCursor.moveToPosition(i); + + // Update the display order only if it is not correct in the database. + if (bookmarksCursor.getInt(bookmarksCursor.getColumnIndex(BookmarksDatabaseHelper.DISPLAY_ORDER)) != i) { + bookmarksDatabaseHelper.updateBookmarkDisplayOrder(currentBookmarkDatabaseId, i); } - } else { - // Reset the rest of the bookmark' DISPLAY_ORDER to match the position in the ListView. - // This isn't necessary, but it clears out any stray values that might have crept into the database. - bookmarksDatabaseHelper.updateBookmarkDisplayOrder(databaseId, i); } } @@ -381,13 +389,11 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma break; case R.id.edit_bookmark: - // Get a handle for `selectedBookmarkPosition` so we can scroll to it after refreshing the ListView. + // Get the array of checked bookmarks. bookmarkPositionSparseBooleanArray = bookmarksListView.getCheckedItemPositions(); - for (int i = 0; i < bookmarkPositionSparseBooleanArray.size(); i++) { - // Find the bookmark that is selected and save the position to `selectedBookmarkPosition`. - if (bookmarkPositionSparseBooleanArray.valueAt(i)) - selectedBookmarkPosition = bookmarkPositionSparseBooleanArray.keyAt(i); - } + + // Store the position of the selected bookmark. + selectedBookmarkPosition = bookmarkPositionSparseBooleanArray.keyAt(0); // Move to the selected database ID and find out if it is a folder. bookmarksCursor.moveToPosition(selectedBookmarkPosition); @@ -414,20 +420,18 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma // Get an array of the selected rows. final long[] selectedBookmarksLongArray = bookmarksListView.getCheckedItemIds(); - // Get a handle for `selectedBookmarkPosition` so we can scroll to it after refreshing the ListView. + // Get the array of checked bookmarks. bookmarkPositionSparseBooleanArray = bookmarksListView.getCheckedItemPositions(); - for (int i = 0; i < bookmarkPositionSparseBooleanArray.size(); i++) { - // Find the bookmark that is selected and save the position to `selectedBookmarkPosition`. - if (bookmarkPositionSparseBooleanArray.valueAt(i)) - selectedBookmarkPosition = bookmarkPositionSparseBooleanArray.keyAt(i); - } + + // Store the position of the first selected bookmark. + selectedBookmarkPosition = bookmarkPositionSparseBooleanArray.keyAt(0); updateBookmarksListViewExcept(selectedBookmarksLongArray, currentFolder); - // Scroll to where the deleted bookmark was located. + // Scroll to where the first deleted bookmark was located. bookmarksListView.setSelection(selectedBookmarkPosition - 5); - // Initialize `snackbarMessage`. + // Create `snackbarMessage`. String snackbarMessage; // Determine how many items are in the array and prepare an appropriate Snackbar message. @@ -454,7 +458,7 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma // Refresh the ListView to show the rows again. updateBookmarksListView(currentFolder); - // Scroll to where the deleted bookmark was located. + // Scroll to where the first deleted bookmark was located. bookmarksListView.setSelection(selectedBookmarkPosition - 5); break; diff --git a/fastlane/metadata/android/es/changelogs/26.txt b/fastlane/metadata/android/es/changelogs/26.txt index 8c9d3c23..2e97f157 100644 --- a/fastlane/metadata/android/es/changelogs/26.txt +++ b/fastlane/metadata/android/es/changelogs/26.txt @@ -1,6 +1,6 @@ ⢠Añadir renderizado en modo nocturno. -⢠Actualizar el renderizado del tema oscuro de lassecciones Acerca de y GuÃa -⢠Añadir soporte para autenticación HTTP . -⢠Colorear el Nombre Comúnen el cuadro de diálogo Ver certificado SSL. +⢠Actualizar el renderizado del tema oscuro de las secciones Acerca de y GuÃa. +⢠Añadir soporte para autenticación HTTP. +⢠Colorear el Nombre Común en el cuadro de diálogo Ver certificado SSL. ⢠Traducción al español actualizada proporcionada por Jose A. León Becerra. ⢠Traducción al italiano actualizada proporcionada por Francesco Buratti.