diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -55,13 +55,6 @@
find_package(KF5TextWidgets ${KF5_DEP_VERSION} REQUIRED)
find_package(KF5WidgetsAddons ${KF5_DEP_VERSION} REQUIRED)
find_package(KF5WindowSystem ${KF5_DEP_VERSION} REQUIRED)
-find_package(KF5Attica ${KF5_DEP_VERSION})
-set_package_properties(KF5Attica PROPERTIES DESCRIPTION "A Qt library that implements the Open Collaboration Services API"
- PURPOSE "Support for Get Hot New Stuff in KXMLGUI"
- URL "https://projects.kde.org/attica"
- TYPE OPTIONAL
- )
-set (HAVE_ATTICA ${KF5Attica_FOUND})
if (NOT FORCE_DISABLE_KGLOBALACCEL)
find_package(KF5GlobalAccel ${KF5_DEP_VERSION} REQUIRED)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,8 +1,5 @@
add_subdirectory(ksendbugmail)
-if (HAVE_ATTICA)
- set (XMLGUI_EXTRA_LIBS ${XMLGUI_EXTRA_LIBS} KF5::Attica)
-endif ()
if (HAVE_GLOBALACCEL)
set (XMLGUI_EXTRA_LIBS ${XMLGUI_EXTRA_LIBS} KF5::GlobalAccel)
endif ()
@@ -12,11 +9,6 @@
configure_file(config-xmlgui.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-xmlgui.h )
-configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/kaboutapplicationconfigattica_p.h.cmake
- ${CMAKE_CURRENT_BINARY_DIR}/kaboutapplicationconfigattica_p.h
-)
-
set(kxmlgui_SRCS
kaboutapplicationdialog.cpp
kaboutapplicationpersonlistdelegate_p.cpp
diff --git a/src/kaboutapplicationconfigattica_p.h.cmake b/src/kaboutapplicationconfigattica_p.h.cmake
deleted file mode 100644
--- a/src/kaboutapplicationconfigattica_p.h.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-/* KF5Attica available */
-#cmakedefine01 HAVE_ATTICA
diff --git a/src/kaboutapplicationdialog.cpp b/src/kaboutapplicationdialog.cpp
--- a/src/kaboutapplicationdialog.cpp
+++ b/src/kaboutapplicationdialog.cpp
@@ -121,7 +121,7 @@
//And here we go, authors page...
const int authorCount = aboutData.authors().count();
if (authorCount) {
- QWidget *authorWidget = createAuthorsWidget(aboutData.authors(), aboutData.ocsProviderUrl(),
+ QWidget *authorWidget = createAuthorsWidget(aboutData.authors(),
aboutData.customAuthorTextEnabled(),
aboutData.customAuthorRichText(),
aboutData.bugAddress(), q);
@@ -132,13 +132,13 @@
//And credits page...
if (!aboutData.credits().isEmpty()) {
- QWidget *creditWidget = createCreditWidget(aboutData.credits(), aboutData.ocsProviderUrl(), q);
+ QWidget *creditWidget = createCreditWidget(aboutData.credits(), q);
tabWidget->addTab(creditWidget, i18n("Thanks To"));
}
//Finally, the optional translators page...
if (!(opt & HideTranslators) && !aboutData.translators().isEmpty()) {
- QWidget *translatorWidget = createTranslatorsWidget(aboutData.translators(), aboutData.ocsProviderUrl(), q);
+ QWidget *translatorWidget = createTranslatorsWidget(aboutData.translators(), q);
tabWidget->addTab(translatorWidget, i18n("Translation"));
}
diff --git a/src/kaboutapplicationpersonlistdelegate_p.cpp b/src/kaboutapplicationpersonlistdelegate_p.cpp
--- a/src/kaboutapplicationpersonlistdelegate_p.cpp
+++ b/src/kaboutapplicationpersonlistdelegate_p.cpp
@@ -34,8 +34,6 @@
{
enum {
- AVATAR_HEIGHT = 50,
- AVATAR_WIDTH = 50,
MAIN_LINKS_HEIGHT = 32,
SOCIAL_LINKS_HEIGHT = 26,
MAX_SOCIAL_LINKS = 9
@@ -116,7 +114,7 @@
label->setText(text);
- //And now we fill in the main links (email + homepage + OCS profile)...
+ //And now we fill in the main links (email + homepage)...
KToolBar *mainLinks = qobject_cast< KToolBar * >(widgets.at(MainLinks));
mainLinks->setIconSize(QSize(22, 22));
mainLinks->setContentsMargins(0, 0, 0, 0);
@@ -135,55 +133,14 @@
action->setData(profile.homepage().toString());
action->setVisible(true);
}
- if (!profile.ocsProfileUrl().isEmpty()) {
- action = mainLinks->actions().at(VisitProfileAction);
- KAboutApplicationPersonModel *model = qobject_cast< KAboutApplicationPersonModel * >(itemView()->model());
- action->setToolTip(i18n("Visit contributor's profile on %1\n%2",
- model->providerName(),
- profile.ocsProfileUrl()));
- action->setData(profile.ocsProfileUrl());
- action->setVisible(true);
- }
mainLinks->resize(QSize(mainLinks->sizeHint().width(), MAIN_LINKS_HEIGHT));
mainLinks->move(wRect.left(), wRect.top() + label->height());
//Finally, the social links...
KToolBar *socialLinks = qobject_cast< KToolBar * >(widgets.at(SocialLinks));
socialLinks->setIconSize(QSize(16, 16));
socialLinks->setContentsMargins(0, 0, 0, 0);
socialLinks->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
-
- int currentSocialLinkAction = 0;
- Q_FOREACH (KAboutApplicationPersonProfileOcsLink link, profile.ocsLinks()) {
- if (!profile.homepage().isEmpty() && profile.homepage() == link.url()) {
- continue; //We skip it if it's the same as the homepage from KAboutData
- }
-
- action = socialLinks->actions().at(currentSocialLinkAction);
- if (link.type() == KAboutApplicationPersonProfileOcsLink::Other) {
- action->setToolTip(i18n("Visit contributor's page\n%1",
- link.url().toString()));
- } else if (link.type() == KAboutApplicationPersonProfileOcsLink::Blog) {
- action->setToolTip(i18n("Visit contributor's blog\n%1",
- link.url().toString()));
- } else if (link.type() == KAboutApplicationPersonProfileOcsLink::Homepage) {
- action->setToolTip(i18n("Visit contributor's homepage\n%1",
- link.url().toString()));
- } else {
- action->setToolTip(i18n("Visit contributor's profile on %1\n%2",
- link.prettyType(),
- link.url().toString()));
- }
- action->setIcon(link.icon());
- action->setData(link.url().toString());
- action->setVisible(true);
-
- ++currentSocialLinkAction;
- if (currentSocialLinkAction > MAX_SOCIAL_LINKS - 1) {
- break;
- }
- }
-
socialLinks->resize(QSize(socialLinks->sizeHint().width(), SOCIAL_LINKS_HEIGHT));
socialLinks->move(wRect.left() + mainLinks->width(),
wRect.top() + label->height() +
@@ -195,49 +152,15 @@
QSize KAboutApplicationPersonListDelegate::sizeHint(const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
- KAboutApplicationPersonProfile profile = index.data().value< KAboutApplicationPersonProfile >();
- bool hasAvatar = !profile.avatar().isNull();
-
- int margin = option.fontMetrics.height() / 2;
-
- int height = hasAvatar ? qMax(widgetsRect(option, index).height(),
- AVATAR_HEIGHT + 2 * margin)
- : widgetsRect(option, index).height();
-
- QSize metrics(option.fontMetrics.height() * 7, height);
- return metrics;
+ return QSize(option.fontMetrics.height() * 7, widgetsRect(option, index).height());
}
void KAboutApplicationPersonListDelegate::paint(QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
- int margin = option.fontMetrics.height() / 2;
-
- QStyle *style = QApplication::style();
- style->drawPrimitive(QStyle::PE_Widget, &option, painter, nullptr);
-
- const KAboutApplicationPersonModel *model = qobject_cast< const KAboutApplicationPersonModel * >(index.model());
-
- if (model->hasAvatarPixmaps()) {
- int height = qMax(widgetsRect(option, index).height(), AVATAR_HEIGHT + 2 * margin);
- QPoint point(option.rect.left() + 2 * margin,
- option.rect.top() + ((height - AVATAR_HEIGHT) / 2));
-
- KAboutApplicationPersonProfile profile = index.data().value< KAboutApplicationPersonProfile >();
-
- if (!profile.avatar().isNull()) {
- QPixmap pixmap = profile.avatar();
-
- point.setX((AVATAR_WIDTH - pixmap.width()) / 2 + 5);
- point.setY(option.rect.top() + ((height - pixmap.height()) / 2));
- painter->drawPixmap(point, pixmap);
-
- QPoint framePoint(point.x() - 5, point.y() - 5);
- QPixmap framePixmap(QStringLiteral(":/kxmlgui5/thumb_frame.png"));
- painter->drawPixmap(framePoint, framePixmap.scaled(pixmap.width() + 10, pixmap.height() + 10));
- }
- }
+ Q_UNUSED(index)
+ QApplication::style()->drawPrimitive(QStyle::PE_Widget, &option, painter, nullptr);
}
void KAboutApplicationPersonListDelegate::launchUrl(QAction *action) const
@@ -271,10 +194,6 @@
QLatin1String("");
}
- if (!profile.location().isEmpty()) {
- text += QLatin1String("\n
") +
- profile.location();
- }
return text;
}
@@ -284,18 +203,10 @@
KAboutApplicationPersonProfile profile = index.data().value< KAboutApplicationPersonProfile >();
int margin = option.fontMetrics.height() / 2;
- QRect widgetsRect;
- if (qobject_cast< const KAboutApplicationPersonModel * >(index.model())->hasAvatarPixmaps()) {
- widgetsRect = QRect(option.rect.left() + AVATAR_WIDTH + 3 * margin,
- margin / 2,
- option.rect.width() - AVATAR_WIDTH - 4 * margin,
- 0);
- } else {
- widgetsRect = QRect(option.rect.left() + margin,
- margin / 2,
- option.rect.width() - 2 * margin,
- 0);
- }
+ QRect widgetsRect(option.rect.left() + margin,
+ margin / 2,
+ option.rect.width() - 2 * margin,
+ 0);
int textHeight = heightForString(buildTextForProfile(profile), widgetsRect.width() - margin, option);
widgetsRect.setHeight(textHeight + MAIN_LINKS_HEIGHT + 1.5 * margin);
diff --git a/src/kaboutapplicationpersonmodel_p.h b/src/kaboutapplicationpersonmodel_p.h
--- a/src/kaboutapplicationpersonmodel_p.h
+++ b/src/kaboutapplicationpersonmodel_p.h
@@ -18,39 +18,21 @@
#ifndef KABOUT_APPLICATION_PERSON_MODEL_H
#define KABOUT_APPLICATION_PERSON_MODEL_H
-#include "kaboutapplicationconfigattica_p.h"
-
-#if HAVE_ATTICA
-#include
-#include
-#endif //HAVE_ATTICA
-
#include
-#include
#include
-#include
-#include
#include
-// Forward declarations to make Attica-related members work
-namespace Attica
-{
-class BaseJob;
-}
-
namespace KDEPrivate
{
class KAboutApplicationPersonProfile;
-class KAboutApplicationPersonIconsJob;
class KAboutApplicationPersonModel : public QAbstractListModel
{
Q_OBJECT
public:
explicit KAboutApplicationPersonModel(const QList< KAboutPerson > &personList,
- const QString &providerUrl = QString(),
QObject *parent = nullptr);
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
@@ -62,160 +44,32 @@
Qt::ItemFlags flags(const QModelIndex &index) const override;
- bool hasAvatarPixmaps() const
- {
- return m_hasAvatarPixmaps;
- }
-
- const QString &providerName() const
- {
- return m_providerName;
- }
-
-private Q_SLOTS:
- void onProvidersLoaded();
- void onPersonJobFinished(Attica::BaseJob *job);
- void onAvatarJobFinished(QNetworkReply *reply);
- void onOcsLinksJobFinished(KAboutApplicationPersonIconsJob *job);
-
private:
- void fetchOcsLinkIcons(int personProfileListIndex);
-
QList< KAboutPerson > m_personList;
QList< KAboutApplicationPersonProfile > m_profileList;
- QMap< int, QString > m_ocsLinkIconUrls;
- QMap< int, QPixmap > m_ocsLinkIcons;
-
- bool m_hasAvatarPixmaps;
-
-#if HAVE_ATTICA
- Attica::ProviderManager m_providerManager;
- Attica::Provider m_provider;
-#endif //HAVE_ATTICA
- QString m_providerUrl;
- QString m_providerName;
-
- friend class KAboutApplicationPersonIconsJob;
-};
-
-//This list must be in sync with the one in KAboutApplicationPersonProfileOcsLink::prettyType()
-static const char s_personOcsLinkAtticaTypes[][16] = {
- { "other" },
- { "Blog" },
- { "delicious" },
- { "Digg" },
- { "Facebook" },
- { "Homepage" },
- { "identi.ca" },
- { "libre.fm" },
- { "LinkedIn" },
- { "MySpace" },
- { "Reddit" },
- { "StackOverflow" },
- { "Twitter" },
- { "Wikipedia" },
- { "Xing" },
- { "YouTube" }
-};
-
-class KAboutApplicationPersonProfileOcsLink
-{
-public:
- enum Type {
- Other = 0,
- Blog,
- Delicious,
- Digg,
- Facebook,
- Homepage,
- Identica,
- LibreFm,
- LinkedIn,
- MySpace,
- Reddit,
- StackOverflow,
- Twitter,
- Wikipedia,
- Xing,
- YouTube,
- NUM_ATTICA_LINK_TYPES
- };
-
- static Type typeFromAttica(const QString &atticaType);
-
- KAboutApplicationPersonProfileOcsLink(Type type, const QUrl &url)
- : m_type(type)
- , m_url(url)
- {}
-
- Type type() const
- {
- return m_type;
- }
- QString prettyType() const;
- void setIcon(const QIcon &icon)
- {
- m_icon = icon;
- }
- const QIcon &icon() const
- {
- return m_icon;
- }
- const QUrl &url() const
- {
- return m_url;
- }
-
-private:
- Type m_type;
- QUrl m_url;
- QIcon m_icon;
};
class KAboutApplicationPersonProfile
{
public:
KAboutApplicationPersonProfile()
: m_name()
, m_task()
- , m_email()
- , m_ocsUsername() {} //needed for QVariant
+ , m_email() {}
KAboutApplicationPersonProfile(const QString &name,
const QString &task,
- const QString &email,
- const QString &ocsUsername = QString())
+ const QString &email)
: m_name(name)
, m_task(task)
, m_email(email)
- , m_ocsUsername(ocsUsername)
{}
void setHomepage(const QUrl &url)
{
m_homepage = url;
}
- void setAvatar(const QPixmap &pixmap)
- {
- m_avatar = pixmap;
- }
- void setLocation(const QString &location)
- {
- m_location = location;
- }
- void setOcsProfileUrl(const QString &url)
- {
- m_ocsProfileUrl = url;
- }
- void addAdditionalString(const QString &string)
- {
- m_additionalStrings << string;
- }
- void setOcsLinks(const QList< KAboutApplicationPersonProfileOcsLink > &ocsLinks)
- {
- m_ocsLinks = ocsLinks;
- }
const QString &name() const
{
@@ -229,81 +83,16 @@
{
return m_email;
}
- const QString &ocsUsername() const
- {
- return m_ocsUsername;
- }
- const QString &ocsProfileUrl() const
- {
- return m_ocsProfileUrl;
- }
const QUrl &homepage() const
{
return m_homepage;
}
- const QPixmap &avatar() const
- {
- return m_avatar;
- }
- const QString &location() const
- {
- return m_location;
- }
- const QStringList &additionalStrings() const
- {
- return m_additionalStrings;
- }
- const QList< KAboutApplicationPersonProfileOcsLink > &ocsLinks() const
- {
- return m_ocsLinks;
- }
private:
QString m_name;
QString m_task;
QString m_email;
- QString m_ocsUsername;
- QString m_ocsProfileUrl;
QUrl m_homepage;
- QPixmap m_avatar;
- QString m_location;
- QStringList m_additionalStrings;
- QList< KAboutApplicationPersonProfileOcsLink > m_ocsLinks;
-};
-
-class KAboutApplicationPersonIconsJob : public QObject
-{
- Q_OBJECT
-public:
- KAboutApplicationPersonIconsJob(KAboutApplicationPersonModel *model,
- int personProfileListIndex);
-
- void start();
-
- int personProfileListIndex() const
- {
- return m_personProfileListIndex;
- }
-
- const QList< KAboutApplicationPersonProfileOcsLink > &ocsLinks() const
- {
- return m_ocsLinks;
- }
-
-Q_SIGNALS:
- void finished(KAboutApplicationPersonIconsJob *job);
-
-private Q_SLOTS:
- void onJobFinished(QNetworkReply *reply);
-
-private:
- void getIcons(int i);
-
- int m_personProfileListIndex;
- KAboutApplicationPersonModel *m_model;
- QList< KAboutApplicationPersonProfileOcsLink > m_ocsLinks;
-
- QNetworkAccessManager *m_manager;
};
} //namespace KDEPrivate
diff --git a/src/kaboutapplicationpersonmodel_p.cpp b/src/kaboutapplicationpersonmodel_p.cpp
--- a/src/kaboutapplicationpersonmodel_p.cpp
+++ b/src/kaboutapplicationpersonmodel_p.cpp
@@ -17,58 +17,25 @@
#include "kaboutapplicationpersonmodel_p.h"
#include "debug.h"
-#if HAVE_ATTICA
-#include
-#endif //HAVE_ATTICA
#include
-#include
-
-#include
-#include
-
namespace KDEPrivate
{
KAboutApplicationPersonModel::KAboutApplicationPersonModel(const QList< KAboutPerson > &personList,
- const QString &providerUrl,
QObject *parent)
: QAbstractListModel(parent)
, m_personList(personList)
- , m_hasAvatarPixmaps(false)
- , m_providerUrl(providerUrl)
{
- if (m_providerUrl.isEmpty()) {
- m_providerUrl = QStringLiteral("https://api.kde-look.org/ocs/v1/");
- }
-
- bool hasOcsUsernames = false;
for (const auto &person : qAsConst(m_personList)) {
- if (!person.ocsUsername().isEmpty()) {
- hasOcsUsernames = true;
- }
-
KAboutApplicationPersonProfile profile =
KAboutApplicationPersonProfile(person.name(),
person.task(),
- person.emailAddress(),
- person.ocsUsername());
+ person.emailAddress());
profile.setHomepage(QUrl(person.webAddress()));
m_profileList.append(profile);
}
-
- m_ocsLinkIcons.insert(KAboutApplicationPersonProfileOcsLink::Other, QIcon::fromTheme(QStringLiteral("internet-services")).pixmap(16));
- m_ocsLinkIcons.insert(KAboutApplicationPersonProfileOcsLink::Blog, QIcon::fromTheme(QStringLiteral("internet-services")).pixmap(16));
- m_ocsLinkIcons.insert(KAboutApplicationPersonProfileOcsLink::Homepage, QIcon::fromTheme(QStringLiteral("internet-servicesinternet-services")).pixmap(16));
-
-#if HAVE_ATTICA
- connect(&m_providerManager, SIGNAL(defaultProvidersLoaded()),
- SLOT(onProvidersLoaded()));
- if (hasOcsUsernames) {
- m_providerManager.loadDefaultProviders();
- }
-#endif //HAVE_ATTICA
}
int KAboutApplicationPersonModel::rowCount(const QModelIndex &parent) const
@@ -105,295 +72,5 @@
return QAbstractListModel::flags(index) | Qt::ItemIsEditable;
}
-void KAboutApplicationPersonModel::onProvidersLoaded() //SLOT
-{
-#if HAVE_ATTICA
- if (!m_providerManager.providers().isEmpty()) {
- m_provider = m_providerManager.providerByUrl(QUrl(m_providerUrl));
- if (!m_provider.isValid()) {
-// qCDebug(DEBUG_KXMLGUI) << "OCS Provider error: could not find opendesktop.org provider.";
- return;
- }
-
- m_providerName = m_provider.name();
-
- int i = 0;
- for (const auto &profile : qAsConst(m_profileList)) {
- if (!profile.ocsUsername().isEmpty()) {
- Attica::ItemJob< Attica::Person > *job = m_provider.requestPerson(profile.ocsUsername());
- connect(job, SIGNAL(finished(Attica::BaseJob*)),
- this, SLOT(onPersonJobFinished(Attica::BaseJob*)));
- job->setProperty("personProfile", i);
- job->start();
- }
- ++i;
- }
- }
-#endif //HAVE_ATTICA
-}
-
-void KAboutApplicationPersonModel::onPersonJobFinished(Attica::BaseJob *job) //SLOT
-{
-#if ! HAVE_ATTICA
- Q_UNUSED(job)
-#endif //HAVE_ATTICA
-#if HAVE_ATTICA
- Attica::ItemJob< Attica::Person > *personJob =
- static_cast< Attica::ItemJob< Attica::Person > * >(job);
- if (personJob->metadata().error() == Attica::Metadata::NoError) {
- Attica::Person p = personJob->result();
- int personProfileListIndex = personJob->property("personProfile").toInt();
- KAboutApplicationPersonProfile profile = m_profileList.value(personProfileListIndex);
-
- //Let's set up OCS links...
- QList< KAboutApplicationPersonProfileOcsLink > ocsLinks;
-
- for (int i = 2; i <= 10; ++i) { //OCS supports 10 total homepages as of 2/oct/2009
- //This starts at 2 because the first homepage is
- //just "homepage" in the OCS API and is exposed by
- //Attica simply through Person::homepage()
- QString atticaType = p.extendedAttribute(QStringLiteral("homepagetype%1").arg(i));
- QString url = p.extendedAttribute(QStringLiteral("homepage%1").arg(i));
- if (url.isEmpty()) {
- continue;
- }
-
- KAboutApplicationPersonProfileOcsLink::Type type =
- KAboutApplicationPersonProfileOcsLink::typeFromAttica(atticaType);
- ocsLinks.append(KAboutApplicationPersonProfileOcsLink(type, QUrl(url)));
- if (!m_ocsLinkIcons.contains(type) && !m_ocsLinkIconUrls.contains(type)) {
- m_ocsLinkIconUrls.insert(type, p.extendedAttribute(QStringLiteral("homepageicon%1").arg(i)));
- }
- }
-
- if (profile.homepage().isEmpty()) {
- if (!p.homepage().isEmpty()) {
- profile.setHomepage(QUrl(p.homepage()));
- } else {
- if (!ocsLinks.isEmpty()) {
- QList< KAboutApplicationPersonProfileOcsLink >::iterator toUse = ocsLinks.begin();
- for (QList< KAboutApplicationPersonProfileOcsLink >::iterator it = ocsLinks.begin();
- it != ocsLinks.end(); ++it) {
- KAboutApplicationPersonProfileOcsLink link = *it;
- if (link.type() == KAboutApplicationPersonProfileOcsLink::Blog ||
- link.type() == KAboutApplicationPersonProfileOcsLink::Homepage ||
- link.type() == KAboutApplicationPersonProfileOcsLink::Other) {
- toUse = it;
- break;
- }
- }
- profile.setHomepage(toUse->url());
- ocsLinks.erase(toUse);
- }
- }
- } else {
- KAboutApplicationPersonProfileOcsLink::Type type =
- KAboutApplicationPersonProfileOcsLink::typeFromAttica(p.extendedAttribute(QStringLiteral("homepagetype")));
- ocsLinks.insert(0, KAboutApplicationPersonProfileOcsLink(type, QUrl(p.homepage()))); //we prepend the main homepage
- if (!m_ocsLinkIcons.contains(type) && !m_ocsLinkIconUrls.contains(type)) {
- m_ocsLinkIconUrls.insert(type, p.extendedAttribute(QStringLiteral("homepageicon")));
- }
- }
-
- profile.setOcsLinks(ocsLinks);
-
- if (!(p.city().isEmpty() && p.country().isEmpty())) {
- if (!p.city().isEmpty()) {
- profile.setLocation(i18nc("City, Country", "%1, %2", p.city(), p.country()));
- } else {
- profile.setLocation(p.country());
- }
- }
-
- profile.setOcsProfileUrl(p.extendedAttribute(QStringLiteral("profilepage")));
-
- m_profileList.replace(personProfileListIndex, profile);
-
- if (p.avatarUrl().isEmpty()) {
- emit dataChanged(index(personProfileListIndex), index(personProfileListIndex));
- fetchOcsLinkIcons(personProfileListIndex);
- } else {
- //TODO: Create a PixmapFromUrlJob in Attica which would use KIO::get if available
- // and QNAM otherwise. - Teo 30/10/2010
- QNetworkAccessManager *manager = new QNetworkAccessManager(this);
- connect(manager, SIGNAL(finished(QNetworkReply*)),
- this, SLOT(onAvatarJobFinished(QNetworkReply*)));
-
- manager->get(QNetworkRequest(p.avatarUrl()));
- manager->setProperty("personProfile", personProfileListIndex);
- }
- }
- //else qCDebug(DEBUG_KXMLGUI) << "Could not fetch OCS person info.";
-#endif //HAVE_ATTICA
-}
-
-void KAboutApplicationPersonModel::onAvatarJobFinished(QNetworkReply *reply) //SLOT
-{
-#if ! HAVE_ATTICA
- Q_UNUSED(reply)
-#endif //HAVE_ATTICA
-#if HAVE_ATTICA
- QNetworkAccessManager *manager = reply->manager();
- int personProfileListIndex = manager->property("personProfile").toInt();
-
- if (reply->error() != QNetworkReply::NoError) {
- //qCDebug(DEBUG_KXMLGUI) << "Could not fetch OCS person avatar.";
- emit dataChanged(index(personProfileListIndex), index(personProfileListIndex));
- return;
- }
- QByteArray data = reply->readAll();
- QPixmap pixmap;
- pixmap.loadFromData(data);
-
- KAboutApplicationPersonProfile profile = m_profileList.value(personProfileListIndex);
- if (!pixmap.isNull()) {
- profile.setAvatar(pixmap);
- m_hasAvatarPixmaps = true;
- }
-
- m_profileList.replace(personProfileListIndex, profile);
-
- reply->deleteLater();
-
- fetchOcsLinkIcons(personProfileListIndex);
-#endif //HAVE_ATTICA
-}
-
-void KAboutApplicationPersonModel::fetchOcsLinkIcons(int personProfileListIndex)
-{
- KAboutApplicationPersonIconsJob *job =
- new KAboutApplicationPersonIconsJob(this, personProfileListIndex);
- connect(job, SIGNAL(finished(KAboutApplicationPersonIconsJob*)),
- this, SLOT(onOcsLinksJobFinished(KAboutApplicationPersonIconsJob*)));
- job->start();
-}
-
-void KAboutApplicationPersonModel::onOcsLinksJobFinished(KAboutApplicationPersonIconsJob *job) //SLOT
-{
- int personProfileListIndex = job->personProfileListIndex();
- KAboutApplicationPersonProfile profile = m_profileList.value(personProfileListIndex);
-
- profile.setOcsLinks(job->ocsLinks());
-
- m_profileList.replace(personProfileListIndex, profile);
-
- emit dataChanged(index(personProfileListIndex), index(personProfileListIndex));
- emit layoutChanged();
-}
-
-KAboutApplicationPersonProfileOcsLink::Type KAboutApplicationPersonProfileOcsLink::typeFromAttica(const QString &atticaType)
-{
- int index = -1;
- for (int i = 0; i < NUM_ATTICA_LINK_TYPES; ++i) {
- if (atticaType == QLatin1String(s_personOcsLinkAtticaTypes[i])) {
- index = i;
- break;
- }
- }
- if (index == -1) {
- return Other;
- } else {
- return static_cast< Type >(index);
- }
-}
-
-QString KAboutApplicationPersonProfileOcsLink::prettyType() const
-{
- //This can't be static like the other lists because of i18n
- switch (m_type) {
- case Other:
- return i18nc("A generic social network or homepage link of an unlisted type.", "Other");
- case Blog:
- return i18nc("A type of link.", "Blog");
- case Delicious:
- return QStringLiteral("Delicious");
- case Digg:
- return QStringLiteral("Digg");
- case Facebook:
- return QStringLiteral("Facebook");
- case Homepage:
- return i18nc("A type of link.", "Homepage");
- case Identica:
- return QStringLiteral("Identi.ca");
- case LibreFm:
- return QStringLiteral("Libre.fm");
- case LinkedIn:
- return QStringLiteral("LinkedIn");
- case MySpace:
- return QStringLiteral("MySpace");
- case Reddit:
- return QStringLiteral("Reddit");
- case StackOverflow:
- return QStringLiteral("Stack Overflow");
- case Twitter:
- return QStringLiteral("Twitter");
- case Wikipedia:
- return QStringLiteral("Wikipedia");
- case Xing:
- return QStringLiteral("Xing");
- case YouTube:
- return QStringLiteral("YouTube");
- case NUM_ATTICA_LINK_TYPES: // silence compiler warning
- break;
- }
- return QString();
-}
-
-KAboutApplicationPersonIconsJob::KAboutApplicationPersonIconsJob(KAboutApplicationPersonModel *model,
- int personProfileListIndex)
- : QObject(model)
- , m_personProfileListIndex(personProfileListIndex)
- , m_model(model)
-{
- m_manager = new QNetworkAccessManager(this);
- connect(m_manager, SIGNAL(finished(QNetworkReply*)),
- this, SLOT(onJobFinished(QNetworkReply*)));
-
- m_ocsLinks = model->m_profileList.value(personProfileListIndex).ocsLinks();
-}
-
-void KAboutApplicationPersonIconsJob::start()
-{
- getIcons(0);
-}
-
-void KAboutApplicationPersonIconsJob::getIcons(int i)
-{
- for (auto &ocsLink : m_ocsLinks) {
- if (m_model->m_ocsLinkIcons.contains(ocsLink.type())) {
- ocsLink.setIcon(m_model->m_ocsLinkIcons.value(ocsLink.type()));
- } else if (m_model->m_ocsLinkIconUrls.contains(ocsLink.type())) {
- QNetworkReply *reply =
- m_manager->get(QNetworkRequest(QUrl(m_model->m_ocsLinkIconUrls.value(ocsLink.type()))));
- reply->setProperty("linkIndex", i);
- return;
- }
- ++i;
- }
- emit finished(this);
-}
-
-void KAboutApplicationPersonIconsJob::onJobFinished(QNetworkReply *reply) //SLOT
-{
- int i = reply->property("linkIndex").toInt();
- KAboutApplicationPersonProfileOcsLink::Type type = m_ocsLinks.at(i).type();
-
- if (reply->error() != QNetworkReply::NoError) {
- //qCDebug(DEBUG_KXMLGUI) << "Could not fetch OCS link icon.";
- reply->deleteLater();
- getIcons(i + 1);
- return;
- }
- QByteArray data = reply->readAll();
- QPixmap pixmap;
- pixmap.loadFromData(data);
-
- if (!pixmap.isNull() && !m_model->m_ocsLinkIcons.contains(type)) {
- m_model->m_ocsLinkIcons.insert(type, pixmap);
- }
- reply->deleteLater();
- getIcons(i);
-}
-
} //namespace KDEPrivate
diff --git a/src/kaboutplugindialog.cpp b/src/kaboutplugindialog.cpp
--- a/src/kaboutplugindialog.cpp
+++ b/src/kaboutplugindialog.cpp
@@ -95,7 +95,7 @@
const int authorCount = pluginMetaData.authors().count();
if (authorCount) {
// TODO: add bug report address to plugin metadata
- QWidget *authorWidget = createAuthorsWidget(pluginMetaData.authors(), QString(),
+ QWidget *authorWidget = createAuthorsWidget(pluginMetaData.authors(),
false,
QString(),
QString(), q);
@@ -106,13 +106,13 @@
//And credits page...
if (!pluginMetaData.otherContributors().isEmpty()) {
- QWidget *creditWidget = createCreditWidget(pluginMetaData.otherContributors(), QString(), q);
+ QWidget *creditWidget = createCreditWidget(pluginMetaData.otherContributors(), q);
tabWidget->addTab(creditWidget, i18n("Thanks To"));
}
//Finally, the optional translators page...
if (!(opt & KAboutPluginDialog::HideTranslators) && !pluginMetaData.translators().isEmpty()) {
- QWidget *translatorWidget = createTranslatorsWidget(pluginMetaData.translators(), QString(), q);
+ QWidget *translatorWidget = createTranslatorsWidget(pluginMetaData.translators(), q);
tabWidget->addTab(translatorWidget, i18n("Translation"));
}
diff --git a/src/kabstractaboutdialog_p.h b/src/kabstractaboutdialog_p.h
--- a/src/kabstractaboutdialog_p.h
+++ b/src/kabstractaboutdialog_p.h
@@ -48,16 +48,13 @@
const QList &licenses,
QWidget *parent);
QWidget *createAuthorsWidget(const QList &authors,
- const QString &ocsProviderUrl,
bool customAuthorTextEnabled,
const QString &customAuthorRichText,
const QString &bugAddress,
QWidget *parent);
QWidget *createCreditWidget(const QList &credits,
- const QString &ocsProviderUrl,
QWidget *parent);
QWidget *createTranslatorsWidget(const QList &translators,
- const QString &ocsProviderUrl,
QWidget *parent);
void createForm(QWidget *titleWidget, QWidget *tabWidget,
QDialog *dialog);
diff --git a/src/kabstractaboutdialog_p.cpp b/src/kabstractaboutdialog_p.cpp
--- a/src/kabstractaboutdialog_p.cpp
+++ b/src/kabstractaboutdialog_p.cpp
@@ -105,7 +105,6 @@
}
QWidget *KAbstractAboutDialogPrivate::createAuthorsWidget(const QList &authors,
- const QString &ocsProviderUrl,
bool customAuthorTextEnabled,
const QString &customAuthorRichText,
const QString &bugAddress,
@@ -138,7 +137,7 @@
}
KDEPrivate::KAboutApplicationPersonModel *authorModel =
- new KDEPrivate::KAboutApplicationPersonModel(authors, ocsProviderUrl, authorWidget);
+ new KDEPrivate::KAboutApplicationPersonModel(authors, authorWidget);
KDEPrivate::KAboutApplicationPersonListView *authorView =
new KDEPrivate::KAboutApplicationPersonListView(authorWidget);
@@ -155,15 +154,14 @@
}
QWidget *KAbstractAboutDialogPrivate::createCreditWidget(const QList &credits,
- const QString &ocsProviderUrl,
QWidget *parent)
{
QWidget *creditWidget = new QWidget(parent);
QVBoxLayout *creditLayout = new QVBoxLayout(creditWidget);
creditLayout->setContentsMargins(0, 0, 0, 0);
KDEPrivate::KAboutApplicationPersonModel *creditModel =
- new KDEPrivate::KAboutApplicationPersonModel(credits, ocsProviderUrl, creditWidget);
+ new KDEPrivate::KAboutApplicationPersonModel(credits, creditWidget);
KDEPrivate::KAboutApplicationPersonListView *creditView =
new KDEPrivate::KAboutApplicationPersonListView(creditWidget);
@@ -180,15 +178,14 @@
}
QWidget *KAbstractAboutDialogPrivate::createTranslatorsWidget(const QList &translators,
- const QString &ocsProviderUrl,
QWidget *parent)
{
QWidget *translatorWidget = new QWidget(parent);
QVBoxLayout *translatorLayout = new QVBoxLayout(translatorWidget);
translatorLayout->setContentsMargins(0, 0, 0, 0);
KDEPrivate::KAboutApplicationPersonModel *translatorModel =
- new KDEPrivate::KAboutApplicationPersonModel(translators, ocsProviderUrl, translatorWidget);
+ new KDEPrivate::KAboutApplicationPersonModel(translators, translatorWidget);
KDEPrivate::KAboutApplicationPersonListView *translatorView =
new KDEPrivate::KAboutApplicationPersonListView(translatorWidget);
diff --git a/src/kxmlgui.qrc b/src/kxmlgui.qrc
--- a/src/kxmlgui.qrc
+++ b/src/kxmlgui.qrc
@@ -3,6 +3,5 @@
ui_standards.rc
aboutkde.svg
- thumb_frame.png
diff --git a/src/thumb_frame.png b/src/thumb_frame.png
deleted file mode 100644
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@