diff --git a/Clover/app/src/main/java/org/floens/chan/core/manager/ThreadManager.java b/Clover/app/src/main/java/org/floens/chan/core/manager/ThreadManager.java index 81cd877b..e1948b5d 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/manager/ThreadManager.java +++ b/Clover/app/src/main/java/org/floens/chan/core/manager/ThreadManager.java @@ -52,6 +52,7 @@ import org.floens.chan.utils.Logger; import org.floens.chan.utils.Utils; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -208,24 +209,27 @@ public class ThreadManager implements Loader.LoaderListener { public void onPostLongClicked(final Post post) { AlertDialog.Builder builder = new AlertDialog.Builder(activity); - String[] items = null; - - String[] temp = activity.getResources().getStringArray(R.array.post_options); + List options = new ArrayList(Arrays.asList(activity.getResources().getStringArray(R.array.post_options))); // Only add the delete option when the post is a saved reply + boolean delete = false, saved = false; if (ChanApplication.getDatabaseManager().isSavedReply(post.board, post.no)) { - items = new String[temp.length + 1]; - System.arraycopy(temp, 0, items, 0, temp.length); - items[items.length - 1] = activity.getString(R.string.delete); - } else { - items = temp; + options.add(activity.getString(R.string.delete)); + delete = true; + } + + if (ChanPreferences.getDeveloper()) { + options.add("Make this a saved reply"); + saved = true; } - builder.setItems(items, new DialogInterface.OnClickListener() { + final boolean finalDelete = delete; + final boolean finalSaved = saved; + builder.setItems(options.toArray(new String[options.size()]), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: // Reply - openReply(true); // todo if tablet + openReply(true); // Pass through case 1: // Quote ChanApplication.getReplyManager().quote(post.no); @@ -240,7 +244,15 @@ public class ThreadManager implements Loader.LoaderListener { copyToClipboard(post.comment.toString()); break; case 5: // Delete - deletePost(post); + if (finalDelete && !finalSaved) { + deletePost(post); + } else if (finalSaved && !finalDelete) { + ChanApplication.getDatabaseManager().saveReply(new SavedReply(post.board, post.no, "foo")); + } + break; + case 6: + ChanApplication.getDatabaseManager().saveReply(new SavedReply(post.board, post.no, "foo")); + break; } } diff --git a/Clover/app/src/main/java/org/floens/chan/core/model/SavedReply.java b/Clover/app/src/main/java/org/floens/chan/core/model/SavedReply.java index 102c54ab..5eb3f732 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/model/SavedReply.java +++ b/Clover/app/src/main/java/org/floens/chan/core/model/SavedReply.java @@ -22,6 +22,15 @@ import com.j256.ormlite.table.DatabaseTable; @DatabaseTable public class SavedReply { + public SavedReply() { + } + + public SavedReply(String board, int no, String password) { + this.board = board; + this.no = no; + this.password = password; + } + @DatabaseField(generatedId = true) private int id; diff --git a/Clover/app/src/main/java/org/floens/chan/core/watch/PinWatcher.java b/Clover/app/src/main/java/org/floens/chan/core/watch/PinWatcher.java index 944c5233..ad13f940 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/watch/PinWatcher.java +++ b/Clover/app/src/main/java/org/floens/chan/core/watch/PinWatcher.java @@ -60,6 +60,7 @@ public class PinWatcher implements Loader.LoaderListener { public void onViewed() { pin.watchLastCount = pin.watchNewCount; pin.quoteLastCount = pin.quoteNewCount; + wereNewQuotes = false; } public List getNewPosts() { diff --git a/Clover/app/src/main/java/org/floens/chan/database/DatabaseManager.java b/Clover/app/src/main/java/org/floens/chan/database/DatabaseManager.java index 62cbb087..2d4dc9d2 100644 --- a/Clover/app/src/main/java/org/floens/chan/database/DatabaseManager.java +++ b/Clover/app/src/main/java/org/floens/chan/database/DatabaseManager.java @@ -40,7 +40,7 @@ public class DatabaseManager { } public void saveReply(SavedReply saved) { - Logger.e(TAG, "Saving " + saved.board + ", " + saved.no); + Logger.i(TAG, "Saving " + saved.board + ", " + saved.no); try { helper.savedDao.create(saved); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/adapter/PostAdapter.java b/Clover/app/src/main/java/org/floens/chan/ui/adapter/PostAdapter.java index 86602f81..ea77a237 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/adapter/PostAdapter.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/adapter/PostAdapter.java @@ -81,7 +81,7 @@ public class PostAdapter extends BaseAdapter { } if (position >= postList.size()) { - if (Time.get(lastViewedTime) > 10000L) { + if (Time.get(lastViewedTime) > 2000L) { lastViewedTime = Time.get(); threadManager.bottomPostViewed(); }