File indexing completed on 2024-04-21 05:10:35

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 <QSharedPointer>
0012 
0013 #include "akregator_export.h"
0014 
0015 namespace Akregator
0016 {
0017 namespace Backend
0018 {
0019 class Storage;
0020 }
0021 
0022 class FeedList;
0023 class FetchQueue;
0024 class FrameManager;
0025 
0026 class AKREGATOR_EXPORT Kernel
0027 {
0028 public:
0029     static Kernel *self();
0030 
0031     ~Kernel();
0032 
0033     Backend::Storage *storage();
0034     void setStorage(Backend::Storage *storage);
0035 
0036     [[nodiscard]] QSharedPointer<FeedList> feedList() const;
0037     void setFeedList(const QSharedPointer<FeedList> &feedList);
0038 
0039     FetchQueue *fetchQueue() const;
0040 
0041     FrameManager *frameManager() const;
0042 
0043 private:
0044     Kernel();
0045 
0046     static Kernel *m_self;
0047 
0048     Backend::Storage *m_storage = nullptr;
0049     QSharedPointer<FeedList> m_feedList;
0050     FetchQueue *m_fetchQueue = nullptr;
0051     FrameManager *m_frameManager = nullptr;
0052 };
0053 } // namespace Akregator