From 7cf17569c5b19d456d19c7f8d24d6ea62ed52071 Mon Sep 17 00:00:00 2001 From: defnax Date: Wed, 30 Jan 2019 14:33:50 +0100 Subject: [PATCH 1/9] Added attach picture for posted links --- libretroshare/src/retroshare/rsposted.h | 24 +- libretroshare/src/rsitems/rsposteditems.cc | 47 +- libretroshare/src/rsitems/rsposteditems.h | 12 +- libretroshare/src/services/p3posted.cc | 7 +- .../src/gui/Posted/PostedCreatePostDialog.cpp | 29 + .../src/gui/Posted/PostedCreatePostDialog.h | 4 + .../src/gui/Posted/PostedCreatePostDialog.ui | 225 +++-- retroshare-gui/src/gui/Posted/PostedItem.cpp | 57 +- retroshare-gui/src/gui/Posted/PostedItem.h | 3 +- retroshare-gui/src/gui/Posted/PostedItem.ui | 815 ++++++++++++------ .../src/gui/Posted/Posted_images.qrc | 6 + .../src/gui/Posted/images/comments.png | Bin 0 -> 3902 bytes .../src/gui/Posted/images/decrease.png | Bin 0 -> 3321 bytes .../src/gui/Posted/images/down-arrow.png | Bin 0 -> 2005 bytes .../src/gui/Posted/images/expand.png | Bin 0 -> 3995 bytes .../src/gui/Posted/images/thumb-default.png | Bin 0 -> 10127 bytes .../src/gui/Posted/images/up-arrow.png | Bin 0 -> 1925 bytes .../src/gui/qss/stylesheet/Standard.qss | 127 ++- 18 files changed, 993 insertions(+), 363 deletions(-) create mode 100644 retroshare-gui/src/gui/Posted/images/comments.png create mode 100644 retroshare-gui/src/gui/Posted/images/decrease.png create mode 100644 retroshare-gui/src/gui/Posted/images/down-arrow.png create mode 100644 retroshare-gui/src/gui/Posted/images/expand.png create mode 100644 retroshare-gui/src/gui/Posted/images/thumb-default.png create mode 100644 retroshare-gui/src/gui/Posted/images/up-arrow.png diff --git a/libretroshare/src/retroshare/rsposted.h b/libretroshare/src/retroshare/rsposted.h index 60b510d55..93f69201e 100644 --- a/libretroshare/src/retroshare/rsposted.h +++ b/libretroshare/src/retroshare/rsposted.h @@ -25,10 +25,12 @@ #include #include #include +#include #include "retroshare/rstokenservice.h" #include "retroshare/rsgxsifacehelper.h" #include "retroshare/rsgxscommon.h" +#include "serialiser/rsserializable.h" /* The Main Interface Class - for information about your Posted */ class RsPosted; @@ -42,6 +44,7 @@ class RsPostedGroup RsGroupMetaData mMeta; std::string mDescription; + }; @@ -52,7 +55,7 @@ class RsPostedGroup #define RSPOSTED_PERIOD_YEAR 1 #define RSPOSTED_PERIOD_MONTH 2 #define RSPOSTED_PERIOD_WEEK 3 -#define RSPOSTED_PERIOD_DAY 4 +#define RSPOSTED_PERIOD_DAY 4 #define RSPOSTED_PERIOD_HOUR 5 #define RSPOSTED_VIEWMODE_LATEST 1 @@ -102,7 +105,6 @@ virtual bool updateGroup(uint32_t &token, RsPostedGroup &group) = 0; }; - class RsPostedPost { public: @@ -137,6 +139,24 @@ class RsPostedPost double mHotScore; double mTopScore; double mNewScore; + + RsGxsImage mImage; + + /// @see RsSerializable + /*virtual void serial_process( RsGenericSerializer::SerializeJob j, + RsGenericSerializer::SerializeContext& ctx ) + { + RS_SERIAL_PROCESS(mImage); + RS_SERIAL_PROCESS(mMeta); + RS_SERIAL_PROCESS(mLink); + RS_SERIAL_PROCESS(mHaveVoted); + RS_SERIAL_PROCESS(mUpVotes); + RS_SERIAL_PROCESS(mDownVotes); + RS_SERIAL_PROCESS(mComments); + RS_SERIAL_PROCESS(mHotScore); + RS_SERIAL_PROCESS(mTopScore); + RS_SERIAL_PROCESS(mNewScore); + }*/ }; diff --git a/libretroshare/src/rsitems/rsposteditems.cc b/libretroshare/src/rsitems/rsposteditems.cc index 67a5a9873..81455f284 100644 --- a/libretroshare/src/rsitems/rsposteditems.cc +++ b/libretroshare/src/rsitems/rsposteditems.cc @@ -22,15 +22,18 @@ #include "rsitems/rsposteditems.h" #include "serialiser/rstypeserializer.h" + + void RsGxsPostedPostItem::serial_process(RsGenericSerializer::SerializeJob j,RsGenericSerializer::SerializeContext& ctx) { RsTypeSerializer::serial_process(j,ctx,TLV_TYPE_STR_LINK,mPost.mLink,"mPost.mLink") ; RsTypeSerializer::serial_process(j,ctx,TLV_TYPE_STR_MSG ,mPost.mNotes,"mPost.mNotes") ; + RsTypeSerializer::serial_process(j,ctx,mImage,"mImage") ; } void RsGxsPostedGroupItem::serial_process(RsGenericSerializer::SerializeJob j,RsGenericSerializer::SerializeContext& ctx) { - RsTypeSerializer::serial_process(j,ctx,TLV_TYPE_STR_DESCR ,mGroup.mDescription,"mGroup.mDescription") ; + RsTypeSerializer::serial_process(j,ctx,TLV_TYPE_STR_DESCR ,mGroup.mDescription,"mGroup.mDescription") ; } RsItem *RsGxsPostedSerialiser::create_item(uint16_t service_id,uint8_t item_subtype) const @@ -47,12 +50,54 @@ RsItem *RsGxsPostedSerialiser::create_item(uint16_t service_id,uint8_t item_subt } } +bool RsGxsPostedPostItem::fromPostedPost(RsPostedPost &post, bool moveImage) +{ + clear(); + + mPost = post; + meta = post.mMeta; + + if (moveImage) + { + mImage.binData.bin_data = post.mImage.mData; + mImage.binData.bin_len = post.mImage.mSize; + post.mImage.shallowClear(); + } + else + { + mImage.binData.setBinData(post.mImage.mData, post.mImage.mSize); + } + + return true; +} + +bool RsGxsPostedPostItem::toPostedPost(RsPostedPost &post, bool moveImage) +{ + post = mPost; + post.mMeta = meta; + + if (moveImage) + { + post.mImage.take((uint8_t *) mImage.binData.bin_data, mImage.binData.bin_len); + // mImage doesn't have a ShallowClear at the moment! + mImage.binData.TlvShallowClear(); + } + else + { + post.mImage.copy((uint8_t *) mImage.binData.bin_data, mImage.binData.bin_len); + } + + return true; +} + void RsGxsPostedPostItem::clear() { mPost.mLink.clear(); mPost.mNotes.clear(); + mImage.TlvClear(); } void RsGxsPostedGroupItem::clear() { mGroup.mDescription.clear(); } + diff --git a/libretroshare/src/rsitems/rsposteditems.h b/libretroshare/src/rsitems/rsposteditems.h index 62ab7a6af..ef88289b5 100644 --- a/libretroshare/src/rsitems/rsposteditems.h +++ b/libretroshare/src/rsitems/rsposteditems.h @@ -25,6 +25,7 @@ #include "rsitems/rsserviceids.h" #include "rsitems/rsgxscommentitems.h" #include "rsitems/rsgxsitems.h" +#include "serialiser/rstlvimage.h" #include "retroshare/rsposted.h" @@ -38,9 +39,12 @@ public: virtual ~RsGxsPostedGroupItem() {} void clear(); + virtual void serial_process(RsGenericSerializer::SerializeJob j,RsGenericSerializer::SerializeContext& ctx); - + RsPostedGroup mGroup; + + }; class RsGxsPostedPostItem : public RsGxsMsgItem @@ -51,8 +55,14 @@ public: void clear(); virtual void serial_process(RsGenericSerializer::SerializeJob j,RsGenericSerializer::SerializeContext& ctx); + + // Slightly unusual structure. + // use conversion functions to transform: + bool fromPostedPost(RsPostedPost &post, bool moveImage); + bool toPostedPost(RsPostedPost &post, bool moveImage); RsPostedPost mPost; + RsTlvImage mImage; }; class RsGxsPostedSerialiser : public RsGxsCommentSerialiser diff --git a/libretroshare/src/services/p3posted.cc b/libretroshare/src/services/p3posted.cc index 4e8ddacf2..d50c0624c 100644 --- a/libretroshare/src/services/p3posted.cc +++ b/libretroshare/src/services/p3posted.cc @@ -123,6 +123,7 @@ bool p3Posted::getPostData(const uint32_t &token, std::vector &msg { RsPostedPost msg = postItem->mPost; msg.mMeta = postItem->meta; + postItem->toPostedPost(msg, true); msg.calculateScores(now); msgs.push_back(msg); @@ -291,8 +292,10 @@ bool p3Posted::createPost(uint32_t &token, RsPostedPost &msg) std::cerr << std::endl; RsGxsPostedPostItem* msgItem = new RsGxsPostedPostItem(); - msgItem->mPost = msg; - msgItem->meta = msg.mMeta; + //msgItem->mPost = msg; + //msgItem->meta = msg.mMeta; + msgItem->fromPostedPost(msg, true); + RsGenExchange::publishMsg(token, msgItem); return true; diff --git a/retroshare-gui/src/gui/Posted/PostedCreatePostDialog.cpp b/retroshare-gui/src/gui/Posted/PostedCreatePostDialog.cpp index ba622ed17..cd21d3b6c 100644 --- a/retroshare-gui/src/gui/Posted/PostedCreatePostDialog.cpp +++ b/retroshare-gui/src/gui/Posted/PostedCreatePostDialog.cpp @@ -18,13 +18,16 @@ * * *******************************************************************************/ + #include #include #include "PostedCreatePostDialog.h" #include "ui_PostedCreatePostDialog.h" +#include "util/misc.h" #include "util/TokenQueue.h" #include "gui/settings/rsharesettings.h" +#include #include @@ -37,6 +40,7 @@ PostedCreatePostDialog::PostedCreatePostDialog(TokenQueue* tokenQ, RsPosted *pos Settings->loadWidgetInformation(this); connect(ui->submitButton, SIGNAL(clicked()), this, SLOT(createPost())); connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(close())); + connect(ui->pushButton, SIGNAL(clicked() ), this , SLOT(addPicture())); ui->headerFrame->setHeaderImage(QPixmap(":/images/posted_64.png")); ui->headerFrame->setHeaderText(tr("Submit a new Post")); @@ -78,6 +82,18 @@ void PostedCreatePostDialog::createPost() post.mMeta.mMsgName = std::string(ui->titleEdit->text().toUtf8()); post.mMeta.mAuthorId = authorId; + QByteArray ba; + QBuffer buffer(&ba); + + if(!picture.isNull()) + { + // send posted image + + buffer.open(QIODevice::WriteOnly); + picture.save(&buffer, "PNG"); // writes image into ba in PNG format + post.mImage.copy((uint8_t *) ba.data(), ba.size()); + } + if(ui->titleEdit->text().isEmpty()) { /* error message */ QMessageBox::warning(this, "RetroShare", tr("Please add a Title"), QMessageBox::Ok, QMessageBox::Ok); @@ -90,3 +106,16 @@ void PostedCreatePostDialog::createPost() accept(); } + +void PostedCreatePostDialog::addPicture() +{ + QPixmap img = misc::getOpenThumbnailedPicture(this, tr("Load thumbnail picture"), 800, 600); + + if (img.isNull()) + return; + + picture = img; + + // to show the selected + ui->imageLabel->setPixmap(picture); +} \ No newline at end of file diff --git a/retroshare-gui/src/gui/Posted/PostedCreatePostDialog.h b/retroshare-gui/src/gui/Posted/PostedCreatePostDialog.h index f4b6c96a3..587b3f957 100644 --- a/retroshare-gui/src/gui/Posted/PostedCreatePostDialog.h +++ b/retroshare-gui/src/gui/Posted/PostedCreatePostDialog.h @@ -41,9 +41,13 @@ public: */ explicit PostedCreatePostDialog(TokenQueue* tokenQ, RsPosted* posted, const RsGxsGroupId& grpId, QWidget *parent = 0); ~PostedCreatePostDialog(); + + QPixmap picture; private slots: void createPost(); + void addPicture(); + private: QString mLink; diff --git a/retroshare-gui/src/gui/Posted/PostedCreatePostDialog.ui b/retroshare-gui/src/gui/Posted/PostedCreatePostDialog.ui index d8128b199..d9d909887 100644 --- a/retroshare-gui/src/gui/Posted/PostedCreatePostDialog.ui +++ b/retroshare-gui/src/gui/Posted/PostedCreatePostDialog.ui @@ -7,7 +7,7 @@ 0 0 575 - 371 + 467 @@ -47,7 +47,7 @@ QFrame::Raised - + @@ -128,75 +128,108 @@ - - - - - - - - - Title - - - - - - - Link - - - - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::MinimumExpanding - - - - 78 - 17 - - - - - - - - Signed by: - - - - - - - + + + 0 + + + + Picture + + + + + + Qt::Horizontal + + + + 447 + 20 + + + + + + + + Add Picture + + + + + + + Preview + + + + + + + 250 + 200 + + + + + 800 + 200 + + + + + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Notes + + + + + + + + - - - - - - Notes - - - - - - - - - + Qt::Horizontal @@ -209,14 +242,20 @@ - + + + + 0 + 0 + + Submit - + @@ -232,12 +271,51 @@ + + + + + + Title + + + + + + + + + + Link + + + + + + + + + + + + + Post as + + + + + + + StyledLabel + QLabel +
gui/common/StyledLabel.h
+
HeaderFrame QFrame @@ -254,11 +332,6 @@ QComboBox
gui/gxs/GxsIdChooser.h
- - StyledLabel - QLabel -
gui/common/StyledLabel.h
-
diff --git a/retroshare-gui/src/gui/Posted/PostedItem.cpp b/retroshare-gui/src/gui/Posted/PostedItem.cpp index 4304561d7..79db72b32 100644 --- a/retroshare-gui/src/gui/Posted/PostedItem.cpp +++ b/retroshare-gui/src/gui/Posted/PostedItem.cpp @@ -24,6 +24,8 @@ #include "rshare.h" #include "PostedItem.h" #include "gui/feeds/FeedHolder.h" +#include "util/misc.h" + #include "ui_PostedItem.h" #include @@ -83,6 +85,7 @@ void PostedItem::setup() ui->fromLabel->clear(); ui->siteLabel->clear(); ui->newCommentLabel->hide(); + ui->frame_picture->hide(); ui->commLabel->hide(); /* general ones */ @@ -94,6 +97,7 @@ void PostedItem::setup() connect(ui->commentButton, SIGNAL( clicked()), this, SLOT(loadComments())); connect(ui->voteUpButton, SIGNAL(clicked()), this, SLOT(makeUpVote())); connect(ui->voteDownButton, SIGNAL(clicked()), this, SLOT( makeDownVote())); + connect(ui->expandButton, SIGNAL(clicked()), this, SLOT( toggle())); connect(ui->readButton, SIGNAL(toggled(bool)), this, SLOT(readToggled(bool))); @@ -206,7 +210,7 @@ void PostedItem::loadComment(const uint32_t &token) if (comNb == 1) { sComButText = sComButText.append("(1)"); } else if (comNb > 1) { - sComButText = tr("Comments").append("(%1)").arg(comNb); + sComButText = tr("Comments").append(" (%1)").arg(comNb); } ui->commentButton->setText(sComButText); } @@ -219,11 +223,29 @@ void PostedItem::fill() } mInFill = true; + + if(mPost.mImage.mData != NULL) + { + QPixmap pixmap; + pixmap.loadFromData(mPost.mImage.mData, mPost.mImage.mSize, "PNG"); + // Wiping data - as its been passed to thumbnail. + + QPixmap sqpixmap = pixmap.scaled(800, 600, Qt::KeepAspectRatio, Qt::SmoothTransformation); + ui->pictureLabel->setPixmap(sqpixmap); + + ui->thumbnailLabel->setPixmap(pixmap); + }else + { + ui->expandButton->setDisabled(true); + } QDateTime qtime; qtime.setTime_t(mPost.mMeta.mPublishTs); QString timestamp = qtime.toString("hh:mm dd-MMM-yyyy"); - ui->dateLabel->setText(timestamp); + QString timestamp2 = misc::timeRelativeToNow(mPost.mMeta.mPublishTs); + ui->dateLabel->setText(timestamp2); + ui->dateLabel->setToolTip(timestamp); + ui->fromLabel->setId(mPost.mMeta.mAuthorId); // Use QUrl to check/parse our URL @@ -256,9 +278,14 @@ void PostedItem::fill() QString siteurl = url.scheme() + "://" + url.host(); sitestr = QString(" %2 ").arg(siteurl).arg(siteurl); + + ui->titleLabel->setText(urlstr); + }else + { + ui->titleLabel->setText(messageName()); + } - ui->titleLabel->setText(urlstr); ui->siteLabel->setText(sitestr); //QString score = "Hot" + QString::number(post.mHotScore); @@ -451,3 +478,27 @@ void PostedItem::readAndClearItem() readToggled(false); removeItem(); } + +void PostedItem::toggle() +{ + expand(ui->frame_picture->isHidden()); +} + +void PostedItem::doExpand(bool open) +{ + if (open) + { + ui->frame_picture->show(); + ui->expandButton->setIcon(QIcon(QString(":/images/decrease.png"))); + ui->expandButton->setToolTip(tr("Hide")); + } + else + { + ui->frame_picture->hide(); + ui->expandButton->setIcon(QIcon(QString(":/images/expand.png"))); + ui->expandButton->setToolTip(tr("Expand")); + } + + emit sizeChanged(this); + +} diff --git a/retroshare-gui/src/gui/Posted/PostedItem.h b/retroshare-gui/src/gui/Posted/PostedItem.h index 50a200679..7329e3a2e 100644 --- a/retroshare-gui/src/gui/Posted/PostedItem.h +++ b/retroshare-gui/src/gui/Posted/PostedItem.h @@ -50,7 +50,7 @@ public: protected: /* FeedItem */ - virtual void doExpand(bool /*open*/) {} + virtual void doExpand(bool open); private slots: void loadComments(); @@ -58,6 +58,7 @@ private slots: void makeDownVote(); void readToggled(bool checked); void readAndClearItem(); + void toggle(); signals: void vote(const RsGxsGrpMsgIdPair& msgId, bool up); diff --git a/retroshare-gui/src/gui/Posted/PostedItem.ui b/retroshare-gui/src/gui/Posted/PostedItem.ui index bebf874c2..aa19e37f5 100644 --- a/retroshare-gui/src/gui/Posted/PostedItem.ui +++ b/retroshare-gui/src/gui/Posted/PostedItem.ui @@ -6,15 +6,33 @@ 0 0 - 765 - 230 + 617 + 190
- - + + + + + + 6 + + + 0 + + + 6 + + + 0 + + + 0 + + @@ -23,7 +41,7 @@ - true + false QFrame::Box @@ -31,44 +49,178 @@ QFrame::Sunken - - - - - - 0 - 0 - + + + 0 + + + 0 + + + 0 + + + 0 + + + 6 + + + + + - - - 75 - true - + + QFrame::NoFrame - - This is a very very very very loooooooooooooooonnnnnnnnnnnnnnnnng title don't you think? Yes it is and should wrap around I hope - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - true - - - true + + QFrame::Plain + + + 0 + + + 3 + + + 3 + + + 3 + + + 3 + + + + + + 0 + 0 + + + + + 24 + 24 + + + + Vote up + + + + + + + :/images/up-arrow.png:/images/up-arrow.png + + + + 16 + 16 + + + + true + + + + + + + 0 + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + Vote down + + + \/ + + + + :/images/down-arrow.png:/images/down-arrow.png + + + + 16 + 16 + + + + true + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 5 + + + + + - - + + - 0 + 6 - + + + + 100 + 75 + + + + + 100 + 75 + + + + + + + QFrame::NoFrame + - New Comment: + + + + :/images/thumb-default.png true @@ -76,255 +228,392 @@ - - - Comment Value - - - - - - - - - - - 0 - - - Qt::AlignCenter - - - - - - - - 24 - 24 - - - - Vote up - - - - - - - :/images/vote_up.png:/images/vote_up.png - - - - - - - - 24 - 24 - - - - Vote down - - - \/ - - - - :/images/vote_down.png:/images/vote_down.png - - - - - - - - 24 - 16777215 - - - - Qt::NoFocus - - - Toggle Message Read Status - - - - :/images/message-state-unread.png:/images/message-state-unread.png - - - true - - - false - - - false - - - - - - - New - - - - - - - Comments - - - - - - - - 0 - 0 - - - - You eyes only - - - true - - - - - - - - 0 - 0 - - - - - 75 - true - - - - By - - - - - - - - 0 - 0 - - - - Signed by - - - true - - - - - - - - 0 - 0 - - - - - 75 - true - - - - Site - - - - - - - - 0 - 0 - - - - Signed by - - - true - - - - - + - Qt::Horizontal + Qt::Vertical - 118 - 20 + 50 + 5 + + + + + + 6 + - - - - 24 - 16777215 - + + + + 0 + 0 + - - Qt::NoFocus + + + 75 + true + - - Set as read and remove item + + This is a very very very very loooooooooooooooonnnnnnnnnnnnnnnnng title don't you think? Yes it is and should wrap around I hope - - - :/images/cancel.png:/images/cancel.png + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + true - - - - 24 - 16777215 - + + + 0 - - Qt::NoFocus + + + + New Comment: + + + true + + + + + + + Comment Value + + + + + + + + + + + 0 + + + QLayout::SetDefaultConstraint + + + + + 3 - - Remove Item + + 0 - - - :/images/close_normal.png:/images/close_normal.png + + 6 - + + + + + 0 + 0 + + + + + 75 + true + + + + Posted by + + + + + + + + 0 + 0 + + + + Signed by + + + true + + + + + + + + 0 + 0 + + + + You eyes only + + + true + + + + + + + + 0 + 0 + + + + + 75 + true + + + + Site + + + + + + + + 0 + 0 + + + + site + + + true + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 70 + 20 + + + + + + + + + + 0 + + + 3 + + + + + + + + + :/images/expand.png:/images/expand.png + + + true + + + + + + + + 24 + 16777215 + + + + Qt::NoFocus + + + Toggle Message Read Status + + + + :/images/message-state-unread.png:/images/message-state-unread.png + + + true + + + false + + + true + + + + + + + New + + + + + + + Comments + + + + :/images/comments.png:/images/comments.png + + + Qt::ToolButtonTextBesideIcon + + + true + + + + + + + Qt::Horizontal + + + + 118 + 20 + + + + + + + + + 24 + 16777215 + + + + Qt::NoFocus + + + Set as read and remove item + + + + :/images/cancel.png:/images/cancel.png + + + + + + + + 24 + 16777215 + + + + Qt::NoFocus + + + Remove Item + + + + :/images/close_normal.png:/images/close_normal.png + + + + - titleLabel - + + + + + 800 + 600 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + Qt::Horizontal + + + + 257 + 20 + + + + + + + + TextLabel + + + true + + + + + + + Qt::Horizontal + + + + 257 + 20 + + + + + + + + QFrame::NoFrame @@ -333,7 +622,16 @@ QFrame::Sunken - + + 1 + + + 1 + + + 1 + + 1 @@ -374,6 +672,7 @@ + diff --git a/retroshare-gui/src/gui/Posted/Posted_images.qrc b/retroshare-gui/src/gui/Posted/Posted_images.qrc index 2e9cae6c0..ae7cf9e3b 100644 --- a/retroshare-gui/src/gui/Posted/Posted_images.qrc +++ b/retroshare-gui/src/gui/Posted/Posted_images.qrc @@ -11,5 +11,11 @@ images/hot_24.png images/new_24.png images/posted_32_new.png + images/expand.png + images/decrease.png + images/down-arrow.png + images/up-arrow.png + images/comments.png + images/thumb-default.png diff --git a/retroshare-gui/src/gui/Posted/images/comments.png b/retroshare-gui/src/gui/Posted/images/comments.png new file mode 100644 index 0000000000000000000000000000000000000000..b7af0d15054fb000ce50e830e77dd9df8818a593 GIT binary patch literal 3902 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 literal 0 HcmV?d00001 diff --git a/retroshare-gui/src/gui/Posted/images/decrease.png b/retroshare-gui/src/gui/Posted/images/decrease.png new file mode 100644 index 0000000000000000000000000000000000000000..39e488c1778a9af35d155151421dedb1c5dca597 GIT binary patch literal 3321 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 JZVlWq{NF|==-U7Q literal 0 HcmV?d00001 diff --git a/retroshare-gui/src/gui/Posted/images/down-arrow.png b/retroshare-gui/src/gui/Posted/images/down-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..b6c7fcc060b68b3108c9c6e790100d5ffb88ae73 GIT binary patch literal 2005 zcmXX_c{~(q8+{pLj~iyPh3xy5!HpP3H6z?XqwJH3j6M6(9b@KNQ^IvM_R?faAw*e5 zx>Dq3DL30#rjgt}vec*1%$@qabAHcr&hz}v`+NU-aEO_Yx>EkWvBwqC`ZYu-MS(_~^LM=omE&3Z)hk8y!N72nHZ| zhJeRcExuo7z0hPZu-G#mEESf#!a)T(gH)AqHG`J%9Y@T%yBKC_jO_2;#NMPt0A^}# zdin7XW0=8U#CT7S|M|Qm!-7%fhduLzzaVF14CrcgSo2>mNkAZ|)D(<^7z9F)gg~fh zkHjBd;JZ&mUq8y<^E0x)V8TxDGZ1PV$syQ1B=ux2MWzg}#xXLGywV8lrqxzg%`!I}!GorYxvj zS#h`GrQfJuK(<+&6^nI=P`kTcC#6sAA zCd=w88wt$@w>i!mIo!)s#X((-(*(>4Q~QgHba}Js#>4s+m-emJ&KCC$SSz8G6ULic z>Rf@=5ysN|J0IOk@?GnjA{4GV-iIzo{0iq7Z~MOMx5I}oF4PbPR#8!zb`l(!0XaQ+ zx?H643S0?RdWczMYI7-W;w@{n!G##RW~ty#!+Aew`@)(VA-p(ivZ-fiT;_kdixo+8 z>OOtq{JWmU2d~q^cRwtz>mZcF_va&C6)haQ|1mWiUzc-A^;#k>k=(RU@?iKv~B_2&CY6B`RX8{3Nvjmc+C)%tejdybpI)8TBZgy{4>lW&`Ao&&2%f!lq( zoI>9A;Ks5&lZ*StlLp3;hp*Jwikb0mM~#5?a0MV$i+@v80QPu%T>~J&6o3zS0FK=N z;81i?;GZV}5VF8HIh;wJ`KRJE+RH)iS$d#X8C^>TBb{F}tO74GqEO(GKIkcRQNtWb zii&8bfo3Bv@`V>nu2(mw9u74s%JV@hI?IT?9Wn1{YrlLw)i-AcRvpNkvpJe%Tt(Zh zT;i3-g|Mq=KbsY_`VSoeLS*n05JUn|AfN_>{y*gRF6*694Ho1ipRD$<(%980(9;Sz zSL_ao>pyE9?+fsH=#c~}L=BmPgnkS#gL&t@xp6{dO|hr_s<&jLKny{~a7tY@oEE3R>&EDQdR;{r7sl<-6gfx9s+ zbf=>wH@^t3^-OH}Fa}o;3U@4MZDg?uLRIG*c5GGdcq=)=xqjU8tH!RLl1HV)=yBTf zC7DP`;-R`Gsqryb>`Q_Ac(2sU$1g-l{Z~Gh-isp^(04-hsft%inWMj-%9RfE(ul1^rOJvW>4R;(|$ zpqL$KXUH6L+suk%r@yS$?vKunBjWF%YMG8lDoKv+r1Y#lEE_vKLg1+GeI{i!R+#ZT zxd>>AT{Xr?;;=lgRBn95N>NEu<<+32uwyCjic$K=Lj{?pCG2}}O{gbN)>N%%s2JPJ z6I-DY#j6|%0tqfs#GS|9ZgJ|svi6DV@7W<-ST1X}Ky0W>DQ}PY<|gJBIL%h^MpVkq z>^bLWp&;TBVCW=zTk$GupGzAUl4ctBst@QGR^7cY9^p#z+)B{7d&VbRzFj??j5~ig zfB(L6r{H2}vJQ%8Alra2?$;h)_zMPFehaAGO4AkHjxa50o7E-v&YZRU2!iI0YV+K} z9%epqtGCW})7Y}FQ_PgKuVsa3087QUa|(~t;~XCEU&%^*m<3py0Zsc>`WM}!G;#h- zmjbOBVFaF)@PijBlfsK#1FE)EU>-W9-XDPYxydFavvhA%?{Hw6cf`&iW=z;eaSpL$ zUhw+RAaZMilk43r1h)3rzTC4RN(HeBB7oi}5Yh1y`vG8VB;+-DEmwE})|P`e*M`^7 zJr4ovuxNSd)-jLUvogTCVG38$f$c{CS`WIrb~Q{|^OgYc+A^R=ebsAA{+nSC&$3Pb%Ok{dDe(@ODc1G5c z*|=VmxeoB2PuQp95gT@7r)j;h_u;nUppBbyZua(eqrV(LnlV@4{XvzkryxKshHCt% g`?-4Wfu_)}#{ty!@vmsOM-AWubHdH(o+F;}FGAUbzW@LL literal 0 HcmV?d00001 diff --git a/retroshare-gui/src/gui/Posted/images/expand.png b/retroshare-gui/src/gui/Posted/images/expand.png new file mode 100644 index 0000000000000000000000000000000000000000..66b2f6d0c3455ec127ac0b1f6eb664be496bc5b7 GIT binary patch literal 3995 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 DPHnkY literal 0 HcmV?d00001 diff --git a/retroshare-gui/src/gui/Posted/images/thumb-default.png b/retroshare-gui/src/gui/Posted/images/thumb-default.png new file mode 100644 index 0000000000000000000000000000000000000000..b52cc1f0226fc3f5ad24a1d2ef6dd314f2603037 GIT binary patch literal 10127 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 literal 0 HcmV?d00001 diff --git a/retroshare-gui/src/gui/Posted/images/up-arrow.png b/retroshare-gui/src/gui/Posted/images/up-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..728ccf06831c0b198216e764ae1c945379cb695c GIT binary patch literal 1925 zcmXX_dpy&782)ZE_k+YF#mY5u7e1=FmbvY0lgN~5#KxujfD$+h!yKIeTu@ArA$_kG^)e@_-3=lq-Wc4+{>Z!TCTB81G%k`#kp zs?`lU2&AI0$7le^b!-;wl7XBW00=dzqaz+45_vX~77`hSc5!q>M@2`TqMi-{Aa004 zCSM+#5{jN{@%ecC5u!+4v`ux3Y7L)pIrTznN$O_oGHq$*o1*y{o7~ve_!3On#LOh= z?19GXL#t-rg39)dIo7L8#aL^zdjI4iBPrluy1;>sY_IYb4WaS4rRObb2{ z%^=t_2q#@ar6KWaIdLdX6s;*DmpWb?KstJQiR-g6pXwncWwu}>O~tTAhWacCZ3GLj zP%I5c?RNb?C9-?73E7L=u9&Hs?K3%ka)2BW*xGfn-7NP~$-c7h`ej?+>BK7kDA@tu zQO>!^dFl7UFMN1-cx!xhT;bR4i|Rs|iNq)VhG;FGufSuTjj!TeoeyB2C7kHto;)Mu z2ua#Rt#s{NS1;_0t1Y`kQ%zr2kAAe(xy_mFy^z+c^ifY)`_fS#bta{XUSc@jB7G??>f)@&ez5!9^tNXBc*XQ^w;o* zrg3B~r91I>)BOfIX}a|_g+1wT3ppZ_j9N8XBz=5{A%~5PR8ZO`9V5~)GOLPhN_)1| zD24ABN2w_nsf^~E>_0>6eJh&0;ZBX7wp1mQcpba_*OF+si}Kvtcz(}bqtfF^&7$xU zrxv$E0UsaK-R@5b`~FEdqq}cM*xLKkg8UJiTVE0~$hCCu#H9}>{=}?q+?QI_*|_rA zx+dmR*7O7OwBYX2?;$w@!};;6s3=2O(w(@4&KkKcoxLf|y>VVMpUT2w2KR9vw)Bua zJ0~Pa+$N9r8v(U*4PJ@XKd#N~XV|TiCo2b?*K#5-MvSXJL>K!;f}1!O4~{ZE^wl(X z)i(J0kzyUcotoj^qW8{?JeXS?<7@VH)?d-blr1~V2MvZzSj9x9v>LC^PkXja()|}( z|5;`KT5O*a+Kz5`t^bk-MzTB4R~(Qsg}j5NV2K_8BxpmPVga!H3&LptVoU(|LU3jz?js>CT!?Zdj)`K0XSHD360fioG5CzcZTZxPy0htD941U;HylpIa)Y4bo=U zQfM1=+{EQ&yr@;SGp<{JQ>#@CwrniCCIIf0U%Z9#?pbO~#+^0xiu(FEvSQ+jNMc-! zY(Mnv{5ZU#Aeh?sFfil*;5=_`dut7R*fHln5+v{o?~45Ie`ga2;(4Op6ss23+$s1Q zPM>AjRcZ7gI__OkK&TQ-iDoc)VOC(30Dgpq-_;ET6AQ<~>gQhMDl+X43=Cl_LxQ5t z0*;{Y7M_zM&8&%k=B-y(1u8iA;t_GLBu8OdEqV8n(uL8OuCF3ssoDRbQ3QRbgO0 zfqsyxLj?pqXo8RJY)=MxV;tpW>BsSkvk0GX4`}&328{mL)I^m{1QLhJA}w z;UArWm|+9FIDog*HKNiTyM;fhDQ`Kr{&`%<=0^UL*)@7ubAOlV;lB(xRO$C@iL$Up zRS&6hIa_wTsIp|2nA)xD!gw8E^YCp+rekVX22pNuKxOD2|2e+RYtWKx^1U{ zvoX{-cfCI`BLNf=vSv&Pk(IK$#9EcJD$d$Ydfr;AfhcN0>X(q9xBEMG6Jd^K$$UN(u3+AsUrw z#jHNUv~VE8;C6e_paV{XZ6?%=$um)ulF}NuNH$Me0i1;00GkOzqZEKT%*1MJWn?!g zXpS{yU(e2{KkMoGcehM|rtppl~^ab82uP Gr~M0uo^LP! literal 0 HcmV?d00001 diff --git a/retroshare-gui/src/gui/qss/stylesheet/Standard.qss b/retroshare-gui/src/gui/qss/stylesheet/Standard.qss index 97e84efc8..e7f489980 100644 --- a/retroshare-gui/src/gui/qss/stylesheet/Standard.qss +++ b/retroshare-gui/src/gui/qss/stylesheet/Standard.qss @@ -119,18 +119,9 @@ GxsCreateCommentDialog QFrame#frame { /* Forums */ -ForumsDialog QLabel#forumName, ForumsDialog QLabel#threadTitle +GxsForumThreadWidget QLabel#forumName { - border: 2px solid #CCCCCC; - border-radius:6px; - background: white; -} - -ForumsDialog2 QLabel#forumName, ForumsDialog2 QLabel#threadTitle -{ - border: 2px solid #CCCCCC; - border-radius:6px; - background: white; + font: bold; } CreateForumMsg > QToolBar#toolBar, CreateForumV2Msg > QToolBar#toolBar { @@ -677,14 +668,6 @@ IdDialog QFrame#inviteFrame { background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FFFFD7, stop:1 #FFFFB2); } -GxsChannelPostsWidget QFrame#infoFrame -{ - border: 1px solid #DCDC41; - border-radius: 6px; - background: #FFFFD7; - background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FFFFD7, stop:1 #FFFFB2); -} - IdEditDialog QLabel#info_label { border: 1px solid #DCDC41; @@ -822,3 +805,109 @@ PostedListWidget QToolButton#submitPostButton { font: bold; font-size: 15px; } + +PostedListWidget QToolButton#subscribeToolButton { + font: bold; + font-size: 15px; + color: white; + background: #0099cc; + border-radius: 4px; +} + +PostedListWidget QToolButton#subscribeToolButton:hover { + background: #03b1f3; + border-radius: 4px; +} + +PostedListWidget QFrame#headerFrame { + background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FEFEFE, stop:1 #E8E8E8); + border: 1px solid #CCCCCC; +} + +GxsForumThreadWidget QToolButton#subscribeToolButton { + font: bold; + font-size: 14px; + color: white; + background: #0099cc; + border-radius: 4px; +} + +GxsForumThreadWidget QToolButton#subscribeToolButton:hover { + background: #03b1f3; + border-radius: 4px; +} + +GxsChannelPostsWidget QFrame#infoFrame +{ + border: 1px solid #DCDC41; + border-radius: 6px; + background: #FFFFD7; + background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FFFFD7, stop:1 #FFFFB2); +} + +GxsChannelPostsWidget QToolButton#subscribeToolButton { + font: bold; + font-size: 14px; + color: white; + background: #0099cc; + border-radius: 4px; +} + +GxsChannelPostsWidget QToolButton#subscribeToolButton:hover { + background: #03b1f3; + border-radius: 4px; +} + +GxsChannelPostsWidget QToolButton#subscribeToolButton:pressed { + background: #03b1f3; + border-radius: 4px; + border: 1px solid gray; +} + +GxsChannelPostsWidget QToolButton#subscribeToolButton:disabled { + background: gray; + border-radius: 4px; + border: 1px solid gray; + color: lightgray; +} + +/* only for MenuButtonPopup */ +GxsChannelPostsWidget QToolButton#subscribeToolButton[popupMode="1"] { + padding-right: 0px; +} + +GxsChannelPostsWidget QToolButton#subscribeToolButton::menu-arrow { + image: none; +} + +GxsChannelPostsWidget QToolButton#subscribeToolButton::menu-button { + image: none; +} + +PostedItem QFrame#voteFrame { + background: #f8f9fa; +} + +PostedItem QFrame#mainFrame{ + background: white; +} + +PostedItem QFrame#frame_picture{ + background: white; +} + +PostedItem QLabel#thumbnailLabel{ + border: 2px solid #CCCCCC; + border-radius: 3px; +} + +PostedItem QLabel#fromBoldLabel, QLabel#fromLabel, QLabel#dateLabel, QLabel#siteBoldLabel { + color: #787c7e; +} + +PostedItem QToolButton#commentButton{ + font-size: 12px; + color: #878a8c; + font-weight: bold; + +} From 4f3920a33a5a644d11ff600a6bea8f3ce582030f Mon Sep 17 00:00:00 2001 From: defnax Date: Fri, 1 Feb 2019 00:16:06 +0100 Subject: [PATCH 2/9] Added share button for copy retroshare message link --- retroshare-gui/src/gui/Posted/PostedItem.cpp | 26 ++++++++++++++++++ retroshare-gui/src/gui/Posted/PostedItem.h | 3 ++ retroshare-gui/src/gui/Posted/PostedItem.ui | 14 ++++++++++ .../src/gui/Posted/Posted_images.qrc | 1 + .../src/gui/Posted/images/share.png | Bin 0 -> 2717 bytes .../src/gui/qss/stylesheet/Standard.qss | 4 +-- 6 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 retroshare-gui/src/gui/Posted/images/share.png diff --git a/retroshare-gui/src/gui/Posted/PostedItem.cpp b/retroshare-gui/src/gui/Posted/PostedItem.cpp index 79db72b32..f1fe30cfa 100644 --- a/retroshare-gui/src/gui/Posted/PostedItem.cpp +++ b/retroshare-gui/src/gui/Posted/PostedItem.cpp @@ -19,6 +19,7 @@ *******************************************************************************/ #include +#include #include #include "rshare.h" @@ -48,6 +49,9 @@ PostedItem::PostedItem(FeedHolder *feedHolder, uint32_t feedId, const RsPostedGr GxsFeedItem(feedHolder, feedId, post.mMeta.mGroupId, post.mMeta.mMsgId, isHome, rsPosted, autoUpdate) { setup(); + + mMessageId = post.mMeta.mMsgId; + setGroup(group, false); setPost(post); @@ -100,6 +104,13 @@ void PostedItem::setup() connect(ui->expandButton, SIGNAL(clicked()), this, SLOT( toggle())); connect(ui->readButton, SIGNAL(toggled(bool)), this, SLOT(readToggled(bool))); + + QAction *CopyLinkAction = new QAction(QIcon(""),tr("Copy RetroShare Link"), this); + connect(CopyLinkAction, SIGNAL(triggered()), this, SLOT(copyMessageLink())); + + QMenu *menu = new QMenu(); + menu->addAction(CopyLinkAction); + ui->shareButton->setMenu(menu); ui->clearButton->hide(); ui->readAndClearButton->hide(); @@ -502,3 +513,18 @@ void PostedItem::doExpand(bool open) emit sizeChanged(this); } + +void PostedItem::copyMessageLink() +{ + if (groupId().isNull() || mMessageId.isNull()) { + return; + } + + RetroShareLink link = RetroShareLink::createGxsMessageLink(RetroShareLink::TYPE_POSTED, groupId(), mMessageId, messageName()); + + if (link.valid()) { + QList urls; + urls.push_back(link); + RSLinkClipboard::copyLinks(urls); + } +} diff --git a/retroshare-gui/src/gui/Posted/PostedItem.h b/retroshare-gui/src/gui/Posted/PostedItem.h index 7329e3a2e..1ef11de3c 100644 --- a/retroshare-gui/src/gui/Posted/PostedItem.h +++ b/retroshare-gui/src/gui/Posted/PostedItem.h @@ -30,6 +30,7 @@ namespace Ui { class PostedItem; } +class FeedHolder; class RsPostedPost; class PostedItem : public GxsFeedItem @@ -59,6 +60,7 @@ private slots: void readToggled(bool checked); void readAndClearItem(); void toggle(); + void copyMessageLink(); signals: void vote(const RsGxsGrpMsgIdPair& msgId, bool up); @@ -84,6 +86,7 @@ private: RsPostedGroup mGroup; RsPostedPost mPost; + RsGxsMessageId mMessageId; /** Qt Designer generated object */ Ui::PostedItem *ui; diff --git a/retroshare-gui/src/gui/Posted/PostedItem.ui b/retroshare-gui/src/gui/Posted/PostedItem.ui index aa19e37f5..389f659c8 100644 --- a/retroshare-gui/src/gui/Posted/PostedItem.ui +++ b/retroshare-gui/src/gui/Posted/PostedItem.ui @@ -499,6 +499,20 @@ + + + + Share + + + + :/images/share.png:/images/share.png + + + true + + + diff --git a/retroshare-gui/src/gui/Posted/Posted_images.qrc b/retroshare-gui/src/gui/Posted/Posted_images.qrc index ae7cf9e3b..0ea4455cf 100644 --- a/retroshare-gui/src/gui/Posted/Posted_images.qrc +++ b/retroshare-gui/src/gui/Posted/Posted_images.qrc @@ -17,5 +17,6 @@ images/up-arrow.png images/comments.png images/thumb-default.png + images/share.png diff --git a/retroshare-gui/src/gui/Posted/images/share.png b/retroshare-gui/src/gui/Posted/images/share.png new file mode 100644 index 0000000000000000000000000000000000000000..2a8d87e26ed7e2a69874d9931b321793d0d90698 GIT binary patch literal 2717 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 XD{daIDIl=f00000NkvXXu0mjf>Lc?s literal 0 HcmV?d00001 diff --git a/retroshare-gui/src/gui/qss/stylesheet/Standard.qss b/retroshare-gui/src/gui/qss/stylesheet/Standard.qss index e7f489980..6efecbf5c 100644 --- a/retroshare-gui/src/gui/qss/stylesheet/Standard.qss +++ b/retroshare-gui/src/gui/qss/stylesheet/Standard.qss @@ -905,9 +905,9 @@ PostedItem QLabel#fromBoldLabel, QLabel#fromLabel, QLabel#dateLabel, QLabel#site color: #787c7e; } -PostedItem QToolButton#commentButton{ +PostedItem QToolButton#commentButton, QPushButton#shareButton{ font-size: 12px; color: #878a8c; - font-weight: bold; + font-weight: bold; } From 63d346f63d05257343ec438b6a7960aa7339136f Mon Sep 17 00:00:00 2001 From: defnax Date: Mon, 4 Feb 2019 23:59:31 +0100 Subject: [PATCH 3/9] Added Notes button to view notes --- retroshare-gui/src/gui/Posted/PostedItem.cpp | 17 +++++++++- retroshare-gui/src/gui/Posted/PostedItem.h | 1 + retroshare-gui/src/gui/Posted/PostedItem.ui | 30 +++++++++++++++--- .../src/gui/Posted/Posted_images.qrc | 1 + .../src/gui/Posted/images/notes.png | Bin 0 -> 1771 bytes 5 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 retroshare-gui/src/gui/Posted/images/notes.png diff --git a/retroshare-gui/src/gui/Posted/PostedItem.cpp b/retroshare-gui/src/gui/Posted/PostedItem.cpp index f1fe30cfa..4a38c2a5a 100644 --- a/retroshare-gui/src/gui/Posted/PostedItem.cpp +++ b/retroshare-gui/src/gui/Posted/PostedItem.cpp @@ -91,6 +91,7 @@ void PostedItem::setup() ui->newCommentLabel->hide(); ui->frame_picture->hide(); ui->commLabel->hide(); + ui->frame_notes->hide(); /* general ones */ connect(ui->clearButton, SIGNAL(clicked()), this, SLOT(removeItem())); @@ -102,6 +103,7 @@ void PostedItem::setup() connect(ui->voteUpButton, SIGNAL(clicked()), this, SLOT(makeUpVote())); connect(ui->voteDownButton, SIGNAL(clicked()), this, SLOT( makeDownVote())); connect(ui->expandButton, SIGNAL(clicked()), this, SLOT( toggle())); + connect(ui->notesButton, SIGNAL(clicked()), this, SLOT( toggleNotes())); connect(ui->readButton, SIGNAL(toggled(bool)), this, SLOT(readToggled(bool))); @@ -310,7 +312,7 @@ void PostedItem::fill() // FIX THIS UP LATER. ui->notes->setText(QString::fromUtf8(mPost.mNotes.c_str())); if(ui->notes->text().isEmpty()) - ui->frame_notes->hide(); + ui->notesButton->hide(); // differences between Feed or Top of Comment. if (mFeedHolder) { @@ -528,3 +530,16 @@ void PostedItem::copyMessageLink() RSLinkClipboard::copyLinks(urls); } } + +void PostedItem::toggleNotes() +{ + if (ui->notesButton->isChecked()) + { + ui->frame_notes->show(); + } + else + { + ui->frame_notes->hide(); + } + +} diff --git a/retroshare-gui/src/gui/Posted/PostedItem.h b/retroshare-gui/src/gui/Posted/PostedItem.h index 1ef11de3c..333018dee 100644 --- a/retroshare-gui/src/gui/Posted/PostedItem.h +++ b/retroshare-gui/src/gui/Posted/PostedItem.h @@ -61,6 +61,7 @@ private slots: void readAndClearItem(); void toggle(); void copyMessageLink(); + void toggleNotes(); signals: void vote(const RsGxsGrpMsgIdPair& msgId, bool up); diff --git a/retroshare-gui/src/gui/Posted/PostedItem.ui b/retroshare-gui/src/gui/Posted/PostedItem.ui index 389f659c8..af284a7a0 100644 --- a/retroshare-gui/src/gui/Posted/PostedItem.ui +++ b/retroshare-gui/src/gui/Posted/PostedItem.ui @@ -513,6 +513,26 @@ + + + + Notes + + + + :/images/notes.png:/images/notes.png + + + true + + + Qt::ToolButtonTextBesideIcon + + + true + + + @@ -630,23 +650,23 @@ - QFrame::NoFrame + QFrame::Box QFrame::Sunken - 1 + 3 - 1 + 3 - 1 + 3 - 1 + 3 1 diff --git a/retroshare-gui/src/gui/Posted/Posted_images.qrc b/retroshare-gui/src/gui/Posted/Posted_images.qrc index 0ea4455cf..0b9e06f2b 100644 --- a/retroshare-gui/src/gui/Posted/Posted_images.qrc +++ b/retroshare-gui/src/gui/Posted/Posted_images.qrc @@ -18,5 +18,6 @@ images/comments.png images/thumb-default.png images/share.png + images/notes.png diff --git a/retroshare-gui/src/gui/Posted/images/notes.png b/retroshare-gui/src/gui/Posted/images/notes.png new file mode 100644 index 0000000000000000000000000000000000000000..a73a039685015b38071a49b50d19fa42355ee9d6 GIT binary patch literal 1771 zcmah~2~d;Q7QTcKVpyc2giSzg(F$T{G4jB$1TX|46%5E`LKFm)Es)m;lJW;xf@KpL zs4PYhu_21G2_j$u6l%k+SP&2jBOoRaDv&A#n=UhNp3|A$nRCv3XXf5H_k7>IC*wGY zpn=jy0RS|JuFhVH2>oG5gu-{&(Zq@XkHZtmNX1G-26Gg6ON^^u900~if0&Y;f9H%M zsmE~fWt@mU%V5%CLjaS>v~Y|7}430e4#`-aV&!Dt*a_~ z&s=m*|I`iRDb&@_&m43<6^5bz+@4A=yOJvE%=%jYvYMs4@e{0F)UJ?gEEy(^n?WD$ zOuY?fe2+Ksa{nf!6N=uGf%GMY+Q?t@dl0I&hh2^9$CbX>$g`+SU0NU7jO#0Xay7sK zxhq8r|EIHN=NXxh+LrFl&r1@MIkk75(#ol62^ah4i^Qgp22f2+O$3gUt#pA*z#)Ed z+Gq{g*$`2#*kjQE49Z@mZw2s{YC(a=b1Z<@*GmpMFmYxT3>|@wfQj9mIe+`XK4&yO zb?b}8S8qpy$4!?5loQbJ{s%XVA}wuuu}2;f0qG2hJgmhsc-Mtk zVMB2v5q=2Bv46*p!`{UH8ZCr>K%{y=ffA67jHicrj#1#3zrO;kNw6vFEzr!zAUppb zfI$)(qdY6W9<#sC6yA`1l?n4T4mBPdMT7DT(dLWG89u3QFPWH~*g>(+TBMREW7PNH z?zmR-kQr32nT~+UWPGQ+nov4(PWz^pe0Td|)51aYnhNmkK=FnzA!XAS#if@I_=~@0 z1wa_L4=XX?A^I>=+RNmjOY>c~efGtmm5cMP-BhSR%R_y2wSGc6Qna=-nI!8!_QXCp zhB;IRuu)2;Imy}s6B83qJGWvktd_1aLfKdNMTi&w?(`893IFY5MnaZM1B3k-cPyW! z1fIbbg2o9VqAVF{@^H~CWKzc@Gw*{=^mW~0e;#DybDi%>m&}3A6%4dfz2{LQRinq& z_2-Drr%uAIx9`*S^4*pR>Q4)ws{QbpzyhKUSw7T!rUJ1ioZhzOi3)gVvA0Ul^kl!* zn&z5(2M7vI{0(`iol0Nr8kob5Crt_(6R4*r@L_aYH866yY_~w}+c@zD? z8GYffF_zZME%sV(vo|A%4m&thldG<|-5Mrp6GW2u9B^UIo~Qg`KeuXc`46^YO61#T0C5ak+Qx!*YL^2b(@}G8*i;h?u{vf0E3S-uiBv6`b3fF*C7xvPMe1kN{ihxg&~@QT3%h%O}OYJ5=g?`nb{{Qv*} literal 0 HcmV?d00001 From f0a99fbe98bfe4e89f968a02585bf0f3a1bfade6 Mon Sep 17 00:00:00 2001 From: defnax Date: Tue, 5 Feb 2019 00:05:53 +0100 Subject: [PATCH 4/9] update standard.qss --- .../src/gui/qss/stylesheet/Standard.qss | 97 +++++++++---------- 1 file changed, 47 insertions(+), 50 deletions(-) diff --git a/retroshare-gui/src/gui/qss/stylesheet/Standard.qss b/retroshare-gui/src/gui/qss/stylesheet/Standard.qss index 6efecbf5c..cbdb5a81c 100644 --- a/retroshare-gui/src/gui/qss/stylesheet/Standard.qss +++ b/retroshare-gui/src/gui/qss/stylesheet/Standard.qss @@ -587,26 +587,6 @@ MessageWidget QFrame#inviteFrame { background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FFFFD7, stop:1 #FFFFB2); } -/* Posted Links */ - -PostedCreatePostDialog QLabel#info_label { - border: 1px solid #DCDC41; - border-radius: 6px; - background: #FFFFD7; - background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FFFFD7, stop:1 #FFFFB2); -} - -PostedItem QFrame#frame { - border: 2px solid #CCCCCC; - background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #EEEEEE, stop: 1 #CCCCCC); - border-radius: 10px -} - -PostedItem QLabel#notes { - border: 2px solid #CCCCCC; - border-radius: 10px -} - QLabel#sharekeyinfo_label{ border: 1px solid #DCDC41; border-radius: 6px; @@ -795,35 +775,6 @@ GenCertDialog QFrame#profileframe{ border-width: 0px; } -PostedListWidget QComboBox#comboBox { - font: bold; - font-size: 15px; - color: #0099cc; -} - -PostedListWidget QToolButton#submitPostButton { - font: bold; - font-size: 15px; -} - -PostedListWidget QToolButton#subscribeToolButton { - font: bold; - font-size: 15px; - color: white; - background: #0099cc; - border-radius: 4px; -} - -PostedListWidget QToolButton#subscribeToolButton:hover { - background: #03b1f3; - border-radius: 4px; -} - -PostedListWidget QFrame#headerFrame { - background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FEFEFE, stop:1 #E8E8E8); - border: 1px solid #CCCCCC; -} - GxsForumThreadWidget QToolButton#subscribeToolButton { font: bold; font-size: 14px; @@ -884,6 +835,52 @@ GxsChannelPostsWidget QToolButton#subscribeToolButton::menu-button { image: none; } +/* Posted Links */ + +PostedCreatePostDialog QLabel#info_label { + border: 1px solid #DCDC41; + border-radius: 6px; + background: #FFFFD7; + background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FFFFD7, stop:1 #FFFFB2); +} + +PostedItem QFrame#frame_notes { + background: white; +} + +PostedItem QLabel#notes { + +} + +PostedListWidget QComboBox#comboBox { + font: bold; + font-size: 15px; + color: #0099cc; +} + +PostedListWidget QToolButton#submitPostButton { + font: bold; + font-size: 15px; +} + +PostedListWidget QToolButton#subscribeToolButton { + font: bold; + font-size: 15px; + color: white; + background: #0099cc; + border-radius: 4px; +} + +PostedListWidget QToolButton#subscribeToolButton:hover { + background: #03b1f3; + border-radius: 4px; +} + +PostedListWidget QFrame#headerFrame { + background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FEFEFE, stop:1 #E8E8E8); + border: 1px solid #CCCCCC; +} + PostedItem QFrame#voteFrame { background: #f8f9fa; } @@ -905,7 +902,7 @@ PostedItem QLabel#fromBoldLabel, QLabel#fromLabel, QLabel#dateLabel, QLabel#site color: #787c7e; } -PostedItem QToolButton#commentButton, QPushButton#shareButton{ +PostedItem QToolButton#commentButton, QPushButton#shareButton, QToolButton#notesButton{ font-size: 12px; color: #878a8c; font-weight: bold; From 54e3ca3485b6c5a4938c55d99b1a353e59bc0399 Mon Sep 17 00:00:00 2001 From: defnax Date: Sun, 10 Feb 2019 18:50:48 +0100 Subject: [PATCH 5/9] Hide Site labels when theres is no link --- retroshare-gui/src/gui/Posted/PostedItem.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/retroshare-gui/src/gui/Posted/PostedItem.cpp b/retroshare-gui/src/gui/Posted/PostedItem.cpp index 4a38c2a5a..efa2de784 100644 --- a/retroshare-gui/src/gui/Posted/PostedItem.cpp +++ b/retroshare-gui/src/gui/Posted/PostedItem.cpp @@ -298,6 +298,12 @@ void PostedItem::fill() ui->titleLabel->setText(messageName()); } + + if(urlarray == NULL) + { + ui->siteLabel->hide(); + ui->siteBoldLabel->hide(); + } ui->siteLabel->setText(sitestr); From 5bb0fc48b05e6d30d493d72447b4d9e388b4464a Mon Sep 17 00:00:00 2001 From: defnax Date: Sun, 10 Feb 2019 19:59:43 +0100 Subject: [PATCH 6/9] removed hide label seems get concflicts on github check --- retroshare-gui/src/gui/Posted/PostedItem.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/retroshare-gui/src/gui/Posted/PostedItem.cpp b/retroshare-gui/src/gui/Posted/PostedItem.cpp index efa2de784..4a38c2a5a 100644 --- a/retroshare-gui/src/gui/Posted/PostedItem.cpp +++ b/retroshare-gui/src/gui/Posted/PostedItem.cpp @@ -298,12 +298,6 @@ void PostedItem::fill() ui->titleLabel->setText(messageName()); } - - if(urlarray == NULL) - { - ui->siteLabel->hide(); - ui->siteBoldLabel->hide(); - } ui->siteLabel->setText(sitestr); From 019233e840007a9a2ccc66c2e29fcccfc62ed8c0 Mon Sep 17 00:00:00 2001 From: defnax Date: Sun, 10 Feb 2019 20:52:25 +0100 Subject: [PATCH 7/9] fixed subscribe buttons stylesheet --- retroshare-gui/src/gui/qss/stylesheet/Standard.qss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/retroshare-gui/src/gui/qss/stylesheet/Standard.qss b/retroshare-gui/src/gui/qss/stylesheet/Standard.qss index cbdb5a81c..c85128bf8 100644 --- a/retroshare-gui/src/gui/qss/stylesheet/Standard.qss +++ b/retroshare-gui/src/gui/qss/stylesheet/Standard.qss @@ -781,6 +781,7 @@ GxsForumThreadWidget QToolButton#subscribeToolButton { color: white; background: #0099cc; border-radius: 4px; + max-height: 27px; } GxsForumThreadWidget QToolButton#subscribeToolButton:hover { @@ -869,6 +870,7 @@ PostedListWidget QToolButton#subscribeToolButton { color: white; background: #0099cc; border-radius: 4px; + max-height: 27px; } PostedListWidget QToolButton#subscribeToolButton:hover { From c7e4986710ebba5b2154ff9bbdf1164cd03947a4 Mon Sep 17 00:00:00 2001 From: defnax Date: Tue, 19 Mar 2019 23:23:49 +0100 Subject: [PATCH 8/9] fixed serialization of posts with images fix by cyril --- libretroshare/src/rsitems/rsposteditems.cc | 11 +++++++++++ libretroshare/src/serialiser/rstlvimage.h | 21 +++++++++++---------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/libretroshare/src/rsitems/rsposteditems.cc b/libretroshare/src/rsitems/rsposteditems.cc index 81455f284..7f7adac4d 100644 --- a/libretroshare/src/rsitems/rsposteditems.cc +++ b/libretroshare/src/rsitems/rsposteditems.cc @@ -28,6 +28,17 @@ void RsGxsPostedPostItem::serial_process(RsGenericSerializer::SerializeJob j,RsG { RsTypeSerializer::serial_process(j,ctx,TLV_TYPE_STR_LINK,mPost.mLink,"mPost.mLink") ; RsTypeSerializer::serial_process(j,ctx,TLV_TYPE_STR_MSG ,mPost.mNotes,"mPost.mNotes") ; + + // Do not serialize mImage member if it is empty (keeps compatibility of new posts without image toward older RS) + // and do not expect to deserialize mImage member if the data block has been consummed entirely (keeps compatibility + // of new RS with older posts. + + if(j == RsGenericSerializer::DESERIALIZE && ctx.mOffset == ctx.mSize) + return ; + + if((j == RsGenericSerializer::SIZE_ESTIMATE || j == RsGenericSerializer::SERIALIZE) && mImage.empty()) + return ; + RsTypeSerializer::serial_process(j,ctx,mImage,"mImage") ; } diff --git a/libretroshare/src/serialiser/rstlvimage.h b/libretroshare/src/serialiser/rstlvimage.h index b5602096f..562c29090 100644 --- a/libretroshare/src/serialiser/rstlvimage.h +++ b/libretroshare/src/serialiser/rstlvimage.h @@ -33,18 +33,19 @@ class RsTlvImage: public RsTlvItem { - public: - RsTlvImage(); - RsTlvImage(const RsTlvImage& ); - virtual ~RsTlvImage() { return; } -virtual uint32_t TlvSize() const; -virtual void TlvClear(); -virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const; -virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); +public: + RsTlvImage(); + RsTlvImage(const RsTlvImage& ); + virtual ~RsTlvImage() { return; } + virtual uint32_t TlvSize() const; + virtual void TlvClear(); + virtual bool SetTlv(void *data, uint32_t size, uint32_t *offset) const; + virtual bool GetTlv(void *data, uint32_t size, uint32_t *offset); -virtual std::ostream &print(std::ostream &out, uint16_t indent) const; + bool empty() const { return binData.bin_len == 0 ; } + virtual std::ostream &print(std::ostream &out, uint16_t indent) const; - uint32_t image_type; // Mandatory: + uint32_t image_type; // Mandatory: RsTlvBinaryData binData; // Mandatory: serialised file info }; From f12491cc892c02bb887b95c592d4e9cc8c4fb24c Mon Sep 17 00:00:00 2001 From: defnax Date: Wed, 20 Mar 2019 00:49:38 +0100 Subject: [PATCH 9/9] attempting to fix stlysheet file --- .../src/gui/qss/stylesheet/Standard.qss | 82 +++++++++---------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/retroshare-gui/src/gui/qss/stylesheet/Standard.qss b/retroshare-gui/src/gui/qss/stylesheet/Standard.qss index c85128bf8..4dd6028d2 100644 --- a/retroshare-gui/src/gui/qss/stylesheet/Standard.qss +++ b/retroshare-gui/src/gui/qss/stylesheet/Standard.qss @@ -587,6 +587,15 @@ MessageWidget QFrame#inviteFrame { background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FFFFD7, stop:1 #FFFFB2); } +/* Posted Links */ + +PostedCreatePostDialog QLabel#info_label { + border: 1px solid #DCDC41; + border-radius: 6px; + background: #FFFFD7; + background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FFFFD7, stop:1 #FFFFB2); +} + QLabel#sharekeyinfo_label{ border: 1px solid #DCDC41; border-radius: 6px; @@ -775,13 +784,42 @@ GenCertDialog QFrame#profileframe{ border-width: 0px; } +PostedListWidget QComboBox#comboBox { + font: bold; + font-size: 15px; + color: #0099cc; +} + +PostedListWidget QToolButton#submitPostButton { + font: bold; + font-size: 15px; +} + +PostedListWidget QToolButton#subscribeToolButton { + font: bold; + font-size: 15px; + color: white; + background: #0099cc; + border-radius: 4px; + max-height: 27px; +} + +PostedListWidget QToolButton#subscribeToolButton:hover { + background: #03b1f3; + border-radius: 4px; +} + +PostedListWidget QFrame#headerFrame { + background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FEFEFE, stop:1 #E8E8E8); + border: 1px solid #CCCCCC; +} + GxsForumThreadWidget QToolButton#subscribeToolButton { font: bold; font-size: 14px; color: white; background: #0099cc; border-radius: 4px; - max-height: 27px; } GxsForumThreadWidget QToolButton#subscribeToolButton:hover { @@ -803,6 +841,7 @@ GxsChannelPostsWidget QToolButton#subscribeToolButton { color: white; background: #0099cc; border-radius: 4px; + max-height: 27px; } GxsChannelPostsWidget QToolButton#subscribeToolButton:hover { @@ -836,15 +875,6 @@ GxsChannelPostsWidget QToolButton#subscribeToolButton::menu-button { image: none; } -/* Posted Links */ - -PostedCreatePostDialog QLabel#info_label { - border: 1px solid #DCDC41; - border-radius: 6px; - background: #FFFFD7; - background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FFFFD7, stop:1 #FFFFB2); -} - PostedItem QFrame#frame_notes { background: white; } @@ -853,36 +883,6 @@ PostedItem QLabel#notes { } -PostedListWidget QComboBox#comboBox { - font: bold; - font-size: 15px; - color: #0099cc; -} - -PostedListWidget QToolButton#submitPostButton { - font: bold; - font-size: 15px; -} - -PostedListWidget QToolButton#subscribeToolButton { - font: bold; - font-size: 15px; - color: white; - background: #0099cc; - border-radius: 4px; - max-height: 27px; -} - -PostedListWidget QToolButton#subscribeToolButton:hover { - background: #03b1f3; - border-radius: 4px; -} - -PostedListWidget QFrame#headerFrame { - background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #FEFEFE, stop:1 #E8E8E8); - border: 1px solid #CCCCCC; -} - PostedItem QFrame#voteFrame { background: #f8f9fa; } @@ -909,4 +909,4 @@ PostedItem QToolButton#commentButton, QPushButton#shareButton, QToolButton#notes color: #878a8c; font-weight: bold; -} +} \ No newline at end of file