File indexing completed on 2024-05-05 04:57:14
0001 /* 0002 This file is part of Choqok, the KDE micro-blogging client 0003 0004 SPDX-FileCopyrightText: 2008-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 GNUSOCIALAPIMICROBLOGPLUGIN_H 0010 #define GNUSOCIALAPIMICROBLOGPLUGIN_H 0011 0012 #include <QPointer> 0013 0014 #include "gnusocialapihelper_export.h" 0015 0016 #include "twitterapimicroblog.h" 0017 0018 class GNUSocialApiSearch; 0019 class KJob; 0020 0021 /** 0022 This plugin is to GNU social service. 0023 0024 @Note GNU social was called StatusNet and Laconcia previously, So I just renamed it on UI :D 0025 0026 @author Mehrdad Momeny \<mehrdad.momeny@gmail.com\> 0027 */ 0028 class GNUSOCIALAPIHELPER_EXPORT GNUSocialApiMicroBlog : public TwitterApiMicroBlog 0029 { 0030 Q_OBJECT 0031 public: 0032 GNUSocialApiMicroBlog(const QString &componentName, QObject *parent); 0033 ~GNUSocialApiMicroBlog(); 0034 0035 virtual Choqok::Account *createNewAccount(const QString &alias) override; 0036 virtual Choqok::UI::MicroBlogWidget *createMicroBlogWidget(Choqok::Account *account, QWidget *parent) override; 0037 virtual Choqok::UI::TimelineWidget *createTimelineWidget(Choqok::Account *account, 0038 const QString &timelineName, QWidget *parent) override; 0039 virtual Choqok::UI::PostWidget *createPostWidget(Choqok::Account *account, Choqok::Post *post, QWidget *parent) override; 0040 virtual Choqok::UI::ComposerWidget *createComposerWidget(Choqok::Account *account, QWidget *parent) override; 0041 virtual QUrl profileUrl(Choqok::Account *account, const QString &username) const override; 0042 virtual QUrl postUrl(Choqok::Account *account, const QString &username, const QString &postId) const override; 0043 0044 virtual TwitterApiSearch *searchBackend() override; 0045 0046 void createPostWithAttachment(Choqok::Account *theAccount, Choqok::Post *post, 0047 const QString &mediumToAttach = QString()); 0048 virtual QString generateRepeatedByUserTooltip(const QString &username) override; 0049 virtual QString repeatQuestion() override; 0050 0051 void fetchConversation(Choqok::Account *theAccount, const QString &conversationId); 0052 0053 virtual void requestFriendsScreenName(TwitterApiAccount *theAccount, bool active) override; 0054 0055 virtual void showDirectMessageDialog(TwitterApiAccount *theAccount = nullptr, const QString &toUsername = QString()) override; 0056 0057 static QString usernameFromProfileUrl(const QString &profileUrl); 0058 static QString hostFromProfileUrl(const QString &profileUrl); 0059 0060 Q_SIGNALS: 0061 void conversationFetched(Choqok::Account *theAccount, const QString &conversationId, 0062 QList<Choqok::Post *> posts); 0063 0064 protected: 0065 using TwitterApiMicroBlog::readPost; 0066 virtual Choqok::Post *readPost(Choqok::Account *account, const QVariantMap &var, Choqok::Post *post) override; 0067 virtual void listFriendsUsername(TwitterApiAccount *theAccount, bool active = false) override; 0068 virtual QStringList readFriendsScreenName(Choqok::Account *theAccount, const QByteArray &buffer) override; 0069 0070 protected Q_SLOTS: 0071 void slotFetchConversation(KJob *job); 0072 void slotRequestFriendsScreenName(KJob *job); 0073 0074 private: 0075 void doRequestFriendsScreenName(TwitterApiAccount *theAccount, int page); 0076 0077 QMap<KJob *, QString> mFetchConversationMap; 0078 QPointer<GNUSocialApiSearch> mSearchBackend; 0079 int friendsPage; 0080 }; 0081 0082 #endif