You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
173 lines
4.7 KiB
173 lines
4.7 KiB
/* ============================================================ |
|
* Falkon - Qt web browser |
|
* Copyright (C) 2010-2018 David Rosca <nowrep@gmail.com> |
|
* |
|
* This program is free software: you can redistribute it and/or modify |
|
* it under the terms of the GNU General Public License as published by |
|
* the Free Software Foundation, either version 3 of the License, or |
|
* (at your option) any later version. |
|
* |
|
* This program is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
* GNU General Public License for more details. |
|
* |
|
* You should have received a copy of the GNU General Public License |
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
* ============================================================ */ |
|
#ifndef TABWIDGET_H |
|
#define TABWIDGET_H |
|
|
|
#include <QTabWidget> |
|
#include <QMenu> |
|
|
|
#include "tabstackedwidget.h" |
|
#include "toolbutton.h" |
|
#include "loadrequest.h" |
|
#include "webtab.h" |
|
#include "qzcommon.h" |
|
|
|
class QMenu; |
|
|
|
class TabBar; |
|
class TabIcon; |
|
class TabWidget; |
|
class BrowserWindow; |
|
class TabbedWebView; |
|
class ClosedTabsManager; |
|
|
|
class FALKON_EXPORT AddTabButton : public ToolButton |
|
{ |
|
public: |
|
explicit AddTabButton(TabWidget* tabWidget, TabBar* tabBar); |
|
|
|
private: |
|
void wheelEvent(QWheelEvent* event); |
|
void mouseReleaseEvent(QMouseEvent* event); |
|
|
|
TabBar* m_tabBar; |
|
TabWidget* m_tabWidget; |
|
}; |
|
|
|
class FALKON_EXPORT MenuTabs : public QMenu |
|
{ |
|
Q_OBJECT |
|
public: |
|
explicit MenuTabs(QWidget* parent = 0) : QMenu(parent) {} |
|
|
|
signals: |
|
void closeTab(int); |
|
|
|
private: |
|
void mouseReleaseEvent(QMouseEvent* event); |
|
}; |
|
|
|
class FALKON_EXPORT TabWidget : public TabStackedWidget |
|
{ |
|
Q_OBJECT |
|
public: |
|
explicit TabWidget(BrowserWindow* mainclass, QWidget* parent = 0); |
|
~TabWidget(); |
|
|
|
QByteArray saveState(); |
|
bool restoreState(const QVector<WebTab::SavedTab> &tabs, int currentTab); |
|
void closeRecoveryTab(); |
|
|
|
void setCurrentIndex(int index); |
|
|
|
void nextTab(); |
|
void previousTab(); |
|
void currentTabChanged(int index); |
|
|
|
int normalTabsCount() const; |
|
int pinnedTabsCount() const; |
|
int lastTabIndex() const; |
|
int extraReservedWidth() const; |
|
|
|
TabBar* tabBar() const; |
|
ClosedTabsManager* closedTabsManager() const; |
|
QList<WebTab*> allTabs(bool withPinned = true); |
|
bool canRestoreTab() const; |
|
bool isCurrentTabFresh() const; |
|
void setCurrentTabFresh(bool currentTabFresh); |
|
|
|
QStackedWidget* locationBars() const; |
|
ToolButton* buttonClosedTabs() const; |
|
AddTabButton* buttonAddTab() const; |
|
|
|
void detachTab(WebTab* tab); |
|
|
|
public slots: |
|
int addView(const LoadRequest &req, const Qz::NewTabPositionFlags &openFlags, bool selectLine = false, bool pinned = false); |
|
int addView(const LoadRequest &req, const QString &title = tr("New tab"), const Qz::NewTabPositionFlags &openFlags = Qz::NT_SelectedTab, bool selectLine = false, int position = -1, bool pinned = false); |
|
int addView(WebTab *tab, const Qz::NewTabPositionFlags &openFlags); |
|
int insertView(int index, WebTab *tab, const Qz::NewTabPositionFlags &openFlags); |
|
|
|
void addTabFromClipboard(); |
|
int duplicateTab(int index); |
|
|
|
// Force close tab |
|
void closeTab(int index = -1); |
|
// Request close tab (may be rejected) |
|
void requestCloseTab(int index = -1); |
|
|
|
void reloadTab(int index); |
|
void reloadAllTabs(); |
|
void stopTab(int index); |
|
void closeAllButCurrent(int index); |
|
void closeToRight(int index); |
|
void closeToLeft(int index); |
|
void detachTab(int index); |
|
void restoreClosedTab(QObject* obj = 0); |
|
void restoreAllClosedTabs(); |
|
void clearClosedTabsList(); |
|
|
|
void moveAddTabButton(int posX); |
|
|
|
void tabBarOverFlowChanged(bool overflowed); |
|
|
|
signals: |
|
void changed(); |
|
|
|
private slots: |
|
void loadSettings(); |
|
|
|
void aboutToShowTabsMenu(); |
|
void aboutToShowClosedTabsMenu(); |
|
|
|
void actionChangeIndex(); |
|
void tabMoved(int before, int after); |
|
|
|
private: |
|
WebTab* weTab(); |
|
WebTab* weTab(int index); |
|
TabIcon* tabIcon(int index); |
|
|
|
bool validIndex(int index) const; |
|
void updateClosedTabsButton(); |
|
|
|
BrowserWindow* m_window; |
|
TabBar* m_tabBar; |
|
QStackedWidget* m_locationBars; |
|
ClosedTabsManager* m_closedTabsManager; |
|
|
|
MenuTabs* m_menuTabs; |
|
ToolButton* m_buttonListTabs; |
|
QMenu* m_menuClosedTabs; |
|
ToolButton* m_buttonClosedTabs; |
|
AddTabButton* m_buttonAddTab; |
|
AddTabButton* m_buttonAddTab2; |
|
|
|
int m_lastTabIndex; |
|
int m_lastBackgroundTabIndex; |
|
|
|
bool m_dontCloseWithOneTab; |
|
bool m_showClosedTabsButton; |
|
bool m_newTabAfterActive; |
|
bool m_newEmptyTabAfterActive; |
|
QUrl m_urlOnNewTab; |
|
|
|
bool m_currentTabFresh; |
|
}; |
|
|
|
#endif // TABWIDGET_H
|
|
|