Load errors are now viewed in the bottom bar.

When a thread has an error but posts are already visible,
don't clear the screen to show the error but make the error
visible in the bottom bar.
captchafix
Florens Douwes 11 years ago
parent be7a56288d
commit aee0398f16
  1. 9
      Clover/src/org/floens/chan/ui/adapter/PostAdapter.java
  2. 30
      Clover/src/org/floens/chan/ui/fragment/ThreadFragment.java
  3. 11
      Clover/src/org/floens/chan/ui/view/ThreadWatchCounterView.java

@ -45,6 +45,7 @@ public class PostAdapter extends BaseAdapter {
private boolean endOfLine; private boolean endOfLine;
private final List<Post> postList = new ArrayList<Post>(); private final List<Post> postList = new ArrayList<Post>();
private long lastViewedTime = 0; private long lastViewedTime = 0;
private String loadMessage = null;
public PostAdapter(Context activity, ThreadManager threadManager, ListView listView) { public PostAdapter(Context activity, ThreadManager threadManager, ListView listView) {
context = activity; context = activity;
@ -178,4 +179,12 @@ public class PostAdapter extends BaseAdapter {
} }
} }
} }
public void setErrorMessage(String loadMessage) {
this.loadMessage = loadMessage;
}
public String getErrorMessage() {
return loadMessage;
}
} }

@ -175,6 +175,8 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana
} }
} }
postAdapter.setErrorMessage(null);
if (append) { if (append) {
postAdapter.appendList(posts); postAdapter.appendList(posts);
} else { } else {
@ -187,9 +189,13 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana
if (error instanceof EndOfLineException) { if (error instanceof EndOfLineException) {
postAdapter.setEndOfLine(true); postAdapter.setEndOfLine(true);
} else { } else {
if (postAdapter == null) {
if (container != null) { if (container != null) {
container.setView(getLoadErrorTextView(error)); container.setView(getLoadErrorTextView(error));
} }
} else {
postAdapter.setErrorMessage(getLoadErrorText(error));
}
} }
} }
@ -199,8 +205,20 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana
* @param error * @param error
* @return * @return
*/ */
public TextView getLoadErrorTextView(VolleyError error) { private TextView getLoadErrorTextView(VolleyError error) {
String errorMessage = ""; String errorMessage = getLoadErrorText(error);
TextView view = new TextView(getActivity());
view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
view.setText(errorMessage);
view.setTextSize(24f);
view.setGravity(Gravity.CENTER);
return view;
}
private String getLoadErrorText(VolleyError error) {
String errorMessage = "error";
if ((error instanceof NoConnectionError) || (error instanceof NetworkError)) { if ((error instanceof NoConnectionError) || (error instanceof NetworkError)) {
errorMessage = getActivity().getString(R.string.thread_load_failed_network); errorMessage = getActivity().getString(R.string.thread_load_failed_network);
@ -210,13 +228,7 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana
errorMessage = getActivity().getString(R.string.thread_load_failed_parsing); errorMessage = getActivity().getString(R.string.thread_load_failed_parsing);
} }
TextView view = new TextView(getActivity()); return errorMessage;
view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
view.setText(errorMessage);
view.setTextSize(24f);
view.setGravity(Gravity.CENTER);
return view;
} }
@Override @Override

@ -19,19 +19,19 @@ package org.floens.chan.ui.view;
import org.floens.chan.core.loader.Loader; import org.floens.chan.core.loader.Loader;
import org.floens.chan.core.manager.ThreadManager; import org.floens.chan.core.manager.ThreadManager;
import org.floens.chan.ui.adapter.PostAdapter;
import android.content.Context; import android.content.Context;
import android.os.Handler; import android.os.Handler;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
import android.widget.BaseAdapter;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
public class ThreadWatchCounterView extends TextView implements View.OnClickListener { public class ThreadWatchCounterView extends TextView implements View.OnClickListener {
private boolean detached = false; private boolean detached = false;
private ThreadManager tm; private ThreadManager tm;
private BaseAdapter ad; private PostAdapter ad;
public ThreadWatchCounterView(Context activity) { public ThreadWatchCounterView(Context activity) {
super(activity); super(activity);
@ -45,7 +45,7 @@ public class ThreadWatchCounterView extends TextView implements View.OnClickList
super(activity, attbs, style); super(activity, attbs, style);
} }
public void init(final ThreadManager threadManager, final ListView listView, final BaseAdapter adapter) { public void init(final ThreadManager threadManager, final ListView listView, final PostAdapter adapter) {
tm = threadManager; tm = threadManager;
ad = adapter; ad = adapter;
@ -89,6 +89,10 @@ public class ThreadWatchCounterView extends TextView implements View.OnClickList
int time = Math.round(loader.getTimeUntilLoadMore() / 1000f); int time = Math.round(loader.getTimeUntilLoadMore() / 1000f);
String error = ad.getErrorMessage();
if (error != null) {
setText(error);
} else {
if (time <= 0) { if (time <= 0) {
setText("Loading"); setText("Loading");
} else { } else {
@ -96,3 +100,4 @@ public class ThreadWatchCounterView extends TextView implements View.OnClickList
} }
} }
} }
}

Loading…
Cancel
Save