diff --git a/Clover/app/src/main/java/org/floens/chan/core/manager/WatchManager.java b/Clover/app/src/main/java/org/floens/chan/core/manager/WatchManager.java index abfb2440..cc8e4927 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/manager/WatchManager.java +++ b/Clover/app/src/main/java/org/floens/chan/core/manager/WatchManager.java @@ -203,8 +203,8 @@ public class WatchManager { pin.watching = !pin.watching; EventBus.getDefault().post(new PinChangedMessage(pin)); - Chan.getWatchManager().onPinsChanged(); - Chan.getWatchManager().invokeLoadNow(); + onPinsChanged(); + invokeLoadNow(); } public void pinWatcherUpdated(Pin pin) { diff --git a/Clover/app/src/main/java/org/floens/chan/core/model/Pin.java b/Clover/app/src/main/java/org/floens/chan/core/model/Pin.java index bc71265b..cad25a7c 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/model/Pin.java +++ b/Clover/app/src/main/java/org/floens/chan/core/model/Pin.java @@ -54,6 +54,9 @@ public class Pin { @DatabaseField public int order = -1; + @DatabaseField + public boolean archived = false; + private PinWatcher pinWatcher; public int getNewPostCount() { diff --git a/Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java b/Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java index ee284abb..9face6f6 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java +++ b/Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java @@ -173,6 +173,14 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt */ @Override public void onChanLoaderData(ChanThread result) { + Pin pin = watchManager.findPinByLoadable(loadable); + if (pin != null) { + if (pin.archived != result.archived) { + pin.archived = result.archived; + watchManager.updatePin(pin); + } + } + chanLoader.setAutoLoadMore(isWatching()); threadPresenterCallback.showPosts(result); diff --git a/Clover/app/src/main/java/org/floens/chan/database/DatabaseHelper.java b/Clover/app/src/main/java/org/floens/chan/database/DatabaseHelper.java index 71efa362..00e1e015 100644 --- a/Clover/app/src/main/java/org/floens/chan/database/DatabaseHelper.java +++ b/Clover/app/src/main/java/org/floens/chan/database/DatabaseHelper.java @@ -40,7 +40,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { private static final String TAG = "DatabaseHelper"; private static final String DATABASE_NAME = "ChanDB"; - private static final int DATABASE_VERSION = 14; + private static final int DATABASE_VERSION = 15; public Dao pinDao; public Dao loadableDao; @@ -135,6 +135,14 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { e.printStackTrace(); } } + + if (oldVersion < 15) { + try { + pinDao.executeRawNoArgs("ALTER TABLE pin ADD COLUMN archived INTEGER;"); + } catch (SQLException e) { + e.printStackTrace(); + } + } } public void reset() { diff --git a/Clover/app/src/main/java/org/floens/chan/ui/adapter/PinAdapter.java b/Clover/app/src/main/java/org/floens/chan/ui/adapter/PinAdapter.java index 8c37b30b..aedb532a 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/adapter/PinAdapter.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/adapter/PinAdapter.java @@ -18,6 +18,7 @@ package org.floens.chan.ui.adapter; import android.support.v7.widget.RecyclerView; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -28,6 +29,7 @@ import org.floens.chan.Chan; import org.floens.chan.R; import org.floens.chan.core.model.Pin; import org.floens.chan.core.settings.ChanSettings; +import org.floens.chan.ui.helper.PostHelper; import org.floens.chan.ui.helper.SwipeListener; import org.floens.chan.ui.view.ThumbnailView; import org.floens.chan.utils.AndroidUtils; @@ -39,6 +41,7 @@ import static org.floens.chan.utils.AndroidUtils.ROBOTO_MEDIUM; import static org.floens.chan.utils.AndroidUtils.dp; import static org.floens.chan.utils.AndroidUtils.getAttrColor; import static org.floens.chan.utils.AndroidUtils.setRoundItemBackground; +import static org.floens.chan.utils.AndroidUtils.sp; public class PinAdapter extends RecyclerView.Adapter implements SwipeListener.Callback { private static final int PIN_OFFSET = 4; @@ -194,7 +197,12 @@ public class PinAdapter extends RecyclerView.Adapter im } public void updatePinViewHolder(PinViewHolder holder, Pin pin) { - holder.textView.setText(pin.loadable.title); + CharSequence text = pin.loadable.title; + if (pin.archived) { + text = TextUtils.concat(PostHelper.addIcon(PostHelper.archivedIcon, sp(14 + 2)), text); + } + + holder.textView.setText(text); holder.image.setUrl(pin.thumbnailUrl, dp(40), dp(40)); if (ChanSettings.watchEnabled.get()) { diff --git a/docs/database.txt b/docs/database.txt index 0f46790d..587c97c4 100644 --- a/docs/database.txt +++ b/docs/database.txt @@ -36,3 +36,7 @@ ALTER TABLE board ADD COLUMN thumbnailUrl VARCHAR; Changes in version 14: ALTER TABLE pin ADD COLUMN order INTEGER; + + +Changes is version 15: +ALTER TABLE pin ADD COLUMN archived INTEGER;