1 package org.coolreader.crengine; 2 3 import java.util.ArrayList; 4 5 public class TOCItem { 6 private TOCItem mParent; 7 private int mLevel; 8 private int mIndex; 9 private int mGlobalIndex=-1; 10 private int mPage; 11 private int mPercent; 12 private boolean mExpanded; 13 private String mName; 14 private String mPath; 15 private ArrayList<TOCItem> mChildren; 16 // create root item TOCItem()17 public TOCItem() { 18 } 19 // create child item addChild()20 public TOCItem addChild() { 21 if ( mChildren==null ) 22 mChildren = new ArrayList<TOCItem>(); 23 TOCItem item = new TOCItem(); 24 item.mParent = this; 25 item.mIndex = mChildren.size(); 26 mChildren.add(item); 27 return item; 28 } getChildCount()29 public int getChildCount(){ 30 return mChildren!=null ? mChildren.size() : 0; 31 } getChild( int index)32 public TOCItem getChild( int index) { 33 return mChildren.get(index); 34 } getParent()35 public TOCItem getParent() { 36 return mParent; 37 } getLevel()38 public int getLevel() { 39 return mLevel; 40 } getIndex()41 public int getIndex() { 42 return mIndex; 43 } getGlobalIndex()44 public int getGlobalIndex() { 45 return mGlobalIndex; 46 } setGlobalIndex( int index )47 public void setGlobalIndex( int index ) { 48 mGlobalIndex = index; 49 } getExpanded()50 public boolean getExpanded() { 51 return mExpanded; 52 } setExpanded( boolean expanded )53 public void setExpanded( boolean expanded ) { 54 mExpanded = expanded; 55 } getPage()56 public int getPage() { 57 return mPage; 58 } getPercent()59 public int getPercent() { 60 return mPercent; 61 } getName()62 public String getName() { 63 return mName; 64 } getPath()65 public String getPath() { 66 return mPath; 67 } getChapterAtPage(int page)68 public TOCItem getChapterAtPage(int page) 69 { 70 if ( this.getChildCount() > 1) { 71 72 TOCItem curChapter = null; 73 for ( int i=this.getChildCount()-1; i>=0; i-- ) { 74 curChapter = this.getChild(i); 75 if ( curChapter.getPage()<=page ) 76 if (curChapter.getChildCount() > 1) 77 return curChapter.getChapterAtPage(page); 78 else 79 return curChapter; 80 } 81 } 82 return this; 83 } getNextChapter()84 public TOCItem getNextChapter() 85 { 86 if (this.getParent() == null) 87 return null; 88 89 TOCItem parent = this.getParent(); 90 int pos = parent.mChildren.indexOf(this); 91 if (pos < parent.getChildCount()-1) 92 return parent.getChild(pos+1); 93 94 return parent.getNextChapter(); 95 } 96 } 97