File indexing completed on 2024-04-28 05:11: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 "feedlist.h" 0012 #include <QHash> 0013 #include <QObject> 0014 #include <QSharedPointer> 0015 0016 namespace KPIM 0017 { 0018 class ProgressItem; 0019 } 0020 0021 namespace Akregator 0022 { 0023 class Feed; 0024 class ProgressItemHandler; 0025 class TreeNode; 0026 0027 /** This class manages the progress items for all feeds */ 0028 0029 class ProgressManager : public QObject 0030 { 0031 Q_OBJECT 0032 public: 0033 static ProgressManager *self(); 0034 0035 ProgressManager(); 0036 ~ProgressManager() override; 0037 0038 /** sets the feed list to be managed */ 0039 void setFeedList(const QSharedPointer<FeedList> &feedList); 0040 0041 protected Q_SLOTS: 0042 0043 void slotNodeAdded(Akregator::TreeNode *node); 0044 void slotNodeRemoved(Akregator::TreeNode *node); 0045 void slotNodeDestroyed(Akregator::TreeNode *node); 0046 0047 private: 0048 static ProgressManager *m_self; 0049 QSharedPointer<FeedList> m_feedList; 0050 QHash<Feed *, ProgressItemHandler *> m_handlers; 0051 }; 0052 0053 /** this class handles the creation and deletion of progress items for one feed. 0054 This is an internal class intended to be used in ProgressManager only */ 0055 0056 class ProgressItemHandler : public QObject 0057 { 0058 Q_OBJECT 0059 public: 0060 explicit ProgressItemHandler(Feed *feed); 0061 ~ProgressItemHandler() override; 0062 0063 public Q_SLOTS: 0064 0065 void slotFetchStarted(); 0066 void slotFetchCompleted(); 0067 void slotFetchAborted(); 0068 void slotFetchError(); 0069 0070 private: 0071 Feed *m_feed = nullptr; 0072 KPIM::ProgressItem *m_progressItem = nullptr; 0073 }; 0074 } // namespace Akregator