Skip to content
Snippets Groups Projects
Commit 7a166e48 authored by Alexandre Lision's avatar Alexandre Lision
Browse files

delegates: adapt to new LRC interfaces API

Issue: #79656
Change-Id: I6d63c8fda34d931ee3650f82288c950a7c858303
parent 7f8351be
No related branches found
No related tags found
No related merge requests found
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
#import <personmodel.h> #import <personmodel.h>
#import <contactmethod.h> #import <contactmethod.h>
#import <numbercategorymodel.h> #import <numbercategorymodel.h>
#import <globalinstances.h>
#import "QNSTreeController.h" #import "QNSTreeController.h"
#import "delegates/ImageManipulationDelegate.h" #import "delegates/ImageManipulationDelegate.h"
...@@ -243,7 +244,7 @@ public: ...@@ -243,7 +244,7 @@ public:
if(!qIdx.parent().isValid()) { if(!qIdx.parent().isValid()) {
pCell.title = qIdx.data(Qt::DisplayRole).toString().toNSString(); pCell.title = qIdx.data(Qt::DisplayRole).toString().toNSString();
Person* p = qvariant_cast<Person*>(qIdx.data((int)Person::Role::Object)); Person* p = qvariant_cast<Person*>(qIdx.data((int)Person::Role::Object));
QVariant photo = ImageManipulationDelegate::instance()->contactPhoto(p, QSize(35,35)); QVariant photo = GlobalInstances::pixmapManipulator().contactPhoto(p, QSize(35,35));
[pCell setPersonImage:QtMac::toNSImage(qvariant_cast<QPixmap>(photo))]; [pCell setPersonImage:QtMac::toNSImage(qvariant_cast<QPixmap>(photo))];
} else { } else {
pCell.title = qIdx.data(Qt::DisplayRole).toString().toNSString(); pCell.title = qIdx.data(Qt::DisplayRole).toString().toNSString();
......
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
#import <callmodel.h> #import <callmodel.h>
#import <contactmethod.h> #import <contactmethod.h>
#import <categorizedcontactmodel.h> #import <categorizedcontactmodel.h>
#import <globalinstances.h>
#import "backends/AddressBookBackend.h" #import "backends/AddressBookBackend.h"
#import "QNSTreeController.h" #import "QNSTreeController.h"
...@@ -79,7 +80,6 @@ public: ...@@ -79,7 +80,6 @@ public:
-(void) awakeFromNib -(void) awakeFromNib
{ {
new ImageManipulationDelegate();
NSLog(@"INIT PersonsVC"); NSLog(@"INIT PersonsVC");
contactProxyModel = new ReachablePersonModel(CategorizedContactModel::instance()); contactProxyModel = new ReachablePersonModel(CategorizedContactModel::instance());
contactProxyModel->setSortRole(static_cast<int>(Qt::DisplayRole)); contactProxyModel->setSortRole(static_cast<int>(Qt::DisplayRole));
...@@ -216,7 +216,7 @@ public: ...@@ -216,7 +216,7 @@ public:
pCell.title = qIdx.data(Qt::DisplayRole).toString().toNSString(); pCell.title = qIdx.data(Qt::DisplayRole).toString().toNSString();
if(((NSTreeNode*)item).indexPath.length == 2) { if(((NSTreeNode*)item).indexPath.length == 2) {
Person* p = qvariant_cast<Person*>(qIdx.data((int)Person::Role::Object)); Person* p = qvariant_cast<Person*>(qIdx.data((int)Person::Role::Object));
QVariant photo = ImageManipulationDelegate::instance()->contactPhoto(p, QSize(35,35)); QVariant photo = GlobalInstances::pixmapManipulator().contactPhoto(p, QSize(35,35));
[pCell setPersonImage:QtMac::toNSImage(qvariant_cast<QPixmap>(photo))]; [pCell setPersonImage:QtMac::toNSImage(qvariant_cast<QPixmap>(photo))];
} }
} }
......
/* /*
* Copyright (C) 2015 Savoir-Faire Linux Inc. * Copyright (C) 2015 Savoir-faire Linux Inc.
* Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com> * Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
...@@ -27,18 +27,18 @@ ...@@ -27,18 +27,18 @@
* shall include the source code for the parts of OpenSSL used as well * shall include the source code for the parts of OpenSSL used as well
* as that of the covered work. * as that of the covered work.
*/ */
#ifndef IMAGEMANIPULATION_H
#define IMAGEMANIPULATION_H
#import <QuartzCore/QuartzCore.h> #import <QuartzCore/QuartzCore.h>
#import <delegates/pixmapmanipulationdelegate.h> #import <interfaces/pixmapmanipulatori.h>
#import <call.h> #import <call.h>
class Person; class Person;
class QPixmap; class QPixmap;
class ImageManipulationDelegate : public PixmapManipulationDelegate { namespace Interfaces {
class ImageManipulationDelegate : public PixmapManipulatorI {
public: public:
ImageManipulationDelegate(); ImageManipulationDelegate();
...@@ -46,12 +46,23 @@ public: ...@@ -46,12 +46,23 @@ public:
virtual QByteArray toByteArray(const QVariant& pxm) override; virtual QByteArray toByteArray(const QVariant& pxm) override;
virtual QVariant personPhoto(const QByteArray& data, const QString& type = "PNG") override; virtual QVariant personPhoto(const QByteArray& data, const QString& type = "PNG") override;
QVariant callPhoto(Call* c, const QSize& size, bool displayPresence = true) override;
QVariant callPhoto(const ContactMethod* n, const QSize& size, bool displayPresence = true) override;
/* TODO: the following methods return an empty QVariant/QByteArray */
QVariant numberCategoryIcon(const QVariant& p, const QSize& size, bool displayPresence = false, bool isPresent = false) override;
QVariant securityIssueIcon(const QModelIndex& index) override;
QVariant collectionIcon(const CollectionInterface* interface, PixmapManipulatorI::CollectionIconHint hint = PixmapManipulatorI::CollectionIconHint::NONE) const override;
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 userActionIcon(const UserActionElement& state) const override;
private: private:
//Helper //Helper
QPixmap drawDefaultUserPixmap(const QSize& size, bool displayPresence, bool isPresent); QPixmap drawDefaultUserPixmap(const QSize& size, bool displayPresence, bool isPresent);
CGImageRef resizeCGImage(CGImageRef image, const QSize& size); CGImageRef resizeCGImage(CGImageRef image, const QSize& size);
}; };
#endif // IMAGEMANIPULATION_H } // namespace Interfaces
...@@ -47,7 +47,9 @@ ...@@ -47,7 +47,9 @@
#import <person.h> #import <person.h>
#import <contactmethod.h> #import <contactmethod.h>
ImageManipulationDelegate::ImageManipulationDelegate() : PixmapManipulationDelegate() namespace Interfaces {
ImageManipulationDelegate::ImageManipulationDelegate()
{ {
} }
...@@ -93,6 +95,22 @@ QVariant ImageManipulationDelegate::contactPhoto(Person* c, const QSize& size, b ...@@ -93,6 +95,22 @@ QVariant ImageManipulationDelegate::contactPhoto(Person* c, const QSize& size, b
return pxm; return pxm;
} }
QVariant
ImageManipulationDelegate::callPhoto(Call* c, const QSize& size, bool displayPresence)
{
return callPhoto(c->peerContactMethod(), size, displayPresence);
}
QVariant
ImageManipulationDelegate::callPhoto(const ContactMethod* n, const QSize& size, bool displayPresence)
{
if (n->contact()) {
return contactPhoto(n->contact(), size, displayPresence);
} else {
return drawDefaultUserPixmap(size, false, false);
}
}
QVariant ImageManipulationDelegate::personPhoto(const QByteArray& data, const QString& type) QVariant ImageManipulationDelegate::personPhoto(const QByteArray& data, const QString& type)
{ {
QImage image; QImage image;
...@@ -158,3 +176,54 @@ CGImageRef ImageManipulationDelegate::resizeCGImage(CGImageRef image, const QSiz ...@@ -158,3 +176,54 @@ CGImageRef ImageManipulationDelegate::resizeCGImage(CGImageRef image, const QSiz
return imgRef; return imgRef;
} }
QVariant
ImageManipulationDelegate::numberCategoryIcon(const QVariant& p, const QSize& size, bool displayPresence, bool isPresent)
{
Q_UNUSED(p)
Q_UNUSED(size)
Q_UNUSED(displayPresence)
Q_UNUSED(isPresent)
return QVariant();
}
QVariant
ImageManipulationDelegate::securityIssueIcon(const QModelIndex& index)
{
Q_UNUSED(index)
return QVariant();
}
QVariant
ImageManipulationDelegate::collectionIcon(const CollectionInterface* interface, PixmapManipulatorI::CollectionIconHint hint) const
{
Q_UNUSED(interface)
Q_UNUSED(hint)
return QVariant();
}
QVariant
ImageManipulationDelegate::securityLevelIcon(const SecurityEvaluationModel::SecurityLevel level) const
{
Q_UNUSED(level)
return QVariant();
}
QVariant
ImageManipulationDelegate::historySortingCategoryIcon(const CategorizedHistoryModel::SortedProxy::Categories cat) const
{
Q_UNUSED(cat)
return QVariant();
}
QVariant
ImageManipulationDelegate::contactSortingCategoryIcon(const CategorizedContactModel::SortedProxy::Categories cat) const
{
Q_UNUSED(cat)
return QVariant();
}
QVariant
ImageManipulationDelegate::userActionIcon(const UserActionElement& state) const
{
Q_UNUSED(state)
return QVariant();
}
} // namespace Interfaces
...@@ -29,9 +29,13 @@ ...@@ -29,9 +29,13 @@
*/ */
#import <AppKit/NSApplication.h> // NSApplicationMain #import <AppKit/NSApplication.h> // NSApplicationMain
#import <qapplication.h> #import <qapplication.h>
#import <globalinstances.h>
#import <memory>
#import <QDebug> #import <QDebug>
#import <QDir> #import <QDir>
#import "delegates/ImageManipulationDelegate.h"
int main(int argc, const char *argv[]) { int main(int argc, const char *argv[]) {
QDir dir(QString::fromUtf8(argv[0])); QDir dir(QString::fromUtf8(argv[0]));
...@@ -44,6 +48,9 @@ int main(int argc, const char *argv[]) { ...@@ -44,6 +48,9 @@ int main(int argc, const char *argv[]) {
QApplication* app = new QApplication(argc, const_cast<char**>(argv)); QApplication* app = new QApplication(argc, const_cast<char**>(argv));
app->setAttribute(Qt::AA_MacPluginApplication); app->setAttribute(Qt::AA_MacPluginApplication);
GlobalInstances::setPixmapManipulator(std::unique_ptr<Interfaces::ImageManipulationDelegate>(new Interfaces::ImageManipulationDelegate()));
return NSApplicationMain(argc, argv); return NSApplicationMain(argc, argv);
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment