41 , m_dropDownHoverTimer(this)
60 auto const slotStepBook =
61 [slotStep](
int offset)
63 auto const slotStepChapter =
64 [slotStep](
int offset)
66 auto const slotStepVerse =
67 [slotStep](
int offset)
72 setFocusPolicy(Qt::WheelFocus);
75 clearRef->setIcon(CResMgr::icon_clearEdit());
76 clearRef->setAutoRaise(
true);
77 clearRef->setStyleSheet(QStringLiteral(
"QToolButton{margin:0px;}"));
88 m_textbox->setContentsMargins(0, 0, 0, 0);
93 QHBoxLayout* m_mainLayout =
new QHBoxLayout(
this );
94 m_mainLayout->setContentsMargins(0, 0, 0, 0);
95 m_mainLayout->setSpacing(0);
96 m_mainLayout->addWidget(clearRef);
97 m_mainLayout->addWidget(bookScroller);
99 m_mainLayout->addWidget(chapterScroller);
100 m_mainLayout->addWidget(verseScroller);
111 auto *
const bookChooser =
114 bookChooser->setToolTip(tr(
"Select book"));
115 BT_CONNECT(bookChooser->menu(), &QMenu::triggered,
116 [
this](
QAction *
const action) {
117 auto bookname = action->property(
"bookname").toString();
118 if (m_key->bookName() != bookname) {
119 m_key->setBookName(std::move(bookname));
126 dropDownButtonsLayout->addWidget(bookChooser, 2);
128 auto *
const chapterChooser =
131 chapterChooser->setToolTip(tr(
"Select chapter"));
132 BT_CONNECT(chapterChooser->menu(), &QMenu::triggered,
133 [
this](
QAction *
const action) {
134 int const n = action->property(
"chapter").toInt();
135 if (m_key->chapter() != n) {
136 m_key->setChapter(n);
140 Q_EMIT changed(m_key);
145 dropDownButtonsLayout->addWidget(chapterChooser, 1);
147 auto *
const verseChooser =
150 verseChooser->setToolTip(tr(
"Select verse"));
151 BT_CONNECT(verseChooser->menu(), &QMenu::triggered,
152 [
this](
QAction *
const action) {
153 int const n = action->property(
"verse").toInt();
154 if (m_key->verse() != n) {
159 Q_EMIT changed(m_key);
162 dropDownButtonsLayout->addWidget(verseChooser, 1);
164 dropDownButtonsLayout->setContentsMargins(0, 0, 0, 0);
165 dropDownButtonsLayout->setSpacing(0);
166 m_dropDownButtons->setLayout(dropDownButtonsLayout);
167 m_dropDownButtons->hide();
169 m_dropDownButtons->installEventFilter(
this);
171 m_dropDownHoverTimer.setInterval(500);
172 m_dropDownHoverTimer.setSingleShot(
true);
173 BT_CONNECT(&m_dropDownHoverTimer, &QTimer::timeout,
174 m_dropDownButtons, &QWidget::hide);
176 QString scrollButtonToolTip(tr(
"Scroll through the entries of the list. Press the button and move the mouse to increase or decrease the item."));
177 bookScroller->setToolTips(
182 chapterScroller->setToolTips(
185 tr(
"Previous chapter")
187 verseScroller->setToolTips(
194 auto const initScrollerConnections =
203 oldKey = m_key->key();
208 if (oldKey != m_key->key())
209 Q_EMIT changed(m_key);
212 initScrollerConnections(*bookScroller, slotStepBook);
213 initScrollerConnections(*chapterScroller, slotStepChapter);
214 initScrollerConnections(*verseScroller, slotStepVerse);
216 BT_CONNECT(m_textbox, &QLineEdit::returnPressed,
218 m_key->setKey(m_textbox->text());
219 Q_EMIT changed(m_key);