Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge branch 'jb52969-detail-timestamps' into 'master'
[nemo-qml-plugin-contacts] Consider detail modified timestamp when selecting...

See merge request mer-core/nemo-qml-plugin-contacts!56
  • Loading branch information
blam committed Feb 22, 2021
2 parents c60f991 + d25f80b commit f708778
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 8 deletions.
26 changes: 23 additions & 3 deletions lib/seasidecache.cpp
Expand Up @@ -1391,10 +1391,10 @@ static bool avatarUrlWithMetadata(const QContact &contact, QUrl &matchingUrl, co
static const QString localMetadata(QString::fromLatin1("local"));
static const QString fileScheme(QString::fromLatin1("file"));

int fallbackScore = 0;
QUrl fallbackUrl;

QList<QContactAvatar> avatarDetails = contact.details<QContactAvatar>();
QMap<QString, QContactAvatar> newestAvatarsMap;

// Find the last modified avatar for each metadata type.
for (int i = 0; i < avatarDetails.size(); ++i) {
const QContactAvatar &av(avatarDetails[i]);

Expand All @@ -1404,6 +1404,26 @@ static bool avatarUrlWithMetadata(const QContact &contact, QUrl &matchingUrl, co
continue;
}

auto latestAvatarIt = newestAvatarsMap.find(metadata);
if (latestAvatarIt == newestAvatarsMap.end()) {
newestAvatarsMap.insert(metadata, av);
} else {
if (av.value(QContactDetail__FieldModified).toDateTime() >
latestAvatarIt.value().value(QContactDetail__FieldModified).toDateTime()) {
latestAvatarIt.value() = av;
}
}
}

int fallbackScore = 0;
QUrl fallbackUrl;

// Select an appropriate avatar from the list of last modified avatars.
QList<QContactAvatar> latestAvatars = newestAvatarsMap.values();

for (int i = 0; i < latestAvatars.size(); ++i) {
const QContactAvatar &av(latestAvatars[i]);
const QString metadata(av.value(QContactAvatar::FieldMetaData).toString());
const QUrl avatarImageUrl = av.imageUrl();

if (metadata == localMetadata) {
Expand Down
2 changes: 1 addition & 1 deletion rpm/nemo-qml-plugin-contacts-qt5.spec
Expand Up @@ -15,7 +15,7 @@ BuildRequires: pkgconfig(Qt5Qml)
BuildRequires: pkgconfig(Qt5Contacts)
BuildRequires: pkgconfig(Qt5Versit)
BuildRequires: pkgconfig(Qt5Test)
BuildRequires: pkgconfig(qtcontacts-sqlite-qt5-extensions) >= 0.3.0
BuildRequires: pkgconfig(qtcontacts-sqlite-qt5-extensions) >= 0.3.11
BuildRequires: pkgconfig(mlocale5)
BuildRequires: pkgconfig(mce)
BuildRequires: pkgconfig(mlite5)
Expand Down
5 changes: 1 addition & 4 deletions src/seasideperson.cpp
Expand Up @@ -1990,10 +1990,7 @@ void SeasidePerson::updateContactDetails(const QContact &oldContact)
if (oldFavorite.isFavorite() != newFavorite.isFavorite())
emitChangeSignal(&SeasidePerson::favoriteChanged);

QContactAvatar oldAvatar = oldContact.detail<QContactAvatar>();
QContactAvatar newAvatar = mContact->detail<QContactAvatar>();

if (oldAvatar.imageUrl() != newAvatar.imageUrl()) {
if (SeasideCache::filteredAvatarUrl(oldContact) != SeasideCache::filteredAvatarUrl(*mContact)) {
emitChangeSignal(&SeasidePerson::avatarUrlChanged);
emitChangeSignal(&SeasidePerson::avatarPathChanged);
}
Expand Down

0 comments on commit f708778

Please sign in to comment.