package net.miz_hi.smileessence.dialog; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.View; import android.view.WindowManager.LayoutParams; import android.widget.ExpandableListView; import android.widget.ExpandableListView.OnGroupClickListener; import net.miz_hi.smileessence.Client; import net.miz_hi.smileessence.command.ICommand; import net.miz_hi.smileessence.command.IHideable; import net.miz_hi.smileessence.menu.ExpandMenuListAdapter; import net.miz_hi.smileessence.menu.MenuElement; import net.miz_hi.smileessence.preference.EnumPreferenceKey.EnumValueType; import net.miz_hi.smileessence.preference.PreferenceHelper; import java.util.ArrayList; import java.util.List; public abstract class ExpandMenuDialog extends MenuDialog { protected View titleView; protected String title; public ExpandMenuDialog(Activity activity) { super(activity); } public void setTitle(View view) { titleView = view; } public View getTitleView() { return titleView; } public void setTitle(String title) { this.title = title; } public abstract List<MenuElement> getElements(); public Dialog create() { dispose(); AlertDialog.Builder builder = new AlertDialog.Builder(activity); if(titleView == null) { builder.setTitle(title); } else { builder.setCustomTitle(titleView); } List<MenuElement> list3 = getElements(); List stub = new ArrayList(); for(MenuElement menuElement : list3) { if(menuElement.isParent()) { List<MenuElement> children = menuElement.getChildren(); List stub1 = new ArrayList(); for(MenuElement menuElement2 : children) { boolean isEnabled = true; ICommand command = menuElement2.getCommand(); if(command != null) { if(command instanceof IHideable) { PreferenceHelper pref = Client.getPreferenceHelper(); isEnabled = pref.getPreferenceValue(command.getClass().getSimpleName(), EnumValueType.BOOLEAN, false); } if(!command.getDefaultVisibility() || !isEnabled) { stub1.add(menuElement2); } } } children.removeAll(stub1); } else { boolean isEnabled = true; ICommand command = menuElement.getCommand(); if(command != null) { if(command instanceof IHideable) { PreferenceHelper pref = Client.getPreferenceHelper(); isEnabled = pref.getPreferenceValue(command.getClass().getSimpleName(), EnumValueType.BOOLEAN, false); } if(!command.getDefaultVisibility() || !isEnabled) { stub.add(menuElement); } } } } list3.removeAll(stub); ExpandableListView listview = new ExpandableListView(activity); listview.setGroupIndicator(Client.getMainActivity().getResources().getDrawable(android.R.color.transparent)); listview.setOnGroupClickListener(new OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { parent.smoothScrollToPosition(groupPosition); return false; } }); ExpandMenuListAdapter adapter = new ExpandMenuListAdapter(activity, list3); listview.setAdapter(adapter); builder.setView(listview); dialog = builder.create(); LayoutParams lp = dialog.getWindow().getAttributes(); DisplayMetrics metrics = activity.getResources().getDisplayMetrics(); lp.width = (int) (metrics.widthPixels * 0.9); lp.gravity = Gravity.CENTER; lp.height = (int) (metrics.heightPixels * 0.8); return dialog; } }