Some refactoring for #128.

This commit is contained in:
Martin Rotter 2017-07-13 06:42:04 +02:00
parent 58532fc45d
commit faf7cde796
2 changed files with 34 additions and 28 deletions

View File

@ -286,6 +286,21 @@ int TabWidget::addBrowser(bool move_after_current, bool make_active, const QUrl
#endif
}
void TabWidget::indentTabText(int index){
#if defined (Q_OS_MACOS)
if (tabBar()->tabType(index) != TabBar::FeedReader && !tabIcon(index).isNull()) {
// We have closable tab with some icon, fix the title.
const QString text = tabText(index);
if (!text.startsWith(QSL(" "))) {
setTabText(index, QSL(" ") + text);
}
}
#else
Q_UNUSED(index)
#endif
}
void TabWidget::removeTab(int index, bool clear_from_memory) {
if (clear_from_memory) {
widget(index)->deleteLater();
@ -297,6 +312,7 @@ void TabWidget::removeTab(int index, bool clear_from_memory) {
int TabWidget::addTab(TabContent *widget, const QIcon &icon, const QString &label, const TabBar::TabType &type) {
const int index = QTabWidget::addTab(widget, icon, label);
tabBar()->setTabType(index, type);
indentTabText(index);
return index;
}
@ -304,6 +320,7 @@ int TabWidget::addTab(TabContent *widget, const QIcon &icon, const QString &labe
int TabWidget::addTab(TabContent *widget, const QString &label, const TabBar::TabType &type) {
const int index = QTabWidget::addTab(widget, label);
tabBar()->setTabType(index, type);
indentTabText(index);
return index;
}
@ -311,6 +328,7 @@ int TabWidget::addTab(TabContent *widget, const QString &label, const TabBar::Ta
int TabWidget::insertTab(int index, QWidget *widget, const QIcon &icon, const QString &label, const TabBar::TabType &type) {
const int tab_index = QTabWidget::insertTab(index, widget, icon, label);
tabBar()->setTabType(tab_index, type);
indentTabText(index);
return tab_index;
}
@ -318,35 +336,20 @@ int TabWidget::insertTab(int index, QWidget *widget, const QIcon &icon, const QS
int TabWidget::insertTab(int index, QWidget *widget, const QString &label, const TabBar::TabType &type) {
const int tab_index = QTabWidget::insertTab(index, widget, label);
tabBar()->setTabType(tab_index, type);
indentTabText(index);
return tab_index;
}
void TabWidget::changeIcon(int index, const QIcon &new_icon) {
setTabIcon(index, new_icon);
#if defined (Q_OS_MACOS)
if (tabBar()->tabType(index) != TabBar::FeedReader && !tabIcon(index).isNull()) {
// We have closable tab with some icon, fix the title.
if (!tabText(index).startsWith(QSL(" "))) {
setTabText(index, QSL(" ") + tabText(index));
}
}
#endif
indentTabText(index);
}
void TabWidget::changeTitle(int index, const QString &new_title) {
setTabText(index, TextFactory::shorten(new_title));
setTabToolTip(index, new_title);
#if defined (Q_OS_MACOS)
if (tabBar()->tabType(index) != TabBar::FeedReader && !tabIcon(index).isNull()) {
// We have closable tab with some icon, fix the title.
if (!tabText(index).startsWith(QSL(" "))) {
setTabText(index, QSL(" ") + tabText(index));
}
}
#endif
indentTabText(index);
}
void TabWidget::fixContentsAfterMove(int from, int to) {

View File

@ -89,24 +89,14 @@ class TabWidget : public QTabWidget {
void tabRemoved(int index);
public slots:
// Fixes tabs indexes.
void fixContentsAfterMove(int from, int to);
// Called when number of tab pages changes.
void checkTabBarVisibility();
// Changes icon/text of the tab.
void changeTitle(int index, const QString &new_title);
void changeIcon(int index, const QIcon &new_icon);
// Tab closing.
bool closeTab(int index);
void closeAllTabsExceptCurrent();
void closeAllTabs();
// Opens main menu.
void openMainMenu();
// Displays download manager.
void showDownloadManager();
@ -123,7 +113,20 @@ class TabWidget : public QTabWidget {
// General method for adding WebBrowsers.
int addBrowser(bool move_after_current, bool make_active, const QUrl &initial_url = QUrl());
private slots:
// Fixes tabs indexes.
void fixContentsAfterMove(int from, int to);
// Changes icon/text of the tab.
void changeTitle(int index, const QString &new_title);
void changeIcon(int index, const QIcon &new_icon);
// Opens main menu.
void openMainMenu();
private:
void indentTabText(int index);
PlainToolButton *m_btnMainMenu;
QMenu *m_menuMain;
FeedMessageViewer *m_feedMessageViewer;