package net.osmand.plus.mapcontextmenu.builders.cards.dialogs;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.widget.AppCompatImageView;
import android.support.v7.widget.PopupMenu;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.widget.LinearLayout;
import android.widget.TextView;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.dialogs.DirectionsDialogs;
import net.osmand.util.Algorithms;
public class ContextMenuCardDialogFragment extends Fragment {
public static final String TAG = "ContextMenuCardDialogFragment";
private ContextMenuCardDialog dialog;
private LinearLayout contentLayout;
private View contentView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null && getActivity() instanceof MapActivity) {
dialog = ContextMenuCardDialog.restoreMenu(savedInstanceState, (MapActivity) getActivity());
}
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.context_menu_card_dialog, container, false);
contentLayout = (LinearLayout) view.findViewById(R.id.content);
contentView = dialog.getContentView();
if (contentView != null) {
contentLayout.addView(contentView);
}
view.findViewById(R.id.close_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
if (!Algorithms.isEmpty(dialog.getTitle())) {
((TextView) view.findViewById(R.id.title)).setText(dialog.getTitle());
}
if (!Algorithms.isEmpty(dialog.getDescription())) {
((TextView) view.findViewById(R.id.description)).setText(dialog.getDescription());
}
AppCompatImageView moreButton = (AppCompatImageView) view.findViewById(R.id.more_button);
if (dialog.haveMenuItems()) {
moreButton.setVisibility(View.VISIBLE);
moreButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final PopupMenu optionsMenu = new PopupMenu(getContext(), v);
DirectionsDialogs.setupPopUpMenuIcon(optionsMenu);
dialog.createMenuItems(optionsMenu.getMenu());
optionsMenu.show();
}
});
} else {
moreButton.setVisibility(View.GONE);
}
return view;
}
@Override
public void onResume() {
super.onResume();
if (dialog != null) {
dialog.onResume();
}
}
@Override
public void onPause() {
super.onPause();
if (dialog != null) {
dialog.onPause();
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
if (contentLayout != null && contentView != null) {
contentLayout.removeView(contentView);
if (contentView instanceof WebView) {
((WebView) contentView).loadUrl("about:blank");
}
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
dialog.saveMenu(outState);
}
public static void showInstance(ContextMenuCardDialog menu) {
ContextMenuCardDialogFragment fragment = new ContextMenuCardDialogFragment();
fragment.dialog = menu;
menu.getMapActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.topFragmentContainer, fragment, TAG)
.addToBackStack(TAG).commit();
}
public void dismiss() {
MapActivity activity = dialog.getMapActivity();
if (activity != null) {
try {
activity.getSupportFragmentManager().popBackStack(TAG,
FragmentManager.POP_BACK_STACK_INCLUSIVE);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}