Merge lp:~libqtelegram-team/telegram-app/android-images-not-shown-in-secret-chats into lp:telegram-app/dev

Proposed by Roberto Mier Escandon
Status: Merged
Approved by: Michał Karnicki
Approved revision: 170
Merged at revision: 170
Proposed branch: lp:~libqtelegram-team/telegram-app/android-images-not-shown-in-secret-chats
Merge into: lp:telegram-app/dev
Diff against target: 170 lines (+43/-11)
9 files modified
lib/CMakeLists.txt (+1/-1)
lib/secret/decryptedmessagebuilder.cpp (+2/-2)
lib/secret/decryptedmessagebuilder.h (+5/-5)
lib/telegram.cpp (+7/-1)
qmlplugin/CMakeLists.txt (+2/-1)
qmlplugin/config.h (+1/-0)
qmlplugin/telegramservice.cpp (+3/-0)
qmlplugin/tools.cpp (+21/-1)
qmlplugin/tools.h (+1/-0)
To merge this branch: bzr merge lp:~libqtelegram-team/telegram-app/android-images-not-shown-in-secret-chats
Reviewer Review Type Date Requested Status
Michał Karnicki (community) Needs Information
Review via email: mp+248876@code.launchpad.net

Description of the change

Scaled image to have a max of 4096 in width or heigth, maintaining the aspect ratio, for secret chats.

This prevents blank screen on Android devices when shown preview

To post a comment you must log in.
169. By Roberto Mier Escandon

limitted image width or height to 2048

Revision history for this message
Michał Karnicki (karni) :
review: Needs Information
170. By Roberto Mier Escandon

set default width and height for photo set to 0 in case of photos to be sent to secret chats

Revision history for this message
Roberto Mier Escandon (rmescandon) wrote :

answered

Revision history for this message
Michał Karnicki (karni) wrote :

+1 once tested with 1 portrait and 1 landscape picture to iOS

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/CMakeLists.txt'
--- lib/CMakeLists.txt 2015-01-30 08:20:13 +0000
+++ lib/CMakeLists.txt 2015-02-11 12:02:02 +0000
@@ -33,7 +33,7 @@
33 secret/decryptedmessagebuilder.cpp)33 secret/decryptedmessagebuilder.cpp)
34set_property(TARGET ${LIB_NAME} PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS} -fpermissive")34set_property(TARGET ${LIB_NAME} PROPERTY COMPILE_FLAGS "${COMPILE_FLAGS} -fpermissive")
35set_target_properties(${LIB_NAME} PROPERTIES VERSION ${VERSION} SOVERSION 1)35set_target_properties(${LIB_NAME} PROPERTIES VERSION ${VERSION} SOVERSION 1)
36qt5_use_modules(${LIB_NAME} Network)36qt5_use_modules(${LIB_NAME} Network Multimedia)
37target_link_libraries(${LIB_NAME} ${OPENSSL_LDFLAGS})37target_link_libraries(${LIB_NAME} ${OPENSSL_LDFLAGS})
3838
39if (IS_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})39if (IS_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
4040
=== modified file 'lib/secret/decryptedmessagebuilder.cpp'
--- lib/secret/decryptedmessagebuilder.cpp 2015-02-03 17:18:25 +0000
+++ lib/secret/decryptedmessagebuilder.cpp 2015-02-11 12:02:02 +0000
@@ -66,8 +66,8 @@
66}66}
6767
68DecryptedMessage DecryptedMessageBuilder::buildDecryptedMessageForSendPhoto(qint64 randomId, qint32 ttl, const QByteArray &key, const QByteArray &iv, qint32 size,68DecryptedMessage DecryptedMessageBuilder::buildDecryptedMessageForSendPhoto(qint64 randomId, qint32 ttl, const QByteArray &key, const QByteArray &iv, qint32 size,
69 const QByteArray &thumb, qint32 thumbW, qint32 thumbH,69 qint32 width, qint32 height,
70 qint32 width, qint32 height) {70 const QByteArray &thumb, qint32 thumbW, qint32 thumbH) {
7171
72 DecryptedMessageMedia media(DecryptedMessageMedia::typeDecryptedMessageMediaPhoto);72 DecryptedMessageMedia media(DecryptedMessageMedia::typeDecryptedMessageMediaPhoto);
73 media.setThumb(thumb);73 media.setThumb(thumb);
7474
=== modified file 'lib/secret/decryptedmessagebuilder.h'
--- lib/secret/decryptedmessagebuilder.h 2015-02-03 17:18:25 +0000
+++ lib/secret/decryptedmessagebuilder.h 2015-02-11 12:02:02 +0000
@@ -17,12 +17,12 @@
17 DecryptedMessage buildDecryptedMessageForTtl(qint64 randomId, qint32 ttl);17 DecryptedMessage buildDecryptedMessageForTtl(qint64 randomId, qint32 ttl);
18 DecryptedMessage buildDecryptedMessageForResend(qint64 randomId, qint32 startSeqNo, qint32 endSeqNo);18 DecryptedMessage buildDecryptedMessageForResend(qint64 randomId, qint32 startSeqNo, qint32 endSeqNo);
19 DecryptedMessage buildDecryptedMessageForSendPhoto(qint64 randomId, qint32 ttl, const QByteArray &key, const QByteArray &iv, qint32 size = 0,19 DecryptedMessage buildDecryptedMessageForSendPhoto(qint64 randomId, qint32 ttl, const QByteArray &key, const QByteArray &iv, qint32 size = 0,
20 const QByteArray &thumb = QByteArray(), qint32 thumbW = 90, qint32 thumbH = 90,20 qint32 width = 0, qint32 height = 0,
21 qint32 width = 100, qint32 height = 100);21 const QByteArray &thumb = QByteArray(), qint32 thumbW = 90, qint32 thumbH = 90);
22 DecryptedMessage buildDecryptedMessageForSendVideo(qint64 randomId, qint32 ttl, const QByteArray &key, const QByteArray &iv, qint32 size = 0,22 DecryptedMessage buildDecryptedMessageForSendVideo(qint64 randomId, qint32 ttl, const QByteArray &key, const QByteArray &iv, qint32 size = 0,
23 const QString &mimeType = QString(),23 const QString &mimeType = QString(),
24 qint32 duration = 0, qint32 width = 0, qint32 height = 0,24 qint32 duration = 0, qint32 width = 0, qint32 height = 0,
25 const QByteArray &thumb = QByteArray(), qint32 thumbW = 90, qint32 thumbH = 90);25 const QByteArray &thumb = QByteArray(), qint32 thumbW = 90, qint32 thumbH = 90);
2626
27private:27private:
28 qint32 mLayer;28 qint32 mLayer;
2929
=== modified file 'lib/telegram.cpp'
--- lib/telegram.cpp 2015-02-04 15:57:51 +0000
+++ lib/telegram.cpp 2015-02-11 12:02:02 +0000
@@ -33,6 +33,7 @@
33#include <QFileInfo>33#include <QFileInfo>
34#include <QMimeDatabase>34#include <QMimeDatabase>
35#include <QtEndian>35#include <QtEndian>
36#include <QImage>
3637
37#include "core/tlvalues.h"38#include "core/tlvalues.h"
3839
@@ -422,8 +423,13 @@
422 QFileInfo fileInfo(filePath);423 QFileInfo fileInfo(filePath);
423 qint32 size = fileInfo.size();424 qint32 size = fileInfo.size();
424425
426 QImage image;
427 image.load(filePath);
428 qint32 width = image.width();
429 qint32 height = image.height();
430
425 DecryptedMessageBuilder builder(secretChat->layer());431 DecryptedMessageBuilder builder(secretChat->layer());
426 DecryptedMessage decryptedMessage = builder.buildDecryptedMessageForSendPhoto(randomId, ttl, key, iv, size);432 DecryptedMessage decryptedMessage = builder.buildDecryptedMessageForSendPhoto(randomId, ttl, key, iv, size, width, height);
427 op->setDecryptedMessage(decryptedMessage);433 op->setDecryptedMessage(decryptedMessage);
428434
429 return uploadSendFile(*op, filePath);435 return uploadSendFile(*op, filePath);
430436
=== modified file 'qmlplugin/CMakeLists.txt'
--- qmlplugin/CMakeLists.txt 2015-02-03 08:56:27 +0000
+++ qmlplugin/CMakeLists.txt 2015-02-11 12:02:02 +0000
@@ -1,4 +1,5 @@
1find_package(Qt5Network REQUIRED)1find_package(Qt5Network REQUIRED)
2find_package(Qt5Multimedia REQUIRED)
2pkg_check_modules(SQLITE3 REQUIRED sqlite3)3pkg_check_modules(SQLITE3 REQUIRED sqlite3)
3pkg_check_modules(THUMBNAILER thumbnailer REQUIRED)4pkg_check_modules(THUMBNAILER thumbnailer REQUIRED)
4pkg_check_modules(MEDIAINFO libmediainfo REQUIRED)5pkg_check_modules(MEDIAINFO libmediainfo REQUIRED)
@@ -129,7 +130,7 @@
129string(REGEX REPLACE "\\." "/" MODULE_OUTPUT_DIR ${MODULE_NAME})130string(REGEX REPLACE "\\." "/" MODULE_OUTPUT_DIR ${MODULE_NAME})
130131
131set_target_properties(${QMLPLUGIN_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${MODULE_OUTPUT_DIR})132set_target_properties(${QMLPLUGIN_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${MODULE_OUTPUT_DIR})
132qt5_use_modules(${QMLPLUGIN_NAME} Gui Qml Quick Sql)133qt5_use_modules(${QMLPLUGIN_NAME} Gui Qml Quick Sql Multimedia)
133134
134# Create qmldir content135# Create qmldir content
135file(WRITE qmldir "module " ${MODULE_NAME}\n)136file(WRITE qmldir "module " ${MODULE_NAME}\n)
136137
=== modified file 'qmlplugin/config.h'
--- qmlplugin/config.h 2014-10-31 08:50:53 +0000
+++ qmlplugin/config.h 2015-02-11 12:02:02 +0000
@@ -22,6 +22,7 @@
22#define PHOTOS_MEDIA_FOLDER "photos"22#define PHOTOS_MEDIA_FOLDER "photos"
23#define VIDEOS_MEDIA_FOLDER "videos"23#define VIDEOS_MEDIA_FOLDER "videos"
24#define OUTGOING_MEDIA_FOLDER "outgoing"24#define OUTGOING_MEDIA_FOLDER "outgoing"
25#define PHOTO_MAX_DIMENSION 2048
2526
26#include <QString>27#include <QString>
27#include <QLoggingCategory>28#include <QLoggingCategory>
2829
=== modified file 'qmlplugin/telegramservice.cpp'
--- qmlplugin/telegramservice.cpp 2015-02-04 21:41:51 +0000
+++ qmlplugin/telegramservice.cpp 2015-02-11 12:02:02 +0000
@@ -669,6 +669,9 @@
669 return -1;669 return -1;
670 }670 }
671671
672 // Android secret chat only previews photos with max size 4096x4096
673 Tools::resizePhotoIfNeeded(photoLocalPath);
674
672 qint64 randomId = Tools::generateRandomId();675 qint64 randomId = Tools::generateRandomId();
673 qint64 requestId = mTelegramLib->messagesSendEncryptedPhoto(chatId, randomId, ttl, photoLocalPath);676 qint64 requestId = mTelegramLib->messagesSendEncryptedPhoto(chatId, randomId, ttl, photoLocalPath);
674 DecryptedMessage message;677 DecryptedMessage message;
675678
=== modified file 'qmlplugin/tools.cpp'
--- qmlplugin/tools.cpp 2015-02-03 08:56:27 +0000
+++ qmlplugin/tools.cpp 2015-02-11 12:02:02 +0000
@@ -19,6 +19,7 @@
19 */19 */
20#include "tools.h"20#include "tools.h"
21#include "core/utils.h"21#include "core/utils.h"
22#include "config.h"
22#include <iostream>23#include <iostream>
23#include <stdexcept>24#include <stdexcept>
24#include <QMimeDatabase>25#include <QMimeDatabase>
@@ -209,4 +210,23 @@
209 return jpegFile;210 return jpegFile;
210}211}
211212
212213void Tools::resizePhotoIfNeeded(const QString &photoFilePath) {
214 QImage image;
215 image.load(photoFilePath);
216 qint32 originalWidth = image.width();
217 qint32 originalHeight = image.height();
218
219 qint32 max = originalWidth > originalHeight ? originalWidth : originalHeight;
220
221 if (max > PHOTO_MAX_DIMENSION) {
222 QImage small;
223 if (originalWidth == max) {
224 small = image.scaled(PHOTO_MAX_DIMENSION, originalHeight, Qt::KeepAspectRatio);
225 } else if (originalHeight == max) {
226 small = image.scaled(originalWidth, PHOTO_MAX_DIMENSION, Qt::KeepAspectRatio);
227 }
228 qCDebug(TG_PLUGIN_LOGIC) << "original size " << originalWidth << "x" << originalHeight << "reduced to"
229 << small.width() << "x" << small.height();
230 small.save(photoFilePath);
231 }
232}
213233
=== modified file 'qmlplugin/tools.h'
--- qmlplugin/tools.h 2015-02-03 08:56:27 +0000
+++ qmlplugin/tools.h 2015-02-11 12:02:02 +0000
@@ -44,6 +44,7 @@
44 static MessageMedia::MessageMediaType toMessageMediaType(DecryptedMessageMedia::DecryptedMessageMediaType decryptedMessageMediaType);44 static MessageMedia::MessageMediaType toMessageMediaType(DecryptedMessageMedia::DecryptedMessageMediaType decryptedMessageMediaType);
45 static qint32 getBelongingDialogId(const Message &message);45 static qint32 getBelongingDialogId(const Message &message);
46 static QString pngToJpeg(const QString &pngFile, qint32 quality = -1);46 static QString pngToJpeg(const QString &pngFile, qint32 quality = -1);
47 static void resizePhotoIfNeeded(const QString &photoFilePath);
47};48};
4849
49#endif // TOOLS_H50#endif // TOOLS_H

Subscribers

People subscribed via source and target branches

to all changes: