Search in sources :

Example 1 with OutlineLinkWrapper

use of com.foobnix.pdf.info.model.OutlineLinkWrapper in project LibreraReader by foobnix.

the class OutlineAdapter method getView.

@Override
public View getView(final int position, final View convertView, final ViewGroup parent) {
    final int id = (int) getItemId(position);
    View container = null;
    if (convertView == null) {
        container = LayoutInflater.from(context).inflate(R.layout.outline_item, parent, false);
    } else {
        container = convertView;
    }
    final TextView view = (TextView) container.findViewById(R.id.outline_title);
    final TextView num = (TextView) container.findViewById(R.id.pageNumber);
    final ImageView btn = (ImageView) container.findViewById(R.id.outline_collapse);
    final OutlineLinkWrapper item = getItem(position);
    view.setText(item.getTitleAsString().trim());
    num.setText(TxtUtils.deltaPage(item.targetPage));
    if (item.targetPage <= 0) {
        num.setVisibility(View.INVISIBLE);
    } else {
        num.setVisibility(View.VISIBLE);
    }
    if (currentId == id) {
        container.setBackgroundResource(R.color.tint_blue_alpha);
    } else {
        container.setBackgroundColor(Color.TRANSPARENT);
    }
    container.setTag(position);
    view.setTag(position);
    btn.setTag(position);
    ((LinearLayout.LayoutParams) btn.getLayoutParams()).leftMargin = item.level * Dips.dpToPx(20);
    container.setOnClickListener(itemListener);
    if (states[id] == OutlineItemState.LEAF) {
        // btn.setBackgroundColor(Color.TRANSPARENT);
        btn.setImageDrawable(null);
        btn.setOnClickListener(itemListener);
        btn.setBackgroundColor(Color.TRANSPARENT);
    } else {
        btn.setBackgroundResource(R.drawable.bg_clickable);
        btn.setOnClickListener(collapseListener);
        btn.setImageResource(states[id] == OutlineItemState.EXPANDED ? R.drawable.screen_zoom_out_dark : R.drawable.screen_zoom_in_dark);
        TintUtil.setTintImageWithAlpha(btn, view.getCurrentTextColor());
    }
    return container;
}
Also used : OutlineLinkWrapper(com.foobnix.pdf.info.model.OutlineLinkWrapper) TextView(android.widget.TextView) ImageView(android.widget.ImageView) ImageView(android.widget.ImageView) TextView(android.widget.TextView) View(android.view.View) ListView(android.widget.ListView) LinearLayout(android.widget.LinearLayout)

Example 2 with OutlineLinkWrapper

use of com.foobnix.pdf.info.model.OutlineLinkWrapper in project LibreraReader by foobnix.

the class HorizontalViewActivity method loadUI.

public void loadUI() {
    titleTxt.setText(dc.getTitle());
    createAdapter();
    viewPager.addOnPageChangeListener(onViewPagerChangeListener);
    viewPager.setCurrentItem(dc.getCurentPage(), false);
    seekBar.setMax(dc.getPageCount() - 1);
    seekBar.setProgress(dc.getCurentPage());
    bottomIndicators.setOnTouchListener(new HorizontallSeekTouchEventListener(onSeek, dc.getPageCount(), false));
    progressDraw.setOnTouchListener(new HorizontallSeekTouchEventListener(onSeek, dc.getPageCount(), false));
    bottomIndicators.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            nextPage();
        }
    });
    updateLockMode();
    tinUI();
    onViewPagerChangeListener.onPageSelected(dc.getCurentPage());
    progressDraw.updatePageCount(dc.getPageCount());
    dc.getOutline(new ResultResponse<List<OutlineLinkWrapper>>() {

        @Override
        public boolean onResultRecive(List<OutlineLinkWrapper> result) {
            onClose.setVisibility(View.VISIBLE);
            progressDraw.updateDivs(result);
            if (TxtUtils.isListEmpty(result)) {
                TintUtil.setTintImageWithAlpha(outline, Color.LTGRAY);
            }
            return false;
        }
    }, false);
    showHelp();
}
Also used : OutlineLinkWrapper(com.foobnix.pdf.info.model.OutlineLinkWrapper) HorizontallSeekTouchEventListener(com.foobnix.pdf.info.view.HorizontallSeekTouchEventListener) OnClickListener(android.view.View.OnClickListener) List(java.util.List) ImageView(android.widget.ImageView) View(android.view.View) TextView(android.widget.TextView) UnderlineImageView(com.foobnix.pdf.info.view.UnderlineImageView)

Example 3 with OutlineLinkWrapper

use of com.foobnix.pdf.info.model.OutlineLinkWrapper 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)

Example 4 with OutlineLinkWrapper

use of com.foobnix.pdf.info.model.OutlineLinkWrapper in project LibreraReader by foobnix.

the class ProgressDraw method onDraw.

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.save();
    try {
        int titleColor = AppState.get().isDayNotInvert ? MagicHelper.otherColor(AppState.get().colorDayBg, -0.05f) : MagicHelper.otherColor(AppState.get().colorNigthBg, 0.05f);
        // Color.BLACK;
        if (AppState.get().isAlwaysOpenAsMagazine) {
        } else {
            canvas.drawColor(titleColor);
        }
        paint.setColor(color);
        paint1.setColor(titleColor);
        float k = (float) getWidth() / pageCount;
        int h = getHeight();
        int currentChapter = 0;
        if (AppState.get().isShowChaptersOnProgress && dividers != null && !dividers.isEmpty()) {
            LOG.d("deep level", deep);
            for (OutlineLinkWrapper item : dividers) {
                int pos = item.targetPage - 1;
                if (pos < 0 || item.level > deep || item.getTitleRaw().endsWith(Fb2Extractor.FOOTER_AFTRER_BOODY)) {
                    continue;
                }
                if (pos <= progress) {
                    currentChapter = pos;
                } else {
                    canvas.drawLine(pos * k, 0, pos * k, h, paint);
                }
            }
        }
        canvas.drawRect(0, 0, progress * k, h, paint);
        if (currentChapter != 0) {
            canvas.drawLine(currentChapter * k, 0, currentChapter * k, h, paint1);
        }
    } catch (Exception e) {
        LOG.e(e);
    }
    canvas.restore();
}
Also used : OutlineLinkWrapper(com.foobnix.pdf.info.model.OutlineLinkWrapper) Paint(android.graphics.Paint)

Example 5 with OutlineLinkWrapper

use of com.foobnix.pdf.info.model.OutlineLinkWrapper in project LibreraReader by foobnix.

the class ProgressDraw method updateDivs.

public void updateDivs(List<OutlineLinkWrapper> dividers) {
    this.dividers = dividers;
    level0count = 0;
    level1count = 0;
    if (dividers == null || dividers.isEmpty()) {
        return;
    }
    int first = dividers.get(0).level;
    LOG.d("deep first", first);
    for (OutlineLinkWrapper link : dividers) {
        if (link.level == 0 + first) {
            level0count++;
        }
        if (link.level == 1 + first) {
            level1count++;
        }
        if (link.level == 2 + first) {
            level2count++;
        }
    }
    if (level0count >= max_count) {
        deep = 0;
    } else if (level1count >= max_count) {
        deep = 1;
    } else if (level2count >= max_count) {
        deep = 2;
    } else {
        deep = 3;
    }
    deep += first;
    invalidate();
}
Also used : OutlineLinkWrapper(com.foobnix.pdf.info.model.OutlineLinkWrapper) Paint(android.graphics.Paint)

Aggregations

OutlineLinkWrapper (com.foobnix.pdf.info.model.OutlineLinkWrapper)5 View (android.view.View)3 ImageView (android.widget.ImageView)3 TextView (android.widget.TextView)3 Paint (android.graphics.Paint)2 OnClickListener (android.view.View.OnClickListener)2 LinearLayout (android.widget.LinearLayout)2 ListView (android.widget.ListView)2 List (java.util.List)2 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 AbsListView (android.widget.AbsListView)1 AdapterView (android.widget.AdapterView)1 OnItemClickListener (android.widget.AdapterView.OnItemClickListener)1 GridView (android.widget.GridView)1 ResultResponse (com.foobnix.android.utils.ResultResponse)1