package net.miz_hi.smileessence.command;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import net.miz_hi.smileessence.Client;
import net.miz_hi.smileessence.dialog.CheckBoxListDialog;
import net.miz_hi.smileessence.dialog.CheckBoxListDialog.CheckBoxItem;
import net.miz_hi.smileessence.menu.TweetMenu;
import net.miz_hi.smileessence.model.status.tweet.TweetModel;
import net.miz_hi.smileessence.preference.EnumPreferenceKey.EnumValueType;
import java.util.ArrayList;
import java.util.HashMap;
public class CommandEditMenu extends MenuCommand
{
private Activity activity;
public CommandEditMenu(Activity activity)
{
this.activity = activity;
}
@Override
public String getName()
{
return "メニュー表示設定";
}
@Override
public void workOnUiThread()
{
final CheckBoxListDialog listDialog = new CheckBoxListDialog(activity);
listDialog.setTitle("表示する項目を設定してください");
ArrayList<CheckBoxItem> list = new ArrayList<CheckBoxItem>();
final HashMap<CheckBoxItem, ICommand> map = new HashMap<CheckBoxItem, ICommand>();
TweetModel nullModel = TweetModel.getSampleModel();
TweetMenu adapter = new TweetMenu(activity, nullModel);
for (ICommand item : adapter.getStatusMenu())
{
if (item instanceof IHideable && item.getDefaultVisibility())
{
boolean startValue = Client.getPreferenceHelper().getPreferenceValue(item.getClass().getSimpleName(), EnumValueType.BOOLEAN, false);
CheckBoxItem checkBoxItem = new CheckBoxItem(item.getName(), startValue);
list.add(checkBoxItem);
map.put(checkBoxItem, item);
}
}
listDialog.setItems((list.toArray(new CheckBoxItem[0])));
listDialog.setOnClicked(new OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
switch (which)
{
case DialogInterface.BUTTON_POSITIVE:
{
CheckBoxItem[] items = listDialog.getItems();
for (CheckBoxItem item : items)
{
boolean value = item.value;
ICommand command = map.get(item);
Client.getPreferenceHelper().putPreferenceValue(command.getClass().getSimpleName(), EnumValueType.BOOLEAN, item.value);
}
dialog.dismiss();
break;
}
default:
{
dialog.dismiss();
}
}
}
});
listDialog.createDialog().show();
}
}