CKeyReferenceWidget::CKeyReferenceWidget( CSwordBibleModuleInfo *mod, CSwordVerseKey *key, QWidget *parent, const char *name) : QWidget(parent,name) { updatelock = false; m_module = mod; setFocusPolicy(QWidget::WheelFocus); // Erase button KGuiItem erase_picture; erase_picture.setIconName("locationbar_erase"); KPushButton *clearRef = new KPushButton(this); clearRef->setGuiItem(erase_picture); connect(clearRef, SIGNAL(clicked( ) ), SLOT(slotClearRef( ))); m_bookScroller = new CScrollerWidgetSet(this); m_textbox = new CKeyReferenceLineEdit( this ); setKey(key); // The order of these two functions is important. setModule(); m_chapterScroller = new CScrollerWidgetSet(this); m_verseScroller = new CScrollerWidgetSet(this); m_mainLayout = new QHBoxLayout( this ); m_mainLayout->addWidget(clearRef); m_mainLayout->addWidget(m_bookScroller); m_mainLayout->addWidget(m_textbox); m_mainLayout->addWidget(m_chapterScroller); m_mainLayout->addWidget(m_verseScroller); setTabOrder(m_textbox, 0); m_bookScroller->setToolTips( CResMgr::displaywindows::bibleWindow::nextBook::tooltip, CResMgr::displaywindows::general::scrollButton::tooltip, CResMgr::displaywindows::bibleWindow::previousBook::tooltip ); m_chapterScroller->setToolTips( CResMgr::displaywindows::bibleWindow::nextChapter::tooltip, CResMgr::displaywindows::general::scrollButton::tooltip, CResMgr::displaywindows::bibleWindow::previousChapter::tooltip ); m_verseScroller->setToolTips( CResMgr::displaywindows::bibleWindow::nextVerse::tooltip, CResMgr::displaywindows::general::scrollButton::tooltip, CResMgr::displaywindows::bibleWindow::previousVerse::tooltip ); // signals and slots connections connect(m_bookScroller, SIGNAL(change(int)), SLOT(slotBookChange(int))); connect(m_bookScroller, SIGNAL(scroller_pressed()), SLOT(slotUpdateLock())); connect(m_bookScroller, SIGNAL(scroller_released()), SLOT(slotUpdateUnlock())); connect(m_textbox, SIGNAL(returnPressed()), SLOT(slotReturnPressed())); connect(m_chapterScroller, SIGNAL(change(int)), SLOT(slotChapterChange(int))); connect(m_chapterScroller, SIGNAL(scroller_pressed()), SLOT(slotUpdateLock())); connect(m_chapterScroller, SIGNAL(scroller_released()), SLOT(slotUpdateUnlock())); connect(m_verseScroller, SIGNAL(change(int)), SLOT(slotVerseChange(int))); connect(m_verseScroller, SIGNAL(scroller_pressed()), SLOT(slotUpdateLock())); connect(m_verseScroller, SIGNAL(scroller_released()), SLOT(slotUpdateUnlock())); }
BtBibleKeyWidget::BtBibleKeyWidget(const CSwordBibleModuleInfo *mod, CSwordVerseKey *key, QWidget *parent, const char *name) : QWidget(parent), m_key(key), m_dropDownHoverTimer(this) { Q_UNUSED(name); updatelock = false; m_module = mod; setFocusPolicy(Qt::WheelFocus); QToolButton* clearRef = new QToolButton(this); clearRef->setIcon(CResMgr::icon_clearEdit()); clearRef->setAutoRaise(true); clearRef->setStyleSheet("QToolButton{margin:0px;}"); connect(clearRef, SIGNAL(clicked()), SLOT(slotClearRef()) ); m_bookScroller = new CScrollerWidgetSet(this); m_textbox = new BtLineEdit( this ); setFocusProxy(m_textbox); m_textbox->setContentsMargins(0, 0, 0, 0); m_chapterScroller = new CScrollerWidgetSet(this); m_verseScroller = new CScrollerWidgetSet(this); QHBoxLayout* m_mainLayout = new QHBoxLayout( this ); m_mainLayout->setContentsMargins(0, 0, 0, 0); m_mainLayout->setSpacing(0); m_mainLayout->addWidget(clearRef); m_mainLayout->addWidget(m_bookScroller); m_mainLayout->addWidget(m_textbox); m_mainLayout->addWidget(m_chapterScroller); m_mainLayout->addWidget(m_verseScroller); setTabOrder(m_textbox, 0); m_dropDownButtons = new QWidget(0); m_dropDownButtons->setWindowFlags(Qt::Popup); m_dropDownButtons->setAttribute(Qt::WA_WindowPropagation); m_dropDownButtons->setCursor(Qt::ArrowCursor); QHBoxLayout *dropDownButtonsLayout(new QHBoxLayout(m_dropDownButtons)); m_bookDropdownButton = new BtBookDropdownChooserButton(this); dropDownButtonsLayout->addWidget(m_bookDropdownButton, 2); m_chapterDropdownButton = new BtChapterDropdownChooserButton(this); dropDownButtonsLayout->addWidget(m_chapterDropdownButton, 1); m_verseDropdownButton = new BtVerseDropdownChooserButton(this); dropDownButtonsLayout->addWidget(m_verseDropdownButton, 1); dropDownButtonsLayout->setContentsMargins(0, 0, 0, 0); dropDownButtonsLayout->setSpacing(0); m_dropDownButtons->setLayout(dropDownButtonsLayout); m_dropDownButtons->hide(); m_dropDownButtons->installEventFilter(this); m_dropDownHoverTimer.setInterval(500); m_dropDownHoverTimer.setSingleShot(true); connect(&m_dropDownHoverTimer, SIGNAL(timeout()), m_dropDownButtons, SLOT(hide())); QString scrollButtonToolTip(tr("Scroll through the entries of the list. Press the button and move the mouse to increase or decrease the item.")); m_bookScroller->setToolTips( tr("Next book"), scrollButtonToolTip, tr("Previous book") ); m_chapterScroller->setToolTips( tr("Next chapter"), scrollButtonToolTip, tr("Previous chapter") ); m_verseScroller->setToolTips( tr("Next verse"), scrollButtonToolTip, tr("Previous verse") ); // signals and slots connections connect(m_bookScroller, SIGNAL(change(int)), SLOT(slotStepBook(int))); connect(m_bookScroller, SIGNAL(scroller_pressed()), SLOT(slotUpdateLock())); connect(m_bookScroller, SIGNAL(scroller_released()), SLOT(slotUpdateUnlock())); connect(m_textbox, SIGNAL(returnPressed()), SLOT(slotReturnPressed())); connect(m_chapterScroller, SIGNAL(change(int)), SLOT(slotStepChapter(int))); connect(m_chapterScroller, SIGNAL(scroller_pressed()), SLOT(slotUpdateLock())); connect(m_chapterScroller, SIGNAL(scroller_released()), SLOT(slotUpdateUnlock())); connect(m_verseScroller, SIGNAL(change(int)), SLOT(slotStepVerse(int))); connect(m_verseScroller, SIGNAL(scroller_pressed()), SLOT(slotUpdateLock())); connect(m_verseScroller, SIGNAL(scroller_released()), SLOT(slotUpdateUnlock())); bool ok = connect(m_key->afterChangedSignaller(), SIGNAL(signal()), this, SLOT(updateText())); Q_ASSERT(ok); setKey(key); // The order of these two functions is important. setModule(); }
void CScrollerWidgetSet::slotUnlock() { emit scroller_released(); }