package org.ebookdroid.ui.viewer.dialogs;
import org.sufficientlysecure.viewer.R;
import org.ebookdroid.common.settings.books.BookSettings;
import org.ebookdroid.core.codec.OutlineLink;
import org.ebookdroid.ui.viewer.IActivityController;
import org.ebookdroid.ui.viewer.adapters.OutlineAdapter;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import java.util.List;
import org.emdev.ui.actions.ActionController;
import org.emdev.utils.LayoutUtils;
public class OutlineDialog extends Dialog implements OnItemClickListener {
final IActivityController base;
final List<OutlineLink> outline;
final ActionController<OutlineDialog> actions;
public OutlineDialog(final IActivityController base, final List<OutlineLink> outline) {
super(base.getContext());
this.base = base;
this.outline = outline;
this.actions = new ActionController<OutlineDialog>(base, this);
}
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle(R.string.outline_title);
final ListView listView = (ListView) base.getActivity().getLayoutInflater().inflate(R.layout.outline, null);
setContentView(listView);
LayoutUtils.maximizeWindow(getWindow()); // must be after setContentView()
final BookSettings bs = base.getBookSettings();
OutlineLink current = null;
if (bs != null) {
final int currentIndex = bs.currentPage.docIndex;
for (final OutlineLink item : outline) {
int targetIndex = item.targetPage - 1;
if (targetIndex <= currentIndex) {
if (targetIndex >= 0) {
current = item;
}
} else {
break;
}
}
}
final OutlineAdapter adapter = new OutlineAdapter(getContext(), base, outline, current);
listView.setAdapter(adapter);
listView.setOnItemClickListener(this);
if (current != null) {
int pos = adapter.getItemPosition(current);
if (pos != -1) {
listView.setSelection(pos);
}
}
}
@Override
public void onItemClick(final AdapterView<?> parent, final View view, final int position, final long id) {
this.dismiss();
actions.getOrCreateAction(R.id.actions_gotoOutlineItem).onItemClick(parent, view, position, id);
}
}