Search in sources :

Example 1 with OutlineAdapter

use of com.foobnix.pdf.info.presentation.OutlineAdapter in project LibreraReader by foobnix.

the class DragingDialogs method showContent.

public static DragingPopup showContent(final FrameLayout anchor, final DocumentController controller) {
    final OnItemClickListener onClickContent = new OnItemClickListener() {

        @Override
        public void onItemClick(final AdapterView<?> parent, final View view, final int position, final long id) {
            final OutlineLinkWrapper link = (OutlineLinkWrapper) parent.getItemAtPosition(position);
            if (link.targetPage != -1) {
                int pageCount = controller.getPageCount();
                if (link.targetPage < 1 || link.targetPage > pageCount) {
                    Toast.makeText(anchor.getContext(), "no", Toast.LENGTH_SHORT).show();
                } else {
                    controller.onGoToPage(link.targetPage);
                // ((ListView) parent).requestFocusFromTouch();
                // ((ListView) parent).setSelection(position);
                }
                return;
            }
        }
    };
    DragingPopup dragingPopup = new DragingPopup(anchor.getContext().getString(R.string.content_of_book), anchor, 300, 400) {

        @Override
        public View getContentView(LayoutInflater inflater) {
            View view = inflater.inflate(R.layout.dialog_recent_books, null, false);
            LinearLayout attachemnts = (LinearLayout) view.findViewById(R.id.mediaAttachments);
            List<String> mediaAttachments = controller.getMediaAttachments();
            if (mediaAttachments != null && !mediaAttachments.isEmpty()) {
                view.findViewById(R.id.mediaAttachmentsScroll).setVisibility(View.VISIBLE);
                for (final String fname : mediaAttachments) {
                    String[] split = fname.split(",");
                    final String nameFull = split[0];
                    String name = nameFull;
                    if (name.contains("/")) {
                        name = name.substring(name.lastIndexOf("/") + 1);
                    }
                    long size = Long.parseLong(split[1]);
                    TextView t = new TextView(anchor.getContext());
                    t.setText(TxtUtils.underline(name + " (" + ExtUtils.readableFileSize(size) + ")"));
                    t.setPadding(Dips.dpToPx(2), Dips.dpToPx(2), Dips.dpToPx(2), Dips.dpToPx(2));
                    t.setBackgroundResource(R.drawable.bg_clickable);
                    attachemnts.addView(t);
                    t.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            new AsyncTask<Void, Void, File>() {

                                ProgressDialog dialog;

                                @Override
                                protected void onPreExecute() {
                                    dialog = ProgressDialog.show(controller.getActivity(), "", controller.getString(R.string.msg_loading));
                                }

                                @Override
                                protected File doInBackground(Void... params) {
                                    return EpubExtractor.extractAttachment(controller.getCurrentBook(), nameFull);
                                }

                                @Override
                                protected void onPostExecute(File aPath) {
                                    try {
                                        dialog.dismiss();
                                        if (aPath != null && aPath.isFile()) {
                                            LOG.d("Try to open path", aPath);
                                            ExtUtils.openWith(anchor.getContext(), aPath);
                                        } else {
                                            Toast.makeText(controller.getActivity(), R.string.msg_unexpected_error, Toast.LENGTH_LONG).show();
                                        }
                                    } catch (Exception e) {
                                        LOG.e(e);
                                    }
                                }
                            }.execute();
                        }
                    });
                }
            } else {
                view.findViewById(R.id.mediaAttachmentsScroll).setVisibility(View.GONE);
            }
            final ListView contentList = (ListView) view.findViewById(R.id.contentList);
            contentList.setSelector(android.R.color.transparent);
            contentList.setVerticalScrollBarEnabled(false);
            final Runnable showOutline = new Runnable() {

                @Override
                public void run() {
                    controller.getOutline(new ResultResponse<List<OutlineLinkWrapper>>() {

                        @Override
                        public boolean onResultRecive(final List<OutlineLinkWrapper> outline) {
                            contentList.post(new Runnable() {

                                @Override
                                public void run() {
                                    if (outline != null && outline.size() > 0) {
                                        contentList.clearChoices();
                                        OutlineLinkWrapper currentByPageNumber = OutlineHelper.getCurrentByPageNumber(outline, controller.getCurentPageFirst1());
                                        final OutlineAdapter adapter = new OutlineAdapter(controller.getActivity(), outline, currentByPageNumber, controller.getPageCount());
                                        contentList.setAdapter(adapter);
                                        contentList.setOnItemClickListener(onClickContent);
                                        contentList.setSelection(adapter.getItemPosition(currentByPageNumber) - 3);
                                    }
                                }
                            });
                            return false;
                        }
                    }, true);
                }
            };
            contentList.postDelayed(showOutline, 50);
            if (false && BookType.FB2.is(controller.getCurrentBook().getPath())) {
                setTitlePopupIcon(AppState.get().outlineMode == AppState.OUTLINE_ONLY_HEADERS ? R.drawable.glyphicons_114_justify : R.drawable.glyphicons_114_justify_sub);
                titlePopupMenu = new MyPopupMenu(controller.getActivity(), null);
                List<Integer> names = Arrays.asList(R.string.headings_only, R.string.heading_and_subheadings);
                final List<Integer> icons = Arrays.asList(R.drawable.glyphicons_114_justify, R.drawable.glyphicons_114_justify_sub);
                final List<Integer> actions = Arrays.asList(AppState.OUTLINE_ONLY_HEADERS, AppState.OUTLINE_HEADERS_AND_SUBHEADERES);
                for (int i = 0; i < names.size(); i++) {
                    final int index = i;
                    titlePopupMenu.getMenu().add(names.get(i)).setIcon(icons.get(i)).setOnMenuItemClickListener(new OnMenuItemClickListener() {

                        @Override
                        public boolean onMenuItemClick(MenuItem item) {
                            AppState.get().outlineMode = actions.get(index);
                            setTitlePopupIcon(icons.get(index));
                            showOutline.run();
                            return false;
                        }
                    });
                }
            }
            return view;
        }
    }.show("showContent", false, true);
    return dragingPopup;
}
Also used : ResultResponse(com.foobnix.android.utils.ResultResponse) OnMenuItemClickListener(android.view.MenuItem.OnMenuItemClickListener) ProgressDialog(android.app.ProgressDialog) ListView(android.widget.ListView) AbsListView(android.widget.AbsListView) ArrayList(java.util.ArrayList) List(java.util.List) TextView(android.widget.TextView) OutlineAdapter(com.foobnix.pdf.info.presentation.OutlineAdapter) OnItemClickListener(android.widget.AdapterView.OnItemClickListener) MenuItem(android.view.MenuItem) ImageView(android.widget.ImageView) RecyclerView(android.support.v7.widget.RecyclerView) GridView(android.widget.GridView) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) ListView(android.widget.ListView) AbsListView(android.widget.AbsListView) SuppressLint(android.annotation.SuppressLint) OutlineLinkWrapper(com.foobnix.pdf.info.model.OutlineLinkWrapper) LayoutInflater(android.view.LayoutInflater) OnClickListener(android.view.View.OnClickListener) AdapterView(android.widget.AdapterView) File(java.io.File) LinearLayout(android.widget.LinearLayout)

Aggregations

SuppressLint (android.annotation.SuppressLint)1 ProgressDialog (android.app.ProgressDialog)1 RecyclerView (android.support.v7.widget.RecyclerView)1 LayoutInflater (android.view.LayoutInflater)1 MenuItem (android.view.MenuItem)1 OnMenuItemClickListener (android.view.MenuItem.OnMenuItemClickListener)1 View (android.view.View)1 OnClickListener (android.view.View.OnClickListener)1 AbsListView (android.widget.AbsListView)1 AdapterView (android.widget.AdapterView)1 OnItemClickListener (android.widget.AdapterView.OnItemClickListener)1 GridView (android.widget.GridView)1 ImageView (android.widget.ImageView)1 LinearLayout (android.widget.LinearLayout)1 ListView (android.widget.ListView)1 TextView (android.widget.TextView)1 ResultResponse (com.foobnix.android.utils.ResultResponse)1 OutlineLinkWrapper (com.foobnix.pdf.info.model.OutlineLinkWrapper)1 OutlineAdapter (com.foobnix.pdf.info.presentation.OutlineAdapter)1 File (java.io.File)1