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