File indexing completed on 2024-04-28 09:41:41

0001 /*
0002     SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QList>
0010 #include <QTabWidget>
0011 #include <QVariant>
0012 
0013 class QString;
0014 class QIcon;
0015 
0016 class LogManager;
0017 class TabLogManager;
0018 class View;
0019 class LogMode;
0020 class QMenu;
0021 
0022 class TabLogViewsWidget : public QTabWidget
0023 {
0024     Q_OBJECT
0025 
0026 public:
0027     explicit TabLogViewsWidget(QWidget *parent = nullptr);
0028 
0029     ~TabLogViewsWidget() override;
0030 
0031     QList<LogManager *> logManagers() const;
0032 
0033     LogManager *activeLogManager() const;
0034 
0035     void load(LogMode *logMode, LogManager *manager, const QVariant &analyzerOptions = QVariant());
0036 
0037 public Q_SLOTS:
0038 
0039     LogManager *createTab();
0040     LogManager *duplicateTab();
0041 
0042     void closeTab();
0043 
0044     void moveTabLeft();
0045     void moveTabRight();
0046 
0047     void reloadCurrent();
0048     void reloadAll();
0049 
0050     /**
0051      * Display a reload icon on the specified view tab
0052      */
0053     void changeReloadingTab(View *view, bool reloading);
0054 
0055     // Methods that transmit a signal to the current logViewWidget
0056     void expandAllCurrentView();
0057     void collapseAllCurrentView();
0058     void selectAllCurrentView();
0059 
0060     void fileSaveCurrentView();
0061     void copyToClipboardCurrentView();
0062     void sendMailCurrentView();
0063     void printSelectionCurrentView();
0064     void printPreviewSelectionCurrentView();
0065 
0066 private Q_SLOTS:
0067     void changeTab(View *view, const QIcon &icon, const QString &label);
0068 
0069     void changeCurrentTab(int index);
0070     void changeTitleAddedLines(View *, int);
0071 
0072     void showContextMenu(const QPoint &cursorPosition);
0073     void showContextMenu(QWidget *tab, const QPoint &cursorPosition);
0074 
0075 Q_SIGNALS:
0076 
0077     void logManagerCreated(LogManager *manager);
0078 
0079     void statusBarChanged(const QString &message);
0080 
0081 private:
0082     TabLogManager *newTabLogManager();
0083 
0084     void newTab(View *view);
0085 
0086     LogManager *findRelatedLogManager(View *view);
0087 
0088     QIcon logModeIcon(LogMode *icon) const;
0089 
0090     TabLogManager *activeTabLogManager() const;
0091     TabLogManager *findRelatedTabLogManager(View *view) const;
0092 
0093     void prepareContextMenu(bool onTab);
0094     QList<TabLogManager *> mTabLogManagers;
0095 
0096     QMenu *mContextMenu = nullptr;
0097 };