diff --git a/app/skin.h b/app/skin.h --- a/app/skin.h +++ b/app/skin.h @@ -48,19 +48,22 @@ const QPixmap& titleBarRightCornerImage() { return m_titleBarRightCornerImage; } const QPoint& titleBarFocusButtonPosition() { return m_titleBarFocusButtonPosition; } + const Qt::AnchorPoint& titleBarFocusButtonAnchor() { return m_titleBarFocusButtonAnchor; } const QString titleBarFocusButtonStyleSheet() { return m_titleBarFocusButtonStyleSheet; } const QPoint& titleBarMenuButtonPosition() { return m_titleBarMenuButtonPosition; } + const Qt::AnchorPoint& titleBarMenuButtonAnchor() { return m_titleBarMenuButtonAnchor; } const QString titleBarMenuButtonStyleSheet() { return m_titleBarMenuButtonStyleSheet; } const QPoint& titleBarQuitButtonPosition() { return m_titleBarQuitButtonPosition; } + const Qt::AnchorPoint& titleBarQuitButtonAnchor() { return m_titleBarQuitButtonAnchor; } const QString titleBarQuitButtonStyleSheet() { return m_titleBarQuitButtonStyleSheet; } const QString titleBarText() { return m_titleBarText; } const QPoint& titleBarTextPosition() { return m_titleBarTextPosition; } const QColor& titleBarTextColor() { return m_titleBarTextColor; } - bool titleBarTextBold() { return m_titleBarTextBold; } - + bool titleBarTextBold() { return m_titleBarTextBold; } + bool titleBarTextCentered() { return m_titleBarTextCentered; } const QPoint& tabBarPosition() { return m_tabBarPosition; } const QColor& tabBarTextColor() { return m_tabBarTextColor; } @@ -72,6 +75,7 @@ const QPixmap& tabBarUnselectedRightCornerImage() { return m_tabBarUnselectedRightCornerImage; } const QPixmap& tabBarSelectedLeftCornerImage() { return m_tabBarSelectedLeftCornerImage; } const QPixmap& tabBarSelectedRightCornerImage() { return m_tabBarSelectedRightCornerImage; } + bool tabBarSelectedTextBold() { return m_tabBarSelectedTextBold; } const QPixmap tabBarPreventClosingImage(); const QPoint& tabBarPreventClosingImagePosition() { return m_tabBarPreventClosingImagePosition; } @@ -82,11 +86,11 @@ const QPoint& tabBarNewTabButtonPosition() { return m_tabBarNewTabButtonPosition; } const QString tabBarNewTabButtonStyleSheet() { return m_tabBarNewTabButtonStyleSheet; } + bool tabBarNewTabButtonIsAtEndOfTabs() { return m_tabBarNewTabButtonIsAtEndOfTabs; } const QPoint& tabBarCloseTabButtonPosition() { return m_tabBarCloseTabButtonPosition; } const QString tabBarCloseTabButtonStyleSheet() { return m_tabBarCloseTabButtonStyleSheet; } - Q_SIGNALS: void iconChanged(); @@ -109,18 +113,22 @@ QPixmap m_titleBarRightCornerImage; QPoint m_titleBarFocusButtonPosition; + Qt::AnchorPoint m_titleBarFocusButtonAnchor; QString m_titleBarFocusButtonStyleSheet; QPoint m_titleBarMenuButtonPosition; + Qt::AnchorPoint m_titleBarMenuButtonAnchor; QString m_titleBarMenuButtonStyleSheet; QPoint m_titleBarQuitButtonPosition; + Qt::AnchorPoint m_titleBarQuitButtonAnchor; QString m_titleBarQuitButtonStyleSheet; QString m_titleBarText; QPoint m_titleBarTextPosition; QColor m_titleBarTextColor; bool m_titleBarTextBold; + bool m_titleBarTextCentered; QPoint m_tabBarPosition; QColor m_tabBarTextColor; @@ -132,6 +140,7 @@ QPixmap m_tabBarUnselectedRightCornerImage; QPixmap m_tabBarSelectedLeftCornerImage; QPixmap m_tabBarSelectedRightCornerImage; + bool m_tabBarSelectedTextBold; QPixmap m_tabBarPreventClosingImage; QPixmap m_tabBarPreventClosingImageCached; @@ -143,6 +152,7 @@ QPoint m_tabBarNewTabButtonPosition; QString m_tabBarNewTabButtonStyleSheet; + bool m_tabBarNewTabButtonIsAtEndOfTabs; QPoint m_tabBarCloseTabButtonPosition; QString m_tabBarCloseTabButtonStyleSheet; diff --git a/app/skin.cpp b/app/skin.cpp --- a/app/skin.cpp +++ b/app/skin.cpp @@ -83,6 +83,7 @@ titleDir + titleBarFocusButton.readEntry("over_image", ""), titleDir + titleBarFocusButton.readEntry("down_image", "")); + m_titleBarFocusButtonAnchor = titleBarFocusButton.readEntry("anchor", "") == QStringLiteral("left") ? Qt::AnchorLeft : Qt::AnchorRight; KConfigGroup titleBarMenuButton = titleConfig.group("ConfigButton"); @@ -93,6 +94,7 @@ titleDir + titleBarMenuButton.readEntry("over_image", ""), titleDir + titleBarMenuButton.readEntry("down_image", "")); + m_titleBarMenuButtonAnchor = titleBarMenuButton.readEntry("anchor", "") == QStringLiteral("left") ? Qt::AnchorLeft : Qt::AnchorRight; KConfigGroup titleBarQuitButton = titleConfig.group("QuitButton"); @@ -103,6 +105,7 @@ titleDir + titleBarQuitButton.readEntry("over_image", ""), titleDir + titleBarQuitButton.readEntry("down_image", "")); + m_titleBarQuitButtonAnchor = titleBarQuitButton.readEntry("anchor", "") == QStringLiteral("left") ? Qt::AnchorLeft : Qt::AnchorRight; KConfigGroup titleBarText = titleConfig.group("Text"); @@ -116,7 +119,7 @@ titleBarText.readEntry("blue", 0)); m_titleBarTextBold = titleBarText.readEntry("bold", true); - + m_titleBarTextCentered = titleBarText.readEntry("centered", false); KConfigGroup tabBar = tabConfig.group("Tabs"); @@ -134,11 +137,13 @@ m_tabBarUnselectedRightCornerImage.load(tabDir + tabBar.readEntry("unselected_right_corner", "")); m_tabBarSelectedLeftCornerImage.load(tabDir + tabBar.readEntry("selected_left_corner", "")); m_tabBarSelectedRightCornerImage.load(tabDir + tabBar.readEntry("selected_right_corner", "")); + m_tabBarSelectedTextBold = tabBar.readEntry("selected_text_bold", true); m_tabBarPreventClosingImage.load(tabDir + tabBar.readEntry("prevent_closing_image", "")); m_tabBarPreventClosingImagePosition.setX(tabBar.readEntry("prevent_closing_image_x", 0)); m_tabBarPreventClosingImagePosition.setY(tabBar.readEntry("prevent_closing_image_y", 0)); + m_tabBarNewTabButtonIsAtEndOfTabs = tabBar.readEntry("plus_button_is_at_end_of_tabs", false); KConfigGroup tabBarBackground = tabConfig.group("Background"); @@ -146,7 +151,6 @@ m_tabBarLeftCornerImage.load(tabDir + tabBarBackground.readEntry("left_corner", "")); m_tabBarRightCornerImage.load(tabDir + tabBarBackground.readEntry("right_corner", "")); - KConfigGroup tabBarNewTabButton = tabConfig.group("PlusButton"); m_tabBarNewTabButtonPosition.setX(tabBarNewTabButton.readEntry("x", 0)); diff --git a/app/tabbar.h b/app/tabbar.h --- a/app/tabbar.h +++ b/app/tabbar.h @@ -122,7 +122,8 @@ void updateToggleMonitorSilenceMenu(int sessionId = -1); void updateToggleMonitorActivityMenu(int sessionId = -1); - int drawButton(int x, int y, int index, QPainter& painter); + int drawTab(int x, int y, int index, QPainter& painter); + void moveNewTabButton(); void startDrag(int index); void drawDropIndicator(int index, bool disabled = false); diff --git a/app/tabbar.cpp b/app/tabbar.cpp --- a/app/tabbar.cpp +++ b/app/tabbar.cpp @@ -115,9 +115,8 @@ m_newTabButton->setStyleSheet(m_skin->tabBarNewTabButtonStyleSheet()); m_closeTabButton->setStyleSheet(m_skin->tabBarCloseTabButtonStyleSheet()); - m_newTabButton->move( m_skin->tabBarNewTabButtonPosition().x(), m_skin->tabBarNewTabButtonPosition().y()); + moveNewTabButton(); m_closeTabButton->move(width() - m_skin->tabBarCloseTabButtonPosition().x(), m_skin->tabBarCloseTabButtonPosition().y()); - repaint(); } @@ -395,12 +394,20 @@ void TabBar::resizeEvent(QResizeEvent* event) { - m_newTabButton->move(m_skin->tabBarNewTabButtonPosition().x(), m_skin->tabBarNewTabButtonPosition().y()); + moveNewTabButton(); m_closeTabButton->move(width() - m_skin->tabBarCloseTabButtonPosition().x(), m_skin->tabBarCloseTabButtonPosition().y()); - QWidget::resizeEvent(event); } +void TabBar::moveNewTabButton() +{ + int newTabButtonX = m_skin->tabBarNewTabButtonPosition().x(); + if (m_skin->tabBarNewTabButtonIsAtEndOfTabs()) { + newTabButtonX += m_tabWidths.last(); + } + m_newTabButton->move(newTabButtonX, m_skin->tabBarNewTabButtonPosition().y()); +} + void TabBar::paintEvent(QPaintEvent*) { QPainter painter(this); @@ -415,7 +422,7 @@ for (int index = 0; index < m_tabs.count(); ++index) { - x = drawButton(x, y, index, painter); + x = drawTab(x, y, index, painter); m_tabWidths << x; } @@ -446,9 +453,13 @@ painter.drawTiledPixmap(0, 0, width(), height(), backgroundImage); painter.end(); + + if (m_skin->tabBarNewTabButtonIsAtEndOfTabs()) { + moveNewTabButton(); + } } -int TabBar::drawButton(int x, int y, int index, QPainter& painter) +int TabBar::drawTab(int x, int y, int index, QPainter& painter) { QString title; int sessionId; @@ -476,7 +487,7 @@ x += m_skin->tabBarSeparatorImage().width(); } - if (selected) font.setBold(true); + if (selected) font.setBold(m_skin->tabBarSelectedTextBold()); else font.setBold(false); painter.setFont(font); @@ -990,7 +1001,7 @@ painter.initFrom(this); painter.setPen(m_skin->tabBarTextColor()); - drawButton(0, 0, index, painter); + drawTab(0, 0, index, painter); painter.end(); QMimeData* mimeData = new QMimeData; diff --git a/app/titlebar.h b/app/titlebar.h --- a/app/titlebar.h +++ b/app/titlebar.h @@ -58,6 +58,8 @@ private: + void moveButtons(); + MainWindow* m_mainWindow; Skin* m_skin; diff --git a/app/titlebar.cpp b/app/titlebar.cpp --- a/app/titlebar.cpp +++ b/app/titlebar.cpp @@ -32,7 +32,6 @@ #include #include - TitleBar::TitleBar(MainWindow* mainWindow) : QWidget(mainWindow) { setWhatsThis(xi18nc("@info:whatsthis", @@ -76,20 +75,34 @@ m_menuButton->setStyleSheet(m_skin->titleBarMenuButtonStyleSheet()); m_quitButton->setStyleSheet(m_skin->titleBarQuitButtonStyleSheet()); - m_focusButton->move(width() - m_skin->titleBarFocusButtonPosition().x(), m_skin->titleBarFocusButtonPosition().y()); - m_menuButton->move(width() - m_skin->titleBarMenuButtonPosition().x(), m_skin->titleBarMenuButtonPosition().y()); - m_quitButton->move(width() - m_skin->titleBarQuitButtonPosition().x(), m_skin->titleBarQuitButtonPosition().y()); + moveButtons(); repaint(); updateMask(); } +void TitleBar::moveButtons() +{ + if (m_skin->titleBarFocusButtonAnchor() == Qt::AnchorLeft) + m_focusButton->move(m_skin->titleBarFocusButtonPosition().x(), m_skin->titleBarFocusButtonPosition().y()); + else if (m_skin->titleBarFocusButtonAnchor() == Qt::AnchorRight) + m_focusButton->move(width() - m_skin->titleBarFocusButtonPosition().x(), m_skin->titleBarFocusButtonPosition().y()); + + if (m_skin->titleBarMenuButtonAnchor() == Qt::AnchorLeft) + m_menuButton->move(m_skin->titleBarMenuButtonPosition().x(), m_skin->titleBarMenuButtonPosition().y()); + else if (m_skin->titleBarMenuButtonAnchor() == Qt::AnchorRight) + m_menuButton->move(width() - m_skin->titleBarMenuButtonPosition().x(), m_skin->titleBarMenuButtonPosition().y()); + + if (m_skin->titleBarQuitButtonAnchor() == Qt::AnchorLeft) + m_quitButton->move(m_skin->titleBarQuitButtonPosition().x(), m_skin->titleBarQuitButtonPosition().y()); + else if (m_skin->titleBarQuitButtonAnchor() == Qt::AnchorRight) + m_quitButton->move(width() - m_skin->titleBarQuitButtonPosition().x(), m_skin->titleBarQuitButtonPosition().y()); +} + void TitleBar::resizeEvent(QResizeEvent* event) { - m_focusButton->move(width() - m_skin->titleBarFocusButtonPosition().x(), m_skin->titleBarFocusButtonPosition().y()); - m_menuButton->move(width() - m_skin->titleBarMenuButtonPosition().x(), m_skin->titleBarMenuButtonPosition().y()); - m_quitButton->move(width() - m_skin->titleBarQuitButtonPosition().x(), m_skin->titleBarQuitButtonPosition().y()); + moveButtons(); updateMask(); @@ -116,7 +129,11 @@ font.setBold(m_skin->titleBarTextBold()); painter.setFont(font); - painter.drawText(m_skin->titleBarTextPosition(), title()); + const QString title = this->title(); + if (m_skin->titleBarTextCentered() && width() > m_skin->titleBarTextPosition().x() + painter.fontMetrics().width(title) + m_focusButton->width() + m_quitButton->width() + m_menuButton->width()) + painter.drawText(0, 0, width(), height(), Qt::AlignCenter, title); + else + painter.drawText(m_skin->titleBarTextPosition(), title); painter.end(); }