Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-06-17 19:01:33 +0300
committerStefan Niedermann <info@niedermann.it>2021-06-17 19:01:33 +0300
commite7cda29249119cbac6c1b2522bdc7134538ea812 (patch)
tree0665ed1094cec155c2edd2cc57a6a17270b42bc2
parent4eb133b9cf24bffb8cb3ca7faae05490c8a70000 (diff)
Fix #841 - 🗑 Select neighbour list after deleting a list
Signed-off-by: Stefan Niedermann <info@niedermann.it>
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java24
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/DeleteStackListener.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/StackAdapter.java17
-rw-r--r--fastlane/metadata/android/en-US/changelogs/1019000.txt3
4 files changed, 36 insertions, 10 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java
index f70bfbaaf..b98270c68 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java
@@ -53,6 +53,7 @@ import com.nextcloud.android.sso.helper.SingleAccountHelper;
import java.net.HttpURLConnection;
import java.util.ArrayList;
import java.util.List;
+import java.util.NoSuchElementException;
import java.util.Objects;
import it.niedermann.android.crosstabdnd.CrossTabDragAndDrop;
@@ -771,12 +772,12 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
stackMoved = true;
return true;
} else if (itemId == R.id.delete_list) {
- final long stackId = stackAdapter.getItem(binding.viewPager.getCurrentItem()).getLocalId();
- mainViewModel.countCardsInStack(mainViewModel.getCurrentAccount().getId(), stackId, (numberOfCards) -> runOnUiThread(() -> {
+ final long stackLocalId = stackAdapter.getItem(binding.viewPager.getCurrentItem()).getLocalId();
+ mainViewModel.countCardsInStack(mainViewModel.getCurrentAccount().getId(), stackLocalId, (numberOfCards) -> runOnUiThread(() -> {
if (numberOfCards != null && numberOfCards > 0) {
- DeleteStackDialogFragment.newInstance(stackId, numberOfCards).show(getSupportFragmentManager(), DeleteStackDialogFragment.class.getCanonicalName());
+ DeleteStackDialogFragment.newInstance(stackLocalId, numberOfCards).show(getSupportFragmentManager(), DeleteStackDialogFragment.class.getCanonicalName());
} else {
- onStackDeleted(stackId);
+ onStackDeleted(stackLocalId);
}
}));
return true;
@@ -999,12 +1000,19 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
}
@Override
- public void onStackDeleted(Long stackLocalId) {
- final long stackId = stackAdapter.getItem(binding.viewPager.getCurrentItem()).getLocalId();
- mainViewModel.deleteStack(mainViewModel.getCurrentAccount().getId(), stackId, mainViewModel.getCurrentBoardLocalId(), new IResponseCallback<Void>() {
+ public void onStackDeleted(long stackLocalId) {
+ int nextStackPosition;
+ try {
+ nextStackPosition = stackAdapter.getNeighbourPosition(binding.viewPager.getCurrentItem());
+ } catch (NoSuchElementException | IndexOutOfBoundsException e) {
+ nextStackPosition = 0;
+ DeckLog.logError(e);
+ }
+ binding.viewPager.setCurrentItem(nextStackPosition);
+ mainViewModel.deleteStack(mainViewModel.getCurrentAccount().getId(), stackLocalId, mainViewModel.getCurrentBoardLocalId(), new IResponseCallback<Void>() {
@Override
public void onResponse(Void response) {
- DeckLog.info("Successfully deleted stack with local id", stackLocalId, "and remote id", stackId);
+ DeckLog.info("Successfully deleted stack with local id", stackLocalId, "and remote id", stackLocalId);
}
@Override
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/DeleteStackListener.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/DeleteStackListener.java
index dfd1b4497..f0b5d68f7 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/DeleteStackListener.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/DeleteStackListener.java
@@ -1,5 +1,5 @@
package it.niedermann.nextcloud.deck.ui.stack;
public interface DeleteStackListener {
- void onStackDeleted(Long stackLocalId);
+ void onStackDeleted(long stackLocalId);
} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/StackAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/StackAdapter.java
index 1e0fd4e72..4867b3d85 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/StackAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/StackAdapter.java
@@ -7,6 +7,7 @@ import androidx.viewpager2.adapter.FragmentStateAdapter;
import java.util.ArrayList;
import java.util.List;
+import java.util.NoSuchElementException;
import it.niedermann.nextcloud.deck.model.Stack;
@@ -27,6 +28,22 @@ public class StackAdapter extends FragmentStateAdapter {
return stackList.get(position);
}
+ /**
+ * @return the position of the direct neighbour of the given {@param position} if available. Prefers neighbours to the start of the wanted, but might also return a neighbour to the end.
+ * @throws NoSuchElementException in case this is the only {@link Stack}.
+ */
+ public int getNeighbourPosition(int position) throws NoSuchElementException, IndexOutOfBoundsException {
+ if (position >= stackList.size()) {
+ throw new IndexOutOfBoundsException("Position " + position + " is not in the current stack list.");
+ }
+ if (stackList.size() < 2) {
+ throw new NoSuchElementException("There is no neighbour.");
+ }
+ return position > 0
+ ? position - 1
+ : position + 1;
+ }
+
@Override
public long getItemId(int position) {
return stackList.get(position).getLocalId();
diff --git a/fastlane/metadata/android/en-US/changelogs/1019000.txt b/fastlane/metadata/android/en-US/changelogs/1019000.txt
index 0046030f3..2185920f3 100644
--- a/fastlane/metadata/android/en-US/changelogs/1019000.txt
+++ b/fastlane/metadata/android/en-US/changelogs/1019000.txt
@@ -1,2 +1,3 @@
- ✏️ Remember edit / preview mode for description (#971)
-- 🖼 Support preview for images which are hosted on a Nextcloud instance (#963) \ No newline at end of file
+- 🖼 Support preview for images which are hosted on a Nextcloud instance (#963)
+- 🗑 Select neighbour list after deleting a list (#841) \ No newline at end of file