diff options
author | Roberto C. Sanchez <roberto@connexer.com> | 2014-10-21 22:48:27 -0400 |
---|---|---|
committer | Roberto C. Sanchez <roberto@connexer.com> | 2014-10-21 22:48:27 -0400 |
commit | dd2f7ce46df53f2c377c02d1bf4df8adcf092072 (patch) | |
tree | 51d4bd5d66a45a24784695c4e99b452b417dc3d1 /src/frontend/keychooser/versekeychooser/ckeyreferencewidget.cpp | |
parent | b954e6dbcceaba3b50aca624e1bddc6db4830829 (diff) |
Imported Upstream version 2.3
Diffstat (limited to 'src/frontend/keychooser/versekeychooser/ckeyreferencewidget.cpp')
-rw-r--r-- | src/frontend/keychooser/versekeychooser/ckeyreferencewidget.cpp | 99 |
1 files changed, 69 insertions, 30 deletions
diff --git a/src/frontend/keychooser/versekeychooser/ckeyreferencewidget.cpp b/src/frontend/keychooser/versekeychooser/ckeyreferencewidget.cpp index 11c5ddc..cedb4b3 100644 --- a/src/frontend/keychooser/versekeychooser/ckeyreferencewidget.cpp +++ b/src/frontend/keychooser/versekeychooser/ckeyreferencewidget.cpp @@ -31,12 +31,32 @@ #include <QString> #include <QStringList> #include <QToolButton> +#include <QFocusEvent> +class BtLineEdit : public QLineEdit +{ +public: + BtLineEdit(QWidget* parent) + : QLineEdit(parent) + { + } +protected: + void focusInEvent(QFocusEvent* event) + { + Qt::FocusReason reason = event->reason(); + if (reason == Qt::OtherFocusReason) + { + selectAll(); + } + QWidget::focusInEvent(event); + } +}; -CKeyReferenceWidget::CKeyReferenceWidget( CSwordBibleModuleInfo *mod, CSwordVerseKey *key, QWidget *parent, const char* /*name*/) : + +CKeyReferenceWidget::CKeyReferenceWidget( CSwordBibleModuleInfo *mod, CSwordVerseKey *key, QWidget *parent, const char* /*name*/) : QWidget(parent), - m_key(new CSwordVerseKey(mod)), + m_key(key), m_dropDownHoverTimer(this) { @@ -53,7 +73,8 @@ CKeyReferenceWidget::CKeyReferenceWidget( CSwordBibleModuleInfo *mod, CSwordVers m_bookScroller = new CScrollerWidgetSet(this); - m_textbox = new QLineEdit( this ); + m_textbox = new BtLineEdit( this ); + setFocusProxy(m_textbox); m_textbox->setContentsMargins(0, 0, 0, 0); setKey(key); // The order of these two functions is important. @@ -127,7 +148,8 @@ CKeyReferenceWidget::CKeyReferenceWidget( CSwordBibleModuleInfo *mod, CSwordVers connect(m_verseScroller, SIGNAL(scroller_released()), SLOT(slotUpdateUnlock())); } -CKeyReferenceWidget::~CKeyReferenceWidget() { +CKeyReferenceWidget::~CKeyReferenceWidget() +{ delete m_dropDownButtons; } @@ -140,7 +162,8 @@ void CKeyReferenceWidget::setModule(CSwordBibleModuleInfo *m) } } -bool CKeyReferenceWidget::eventFilter(QObject *o, QEvent *e) { +bool CKeyReferenceWidget::eventFilter(QObject *o, QEvent *e) +{ if (o != m_dropDownButtons) return false; switch (e->type()) { case QEvent::Enter: @@ -154,7 +177,8 @@ bool CKeyReferenceWidget::eventFilter(QObject *o, QEvent *e) { } } -void CKeyReferenceWidget::enterEvent(QEvent *) { +void CKeyReferenceWidget::enterEvent(QEvent *) +{ m_dropDownHoverTimer.stop(); resetDropDownButtons(); @@ -163,18 +187,22 @@ void CKeyReferenceWidget::enterEvent(QEvent *) { m_dropDownButtons->show(); } -void CKeyReferenceWidget::leaveEvent(QEvent *) { +void CKeyReferenceWidget::leaveEvent(QEvent *) +{ m_dropDownHoverTimer.start(); } -void CKeyReferenceWidget::resizeEvent(QResizeEvent *event) { - if (m_dropDownButtons->isVisible()) { +void CKeyReferenceWidget::resizeEvent(QResizeEvent *event) +{ + if (m_dropDownButtons->isVisible()) + { resetDropDownButtons(); } QWidget::resizeEvent(event); } -void CKeyReferenceWidget::resetDropDownButtons() { +void CKeyReferenceWidget::resetDropDownButtons() +{ m_dropDownButtons->setParent(window()); int h(m_dropDownButtons->layout()->minimumSize().height()); QPoint topLeft(mapTo(window(), QPoint(m_textbox->x(), height()))); @@ -203,7 +231,7 @@ void CKeyReferenceWidget::updateText() bool CKeyReferenceWidget::setKey(CSwordVerseKey *key) { if (!key) return false; - + m_key->key(key->key()); updateText(); return true; @@ -218,8 +246,7 @@ void CKeyReferenceWidget::slotReturnPressed() { m_key->key(m_textbox->text()); updateText(); - - emit changed(m_key.get()); + emit changed(m_key); } /* Handlers for the various scroller widgetsets. Do we really want a verse scroller? */ @@ -232,58 +259,70 @@ void CKeyReferenceWidget::slotUpdateLock() void CKeyReferenceWidget::slotUpdateUnlock() { updatelock = false; - if (oldKey != m_key->key()) emit changed(m_key.get()); + if (oldKey != m_key->key()) + emit changed(m_key); } void CKeyReferenceWidget::slotStepBook(int n) { - n > 0 ? m_key->next( CSwordVerseKey::UseBook ) : m_key->previous( CSwordVerseKey::UseBook ); + CSwordVerseKey key = *m_key; + n > 0 ? key.next( CSwordVerseKey::UseBook ) : key.previous( CSwordVerseKey::UseBook ); + if (!updatelock) + emit changed(&key); // does *m_key = key updateText(); - if (!updatelock) emit changed(m_key.get()); } void CKeyReferenceWidget::slotStepChapter(int n) { - n > 0 ? m_key->next( CSwordVerseKey::UseChapter ) : m_key->previous( CSwordVerseKey::UseChapter ); - updateText(); - if (!updatelock) emit changed(m_key.get()); + CSwordVerseKey key = *m_key; + n > 0 ? key.next( CSwordVerseKey::UseChapter ) : key.previous( CSwordVerseKey::UseChapter ); + if (!updatelock) + emit changed(&key); // does *m_key = key + updateText(); } void CKeyReferenceWidget::slotStepVerse(int n) { - n > 0 ? m_key->next( CSwordVerseKey::UseVerse ) : m_key->previous( CSwordVerseKey::UseVerse ); + CSwordVerseKey key = *m_key; + n > 0 ? key.next( CSwordVerseKey::UseVerse ) : key.previous( CSwordVerseKey::UseVerse ); + if (!updatelock) + emit changed(&key); // does *m_key = key updateText(); - if (!updatelock) emit changed(m_key.get()); } void CKeyReferenceWidget::slotChangeVerse(int n) { - if (m_key->Verse() != n) { + if (m_key->Verse() != n) + { m_key->Verse( n ); - setKey( m_key.get() ); + setKey( m_key ); } updateText(); - if (!updatelock) emit changed(m_key.get()); + if (!updatelock) emit changed(m_key); } void CKeyReferenceWidget::slotChangeChapter(int n) { - if (m_key->Chapter() != n) { + if (m_key->Chapter() != n) + { m_key->Chapter( n ); - setKey( m_key.get() ); + setKey( m_key ); } updateText(); - if (!updatelock) emit changed(m_key.get()); + if (!updatelock) + emit changed(m_key); } void CKeyReferenceWidget::slotChangeBook(QString bookname) { - if (m_key->book() != bookname) { + if (m_key->book() != bookname) + { m_key->book( bookname ); - setKey( m_key.get() ); + setKey( m_key ); } updateText(); - if (!updatelock) emit changed(m_key.get()); + if (!updatelock) + emit changed(m_key); } |