summaryrefslogtreecommitdiff
path: root/src/backend/bookshelfmodel/item.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/bookshelfmodel/item.cpp')
-rw-r--r--src/backend/bookshelfmodel/item.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/backend/bookshelfmodel/item.cpp b/src/backend/bookshelfmodel/item.cpp
new file mode 100644
index 0000000..22bed91
--- /dev/null
+++ b/src/backend/bookshelfmodel/item.cpp
@@ -0,0 +1,57 @@
+/*********
+*
+* In the name of the Father, and of the Son, and of the Holy Spirit.
+*
+* This file is part of BibleTime's source code, http://www.bibletime.info/.
+*
+* Copyright 1999-2009 by the BibleTime developers.
+* The BibleTime source code is licensed under the GNU General Public License
+* version 2.0.
+*
+**********/
+
+#include "backend/bookshelfmodel/item.h"
+
+#include "backend/bookshelfmodel/categoryitem.h"
+#include "backend/bookshelfmodel/distributionitem.h"
+#include "backend/bookshelfmodel/languageitem.h"
+
+namespace BookshelfModel {
+
+Item::Item(Type type)
+ : m_type(type), m_parent(0), m_checkState(Qt::Unchecked)
+{
+ // Intentionally empty
+}
+
+Item::~Item() {
+ qDeleteAll(m_children);
+}
+
+int Item::indexFor(Item *newItem) {
+ Q_ASSERT(newItem != 0);
+
+ if (m_children.empty()) return 0;
+
+ int i(0);
+ for (;;) {
+ Item *nextItem(m_children.at(i));
+ Q_ASSERT(nextItem->type() == newItem->type());
+ if (*newItem < *nextItem) {
+ return i;
+ }
+ i++;
+ if (i >= m_children.size()) {
+ return i;
+ }
+ }
+}
+
+bool Item::operator<(const Item &other) const {
+ if (m_type != other.type()) {
+ return m_type < other.type();
+ }
+ return name().localeAwareCompare(other.name()) < 0;
+}
+
+} // namespace BookshelfModel