Add sorting of boards A-Z

filtering
Floens 10 years ago
parent 84bba00ea2
commit 161f1e3e8c
  1. 44
      Clover/app/src/main/java/org/floens/chan/ui/controller/BoardEditController.java
  2. 1
      Clover/app/src/main/res/values/strings.xml

@ -45,16 +45,22 @@ import org.floens.chan.core.manager.BoardManager;
import org.floens.chan.core.model.Board;
import org.floens.chan.ui.drawable.ThumbDrawable;
import org.floens.chan.ui.helper.SwipeListener;
import org.floens.chan.ui.toolbar.ToolbarMenu;
import org.floens.chan.ui.toolbar.ToolbarMenuItem;
import org.floens.chan.ui.view.FloatingMenuItem;
import org.floens.chan.utils.AndroidUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import static org.floens.chan.utils.AndroidUtils.dp;
import static org.floens.chan.utils.AndroidUtils.fixSnackbarText;
public class BoardEditController extends Controller implements SwipeListener.Callback, View.OnClickListener {
public class BoardEditController extends Controller implements SwipeListener.Callback, View.OnClickListener, ToolbarMenuItem.ToolbarMenuItemCallback {
private static final int OPTION_SORT_A_Z = 1;
private final BoardManager boardManager = Chan.getBoardManager();
@ -73,6 +79,12 @@ public class BoardEditController extends Controller implements SwipeListener.Cal
super.onCreate();
navigationItem.title = string(R.string.board_edit);
List<FloatingMenuItem> items = new ArrayList<>();
items.add(new FloatingMenuItem(OPTION_SORT_A_Z, R.string.board_edit_sort_a_z));
navigationItem.menu = new ToolbarMenu(context);
navigationItem.createOverflow(context, this, items);
view = inflateRes(R.layout.controller_board_edit);
recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
@ -87,6 +99,23 @@ public class BoardEditController extends Controller implements SwipeListener.Cal
new SwipeListener(context, recyclerView, this);
}
@Override
public void onMenuItemClicked(ToolbarMenuItem item) {
}
@Override
public void onSubMenuItemClicked(ToolbarMenuItem parent, FloatingMenuItem item) {
if (((Integer) item.getId()) == OPTION_SORT_A_Z) {
Collections.sort(boards, new Comparator<Board>() {
@Override
public int compare(Board lhs, Board rhs) {
return lhs.key.compareTo(rhs.key);
}
});
adapter.notifyDataSetChanged();
}
}
@Override
public void onDestroy() {
super.onDestroy();
@ -343,6 +372,10 @@ public class BoardEditController extends Controller implements SwipeListener.Cal
private int TYPE_ITEM = 0;
private int TYPE_HEADER = 1;
public BoardEditAdapter() {
setHasStableIds(true);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_ITEM) {
@ -373,6 +406,15 @@ public class BoardEditController extends Controller implements SwipeListener.Cal
public int getItemCount() {
return boards.size() + 1;
}
@Override
public long getItemId(int position) {
if (getItemViewType(position) == TYPE_HEADER) {
return -1;
} else {
return boards.get(position - 1).id;
}
}
}
private class BoardEditItem extends RecyclerView.ViewHolder {

@ -113,6 +113,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<string name="board_add_duplicate">Board already added</string>
<string name="board_add_unknown_title">Unknown board code</string>
<string name="board_add_unknown">The board with code %1$s is not known.</string>
<string name="board_edit_sort_a_z">Sort A-Z</string>
<string name="drawer_board">Board</string>
<string name="drawer_catalog">Catalog</string>

Loading…
Cancel
Save