summaryrefslogtreecommitdiff
path: root/src/mobile/keychooser/versechooser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mobile/keychooser/versechooser.cpp')
-rw-r--r--src/mobile/keychooser/versechooser.cpp160
1 files changed, 160 insertions, 0 deletions
diff --git a/src/mobile/keychooser/versechooser.cpp b/src/mobile/keychooser/versechooser.cpp
new file mode 100644
index 0000000..f510da0
--- /dev/null
+++ b/src/mobile/keychooser/versechooser.cpp
@@ -0,0 +1,160 @@
+/*********
+*
+* 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-2014 by the BibleTime developers.
+* The BibleTime source code is licensed under the GNU General Public License
+* version 2.0.
+*
+**********/
+
+#include "versechooser.h"
+
+#include "backend/keys/cswordversekey.h"
+#include "backend/drivers/cswordbiblemoduleinfo.h"
+#include "backend/drivers/cswordmoduleinfo.h"
+#include <cmath>
+#include "mobile/ui/btwindowinterface.h"
+#include "mobile/ui/gridchooser.h"
+#include "mobile/ui/qtquick2applicationviewer.h"
+#include <QQuickItem>
+#include <QQmlProperty>
+#include <QQmlContext>
+#include <QDebug>
+#include <QQmlProperty>
+#include <QCoreApplication>
+
+namespace btm {
+
+VerseChooser::VerseChooser(QtQuick2ApplicationViewer* viewer, BtWindowInterface* bibleVerse)
+ : m_viewer(viewer),
+ m_gridChooser(0),
+ bibleVerse_(bibleVerse),
+ m_key(0),
+ m_state(CLOSED ) {
+ m_gridChooser = new GridChooser(m_viewer);
+ bool ok = connect(m_gridChooser, SIGNAL(accepted(const QString&)),
+ this, SLOT(stringAccepted(const QString&)));
+ Q_ASSERT(ok);
+}
+
+void VerseChooser::open(CSwordVerseKey* key) {
+ if (key == 0)
+ return;
+ m_key = key;
+ m_oldBook = getBook();
+ m_oldChapter = getChapter();
+ m_oldVerse = getVerse();
+ m_state = BOOK;
+ QStringList books = getBooks();
+ m_gridChooser->open(books, m_oldBook, "Book");
+}
+
+void VerseChooser::stringAccepted(const QString& value) {
+ if (m_state == BOOK) {
+ m_newBook = value;
+ m_state = CHAPTER;
+ setBook(value);
+ QStringList chapters = getChapters();
+ m_gridChooser->open(chapters, m_oldChapter, "Chapter");
+ }
+ else if (m_state == CHAPTER) {
+ m_newChapter = value;
+ m_state = VERSE;
+ setChapter(value);
+ QStringList verses = getVerses();
+ m_gridChooser->open(verses, m_oldVerse, "Verse");
+ }
+ else if (m_state == VERSE) {
+ m_newVerse = value;
+ m_state = CLOSED;
+ setVerse(m_newVerse);
+ }
+}
+
+void VerseChooser::stringCanceled() {
+}
+
+QString VerseChooser::getBook() const {
+ QString book;
+ if (m_key)
+ book = m_key->book();
+ return book;
+}
+
+void VerseChooser::setBook(const QString& book) {
+ if (m_key) {
+ m_key->book(book);
+ }
+}
+
+QString VerseChooser::getChapter() const {
+ QString chapter;
+ if (m_key)
+ chapter = QString::number(m_key->getChapter());
+ return chapter;
+}
+
+void VerseChooser::setChapter(const QString& chapter) {
+ if (m_key) {
+ int iChapter = chapter.toInt();
+ m_key->setChapter(iChapter);
+ }
+}
+
+QString VerseChooser::getVerse() const {
+ QString verse;
+ if (m_key) {
+ verse = QString::number(m_key->getVerse());
+ }
+ return verse;
+}
+
+void VerseChooser::setVerse(const QString& verse) {
+ if (m_key) {
+ int iVerse = verse.toInt();
+ m_key->setVerse(iVerse);
+ emit referenceChanged();
+ }
+}
+
+QStringList VerseChooser::getBooks() const {
+ QStringList books;
+ const CSwordModuleInfo* module = m_key->module();
+ const CSwordBibleModuleInfo* bibleModule = qobject_cast<const CSwordBibleModuleInfo*>(module);
+ if (bibleModule)
+ books = *bibleModule->books();
+ return books;
+}
+
+QStringList VerseChooser::getChapters() const {
+ QStringList chapters;
+ const CSwordModuleInfo* module = m_key->module();
+ const CSwordBibleModuleInfo* m = qobject_cast<const CSwordBibleModuleInfo*>(module);
+
+ QString book = m_key->book();
+ int count = m->chapterCount(book);
+ for (int i = 1; i <= count; i++) {
+ chapters << QString::number(i);
+ }
+ return chapters;
+}
+
+QStringList VerseChooser::getVerses() const {
+ QStringList verses;
+ const CSwordModuleInfo* module = m_key->module();
+ const CSwordBibleModuleInfo* m = qobject_cast<const CSwordBibleModuleInfo*>(module);
+ QString book = m_key->book();
+ int chapter = m_key->getChapter();
+ int count = m->verseCount(book,chapter);
+ for (int i = 1; i <= count; i++) {
+ verses << QString::number(i);
+ }
+ return verses;
+}
+
+
+
+} // end namespace