File indexing completed on 2024-04-28 05:11:03

0001 /*
0002     This file is part of Akregator.
0003 
0004     SPDX-FileCopyrightText: 2004 Sashmit Bhaduri <smt@vfemail.net>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0
0007 */
0008 
0009 #pragma once
0010 
0011 #include <QTabWidget>
0012 
0013 #include <memory>
0014 
0015 class QString;
0016 
0017 namespace Akregator
0018 {
0019 class Frame;
0020 class OpenUrlRequest;
0021 class TabWidgetPrivate;
0022 
0023 class TabWidget : public QTabWidget
0024 {
0025     Q_OBJECT
0026 
0027 public:
0028     explicit TabWidget(QWidget *parent = nullptr);
0029     ~TabWidget() override;
0030 
0031 public Q_SLOTS:
0032     void slotWebPageMutedOrAudibleChanged(Akregator::Frame *frame, bool isAudioMuted, bool wasRecentlyAudible);
0033     void slotCopy();
0034     void slotZoomChanged(qreal value);
0035 
0036     void slotSetTitle(Akregator::Frame *frame, const QString &title);
0037     void slotSetIcon(Akregator::Frame *frame, const QIcon &icon);
0038     void slotSettingsChanged();
0039     void slotNextTab();
0040     void slotPreviousTab();
0041     void slotRemoveCurrentFrame();
0042     void slotAddFrame(Akregator::Frame *f);
0043     void slotRemoveFrame(int frameId);
0044     void slotSelectFrame(int frameId);
0045     void slotReloadAllTabs();
0046     void slotActivateTab();
0047     void slotDetachTab(int index);
0048     void slotCopyLinkAddress();
0049     void slotCloseTab();
0050     void slotPrint();
0051     void slotPrintPreview();
0052     void slotFindTextInHtml();
0053     void slotTextToSpeech();
0054     void slotSaveLinkAs();
0055     void slotCopyImageLocation();
0056     void slotSaveImageOnDisk();
0057     void slotUnMute();
0058     void slotMute();
0059 Q_SIGNALS:
0060     void signalCurrentFrameChanged(int);
0061     void signalRemoveFrameRequest(int);
0062     void signalOpenUrlRequest(Akregator::OpenUrlRequest &);
0063     void signalZoomChangedInFrame(int currentFrame, qreal value);
0064     void signalPrintInFrame(int currentFrame);
0065     void signalCopyInFrame(int currentFrame);
0066     void signalPrintPreviewInFrame(int currentFrame);
0067     void signalTextToSpeechInFrame(int currentFrame);
0068     void signalFindTextInFrame(int currentFrame);
0069     void signalSaveLinkAsInFrame(int currentFrame);
0070     void signalCopyLinkAsInFrame(int currentFrame);
0071     void signalCopyImageLocation(int currentFrame);
0072     void signalSaveImageOnDisk(int currentFrame);
0073     void signalMute(int currentFrame, bool);
0074 
0075 private:
0076     void tabInserted(int) override;
0077     void tabRemoved(int) override;
0078 
0079 private Q_SLOTS:
0080     void slotCloseRequest(int index);
0081     void slotTabChanged(int index);
0082     void slotCloseAllTab();
0083     void slotTabContextMenuRequest(const QPoint &pos);
0084     void slotCloseAllTabExcept(int index);
0085 
0086 private:
0087     void closeAllTabExcept(int index = -1);
0088 
0089 private:
0090     std::unique_ptr<TabWidgetPrivate> const d;
0091 };
0092 } // namespace Akregator