Merge pull request #66 from RetroShare/master

update to master
This commit is contained in:
defnax 2020-02-15 15:04:17 +01:00 committed by GitHub
commit 3eec7922f6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
82 changed files with 1054 additions and 641 deletions

View file

@ -104,6 +104,12 @@
#ifdef RS_USE_WIKI
#include "gui/WikiPoos/WikiDialog.h"
#endif
#ifdef RS_USE_WIRE
#include "gui/TheWire/WireDialog.h"
#endif
#ifdef RS_USE_PHOTO
#include "gui/PhotoShare/PhotoShare.h"
#endif
#include "gui/Posted/PostedDialog.h"
#include "gui/statistics/StatisticsWindow.h"
@ -426,6 +432,17 @@ void MainWindow::initStackedPage()
addPage(wikiDialog = new WikiDialog(ui->stackPages), grp, &notify);
#endif
#ifdef RS_USE_WIRE
WireDialog *wireDialog = NULL;
addPage(wireDialog = new WireDialog(ui->stackPages), grp, &notify);
#endif
#ifdef RS_USE_PHOTO
PhotoShare *photoDialog = NULL;
addPage(photoDialog = new PhotoShare(ui->stackPages), grp, &notify);
#endif
std::cerr << "Looking for interfaces in existing plugins:" << std::endl;
for(int i = 0;i<rsPlugins->nbPlugins();++i)
{

View file

@ -128,7 +128,7 @@ void AlbumCreateDialog::publishPhotos()
}
bool AlbumCreateDialog::getAlbumThumbnail(RsPhotoThumbnail &nail)
bool AlbumCreateDialog::getAlbumThumbnail(RsGxsImage &image)
{
const QPixmap *tmppix = &mThumbNail;
@ -142,17 +142,11 @@ bool AlbumCreateDialog::getAlbumThumbnail(RsPhotoThumbnail &nail)
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);
image.copy((uint8_t *) ba.data(), ba.size());
return true;
}
nail.data = NULL;
nail.size = 0;
image.clear();
return false;
}

View file

@ -55,7 +55,7 @@ private slots:
private:
bool getAlbumThumbnail(RsPhotoThumbnail &nail);
bool getAlbumThumbnail(RsGxsImage &image);
private:
Ui::AlbumCreateDialog *ui;

View file

@ -60,17 +60,17 @@ void AlbumDialog::setUp()
ui->textEdit_description->setText(QString::fromStdString(mAlbum.mDescription));
QPixmap qtn;
GxsIdDetails::loadPixmapFromData(mAlbum.mThumbnail.data, mAlbum.mThumbnail.size, mAlbum.mThumbnail.type.c_str(),qtn);
if(mAlbum.mThumbnail.size != 0)
if(mAlbum.mThumbnail.mSize != 0)
{
ui->label_thumbNail->setPixmap(qtn);
QPixmap qtn;
GxsIdDetails::loadPixmapFromData(mAlbum.mThumbnail.mData, mAlbum.mThumbnail.mSize,qtn, GxsIdDetails::ORIGINAL);
ui->label_thumbNail->setPixmap(qtn);
}
else
{
// display a default Album icon when album has no Thumbnail
ui->label_thumbNail->setPixmap(QPixmap(":/images/album_default_128.png"));
// display a default Album icon when album has no Thumbnail
ui->label_thumbNail->setPixmap(QPixmap(":/images/album_default_128.png"));
}
}

View file

@ -0,0 +1,41 @@
/*******************************************************************************
* retroshare-gui/src/gui/PhotoShare/AlbumExtra.cpp *
* *
* Copyright (C) 2018 by Robert Fernie <retroshare.project@gmail.com> *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Affero General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Affero General Public License for more details. *
* *
* You should have received a copy of the GNU Affero General Public License *
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
* *
*******************************************************************************/
#include "AlbumExtra.h"
#include "ui_AlbumExtra.h"
AlbumExtra::AlbumExtra(QWidget *parent) :
QWidget(NULL),
ui(new Ui::AlbumExtra)
{
ui->setupUi(this);
setUp();
}
AlbumExtra::~AlbumExtra()
{
delete ui;
}
void AlbumExtra::setUp()
{
}

View file

@ -0,0 +1,44 @@
/*******************************************************************************
* retroshare-gui/src/gui/PhotoShare/AlbumExtra.h *
* *
* Copyright (C) 2020 by Robert Fernie <retroshare.project@gmail.com> *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Affero General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Affero General Public License for more details. *
* *
* You should have received a copy of the GNU Affero General Public License *
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
* *
*******************************************************************************/
#ifndef ALBUMEXTRA_H
#define ALBUMEXTRA_H
#include <QWidget>
namespace Ui {
class AlbumExtra;
}
class AlbumExtra : public QWidget
{
Q_OBJECT
public:
explicit AlbumExtra(QWidget *parent = 0);
virtual ~AlbumExtra();
private:
void setUp();
private:
Ui::AlbumExtra *ui;
};
#endif // ALBUMEXTRA_H

View file

@ -0,0 +1,162 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>AlbumExtra</class>
<widget class="QWidget" name="AlbumExtra">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>513</width>
<height>198</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_19">
<property name="text">
<string>Category:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboBox_Category_2">
<item>
<property name="text">
<string>Animals</string>
</property>
</item>
<item>
<property name="text">
<string>Family</string>
</property>
</item>
<item>
<property name="text">
<string>Friends</string>
</property>
</item>
<item>
<property name="text">
<string>Flowers</string>
</property>
</item>
<item>
<property name="text">
<string>Holiday</string>
</property>
</item>
<item>
<property name="text">
<string>Landscapes</string>
</property>
</item>
<item>
<property name="text">
<string>Pets</string>
</property>
</item>
<item>
<property name="text">
<string>Portraits</string>
</property>
</item>
<item>
<property name="text">
<string>Travel</string>
</property>
</item>
<item>
<property name="text">
<string>Work</string>
</property>
</item>
<item>
<property name="text">
<string>Random</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Quality:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="comboBox_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item>
<property name="text">
<string>Resize Images (&lt; 1Mb)</string>
</property>
</item>
<item>
<property name="text">
<string>Resize Images (&lt; 10Mb)</string>
</property>
</item>
<item>
<property name="text">
<string>Send Original Images</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="Line" name="line">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="captionLabel">
<property name="text">
<string>Caption:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lineEdit_Caption_2"/>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_14">
<property name="text">
<string>Where:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="lineEdit_Where"/>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_12">
<property name="text">
<string>Photographer:</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="lineEdit_Photographer"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View file

@ -0,0 +1,186 @@
/*******************************************************************************
* retroshare-gui/src/gui/PhotoShare/AlbumGroupDialog.cpp *
* *
* Copyright (C) 2020 by Robert Fernie <retroshare.project@gmail.com> *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Affero General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Affero General Public License for more details. *
* *
* You should have received a copy of the GNU Affero General Public License *
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
* *
*******************************************************************************/
#include <QBuffer>
#include "AlbumGroupDialog.h"
#include "AlbumExtra.h"
#include "gui/gxs/GxsIdDetails.h"
#include <iostream>
const uint32_t AlbumCreateEnabledFlags = (
GXS_GROUP_FLAGS_NAME |
GXS_GROUP_FLAGS_ICON |
GXS_GROUP_FLAGS_DESCRIPTION |
GXS_GROUP_FLAGS_DISTRIBUTION |
// GXS_GROUP_FLAGS_PUBLISHSIGN |
// GXS_GROUP_FLAGS_SHAREKEYS | // disabled because the UI doesn't handle it yet.
// GXS_GROUP_FLAGS_PERSONALSIGN |
// GXS_GROUP_FLAGS_COMMENTS |
GXS_GROUP_FLAGS_EXTRA |
0);
uint32_t AlbumCreateDefaultsFlags = ( GXS_GROUP_DEFAULTS_DISTRIB_PUBLIC |
//GXS_GROUP_DEFAULTS_DISTRIB_GROUP |
//GXS_GROUP_DEFAULTS_DISTRIB_LOCAL |
GXS_GROUP_DEFAULTS_PUBLISH_OPEN |
//GXS_GROUP_DEFAULTS_PUBLISH_THREADS |
//GXS_GROUP_DEFAULTS_PUBLISH_REQUIRED |
//GXS_GROUP_DEFAULTS_PUBLISH_ENCRYPTED |
//GXS_GROUP_DEFAULTS_PERSONAL_GPG |
GXS_GROUP_DEFAULTS_PERSONAL_REQUIRED |
//GXS_GROUP_DEFAULTS_PERSONAL_IFNOPUB |
//GXS_GROUP_DEFAULTS_COMMENTS_YES |
GXS_GROUP_DEFAULTS_COMMENTS_NO |
0);
uint32_t AlbumEditEnabledFlags = AlbumCreateEnabledFlags;
uint32_t AlbumEditDefaultsFlags = AlbumCreateDefaultsFlags;
AlbumGroupDialog::AlbumGroupDialog(TokenQueue *tokenQueue, QWidget *parent)
: GxsGroupDialog(tokenQueue, AlbumCreateEnabledFlags, AlbumCreateDefaultsFlags, parent)
{
}
AlbumGroupDialog::AlbumGroupDialog(TokenQueue *tokenExternalQueue, RsTokenService *tokenService, Mode mode, RsGxsGroupId groupId, QWidget *parent)
: GxsGroupDialog(tokenExternalQueue, tokenService, mode, groupId, AlbumEditEnabledFlags, AlbumEditDefaultsFlags, parent)
{
}
void AlbumGroupDialog::initUi()
{
switch (mode())
{
case MODE_CREATE:
setUiText(UITYPE_SERVICE_HEADER, tr("Create New Album"));
setUiText(UITYPE_BUTTONBOX_OK, tr("Create"));
break;
case MODE_SHOW:
setUiText(UITYPE_SERVICE_HEADER, tr("Album"));
break;
case MODE_EDIT:
setUiText(UITYPE_SERVICE_HEADER, tr("Edit ALbum"));
setUiText(UITYPE_BUTTONBOX_OK, tr("Update Album"));
break;
}
setUiText(UITYPE_ADD_ADMINS_CHECKBOX, tr("Add Album Admins"));
setUiText(UITYPE_CONTACTS_DOCK, tr("Select Album Admins"));
// Inject Extra Widgets.
injectExtraWidget(new AlbumExtra(this));
}
QPixmap AlbumGroupDialog::serviceImage()
{
return QPixmap(":/images/album_create_64.png");
}
void AlbumGroupDialog::prepareAlbumGroup(RsPhotoAlbum &group, const RsGroupMetaData &meta)
{
group.mMeta = meta;
group.mDescription = getDescription().toUtf8().constData();
QPixmap pixmap = getLogo();
if (!pixmap.isNull()) {
QByteArray ba;
QBuffer buffer(&ba);
buffer.open(QIODevice::WriteOnly);
pixmap.save(&buffer, "PNG"); // writes image into ba in PNG format
group.mThumbnail.copy((uint8_t *) ba.data(), ba.size());
} else {
group.mThumbnail.clear();
}
// Additional Fields that we need to fill in.
group.mCaption = "Caption goes here";
group.mPhotographer = "photographer";
group.mWhere = "Where?";
}
bool AlbumGroupDialog::service_CreateGroup(uint32_t &token, const RsGroupMetaData &meta)
{
// Specific Function.
RsPhotoAlbum grp;
prepareAlbumGroup(grp, meta);
rsPhoto->submitAlbumDetails(token, grp);
return true;
}
bool AlbumGroupDialog::service_EditGroup(uint32_t &token, RsGroupMetaData &editedMeta)
{
RsPhotoAlbum grp;
prepareAlbumGroup(grp, editedMeta);
std::cerr << "AlbumGroupDialog::service_EditGroup() submitting changes";
std::cerr << std::endl;
// TODO: no interface here, yet.
// rsPhoto->updateGroup(token, grp);
return true;
}
bool AlbumGroupDialog::service_loadGroup(uint32_t token, Mode /*mode*/, RsGroupMetaData& groupMetaData, QString &description)
{
std::cerr << "AlbumGroupDialog::service_loadGroup(" << token << ")";
std::cerr << std::endl;
std::vector<RsPhotoAlbum> groups;
if (!rsPhoto->getAlbum(token, groups))
{
std::cerr << "AlbumGroupDialog::service_loadGroup() Error getting GroupData";
std::cerr << std::endl;
return false;
}
if (groups.size() != 1)
{
std::cerr << "AlbumGroupDialog::service_loadGroup() Error Group.size() != 1";
std::cerr << std::endl;
return false;
}
std::cerr << "AlbumGroupDialog::service_loadGroup() Unfinished Loading";
std::cerr << std::endl;
const RsPhotoAlbum &group = groups[0];
groupMetaData = group.mMeta;
description = QString::fromUtf8(group.mDescription.c_str());
if (group.mThumbnail.mData) {
QPixmap pixmap;
if (GxsIdDetails::loadPixmapFromData(group.mThumbnail.mData, group.mThumbnail.mSize, pixmap,GxsIdDetails::ORIGINAL)) {
setLogo(pixmap);
}
} else {
setLogo(QPixmap(":/images/album_create_64.png"));
}
// NEED TO Load additional data....
return true;
}

View file

@ -0,0 +1,47 @@
/*******************************************************************************
* retroshare-gui/src/gui/Posted/PostedGroupDialog.h *
* *
* Copyright (C) 2020 by Robert Fernie <retroshare.project@gmail.com> *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Affero General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Affero General Public License for more details. *
* *
* You should have received a copy of the GNU Affero General Public License *
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
* *
*******************************************************************************/
#ifndef _ALBUM_GROUP_DIALOG_H
#define _ALBUM_GROUP_DIALOG_H
#include "gui/gxs/GxsGroupDialog.h"
#include <retroshare/rsphoto.h>
class AlbumGroupDialog : public GxsGroupDialog
{
Q_OBJECT
public:
AlbumGroupDialog(TokenQueue *tokenQueue, QWidget *parent);
AlbumGroupDialog(TokenQueue *tokenExternalQueue, RsTokenService *tokenService, Mode mode, RsGxsGroupId groupId, QWidget *parent);
protected:
virtual void initUi();
virtual QPixmap serviceImage();
virtual bool service_CreateGroup(uint32_t &token, const RsGroupMetaData &meta);
virtual bool service_loadGroup(uint32_t token, Mode mode, RsGroupMetaData& groupMetaData, QString &description);
virtual bool service_EditGroup(uint32_t &token, RsGroupMetaData &editedMeta);
private:
void prepareAlbumGroup(RsPhotoAlbum &group, const RsGroupMetaData &meta);
};
#endif

View file

@ -41,17 +41,17 @@ void AlbumItem::setUp()
{
ui->label_AlbumTitle->setText(QString::fromStdString(mAlbum.mMeta.mGroupName));
ui->label_Photographer->setText(QString::fromStdString(mAlbum.mPhotographer));
QPixmap qtn;
qtn.loadFromData(mAlbum.mThumbnail.data, mAlbum.mThumbnail.size, mAlbum.mThumbnail.type.c_str());
if(mAlbum.mThumbnail.size != 0)
if(mAlbum.mThumbnail.mSize != 0)
{
ui->label_Thumbnail->setPixmap(qtn);
QPixmap qtn;
qtn.loadFromData(mAlbum.mThumbnail.mData, mAlbum.mThumbnail.mSize, "PNG");
ui->label_Thumbnail->setPixmap(qtn);
}
else
{
// display a default Album icon when album has no Thumbnail
ui->label_Thumbnail->setPixmap(QPixmap(":/images/album_default_128.png"));
// display a default Album icon when album has no Thumbnail
ui->label_Thumbnail->setPixmap(QPixmap(":/images/album_default_128.png"));
}
}

View file

@ -53,7 +53,7 @@ PhotoDialog::~PhotoDialog()
void PhotoDialog::setUp()
{
QPixmap qtn;
qtn.loadFromData(mPhotoDetails.mThumbnail.data, mPhotoDetails.mThumbnail.size, mPhotoDetails.mThumbnail.type.c_str());
qtn.loadFromData(mPhotoDetails.mThumbnail.mData, mPhotoDetails.mThumbnail.mSize, "PNG");
ui->label_Photo->setPixmap(qtn);
ui->lineEdit_Title->setText(QString::fromStdString(mPhotoDetails.mMeta.mMsgName));

View file

@ -60,7 +60,7 @@ PhotoItem::PhotoItem(PhotoShareItemHolder *holder, const QString& path, QWidget
ui->label_Thumbnail->setPixmap(mThumbNail.scaled(120, 120, Qt::KeepAspectRatio, Qt::SmoothTransformation));
setSelected(false);
getPhotoThumbnail(mPhotoDetails.mThumbnail);
getThumbnail(mPhotoDetails.mThumbnail);
connect(ui->lineEdit_Title, SIGNAL(editingFinished()), this, SLOT(setTitle()));
connect(ui->lineEdit_PhotoGrapher, SIGNAL(editingFinished()), this, SLOT(setPhotoGrapher()));
@ -83,7 +83,7 @@ void PhotoItem::setSelected(bool selected)
update();
}
bool PhotoItem::getPhotoThumbnail(RsPhotoThumbnail &nail)
bool PhotoItem::getThumbnail(RsGxsImage &image)
{
const QPixmap *tmppix = &mThumbNail;
@ -96,18 +96,11 @@ bool PhotoItem::getPhotoThumbnail(RsPhotoThumbnail &nail)
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);
image.copy((uint8_t *) ba.data(), ba.size());
return true;
}
nail.data = NULL;
nail.size = 0;
image.clear();
return false;
}
@ -166,12 +159,12 @@ void PhotoItem::setUp()
updateImage(mPhotoDetails.mThumbnail);
}
void PhotoItem::updateImage(const RsPhotoThumbnail &thumbnail)
void PhotoItem::updateImage(const RsGxsImage &image)
{
if (thumbnail.data != NULL)
if (image.mData != NULL)
{
QPixmap qtn;
qtn.loadFromData(thumbnail.data, thumbnail.size, thumbnail.type.c_str());
qtn.loadFromData(image.mData, image.mSize, "PNG");
ui->label_Thumbnail->setPixmap(qtn.scaled(120, 120, Qt::KeepAspectRatio, Qt::SmoothTransformation));
mThumbNail = qtn;
}

View file

@ -42,13 +42,13 @@ public:
void setSelected(bool selected);
bool isSelected(){ return mSelected; }
const RsPhotoPhoto& getPhotoDetails();
bool getPhotoThumbnail(RsPhotoThumbnail &nail);
bool getThumbnail(RsGxsImage &image);
protected:
void mousePressEvent(QMouseEvent *event);
private:
void updateImage(const RsPhotoThumbnail &thumbnail);
void updateImage(const RsGxsImage &image);
void setUp();
private slots:

View file

@ -31,7 +31,7 @@
#include <QTimer>
#include <QMessageBox>
#include "AlbumCreateDialog.h"
#include "AlbumGroupDialog.h"
#include "AlbumItem.h"
#include "PhotoItem.h"
@ -76,7 +76,7 @@ PhotoShare::PhotoShare(QWidget *parent)
connect( ui.toolButton_ViewAlbum, SIGNAL(clicked()), this, SLOT(OpenAlbumDialog()));
connect( ui.toolButton_SlideShow, SIGNAL(clicked()), this, SLOT(OpenSlideShow()));
connect( ui.toolButton_subscribe, SIGNAL(clicked()), this, SLOT(subscribeToAlbum()));
connect(ui.toolButton_ViewPhoto, SIGNAL(clicked()), this, SLOT(OpenPhotoDialog()));
connect( ui.toolButton_ViewPhoto, SIGNAL(clicked()), this, SLOT(OpenPhotoDialog()));
connect( ui.pushButton_YourAlbums, SIGNAL(clicked()), this, SLOT(updateAlbums()));
connect( ui.pushButton_SharedAlbums, SIGNAL(clicked()), this, SLOT(updateAlbums()));
@ -215,7 +215,7 @@ void PhotoShare::OpenSlideShow()
void PhotoShare::createAlbum()
{
AlbumCreateDialog albumCreate(mPhotoQueue, rsPhoto, this);
AlbumGroupDialog albumCreate(mPhotoQueue, this);
albumCreate.exec();
}

View file

@ -28,7 +28,6 @@
#include "retroshare/rsphoto.h"
#include "retroshare-gui/mainpage.h"
#include "AlbumCreateDialog.h"
#include "AlbumDialog.h"
#include "PhotoDialog.h"
@ -39,6 +38,8 @@
#include "util/TokenQueue.h"
#include "PhotoShareItemHolder.h"
#define IMAGE_PHOTO ":/icons/png/photo.png"
namespace Ui {
class PhotoShare;
}
@ -51,6 +52,10 @@ public:
PhotoShare(QWidget *parent = 0);
~PhotoShare();
virtual QIcon iconPixmap() const { return QIcon(IMAGE_PHOTO) ; }
virtual QString pageName() const { return tr("Photo Albums") ; }
virtual QString helpText() const { return ""; }
void notifySelection(PhotoShareItem* selection);
private slots:

View file

@ -20,6 +20,7 @@
#include "gui/PhotoShare/PhotoSlideShow.h"
#include "gui/PhotoShare/PhotoDrop.h"
#include "gui/gxs/GxsIdDetails.h"
#include <iostream>
@ -175,16 +176,10 @@ void PhotoSlideShow::loadImage()
if (ptr)
{
/* load into the slot */
if (ptr->mThumbnail.data != NULL)
if (ptr->mThumbnail.mData != NULL)
{
QPixmap qtn;
// copy the data for Qpixmap to use.
RsPhotoThumbnail tn;
tn.copyFrom(ptr->mThumbnail);
qtn.loadFromData(tn.data, tn.size, tn.type.c_str());
tn.data = 0;
GxsIdDetails::loadPixmapFromData(ptr->mThumbnail.mData, ptr->mThumbnail.mSize,qtn, GxsIdDetails::ORIGINAL);
QPixmap sqtn = qtn.scaled(800, 600, Qt::KeepAspectRatio, Qt::SmoothTransformation);
ui.imgLabel->setPixmap(sqtn);
@ -249,8 +244,8 @@ bool PhotoSlideShow::loadPhotoData(const uint32_t &token)
RsPhotoPhoto& photo = *vit;
RsPhotoPhoto *ptr = new RsPhotoPhoto;
*ptr = photo;
ptr->mThumbnail.data = 0;
ptr->mThumbnail.copyFrom(photo.mThumbnail);
ptr->mThumbnail = photo.mThumbnail; // copies data.
ptr->mOrder = i++;
mPhotos[photo.mMeta.mMsgId] = ptr;
mPhotoOrder[ptr->mOrder] = photo.mMeta.mMsgId;

View file

@ -22,6 +22,8 @@
#include <QMessageBox>
#include <QByteArray>
#include <QStringList>
#include <QSignalMapper>
#include "PostedCreatePostDialog.h"
#include "ui_PostedCreatePostDialog.h"
@ -35,10 +37,13 @@
#include <QBuffer>
#include <iostream>
#include <gui/RetroShareLink.h>
#include <util/imageutil.h>
#include <gui/RetroShareLink.h>
/* View Page */
#define VIEW_POST 1
#define VIEW_IMAGE 2
#define VIEW_LINK 3
PostedCreatePostDialog::PostedCreatePostDialog(TokenQueue* tokenQ, RsPosted *posted, const RsGxsGroupId& grpId, QWidget *parent):
QDialog(parent, Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint),
@ -67,6 +72,16 @@ PostedCreatePostDialog::PostedCreatePostDialog(TokenQueue* tokenQ, RsPosted *pos
/* fill in the available OwnIds for signing */
ui->idChooser->loadIds(IDCHOOSER_ID_REQUIRED, RsGxsId());
QSignalMapper *signalMapper = new QSignalMapper(this);
connect(ui->postButton, SIGNAL(clicked()), signalMapper, SLOT(map()));
connect(ui->imageButton, SIGNAL(clicked()), signalMapper, SLOT(map()));
connect(ui->linkButton, SIGNAL(clicked()), signalMapper, SLOT(map()));
signalMapper->setMapping(ui->postButton, VIEW_POST);
signalMapper->setMapping(ui->imageButton, VIEW_IMAGE);
signalMapper->setMapping(ui->linkButton, VIEW_LINK);
connect(signalMapper, SIGNAL(mapped(int)), this, SLOT(setPage(int)));
ui->removeButton->hide();
/* load settings */
@ -93,11 +108,17 @@ void PostedCreatePostDialog::processSettings(bool load)
// state of ID Chooser combobox
int index = Settings->value("IDChooser", 0).toInt();
ui->idChooser->setCurrentIndex(index);
// load last used Stacked Page
setPage(Settings->value("viewPage", VIEW_POST).toInt());
} else {
// save settings
// state of ID Chooser combobox
Settings->setValue("IDChooser", ui->idChooser->currentIndex());
// store last used Page
Settings->setValue("viewPage", viewMode());
}
Settings->endGroup();
@ -222,19 +243,51 @@ void PostedCreatePostDialog::addPicture()
}
void PostedCreatePostDialog::on_postButton_clicked()
int PostedCreatePostDialog::viewMode()
{
ui->stackedWidget->setCurrentIndex(0);
if (ui->postButton->isChecked()) {
return VIEW_POST;
} else if (ui->imageButton->isChecked()) {
return VIEW_IMAGE;
} else if (ui->linkButton->isChecked()) {
return VIEW_LINK;
}
/* Default */
return VIEW_POST;
}
void PostedCreatePostDialog::on_imageButton_clicked()
void PostedCreatePostDialog::setPage(int viewMode)
{
ui->stackedWidget->setCurrentIndex(1);
}
switch (viewMode) {
case VIEW_POST:
ui->stackedWidget->setCurrentIndex(0);
void PostedCreatePostDialog::on_linkButton_clicked()
{
ui->stackedWidget->setCurrentIndex(2);
ui->postButton->setChecked(true);
ui->imageButton->setChecked(false);
ui->linkButton->setChecked(false);
break;
case VIEW_IMAGE:
ui->stackedWidget->setCurrentIndex(1);
ui->imageButton->setChecked(true);
ui->postButton->setChecked(false);
ui->linkButton->setChecked(false);
break;
case VIEW_LINK:
ui->stackedWidget->setCurrentIndex(2);
ui->linkButton->setChecked(true);
ui->postButton->setChecked(false);
ui->imageButton->setChecked(false);
break;
default:
setPage(VIEW_POST);
return;
}
}
void PostedCreatePostDialog::on_removeButton_clicked()

View file

@ -52,14 +52,13 @@ private:
private slots:
void createPost();
void addPicture();
void on_postButton_clicked();
void on_imageButton_clicked();
void on_linkButton_clicked();
void on_removeButton_clicked();
void fileHashingFinished(QList<HashedFile> hashedFiles);
void setPage(int viewMode);
private:
void processSettings(bool load);
int viewMode();
QString mLink;
QString mNotes;

View file

@ -246,36 +246,7 @@
<property name="verticalSpacing">
<number>2</number>
</property>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="imageLabel">
<property name="maximumSize">
<size>
<width>800</width>
<height>200</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>188</width>
<height>17</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1">
<item row="1" column="2">
<widget class="QToolButton" name="removeButton">
<property name="toolTip">
<string>Remove image</string>
@ -295,6 +266,42 @@
</property>
</widget>
</item>
<item row="1" column="1">
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>188</width>
<height>17</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="shareimagecheckBox">
<property name="text">
<string>Share Orginal Image</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="3">
<widget class="QLabel" name="imageLabel">
<property name="maximumSize">
<size>
<width>800</width>
<height>200</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
@ -418,6 +425,9 @@
<height>24</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item>
@ -435,6 +445,15 @@
<height>24</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="autoRepeat">
<bool>false</bool>
</property>
<property name="default">
<bool>false</bool>
</property>
</widget>
</item>
<item>
@ -452,6 +471,12 @@
<height>24</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
</widget>
</item>
<item>

View file

@ -93,13 +93,13 @@ UserNotify *PostedDialog::createUserNotify(QObject *parent)
QString PostedDialog::getHelpString() const
{
QString hlp_str = tr("<h1><img width=\"32\" src=\":/icons/help_64.png\">&nbsp;&nbsp;Posted</h1> \
<p>The posted service allows you to share internet links, that spread among Retroshare nodes like forums and \
QString hlp_str = tr("<h1><img width=\"32\" src=\":/icons/help_64.png\">&nbsp;&nbsp;Boards</h1> \
<p>The Boards service allows you to share images, blog posts & internet links, that spread among Retroshare nodes like forums and \
channels</p> \
<p>Links can be commented by subscribed users. A promotion system also gives the opportunity to \
<p>Posts can be commented by subscribed users. A promotion system also gives the opportunity to \
enlight important links.</p> \
<p>There is no restriction on which links are shared. Be careful when clicking on them.</p>\
<p>Posted links are kept for %1 days, and sync-ed over the last %2 days, unless you change this.</p>\
<p>Boards are kept for %1 days, and sync-ed over the last %2 days, unless you change this.</p>\
").arg(QString::number(rsPosted->getDefaultStoragePeriod()/86400)).arg(QString::number(rsPosted->getDefaultSyncPeriod()/86400));
return hlp_str ;
@ -109,9 +109,9 @@ QString PostedDialog::text(TextType type)
{
switch (type) {
case TEXT_NAME:
return tr("Posted Links");
return tr("Boards");
case TEXT_NEW:
return tr("Create Topic");
return tr("Create Board");
case TEXT_TODO:
return "<b>Open points:</b><ul>"
"<li>Subreddits/tag to posts support"
@ -120,13 +120,13 @@ QString PostedDialog::text(TextType type)
"</ul>";
case TEXT_YOUR_GROUP:
return tr("My Topics");
return tr("My Boards");
case TEXT_SUBSCRIBED_GROUP:
return tr("Subscribed Topics");
return tr("Subscribed Boards");
case TEXT_POPULAR_GROUP:
return tr("Popular Topics");
return tr("Popular Boards");
case TEXT_OTHER_GROUP:
return tr("Other Topics");
return tr("Other Boards");
}
return "";

View file

@ -37,7 +37,7 @@ public:
~PostedDialog();
virtual QIcon iconPixmap() const { return QIcon(IMAGE_POSTED) ; } //MainPage
virtual QString pageName() const { return tr("Links") ; } //MainPage
virtual QString pageName() const { return tr("Boards") ; } //MainPage
virtual QString helpText() const { return ""; } //MainPage
protected:

View file

@ -71,20 +71,20 @@ void PostedGroupDialog::initUi()
switch (mode())
{
case MODE_CREATE:
setUiText(UITYPE_SERVICE_HEADER, tr("Create New Topic"));
setUiText(UITYPE_SERVICE_HEADER, tr("Create New Board"));
setUiText(UITYPE_BUTTONBOX_OK, tr("Create"));
break;
case MODE_SHOW:
setUiText(UITYPE_SERVICE_HEADER, tr("Posted Topic"));
setUiText(UITYPE_SERVICE_HEADER, tr("Board"));
break;
case MODE_EDIT:
setUiText(UITYPE_SERVICE_HEADER, tr("Edit Topic"));
setUiText(UITYPE_BUTTONBOX_OK, tr("Update Topic"));
setUiText(UITYPE_SERVICE_HEADER, tr("Edit Board"));
setUiText(UITYPE_BUTTONBOX_OK, tr("Update Board"));
break;
}
setUiText(UITYPE_ADD_ADMINS_CHECKBOX, tr("Add Topic Admins"));
setUiText(UITYPE_CONTACTS_DOCK, tr("Select Topic Admins"));
setUiText(UITYPE_ADD_ADMINS_CHECKBOX, tr("Add Board Admins"));
setUiText(UITYPE_CONTACTS_DOCK, tr("Select Board Admins"));
}
QPixmap PostedGroupDialog::serviceImage()

View file

@ -43,7 +43,7 @@
#define DEBUG_POSTED_LIST_WIDGET
#define TOPIC_DEFAULT_IMAGE ":/icons/png/posted.png"
#define BOARD_DEFAULT_IMAGE ":/icons/png/posted.png"
/* View mode */
#define VIEW_MODE_CLASSIC 1
@ -351,13 +351,13 @@ void PostedListWidget::insertPostedDetails(const RsPostedGroup &group)
ui->subscribeToolButton->setHidden(IS_GROUP_SUBSCRIBED(group.mMeta.mSubscribeFlags)) ;
/* IMAGE */
QPixmap topicImage;
QPixmap boardImage;
if (group.mGroupImage.mData != NULL) {
GxsIdDetails::loadPixmapFromData(group.mGroupImage.mData, group.mGroupImage.mSize, topicImage,GxsIdDetails::ORIGINAL);
GxsIdDetails::loadPixmapFromData(group.mGroupImage.mData, group.mGroupImage.mSize, boardImage,GxsIdDetails::ORIGINAL);
} else {
topicImage = QPixmap(TOPIC_DEFAULT_IMAGE);
boardImage = QPixmap(BOARD_DEFAULT_IMAGE);
}
ui->logoLabel->setPixmap(topicImage);
ui->logoLabel->setPixmap(boardImage);
ui->namelabel->setText(QString::fromUtf8(group.mMeta.mGroupName.c_str()));
ui->poplabel->setText(QString::number( group.mMeta.mPop));

View file

@ -89,7 +89,7 @@
</property>
<property name="icon">
<iconset resource="Posted_images.qrc">
<normaloff>:/images/posted_24.png</normaloff>:/images/posted_24.png</iconset>
<normaloff>:/images/write.png</normaloff>:/images/write.png</iconset>
</property>
<property name="iconSize">
<size>
@ -285,7 +285,7 @@
<string notr="true"/>
</property>
<property name="title">
<string>Topic Details</string>
<string>Board Details</string>
</property>
<property name="flat">
<bool>false</bool>
@ -557,7 +557,7 @@ p, li { white-space: pre-wrap; }
<rect>
<x>0</x>
<y>0</y>
<width>614</width>
<width>98</width>
<height>16</height>
</rect>
</property>

View file

@ -1,16 +1,5 @@
<RCC>
<qresource prefix="/" >
<file>images/posted_16.png</file>
<file>images/posted_24.png</file>
<file>images/posted_32.png</file>
<file>images/posted_48.png</file>
<file>images/posted_64.png</file>
<file>images/posted_add_24.png</file>
<file>images/posted_add_32.png</file>
<file>images/posted_add_64.png</file>
<file>images/hot_24.png</file>
<file>images/new_24.png</file>
<file>images/posted_32_new.png</file>
<file>images/expand.png</file>
<file>images/decrease.png</file>
<file>images/down-arrow.png</file>
@ -29,5 +18,6 @@
<file>images/down-hover.png</file>
<file>images/up-hover.png</file>
<file>images/trashcan.png</file>
<file>images/write.png</file>
</qresource>
</RCC>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 954 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -25,8 +25,6 @@
#include "PulseItem.h"
#include <retroshare/rsphoto.h>
#include <algorithm>
#include <iostream>
@ -35,217 +33,48 @@
****/
/** Constructor */
PulseItem::PulseItem(PulseHolder *parent, const RsPhotoAlbum &album, const RsPhotoThumbnail &thumbnail)
:QWidget(NULL), mParent(parent), mType(PHOTO_ITEM_TYPE_ALBUM)
PulseItem::PulseItem(PulseHolder *parent, std::string path)
:QWidget(NULL), mParent(parent), mType(0)
{
setupUi(this);
setupUi(this);
setAttribute ( Qt::WA_DeleteOnClose, true );
setAttribute ( Qt::WA_DeleteOnClose, true );
mDetails = *( (RsPhotoPhoto *) &(album));
updateAlbumText(album);
updateImage(thumbnail);
setSelected(false);
}
PulseItem::PulseItem(PulseHolder *parent, const RsPhotoPhoto &photo, const RsPhotoThumbnail &thumbnail)
:QWidget(NULL), mParent(parent), mType(PHOTO_ITEM_TYPE_PHOTO)
{
setupUi(this);
setAttribute ( Qt::WA_DeleteOnClose, true );
mDetails = *( (RsPhotoPhoto *) &(photo));
updatePhotoText(photo);
updateImage(thumbnail);
setSelected(false);
}
PulseItem::PulseItem(PulseHolder *parent, std::string path) // for new photos.
:QWidget(NULL), mParent(parent), mType(PHOTO_ITEM_TYPE_NEW)
{
setupUi(this);
setAttribute ( Qt::WA_DeleteOnClose, true );
#if 0
QString dummyString("dummytext");
titleLabel->setText(QString("NEW PHOTO"));
fromBoldLabel->setText(QString("From:"));
fromLabel->setText(QString("Ourselves"));
statusBoldLabel->setText(QString("Status:"));
statusLabel->setText(QString("new photo"));
dateBoldLabel->setText(QString("Date:"));
dateLabel->setText(QString("now"));
int width = 120;
int height = 120;
//QPixmap qtn = QPixmap(QString::fromStdString(path)).scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
QPixmap qtn = QPixmap(QString::fromStdString(path)).scaled(width, height, Qt::KeepAspectRatio, Qt::SmoothTransformation);
imgLabel->setPixmap(qtn);
setSelected(false);
#endif
}
void PulseItem::updateAlbumText(const RsPhotoAlbum &album)
{
#if 0
QString dummyString("dummytext");
titleLabel->setText(QString("TITLE"));
fromBoldLabel->setText(QString("From:"));
fromLabel->setText(QString("Unknown"));
statusBoldLabel->setText(QString("Status:"));
statusLabel->setText(QString("new photo"));
dateBoldLabel->setText(QString("Date:"));
dateLabel->setText(QString("now"));
//QDateTime qtime;
//qtime.setTime_t(msg.ts);
//QString timestamp = qtime.toString("dd.MMMM yyyy hh:mm");
//timestamplabel->setText(timestamp);
dateBoldLabel->setText(dummyString);
dateLabel->setText(dummyString);
#endif
}
void PulseItem::updatePhotoText(const RsPhotoPhoto &photo)
{
#if 0
QString dummyString("dummytext");
titleLabel->setText(QString("TITLE"));
fromBoldLabel->setText(QString("From:"));
fromLabel->setText(QString("Unknown"));
statusBoldLabel->setText(QString("Status:"));
statusLabel->setText(QString("new photo"));
dateBoldLabel->setText(QString("Date:"));
dateLabel->setText(QString("now"));
#endif
}
void PulseItem::updateImage(const RsPhotoThumbnail &thumbnail)
{
#if 0
if (thumbnail.data != NULL)
{
QPixmap qtn;
qtn.loadFromData(thumbnail.data, thumbnail.size, thumbnail.type.c_str());
imgLabel->setPixmap(qtn);
}
#endif
}
bool PulseItem::getPhotoThumbnail(RsPhotoThumbnail &nail)
{
#if 0
const QPixmap *tmppix = imgLabel->pixmap();
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;
#endif
return false;
}
void PulseItem::removeItem()
{
#if 0
#ifdef DEBUG_ITEM
std::cerr << "PulseItem::removeItem()";
std::cerr << std::endl;
#endif
hide();
if (mParent)
{
mParent->deletePulseItem(this, mType);
}
#endif
}
void PulseItem::setSelected(bool on)
{
#if 0
mSelected = on;
if (mSelected)
{
mParent->notifySelection(this, mType);
frame->setStyleSheet("QFrame#frame{border: 2px solid #55CC55;\nbackground: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #55EE55, stop: 1 #CCCCCC);\nborder-radius: 10px}");
}
else
{
frame->setStyleSheet("QFrame#frame{border: 2px solid #CCCCCC;\nbackground: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #EEEEEE, stop: 1 #CCCCCC);\nborder-radius: 10px}");
}
update();
#endif
}
bool PulseItem::isSelected()
{
return mSelected;
return mSelected;
}
void PulseItem::mousePressEvent(QMouseEvent *event)
{
/* We can be very cunning here?
* grab out position.
* flag ourselves as selected.
* then pass the mousePressEvent up for handling by the parent
*/
/* We can be very cunning here?
* grab out position.
* flag ourselves as selected.
* then pass the mousePressEvent up for handling by the parent
*/
QPoint pos = event->pos();
QPoint pos = event->pos();
std::cerr << "PulseItem::mousePressEvent(" << pos.x() << ", " << pos.y() << ")";
std::cerr << std::endl;
std::cerr << "PulseItem::mousePressEvent(" << pos.x() << ", " << pos.y() << ")";
std::cerr << std::endl;
setSelected(true);
setSelected(true);
QWidget::mousePressEvent(event);
QWidget::mousePressEvent(event);
}
const QPixmap *PulseItem::getPixmap()
{
#if 0
return imgLabel->pixmap();
#endif
return NULL;
return NULL;
}

View file

@ -23,61 +23,37 @@
#include "ui_PulseItem.h"
#include <retroshare/rsphoto.h>
class PulseItem;
class PulseHolder
{
public:
public:
virtual void deletePulseItem(PulseItem *, uint32_t ptype) = 0;
virtual void notifySelection(PulseItem *item, int ptype) = 0;
};
#define PHOTO_ITEM_TYPE_ALBUM 0x0001
#define PHOTO_ITEM_TYPE_PHOTO 0x0002
#define PHOTO_ITEM_TYPE_NEW 0x0003
class PulseItem : public QWidget, private Ui::PulseItem
{
Q_OBJECT
public:
PulseItem(PulseHolder *parent, const RsPhotoAlbum &album, const RsPhotoThumbnail &thumbnail);
PulseItem(PulseHolder *parent, const RsPhotoPhoto &photo, const RsPhotoThumbnail &thumbnail);
PulseItem(PulseHolder *parent, std::string url); // for new photos.
PulseItem(PulseHolder *parent, std::string url);
bool getPhotoThumbnail(RsPhotoThumbnail &nail);
void removeItem();
void removeItem();
void setSelected(bool on);
bool isSelected();
const QPixmap *getPixmap();
// details are public - so that can be easily edited.
RsPhotoPhoto mDetails;
//private slots:
void setSelected(bool on);
bool isSelected();
const QPixmap *getPixmap();
protected:
void mousePressEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event);
private:
void updateAlbumText(const RsPhotoAlbum &album);
void updatePhotoText(const RsPhotoPhoto &photo);
void updateImage(const RsPhotoThumbnail &thumbnail);
PulseHolder *mParent;
uint32_t mType;
bool mSelected;
PulseHolder *mParent;
uint32_t mType;
bool mSelected;
};
#endif

View file

@ -31,6 +31,8 @@
#include "gui/TheWire/PulseItem.h"
#include "gui/TheWire/PulseAddDialog.h"
#define IMAGE_WIRE ":/images/kgames.png"
class WireDialog : public MainPage, public PulseHolder
{
Q_OBJECT
@ -38,6 +40,10 @@ class WireDialog : public MainPage, public PulseHolder
public:
WireDialog(QWidget *parent = 0);
virtual QIcon iconPixmap() const { return QIcon(IMAGE_WIRE) ; }
virtual QString pageName() const { return tr("The Wire") ; }
virtual QString helpText() const { return ""; }
virtual void deletePulseItem(PulseItem *, uint32_t type);
virtual void notifySelection(PulseItem *item, int ptype);

View file

@ -436,8 +436,8 @@ void WikiDialog::requestWikiPage(const RsGxsGrpMsgIdPair &msgId)
uint32_t token;
GxsMsgReq msgIds;
std::vector<RsGxsMessageId> &vect_msgIds = msgIds[msgId.first];
vect_msgIds.push_back(msgId.second);
std::set<RsGxsMessageId> &set_msgIds = msgIds[msgId.first];
set_msgIds.insert(msgId.second);
mWikiQueue->requestMsgInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, msgIds, WIKIDIALOG_WIKI_PAGE);
}
@ -698,10 +698,10 @@ void WikiDialog::updateDisplay(bool complete)
requestGroupMeta();
} else {
/* Update all groups of changed messages */
std::map<RsGxsGroupId, std::vector<RsGxsMessageId> > msgIds;
std::map<RsGxsGroupId, std::set<RsGxsMessageId> > msgIds;
getAllMsgIds(msgIds);
std::map<RsGxsGroupId, std::vector<RsGxsMessageId> >::iterator msgIt;
std::map<RsGxsGroupId, std::set<RsGxsMessageId> >::iterator msgIt;
for (msgIt = msgIds.begin(); msgIt != msgIds.end(); ++msgIt) {
wikiGroupChanged(QString::fromStdString(msgIt->first.toStdString()));
}

View file

@ -32,7 +32,7 @@
#include <map>
#define IMAGE_WIKI ":/images/wikibook_32.png"
#define IMAGE_WIKI ":/icons/png/wiki.png"
class WikiAddDialog;
class WikiEditDialog;

View file

@ -622,8 +622,8 @@ void WikiEditDialog::requestPage(const RsGxsGrpMsgIdPair &msgId)
opts.mReqType = GXS_REQUEST_TYPE_MSG_DATA;
GxsMsgReq msgIds;
std::vector<RsGxsMessageId> &vect_msgIds = msgIds[msgId.first];
vect_msgIds.push_back(msgId.second);
std::set<RsGxsMessageId> &set_msgIds = msgIds[msgId.first];
set_msgIds.insert(msgId.second);
uint32_t token;
mWikiQueue->requestMsgInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, msgIds, WIKIEDITDIALOG_PAGE);

View file

@ -53,7 +53,7 @@ public:
//GxsChannelPostItem(FeedHolder *feedHolder, uint32_t feedId, const RsGxsChannelPost &post, bool isHome, bool autoUpdate);
virtual ~GxsChannelPostItem();
uint64_t uniqueIdentifier() const override { hash_64bits("GxsChannelPostItem " + messageId().toStdString()) ; }
uint64_t uniqueIdentifier() const override { return hash_64bits("GxsChannelPostItem " + messageId().toStdString()) ; }
bool setGroup(const RsGxsChannelGroup &group, bool doFill = true);
bool setPost(const RsGxsChannelPost &post, bool doFill = true);

View file

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>1433</width>
<height>541</height>
<width>922</width>
<height>187</height>
</rect>
</property>
<layout class="QGridLayout" name="gxsChannelPostItem_GLayout">
@ -127,6 +127,19 @@
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="subjectHLayout"/>
</item>

View file

@ -141,15 +141,15 @@ void PostedGroupItem::fill()
GxsIdDetails::loadPixmapFromData(mGroup.mGroupImage.mData, mGroup.mGroupImage.mSize, postedImage,GxsIdDetails::ORIGINAL);
ui->logoLabel->setPixmap(QPixmap(postedImage));
} else {
ui->logoLabel->setPixmap(QPixmap(":/images/posted_64.png"));
ui->logoLabel->setPixmap(QPixmap(":/icons/png/posted.png"));
}
//TODO - nice icon for subscribed group
// if (IS_GROUP_PUBLISHER(mGroup.mMeta.mSubscribeFlags)) {
// ui->logoLabel->setPixmap(QPixmap(":/images/posted_64.png"));
// ui->logoLabel->setPixmap(QPixmap(":/icons/png/posted.png"));
// } else {
// ui->logoLabel->setPixmap(QPixmap(":/images/posted_64.png"));
// ui->logoLabel->setPixmap(QPixmap(":/icons/png/posted.png"));
// }
if (IS_GROUP_SUBSCRIBED(mGroup.mMeta.mSubscribeFlags)) {
@ -160,11 +160,11 @@ void PostedGroupItem::fill()
// if (mIsNew)
// {
ui->titleLabel->setText(tr("New Posted"));
ui->titleLabel->setText(tr("New Board"));
// }
// else
// {
// ui->titleLabel->setText(tr("Updated Posted"));
// ui->titleLabel->setText(tr("Updated Board"));
// }
if (mIsHome)

View file

@ -125,7 +125,10 @@
<string/>
</property>
<property name="pixmap">
<pixmap resource="../Posted/Posted_images.qrc">:/images/posted_64.png</pixmap>
<pixmap resource="../icons.qrc">:/icons/png/posted.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
@ -147,7 +150,7 @@
</font>
</property>
<property name="text">
<string notr="true">Posted</string>
<string notr="true">Board</string>
</property>
</widget>
</item>
@ -298,7 +301,7 @@
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Posted Description</string>
<string>Board Description</string>
</property>
<layout class="QHBoxLayout">
<item>
@ -321,7 +324,7 @@
</property>
<property name="text">
<string notr="true">Description
of Posted</string>
of Board</string>
</property>
</widget>
</item>

View file

@ -160,6 +160,15 @@ void GxsGroupDialog::init()
Settings->loadWidgetInformation(this);
}
void GxsGroupDialog::injectExtraWidget(QWidget *widget)
{
// add extra widget into layout.
QVBoxLayout *vbox = new QVBoxLayout();
vbox->addWidget(widget);
vbox->addStretch(1);
ui.extraFrame->setLayout(vbox);
}
QIcon GxsGroupDialog::serviceWindowIcon()
{
return qApp->windowIcon();

View file

@ -172,6 +172,13 @@ protected:
virtual QPixmap serviceImage() = 0;
virtual QIcon serviceWindowIcon();
/*!
* Inject Extra Widget for additional Group configuration options.
* NB: These are only inserted for createMode currently.
* @param widget Addtional widget which is added to extraFrame.
*/
void injectExtraWidget(QWidget *widget);
/*!
* \brief setUiToolTip/setUiText
* Sets the text and tooltip of some parts of the UI

View file

@ -93,9 +93,9 @@ void GroupShareKey::setTyp()
if (!rsPosted)
return;
ui->headerFrame->setHeaderImage(QPixmap(":/images/posted_64.png"));
ui->headerFrame->setHeaderText(tr("Share topic admin permissions"));
ui->sharekeyinfo_label->setText(tr("You can allow your friends to edit the topic. Select them in the list below. Note: it is not possible to revoke Posted admin permissions."));
ui->headerFrame->setHeaderImage(QPixmap(":/icons/png/posted.png"));
ui->headerFrame->setHeaderText(tr("Share board admin permissions"));
ui->sharekeyinfo_label->setText(tr("You can allow your friends to edit the board. Select them in the list below. Note: it is not possible to revoke Board admin permissions."));
}
else

View file

@ -288,9 +288,11 @@
<file>icons/png/newsfeed2.png</file>
<file>icons/png/postedlinks.png</file>
<file>icons/png/people2.png</file>
<file>icons/png/photo.png</file>
<file>icons/png/bandwidth.png</file>
<file>icons/png/options2.png</file>
<file>icons/png/exit2.png</file>
<file>icons/png/wiki.png</file>
<file>icons/svg/addstickers.svg</file>
<file>icons/png/addstickers.png</file>
<file>icons/textedit/bold.png</file>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View file

@ -0,0 +1,10 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 477.867 477.867" style="enable-background:new 0 0 477.867 477.867;" xml:space="preserve" width="512px" height="512px"><g transform="matrix(0.922745 0 0 0.922745 18.4589 18.4589)"><g>
<g>
<path d="M426.667,68.267H51.2c-28.277,0-51.2,22.923-51.2,51.2V358.4c0,28.277,22.923,51.2,51.2,51.2h375.467 c28.277,0,51.2-22.923,51.2-51.2V119.467C477.867,91.19,454.944,68.267,426.667,68.267z M443.733,266.001L336.333,158.601 c-6.664-6.663-17.468-6.663-24.132,0L170.667,300.134l-56.201-56.201c-6.664-6.663-17.468-6.663-24.132,0l-56.201,56.201V119.467 c0-9.426,7.641-17.067,17.067-17.067h375.467c9.426,0,17.067,7.641,17.067,17.067V266.001z" data-original="#000000" class="active-path" data-old_color="#000000" fill="#039BD5"/>
</g>
</g><g>
<g>
<circle cx="153.6" cy="187.733" r="51.2" data-original="#000000" class="active-path" data-old_color="#000000" fill="#039BD5"/>
</g>
</g></g> </svg>

After

Width:  |  Height:  |  Size: 1 KiB

View file

@ -0,0 +1,14 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve" width="512px" height="512px" class=""><g transform="matrix(0.895338 0 0 0.895338 26.7934 26.7934)"><g>
<g>
<path d="M467,0H361v120h151V45C512,20.186,491.814,0,467,0z" data-original="#000000" class="active-path" data-old_color="#000000" fill="#039BD5"/>
</g>
</g><g>
<g>
<path d="M45,0C20.186,0,0,20.186,0,45v75h331V0H45z M106,90H76c-8.291,0-15-6.709-15-15s6.709-15,15-15h30c8.291,0,15,6.709,15,15 S114.291,90,106,90z M196,90h-30c-8.291,0-15-6.709-15-15s6.709-15,15-15h30c8.291,0,15,6.709,15,15S204.291,90,196,90z M286,90 h-30c-8.291,0-15-6.709-15-15s6.709-15,15-15h30c8.291,0,15,6.709,15,15S294.291,90,286,90z" data-original="#000000" class="active-path" data-old_color="#000000" fill="#039BD5"/>
</g>
</g><g>
<g>
<path d="M0,150v317c0,24.814,20.186,45,45,45h422c24.814,0,45-20.186,45-45V150H0z M406,240h-19.195l-56.581,170.746 C328.188,416.869,322.46,421,316,421c-6.46,0-12.188-4.131-14.224-10.254L256,272.432l-45.776,138.314 c-4.072,12.246-24.375,12.246-28.447,0L125.195,240H106c-8.291,0-15-6.709-15-15s6.709-15,15-15h60c8.291,0,15,6.709,15,15 s-6.709,15-15,15h-9.194L196,358.568L235.194,240H226c-8.291,0-15-6.709-15-15s6.709-15,15-15h60c8.291,0,15,6.709,15,15 s-6.709,15-15,15h-9.194L316,358.568L355.194,240H346c-8.291,0-15-6.709-15-15s6.709-15,15-15h60c8.291,0,15,6.709,15,15 S414.291,240,406,240z" data-original="#000000" class="active-path" data-old_color="#000000" fill="#039BD5"/>
</g>
</g></g> </svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -30,7 +30,7 @@ PostedPage::PostedPage(QWidget * parent, Qt::WindowFlags flags)
setAttribute(Qt::WA_QuitOnClose, false);
/* Initialize GroupFrameSettingsWidget */
ui->groupFrameSettingsWidget->setOpenAllInNewTabText(tr("Open each topic in a new tab"));
ui->groupFrameSettingsWidget->setOpenAllInNewTabText(tr("Open each board in a new tab"));
ui->groupFrameSettingsWidget->setType(GroupFrameSettings::Posted);
}

View file

@ -39,7 +39,7 @@ public:
virtual void load();
virtual QPixmap iconPixmap() const { return QPixmap(":/icons/settings/posted.svg") ; }
virtual QString pageName() const { return tr("Links") ; }
virtual QString pageName() const { return tr("Boards") ; }
virtual QString helpText() const { return ""; }
private:

View file

@ -114,6 +114,11 @@ CONFIG += gxscircles
#CONFIG += framecatcher
#CONFIG += blogs
## To enable unfinished services
#CONFIG += wikipoos
#CONFIG += gxsthewire
#CONFIG += gxsphotoshare
DEFINES += RS_RELEASE_VERSION
RCC_DIR = temp/qrc
UI_DIR = temp/ui
@ -342,6 +347,7 @@ openbsd-* {
wikipoos {
PRE_TARGETDEPS *= $$OUT_PWD/../../supportlibs/pegmarkdown/lib/libpegmarkdown.a
LIBS *= $$OUT_PWD/../../supportlibs/pegmarkdown/lib/libpegmarkdown.a
LIBS *= -lglib-2.0
}
# Tor controller
@ -1147,9 +1153,12 @@ unfinished_services {
gxsphotoshare {
#DEFINES += RS_USE_PHOTOSHARE
#DEFINES += RS_USE_PHOTOSHARE # to enable in unfinished.
DEFINES += RS_USE_PHOTO # enable in MainWindow
HEADERS += \
gui/PhotoShare/AlbumGroupDialog.h \
gui/PhotoShare/AlbumExtra.h \
gui/PhotoShare/PhotoDrop.h \
gui/PhotoShare/AlbumItem.h \
gui/PhotoShare/AlbumDialog.h \
@ -1163,6 +1172,7 @@ gxsphotoshare {
gui/PhotoShare/AddCommentDialog.h
FORMS += \
gui/PhotoShare/AlbumExtra.ui \
gui/PhotoShare/PhotoItem.ui \
gui/PhotoShare/PhotoDialog.ui \
gui/PhotoShare/AlbumItem.ui \
@ -1174,6 +1184,8 @@ gxsphotoshare {
gui/PhotoShare/AddCommentDialog.ui
SOURCES += \
gui/PhotoShare/AlbumGroupDialog.cpp \
gui/PhotoShare/AlbumExtra.cpp \
gui/PhotoShare/PhotoItem.cpp \
gui/PhotoShare/PhotoDialog.cpp \
gui/PhotoShare/PhotoDrop.cpp \
@ -1192,6 +1204,7 @@ gxsphotoshare {
wikipoos {
DEFINES += RS_USE_WIKI
DEPENDPATH += ../../supportlibs/pegmarkdown
INCLUDEPATH += ../../supportlibs/pegmarkdown
@ -1218,6 +1231,8 @@ wikipoos {
gxsthewire {
DEFINES += RS_USE_WIRE
HEADERS += gui/TheWire/PulseItem.h \
gui/TheWire/WireDialog.h \
gui/TheWire/PulseAddDialog.h \