Add the ability to undo deletion from saved articles list
This commit is contained in:
parent
cecb6a7ee0
commit
f85a67beec
4 changed files with 33 additions and 5 deletions
|
@ -103,10 +103,17 @@
|
|||
|
||||
</FrameLayout>
|
||||
|
||||
<net.osmand.plus.LockableViewPager
|
||||
android:id="@+id/view_pager"
|
||||
<!-- Coordinator layout is needed in order to display the snackbar above the bottom navigation -->
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<net.osmand.plus.LockableViewPager
|
||||
android:id="@+id/view_pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
|
||||
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
|
||||
-->
|
||||
<string name="article_removed">Article removed</string>
|
||||
<string name="wikivoyage_search_hint">Search: Country, City, Province</string>
|
||||
<string name="shared_string_read">Read</string>
|
||||
<string name="saved_articles">Saved articles</string>
|
||||
|
|
|
@ -109,6 +109,14 @@ public class WikivoyageLocalDataHelper {
|
|||
}
|
||||
}
|
||||
|
||||
public void restoreSavedArticle(@NonNull WikivoyageArticle article) {
|
||||
if (!isArticleSaved(article)) {
|
||||
savedArticles.add(article);
|
||||
dbHelper.addSavedArticle(article);
|
||||
notifySavedUpdated();
|
||||
}
|
||||
}
|
||||
|
||||
public void removeArticleFromSaved(@NonNull WikivoyageArticle article) {
|
||||
WikivoyageArticle savedArticle = getArticle(article.cityId, article.lang);
|
||||
if (savedArticle != null) {
|
||||
|
|
|
@ -3,6 +3,7 @@ package net.osmand.plus.wikivoyage.explore;
|
|||
import android.graphics.drawable.Drawable;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
@ -10,6 +11,7 @@ import android.view.ViewGroup;
|
|||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import net.osmand.AndroidUtils;
|
||||
import net.osmand.plus.IconsCache;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
|
@ -129,7 +131,7 @@ public class SavedArticlesRvAdapter extends RecyclerView.Adapter<RecyclerView.Vi
|
|||
final View divider;
|
||||
final View shadow;
|
||||
|
||||
ItemVH(View itemView) {
|
||||
ItemVH(final View itemView) {
|
||||
super(itemView);
|
||||
title = (TextView) itemView.findViewById(R.id.title);
|
||||
content = (TextView) itemView.findViewById(R.id.content);
|
||||
|
@ -160,7 +162,17 @@ public class SavedArticlesRvAdapter extends RecyclerView.Adapter<RecyclerView.Vi
|
|||
public void onClick(View view) {
|
||||
Object item = getItemByPosition();
|
||||
if (item != null && item instanceof WikivoyageArticle) {
|
||||
WikivoyageLocalDataHelper.getInstance(app).removeArticleFromSaved((WikivoyageArticle) item);
|
||||
final WikivoyageArticle article = (WikivoyageArticle) item;
|
||||
WikivoyageLocalDataHelper.getInstance(app).removeArticleFromSaved(article);
|
||||
Snackbar snackbar = Snackbar.make(itemView, R.string.article_removed, Snackbar.LENGTH_LONG)
|
||||
.setAction(R.string.shared_string_undo, new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
WikivoyageLocalDataHelper.getInstance(app).restoreSavedArticle(article);
|
||||
}
|
||||
});
|
||||
AndroidUtils.setSnackbarTextColor(snackbar, R.color.wikivoyage_active_dark);
|
||||
snackbar.show();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue