Clicking a popup post will scroll to that post.

captchafix
Florens Douwes 12 years ago
parent bd43fc5947
commit 345e8efa61
  1. 12
      Chan/src/org/floens/chan/fragment/PostRepliesFragment.java
  2. 43
      Chan/src/org/floens/chan/fragment/ThreadFragment.java
  3. 38
      Chan/src/org/floens/chan/manager/ThreadManager.java

@ -97,7 +97,17 @@ public class PostRepliesFragment extends DialogFragment {
postView = new PostView(getActivity());
}
postView.setPost(getItem(position), manager);
final Post p = getItem(position);
postView.setPost(p, manager);
postView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
manager.closeAllPostFragments();
dismiss();
manager.scrollToPost(p);
}
});
return postView;
}

@ -15,6 +15,7 @@ import org.floens.chan.utils.LoadView;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -22,7 +23,11 @@ import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ListView;
import android.widget.TextView;
import com.android.volley.NetworkError;
import com.android.volley.NoConnectionError;
import com.android.volley.ServerError;
import com.android.volley.VolleyError;
public class ThreadFragment extends Fragment implements ThreadManager.ThreadManagerListener {
@ -164,11 +169,36 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana
postAdapter.setEndOfLine(true);
} else {
if (container != null) {
container.setView(threadManager.getLoadErrorTextView(error));
container.setView(getLoadErrorTextView(error));
}
}
}
/**
* Returns an TextView containing the appropriate error message
* @param error
* @return
*/
public TextView getLoadErrorTextView(VolleyError error) {
String errorMessage = "";
if ((error instanceof NoConnectionError) || (error instanceof NetworkError)) {
errorMessage = getActivity().getString(R.string.thread_load_failed_network);
} else if (error instanceof ServerError) {
errorMessage = getActivity().getString(R.string.thread_load_failed_server);
} else {
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;
}
@Override
public void onOPClicked(Post post) {
baseActivity.onOPClicked(post);
@ -176,14 +206,21 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana
@Override
public void onThumbnailClicked(Post source) {
if (isDetached() || postAdapter == null) return;
if (postAdapter != null) {
ImageViewActivity.setAdapter(postAdapter, source.no);
Intent intent = new Intent(baseActivity, ImageViewActivity.class);
baseActivity.startActivity(intent);
baseActivity.overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
}
}
@Override
public void onScrollTo(Post post) {
if (postAdapter != null) {
postAdapter.scrollToPost(post);
}
}
}

@ -31,15 +31,9 @@ import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.net.Uri;
import android.text.TextUtils;
import android.view.Gravity;
import android.widget.CheckBox;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.NetworkError;
import com.android.volley.NoConnectionError;
import com.android.volley.ServerError;
import com.android.volley.VolleyError;
/**
@ -214,29 +208,8 @@ public class ThreadManager implements Loader.LoaderListener {
handleLinkableSelected(linkable);
}
/**
* Returns an TextView containing the appropriate error message
* @param error
* @return
*/
public TextView getLoadErrorTextView(VolleyError error) {
String errorMessage = "";
if ((error instanceof NoConnectionError) || (error instanceof NetworkError)) {
errorMessage = activity.getString(R.string.thread_load_failed_network);
} else if (error instanceof ServerError) {
errorMessage = activity.getString(R.string.thread_load_failed_server);
} else {
errorMessage = activity.getString(R.string.thread_load_failed_parsing);
}
TextView view = new TextView(activity);
view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
view.setText(errorMessage);
view.setTextSize(24f);
view.setGravity(Gravity.CENTER);
return view;
public void scrollToPost(Post post) {
threadManagerListener.onScrollTo(post);
}
private void copyToClipboard(String comment) {
@ -329,7 +302,7 @@ public class ThreadManager implements Loader.LoaderListener {
}
if (p.size() > 0) {
showPostsReplies(p);
showPostsRepliesFragment(p);
}
}
@ -386,7 +359,7 @@ public class ThreadManager implements Loader.LoaderListener {
if (post != null) {
List<Post> l = new ArrayList<Post>();
l.add(post);
showPostsReplies(l);
showPostsRepliesFragment(l);
}
}
} catch(NumberFormatException e) {
@ -402,7 +375,7 @@ public class ThreadManager implements Loader.LoaderListener {
activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(linkable.value)));
}
private void showPostsReplies(List<Post> list) {
private void showPostsRepliesFragment(List<Post> list) {
// Post popups are now queued up, more than 32 popups on top of each other makes the system crash!
popupQueue.add(list);
@ -510,5 +483,6 @@ public class ThreadManager implements Loader.LoaderListener {
public void onThreadLoadError(VolleyError error);
public void onOPClicked(Post post);
public void onThumbnailClicked(Post post);
public void onScrollTo(Post post);
}
}

Loading…
Cancel
Save