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. 37
      Clover/app/src/main/java/org/floens/chan/ui/adapter/PostAdapter.java
  5. 10
      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) {
if (loader != null && (loader.getLoadable().isBoardMode() || loader.getLoadable().isCatalogMode())) {
threadManagerListener.onOPClicked(post);
if (loader != null) {
threadManagerListener.onPostClicked(post);
}
}
@ -581,7 +581,7 @@ public class ThreadManager implements Loader.LoaderListener {
public void onThreadLoadError(VolleyError error);
public void onOPClicked(Post post);
public void onPostClicked(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 onSetFilter(String filter);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

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

@ -73,6 +73,7 @@ public class PostAdapter extends BaseAdapter implements Filterable {
private long lastViewedTime = 0;
private String loadMessage = null;
private String filter = "";
private int pendingScrollToPost = -1;
public PostAdapter(Context activity, ThreadManager threadManager, AbsListView listView, PostAdapterListener listener) {
context = activity;
@ -183,6 +184,16 @@ public class PostAdapter extends BaseAdapter implements Filterable {
}
notifyDataSetChanged();
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,19 +258,23 @@ public class PostAdapter extends BaseAdapter implements Filterable {
}
public void scrollToPost(int no) {
notifyDataSetChanged();
if (isFiltering()) {
pendingScrollToPost = no;
} else {
notifyDataSetChanged();
synchronized (lock) {
for (int i = 0; i < displayList.size(); i++) {
if (displayList.get(i).no == no) {
if (Math.abs(i - listView.getFirstVisiblePosition()) > 20 || listView.getChildCount() == 0) {
listView.setSelection(i);
} else {
ScrollerRunnable r = new ScrollerRunnable(listView);
r.start(i);
}
synchronized (lock) {
for (int i = 0; i < displayList.size(); i++) {
if (displayList.get(i).no == no) {
if (Math.abs(i - listView.getFirstVisiblePosition()) > 20 || listView.getChildCount() == 0) {
listView.setSelection(i);
} else {
ScrollerRunnable r = new ScrollerRunnable(listView);
r.start(i);
}
break;
break;
}
}
}
}

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

Loading…
Cancel
Save