2012-11-24 14:49:23 -05:00
|
|
|
#include <QBuffer>
|
|
|
|
|
|
|
|
#include "AlbumCreateDialog.h"
|
|
|
|
#include "ui_AlbumCreateDialog.h"
|
|
|
|
|
|
|
|
#include "util/misc.h"
|
2013-02-28 16:58:38 -05:00
|
|
|
#include "retroshare/rsgxsflags.h"
|
2012-11-24 14:49:23 -05:00
|
|
|
|
|
|
|
AlbumCreateDialog::AlbumCreateDialog(TokenQueue *photoQueue, RsPhoto *rs_photo, QWidget *parent):
|
|
|
|
QDialog(parent, Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint),
|
|
|
|
ui(new Ui::AlbumCreateDialog), mPhotoQueue(photoQueue), mRsPhoto(rs_photo), mPhotoSelected(NULL)
|
|
|
|
{
|
|
|
|
ui->setupUi(this);
|
|
|
|
|
|
|
|
ui->headerFrame->setHeaderImage(QPixmap(":/images/album_create_64.png"));
|
|
|
|
ui->headerFrame->setHeaderText(tr("Create Album"));
|
|
|
|
|
|
|
|
|
|
|
|
#if QT_VERSION >= 0x040700
|
|
|
|
ui->lineEdit_Title_2->setPlaceholderText(tr("Untitle Album"));
|
|
|
|
ui->lineEdit_Caption_2->setPlaceholderText(tr("Say something about this album..."));
|
|
|
|
//ui->textEdit_Description->setPlaceholderText(tr("Say something about this album...")) ;
|
2012-12-20 07:16:53 -05:00
|
|
|
ui->lineEdit_Where->setPlaceholderText(tr("Where were these taken?"));
|
2012-11-24 14:49:23 -05:00
|
|
|
#endif
|
|
|
|
|
|
|
|
ui->backButton->hide();
|
|
|
|
|
|
|
|
connect(ui->publishButton, SIGNAL(clicked()), this, SLOT(publishAlbum()));
|
|
|
|
connect(ui->AlbumThumbNail, SIGNAL(clicked()), this, SLOT(addAlbumThumbnail()));
|
|
|
|
|
|
|
|
connect(ui->addphotosButton, SIGNAL(clicked()),this, SLOT(changePage()));
|
|
|
|
connect(ui->backButton, SIGNAL(clicked()),this, SLOT(backPage()));
|
|
|
|
|
|
|
|
|
|
|
|
mPhotoDrop = ui->scrollAreaWidgetContents;
|
|
|
|
mPhotoDrop->setPhotoItemHolder(this);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
AlbumCreateDialog::~AlbumCreateDialog()
|
|
|
|
{
|
|
|
|
delete ui;
|
|
|
|
}
|
|
|
|
|
|
|
|
#define PUBLIC_INDEX 0
|
|
|
|
#define RESTRICTED_INDEX 1
|
|
|
|
#define PRIVATE_INDEX 2
|
|
|
|
|
|
|
|
void AlbumCreateDialog::publishAlbum()
|
|
|
|
{
|
|
|
|
// get fields for album to publish, publish and then exit dialog
|
|
|
|
RsPhotoAlbum album;
|
|
|
|
|
|
|
|
album.mCaption = ui->lineEdit_Caption_2->text().toStdString();
|
|
|
|
album.mPhotographer = ui->lineEdit_Photographer->text().toStdString();
|
|
|
|
album.mMeta.mGroupName = ui->lineEdit_Title_2->text().toStdString();
|
|
|
|
album.mDescription = ui->textEdit_Description->toPlainText().toStdString();
|
|
|
|
album.mWhere = ui->lineEdit_Where->text().toStdString();
|
|
|
|
album.mPhotographer = ui->lineEdit_Photographer->text().toStdString();
|
|
|
|
getAlbumThumbnail(album.mThumbnail);
|
|
|
|
|
|
|
|
|
|
|
|
int currIndex = ui->privacyComboBox->currentIndex();
|
|
|
|
|
|
|
|
switch(currIndex)
|
|
|
|
{
|
|
|
|
case PUBLIC_INDEX:
|
|
|
|
album.mMeta.mGroupFlags |= GXS_SERV::FLAG_PRIVACY_PUBLIC;
|
|
|
|
break;
|
|
|
|
case RESTRICTED_INDEX:
|
|
|
|
album.mMeta.mGroupFlags |= GXS_SERV::FLAG_PRIVACY_RESTRICTED;
|
|
|
|
break;
|
|
|
|
case PRIVATE_INDEX:
|
|
|
|
album.mMeta.mGroupFlags |= GXS_SERV::FLAG_PRIVACY_PRIVATE;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
uint32_t token;
|
|
|
|
mRsPhoto->submitAlbumDetails(token, album);
|
|
|
|
mPhotoQueue->queueRequest(token, TOKENREQ_GROUPINFO, RS_TOKREQ_ANSTYPE_ACK, 0);
|
|
|
|
|
|
|
|
publishPhotos();
|
|
|
|
|
|
|
|
close();
|
|
|
|
}
|
|
|
|
|
|
|
|
void AlbumCreateDialog::publishPhotos()
|
|
|
|
{
|
|
|
|
// get fields for album to publish, publish and then exit dialog
|
|
|
|
RsPhotoAlbum album;
|
|
|
|
|
|
|
|
QSet<PhotoItem*> photos;
|
|
|
|
|
|
|
|
mPhotoDrop->getPhotos(photos);
|
|
|
|
|
|
|
|
QSetIterator<PhotoItem*> sit(photos);
|
|
|
|
|
|
|
|
while(sit.hasNext())
|
|
|
|
{
|
|
|
|
PhotoItem* item = sit.next();
|
|
|
|
uint32_t token;
|
|
|
|
RsPhotoPhoto photo = item->getPhotoDetails();
|
|
|
|
photo.mMeta.mGroupId = album.mMeta.mGroupId;
|
|
|
|
mRsPhoto->submitPhoto(token, photo);
|
|
|
|
mPhotoQueue->queueRequest(token, TOKENREQ_MSGINFO, RS_TOKREQ_ANSTYPE_ACK, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
bool AlbumCreateDialog::getAlbumThumbnail(RsPhotoThumbnail &nail)
|
|
|
|
{
|
|
|
|
const QPixmap *tmppix = &mThumbNail;
|
|
|
|
|
|
|
|
QByteArray ba;
|
|
|
|
QBuffer buffer(&ba);
|
|
|
|
|
|
|
|
if(!tmppix->isNull())
|
|
|
|
{
|
|
|
|
// send chan image
|
|
|
|
|
|
|
|
buffer.open(QIODevice::WriteOnly);
|
|
|
|
tmppix->save(&buffer, "PNG"); // writes image into ba in PNG format
|
|
|
|
|
|
|
|
RsPhotoThumbnail tmpnail;
|
|
|
|
tmpnail.data = (uint8_t *) ba.data();
|
|
|
|
tmpnail.size = ba.size();
|
|
|
|
|
|
|
|
nail.copyFrom(tmpnail);
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
nail.data = NULL;
|
|
|
|
nail.size = 0;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
void AlbumCreateDialog::addAlbumThumbnail()
|
|
|
|
{
|
|
|
|
QPixmap img = misc::getOpenThumbnailedPicture(this, tr("Load Album Thumbnail"), 128, 128);
|
|
|
|
|
|
|
|
if (img.isNull())
|
|
|
|
return;
|
|
|
|
|
|
|
|
mThumbNail = img;
|
|
|
|
|
|
|
|
// to show the selected
|
|
|
|
ui->AlbumThumbNail->setIcon(mThumbNail);
|
|
|
|
}
|
|
|
|
|
|
|
|
void AlbumCreateDialog::changePage()
|
|
|
|
{
|
|
|
|
int nextPage = ui->stackedWidget->currentIndex() + 1;
|
|
|
|
if (nextPage >= ui->stackedWidget->count())
|
|
|
|
nextPage = 0;
|
|
|
|
ui->stackedWidget->setCurrentIndex(nextPage);
|
|
|
|
|
|
|
|
ui->backButton->show();
|
|
|
|
ui->addphotosButton->hide();
|
|
|
|
}
|
|
|
|
|
|
|
|
void AlbumCreateDialog::backPage()
|
|
|
|
{
|
|
|
|
int nextPage = ui->stackedWidget->currentIndex() - 1;
|
|
|
|
if (nextPage >= ui->stackedWidget->count())
|
|
|
|
nextPage = 0;
|
|
|
|
ui->stackedWidget->setCurrentIndex(nextPage);
|
|
|
|
|
|
|
|
ui->backButton->hide();
|
|
|
|
ui->addphotosButton->show();
|
|
|
|
}
|
|
|
|
|
|
|
|
void AlbumCreateDialog::notifySelection(PhotoShareItem *selection)
|
|
|
|
{
|
|
|
|
|
|
|
|
PhotoItem* pItem = dynamic_cast<PhotoItem*>(selection);
|
|
|
|
|
|
|
|
if(mPhotoSelected == NULL)
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
mPhotoSelected->setSelected(false);
|
|
|
|
mPhotoSelected = pItem;
|
|
|
|
}
|
|
|
|
|
|
|
|
mPhotoSelected->setSelected(true);
|
|
|
|
}
|