add profile feature
- Allow the user to choose a photo or take one
- Allow the user to modify profile in settings
- Link with LRC model to send profile to peer
Change-Id: I04054f98fbd756c0d08f0b69a4e7020d56bdccab
Tuleap: #531
diff --git a/pixbufmanipulator.cpp b/pixbufmanipulator.cpp
index a9872c7..6bda006 100644
--- a/pixbufmanipulator.cpp
+++ b/pixbufmanipulator.cpp
@@ -18,12 +18,32 @@
#include "pixbufmanipulator.h"
-#include <QtCore/QSize>
-#include <QtCore/QMetaType>
+#include <QSize>
+#include <QMetaType>
+#include <QImage>
+#include <QIODevice>
+#include <QByteArray>
+#include <QBuffer>
-#include <person.h>
-#include <call.h>
-#include <contactmethod.h>
+#include "person.h"
+#include "call.h"
+#include "contactmethod.h"
+#include "profilemodel.h"
+#include "profile.h"
+
+#include "utils.h"
+
+#undef interface
+
+/*Namespace Interfaces collide with QBuffer*/
+QByteArray QImageToByteArray(QImage image)
+{
+ QByteArray ba;
+ QBuffer buffer(&ba);
+ buffer.open(QIODevice::WriteOnly);
+ image.save(&buffer, "PNG");
+ return ba;
+}
namespace Interfaces {
@@ -77,9 +97,12 @@
QVariant PixbufManipulator::personPhoto(const QByteArray& data, const QString& type)
{
- Q_UNUSED(type);
- Q_UNUSED(data);
- return QVariant();
+ QImage avatar;
+ QByteArray ba = type.toLatin1();
+ const char* c_str2 = ba.data();
+ if (avatar.loadFromData(data.fromBase64(data), c_str2))
+ return Utils::getCirclePhoto(avatar, avatar.size().width());
+ return fallbackAvatar_;
}
QVariant
@@ -99,11 +122,14 @@
return QVariant();
}
+
+
QByteArray
PixbufManipulator::toByteArray(const QVariant& pxm)
{
- Q_UNUSED(pxm);
- return QByteArray();
+ auto image = pxm.value<QImage>();
+ QByteArray ba = QImageToByteArray(image);
+ return ba;
}
QVariant
@@ -180,7 +206,9 @@
QVariant PixbufManipulator::decorationRole(const Account* acc)
{
Q_UNUSED(acc)
- return QVariant();
+ return Utils::getCirclePhoto(ProfileModel::instance().
+ selectedProfile()->person()->photo().value<QImage>(),
+ imgSize_.width());
}
} // namespace Interfaces