7 #include "atticahelper_p.h" 8 #include "jobs/httpjob.h" 12 #include <attica/listjob.h> 13 #include <attica/postjob.h> 14 #include <attica/accountbalance.h> 18 AtticaHelper::AtticaHelper(
QObject *parent) :
23 void AtticaHelper::init()
25 connect(&providerManager, &Attica::ProviderManager::defaultProvidersLoaded,
this, &AtticaHelper::defaultProvidersLoaded);
26 providerManager.loadDefaultProviders();
29 void AtticaHelper::addProviderFile(
const QUrl &file)
31 if (! providerManager.providerFiles().contains(file)) {
33 const auto lstUrl = providerManager.defaultProviderFiles();
34 for (
const QUrl &url : lstUrl) {
35 providerManager.removeProviderFileFromDefaultProviders(url);
37 providerManager.addProviderFile(file);
41 void AtticaHelper::defaultProvidersLoaded()
44 const auto lst = providerManager.providers();
47 providers.
append(p.name());
50 Q_EMIT providersLoaded(providers);
53 void AtticaHelper::setCurrentProvider(
const QString &provider)
55 const auto lst = providerManager.providers();
57 if (p.name() == provider) {
66 return currentProvider;
69 void AtticaHelper::checkLogin(
const QString &name,
const QString &password)
71 Attica::PostJob *checkLoginJob = currentProvider.
checkLogin(name, password);
72 connect(checkLoginJob, &Attica::BaseJob::finished,
this, &AtticaHelper::checkLoginFinished);
73 checkLoginJob->start();
76 void AtticaHelper::checkLoginFinished(Attica::BaseJob *baseJob)
78 Q_EMIT loginChecked(baseJob->metadata().error() == Attica::Metadata::NoError);
81 bool AtticaHelper::loadCredentials(
QString &name,
QString &password)
83 if (currentProvider.isValid() && currentProvider.hasCredentials()) {
84 if (currentProvider.loadCredentials(name, password)) {
92 bool AtticaHelper::saveCredentials(
const QString &name,
const QString &password)
94 return currentProvider.saveCredentials(name, password);
97 void AtticaHelper::loadCategories(
const QStringList &configuredCategories)
99 m_configuredCategories = configuredCategories;
100 Attica::ListJob<Attica::Category> *job = currentProvider.requestCategories();
101 connect(job, &Attica::ListJob<Attica::Category>::finished,
102 this,
static_cast<void(AtticaHelper::*)(Attica::BaseJob*)
>(&AtticaHelper::categoriesLoaded));
106 void AtticaHelper::categoriesLoaded(Attica::BaseJob *baseJob)
108 Attica::ListJob<Attica::Category> *listJob =
static_cast<Attica::ListJob<Attica::Category>*
>(baseJob);
109 const Attica::Category::List newCategories = listJob->itemList();
111 if (m_configuredCategories.isEmpty()) {
112 qWarning() <<
"No category was set in knsrc file. Adding all categories.";
114 m_validCategories.append(category);
118 if (m_configuredCategories.contains(
category.name())) {
119 m_validCategories.append(category);
123 Q_EMIT categoriesLoaded(m_validCategories);
126 void AtticaHelper::loadContentByCurrentUser()
129 Attica::ListJob<Attica::Content> *userContent = currentProvider.searchContentsByPerson(m_validCategories, m_username);
130 connect(userContent, &Attica::ListJob<Attica::Content>::finished,
131 this,
static_cast<void(AtticaHelper::*)(Attica::BaseJob*)
>(&AtticaHelper::contentByCurrentUserLoaded));
133 userContent->start();
136 void AtticaHelper::contentByCurrentUserLoaded(Attica::BaseJob *baseJob)
138 Attica::ListJob<Attica::Content> *contentList =
static_cast<Attica::ListJob<Attica::Content>*
>(baseJob);
139 m_userCreatedContent = contentList->itemList();
140 Q_EMIT contentByCurrentUserLoaded(m_userCreatedContent);
143 void AtticaHelper::loadLicenses()
145 Attica::ListJob<Attica::License> *licenseJob = currentProvider.requestLicenses();
146 connect(licenseJob, &Attica::ListJob<Attica::License>::finished,
147 this,
static_cast<void(AtticaHelper::*)(Attica::BaseJob*)
>(&AtticaHelper::licensesLoaded));
151 void AtticaHelper::licensesLoaded(Attica::BaseJob *baseJob)
153 Attica::ListJob<Attica::License> *licenseList =
static_cast<Attica::ListJob<Attica::License>*
>(baseJob);
154 Q_EMIT licensesLoaded(licenseList->itemList());
157 void AtticaHelper::loadDetailsLink(
const QString &contentId)
159 Attica::ItemJob<Attica::Content> *contentJob = currentProvider.requestContent(contentId);
160 connect(contentJob, &Attica::ItemJob<Attica::Content>::finished,
161 this,
static_cast<void(AtticaHelper::*)(Attica::BaseJob*)
>(&AtticaHelper::detailsLinkLoaded));
165 void AtticaHelper::detailsLinkLoaded(Attica::BaseJob *baseJob)
167 Attica::ItemJob<Attica::Content> *contentItemJob =
static_cast<Attica::ItemJob<Attica::Content>*
>(baseJob);
170 Q_EMIT detailsLinkLoaded(content.detailpage());
173 void AtticaHelper::loadContent(
const QString &contentId)
175 Attica::ItemJob<Attica::Content> *contentJob = currentProvider.requestContent(contentId);
176 connect(contentJob, &Attica::ItemJob<Attica::Content>::finished,
177 this,
static_cast<void(AtticaHelper::*)(Attica::BaseJob*)
>(&AtticaHelper::contentLoaded));
181 void AtticaHelper::loadCurrency()
183 Attica::ItemJob<Attica::AccountBalance> *job = currentProvider.requestAccountBalance();
184 connect(job, &Attica::ItemJob<Attica::AccountBalance>::finished,
185 this,
static_cast<void(AtticaHelper::*)(Attica::BaseJob*)
>(&AtticaHelper::currencyLoaded));
189 void AtticaHelper::currencyLoaded(Attica::BaseJob *baseJob)
191 Attica::ItemJob<Attica::AccountBalance> *balanceJob =
static_cast<Attica::ItemJob<Attica::AccountBalance>*
>(baseJob);
193 Q_EMIT currencyLoaded(balance.currency());
196 void AtticaHelper::contentLoaded(Attica::BaseJob *baseJob)
198 Attica::ItemJob<Attica::Content> *contentItemJob =
static_cast<Attica::ItemJob<Attica::Content>*
>(baseJob);
201 Q_EMIT contentLoaded(content);
203 for (
int previewNum = 1; previewNum <= 3; ++previewNum) {
206 m_previewJob[previewNum - 1] = HTTPJob::get(url, KNSCore::NoReload, KNSCore::HideProgressInfo);
207 connect(m_previewJob[previewNum - 1], &
KJob::result,
this, &AtticaHelper::slotPreviewDownload);
208 connect(m_previewJob[previewNum - 1], &HTTPJob::data,
this, &AtticaHelper::slotPreviewData);
213 void AtticaHelper::slotPreviewData(
KJob* job,
const QByteArray& buf)
215 if (job == m_previewJob[0]) {
216 m_previewBuffer[0].append(buf);
217 }
else if (job == m_previewJob[1]) {
218 m_previewBuffer[1].append(buf);
219 }
else if (job == m_previewJob[2]) {
220 m_previewBuffer[2].append(buf);
224 void AtticaHelper::slotPreviewDownload(
KJob *job)
227 if (job == m_previewJob[0]) {
229 }
else if (job == m_previewJob[1]) {
231 }
else if (job == m_previewJob[2]) {
234 Q_ASSERT(previewNum != -1);
236 m_previewBuffer[previewNum - 1].clear();
241 m_previewBuffer[previewNum - 1].clear();
243 Q_EMIT previewLoaded(previewNum, image);
bool loadFromData(const uchar *data, int len, const char *format)
Contains the core functionality for handling interaction with NewStuff providers. ...
bool isEmpty() const const
QCA_EXPORT ProviderList providers()
QString number(int n, int base)
void append(const T &value)
Category category(StandardShortcut id)
PostJob * checkLogin(const QString &user, const QString &password)