package org.wheelmap.android.popup;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import org.wheelmap.android.activity.MapActivity;
import org.wheelmap.android.adapter.WheelchairToiletSelectAdapter;
import org.wheelmap.android.adapter.WheelchairStateSelectAdapter;
import org.wheelmap.android.manager.SupportManager;
import org.wheelmap.android.online.R;
import org.wheelmap.android.utils.MapActivityUtils;
import org.wheelmap.android.view.WheelchairFilterStateItemView;
public class FilterWindow extends PopupWindow {
MapActivity context;
View menuView;
View menuItemView;
private final int viewPadding = 20;
int height = 0;
public FilterWindow(MapActivity context, View menuView, View menuItemView) {
super(context);
this.context = context;
this.menuItemView = menuItemView;
this.menuView = menuView;
init();
}
public void init() {
setBackgroundDrawable(new BitmapDrawable());
setFocusable(true);
setOutsideTouchable(true);
LinearLayout layoutContainer = new LinearLayout(context);
layoutContainer.setOrientation(LinearLayout.VERTICAL);
layoutContainer.setBackgroundColor(Color.WHITE);
WheelchairStateSelectAdapter filterAdapter;
if (menuItemView != null) {
if (menuItemView.getId() == R.id.menu_filter) {
filterAdapter = new WheelchairStateSelectAdapter(context);
} else {
filterAdapter = new WheelchairToiletSelectAdapter(context);
}
initFilterAdapterUsage(layoutContainer, filterAdapter);
setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
layoutContainer.measure(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT);
height = layoutContainer.getMeasuredHeight();
layoutContainer.setPadding(viewPadding, viewPadding, viewPadding, viewPadding);
setContentView(layoutContainer);
}
}
private void initFilterAdapterUsage(LinearLayout layoutContainer, final WheelchairStateSelectAdapter adapter) {
for (int i = 0; i < adapter.getCount(); i++) {
final int pos = i;
final WheelchairFilterStateItemView view = adapter.getView(i, null, null);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SupportManager.AccessFilterAttributes item = adapter.getItem(pos);
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean isSet = mPrefs.getBoolean(item.prefsKey, true);
boolean toggleSet = !isSet;
mPrefs.edit().putBoolean(item.prefsKey, toggleSet).commit();
view.mWheelStateCheckBox.setChecked(toggleSet);
if (menuItemView.getId() == R.id.menu_filter) {
MapActivityUtils.setAccessFilterOptionDrawable(context, null, menuItemView);
} else {
MapActivityUtils.setWcFilterOptionsDrawable(context, null, menuItemView);
}
}
}
);
layoutContainer.addView(view);
}
}
@Override
public void showAsDropDown(View anchor) {
int[] coords = new int[2];
anchor.getLocationOnScreen(coords);
if (coords[1] > height) {
super.showAsDropDown(anchor, 0, -(height + anchor.getHeight() + viewPadding * 2));
} else {
super.showAsDropDown(anchor);
}
}
}