add close current tab action
This commit is contained in:
		
							parent
							
								
									cf48e1c5ed
								
							
						
					
					
						commit
						4a0b4d8c97
					
				
					 6 changed files with 23 additions and 1 deletions
				
			
		|  | @ -26,7 +26,7 @@ | ||||||
|   <url type="donation">https://github.com/sponsors/martinrotter</url> |   <url type="donation">https://github.com/sponsors/martinrotter</url> | ||||||
|   <content_rating type="oars-1.1" /> |   <content_rating type="oars-1.1" /> | ||||||
|   <releases> |   <releases> | ||||||
|     <release version="4.0.4" date="2021-11-05"/> |     <release version="4.0.4" date="2021-11-09"/> | ||||||
|   </releases> |   </releases> | ||||||
|   <content_rating type="oars-1.0"> |   <content_rating type="oars-1.0"> | ||||||
|     <content_attribute id="violence-cartoon">none</content_attribute> |     <content_attribute id="violence-cartoon">none</content_attribute> | ||||||
|  |  | ||||||
|  | @ -84,6 +84,7 @@ FormMain::FormMain(QWidget* parent, Qt::WindowFlags f) | ||||||
|   createConnections(); |   createConnections(); | ||||||
|   updateMessageButtonsAvailability(); |   updateMessageButtonsAvailability(); | ||||||
|   updateFeedButtonsAvailability(); |   updateFeedButtonsAvailability(); | ||||||
|  |   updateTabsButtonsAvailability(tabWidget()->currentIndex()); | ||||||
| 
 | 
 | ||||||
|   // Setup some appearance of the window.
 |   // Setup some appearance of the window.
 | ||||||
|   setupIcons(); |   setupIcons(); | ||||||
|  | @ -198,6 +199,7 @@ QList<QAction*> FormMain::allActions() const { | ||||||
|   actions << m_ui->m_actionTabNewWebBrowser; |   actions << m_ui->m_actionTabNewWebBrowser; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  |   actions << m_ui->m_actionTabsCloseCurrent; | ||||||
|   actions << m_ui->m_actionTabsCloseAll; |   actions << m_ui->m_actionTabsCloseAll; | ||||||
|   actions << m_ui->m_actionTabsCloseAllExceptCurrent; |   actions << m_ui->m_actionTabsCloseAllExceptCurrent; | ||||||
| 
 | 
 | ||||||
|  | @ -392,6 +394,11 @@ void FormMain::updateAccountsMenu() { | ||||||
|   m_ui->m_menuAccounts->addAction(m_ui->m_actionServiceDelete); |   m_ui->m_menuAccounts->addAction(m_ui->m_actionServiceDelete); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void FormMain::updateTabsButtonsAvailability(int index) { | ||||||
|  |   m_ui->m_actionTabsCloseCurrent->setEnabled(tabWidget()->tabBar()->tabType(index) == TabBar::TabType::Closable || | ||||||
|  |                                              tabWidget()->tabBar()->tabType(index) == TabBar::TabType::DownloadManager); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void FormMain::onFeedUpdatesFinished(const FeedDownloadResults& results) { | void FormMain::onFeedUpdatesFinished(const FeedDownloadResults& results) { | ||||||
|   Q_UNUSED(results) |   Q_UNUSED(results) | ||||||
| 
 | 
 | ||||||
|  | @ -568,6 +575,7 @@ void FormMain::setupIcons() { | ||||||
|   // Tabs & web browser.
 |   // Tabs & web browser.
 | ||||||
|   m_ui->m_actionTabNewWebBrowser->setIcon(icon_theme_factory->fromTheme(QSL("tab-new"))); |   m_ui->m_actionTabNewWebBrowser->setIcon(icon_theme_factory->fromTheme(QSL("tab-new"))); | ||||||
|   m_ui->m_actionTabsCloseAll->setIcon(icon_theme_factory->fromTheme(QSL("window-close"))); |   m_ui->m_actionTabsCloseAll->setIcon(icon_theme_factory->fromTheme(QSL("window-close"))); | ||||||
|  |   m_ui->m_actionTabsCloseCurrent->setIcon(icon_theme_factory->fromTheme(QSL("window-close"))); | ||||||
|   m_ui->m_actionTabsCloseAllExceptCurrent->setIcon(icon_theme_factory->fromTheme(QSL("window-close"))); |   m_ui->m_actionTabsCloseAllExceptCurrent->setIcon(icon_theme_factory->fromTheme(QSL("window-close"))); | ||||||
|   m_ui->m_actionTabsNext->setIcon(icon_theme_factory->fromTheme(QSL("go-next"))); |   m_ui->m_actionTabsNext->setIcon(icon_theme_factory->fromTheme(QSL("go-next"))); | ||||||
|   m_ui->m_actionTabsPrevious->setIcon(icon_theme_factory->fromTheme(QSL("go-previous"))); |   m_ui->m_actionTabsPrevious->setIcon(icon_theme_factory->fromTheme(QSL("go-previous"))); | ||||||
|  | @ -715,6 +723,7 @@ void FormMain::createConnections() { | ||||||
|   connect(m_ui->m_actionTabsPrevious, &QAction::triggered, m_ui->m_tabWidget, &TabWidget::gotoPreviousTab); |   connect(m_ui->m_actionTabsPrevious, &QAction::triggered, m_ui->m_tabWidget, &TabWidget::gotoPreviousTab); | ||||||
|   connect(m_ui->m_actionTabsCloseAllExceptCurrent, &QAction::triggered, m_ui->m_tabWidget, &TabWidget::closeAllTabsExceptCurrent); |   connect(m_ui->m_actionTabsCloseAllExceptCurrent, &QAction::triggered, m_ui->m_tabWidget, &TabWidget::closeAllTabsExceptCurrent); | ||||||
|   connect(m_ui->m_actionTabsCloseAll, &QAction::triggered, m_ui->m_tabWidget, &TabWidget::closeAllTabs); |   connect(m_ui->m_actionTabsCloseAll, &QAction::triggered, m_ui->m_tabWidget, &TabWidget::closeAllTabs); | ||||||
|  |   connect(m_ui->m_actionTabsCloseCurrent, &QAction::triggered, m_ui->m_tabWidget, &TabWidget::closeCurrentTab); | ||||||
|   connect(m_ui->m_actionTabNewWebBrowser, &QAction::triggered, m_ui->m_tabWidget, &TabWidget::addEmptyBrowser); |   connect(m_ui->m_actionTabNewWebBrowser, &QAction::triggered, m_ui->m_tabWidget, &TabWidget::addEmptyBrowser); | ||||||
|   connect(tabWidget()->feedMessageViewer()->feedsView(), &FeedsView::itemSelected, this, &FormMain::updateFeedButtonsAvailability); |   connect(tabWidget()->feedMessageViewer()->feedsView(), &FeedsView::itemSelected, this, &FormMain::updateFeedButtonsAvailability); | ||||||
|   connect(qApp->feedUpdateLock(), &Mutex::locked, this, &FormMain::updateFeedButtonsAvailability); |   connect(qApp->feedUpdateLock(), &Mutex::locked, this, &FormMain::updateFeedButtonsAvailability); | ||||||
|  | @ -723,6 +732,7 @@ void FormMain::createConnections() { | ||||||
|           this, &FormMain::updateMessageButtonsAvailability); |           this, &FormMain::updateMessageButtonsAvailability); | ||||||
|   connect(tabWidget()->feedMessageViewer()->messagesView(), &MessagesView::currentMessageChanged, |   connect(tabWidget()->feedMessageViewer()->messagesView(), &MessagesView::currentMessageChanged, | ||||||
|           this, &FormMain::updateMessageButtonsAvailability); |           this, &FormMain::updateMessageButtonsAvailability); | ||||||
|  |   connect(tabWidget(), &TabWidget::currentChanged, this, &FormMain::updateTabsButtonsAvailability); | ||||||
|   connect(qApp->feedReader(), &FeedReader::feedUpdatesStarted, this, &FormMain::onFeedUpdatesStarted); |   connect(qApp->feedReader(), &FeedReader::feedUpdatesStarted, this, &FormMain::onFeedUpdatesStarted); | ||||||
|   connect(qApp->feedReader(), &FeedReader::feedUpdatesProgress, this, &FormMain::onFeedUpdatesProgress); |   connect(qApp->feedReader(), &FeedReader::feedUpdatesProgress, this, &FormMain::onFeedUpdatesProgress); | ||||||
|   connect(qApp->feedReader(), &FeedReader::feedUpdatesFinished, this, &FormMain::onFeedUpdatesFinished); |   connect(qApp->feedReader(), &FeedReader::feedUpdatesFinished, this, &FormMain::onFeedUpdatesFinished); | ||||||
|  |  | ||||||
|  | @ -49,6 +49,7 @@ class RSSGUARD_DLLSPEC FormMain : public QMainWindow { | ||||||
|     void updateRecycleBinMenu(); |     void updateRecycleBinMenu(); | ||||||
|     void updateAccountsMenu(); |     void updateAccountsMenu(); | ||||||
| 
 | 
 | ||||||
|  |     void updateTabsButtonsAvailability(int index); | ||||||
|     void updateMessageButtonsAvailability(); |     void updateMessageButtonsAvailability(); | ||||||
|     void updateFeedButtonsAvailability(); |     void updateFeedButtonsAvailability(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -177,6 +177,7 @@ | ||||||
|     </property> |     </property> | ||||||
|     <addaction name="m_actionTabNewWebBrowser"/> |     <addaction name="m_actionTabNewWebBrowser"/> | ||||||
|     <addaction name="separator"/> |     <addaction name="separator"/> | ||||||
|  |     <addaction name="m_actionTabsCloseCurrent"/> | ||||||
|     <addaction name="m_actionTabsCloseAll"/> |     <addaction name="m_actionTabsCloseAll"/> | ||||||
|     <addaction name="m_actionTabsCloseAllExceptCurrent"/> |     <addaction name="m_actionTabsCloseAllExceptCurrent"/> | ||||||
|     <addaction name="separator"/> |     <addaction name="separator"/> | ||||||
|  | @ -835,6 +836,11 @@ | ||||||
|     <string>Expand/collapse selected item &recursively</string> |     <string>Expand/collapse selected item &recursively</string> | ||||||
|    </property> |    </property> | ||||||
|   </action> |   </action> | ||||||
|  |   <action name="m_actionTabsCloseCurrent"> | ||||||
|  |    <property name="text"> | ||||||
|  |     <string>Close &current tab</string> | ||||||
|  |    </property> | ||||||
|  |   </action> | ||||||
|  </widget> |  </widget> | ||||||
|  <customwidgets> |  <customwidgets> | ||||||
|   <customwidget> |   <customwidget> | ||||||
|  |  | ||||||
|  | @ -183,6 +183,10 @@ void TabWidget::closeAllTabs() { | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void TabWidget::closeCurrentTab() { | ||||||
|  |   closeTab(currentIndex()); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| int TabWidget::addNewspaperView(RootItem* root, const QList<Message>& messages) { | int TabWidget::addNewspaperView(RootItem* root, const QList<Message>& messages) { | ||||||
|   int msg_height = height() - tabBar()->height() - 50; |   int msg_height = height() - tabBar()->height() - 50; | ||||||
|   NewspaperPreviewer* prev = new NewspaperPreviewer(msg_height, root, messages, this); |   NewspaperPreviewer* prev = new NewspaperPreviewer(msg_height, root, messages, this); | ||||||
|  |  | ||||||
|  | @ -63,6 +63,7 @@ class TabWidget : public QTabWidget { | ||||||
|     bool closeTab(int index); |     bool closeTab(int index); | ||||||
|     void closeAllTabsExceptCurrent(); |     void closeAllTabsExceptCurrent(); | ||||||
|     void closeAllTabs(); |     void closeAllTabs(); | ||||||
|  |     void closeCurrentTab(); | ||||||
| 
 | 
 | ||||||
|     // Displays download manager.
 |     // Displays download manager.
 | ||||||
|     void showDownloadManager(); |     void showDownloadManager(); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue