diff --git a/src/call.cpp b/src/call.cpp index a72b100fa5d517db71d389a78119e5a5da62459f..cd1f559ba18ef9d7ffb4cc9e999f9aa87b7f25cb 100644 --- a/src/call.cpp +++ b/src/call.cpp @@ -65,7 +65,6 @@ #include "media/text.h" #include "media/file.h" -//TODO remove #include "securityevaluationmodel.h" #include "globalinstances.h" #include "interfaces/pixmapmanipulatori.h" @@ -2123,6 +2122,8 @@ QVariant Call::roleData(int role) const case static_cast<int>(Ring::Role::Number): case static_cast<int>(Call::Role::Number): return peerContactMethod()->uri(); + case Qt::DecorationRole: + return GlobalInstances::pixmapManipulator().decorationRole(this); case static_cast<int>(Call::Role::Direction): return QVariant::fromValue(d_ptr->m_Direction); case static_cast<int>(Call::Role::Date): diff --git a/src/contactmethod.cpp b/src/contactmethod.cpp index 9adc6db223f2a26d54ee4f6f10011a47ed4ff70b..6111e0f64eb5cf7195f813c83d5b597520aec93e 100644 --- a/src/contactmethod.cpp +++ b/src/contactmethod.cpp @@ -41,6 +41,9 @@ #include "accountmodel.h" #include "certificatemodel.h" #include "media/textrecording.h" +#include "mime.h" +#include "globalinstances.h" +#include "interfaces/pixmapmanipulatori.h" //Private #include "private/phonedirectorymodel_p.h" @@ -480,6 +483,8 @@ QVariant ContactMethod::roleData(int role) const case static_cast<int>(Call::Role::Number): cat = uri(); break; + case Qt::DecorationRole: + return GlobalInstances::pixmapManipulator().decorationRole(this); case static_cast<int>(Call::Role::Direction): cat = cat = !lastCall ? QVariant() : QVariant::fromValue(lastCall->direction()); break; diff --git a/src/interfaces/pixmapmanipulatori.h b/src/interfaces/pixmapmanipulatori.h index 0a2275a54e8d2ee21eda08cd0673bf3c03b39951..3d57ca235d579095997d89dee930e9f40ff87dc5 100644 --- a/src/interfaces/pixmapmanipulatori.h +++ b/src/interfaces/pixmapmanipulatori.h @@ -75,6 +75,10 @@ public: virtual QVariant securityLevelIcon(const SecurityEvaluationModel::SecurityLevel level) const = 0; virtual QVariant historySortingCategoryIcon(const CategorizedHistoryModel::SortedProxy::Categories cat) const = 0; virtual QVariant contactSortingCategoryIcon(const CategorizedContactModel::SortedProxy::Categories cat) const = 0; + virtual QVariant decorationRole(const QModelIndex& index) = 0; + virtual QVariant decorationRole(const Call* c ) = 0; + virtual QVariant decorationRole(const ContactMethod* cm ) = 0; + virtual QVariant decorationRole(const Person* p ) = 0; /** * Return the icons associated with the action and its state diff --git a/src/person.cpp b/src/person.cpp index b79a7dc7dde66d95aa4c6eb7fae76f340f414919..477a5108f355a7f61356d53800ca0822dc1c458f 100644 --- a/src/person.cpp +++ b/src/person.cpp @@ -575,6 +575,8 @@ QVariant Person::roleData(int role) const case Qt::EditRole: case static_cast<int>(Ring::Role::Name): return QVariant(formattedName()); + case Qt::DecorationRole: + return GlobalInstances::pixmapManipulator().decorationRole(this); case static_cast<int>(Person::Role::Organization): return QVariant(organization()); case static_cast<int>(Person::Role::Group): diff --git a/src/phonedirectorymodel.cpp b/src/phonedirectorymodel.cpp index 3641f7d39db7f7aed4d66d30d0a7a48487d592c5..766d2cdfe04558afdf6625b5ca3288463e5cb698 100644 --- a/src/phonedirectorymodel.cpp +++ b/src/phonedirectorymodel.cpp @@ -104,15 +104,7 @@ QVariant PhoneDirectoryModel::data(const QModelIndex& index, int role ) const const ContactMethod* number = d_ptr->m_lNumbers[index.row()]; switch (static_cast<PhoneDirectoryModelPrivate::Columns>(index.column())) { case PhoneDirectoryModelPrivate::Columns::URI: - switch (role) { - case Qt::DisplayRole: - return number->uri(); - case Qt::DecorationRole : - return GlobalInstances::pixmapManipulator().callPhoto(number,QSize(16,16)); - case (int) Role::Object: - return QVariant::fromValue(const_cast<ContactMethod*>(number)); - } - break; + return number->roleData(role); case PhoneDirectoryModelPrivate::Columns::TYPE: switch (role) { case Qt::DisplayRole: diff --git a/src/pixmapmanipulatordefault.cpp b/src/pixmapmanipulatordefault.cpp index 99929ddffdfcc6dfa3191d264d77469ecdc5c01e..24eeb935abed52cd7fd686df21d5a89aea61894a 100644 --- a/src/pixmapmanipulatordefault.cpp +++ b/src/pixmapmanipulatordefault.cpp @@ -110,4 +110,29 @@ QVariant PixmapManipulatorDefault::contactSortingCategoryIcon(const CategorizedC return QVariant(); } +QVariant PixmapManipulatorDefault::decorationRole(const QModelIndex& index) +{ + Q_UNUSED(index) + return QVariant(); +} + +QVariant PixmapManipulatorDefault::decorationRole(const Call* c) +{ + Q_UNUSED(c) + return QVariant(); +} + +QVariant PixmapManipulatorDefault::decorationRole(const ContactMethod* cm) +{ + Q_UNUSED(cm) + return QVariant(); +} + +QVariant PixmapManipulatorDefault::decorationRole(const Person* p) +{ + Q_UNUSED(p) + return QVariant(); +} + + } // namespace Interfaces diff --git a/src/pixmapmanipulatordefault.h b/src/pixmapmanipulatordefault.h index eb8d5d90564f7718d0d98b19e8dd46f539478faa..0ec58ff768fb209ff0e2200a8cb1ad6e29029095 100644 --- a/src/pixmapmanipulatordefault.h +++ b/src/pixmapmanipulatordefault.h @@ -35,7 +35,10 @@ public: QVariant securityLevelIcon(const SecurityEvaluationModel::SecurityLevel level) const override; QVariant historySortingCategoryIcon(const CategorizedHistoryModel::SortedProxy::Categories cat) const override; QVariant contactSortingCategoryIcon(const CategorizedContactModel::SortedProxy::Categories cat) const override; - + QVariant decorationRole(const QModelIndex& index) override; + QVariant decorationRole(const Call* c ) override; + QVariant decorationRole(const ContactMethod* cm ) override; + QVariant decorationRole(const Person* p ) override; /** * Return the icons associated with the action and its state */