From 29664caf9d572e8166c1847fe1cc10120035d42a Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Wed, 19 Mar 2014 07:15:35 +0100 Subject: [PATCH] New corner/status buttons. --- resources/text/CHANGELOG | 1 + src/gui/plaintoolbutton.cpp | 21 ++++++++++++--- src/gui/plaintoolbutton.h | 7 +++++ src/gui/tabwidget.cpp | 54 +++++++++++++++++++------------------ src/gui/tabwidget.h | 8 +++--- 5 files changed, 58 insertions(+), 33 deletions(-) diff --git a/resources/text/CHANGELOG b/resources/text/CHANGELOG index 4f9d2d691..76f79217d 100644 --- a/resources/text/CHANGELOG +++ b/resources/text/CHANGELOG @@ -11,6 +11,7 @@ Added: Changed:
diff --git a/src/gui/plaintoolbutton.cpp b/src/gui/plaintoolbutton.cpp index 035979175..4440e68b1 100644 --- a/src/gui/plaintoolbutton.cpp +++ b/src/gui/plaintoolbutton.cpp @@ -24,7 +24,7 @@ #include -PlainToolButton::PlainToolButton(QWidget *parent) : QToolButton(parent) { +PlainToolButton::PlainToolButton(QWidget *parent) : QToolButton(parent), m_padding(0) { } PlainToolButton::~PlainToolButton() { @@ -36,9 +36,24 @@ void PlainToolButton::paintEvent(QPaintEvent *e) { QPainter p(this); QRect rect(QPoint(0, 0), size()); - // TODO: adjustable "padding" of the icon. - //rect.adjust(2, 2, -2, -2); + // Set padding. + rect.adjust(m_padding, m_padding, -m_padding, -m_padding); // Paint the icon. + if (underMouse()) { + p.setOpacity(0.7); + } + icon().paint(&p, rect); } + +int PlainToolButton::padding() const { + return m_padding; +} + +void PlainToolButton::setPadding(int padding) { + m_padding = padding; + + repaint(); +} + diff --git a/src/gui/plaintoolbutton.h b/src/gui/plaintoolbutton.h index 2d902c882..100a52a12 100644 --- a/src/gui/plaintoolbutton.h +++ b/src/gui/plaintoolbutton.h @@ -29,9 +29,16 @@ class PlainToolButton : public QToolButton { explicit PlainToolButton(QWidget *parent = 0); virtual ~PlainToolButton(); + // Padding changers. + int padding() const; + void setPadding(int padding); + protected: // Custom look. void paintEvent(QPaintEvent *e); + + private: + int m_padding; }; #endif // CLOSEBUTTON_H diff --git a/src/gui/tabwidget.cpp b/src/gui/tabwidget.cpp index 448295632..b81c43175 100644 --- a/src/gui/tabwidget.cpp +++ b/src/gui/tabwidget.cpp @@ -32,7 +32,7 @@ #include -TabWidget::TabWidget(QWidget *parent) : QTabWidget(parent), m_mainMenu(NULL) { +TabWidget::TabWidget(QWidget *parent) : QTabWidget(parent), m_menuMain(NULL) { setTabBar(new TabBar(this)); setupCornerButton(); setupMainMenuButton(); @@ -44,46 +44,48 @@ TabWidget::~TabWidget() { } void TabWidget::setupCornerButton() { - m_cornerButton = new PlainToolButton(this); - m_cornerButton->setAutoRaise(true); - m_cornerButton->setToolTip(tr("Open new web browser tab.")); - m_cornerButton->setIcon(IconThemeFactory::instance()->fromTheme("list-add")); + m_btnAddTab = new PlainToolButton(this); + m_btnAddTab->setAutoRaise(true); + m_btnAddTab->setPadding(3); + m_btnAddTab->setToolTip(tr("Open new web browser tab.")); + m_btnAddTab->setIcon(IconThemeFactory::instance()->fromTheme("list-add")); - connect(m_cornerButton, SIGNAL(clicked()), this, SLOT(addEmptyBrowser())); + connect(m_btnAddTab, SIGNAL(clicked()), this, SLOT(addEmptyBrowser())); - setCornerWidget(m_cornerButton, Qt::TopRightCorner); + setCornerWidget(m_btnAddTab, Qt::TopRightCorner); } void TabWidget::setupMainMenuButton() { - m_menuButton = new PlainToolButton(this); - m_menuButton->setAutoRaise(true); - m_menuButton->setToolTip(tr("Displays main menu.")); - m_menuButton->setIcon(IconThemeFactory::instance()->fromTheme("application-menu")); - m_menuButton->setPopupMode(QToolButton::InstantPopup); + m_btnMainMenu = new PlainToolButton(this); + m_btnMainMenu->setAutoRaise(true); + m_btnMainMenu->setPadding(3); + m_btnMainMenu->setToolTip(tr("Displays main menu.")); + m_btnMainMenu->setIcon(IconThemeFactory::instance()->fromTheme("application-menu")); + m_btnMainMenu->setPopupMode(QToolButton::InstantPopup); - connect(m_menuButton, SIGNAL(clicked()), this, SLOT(openMainMenu())); + connect(m_btnMainMenu, SIGNAL(clicked()), this, SLOT(openMainMenu())); - setCornerWidget(m_menuButton, Qt::TopLeftCorner); + setCornerWidget(m_btnMainMenu, Qt::TopLeftCorner); } void TabWidget::openMainMenu() { - if (m_mainMenu == NULL) { - m_mainMenu = new QMenu(tr("Main menu"), this); - m_mainMenu->addMenu(FormMain::instance()->m_ui->m_menuFile); - m_mainMenu->addMenu(FormMain::instance()->m_ui->m_menuView); - m_mainMenu->addMenu(FormMain::instance()->m_ui->m_menuFeeds); - m_mainMenu->addMenu(FormMain::instance()->m_ui->m_menuMessages); - m_mainMenu->addMenu(FormMain::instance()->m_ui->m_menuTools); - m_mainMenu->addMenu(FormMain::instance()->m_ui->m_menuHelp); + if (m_menuMain == NULL) { + m_menuMain = new QMenu(tr("Main menu"), this); + m_menuMain->addMenu(FormMain::instance()->m_ui->m_menuFile); + m_menuMain->addMenu(FormMain::instance()->m_ui->m_menuView); + m_menuMain->addMenu(FormMain::instance()->m_ui->m_menuFeeds); + m_menuMain->addMenu(FormMain::instance()->m_ui->m_menuMessages); + m_menuMain->addMenu(FormMain::instance()->m_ui->m_menuTools); + m_menuMain->addMenu(FormMain::instance()->m_ui->m_menuHelp); } - QPoint button_position = m_menuButton->pos(); - QSize target_size = m_menuButton->size() / 2.0; + QPoint button_position = m_btnMainMenu->pos(); + QSize target_size = m_btnMainMenu->size() / 2.0; button_position.setX(button_position.x() + target_size.width()); button_position.setY(button_position.y() + target_size.height()); - m_mainMenu->exec(mapToGlobal(button_position)); + m_menuMain->exec(mapToGlobal(button_position)); } void TabWidget::checkTabBarVisibility() { @@ -139,7 +141,7 @@ void TabWidget::setupIcons() { } // Setup corner button icon. - m_cornerButton->setIcon(IconThemeFactory::instance()->fromTheme("list-add")); + m_btnAddTab->setIcon(IconThemeFactory::instance()->fromTheme("list-add")); } bool TabWidget::closeTab(int index) { diff --git a/src/gui/tabwidget.h b/src/gui/tabwidget.h index b671d437d..0ff91a1c4 100644 --- a/src/gui/tabwidget.h +++ b/src/gui/tabwidget.h @@ -26,7 +26,7 @@ class QMenu; -class QToolButton; +class PlainToolButton; class Message; class FeedMessageViewer; @@ -124,9 +124,9 @@ class TabWidget : public QTabWidget { const QUrl &initial_url = QUrl()); private: - QToolButton *m_cornerButton; - QToolButton *m_menuButton; - QMenu *m_mainMenu; + PlainToolButton *m_btnAddTab; + PlainToolButton *m_btnMainMenu; + QMenu *m_menuMain; FeedMessageViewer *m_feedMessageViewer; };