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"