diff options
Diffstat (limited to 'src/keys/treekeyidx.cpp')
-rw-r--r-- | src/keys/treekeyidx.cpp | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/src/keys/treekeyidx.cpp b/src/keys/treekeyidx.cpp index 738d17a..cc93fc0 100644 --- a/src/keys/treekeyidx.cpp +++ b/src/keys/treekeyidx.cpp @@ -1,7 +1,7 @@ /****************************************************************************** * versekey.h - code for class 'versekey'- a standard Biblical verse key * - * $Id: treekeyidx.cpp 2147 2008-03-14 06:54:18Z scribe $ + * $Id: treekeyidx.cpp 2280 2009-03-07 15:34:36Z scribe $ * * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org) * CrossWire Bible Society @@ -91,7 +91,7 @@ const char *TreeKeyIdx::getLocalName() { } -const char *TreeKeyIdx::getUserData(int *size) { +const char *TreeKeyIdx::getUserData(int *size) const { unsnappedKeyText = ""; if (size) *size = (int)currentNode.dsize; @@ -127,12 +127,25 @@ void TreeKeyIdx::save() { void TreeKeyIdx::root() { error = getTreeNodeFromIdxOffset(0, ¤tNode); + positionChanged(); +} + +int TreeKeyIdx::getLevel() { + TreeNode iterator; + iterator.parent = currentNode.parent; + int level = 0; + while (iterator.parent > -1) { + level++; + getTreeNodeFromIdxOffset(iterator.parent, &iterator); + } + return level; } bool TreeKeyIdx::parent() { if (currentNode.parent > -1) { error = getTreeNodeFromIdxOffset(currentNode.parent, ¤tNode); + positionChanged(); return true; } return false; @@ -142,6 +155,7 @@ bool TreeKeyIdx::parent() { bool TreeKeyIdx::firstChild() { if (currentNode.firstChild > -1) { error = getTreeNodeFromIdxOffset(currentNode.firstChild, ¤tNode); + positionChanged(); return true; } return false; @@ -151,6 +165,7 @@ bool TreeKeyIdx::firstChild() { bool TreeKeyIdx::nextSibling() { if (currentNode.next > -1) { error = getTreeNodeFromIdxOffset(currentNode.next, ¤tNode); + positionChanged(); return true; } return false; @@ -168,6 +183,7 @@ bool TreeKeyIdx::previousSibling() { getTreeNodeFromIdxOffset(iterator.next, &iterator); if (iterator.next > -1) { error = getTreeNodeFromIdxOffset(iterator.offset, ¤tNode); + positionChanged(); return true; } } @@ -195,6 +211,7 @@ void TreeKeyIdx::append() { currentNode.clear(); currentNode.offset = idxOffset; currentNode.parent = parent; + positionChanged(); } } @@ -212,6 +229,7 @@ void TreeKeyIdx::appendChild() { currentNode.offset = idxOffset; currentNode.parent = parent; } + positionChanged(); } @@ -253,6 +271,7 @@ void TreeKeyIdx::remove() { } } } + positionChanged(); } } @@ -292,7 +311,7 @@ signed char TreeKeyIdx::create(const char *ipath) { newTree.saveTreeNode(&root); delete [] path; - + return 0; } @@ -394,6 +413,7 @@ unsigned long TreeKeyIdx::getOffset() const { void TreeKeyIdx::setOffset(unsigned long offset) { error = getTreeNodeFromIdxOffset(offset, ¤tNode); + positionChanged(); } @@ -461,6 +481,7 @@ void TreeKeyIdx::copyFrom(const TreeKeyIdx &ikey) { idxfd = FileMgr::getSystemFileMgr()->open(ikey.idxfd->path, ikey.idxfd->mode, ikey.idxfd->perms); datfd = FileMgr::getSystemFileMgr()->open(ikey.datfd->path, ikey.datfd->mode, ikey.datfd->perms); } + positionChanged(); } @@ -520,6 +541,7 @@ void TreeKeyIdx::setText(const char *ikey) { error = KEYERR_OUTOFBOUNDS; delete [] buf; unsnappedKeyText = ikey; + positionChanged(); } @@ -527,6 +549,7 @@ void TreeKeyIdx::setText(const char *ikey) { void TreeKeyIdx::copyFrom(const SWKey &ikey) { unsnappedKeyText = ikey; SWKey::copyFrom(ikey); + positionChanged(); } void TreeKeyIdx::setPosition(SW_POSITION p) { @@ -538,6 +561,7 @@ void TreeKeyIdx::setPosition(SW_POSITION p) { error = getTreeNodeFromIdxOffset(idxfd->seek(-4, SEEK_END), ¤tNode); break; } + positionChanged(); Error(); // clear error from normalize } @@ -557,10 +581,15 @@ int TreeKeyIdx::compare(const SWKey &ikey) { void TreeKeyIdx::decrement(int steps) { error = getTreeNodeFromIdxOffset(currentNode.offset - (4*steps), ¤tNode); + positionChanged(); } void TreeKeyIdx::increment(int steps) { error = getTreeNodeFromIdxOffset(currentNode.offset + (4*steps), ¤tNode); + if (error) { +// SWLog::getSystemLog()->logError("error: %d", error); + } + positionChanged(); /* // assert positive |