package de.jeisfeld.augendiagnoselib.fragments;
import android.app.DialogFragment;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TextView;
import de.jeisfeld.augendiagnoselib.R;
import de.jeisfeld.augendiagnoselib.activities.ListFoldersForDisplayActivity;
import de.jeisfeld.augendiagnoselib.util.DialogUtil;
import de.jeisfeld.augendiagnoselib.util.DialogUtil.ConfirmDialogFragment.ConfirmDialogListener;
import de.jeisfeld.augendiagnoselib.util.ImageSelectionAndDisplayHandler;
/**
* Fragment to display the list of subfolders of the eye photo folder with the goal to display them after selection.
*/
public class ListFoldersForDisplayFragment extends ListFoldersBaseFragment {
@Override
public final void onActivityCreated(final Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
registerForContextMenu(mListView);
}
@Override
public final void onDestroyView() {
super.onDestroyView();
ImageSelectionAndDisplayHandler.clean();
}
@Override
protected final void setOnItemClickListener() {
mListView.setOnItemClickListener(new ShowContentsOnClickListener());
}
@Override
public final void onCreateContextMenu(final ContextMenu menu, final View v, final ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.context_name_list, menu);
}
@Override
public final boolean onContextItemSelected(@NonNull final MenuItem item) {
if (item.getGroupId() == R.id.menugroup_name_list) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
final CharSequence name = ((TextView) info.targetView).getText();
int itemId = item.getItemId();
if (itemId == R.id.action_change_name) {
showChangeNameDialog(name, name);
return true;
}
else if (itemId == R.id.action_delete_images) {
ConfirmDialogListener listener = new ConfirmDialogListener() {
private static final long serialVersionUID = 1L;
@Override
public void onDialogPositiveClick(final DialogFragment dialog) {
deleteFolder(name.toString());
((ListFoldersForDisplayActivity) getActivity()).handleRemoveName(name.toString());
}
@Override
public void onDialogNegativeClick(final DialogFragment dialog) {
// Do nothing
}
};
DialogUtil.displayConfirmationMessage(getActivity(), listener, R.string.button_delete,
R.string.message_dialog_confirm_delete_folder, name);
return true;
}
else {
return super.onContextItemSelected(item);
}
}
else {
return super.onContextItemSelected(item);
}
}
/**
* Item click listener showing the pictures of the selected folder (in eye photo pairs) for selection of one or two
* pictures.
*/
private class ShowContentsOnClickListener implements OnItemClickListener {
@Override
public void onItemClick(final AdapterView<?> parent, @NonNull final View view, final int position, final long id) {
((ListFoldersForDisplayActivity) getActivity()).listPicturesForName(((TextView) view).getText().toString());
}
}
}