diff options
author | Tomaz Canabrava <tcanabrava@kde.org> | 2013-12-20 11:33:22 -0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-12-20 09:53:05 -0800 |
commit | f0da41c937b9381e67a57b8103bbf2d4aca7bb39 (patch) | |
tree | 9485f8c77b2fc6d3fca50ab7b6542a3091bf4e7d | |
parent | 3e3fff262e90dde3c0db5e13de057f10753089fd (diff) | |
download | subsurface-f0da41c937b9381e67a57b8103bbf2d4aca7bb39.tar.gz |
Added Keyboard Navigation for the Star Widget
Keys up and down to increase / decrease stars
and also fixed focus policy for it.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | qt-ui/maintab.ui | 34 | ||||
-rw-r--r-- | qt-ui/starwidget.cpp | 35 | ||||
-rw-r--r-- | qt-ui/starwidget.h | 4 |
3 files changed, 60 insertions, 13 deletions
diff --git a/qt-ui/maintab.ui b/qt-ui/maintab.ui index 7dec3aa8f..846fb4f12 100644 --- a/qt-ui/maintab.ui +++ b/qt-ui/maintab.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>535</width> - <height>517</height> + <width>690</width> + <height>720</height> </rect> </property> <property name="currentIndex"> @@ -37,8 +37,8 @@ <rect> <x>0</x> <y>0</y> - <width>493</width> - <height>586</height> + <width>662</width> + <height>644</height> </rect> </property> <layout class="QGridLayout" name="gridLayout_2"> @@ -219,10 +219,18 @@ <item row="10" column="0"> <layout class="QHBoxLayout" name="ratingVisibilityWidgets"> <item> - <widget class="StarWidget" name="rating" native="true"/> + <widget class="StarWidget" name="rating" native="true"> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> + </widget> </item> <item> - <widget class="StarWidget" name="visibility" native="true"/> + <widget class="StarWidget" name="visibility" native="true"> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> + </widget> </item> </layout> </item> @@ -281,8 +289,8 @@ <rect> <x>0</x> <y>0</y> - <width>507</width> - <height>459</height> + <width>662</width> + <height>644</height> </rect> </property> <layout class="QGridLayout" name="gridLayout_5"> @@ -361,8 +369,8 @@ <rect> <x>0</x> <y>0</y> - <width>492</width> - <height>375</height> + <width>662</width> + <height>644</height> </rect> </property> <layout class="QGridLayout" name="gridLayout_6"> @@ -671,8 +679,8 @@ <rect> <x>0</x> <y>0</y> - <width>323</width> - <height>130</height> + <width>662</width> + <height>644</height> </rect> </property> <layout class="QGridLayout" name="gridLayout_7"> @@ -846,6 +854,8 @@ <tabstop>coordinates</tabstop> <tabstop>divemaster</tabstop> <tabstop>buddy</tabstop> + <tabstop>rating</tabstop> + <tabstop>visibility</tabstop> <tabstop>suit</tabstop> <tabstop>tagWidget</tabstop> <tabstop>notes</tabstop> diff --git a/qt-ui/starwidget.cpp b/qt-ui/starwidget.cpp index 12b400124..59e625f35 100644 --- a/qt-ui/starwidget.cpp +++ b/qt-ui/starwidget.cpp @@ -5,6 +5,8 @@ #include <QDebug> #include <QMouseEvent> #include <unistd.h> +#include <QStyle> +#include <QStyleOption> QPixmap* StarWidget::activeStar = 0; QPixmap* StarWidget::inactiveStar = 0; @@ -52,6 +54,13 @@ void StarWidget::paintEvent(QPaintEvent* event) for(int i = current; i < TOTALSTARS; i++) p.drawPixmap(i * IMG_SIZE + SPACING, 0, starInactive()); + + if(hasFocus()){ + QStyleOptionFocusRect option; + option.initFrom(this); + option.backgroundColor = palette().color(QPalette::Background); + style()->drawPrimitive(QStyle::PE_FrameFocusRect, &option, &p, this); + } } void StarWidget::setCurrentStars(int value) @@ -81,6 +90,7 @@ StarWidget::StarWidget(QWidget* parent, Qt::WindowFlags f): inactiveStar = new QPixmap(); (*inactiveStar) = grayImage(activeStar); } + setFocusPolicy(Qt::StrongFocus); } QPixmap StarWidget::grayImage(QPixmap* coloredImg) @@ -110,3 +120,28 @@ void StarWidget::setReadOnly(bool r) { readOnly = r; } + +void StarWidget::focusInEvent(QFocusEvent* event) +{ + setFocus(); + QWidget::focusInEvent(event); +} + +void StarWidget::focusOutEvent(QFocusEvent* event) +{ + QWidget::focusOutEvent(event); +} + + +void StarWidget::keyPressEvent(QKeyEvent* event) +{ + if (event->key() == Qt::Key_Up || event->key() == Qt::Key_Right){ + if (currentStars() < TOTALSTARS){ + setCurrentStars( currentStars()+1); + } + }else if(event->key() == Qt::Key_Down || event->key() == Qt::Key_Left){ + if(currentStars() > 0){ + setCurrentStars( currentStars()-1); + } + } +} diff --git a/qt-ui/starwidget.h b/qt-ui/starwidget.h index 9620bc62e..6bbaafc85 100644 --- a/qt-ui/starwidget.h +++ b/qt-ui/starwidget.h @@ -27,7 +27,9 @@ public slots: protected: /*reimp*/ void mouseReleaseEvent(QMouseEvent* ); /*reimp*/ void paintEvent(QPaintEvent* ); - + /*reimp*/ void focusInEvent(QFocusEvent*); + /*reimp*/ void focusOutEvent(QFocusEvent*); + /*reimp*/ void keyPressEvent(QKeyEvent*); private: int current; bool readOnly; |