From 59e49fe9f20fbd6d2f70400300bb69f183070ea8 Mon Sep 17 00:00:00 2001 From: Floens Date: Wed, 27 May 2015 16:43:36 +0200 Subject: [PATCH] Fix title sometimes being empty The loadable was not correctly set to the pin loadable --- .../floens/chan/core/loader/ChanLoader.java | 7 ++-- .../chan/core/manager/WatchManager.java | 5 +-- .../org/floens/chan/core/model/Loadable.java | 34 ------------------- .../java/org/floens/chan/core/model/Post.java | 14 -------- .../chan/core/presenter/ThreadPresenter.java | 6 ++-- .../chan/ui/controller/BrowseController.java | 2 +- .../ui/controller/ViewThreadController.java | 5 +-- .../org/floens/chan/ui/helper/PostHelper.java | 22 ++++++++++++ 8 files changed, 35 insertions(+), 60 deletions(-) diff --git a/Clover/app/src/main/java/org/floens/chan/core/loader/ChanLoader.java b/Clover/app/src/main/java/org/floens/chan/core/loader/ChanLoader.java index 8b8b0912..99f342b7 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/loader/ChanLoader.java +++ b/Clover/app/src/main/java/org/floens/chan/core/loader/ChanLoader.java @@ -27,6 +27,7 @@ import org.floens.chan.core.model.ChanThread; import org.floens.chan.core.model.Loadable; import org.floens.chan.core.model.Post; import org.floens.chan.core.net.ChanReaderRequest; +import org.floens.chan.ui.helper.PostHelper; import org.floens.chan.utils.AndroidUtils; import org.floens.chan.utils.Logger; import org.floens.chan.utils.Time; @@ -281,11 +282,7 @@ public class ChanLoader { } if (TextUtils.isEmpty(loadable.title)) { - if (thread.op != null) { - loadable.generateTitle(thread.op); - } else { - loadable.title = "/" + loadable.board + "/"; - } + loadable.title = PostHelper.getTitle(thread.op, loadable); } for (Post post : thread.posts) { 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 4be75a05..abfb2440 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 @@ -25,6 +25,7 @@ import org.floens.chan.core.model.Loadable; import org.floens.chan.core.model.Pin; import org.floens.chan.core.model.Post; import org.floens.chan.core.settings.ChanSettings; +import org.floens.chan.ui.helper.PostHelper; import org.floens.chan.ui.service.WatchNotifier; import org.floens.chan.utils.AndroidUtils; import org.floens.chan.utils.Logger; @@ -150,7 +151,7 @@ public class WatchManager { public boolean addPin(Post opPost) { Pin pin = new Pin(); pin.loadable = new Loadable(opPost.board, opPost.no); - pin.loadable.generateTitle(opPost); + pin.loadable.title = PostHelper.getTitle(opPost, pin.loadable); pin.thumbnailUrl = opPost.thumbnailUrl; return addPin(pin); } @@ -158,7 +159,7 @@ public class WatchManager { public boolean addPin(Loadable loadable, Post opPost) { Pin pin = new Pin(); pin.loadable = loadable; - pin.loadable.generateTitle(opPost); + pin.loadable.title = PostHelper.getTitle(opPost, loadable); pin.thumbnailUrl = opPost.thumbnailUrl; return addPin(pin); } diff --git a/Clover/app/src/main/java/org/floens/chan/core/model/Loadable.java b/Clover/app/src/main/java/org/floens/chan/core/model/Loadable.java index 4c0f4bd0..6c2ac3e2 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/model/Loadable.java +++ b/Clover/app/src/main/java/org/floens/chan/core/model/Loadable.java @@ -17,8 +17,6 @@ */ package org.floens.chan.core.model; -import android.content.Context; -import android.os.Bundle; import android.os.Parcel; import com.j256.ormlite.field.DatabaseField; @@ -114,26 +112,6 @@ public class Loadable { return mode == Mode.CATALOG; } - public void readFromBundle(Context context, String tag, Bundle bundle) { - String p = context.getPackageName(); - mode = bundle.getInt(p + "." + tag + ".mode", Mode.INVALID); - board = bundle.getString(p + "." + tag + ".board", ""); - no = bundle.getInt(p + "." + tag + ".no", -1); - title = bundle.getString(p + "." + tag + ".subject", ""); - listViewIndex = bundle.getInt(p + "." + tag + ".listViewIndex"); - listViewTop = bundle.getInt(p + "." + tag + ".listViewTop"); - } - - public void writeToBundle(Context context, String tag, Bundle bundle) { - String p = context.getPackageName(); - bundle.putInt(p + "." + tag + ".mode", mode); - bundle.putString(p + "." + tag + ".board", board); - bundle.putInt(p + "." + tag + ".no", no); - bundle.putString(p + "." + tag + ".subject", title); - bundle.putInt(p + "." + tag + ".listViewIndex", listViewIndex); - bundle.putInt(p + "." + tag + ".listViewTop", listViewTop); - } - public void writeToParcel(Parcel parcel) { parcel.writeInt(mode); parcel.writeString(board); @@ -165,18 +143,6 @@ public class Loadable { return copy; } - public void generateTitle(Post post) { - title = Post.generateTitle(post); - } - - public void generateTitle() { - if (mode == Mode.CATALOG) { - title = "/" + board + "/"; - } else { - title = "/" + board + "/" + no; - } - } - public static class Mode { public static final int INVALID = -1; public static final int THREAD = 0; diff --git a/Clover/app/src/main/java/org/floens/chan/core/model/Post.java b/Clover/app/src/main/java/org/floens/chan/core/model/Post.java index 65e31e93..913bd58a 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/model/Post.java +++ b/Clover/app/src/main/java/org/floens/chan/core/model/Post.java @@ -35,20 +35,6 @@ import java.util.Random; public class Post { private static final Random random = new Random(); - public static String generateTitle(Post post) { - return generateTitle(post, 100); - } - - public static String generateTitle(Post post, int maxLength) { - if (!TextUtils.isEmpty(post.subject)) { - return post.subject; - } else if (!TextUtils.isEmpty(post.comment)) { - return "/" + post.board + "/ - " + post.comment.subSequence(0, Math.min(post.comment.length(), maxLength)).toString(); - } else { - return "/" + post.board + "/" + post.no; - } - } - public String board; public int no = -1; public int resto = -1; 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 d1fe57ad..18f7eeeb 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 @@ -41,6 +41,7 @@ import org.floens.chan.database.DatabaseManager; import org.floens.chan.ui.adapter.PostAdapter; import org.floens.chan.ui.cell.PostCell; import org.floens.chan.ui.cell.ThreadStatusCell; +import org.floens.chan.ui.helper.PostHelper; import org.floens.chan.ui.layout.ThreadListLayout; import org.floens.chan.ui.view.FloatingMenuItem; import org.floens.chan.ui.view.ThumbnailView; @@ -89,7 +90,6 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt unbindLoadable(); } - this.loadable = loadable; Pin pin = watchManager.findPinByLoadable(loadable); if (pin != null) { // Use the loadable from the pin. @@ -97,6 +97,8 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt // and not in a separate loadable instance. loadable = pin.loadable; } + this.loadable = loadable; + chanLoader = LoaderPool.getInstance().obtain(loadable, this); } } @@ -252,7 +254,7 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt public void onPostClicked(Post post) { if (loadable.mode == Loadable.Mode.CATALOG) { Loadable threadLoadable = new Loadable(post.board, post.no); - threadLoadable.generateTitle(post); + threadLoadable.title = PostHelper.getTitle(post, loadable); threadPresenterCallback.showThread(threadLoadable); } else { if (searchOpen) { diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java index 3fc3672a..4c504a8f 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java @@ -155,7 +155,7 @@ public class BrowseController extends ThreadController implements ToolbarMenuIte public void loadBoard(Board board) { Loadable loadable = new Loadable(board.value); loadable.mode = Loadable.Mode.CATALOG; - loadable.generateTitle(); + loadable.title = board.key; navigationItem.title = board.key; threadLayout.getPresenter().unbindLoadable(); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java index 31e62f3f..1e1640dd 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java @@ -124,13 +124,13 @@ public class ViewThreadController extends ThreadController implements ThreadLayo @Override public boolean isPinCurrent(Pin pin) { - return pin.loadable.equals(loadable); + return pin.loadable.equals(threadLayout.getPresenter().getLoadable()); } private void loadLoadable(Loadable loadable) { if (!loadable.equals(threadLayout.getPresenter().getLoadable())) { - this.loadable = loadable; threadLayout.getPresenter().bindLoadable(loadable); + this.loadable = threadLayout.getPresenter().getLoadable(); threadLayout.getPresenter().requestData(); navigationItem.title = loadable.title; navigationItem.updateTitle(); @@ -141,6 +141,7 @@ public class ViewThreadController extends ThreadController implements ThreadLayo @Override public void onShowPosts() { super.onShowPosts(); + navigationItem.title = loadable.title; navigationItem.updateTitle(); } diff --git a/Clover/app/src/main/java/org/floens/chan/ui/helper/PostHelper.java b/Clover/app/src/main/java/org/floens/chan/ui/helper/PostHelper.java index 1bff0825..a9f79703 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/helper/PostHelper.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/helper/PostHelper.java @@ -25,6 +25,8 @@ import android.text.TextUtils; import android.text.style.ImageSpan; import org.floens.chan.R; +import org.floens.chan.core.model.Loadable; +import org.floens.chan.core.model.Post; import org.floens.chan.utils.AndroidUtils; public class PostHelper { @@ -59,4 +61,24 @@ public class PostHelper { return TextUtils.concat(total, string); } } + + public static String getTitle(Post post, Loadable loadable) { + if (post != null) { + if (!TextUtils.isEmpty(post.subject)) { + return post.subject; + } else if (!TextUtils.isEmpty(post.comment)) { + return "/" + post.board + "/ - " + post.comment.subSequence(0, Math.min(post.comment.length(), 200)).toString(); + } else { + return "/" + post.board + "/" + post.no; + } + } else if (loadable != null) { + if (loadable.mode == Loadable.Mode.CATALOG) { + return "/" + loadable.board + "/"; + } else { + return "/" + loadable.board + "/" + loadable.no; + } + } else { + return ""; + } + } }