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