Fix title sometimes being empty

The loadable was not correctly set to the pin loadable
filtering
Floens 10 years ago
parent 99615817bf
commit 59e49fe9f2
  1. 7
      Clover/app/src/main/java/org/floens/chan/core/loader/ChanLoader.java
  2. 5
      Clover/app/src/main/java/org/floens/chan/core/manager/WatchManager.java
  3. 34
      Clover/app/src/main/java/org/floens/chan/core/model/Loadable.java
  4. 14
      Clover/app/src/main/java/org/floens/chan/core/model/Post.java
  5. 6
      Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java
  6. 2
      Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java
  7. 5
      Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java
  8. 22
      Clover/app/src/main/java/org/floens/chan/ui/helper/PostHelper.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.Loadable;
import org.floens.chan.core.model.Post; import org.floens.chan.core.model.Post;
import org.floens.chan.core.net.ChanReaderRequest; 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.AndroidUtils;
import org.floens.chan.utils.Logger; import org.floens.chan.utils.Logger;
import org.floens.chan.utils.Time; import org.floens.chan.utils.Time;
@ -281,11 +282,7 @@ public class ChanLoader {
} }
if (TextUtils.isEmpty(loadable.title)) { if (TextUtils.isEmpty(loadable.title)) {
if (thread.op != null) { loadable.title = PostHelper.getTitle(thread.op, loadable);
loadable.generateTitle(thread.op);
} else {
loadable.title = "/" + loadable.board + "/";
}
} }
for (Post post : thread.posts) { for (Post post : thread.posts) {

@ -25,6 +25,7 @@ import org.floens.chan.core.model.Loadable;
import org.floens.chan.core.model.Pin; import org.floens.chan.core.model.Pin;
import org.floens.chan.core.model.Post; import org.floens.chan.core.model.Post;
import org.floens.chan.core.settings.ChanSettings; 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.ui.service.WatchNotifier;
import org.floens.chan.utils.AndroidUtils; import org.floens.chan.utils.AndroidUtils;
import org.floens.chan.utils.Logger; import org.floens.chan.utils.Logger;
@ -150,7 +151,7 @@ public class WatchManager {
public boolean addPin(Post opPost) { public boolean addPin(Post opPost) {
Pin pin = new Pin(); Pin pin = new Pin();
pin.loadable = new Loadable(opPost.board, opPost.no); pin.loadable = new Loadable(opPost.board, opPost.no);
pin.loadable.generateTitle(opPost); pin.loadable.title = PostHelper.getTitle(opPost, pin.loadable);
pin.thumbnailUrl = opPost.thumbnailUrl; pin.thumbnailUrl = opPost.thumbnailUrl;
return addPin(pin); return addPin(pin);
} }
@ -158,7 +159,7 @@ public class WatchManager {
public boolean addPin(Loadable loadable, Post opPost) { public boolean addPin(Loadable loadable, Post opPost) {
Pin pin = new Pin(); Pin pin = new Pin();
pin.loadable = loadable; pin.loadable = loadable;
pin.loadable.generateTitle(opPost); pin.loadable.title = PostHelper.getTitle(opPost, loadable);
pin.thumbnailUrl = opPost.thumbnailUrl; pin.thumbnailUrl = opPost.thumbnailUrl;
return addPin(pin); return addPin(pin);
} }

@ -17,8 +17,6 @@
*/ */
package org.floens.chan.core.model; package org.floens.chan.core.model;
import android.content.Context;
import android.os.Bundle;
import android.os.Parcel; import android.os.Parcel;
import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.field.DatabaseField;
@ -114,26 +112,6 @@ public class Loadable {
return mode == Mode.CATALOG; 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) { public void writeToParcel(Parcel parcel) {
parcel.writeInt(mode); parcel.writeInt(mode);
parcel.writeString(board); parcel.writeString(board);
@ -165,18 +143,6 @@ public class Loadable {
return copy; 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 class Mode {
public static final int INVALID = -1; public static final int INVALID = -1;
public static final int THREAD = 0; public static final int THREAD = 0;

@ -35,20 +35,6 @@ import java.util.Random;
public class Post { public class Post {
private static final Random random = new Random(); 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 String board;
public int no = -1; public int no = -1;
public int resto = -1; public int resto = -1;

@ -41,6 +41,7 @@ import org.floens.chan.database.DatabaseManager;
import org.floens.chan.ui.adapter.PostAdapter; import org.floens.chan.ui.adapter.PostAdapter;
import org.floens.chan.ui.cell.PostCell; import org.floens.chan.ui.cell.PostCell;
import org.floens.chan.ui.cell.ThreadStatusCell; 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.layout.ThreadListLayout;
import org.floens.chan.ui.view.FloatingMenuItem; import org.floens.chan.ui.view.FloatingMenuItem;
import org.floens.chan.ui.view.ThumbnailView; import org.floens.chan.ui.view.ThumbnailView;
@ -89,7 +90,6 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt
unbindLoadable(); unbindLoadable();
} }
this.loadable = loadable;
Pin pin = watchManager.findPinByLoadable(loadable); Pin pin = watchManager.findPinByLoadable(loadable);
if (pin != null) { if (pin != null) {
// Use the loadable from the pin. // Use the loadable from the pin.
@ -97,6 +97,8 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt
// and not in a separate loadable instance. // and not in a separate loadable instance.
loadable = pin.loadable; loadable = pin.loadable;
} }
this.loadable = loadable;
chanLoader = LoaderPool.getInstance().obtain(loadable, this); chanLoader = LoaderPool.getInstance().obtain(loadable, this);
} }
} }
@ -252,7 +254,7 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt
public void onPostClicked(Post post) { public void onPostClicked(Post post) {
if (loadable.mode == Loadable.Mode.CATALOG) { if (loadable.mode == Loadable.Mode.CATALOG) {
Loadable threadLoadable = new Loadable(post.board, post.no); Loadable threadLoadable = new Loadable(post.board, post.no);
threadLoadable.generateTitle(post); threadLoadable.title = PostHelper.getTitle(post, loadable);
threadPresenterCallback.showThread(threadLoadable); threadPresenterCallback.showThread(threadLoadable);
} else { } else {
if (searchOpen) { if (searchOpen) {

@ -155,7 +155,7 @@ public class BrowseController extends ThreadController implements ToolbarMenuIte
public void loadBoard(Board board) { public void loadBoard(Board board) {
Loadable loadable = new Loadable(board.value); Loadable loadable = new Loadable(board.value);
loadable.mode = Loadable.Mode.CATALOG; loadable.mode = Loadable.Mode.CATALOG;
loadable.generateTitle(); loadable.title = board.key;
navigationItem.title = board.key; navigationItem.title = board.key;
threadLayout.getPresenter().unbindLoadable(); threadLayout.getPresenter().unbindLoadable();

@ -124,13 +124,13 @@ public class ViewThreadController extends ThreadController implements ThreadLayo
@Override @Override
public boolean isPinCurrent(Pin pin) { public boolean isPinCurrent(Pin pin) {
return pin.loadable.equals(loadable); return pin.loadable.equals(threadLayout.getPresenter().getLoadable());
} }
private void loadLoadable(Loadable loadable) { private void loadLoadable(Loadable loadable) {
if (!loadable.equals(threadLayout.getPresenter().getLoadable())) { if (!loadable.equals(threadLayout.getPresenter().getLoadable())) {
this.loadable = loadable;
threadLayout.getPresenter().bindLoadable(loadable); threadLayout.getPresenter().bindLoadable(loadable);
this.loadable = threadLayout.getPresenter().getLoadable();
threadLayout.getPresenter().requestData(); threadLayout.getPresenter().requestData();
navigationItem.title = loadable.title; navigationItem.title = loadable.title;
navigationItem.updateTitle(); navigationItem.updateTitle();
@ -141,6 +141,7 @@ public class ViewThreadController extends ThreadController implements ThreadLayo
@Override @Override
public void onShowPosts() { public void onShowPosts() {
super.onShowPosts(); super.onShowPosts();
navigationItem.title = loadable.title; navigationItem.title = loadable.title;
navigationItem.updateTitle(); navigationItem.updateTitle();
} }

@ -25,6 +25,8 @@ import android.text.TextUtils;
import android.text.style.ImageSpan; import android.text.style.ImageSpan;
import org.floens.chan.R; 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; import org.floens.chan.utils.AndroidUtils;
public class PostHelper { public class PostHelper {
@ -59,4 +61,24 @@ public class PostHelper {
return TextUtils.concat(total, string); 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 "";
}
}
} }

Loading…
Cancel
Save