File indexing completed on 2024-04-28 04:55:45
0001 /* 0002 This file is part of Choqok, the KDE micro-blogging client 0003 0004 SPDX-FileCopyrightText: 2010-2012 Mehrdad Momeny <mehrdad.momeny@gmail.com> 0005 0006 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0007 */ 0008 0009 #ifndef OCSMICROBLOG_H 0010 #define OCSMICROBLOG_H 0011 #include "microblog.h" 0012 0013 #include <Attica/Activity> 0014 0015 class OCSAccount; 0016 namespace Attica 0017 { 0018 class ProviderManager; 0019 class BaseJob; 0020 } 0021 0022 class OCSMicroblog : public Choqok::MicroBlog 0023 { 0024 Q_OBJECT 0025 public: 0026 OCSMicroblog(QObject *parent, const QVariantList &args); 0027 ~OCSMicroblog(); 0028 0029 virtual ChoqokEditAccountWidget *createEditAccountWidget(Choqok::Account *account, QWidget *parent) override; 0030 virtual void createPost(Choqok::Account *theAccount, Choqok::Post *post) override; 0031 virtual void abortCreatePost(Choqok::Account *theAccount, Choqok::Post *post = nullptr) override; 0032 virtual void fetchPost(Choqok::Account *theAccount, Choqok::Post *post) override; 0033 virtual void removePost(Choqok::Account *theAccount, Choqok::Post *post) override; 0034 virtual void saveTimeline(Choqok::Account *account, const QString &timelineName, 0035 const QList< Choqok::UI::PostWidget * > &timeline) override; 0036 virtual QList< Choqok::Post * > loadTimeline(Choqok::Account *account, const QString &timelineName) override; 0037 virtual Choqok::Account *createNewAccount(const QString &alias) override; 0038 virtual void updateTimelines(Choqok::Account *theAccount) override; 0039 virtual Choqok::TimelineInfo *timelineInfo(const QString &timelineName) override; 0040 0041 virtual QUrl profileUrl(Choqok::Account *account, const QString &username) const override; 0042 0043 Attica::ProviderManager *providerManager(); 0044 0045 bool isOperational(); 0046 virtual void aboutToUnload() override; 0047 0048 Q_SIGNALS: 0049 void initialized(); 0050 0051 protected Q_SLOTS: 0052 void slotTimelineLoaded(Attica::BaseJob *); 0053 void slotCreatePost(Attica::BaseJob *); 0054 void slotDefaultProvidersLoaded(); 0055 0056 private: 0057 enum Task {Update}; 0058 QList <Choqok::Post *> parseActivityList(const Attica::Activity::List &list); 0059 Attica::ProviderManager *mProviderManager; 0060 QMap<Attica::BaseJob *, OCSAccount *> mJobsAccount; 0061 QMap<Attica::BaseJob *, Choqok::Post *> mJobsPost; 0062 QMultiMap<Choqok::Account *, Task> scheduledTasks; 0063 bool mIsOperational; 0064 }; 0065 0066 #endif // OCSMICROBLOG_H