From baacd2c539660b364b79cd393759d9ee28359613 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Sun, 19 Jan 2014 18:24:20 +0100 Subject: [PATCH] Come cmake cleanups, added new class for close button. --- CMakeLists.txt | 2 ++ src/gui/closebutton.cpp | 36 ++++++++++++++++++++++++++++++++++++ src/gui/closebutton.h | 20 ++++++++++++++++++++ src/gui/tabbar.cpp | 6 +++--- 4 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 src/gui/closebutton.cpp create mode 100644 src/gui/closebutton.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c57981a9..ef8e5d90f 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -288,6 +288,7 @@ set(APP_SOURCES src/gui/statusbar.cpp src/gui/iconfactory.cpp src/gui/formcategorydetails.cpp + src/gui/closebutton.cpp # CORE sources. src/core/debugging.cpp @@ -350,6 +351,7 @@ set(APP_HEADERS src/gui/messagesview.h src/gui/statusbar.h src/gui/formcategorydetails.h + src/gui/closebutton.h # CORE headers. src/core/settings.h diff --git a/src/gui/closebutton.cpp b/src/gui/closebutton.cpp new file mode 100644 index 000000000..e81f134a2 --- /dev/null +++ b/src/gui/closebutton.cpp @@ -0,0 +1,36 @@ +#include "gui/closebutton.h" + +#include +#include +#include +#include +#include + + +CloseButton::CloseButton(QWidget *parent) : QToolButton(parent) { +} + +CloseButton::~CloseButton() { +} + +void CloseButton::paintEvent(QPaintEvent *e) { + QPainter p(this); + icon().paint(&p, QRect(QPoint(0, 0), iconSize())); + + if (underMouse()) { + QStyleOptionFrameV3 style_option; + int frame_shape = QFrame::Sunken & QFrame::Shape_Mask; + + style_option.init(this); + style_option.frameShape = QFrame::Shape(int(style_option.frameShape) | + QFrame::StyledPanel | + frame_shape); + style_option.rect = rect(); + style_option.lineWidth = 1; + style_option.midLineWidth = 0; + + style()->drawControl(QStyle::CE_ShapedFrame, + &style_option, &p, + this); + } +} diff --git a/src/gui/closebutton.h b/src/gui/closebutton.h new file mode 100644 index 000000000..7443e0bd3 --- /dev/null +++ b/src/gui/closebutton.h @@ -0,0 +1,20 @@ +#ifndef CLOSEBUTTON_H +#define CLOSEBUTTON_H + +#include + + +class CloseButton : public QToolButton { + Q_OBJECT + + public: + // Contructors and destructors. + explicit CloseButton(QWidget *parent = 0); + virtual ~CloseButton(); + + protected: + // Custom look. + void paintEvent(QPaintEvent *e); +}; + +#endif // CLOSEBUTTON_H diff --git a/src/gui/tabbar.cpp b/src/gui/tabbar.cpp index dac13cddd..44114e0fc 100644 --- a/src/gui/tabbar.cpp +++ b/src/gui/tabbar.cpp @@ -2,9 +2,9 @@ #include "core/defs.h" #include "core/settings.h" +#include "gui/closebutton.h" #include -#include #include @@ -21,7 +21,7 @@ TabBar::~TabBar() { void TabBar::setTabType(int index, const TabBar::TabType &type) { switch (type) { case TabBar::Closable: { - QToolButton *close_button = new QToolButton(this); + CloseButton *close_button = new CloseButton(this); close_button->setIcon(IconThemeFactory::instance()->fromTheme("application-exit")); close_button->setToolTip(tr("Close this tab.")); @@ -48,7 +48,7 @@ void TabBar::setTabType(int index, const TabBar::TabType &type) { } void TabBar::closeTabViaButton() { - QToolButton *close_button = qobject_cast(sender()); + CloseButton *close_button = qobject_cast(sender()); QTabBar::ButtonPosition button_position = static_cast(style()->styleHint(QStyle::SH_TabBar_CloseButtonPosition, 0, this));