Applied patch from AsamK and fixed german translation.

Reduced code duplication with avatar picture loading, by creating two new functions that handle image choosing and thumbnail creation.

two new functions:
bool misc::getOpenAvatarPicture(QWidget *parent, QByteArray &image_data)
QPixmap misc::getOpenThumbnailedPicture(QWidget *parent, const QString &caption, int width, int height)

getOpenThumbnailedPicture opens a QFileDialog to let the user choose a picture file. This picture is converted to a thumbnail and returned as a QPixmap.

getOpenAvatarPicture calls getOpenThumbnailedPicture and converts the result to a PNG byte array.

All three avatar loading functions now call getOpenAvatarPicture
Furthermore Channel Logo and Channel Msg thumbnail functions now use getOpenThumbnailedPicture

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4561 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2011-08-12 20:27:05 +00:00
parent 43c0594d18
commit 0fbada0eba
12 changed files with 666 additions and 212 deletions

View file

@ -21,7 +21,6 @@
****************************************************************/
#include <QPixmap>
#include <QBuffer>
#include "PopupChatWindow.h"
#include "PopupChatDialog.h"
@ -291,20 +290,10 @@ void PopupChatWindow::calculateTitle(PopupChatDialog *dialog)
void PopupChatWindow::getAvatar()
{
QString fileName;
if (misc::getOpenFileName(this, RshareSettings::LASTDIR_IMAGES, tr("Load File"), tr("Pictures (*.png *.xpm *.jpg *.tiff *.gif)"), fileName))
QByteArray ba;
if (misc::getOpenAvatarPicture(this, ba))
{
QPixmap picture = QPixmap(fileName).scaled(96,96, Qt::IgnoreAspectRatio,Qt::SmoothTransformation);
std::cerr << "Sending avatar image down the pipe" << std::endl;
// send avatar down the pipe for other peers to get it.
QByteArray ba;
QBuffer buffer(&ba);
buffer.open(QIODevice::WriteOnly);
picture.save(&buffer, "PNG"); // writes image into ba in PNG format
std::cerr << "Image size = " << ba.size() << std::endl;
std::cerr << "Avatar image size = " << ba.size() << std::endl ;
rsMsgs->setOwnAvatarData((unsigned char *)(ba.data()), ba.size()); // last char 0 included.
}