Added tap to scroll when filtering a thread.

captchafix
Florens Douwes 11 years ago
parent 0f34890000
commit 0db08433c7
  1. 6
      Clover/app/src/main/java/org/floens/chan/core/manager/ThreadManager.java
  2. 2
      Clover/app/src/main/java/org/floens/chan/ui/activity/BaseActivity.java
  3. 10
      Clover/app/src/main/java/org/floens/chan/ui/activity/BoardActivity.java
  4. 15
      Clover/app/src/main/java/org/floens/chan/ui/adapter/PostAdapter.java
  5. 8
      Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java

@ -225,8 +225,8 @@ public class ThreadManager implements Loader.LoaderListener {
} }
public void onPostClicked(Post post) { public void onPostClicked(Post post) {
if (loader != null && (loader.getLoadable().isBoardMode() || loader.getLoadable().isCatalogMode())) { if (loader != null) {
threadManagerListener.onOPClicked(post); threadManagerListener.onPostClicked(post);
} }
} }
@ -581,7 +581,7 @@ public class ThreadManager implements Loader.LoaderListener {
public void onThreadLoadError(VolleyError error); public void onThreadLoadError(VolleyError error);
public void onOPClicked(Post post); public void onPostClicked(Post post);
public void onThumbnailClicked(Post post); public void onThumbnailClicked(Post post);

@ -93,6 +93,8 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene
abstract public void onThreadLoaded(Loadable loadable, List<Post> posts); abstract public void onThreadLoaded(Loadable loadable, List<Post> posts);
abstract public void onSetFilter(String filter);
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);

@ -68,6 +68,7 @@ public class BoardActivity extends BaseActivity implements AdapterView.OnItemSel
private boolean ignoreNextOnItemSelected = false; private boolean ignoreNextOnItemSelected = false;
private Spinner boardSpinner; private Spinner boardSpinner;
private BoardSpinnerAdapter spinnerAdapter; private BoardSpinnerAdapter spinnerAdapter;
private SearchView searchView;
private MenuItem searchMenuItem; private MenuItem searchMenuItem;
private boolean searchBoard; private boolean searchBoard;
@ -190,7 +191,7 @@ public class BoardActivity extends BaseActivity implements AdapterView.OnItemSel
searchMenuItem = menu.findItem(R.id.action_search); searchMenuItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) searchMenuItem.getActionView(); searchView = (SearchView) searchMenuItem.getActionView();
searchView.setQueryHint(getString(R.string.search_hint)); searchView.setQueryHint(getString(R.string.search_hint));
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override @Override
@ -223,6 +224,13 @@ public class BoardActivity extends BaseActivity implements AdapterView.OnItemSel
return true; return true;
} }
@Override
public void onSetFilter(String filter) {
if (searchView != null) {
searchView.setQuery("", true);
}
}
@Override @Override
public void onConfigurationChanged(Configuration newConfig) { public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig); super.onConfigurationChanged(newConfig);

@ -73,6 +73,7 @@ public class PostAdapter extends BaseAdapter implements Filterable {
private long lastViewedTime = 0; private long lastViewedTime = 0;
private String loadMessage = null; private String loadMessage = null;
private String filter = ""; private String filter = "";
private int pendingScrollToPost = -1;
public PostAdapter(Context activity, ThreadManager threadManager, AbsListView listView, PostAdapterListener listener) { public PostAdapter(Context activity, ThreadManager threadManager, AbsListView listView, PostAdapterListener listener) {
context = activity; context = activity;
@ -183,6 +184,16 @@ public class PostAdapter extends BaseAdapter implements Filterable {
} }
notifyDataSetChanged(); notifyDataSetChanged();
listener.onFilterResults(filter, ((List<Post>) results.values).size(), TextUtils.isEmpty(filter)); listener.onFilterResults(filter, ((List<Post>) results.values).size(), TextUtils.isEmpty(filter));
if (pendingScrollToPost >= 0) {
final int to = pendingScrollToPost;
pendingScrollToPost = -1;
listView.post(new Runnable() {
@Override
public void run() {
scrollToPost(to);
}
});
}
} }
}; };
} }
@ -247,6 +258,9 @@ public class PostAdapter extends BaseAdapter implements Filterable {
} }
public void scrollToPost(int no) { public void scrollToPost(int no) {
if (isFiltering()) {
pendingScrollToPost = no;
} else {
notifyDataSetChanged(); notifyDataSetChanged();
synchronized (lock) { synchronized (lock) {
@ -264,6 +278,7 @@ public class PostAdapter extends BaseAdapter implements Filterable {
} }
} }
} }
}
public void setErrorMessage(String loadMessage) { public void setErrorMessage(String loadMessage) {
this.loadMessage = loadMessage; this.loadMessage = loadMessage;

@ -22,6 +22,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.res.TypedArray; import android.content.res.TypedArray;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.Gravity; import android.view.Gravity;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -162,8 +163,13 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana
} }
@Override @Override
public void onOPClicked(Post post) { public void onPostClicked(Post post) {
if (loadable.isBoardMode() || loadable.isCatalogMode()) {
baseActivity.onOPClicked(post); baseActivity.onOPClicked(post);
} else if (loadable.isThreadMode() && !TextUtils.isEmpty(lastFilter)) {
baseActivity.onSetFilter("");
postAdapter.scrollToPost(post.no);
}
} }
@Override @Override

Loading…
Cancel
Save