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. 34
      Clover/src/org/floens/chan/ui/fragment/ThreadFragment.java
  3. 17
      Clover/src/org/floens/chan/ui/view/ThreadWatchCounterView.java

@ -45,6 +45,7 @@ public class PostAdapter extends BaseAdapter {
private boolean endOfLine;
private final List<Post> postList = new ArrayList<Post>();
private long lastViewedTime = 0;
private String loadMessage = null;
public PostAdapter(Context activity, ThreadManager threadManager, ListView listView) {
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) {
postAdapter.appendList(posts);
} else {
@ -187,8 +189,12 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana
if (error instanceof EndOfLineException) {
postAdapter.setEndOfLine(true);
} else {
if (container != null) {
container.setView(getLoadErrorTextView(error));
if (postAdapter == null) {
if (container != null) {
container.setView(getLoadErrorTextView(error));
}
} else {
postAdapter.setErrorMessage(getLoadErrorText(error));
}
}
}
@ -199,8 +205,20 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana
* @param error
* @return
*/
public TextView getLoadErrorTextView(VolleyError error) {
String errorMessage = "";
private TextView getLoadErrorTextView(VolleyError error) {
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)) {
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);
}
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;
return errorMessage;
}
@Override

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

Loading…
Cancel
Save