summaryrefslogtreecommitdiff
path: root/src/frontend/keychooser/versekeychooser/btdropdownchooserbutton.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/keychooser/versekeychooser/btdropdownchooserbutton.cpp')
-rw-r--r--src/frontend/keychooser/versekeychooser/btdropdownchooserbutton.cpp134
1 files changed, 134 insertions, 0 deletions
diff --git a/src/frontend/keychooser/versekeychooser/btdropdownchooserbutton.cpp b/src/frontend/keychooser/versekeychooser/btdropdownchooserbutton.cpp
new file mode 100644
index 0000000..e4b05c3
--- /dev/null
+++ b/src/frontend/keychooser/versekeychooser/btdropdownchooserbutton.cpp
@@ -0,0 +1,134 @@
+/*********
+*
+* This file is part of BibleTime's source code, http://www.bibletime.info/.
+*
+* Copyright 1999-2008 by the BibleTime developers.
+* The BibleTime source code is licensed under the GNU General Public License version 2.0.
+*
+**********/
+
+#include "btdropdownchooserbutton.h"
+#include "ckeyreferencewidget.h"
+#include "btversekeymenu.h"
+
+#include <QWheelEvent>
+#include <QDebug>
+
+const unsigned int ARROW_HEIGHT = 12;
+
+BtDropdownChooserButton::BtDropdownChooserButton(CKeyReferenceWidget* ref)
+ : QToolButton(),
+ m_ref(ref)
+{
+ setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+
+ setAutoRaise(true);
+ setArrowType(Qt::NoArrow);
+ setFixedHeight(ARROW_HEIGHT);
+ setFocusPolicy(Qt::NoFocus);
+ setPopupMode(QToolButton::InstantPopup);
+ setStyleSheet("QToolButton{margin:0px;}QToolButton::menu-indicator{subcontrol-position: center center;}");
+
+ BtVerseKeyMenu* m = new BtVerseKeyMenu(this);
+// KAcceleratorManager::setNoAccel(m);
+ setMenu(m);
+ QObject::connect(m, SIGNAL(triggered(QAction*)), this, SLOT(slotMenuTriggered(QAction*)));
+}
+
+
+void BtDropdownChooserButton::mousePressEvent(QMouseEvent* e)
+{
+ //qDebug("BtDropdownChooserButton::mousePressEvent");
+ //recreate the menu
+ menu()->clear();
+ this->newList();
+
+ QToolButton::mousePressEvent(e);
+}
+
+void BtDropdownChooserButton::wheelEvent(QWheelEvent* e)
+{
+ // The problem is, that wheel events do everytime have the delta value 120
+ const int vchange = ((e->delta() > 0) ? (-1) : (1));
+
+ if (vchange!=0) {//do not emit a change with value 0
+ emit stepItem(vchange);
+ e->accept();
+ }
+ else {
+ e->ignore();
+ }
+}
+
+
+//******************Book dropdown button*************************************/
+
+BtBookDropdownChooserButton::BtBookDropdownChooserButton(CKeyReferenceWidget* ref)
+ : BtDropdownChooserButton(ref)
+{
+ setToolTip(tr("Select book"));
+ QObject::connect(this, SIGNAL(stepItem(int)), m_ref, SLOT(slotStepBook(int)));
+}
+
+void BtBookDropdownChooserButton::newList()
+{
+ QMenu* m = menu();
+ QStringList* booklist = ref()->m_module->books();
+ foreach (QString bookname, *booklist) {
+ m->addAction(bookname);
+ }
+}
+
+void BtBookDropdownChooserButton::slotMenuTriggered(QAction* action)
+{
+ qDebug() << "BtBookDropdownChooserButton::slotMenuTriggered" << action->text();
+ m_ref->slotChangeBook(action->text());
+}
+
+
+//****************** Chapter dropdown button *************************************/
+
+BtChapterDropdownChooserButton::BtChapterDropdownChooserButton(CKeyReferenceWidget* ref)
+ : BtDropdownChooserButton(ref)
+{
+ setToolTip(tr("Select chapter"));
+ QObject::connect(this, SIGNAL(stepItem(int)), m_ref, SLOT(slotStepChapter(int)));
+}
+
+void BtChapterDropdownChooserButton::newList()
+{
+ QMenu* m = menu();
+ int count = ref()->m_module->chapterCount(ref()->m_key->book());
+ for (int i = 1; i <= count; i++) {
+ m->addAction(QString::number(i));
+ }
+}
+
+void BtChapterDropdownChooserButton::slotMenuTriggered(QAction* action)
+{
+ m_ref->slotChangeChapter(action->text().toInt());
+}
+
+
+//****************** Verse dropdown button *************************************/
+
+BtVerseDropdownChooserButton::BtVerseDropdownChooserButton(CKeyReferenceWidget* ref)
+ : BtDropdownChooserButton(ref)
+{
+ setToolTip(tr("Select verse"));
+ QObject::connect(this, SIGNAL(stepItem(int)), m_ref, SLOT(slotStepVerse(int)));
+}
+
+void BtVerseDropdownChooserButton::newList()
+{
+ QMenu* m = menu();
+ int count = ref()->m_module->verseCount(ref()->m_key->book(), ref()->m_key->Chapter());
+ for (int i = 1; i <= count; i++) {
+ m->addAction(QString::number(i));
+ }
+}
+
+void BtVerseDropdownChooserButton::slotMenuTriggered(QAction* action)
+{
+ m_ref->slotChangeVerse(action->text().toInt());
+}