package com.ladjzero.uzlee;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.ladjzero.hipda.Forum;
import com.ladjzero.uzlee.utils.Constants;
import com.ladjzero.uzlee.utils.Utils;
import com.mobeta.android.dslv.DragSortListView;
import com.rey.material.app.Dialog;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Transformer;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
/**
* Created by chenzhuo on 15-12-12.
*/
public class ActivityForumPicker extends ActivityEasySlide {
@Bind(R.id.list)
DragSortListView listView;
ArrayAdapter<Forum> selectedAdapter;
Dialog dialog;
List<Forum> selectedForums;
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activity_forum_picker);
ButterKnife.bind(this);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ActionBar mActionbar = getSupportActionBar();
mActionbar.setTitle("选择和排序板块");
mActionbar.setDisplayHomeAsUpEnabled(true);
mActionbar.setDisplayShowCustomEnabled(true);
selectedForums = Utils.getUserSelectedForums(this);
if (selectedForums.size() == 0) {
listView.postDelayed(new Runnable() {
@Override
public void run() {
showPicker();
}
}, 100);
}
selectedAdapter = new ArrayAdapter<Forum>(this, R.layout.list_item_forum_sort, R.id.text, selectedForums);
listView.setAdapter(selectedAdapter);
listView.setDragSortListener(new DragSortListView.DragSortListener() {
@Override
public void drag(int from, int to) {
}
@Override
public void drop(int from, int to) {
if (from != to) {
Forum move = selectedAdapter.getItem(from);
selectedAdapter.remove(move);
selectedAdapter.insert(move, to);
selectedAdapter.notifyDataSetChanged();
}
}
@Override
public void remove(int which) {
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.forums, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
showPicker();
return super.onOptionsItemSelected(item);
}
private void showPicker() {
dialog = new Dialog(this);
View contentView = this.getLayoutInflater().inflate(R.layout.list_forum, null);
final ListView list = (ListView) contentView.findViewById(R.id.list);
final List<Forum> forums = App.getInstance().getUserFlattenForums();
List<Integer> selected = Utils.getAllSelectedForumIds(this);
final List<AdapterCheckableList.DataWrapper> forums2 = new ArrayList<>();
for (Forum f : forums) {
forums2.add(new AdapterCheckableList.DataWrapper(selected.contains(f.getFid()), f));
}
list.setAdapter(new AdapterCheckableList(this, R.layout.checkbox, forums2));
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
selectedAdapter.clear();
List<Forum> seleted = new ArrayList<Forum>();
for (AdapterCheckableList.DataWrapper d : forums2) {
if (d.checked) {
seleted.add((Forum) d.data);
}
}
selectedAdapter.addAll(seleted);
selectedAdapter.notifyDataSetChanged();
}
});
dialog.title("板块")
.positiveAction("确定")
.positiveActionClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
})
.contentView(contentView)
.show();
}
@Override
protected void onDestroy() {
super.onDestroy();
List<String> toCommit = (List<String>) CollectionUtils.collect(selectedForums, new Transformer() {
@Override
public Object transform(Object o) {
return String.valueOf(((Forum) o).getFid());
}
});
getSettings().edit().putString(Constants.PREF_KEY_SELECTED_FORUMS, StringUtils.join(toCommit, ',')).commit();
}
}