58 , m_dropDownHoverTimer(this)
77 auto const slotStepBook =
78 [slotStep](
int offset)
80 auto const slotStepChapter =
81 [slotStep](
int offset)
83 auto const slotStepVerse =
84 [slotStep](
int offset)
89 setFocusPolicy(Qt::WheelFocus);
92 clearRef->setIcon(CResMgr::icon_clearEdit());
93 clearRef->setAutoRaise(
true);
94 clearRef->setStyleSheet(QStringLiteral(
"QToolButton{margin:0px;}"));
105 m_textbox->setContentsMargins(0, 0, 0, 0);
110 QHBoxLayout* m_mainLayout =
new QHBoxLayout(
this );
111 m_mainLayout->setContentsMargins(0, 0, 0, 0);
112 m_mainLayout->setSpacing(0);
113 m_mainLayout->addWidget(clearRef);
114 m_mainLayout->addWidget(bookScroller);
116 m_mainLayout->addWidget(chapterScroller);
117 m_mainLayout->addWidget(verseScroller);
128 auto *
const bookChooser =
131 bookChooser->setToolTip(tr(
"Select book"));
132 BT_CONNECT(bookChooser->menu(), &QMenu::triggered,
133 [
this](
QAction *
const action) {
134 auto bookname = action->property(
"bookname").toString();
135 if (m_key->bookName() != bookname) {
136 m_key->setBookName(std::move(bookname));
143 dropDownButtonsLayout->addWidget(bookChooser, 2);
145 auto *
const chapterChooser =
148 chapterChooser->setToolTip(tr(
"Select chapter"));
149 BT_CONNECT(chapterChooser->menu(), &QMenu::triggered,
150 [
this](
QAction *
const action) {
151 int const n = action->property(
"chapter").toInt();
152 if (m_key->chapter() != n) {
153 m_key->setChapter(n);
157 Q_EMIT changed(m_key);
162 dropDownButtonsLayout->addWidget(chapterChooser, 1);
164 auto *
const verseChooser =
167 verseChooser->setToolTip(tr(
"Select verse"));
168 BT_CONNECT(verseChooser->menu(), &QMenu::triggered,
169 [
this](
QAction *
const action) {
170 int const n = action->property(
"verse").toInt();
171 if (m_key->verse() != n) {
176 Q_EMIT changed(m_key);
179 dropDownButtonsLayout->addWidget(verseChooser, 1);
181 dropDownButtonsLayout->setContentsMargins(0, 0, 0, 0);
182 dropDownButtonsLayout->setSpacing(0);
183 m_dropDownButtons->setLayout(dropDownButtonsLayout);
184 m_dropDownButtons->hide();
186 m_dropDownButtons->installEventFilter(
this);
188 m_dropDownHoverTimer.setInterval(500);
189 m_dropDownHoverTimer.setSingleShot(
true);
190 BT_CONNECT(&m_dropDownHoverTimer, &QTimer::timeout,
191 m_dropDownButtons, &QWidget::hide);
193 QString scrollButtonToolTip(tr(
"Scroll through the entries of the list. Press the button and move the mouse to increase or decrease the item."));
194 bookScroller->setToolTips(
199 chapterScroller->setToolTips(
202 tr(
"Previous chapter")
204 verseScroller->setToolTips(
211 auto const initScrollerConnections =
220 oldKey = m_key->key();
225 if (oldKey != m_key->key())
226 Q_EMIT changed(m_key);
229 initScrollerConnections(*bookScroller, slotStepBook);
230 initScrollerConnections(*chapterScroller, slotStepChapter);
231 initScrollerConnections(*verseScroller, slotStepVerse);
233 BT_CONNECT(m_textbox, &QLineEdit::returnPressed,
235 m_key->setKey(m_textbox->text());
236 Q_EMIT changed(m_key);