File indexing completed on 2024-04-21 04:55:26

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 #include "microblog.h"
0010 
0011 #include <QMenu>
0012 #include <QTimer>
0013 
0014 #include <KLocalizedString>
0015 
0016 #include "account.h"
0017 #include "accountmanager.h"
0018 #include "choqokbehaviorsettings.h"
0019 #include "composerwidget.h"
0020 #include "libchoqokdebug.h"
0021 #include "microblogwidget.h"
0022 #include "postwidget.h"
0023 #include "timelinewidget.h"
0024 
0025 namespace Choqok
0026 {
0027 class MicroBlog::Private
0028 {
0029 public:
0030     QString serviceName;
0031     QString homepage;
0032     QStringList timelineTypes;
0033     QTimer *saveTimelinesTimer;
0034 };
0035 
0036 MicroBlog::MicroBlog(const QString &componentName, QObject *parent)
0037     : Plugin(componentName, parent), d(new Private)
0038 {
0039     qCDebug(CHOQOK);
0040     d->saveTimelinesTimer = new QTimer(this);
0041     d->saveTimelinesTimer->setInterval(BehaviorSettings::notifyInterval() * 60000);
0042     connect(d->saveTimelinesTimer, &QTimer::timeout, this, &MicroBlog::saveTimelines);
0043     connect(BehaviorSettings::self(), &BehaviorSettings::configChanged, this,
0044             &MicroBlog::slotConfigChanged);
0045     d->saveTimelinesTimer->start();
0046 }
0047 
0048 MicroBlog::~MicroBlog()
0049 {
0050     qCDebug(CHOQOK);
0051     delete d;
0052 }
0053 
0054 QMenu *MicroBlog::createActionsMenu(Account *, QWidget *parent)
0055 {
0056     return new QMenu(parent);
0057 }
0058 
0059 QString MicroBlog::serviceName() const
0060 {
0061     return d->serviceName;
0062 }
0063 
0064 QString MicroBlog::homepageUrl() const
0065 {
0066     return d->homepage;
0067 }
0068 
0069 QString MicroBlog::errorString(ErrorType type)
0070 {
0071     switch (type) {
0072     case ServerError:
0073         return i18n("The server returned an error");
0074     case CommunicationError:
0075         return i18n("Error on communication with server");
0076     case ParsingError:
0077         return i18n("Error on parsing results");
0078     case AuthenticationError:
0079         return i18n("Authentication error");
0080     case NotSupportedError:
0081         return i18n("The server does not support this feature");
0082     case OtherError:
0083         return i18n("Unknown error");
0084     }
0085     return QString();
0086 }
0087 
0088 void MicroBlog::setServiceName(const QString &serviceName)
0089 {
0090     d->serviceName = serviceName;
0091 }
0092 
0093 void MicroBlog::setServiceHomepageUrl(const QString &homepage)
0094 {
0095     d->homepage = homepage;
0096 }
0097 
0098 QStringList MicroBlog::timelineNames() const
0099 {
0100     return d->timelineTypes;
0101 }
0102 
0103 void MicroBlog::setTimelineNames(const QStringList &types)
0104 {
0105     d->timelineTypes = types;
0106 }
0107 
0108 void MicroBlog::addTimelineName(const QString &name)
0109 {
0110     d->timelineTypes << name;
0111 }
0112 
0113 bool MicroBlog::isValidTimeline(const QString &timeline)
0114 {
0115     return d->timelineTypes.contains(timeline);
0116 }
0117 
0118 void MicroBlog::slotConfigChanged()
0119 {
0120     d->saveTimelinesTimer->setInterval(BehaviorSettings::notifyInterval() * 60000);
0121 }
0122 
0123 /// UI Objects:
0124 
0125 Account *MicroBlog::createNewAccount(const QString &alias)
0126 {
0127     Choqok::Account *acc = Choqok::AccountManager::self()->findAccount(alias);
0128     if (!acc) {
0129         return new Choqok::Account(this, alias);
0130     } else {
0131         return nullptr;
0132     }
0133 }
0134 
0135 UI::MicroBlogWidget *MicroBlog::createMicroBlogWidget(Account *account, QWidget *parent)
0136 {
0137     return new UI::MicroBlogWidget(account, parent);
0138 }
0139 
0140 UI::ComposerWidget *MicroBlog::createComposerWidget(Account *account, QWidget *parent)
0141 {
0142     return new UI::ComposerWidget(account, parent);
0143 }
0144 
0145 UI::TimelineWidget *MicroBlog::createTimelineWidget(Account *account, const QString &timelineName, QWidget *parent)
0146 {
0147     return new UI::TimelineWidget(account, timelineName, parent);
0148 }
0149 
0150 UI::PostWidget *MicroBlog::createPostWidget(Account *account, Choqok::Post *post, QWidget *parent)
0151 {
0152     return new UI::PostWidget(account, post, parent);
0153 }
0154 
0155 TimelineInfo *MicroBlog::timelineInfo(const QString &)
0156 {
0157     qCWarning(CHOQOK) << "MicroBlog Plugin should implement this!";
0158     return nullptr;
0159 }
0160 
0161 void MicroBlog::abortAllJobs(Account *)
0162 {
0163     qCWarning(CHOQOK) << "MicroBlog Plugin should implement this!";
0164 }
0165 
0166 void MicroBlog::abortCreatePost(Account *, Post *)
0167 {
0168     qCWarning(CHOQOK) << "MicroBlog Plugin should implement this!";
0169 }
0170 
0171 void MicroBlog::createPost(Account *, Post *)
0172 {
0173     qCWarning(CHOQOK) << "MicroBlog Plugin should implement this!";
0174 }
0175 
0176 void MicroBlog::fetchPost(Account *, Post *)
0177 {
0178     qCWarning(CHOQOK) << "MicroBlog Plugin should implement this!";
0179 }
0180 
0181 void MicroBlog::removePost(Account *, Post *)
0182 {
0183     qCWarning(CHOQOK) << "MicroBlog Plugin should implement this!";
0184 }
0185 
0186 void MicroBlog::updateTimelines(Account *)
0187 {
0188     qCWarning(CHOQOK) << "MicroBlog Plugin should implement this!";
0189 }
0190 
0191 QList< Post * > MicroBlog::loadTimeline(Account *, const QString &)
0192 {
0193     qCWarning(CHOQOK) << "MicroBlog Plugin should implement this!";
0194     return QList<Post *>();
0195 }
0196 
0197 void MicroBlog::saveTimeline(Account *, const QString &, const QList< UI::PostWidget * > &)
0198 {
0199     qCWarning(CHOQOK) << "MicroBlog Plugin should implement this!";
0200 }
0201 
0202 QUrl MicroBlog::postUrl(Account *, const QString &, const QString &) const
0203 {
0204     qCWarning(CHOQOK) << "MicroBlog Plugin should implement this!";
0205     return QUrl();
0206 }
0207 
0208 QUrl MicroBlog::profileUrl(Account *, const QString &) const
0209 {
0210     qCWarning(CHOQOK) << "MicroBlog Plugin should implement this!";
0211     return QUrl();
0212 }
0213 
0214 }
0215 
0216 #include "moc_microblog.cpp"