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;
}
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();
}
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;
}
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();
}
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();
}
Aggregations