Come cmake cleanups, added new class for close button.

This commit is contained in:
Martin Rotter 2014-01-19 18:24:20 +01:00
parent 4f0a4d2120
commit baacd2c539
4 changed files with 61 additions and 3 deletions

View File

@ -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

36
src/gui/closebutton.cpp Normal file
View File

@ -0,0 +1,36 @@
#include "gui/closebutton.h"
#include <QToolButton>
#include <QStyle>
#include <QPainter>
#include <QPaintEvent>
#include <QStyleOption>
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);
}
}

20
src/gui/closebutton.h Normal file
View File

@ -0,0 +1,20 @@
#ifndef CLOSEBUTTON_H
#define CLOSEBUTTON_H
#include <QToolButton>
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

View File

@ -2,9 +2,9 @@
#include "core/defs.h"
#include "core/settings.h"
#include "gui/closebutton.h"
#include <QMouseEvent>
#include <QToolButton>
#include <QStyle>
@ -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<QToolButton*>(sender());
CloseButton *close_button = qobject_cast<CloseButton*>(sender());
QTabBar::ButtonPosition button_position = static_cast<ButtonPosition>(style()->styleHint(QStyle::SH_TabBar_CloseButtonPosition,
0,
this));