File indexing completed on 2024-05-05 05:13:03
0001 /* 0002 This file is part of Akregator. 0003 0004 SPDX-FileCopyrightText: 2005 Frank Osterfeld <osterfeld@kde.org> 0005 0006 SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0 0007 */ 0008 0009 #pragma once 0010 0011 #include <QHash> 0012 #include <QObject> 0013 #include <QPointer> 0014 0015 #include "akregator_export.h" 0016 0017 class QIcon; 0018 class QString; 0019 class KConfigGroup; 0020 0021 namespace Akregator 0022 { 0023 class Frame; 0024 class OpenUrlRequest; 0025 0026 class AKREGATOR_EXPORT FrameManager : public QObject 0027 { 0028 Q_OBJECT 0029 0030 public: 0031 explicit FrameManager(QObject *parent = nullptr); 0032 ~FrameManager() override; 0033 0034 Frame *currentFrame() const; 0035 0036 Frame *findFrameById(int id) const; 0037 0038 /** session management **/ 0039 void saveProperties(KConfigGroup &config); 0040 0041 public Q_SLOTS: 0042 0043 void slotAddFrame(Akregator::Frame *frame); 0044 void slotRemoveFrame(int frameId); 0045 0046 void slotChangeFrame(int frameId); 0047 void slotOpenUrlRequest(Akregator::OpenUrlRequest &request, bool useOpenInBackgroundSetting = true); 0048 0049 Q_SIGNALS: 0050 0051 void signalFrameAdded(Akregator::Frame *); 0052 void signalFrameRemoved(int id); 0053 0054 void signalRequestNewFrame(int &id); 0055 0056 void signalSelectFrame(int id); 0057 /** 0058 * emitted when the active frame is switched 0059 * @param deactivated the deactivated frame 0060 * @param activated the activated frame 0061 */ 0062 void signalCurrentFrameChanged(Akregator::Frame *deactivated, Akregator::Frame *activated); 0063 0064 void signalStarted(); 0065 void signalCanceled(const QString &); 0066 void signalCompleted(); 0067 void signalCaptionChanged(const QString &); 0068 void signalTitleChanged(const QString &); 0069 void signalIconChanged(const QIcon &); 0070 void signalLoadingProgress(int); 0071 void signalStatusText(const QString &); 0072 0073 private: 0074 void openInExternalBrowser(const OpenUrlRequest &request); 0075 0076 private Q_SLOTS: 0077 void openUrl(Akregator::OpenUrlRequest &request); 0078 void slotSetStarted(Akregator::Frame *frame); 0079 void slotSetCanceled(Akregator::Frame *frame, const QString &reason); 0080 void slotSetCompleted(Akregator::Frame *frame); 0081 void slotSetProgress(Akregator::Frame *frame, int progress); 0082 void slotSetCaption(Akregator::Frame *frame, const QString &caption); 0083 void slotSetTitle(Akregator::Frame *frame, const QString &title); 0084 void slotSetStatusText(Akregator::Frame *frame, const QString &statusText); 0085 0086 private: 0087 QPointer<Frame> m_currentFrame; 0088 QHash<int, Frame *> m_frames; 0089 }; 0090 } // namespace Akregator