From 5406da92faf2efc6de7a7e0b9a18b4dfc69ff025 Mon Sep 17 00:00:00 2001 From: csoler Date: Thu, 11 May 2017 23:21:13 +0200 Subject: [PATCH 01/23] first part of channel post editing --- .../gui/gxschannels/CreateGxsChannelMsg.cpp | 53 +++++++++++++++++-- .../src/gui/gxschannels/CreateGxsChannelMsg.h | 5 +- .../gui/gxschannels/GxsChannelPostsWidget.cpp | 19 +++++++ .../gui/gxschannels/GxsChannelPostsWidget.h | 1 + .../gui/gxschannels/GxsChannelPostsWidget.ui | 20 +++++-- 5 files changed, 91 insertions(+), 7 deletions(-) diff --git a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp index 8c6221fd2..8c9a882b6 100644 --- a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp +++ b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp @@ -38,11 +38,13 @@ //#define ENABLE_GENERATE -#define CREATEMSG_CHANNELINFO 0x002 +#define CREATEMSG_CHANNELINFO 0x002 +#define CREATEMSG_CHANNEL_POST_INFO 0x003 /** Constructor */ -CreateGxsChannelMsg::CreateGxsChannelMsg(const RsGxsGroupId &cId) - : QDialog (NULL, Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint), mChannelId(cId) ,mCheckAttachment(true), mAutoMediaThumbNail(false) +CreateGxsChannelMsg::CreateGxsChannelMsg(const RsGxsGroupId &cId, RsGxsMessageId existing_post) + : QDialog (NULL, Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint), + mChannelId(cId) , mOrigPostId(existing_post),mCheckAttachment(true), mAutoMediaThumbNail(false) { /* Invoke the Qt Designer generated object setup routine */ setupUi(this); @@ -555,6 +557,15 @@ void CreateGxsChannelMsg::newChannelMsg() uint32_t token; mChannelQueue->requestGroupInfo(token, RS_TOKREQ_ANSTYPE_SUMMARY, opts, groupIds, CREATEMSG_CHANNELINFO); + + if(!mOrigPostId.isNull()) + { + GxsMsgReq message_ids; + + opts.mReqType = GXS_REQUEST_TYPE_MSG_DATA; + message_ids[mChannelId].push_back(mOrigPostId); + mChannelQueue->requestMsgInfo(token, RS_TOKREQ_ANSTYPE_SUMMARY, opts, message_ids, CREATEMSG_CHANNEL_POST_INFO); + } } } @@ -686,6 +697,39 @@ void CreateGxsChannelMsg::addThumbnail() thumbnail_label->setPixmap(picture); } +void CreateGxsChannelMsg::loadChannelPostInfo(const uint32_t &token) +{ + std::cerr << "CreateGxsChannelMsg::loadChannelPostInfo()"; + std::cerr << std::endl; + + std::vector posts; + rsGxsChannels->getPostData(token, posts); + + if (posts.size() != 1) + { + std::cerr << "CreateGxsChannelMsg::loadChannelPostInfo() ERROR INVALID Number of posts in request" << std::endl; + return ; + } + + // now populate the widget with the channel post data. + const RsGxsChannelPost& post = posts[0]; + + if(post.mMeta.mGroupId != mChannelId || post.mMeta.mMsgId != mOrigPostId) + { + std::cerr << "CreateGxsChannelMsg::loadChannelPostInfo() ERROR INVALID post ID or channel ID" << std::endl; + return ; + } + + subjectEdit->setText(QString::fromUtf8(post.mMeta.mMsgName.c_str())) ; + msgEdit->setText(QString::fromUtf8(post.mMsg.c_str())) ; + + for(std::list::const_iterator it(post.mFiles.begin());it!=post.mFiles.end();++it) + addAttachment(it->mHash,it->mName,it->mSize,true,RsPeerId()); + + picture.loadFromData(post.mThumbnail.mData,post.mThumbnail.mSize,"PNG"); + thumbnail_label->setPixmap(picture); +} + void CreateGxsChannelMsg::loadChannelInfo(const uint32_t &token) { std::cerr << "CreateGxsChannelMsg::loadChannelInfo()"; @@ -719,6 +763,9 @@ void CreateGxsChannelMsg::loadRequest(const TokenQueue *queue, const TokenReques case CREATEMSG_CHANNELINFO: loadChannelInfo(req.mToken); break; + case CREATEMSG_CHANNEL_POST_INFO: + loadChannelPostInfo(req.mToken); + break; default: std::cerr << "CreateGxsChannelMsg::loadRequest() UNKNOWN UserType "; std::cerr << std::endl; diff --git a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.h b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.h index dc1b51751..16cc76426 100644 --- a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.h +++ b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.h @@ -38,7 +38,7 @@ class CreateGxsChannelMsg : public QDialog, public TokenResponse, private Ui::Cr public: /** Default Constructor */ - CreateGxsChannelMsg(const RsGxsGroupId& cId); + CreateGxsChannelMsg(const RsGxsGroupId& cId, RsGxsMessageId existing_post = RsGxsMessageId()); /** Default Destructor */ ~CreateGxsChannelMsg(); @@ -71,6 +71,7 @@ private slots: private: void loadChannelInfo(const uint32_t &token); + void loadChannelPostInfo(const uint32_t &token); void saveChannelInfo(const RsGroupMetaData &group); void parseRsFileListAttachments(const std::string &attachList); @@ -78,7 +79,9 @@ private: bool setThumbNail(const std::string& path, int frame); RsGxsGroupId mChannelId; + RsGxsMessageId mOrigPostId; RsGroupMetaData mChannelMeta; + RsMsgMetaData mOrigMeta; bool mChannelMetaLoaded; std::list mAttachments; diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp index 76c777607..24972b955 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp @@ -67,11 +67,14 @@ GxsChannelPostsWidget::GxsChannelPostsWidget(const RsGxsGroupId &channelId, QWid mStateHelper->addLoadPlaceholder(mTokenTypeGroupData, ui->nameLabel); mStateHelper->addWidget(mTokenTypeGroupData, ui->postButton); + mStateHelper->addWidget(mTokenTypeGroupData, ui->editButton); mStateHelper->addWidget(mTokenTypeGroupData, ui->logoLabel); mStateHelper->addWidget(mTokenTypeGroupData, ui->subscribeToolButton); /* Connect signals */ connect(ui->postButton, SIGNAL(clicked()), this, SLOT(createMsg())); + connect(ui->editButton, SIGNAL(clicked()), this, SLOT(editMsg())); + connect(ui->subscribeToolButton, SIGNAL(subscribe(bool)), this, SLOT(subscribeGroup(bool))); connect(NotifyQt::getInstance(), SIGNAL(settingsChanged()), this, SLOT(settingsChanged())); @@ -211,7 +214,21 @@ void GxsChannelPostsWidget::openComments(uint32_t /*type*/, const RsGxsGroupId & { emit loadComment(groupId, msgId, title); } +void GxsChannelPostsWidget::editMsg() +{ + if (groupId().isNull()) { + return; + } + if (!IS_GROUP_SUBSCRIBED(subscribeFlags())) { + return; + } + + CreateGxsChannelMsg *msgDialog = new CreateGxsChannelMsg(groupId(),mCurrentMessageId); + msgDialog->show(); + + /* window will destroy itself! */ +} void GxsChannelPostsWidget::createMsg() { if (groupId().isNull()) { @@ -244,10 +261,12 @@ void GxsChannelPostsWidget::insertChannelDetails(const RsGxsChannelGroup &group) if (group.mMeta.mSubscribeFlags & GXS_SERV::GROUP_SUBSCRIBE_PUBLISH) { mStateHelper->setWidgetEnabled(ui->postButton, true); + mStateHelper->setWidgetEnabled(ui->editButton, true); } else { mStateHelper->setWidgetEnabled(ui->postButton, false); + mStateHelper->setWidgetEnabled(ui->editButton, false); } ui->subscribeToolButton->setSubscribed(IS_GROUP_SUBSCRIBED(group.mMeta.mSubscribeFlags)); diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.h b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.h index 541fcc506..2d3677b4f 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.h +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.h @@ -79,6 +79,7 @@ protected: private slots: void createMsg(); + void editMsg(); void toggleAutoDownload(); void subscribeGroup(bool subscribe); void filterChanged(int filter); diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.ui b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.ui index e93296003..2a5fdfcfa 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.ui +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.ui @@ -6,8 +6,8 @@ 0 0 - 793 - 465 + 828 + 557 @@ -184,6 +184,20 @@ + + + + Edit current post + + + ... + + + + :/images/edit_24.png:/images/edit_24.png + + + @@ -454,7 +468,7 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt;">Description</span></p></body></html> From 5044ac12cac8614b5f51cdd59b562a8537e42bfd Mon Sep 17 00:00:00 2001 From: csoler Date: Thu, 11 May 2017 23:44:57 +0200 Subject: [PATCH 02/23] moved the edit button from top bar to each channel post --- .../src/gui/feeds/GxsChannelPostItem.cpp | 8 ++++++++ .../src/gui/feeds/GxsChannelPostItem.h | 1 + .../src/gui/feeds/GxsChannelPostItem.ui | 11 +++++++++-- .../gui/gxschannels/GxsChannelPostsWidget.cpp | 19 ------------------- .../gui/gxschannels/GxsChannelPostsWidget.h | 1 - 5 files changed, 18 insertions(+), 22 deletions(-) diff --git a/retroshare-gui/src/gui/feeds/GxsChannelPostItem.cpp b/retroshare-gui/src/gui/feeds/GxsChannelPostItem.cpp index 22d90e5a2..a1d5f69a8 100644 --- a/retroshare-gui/src/gui/feeds/GxsChannelPostItem.cpp +++ b/retroshare-gui/src/gui/feeds/GxsChannelPostItem.cpp @@ -35,6 +35,7 @@ #include "util/HandleRichText.h" #include "util/DateTime.h" #include "util/stringutil.h" +#include "gui/gxschannels/CreateGxsChannelMsg.h" #include @@ -127,6 +128,7 @@ void GxsChannelPostItem::setup() connect(ui->commentButton, SIGNAL(clicked()), this, SLOT(loadComments())); connect(ui->playButton, SIGNAL(clicked()), this, SLOT(play(void))); + connect(ui->editButton, SIGNAL(clicked()), this, SLOT(edit(void))); connect(ui->copyLinkButton, SIGNAL(clicked()), this, SLOT(copyMessageLink())); connect(ui->readButton, SIGNAL(toggled(bool)), this, SLOT(readToggled(bool))); @@ -690,6 +692,12 @@ void GxsChannelPostItem::download() updateItem(); } +void GxsChannelPostItem::edit() +{ + CreateGxsChannelMsg *msgDialog = new CreateGxsChannelMsg(mGroup.mMeta.mGroupId,mPost.mMeta.mMsgId); + msgDialog->show(); +} + void GxsChannelPostItem::play() { std::list::iterator it; diff --git a/retroshare-gui/src/gui/feeds/GxsChannelPostItem.h b/retroshare-gui/src/gui/feeds/GxsChannelPostItem.h index 8574f4e16..a591e5e22 100644 --- a/retroshare-gui/src/gui/feeds/GxsChannelPostItem.h +++ b/retroshare-gui/src/gui/feeds/GxsChannelPostItem.h @@ -78,6 +78,7 @@ private slots: void readAndClearItem(); void download(); void play(); + void edit(); void loadComments(); void readToggled(bool checked); diff --git a/retroshare-gui/src/gui/feeds/GxsChannelPostItem.ui b/retroshare-gui/src/gui/feeds/GxsChannelPostItem.ui index 010436d7b..1d72a0693 100644 --- a/retroshare-gui/src/gui/feeds/GxsChannelPostItem.ui +++ b/retroshare-gui/src/gui/feeds/GxsChannelPostItem.ui @@ -6,8 +6,8 @@ 0 0 - 840 - 180 + 1052 + 338 @@ -332,6 +332,13 @@ + + + + Edit + + + diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp index 24972b955..76c777607 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp @@ -67,14 +67,11 @@ GxsChannelPostsWidget::GxsChannelPostsWidget(const RsGxsGroupId &channelId, QWid mStateHelper->addLoadPlaceholder(mTokenTypeGroupData, ui->nameLabel); mStateHelper->addWidget(mTokenTypeGroupData, ui->postButton); - mStateHelper->addWidget(mTokenTypeGroupData, ui->editButton); mStateHelper->addWidget(mTokenTypeGroupData, ui->logoLabel); mStateHelper->addWidget(mTokenTypeGroupData, ui->subscribeToolButton); /* Connect signals */ connect(ui->postButton, SIGNAL(clicked()), this, SLOT(createMsg())); - connect(ui->editButton, SIGNAL(clicked()), this, SLOT(editMsg())); - connect(ui->subscribeToolButton, SIGNAL(subscribe(bool)), this, SLOT(subscribeGroup(bool))); connect(NotifyQt::getInstance(), SIGNAL(settingsChanged()), this, SLOT(settingsChanged())); @@ -214,21 +211,7 @@ void GxsChannelPostsWidget::openComments(uint32_t /*type*/, const RsGxsGroupId & { emit loadComment(groupId, msgId, title); } -void GxsChannelPostsWidget::editMsg() -{ - if (groupId().isNull()) { - return; - } - if (!IS_GROUP_SUBSCRIBED(subscribeFlags())) { - return; - } - - CreateGxsChannelMsg *msgDialog = new CreateGxsChannelMsg(groupId(),mCurrentMessageId); - msgDialog->show(); - - /* window will destroy itself! */ -} void GxsChannelPostsWidget::createMsg() { if (groupId().isNull()) { @@ -261,12 +244,10 @@ void GxsChannelPostsWidget::insertChannelDetails(const RsGxsChannelGroup &group) if (group.mMeta.mSubscribeFlags & GXS_SERV::GROUP_SUBSCRIBE_PUBLISH) { mStateHelper->setWidgetEnabled(ui->postButton, true); - mStateHelper->setWidgetEnabled(ui->editButton, true); } else { mStateHelper->setWidgetEnabled(ui->postButton, false); - mStateHelper->setWidgetEnabled(ui->editButton, false); } ui->subscribeToolButton->setSubscribed(IS_GROUP_SUBSCRIBED(group.mMeta.mSubscribeFlags)); diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.h b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.h index 2d3677b4f..541fcc506 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.h +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.h @@ -79,7 +79,6 @@ protected: private slots: void createMsg(); - void editMsg(); void toggleAutoDownload(); void subscribeGroup(bool subscribe); void filterChanged(int filter); From 305c5d6debe0a1b90f5d009073c0c23a89546aa1 Mon Sep 17 00:00:00 2001 From: csoler Date: Fri, 12 May 2017 23:54:02 +0200 Subject: [PATCH 03/23] added collapsing of new versions of channel posts --- .../gui/gxschannels/GxsChannelPostsWidget.cpp | 71 +++++++++++++++---- 1 file changed, 59 insertions(+), 12 deletions(-) diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp index 76c777607..6e8170ef1 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp @@ -438,8 +438,6 @@ void GxsChannelPostsWidget::insertChannelPosts(std::vector &po return; } - std::vector::const_reverse_iterator it; - int count = posts.size(); int pos = 0; @@ -447,18 +445,67 @@ void GxsChannelPostsWidget::insertChannelPosts(std::vector &po ui->feedWidget->setSortingEnabled(false); } - for (it = posts.rbegin(); it != posts.rend(); ++it) - { - if (thread && thread->stopped()) { - break; - } + // collect new versions of posts if any - if (thread) { - thread->emitAddPost(qVariantFromValue(*it), related, ++pos, count); - } else { - createPostItem(*it, related); + std::cerr << "Inserting channel posts" << std::endl; + + std::vector new_versions ; + for (uint32_t i=0;i search_map ; + for (uint32_t i=0;i::const_iterator vit = search_map.find(posts[new_versions[i]].mMeta.mOrigMsgId) ; + + if(vit == search_map.end()) // original post not found. Give up. + break ; + + posts[current_index].mMeta.mMsgId.clear(); // clear the msg Id so the post will be ignored + current_index = vit->second ; + } + + RsGxsMessageId orig_msg_id = posts[current_index].mMeta.mMsgId ; // save these two + RsGxsMessageId orig_orig_id = posts[current_index].mMeta.mOrigMsgId ; + + std::cerr << " new version of post " << orig_msg_id << " is " << posts[source_index].mMeta.mMsgId << " at position " << current_index << std::endl; + + posts[current_index] = posts[source_index] ; // copy all the data to the parent (this is to keep the placement of the post in the list) + + posts[current_index].mMeta.mMsgId = orig_msg_id ; + posts[current_index].mMeta.mOrigMsgId = orig_orig_id ; + } + } + + for (std::vector::const_reverse_iterator it = posts.rbegin(); it != posts.rend(); ++it) + if((*it).mMeta.mMsgId.isNull()) + { + if (thread && thread->stopped()) + break; + + if (thread) + thread->emitAddPost(qVariantFromValue(*it), related, ++pos, count); + else + createPostItem(*it, related); } - } if (!thread) { ui->feedWidget->setSortingEnabled(true); From 6859e0d8ca60afd96c0e7a2a284d8111c684b2c2 Mon Sep 17 00:00:00 2001 From: csoler Date: Sat, 13 May 2017 17:13:05 +0200 Subject: [PATCH 04/23] fixed post replacement algorithm in channel editing --- .../gui/gxschannels/CreateGxsChannelMsg.cpp | 7 +- .../gui/gxschannels/GxsChannelPostsWidget.cpp | 68 ++++++++++++++----- 2 files changed, 57 insertions(+), 18 deletions(-) diff --git a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp index 8c9a882b6..507562840 100644 --- a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp +++ b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp @@ -52,7 +52,11 @@ CreateGxsChannelMsg::CreateGxsChannelMsg(const RsGxsGroupId &cId, RsGxsMessageId mChannelQueue = new TokenQueue(rsGxsChannels->getTokenService(), this); headerFrame->setHeaderImage(QPixmap(":/images/channels.png")); - headerFrame->setHeaderText(tr("New Channel Post")); + + if(!existing_post.isNull()) + headerFrame->setHeaderText(tr("Edit Channel Post")); + else + headerFrame->setHeaderText(tr("New Channel Post")); setAttribute ( Qt::WA_DeleteOnClose, true ); @@ -639,6 +643,7 @@ void CreateGxsChannelMsg::sendMessage(const std::string &subject, const std::str post.mMeta.mThreadId.clear() ; post.mMeta.mMsgId.clear() ; + post.mMeta.mOrigMsgId = mOrigPostId; post.mMeta.mMsgName = subject; post.mMsg = msg; post.mFiles = files; diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp index 6e8170ef1..7e2b6a9b5 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp @@ -451,14 +451,22 @@ void GxsChannelPostsWidget::insertChannelPosts(std::vector &po std::vector new_versions ; for (uint32_t i=0;i search_map ; @@ -467,37 +475,60 @@ void GxsChannelPostsWidget::insertChannelPosts(std::vector &po for(uint32_t i=0;i versions ; + std::map::const_iterator vit ; + + while(search_map.end() != (vit=search_map.find(posts[current_index].mMeta.mOrigMsgId))) { - std::map::const_iterator vit = search_map.find(posts[new_versions[i]].mMeta.mOrigMsgId) ; + std::cerr << " post at index " << current_index << " replaces a post at position " << vit->second ; - if(vit == search_map.end()) // original post not found. Give up. + // Now replace the post only if the new versionis more recent. It may happen indeed that the same post has been corrected multiple + // times. In this case, we only need to replace the post with the newest version + + uint32_t prev_index = current_index ; + current_index = vit->second ; + + if(posts[current_index].mMeta.mMsgId.isNull()) // This handles the branching situation where this post has been already erased. No need to go down further. + { + std::cerr << " already erased. Stopping." << std::endl; break ; + } - posts[current_index].mMeta.mMsgId.clear(); // clear the msg Id so the post will be ignored - current_index = vit->second ; + if(posts[current_index].mMeta.mPublishTs < posts[source_index].mMeta.mPublishTs) + { + std::cerr << " and is more recent => following" << std::endl; + + posts[current_index].mMeta.mMsgId.clear(); // clear the msg Id so the post will be ignored + } + else + std::cerr << " but is older -> Stopping" << std::endl; } - - RsGxsMessageId orig_msg_id = posts[current_index].mMeta.mMsgId ; // save these two - RsGxsMessageId orig_orig_id = posts[current_index].mMeta.mOrigMsgId ; - - std::cerr << " new version of post " << orig_msg_id << " is " << posts[source_index].mMeta.mMsgId << " at position " << current_index << std::endl; - - posts[current_index] = posts[source_index] ; // copy all the data to the parent (this is to keep the placement of the post in the list) - - posts[current_index].mMeta.mMsgId = orig_msg_id ; - posts[current_index].mMeta.mOrigMsgId = orig_orig_id ; +// posts[current_index] = posts[source_index] ;// copy all the data of the source post into the oldest post version (this is to keep the placement of the post in the list) +// posts[current_index].mMeta.mOrigMsgId.clear(); +// posts[current_index].mMeta.mMsgId = source_msg_id; } } + std::cerr << "Now adding posts..." << std::endl; + for (std::vector::const_reverse_iterator it = posts.rbegin(); it != posts.rend(); ++it) - if((*it).mMeta.mMsgId.isNull()) + { + std::cerr << " adding post: " << (*it).mMeta.mMsgId ; + + if(!(*it).mMeta.mMsgId.isNull()) { + std::cerr << " added" << std::endl; + if (thread && thread->stopped()) break; @@ -506,6 +537,9 @@ void GxsChannelPostsWidget::insertChannelPosts(std::vector &po else createPostItem(*it, related); } + else + std::cerr << " skipped" << std::endl; + } if (!thread) { ui->feedWidget->setSortingEnabled(true); From 01bb4b09a9e0732de943ed79f350fb7f3e061aa3 Mon Sep 17 00:00:00 2001 From: csoler Date: Sat, 13 May 2017 20:41:56 +0200 Subject: [PATCH 05/23] added ifdefs around debug info and fixed a few bugs in channel post edit --- .../src/gui/feeds/GxsChannelPostItem.cpp | 9 +++++- .../gui/gxschannels/GxsChannelPostsWidget.cpp | 30 ++++++++++++++++--- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/retroshare-gui/src/gui/feeds/GxsChannelPostItem.cpp b/retroshare-gui/src/gui/feeds/GxsChannelPostItem.cpp index a1d5f69a8..40b0dfe6d 100644 --- a/retroshare-gui/src/gui/feeds/GxsChannelPostItem.cpp +++ b/retroshare-gui/src/gui/feeds/GxsChannelPostItem.cpp @@ -66,7 +66,8 @@ GxsChannelPostItem::GxsChannelPostItem(FeedHolder *feedHolder, uint32_t feedId, setup(); - setGroup(group, false); + //setGroup(group, false); + requestGroup(); setPost(post); requestComment(); } @@ -168,6 +169,12 @@ bool GxsChannelPostItem::setGroup(const RsGxsChannelGroup &group, bool doFill) mGroup = group; + // if not publisher, hide the edit button. Without the publish key, there's no way to edit a message. + + std::cerr << "Group subscribe flags = " << std::hex << mGroup.mMeta.mSubscribeFlags << std::dec << std::endl; + if(!IS_GROUP_PUBLISHER(mGroup.mMeta.mSubscribeFlags)) + ui->editButton->hide(); + if (doFill) { fill(); } diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp index 7e2b6a9b5..bbfd44cae 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp @@ -447,7 +447,9 @@ void GxsChannelPostsWidget::insertChannelPosts(std::vector &po // collect new versions of posts if any +#ifdef DEBUG_CHANNEL std::cerr << "Inserting channel posts" << std::endl; +#endif std::vector new_versions ; for (uint32_t i=0;i &po if(posts[i].mMeta.mOrigMsgId == posts[i].mMeta.mMsgId) posts[i].mMeta.mOrigMsgId.clear(); +#ifdef DEBUG_CHANNEL std::cerr << " " << i << ": msg_id=" << posts[i].mMeta.mMsgId << ": orig msg id = " << posts[i].mMeta.mOrigMsgId << std::endl; +#endif if(!posts[i].mMeta.mOrigMsgId.isNull()) new_versions.push_back(i) ; } +#ifdef DEBUG_CHANNEL std::cerr << "New versions: " << new_versions.size() << std::endl; +#endif if(!new_versions.empty()) { +#ifdef DEBUG_CHANNEL std::cerr << " New versions present. Replacing them..." << std::endl; std::cerr << " Creating search map." << std::endl; +#endif // make a quick search map std::map search_map ; @@ -475,7 +483,9 @@ void GxsChannelPostsWidget::insertChannelPosts(std::vector &po for(uint32_t i=0;i &po while(search_map.end() != (vit=search_map.find(posts[current_index].mMeta.mOrigMsgId))) { +#ifdef DEBUG_CHANNEL std::cerr << " post at index " << current_index << " replaces a post at position " << vit->second ; +#endif // Now replace the post only if the new versionis more recent. It may happen indeed that the same post has been corrected multiple // times. In this case, we only need to replace the post with the newest version @@ -500,34 +512,42 @@ void GxsChannelPostsWidget::insertChannelPosts(std::vector &po if(posts[current_index].mMeta.mMsgId.isNull()) // This handles the branching situation where this post has been already erased. No need to go down further. { +#ifdef DEBUG_CHANNEL std::cerr << " already erased. Stopping." << std::endl; +#endif break ; } if(posts[current_index].mMeta.mPublishTs < posts[source_index].mMeta.mPublishTs) { +#ifdef DEBUG_CHANNEL std::cerr << " and is more recent => following" << std::endl; - +#endif posts[current_index].mMeta.mMsgId.clear(); // clear the msg Id so the post will be ignored } +#ifdef DEBUG_CHANNEL else std::cerr << " but is older -> Stopping" << std::endl; +#endif } -// posts[current_index] = posts[source_index] ;// copy all the data of the source post into the oldest post version (this is to keep the placement of the post in the list) -// posts[current_index].mMeta.mOrigMsgId.clear(); -// posts[current_index].mMeta.mMsgId = source_msg_id; } } +#ifdef DEBUG_CHANNEL std::cerr << "Now adding posts..." << std::endl; +#endif for (std::vector::const_reverse_iterator it = posts.rbegin(); it != posts.rend(); ++it) { +#ifdef DEBUG_CHANNEL std::cerr << " adding post: " << (*it).mMeta.mMsgId ; +#endif if(!(*it).mMeta.mMsgId.isNull()) { +#ifdef DEBUG_CHANNEL std::cerr << " added" << std::endl; +#endif if (thread && thread->stopped()) break; @@ -537,8 +557,10 @@ void GxsChannelPostsWidget::insertChannelPosts(std::vector &po else createPostItem(*it, related); } +#ifdef DEBUG_CHANNEL else std::cerr << " skipped" << std::endl; +#endif } if (!thread) { From af575455010581a55c5f86c310185d7e7e40fd58 Mon Sep 17 00:00:00 2001 From: csoler Date: Sun, 14 May 2017 20:59:43 +0200 Subject: [PATCH 06/23] removed unused button in GxsChannelPostsWidget --- .../src/gui/gxschannels/GxsChannelPostsWidget.ui | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.ui b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.ui index 2a5fdfcfa..47f98bcdf 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.ui +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.ui @@ -6,7 +6,7 @@ 0 0 - 828 + 880 557 @@ -184,20 +184,6 @@ - - - - Edit current post - - - ... - - - - :/images/edit_24.png:/images/edit_24.png - - - From f832f3dc82c20835f000eb2bebf629ada6824d6e Mon Sep 17 00:00:00 2001 From: csoler Date: Sun, 14 May 2017 21:26:45 +0200 Subject: [PATCH 07/23] added delete button to channel attached files --- retroshare-gui/src/gui/feeds/SubFileItem.cpp | 18 +++-- retroshare-gui/src/gui/feeds/SubFileItem.h | 5 ++ retroshare-gui/src/gui/feeds/SubFileItem.ui | 71 ++++++++++++------- .../gui/gxschannels/CreateGxsChannelMsg.cpp | 22 +++++- .../src/gui/gxschannels/CreateGxsChannelMsg.h | 1 + .../gui/gxschannels/CreateGxsChannelMsg.ui | 10 +-- 6 files changed, 92 insertions(+), 35 deletions(-) diff --git a/retroshare-gui/src/gui/feeds/SubFileItem.cpp b/retroshare-gui/src/gui/feeds/SubFileItem.cpp index f8451e5ee..ac4745ef8 100644 --- a/retroshare-gui/src/gui/feeds/SubFileItem.cpp +++ b/retroshare-gui/src/gui/feeds/SubFileItem.cpp @@ -97,11 +97,12 @@ SubFileItem::SubFileItem(const RsFileHash &hash, const std::string &name, const void SubFileItem::Setup() { - connect( playButton, SIGNAL( clicked( void ) ), this, SLOT( play ( void ) ) ); - connect( downloadButton, SIGNAL( clicked( void ) ), this, SLOT( download ( void ) ) ); - connect( cancelButton, SIGNAL( clicked( void ) ), this, SLOT( cancel ( void ) ) ); - connect( copyLinkButton, SIGNAL( clicked( void ) ), this, SLOT( copyLink ( void ) ) ); - connect( saveButton, SIGNAL( clicked( void ) ), this, SLOT( save ( void ) ) ); + connect( playButton, SIGNAL( clicked( ) ), this, SLOT( play ( ) ) ); + connect( downloadButton, SIGNAL( clicked( ) ), this, SLOT( download ( ) ) ); + connect( cancelButton, SIGNAL( clicked( ) ), this, SLOT( cancel( ) ) ); + connect( deleteButton, SIGNAL( clicked( ) ), this, SLOT( del( ) ) ); + connect( copyLinkButton, SIGNAL( clicked( ) ), this, SLOT( copyLink ( ) ) ); + connect( saveButton, SIGNAL( clicked( ) ), this, SLOT( save ( ) ) ); /* once off check - if remote, check if we have it * NB: This check might be expensive - and it'll happen often! @@ -129,12 +130,19 @@ void SubFileItem::Setup() } } + deleteButton->setVisible(mFlag & SFI_FLAG_DELETE); + smaller(); updateItemStatic(); updateItem(); } +void SubFileItem::del() +{ + emit wantsToBeDeleted(); +} + bool SubFileItem::done() { return (mMode >= SFI_STATE_LOCAL); diff --git a/retroshare-gui/src/gui/feeds/SubFileItem.h b/retroshare-gui/src/gui/feeds/SubFileItem.h index c3e094882..fac68b792 100644 --- a/retroshare-gui/src/gui/feeds/SubFileItem.h +++ b/retroshare-gui/src/gui/feeds/SubFileItem.h @@ -41,6 +41,7 @@ const uint32_t SFI_TYPE_CHANNEL = 0x0010; const uint32_t SFI_TYPE_ATTACH = 0x0020; const uint32_t SFI_FLAG_CREATE = 0x1000; +const uint32_t SFI_FLAG_DELETE = 0x2000; //! This create a gui widget that allows users to access files shared by user @@ -86,10 +87,14 @@ private slots: void toggle(); void cancel(); + void del(); void save(); void updateItem(); +signals: + void wantsToBeDeleted(); + private: void Setup(); diff --git a/retroshare-gui/src/gui/feeds/SubFileItem.ui b/retroshare-gui/src/gui/feeds/SubFileItem.ui index 209f12ed8..d5c6b7181 100644 --- a/retroshare-gui/src/gui/feeds/SubFileItem.ui +++ b/retroshare-gui/src/gui/feeds/SubFileItem.ui @@ -6,12 +6,21 @@ 0 0 - 464 - 71 + 547 + 128 - + + 0 + + + 0 + + + 0 + + 0 @@ -26,27 +35,6 @@ QFrame::Sunken - - - - - - - 75 - true - true - - - - File Name - - - true - - - - - @@ -210,6 +198,41 @@ + + + + Remove this item + + + + + + + :/images/denied16.png:/images/denied16.png + + + + + + + + + + + + 75 + true + true + + + + File Name + + + true + + + diff --git a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp index 507562840..bd17927a9 100644 --- a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp +++ b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp @@ -351,7 +351,7 @@ void CreateGxsChannelMsg::addAttachment(const RsFileHash &hash, const std::strin /* add widget in for new destination */ - uint32_t flags = SFI_TYPE_CHANNEL; + uint32_t flags = SFI_TYPE_CHANNEL | SFI_FLAG_DELETE; if (local) { flags |= SFI_STATE_LOCAL; @@ -363,6 +363,8 @@ void CreateGxsChannelMsg::addAttachment(const RsFileHash &hash, const std::strin SubFileItem *file = new SubFileItem(hash, fname, "", size, flags, srcId); // destroyed when fileFrame (this subfileitem) is destroyed + connect(file,SIGNAL(wantsToBeDeleted()),this,SLOT(deleteAttachment())) ; + mAttachments.push_back(file); QLayout *layout = fileFrame->layout(); layout->addWidget(file); @@ -375,6 +377,24 @@ void CreateGxsChannelMsg::addAttachment(const RsFileHash &hash, const std::strin return; } +void CreateGxsChannelMsg::deleteAttachment() +{ + // grab the item who sent the request + + SubFileItem *file_item = qobject_cast(QObject::sender()); + + for(std::list::iterator it(mAttachments.begin());it!=mAttachments.end();) + if(*it == file_item) + { + SubFileItem *item = *it ; + it = mAttachments.erase(it) ; + fileFrame->layout()->removeWidget(file_item) ; + delete item ; + } + else + ++it; +} + void CreateGxsChannelMsg::addExtraFile() { /* add a SubFileItem to the attachment section */ diff --git a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.h b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.h index 16cc76426..37404a23a 100644 --- a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.h +++ b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.h @@ -60,6 +60,7 @@ protected: private slots: void addExtraFile(); void checkAttachmentReady(); + void deleteAttachment(); void cancelMsg(); void sendMsg(); diff --git a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.ui b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.ui index c9e4c3346..180a79672 100644 --- a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.ui +++ b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.ui @@ -6,8 +6,8 @@ 0 0 - 581 - 479 + 875 + 659 @@ -60,7 +60,7 @@ false - 0 + 1 @@ -302,8 +302,8 @@ p, li { white-space: pre-wrap; } 0 0 - 523 - 24 + 767 + 42 From 18e37deba0f9d19629e95753a8dad3320102612f Mon Sep 17 00:00:00 2001 From: csoler Date: Sun, 14 May 2017 21:41:26 +0200 Subject: [PATCH 08/23] hide download buttons when the file is local in sub file item --- retroshare-gui/src/gui/feeds/SubFileItem.cpp | 4 +++- retroshare-gui/src/gui/feeds/SubFileItem.h | 5 +++-- retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/retroshare-gui/src/gui/feeds/SubFileItem.cpp b/retroshare-gui/src/gui/feeds/SubFileItem.cpp index ac4745ef8..209bffa28 100644 --- a/retroshare-gui/src/gui/feeds/SubFileItem.cpp +++ b/retroshare-gui/src/gui/feeds/SubFileItem.cpp @@ -130,7 +130,9 @@ void SubFileItem::Setup() } } - deleteButton->setVisible(mFlag & SFI_FLAG_DELETE); + deleteButton->setVisible(mFlag & SFI_FLAG_ALLOW_DELETE); + downloadButton->setVisible(mMode < SFI_STATE_LOCAL); + cancelButton->setVisible(mMode < SFI_STATE_LOCAL); smaller(); updateItemStatic(); diff --git a/retroshare-gui/src/gui/feeds/SubFileItem.h b/retroshare-gui/src/gui/feeds/SubFileItem.h index fac68b792..330725a4c 100644 --- a/retroshare-gui/src/gui/feeds/SubFileItem.h +++ b/retroshare-gui/src/gui/feeds/SubFileItem.h @@ -40,8 +40,9 @@ const uint32_t SFI_STATE_UPLOAD = 0x0006; const uint32_t SFI_TYPE_CHANNEL = 0x0010; const uint32_t SFI_TYPE_ATTACH = 0x0020; -const uint32_t SFI_FLAG_CREATE = 0x1000; -const uint32_t SFI_FLAG_DELETE = 0x2000; +const uint32_t SFI_FLAG_CREATE = 0x1000; +const uint32_t SFI_FLAG_ALLOW_DELETE = 0x2000; +const uint32_t SFI_FLAG_NO_DOWNLOAD = 0x4000; //! This create a gui widget that allows users to access files shared by user diff --git a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp index bd17927a9..ed8fb6f07 100644 --- a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp +++ b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp @@ -351,7 +351,7 @@ void CreateGxsChannelMsg::addAttachment(const RsFileHash &hash, const std::strin /* add widget in for new destination */ - uint32_t flags = SFI_TYPE_CHANNEL | SFI_FLAG_DELETE; + uint32_t flags = SFI_TYPE_CHANNEL | SFI_FLAG_ALLOW_DELETE ; if (local) { flags |= SFI_STATE_LOCAL; From d335d45b82cb5d3ced8158e6f3243260518eb8b6 Mon Sep 17 00:00:00 2001 From: thunder2 Date: Mon, 15 May 2017 09:43:47 +0200 Subject: [PATCH 09/23] Fixed build script for Windows --- build_scripts/Windows/build-libs/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_scripts/Windows/build-libs/Makefile b/build_scripts/Windows/build-libs/Makefile index 75aedb421..11b60f77d 100755 --- a/build_scripts/Windows/build-libs/Makefile +++ b/build_scripts/Windows/build-libs/Makefile @@ -266,7 +266,7 @@ libs/curl-$(CURL_VERSION): $(DOWNLOAD_PATH)/curl-$(CURL_VERSION).tar.gz sqlcipher: libs/sqlcipher-$(SQLCIPHER_VERSION) $(DOWNLOAD_PATH)/tcl$(TCL_VERSION)-src.tar.gz: - wget http://prdownloads.sourceforge.net/tcl/tcl$(TCL_VERSION)-src.tar.gz -O $(DOWNLOAD_PATH)/tcl$(TCL_VERSION)-src.tar.gz + wget --no-check-certificate http://downloads.sourceforge.net/project/tcl/Tcl/$(TCL_VERSION)/tcl$(TCL_VERSION)-src.tar.gz -O $(DOWNLOAD_PATH)/tcl$(TCL_VERSION)-src.tar.gz $(DOWNLOAD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz: wget --no-check-certificate https://github.com/sqlcipher/sqlcipher/archive/v$(SQLCIPHER_VERSION).tar.gz -O $(DOWNLOAD_PATH)/sqlcipher-$(SQLCIPHER_VERSION).tar.gz From 84e588b7e03eab4bb7b0aabff7624ac2f92d3568 Mon Sep 17 00:00:00 2001 From: csoler Date: Mon, 15 May 2017 21:37:22 +0200 Subject: [PATCH 10/23] switch file to REMOTE state in subfileitem if the attachment has already been checked in the past but the file is not here anymore --- retroshare-gui/src/gui/feeds/SubFileItem.cpp | 8 ++++++-- retroshare-gui/src/gui/feeds/SubFileItem.h | 6 +++--- .../src/gui/gxschannels/CreateGxsChannelMsg.cpp | 16 ++++++---------- .../src/gui/gxschannels/CreateGxsChannelMsg.h | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/retroshare-gui/src/gui/feeds/SubFileItem.cpp b/retroshare-gui/src/gui/feeds/SubFileItem.cpp index 209bffa28..acaf76299 100644 --- a/retroshare-gui/src/gui/feeds/SubFileItem.cpp +++ b/retroshare-gui/src/gui/feeds/SubFileItem.cpp @@ -186,7 +186,7 @@ void SubFileItem::updateItemStatic() } /* get full path for local file */ - if ((mMode == SFI_STATE_LOCAL) || (mMode == SFI_STATE_UPLOAD)) + if (((mMode == SFI_STATE_LOCAL) || (mMode == SFI_STATE_UPLOAD))) { #ifdef DEBUG_ITEM std::cerr << "SubFileItem::updateItemStatic() STATE=Local/Upload checking path"; @@ -200,7 +200,10 @@ void SubFileItem::updateItemStatic() /* look up path */ if (!rsFiles->FileDetails(mFileHash, hintflags, fi)) { - mMode = SFI_STATE_ERROR; + if(mFlag & SFI_FLAG_ASSUME_FILE_READY) + mMode = SFI_STATE_REMOTE; + else + mMode = SFI_STATE_ERROR; #ifdef DEBUG_ITEM std::cerr << "SubFileItem::updateItemStatic() STATE=>Error No Details"; std::cerr << std::endl; @@ -251,6 +254,7 @@ void SubFileItem::updateItemStatic() case SFI_STATE_REMOTE: playButton->setEnabled(false); downloadButton->setEnabled(true); + downloadButton->setVisible(true); cancelButton->setEnabled(false); progressBar->setValue(0); diff --git a/retroshare-gui/src/gui/feeds/SubFileItem.h b/retroshare-gui/src/gui/feeds/SubFileItem.h index 330725a4c..1228c9b88 100644 --- a/retroshare-gui/src/gui/feeds/SubFileItem.h +++ b/retroshare-gui/src/gui/feeds/SubFileItem.h @@ -40,9 +40,9 @@ const uint32_t SFI_STATE_UPLOAD = 0x0006; const uint32_t SFI_TYPE_CHANNEL = 0x0010; const uint32_t SFI_TYPE_ATTACH = 0x0020; -const uint32_t SFI_FLAG_CREATE = 0x1000; -const uint32_t SFI_FLAG_ALLOW_DELETE = 0x2000; -const uint32_t SFI_FLAG_NO_DOWNLOAD = 0x4000; +const uint32_t SFI_FLAG_CREATE = 0x1000; +const uint32_t SFI_FLAG_ALLOW_DELETE = 0x2000; +const uint32_t SFI_FLAG_ASSUME_FILE_READY = 0x4000; //! This create a gui widget that allows users to access files shared by user diff --git a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp index ed8fb6f07..bc2b5a2d7 100644 --- a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp +++ b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp @@ -343,7 +343,7 @@ void CreateGxsChannelMsg::parseRsFileListAttachments(const std::string &attachLi } -void CreateGxsChannelMsg::addAttachment(const RsFileHash &hash, const std::string &fname, uint64_t size, bool local, const RsPeerId &srcId) +void CreateGxsChannelMsg::addAttachment(const RsFileHash &hash, const std::string &fname, uint64_t size, bool local, const RsPeerId &srcId, bool assume_file_ready) { /* add a SubFileItem to the attachment section */ std::cerr << "CreateGxsChannelMsg::addAttachment()"; @@ -352,14 +352,14 @@ void CreateGxsChannelMsg::addAttachment(const RsFileHash &hash, const std::strin /* add widget in for new destination */ uint32_t flags = SFI_TYPE_CHANNEL | SFI_FLAG_ALLOW_DELETE ; + + if(assume_file_ready) + flags |= SFI_FLAG_ASSUME_FILE_READY; + if (local) - { flags |= SFI_STATE_LOCAL; - } else - { flags |= SFI_STATE_REMOTE; - } SubFileItem *file = new SubFileItem(hash, fname, "", size, flags, srcId); // destroyed when fileFrame (this subfileitem) is destroyed @@ -370,11 +370,7 @@ void CreateGxsChannelMsg::addAttachment(const RsFileHash &hash, const std::strin layout->addWidget(file); if (mCheckAttachment) - { checkAttachmentReady(); - } - - return; } void CreateGxsChannelMsg::deleteAttachment() @@ -749,7 +745,7 @@ void CreateGxsChannelMsg::loadChannelPostInfo(const uint32_t &token) msgEdit->setText(QString::fromUtf8(post.mMsg.c_str())) ; for(std::list::const_iterator it(post.mFiles.begin());it!=post.mFiles.end();++it) - addAttachment(it->mHash,it->mName,it->mSize,true,RsPeerId()); + addAttachment(it->mHash,it->mName,it->mSize,true,RsPeerId(),true); picture.loadFromData(post.mThumbnail.mData,post.mThumbnail.mSize,"PNG"); thumbnail_label->setPixmap(picture); diff --git a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.h b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.h index 37404a23a..4a99ad9aa 100644 --- a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.h +++ b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.h @@ -44,7 +44,7 @@ public: ~CreateGxsChannelMsg(); void addAttachment(const std::string &path); - void addAttachment(const RsFileHash &hash, const std::string &fname, uint64_t size, bool local, const RsPeerId &srcId); + void addAttachment(const RsFileHash &hash, const std::string &fname, uint64_t size, bool local, const RsPeerId &srcId,bool assume_file_ready = false); void newChannelMsg(); From 2bc36bc06c215a127a87b7884f3dbfd052db007b Mon Sep 17 00:00:00 2001 From: csoler Date: Mon, 15 May 2017 22:13:36 +0200 Subject: [PATCH 11/23] properly merge new version feed items in channels when some items are already present --- .../gui/gxschannels/CreateGxsChannelMsg.cpp | 18 +++++++++++++++ .../gui/gxschannels/GxsChannelPostsWidget.cpp | 22 ++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp index bc2b5a2d7..beaa17042 100644 --- a/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp +++ b/retroshare-gui/src/gui/gxschannels/CreateGxsChannelMsg.cpp @@ -41,6 +41,8 @@ #define CREATEMSG_CHANNELINFO 0x002 #define CREATEMSG_CHANNEL_POST_INFO 0x003 +// #define DEBUG_CREATE_GXS_MSG + /** Constructor */ CreateGxsChannelMsg::CreateGxsChannelMsg(const RsGxsGroupId &cId, RsGxsMessageId existing_post) : QDialog (NULL, Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint), @@ -346,8 +348,10 @@ void CreateGxsChannelMsg::parseRsFileListAttachments(const std::string &attachLi void CreateGxsChannelMsg::addAttachment(const RsFileHash &hash, const std::string &fname, uint64_t size, bool local, const RsPeerId &srcId, bool assume_file_ready) { /* add a SubFileItem to the attachment section */ +#ifdef DEBUG_CREATE_GXS_MSG std::cerr << "CreateGxsChannelMsg::addAttachment()"; std::cerr << std::endl; +#endif /* add widget in for new destination */ @@ -394,8 +398,10 @@ void CreateGxsChannelMsg::deleteAttachment() void CreateGxsChannelMsg::addExtraFile() { /* add a SubFileItem to the attachment section */ +#ifdef DEBUG_CREATE_GXS_MSG std::cerr << "CreateGxsChannelMsg::addExtraFile() opening file dialog"; std::cerr << std::endl; +#endif QStringList files; if (misc::getOpenFileNames(this, RshareSettings::LASTDIR_EXTRAFILE, tr("Add Extra File"), "", files)) { @@ -408,8 +414,10 @@ void CreateGxsChannelMsg::addExtraFile() void CreateGxsChannelMsg::addAttachment(const std::string &path) { /* add a SubFileItem to the attachment section */ +#ifdef DEBUG_CREATE_GXS_MSG std::cerr << "CreateGxsChannelMsg::addAttachment()"; std::cerr << std::endl; +#endif if(mAutoMediaThumbNail) setThumbNail(path, 2000); @@ -544,8 +552,10 @@ void CreateGxsChannelMsg::checkAttachmentReady() void CreateGxsChannelMsg::cancelMsg() { +#ifdef DEBUG_CREATE_GXS_MSG std::cerr << "CreateGxsChannelMsg::cancelMsg() :" << "Deleting EXTRA attachments" << std::endl; +#endif std::cerr << std::endl; @@ -600,8 +610,10 @@ void CreateGxsChannelMsg::saveChannelInfo(const RsGroupMetaData &meta) void CreateGxsChannelMsg::sendMsg() { +#ifdef DEBUG_CREATE_GXS_MSG std::cerr << "CreateGxsChannelMsg::sendMsg()"; std::cerr << std::endl; +#endif /* construct message bits */ std::string subject = std::string(misc::removeNewLine(subjectEdit->text()).toUtf8()); @@ -720,8 +732,10 @@ void CreateGxsChannelMsg::addThumbnail() void CreateGxsChannelMsg::loadChannelPostInfo(const uint32_t &token) { +#ifdef DEBUG_CREATE_GXS_MSG std::cerr << "CreateGxsChannelMsg::loadChannelPostInfo()"; std::cerr << std::endl; +#endif std::vector posts; rsGxsChannels->getPostData(token, posts); @@ -753,8 +767,10 @@ void CreateGxsChannelMsg::loadChannelPostInfo(const uint32_t &token) void CreateGxsChannelMsg::loadChannelInfo(const uint32_t &token) { +#ifdef DEBUG_CREATE_GXS_MSG std::cerr << "CreateGxsChannelMsg::loadChannelInfo()"; std::cerr << std::endl; +#endif std::list groupInfo; rsGxsChannels->getGroupSummary(token, groupInfo); @@ -773,8 +789,10 @@ void CreateGxsChannelMsg::loadChannelInfo(const uint32_t &token) void CreateGxsChannelMsg::loadRequest(const TokenQueue *queue, const TokenRequest &req) { +#ifdef DEBUG_CREATE_GXS_MSG std::cerr << "CreateGxsChannelMsg::loadRequest() UserType: " << req.mUserType; std::cerr << std::endl; +#endif if (queue == mChannelQueue) { diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp index bbfd44cae..bae5cfee4 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp @@ -398,7 +398,27 @@ void GxsChannelPostsWidget::filterChanged(int filter) void GxsChannelPostsWidget::createPostItem(const RsGxsChannelPost &post, bool related) { GxsChannelPostItem *item = NULL; - if (related) { + + if(!post.mMeta.mOrigMsgId.isNull()) + { + FeedItem *feedItem = ui->feedWidget->findGxsFeedItem(post.mMeta.mGroupId, post.mMeta.mOrigMsgId); + item = dynamic_cast(feedItem); + + if(item) + { + ui->feedWidget->removeFeedItem(item) ; + RsGxsChannelGroup dummyGroup; + dummyGroup.mMeta.mGroupId = groupId(); + dummyGroup.mMeta.mSubscribeFlags = 0xffffffff; + GxsChannelPostItem *item = new GxsChannelPostItem(this, 0, dummyGroup, post, true, false); + ui->feedWidget->addFeedItem(item, ROLE_PUBLISH, QDateTime::fromTime_t(post.mMeta.mPublishTs)); + + return ; + } + } + + if (related) + { FeedItem *feedItem = ui->feedWidget->findGxsFeedItem(post.mMeta.mGroupId, post.mMeta.mMsgId); item = dynamic_cast(feedItem); } From fd136c1a30b04ce993dd6d175a1761b82962882e Mon Sep 17 00:00:00 2001 From: csoler Date: Tue, 16 May 2017 10:24:23 +0200 Subject: [PATCH 12/23] made gxs comments multi-lines --- .../src/gui/gxs/GxsCommentTreeWidget.cpp | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.cpp b/retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.cpp index a99e815c7..f8fcdbdd4 100644 --- a/retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.cpp +++ b/retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.cpp @@ -22,8 +22,12 @@ */ #include +#include +#include +#include #include #include +#include #include "gui/common/RSElidedItemDelegate.h" #include "gui/gxs/GxsCommentTreeWidget.h" @@ -52,6 +56,67 @@ #define IMAGE_VOTEUP ":/images/vote_up.png" #define IMAGE_VOTEDOWN ":/images/vote_down.png" +// This class allows to draw the item using an appropriate size + +class MultiLinesCommentDelegate: public QStyledItemDelegate +{ +public: + MultiLinesCommentDelegate(QFontMetricsF f) : qf(f){} + + QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const + { + return index.data(Qt::UserRole+1).toSize() ; + } + + virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const + { + Q_ASSERT(index.isValid()); + + QStyleOptionViewItemV4 opt = option; + initStyleOption(&opt, index); + // disable default icon + opt.icon = QIcon(); + opt.text = QString(); + // draw default item + QApplication::style()->drawControl(QStyle::CE_ItemViewItem, &opt, painter, 0); + + const QRect r = option.rect; + + QTextDocument td ; + td.setHtml(""+index.data(Qt::DisplayRole).toString()+""); + QSizeF s = td.documentLayout()->documentSize(); + + int m = QFontMetricsF(QFont()).height(); + + QSize full_area(std::min(r.width(),(int)s.width())+m,std::min(r.height(),(int)s.height())+m); + + QPixmap px(full_area.width(),full_area.height()); + px.fill(); + QPainter p(&px) ; + p.setRenderHint(QPainter::Antialiasing); + + QPainterPath path ; + //path.addRoundedRect(QRectF(m/4.0f,m/4.0f,s.width()+m/2.0,s.height()+m/2.0),m,m) ; + path.addRoundedRect(QRectF(m/7.0,m/7.0,s.width()+m/2.0,s.height()+m/2.0),m,m) ; + QPen pen(Qt::gray,m/7.0f); + p.setPen(pen); + p.fillPath(path,QColor::fromRgb(250,230,200)); // Would be nice to vary the color according to the post author + p.drawPath(path); + + QAbstractTextDocumentLayout::PaintContext ctx; + ctx.clip = QRectF(0,0,s.width(),s.height()); + p.translate(QPointF(m/2.0,m/2.0)); + td.documentLayout()->draw( &p, ctx ); + + painter->drawPixmap(r.topLeft(),px); + + const_cast(index.model())->setData(index,px.size(),Qt::UserRole+1); + } + +private: + QFontMetricsF qf; +}; + GxsCommentTreeWidget::GxsCommentTreeWidget(QWidget *parent) :QTreeWidget(parent), mTokenQueue(NULL), mRsTokenService(NULL), mCommentService(NULL) { @@ -62,6 +127,9 @@ GxsCommentTreeWidget::GxsCommentTreeWidget(QWidget *parent) itemDelegate->setSpacing(QSize(0, 2)); setItemDelegate(itemDelegate); setWordWrap(true); + + setItemDelegateForColumn(PCITEM_COLUMN_COMMENT,new MultiLinesCommentDelegate(QFontMetricsF(font()))) ; + // QFont font = QFont("ARIAL", 10); // font.setBold(true); From d5ec641f9e074db828b9b7008b368a3aa332e545 Mon Sep 17 00:00:00 2001 From: csoler Date: Tue, 16 May 2017 19:45:27 +0200 Subject: [PATCH 13/23] changing background color as a function of commenter ID (needs to be further adapted to all styles) --- retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.cpp b/retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.cpp index f8fcdbdd4..c9e930725 100644 --- a/retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.cpp +++ b/retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.cpp @@ -96,11 +96,10 @@ public: p.setRenderHint(QPainter::Antialiasing); QPainterPath path ; - //path.addRoundedRect(QRectF(m/4.0f,m/4.0f,s.width()+m/2.0,s.height()+m/2.0),m,m) ; path.addRoundedRect(QRectF(m/7.0,m/7.0,s.width()+m/2.0,s.height()+m/2.0),m,m) ; QPen pen(Qt::gray,m/7.0f); p.setPen(pen); - p.fillPath(path,QColor::fromRgb(250,230,200)); // Would be nice to vary the color according to the post author + p.fillPath(path,QColor::fromHsv( index.data(Qt::UserRole+2).toInt()/255.0*360,40,200)); // Would be nice to vary the color according to the post author p.drawPath(path); QAbstractTextDocumentLayout::PaintContext ctx; @@ -509,6 +508,7 @@ void GxsCommentTreeWidget::service_loadThread(const uint32_t &token) RsGxsId authorId = comment.mMeta.mAuthorId; item->setId(authorId, PCITEM_COLUMN_AUTHOR, false); + item->setData(PCITEM_COLUMN_COMMENT,Qt::UserRole+2,QVariant(authorId.toByteArray()[1])); text = QString::number(comment.mScore); item->setText(PCITEM_COLUMN_SCORE, text); From 6b09fa0f6781720666f92ae221b9c89f7f3b54ca Mon Sep 17 00:00:00 2001 From: csoler Date: Thu, 18 May 2017 22:31:52 +0200 Subject: [PATCH 14/23] allow GxsFeedItems to have versions. Unfinished (does not compile) --- retroshare-gui/src/gui/NewsFeed.cpp | 2 +- retroshare-gui/src/gui/NewsFeed.h | 2 +- retroshare-gui/src/gui/Posted/PostedItem.cpp | 8 ++- .../src/gui/Posted/PostedListWidget.cpp | 4 +- .../src/gui/Posted/PostedListWidget.h | 2 +- retroshare-gui/src/gui/feeds/FeedHolder.h | 2 +- .../src/gui/gxs/GxsCommentContainer.cpp | 4 +- .../src/gui/gxs/GxsCommentContainer.h | 6 +- .../src/gui/gxs/GxsCommentDialog.cpp | 16 ++--- retroshare-gui/src/gui/gxs/GxsCommentDialog.h | 7 +- .../src/gui/gxs/GxsCommentTreeWidget.cpp | 72 +++++++++++-------- .../src/gui/gxs/GxsCommentTreeWidget.h | 12 ++-- .../src/gui/gxs/GxsGroupFrameDialog.cpp | 17 +++-- .../src/gui/gxs/GxsGroupFrameDialog.h | 2 +- .../src/gui/gxs/GxsMessageFrameWidget.h | 2 +- .../gui/gxschannels/GxsChannelPostsWidget.cpp | 4 +- .../gui/gxschannels/GxsChannelPostsWidget.h | 2 +- 17 files changed, 93 insertions(+), 71 deletions(-) diff --git a/retroshare-gui/src/gui/NewsFeed.cpp b/retroshare-gui/src/gui/NewsFeed.cpp index fc42faf7f..4b08caec9 100644 --- a/retroshare-gui/src/gui/NewsFeed.cpp +++ b/retroshare-gui/src/gui/NewsFeed.cpp @@ -1403,7 +1403,7 @@ void NewsFeed::openChat(const RsPeerId &peerId) ChatDialog::chatFriend(ChatId(peerId)); } -void NewsFeed::openComments(uint32_t /*type*/, const RsGxsGroupId &/*groupId*/, const RsGxsMessageId &/*msgId*/, const QString &/*title*/) +void NewsFeed::openComments(uint32_t /*type*/, const RsGxsGroupId &/*groupId*/, const QVector& versions,const RsGxsMessageId &/*msgId*/, const QString &/*title*/) { std::cerr << "NewsFeed::openComments() Not Handled Yet"; std::cerr << std::endl; diff --git a/retroshare-gui/src/gui/NewsFeed.h b/retroshare-gui/src/gui/NewsFeed.h index 28b8dabaa..b97476435 100644 --- a/retroshare-gui/src/gui/NewsFeed.h +++ b/retroshare-gui/src/gui/NewsFeed.h @@ -58,7 +58,7 @@ public: virtual QScrollArea *getScrollArea(); virtual void deleteFeedItem(QWidget *item, uint32_t type); virtual void openChat(const RsPeerId& peerId); - virtual void openComments(uint32_t type, const RsGxsGroupId &groupId, const RsGxsMessageId &msgId, const QString &title); + virtual void openComments(uint32_t type, const RsGxsGroupId &groupId, const QVector &versions, const RsGxsMessageId &msgId, const QString &title); static void testFeeds(uint notifyFlags); static void testFeed(FeedNotify *feedNotify); diff --git a/retroshare-gui/src/gui/Posted/PostedItem.cpp b/retroshare-gui/src/gui/Posted/PostedItem.cpp index 8541e2c3e..d26b1e5c8 100644 --- a/retroshare-gui/src/gui/Posted/PostedItem.cpp +++ b/retroshare-gui/src/gui/Posted/PostedItem.cpp @@ -411,7 +411,13 @@ void PostedItem::loadComments() if (mFeedHolder) { QString title = QString::fromUtf8(mPost.mMeta.mMsgName.c_str()); - mFeedHolder->openComments(0, mPost.mMeta.mGroupId, mPost.mMeta.mMsgId, title); + +#warning (csoler) Posted item versions not handled yet. When it is the case, start here. + + QVector post_versions ; + post_versions.push_back(mPost.mMeta.mMsgId) ; + + mFeedHolder->openComments(0, mPost.mMeta.mGroupId, post_versions,mPost.mMeta.mMsgId, title); } } diff --git a/retroshare-gui/src/gui/Posted/PostedListWidget.cpp b/retroshare-gui/src/gui/Posted/PostedListWidget.cpp index a333d3fbd..d321933eb 100644 --- a/retroshare-gui/src/gui/Posted/PostedListWidget.cpp +++ b/retroshare-gui/src/gui/Posted/PostedListWidget.cpp @@ -139,9 +139,9 @@ void PostedListWidget::openChat(const RsPeerId & /*peerId*/) return; } -void PostedListWidget::openComments(uint32_t /*feed_type*/, const RsGxsGroupId &groupId, const RsGxsMessageId &msgId, const QString &title) +void PostedListWidget::openComments(uint32_t /*feed_type*/, const RsGxsGroupId &groupId, const QVector &versions, const RsGxsMessageId &msgId, const QString &title) { - emit loadComment(groupId, msgId, title); + emit loadComment(groupId, versions,msgId, title); } void PostedListWidget::newPost() diff --git a/retroshare-gui/src/gui/Posted/PostedListWidget.h b/retroshare-gui/src/gui/Posted/PostedListWidget.h index be6c5411f..89f95e995 100644 --- a/retroshare-gui/src/gui/Posted/PostedListWidget.h +++ b/retroshare-gui/src/gui/Posted/PostedListWidget.h @@ -52,7 +52,7 @@ public: virtual QScrollArea *getScrollArea(); virtual void deleteFeedItem(QWidget *item, uint32_t type); virtual void openChat(const RsPeerId& peerId); - virtual void openComments(uint32_t type, const RsGxsGroupId &groupId, const RsGxsMessageId &msgId, const QString &title); + virtual void openComments(uint32_t type, const RsGxsGroupId &groupId, const QVector &versions, const RsGxsMessageId &msgId, const QString &title); /* GXS functions */ virtual void loadRequest(const TokenQueue *queue, const TokenRequest &req); diff --git a/retroshare-gui/src/gui/feeds/FeedHolder.h b/retroshare-gui/src/gui/feeds/FeedHolder.h index d39947bcc..44b07777b 100644 --- a/retroshare-gui/src/gui/feeds/FeedHolder.h +++ b/retroshare-gui/src/gui/feeds/FeedHolder.h @@ -37,7 +37,7 @@ public: virtual QScrollArea *getScrollArea() = 0; virtual void deleteFeedItem(QWidget *item, uint32_t type) = 0; virtual void openChat(const RsPeerId& peerId) = 0; - virtual void openComments(uint32_t type, const RsGxsGroupId &groupId, const RsGxsMessageId &msgId, const QString &title) = 0; + virtual void openComments(uint32_t type, const RsGxsGroupId &groupId, const QVector &msg_versions, const RsGxsMessageId &msgId, const QString &title)=0; // Workaround for QTBUG-3372 void lockLayout(QWidget *feedItem, bool lock); diff --git a/retroshare-gui/src/gui/gxs/GxsCommentContainer.cpp b/retroshare-gui/src/gui/gxs/GxsCommentContainer.cpp index 890ca75b7..9f62a0359 100644 --- a/retroshare-gui/src/gui/gxs/GxsCommentContainer.cpp +++ b/retroshare-gui/src/gui/gxs/GxsCommentContainer.cpp @@ -54,7 +54,7 @@ void GxsCommentContainer::setup() ui.tabWidget->hideCloseButton(index); } -void GxsCommentContainer::commentLoad(const RsGxsGroupId &grpId, const RsGxsMessageId &msgId, const QString &title) +void GxsCommentContainer::commentLoad(const RsGxsGroupId &grpId, const std::set& msg_versions,const RsGxsMessageId &msgId, const QString &title) { QString comments = title; if (title.length() > MAX_COMMENT_TITLE) @@ -68,7 +68,7 @@ void GxsCommentContainer::commentLoad(const RsGxsGroupId &grpId, const RsGxsMess QWidget *commentHeader = createHeaderWidget(grpId, msgId); commentDialog->setCommentHeader(commentHeader); - commentDialog->commentLoad(grpId, msgId); + commentDialog->commentLoad(grpId, msg_versions, msgId); ui.tabWidget->addTab(commentDialog, comments); } diff --git a/retroshare-gui/src/gui/gxs/GxsCommentContainer.h b/retroshare-gui/src/gui/gxs/GxsCommentContainer.h index 086aee640..6388891df 100644 --- a/retroshare-gui/src/gui/gxs/GxsCommentContainer.h +++ b/retroshare-gui/src/gui/gxs/GxsCommentContainer.h @@ -40,7 +40,7 @@ public: GxsCommentContainer(QWidget *parent = 0); void setup(); - void commentLoad(const RsGxsGroupId &grpId, const RsGxsMessageId &msgId, const QString &title); + void commentLoad(const RsGxsGroupId &grpId, const std::set &msg_versions, const RsGxsMessageId &msgId, const QString &title); virtual GxsServiceDialog *createServiceDialog() = 0; virtual QString getServiceName() = 0; @@ -67,9 +67,9 @@ public: virtual ~GxsServiceDialog() { return; } - void commentLoad(const RsGxsGroupId &grpId, const RsGxsMessageId &msgId, const QString &title) + void commentLoad(const RsGxsGroupId &grpId, const std::set& msg_versions,const RsGxsMessageId &msgId, const QString &title) { - mContainer->commentLoad(grpId, msgId, title); + mContainer->commentLoad(grpId, msg_versions,msgId, title); } private: diff --git a/retroshare-gui/src/gui/gxs/GxsCommentDialog.cpp b/retroshare-gui/src/gui/gxs/GxsCommentDialog.cpp index cb97584b9..f846abc97 100644 --- a/retroshare-gui/src/gui/gxs/GxsCommentDialog.cpp +++ b/retroshare-gui/src/gui/gxs/GxsCommentDialog.cpp @@ -59,20 +59,16 @@ GxsCommentDialog::~GxsCommentDialog() delete(ui); } -void GxsCommentDialog::commentLoad(const RsGxsGroupId &grpId, const RsGxsMessageId &msgId) +void GxsCommentDialog::commentLoad(const RsGxsGroupId &grpId, const std::set& msg_versions,const RsGxsMessageId& most_recent_msgId) { - std::cerr << "GxsCommentDialog::commentLoad(" << grpId << ", " << msgId << ")"; + std::cerr << "GxsCommentDialog::commentLoad(" << grpId << ", most recent msg version: " << most_recent_msgId << ")"; std::cerr << std::endl; mGrpId = grpId; - mMsgId = msgId; + mMostRecentMsgId = most_recent_msgId; + mMsgVersions = msg_versions; - RsGxsGrpMsgIdPair threadId; - - threadId.first = grpId; - threadId.second = msgId; - - ui->treeWidget->requestComments(threadId); + ui->treeWidget->requestComments(mGrpId,msg_versions,most_recent_msgId); } void GxsCommentDialog::refresh() @@ -80,7 +76,7 @@ void GxsCommentDialog::refresh() std::cerr << "GxsCommentDialog::refresh()"; std::cerr << std::endl; - commentLoad(mGrpId, mMsgId); + commentLoad(mGrpId, mMsgVersions,mMostRecentMsgId); } void GxsCommentDialog::idChooserReady() diff --git a/retroshare-gui/src/gui/gxs/GxsCommentDialog.h b/retroshare-gui/src/gui/gxs/GxsCommentDialog.h index 6edeb0948..7874168a3 100644 --- a/retroshare-gui/src/gui/gxs/GxsCommentDialog.h +++ b/retroshare-gui/src/gui/gxs/GxsCommentDialog.h @@ -39,10 +39,10 @@ public: virtual ~GxsCommentDialog(); void setCommentHeader(QWidget *header); - void commentLoad(const RsGxsGroupId &grpId, const RsGxsMessageId &msgId); + void commentLoad(const RsGxsGroupId &grpId, const std::set &msg_versions, const RsGxsMessageId &most_recent_msgId); RsGxsGroupId groupId() { return mGrpId; } - RsGxsMessageId messageId() { return mMsgId; } + RsGxsMessageId messageId() { return mMostRecentMsgId; } private slots: void refresh(); @@ -51,7 +51,8 @@ private slots: private: RsGxsGroupId mGrpId; - RsGxsMessageId mMsgId; + RsGxsMessageId mMostRecentMsgId; + std::set mMsgVersions; /* UI - from Designer */ Ui::GxsCommentDialog *ui; diff --git a/retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.cpp b/retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.cpp index c9e930725..aabeb07c4 100644 --- a/retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.cpp +++ b/retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.cpp @@ -50,11 +50,13 @@ #define COMMENT_VOTE_ACK 0x001234 +#define POST_CELL_SIZE_ROLE (Qt::UserRole+1) +#define POST_COLOR_ROLE (Qt::UserRole+2) /* Images for context menu icons */ #define IMAGE_MESSAGE ":/images/folder-draft.png" -#define IMAGE_VOTEUP ":/images/vote_up.png" -#define IMAGE_VOTEDOWN ":/images/vote_down.png" +#define IMAGE_VOTEUP ":/images/vote_up.png" +#define IMAGE_VOTEDOWN ":/images/vote_down.png" // This class allows to draw the item using an appropriate size @@ -65,7 +67,7 @@ public: QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { - return index.data(Qt::UserRole+1).toSize() ; + return index.data(POST_CELL_SIZE_ROLE).toSize() ; } virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const @@ -99,7 +101,7 @@ public: path.addRoundedRect(QRectF(m/7.0,m/7.0,s.width()+m/2.0,s.height()+m/2.0),m,m) ; QPen pen(Qt::gray,m/7.0f); p.setPen(pen); - p.fillPath(path,QColor::fromHsv( index.data(Qt::UserRole+2).toInt()/255.0*360,40,200)); // Would be nice to vary the color according to the post author + p.fillPath(path,QColor::fromHsv( index.data(POST_COLOR_ROLE).toInt()/255.0*360,40,220)); // varies the color according to the post author p.drawPath(path); QAbstractTextDocumentLayout::PaintContext ctx; @@ -109,7 +111,7 @@ public: painter->drawPixmap(r.topLeft(),px); - const_cast(index.model())->setData(index,px.size(),Qt::UserRole+1); + const_cast(index.model())->setData(index,px.size(),POST_CELL_SIZE_ROLE); } private: @@ -152,14 +154,14 @@ GxsCommentTreeWidget::~GxsCommentTreeWidget() } } -void GxsCommentTreeWidget::setCurrentMsgId(QTreeWidgetItem *current, QTreeWidgetItem *previous) +void GxsCommentTreeWidget::setCurrentCommentMsgId(QTreeWidgetItem *current, QTreeWidgetItem *previous) { Q_UNUSED(previous); if(current) { - mCurrentMsgId = RsGxsMessageId(current->text(PCITEM_COLUMN_MSGID).toStdString()); + mCurrentCommentMsgId = RsGxsMessageId(current->text(PCITEM_COLUMN_MSGID).toStdString()); } } @@ -167,9 +169,9 @@ void GxsCommentTreeWidget::customPopUpMenu(const QPoint& /*point*/) { QMenu contextMnu( this ); QAction* action = contextMnu.addAction(QIcon(IMAGE_MESSAGE), tr("Reply to Comment"), this, SLOT(replyToComment())); - action->setDisabled(mCurrentMsgId.isNull()); + action->setDisabled(mCurrentCommentMsgId.isNull()); action = contextMnu.addAction(QIcon(IMAGE_MESSAGE), tr("Submit Comment"), this, SLOT(makeComment())); - action->setDisabled(mThreadId.first.isNull()); + action->setDisabled(mMsgVersions.empty()); contextMnu.addSeparator(); @@ -179,7 +181,7 @@ void GxsCommentTreeWidget::customPopUpMenu(const QPoint& /*point*/) action->setDisabled(mVoterId.isNull()); - if (!mCurrentMsgId.isNull()) + if (!mCurrentCommentMsgId.isNull()) { // not implemented yet /* @@ -205,7 +207,8 @@ void GxsCommentTreeWidget::voteUp() { std::cerr << "GxsCommentTreeWidget::voteUp()"; std::cerr << std::endl; - vote(mThreadId.first, mThreadId.second, mCurrentMsgId, mVoterId, true); + + vote(mGroupId, mLatestMsgId, mCurrentCommentMsgId, mVoterId, true); } @@ -213,7 +216,8 @@ void GxsCommentTreeWidget::voteDown() { std::cerr << "GxsCommentTreeWidget::voteDown()"; std::cerr << std::endl; - vote(mThreadId.first, mThreadId.second, mCurrentMsgId, mVoterId, false); + + vote(mGroupId, mLatestMsgId, mCurrentCommentMsgId, mVoterId, false); } void GxsCommentTreeWidget::setVoteId(const RsGxsId &voterId) @@ -283,16 +287,16 @@ void GxsCommentTreeWidget::banUser() void GxsCommentTreeWidget::makeComment() { - GxsCreateCommentDialog pcc(mTokenQueue, mCommentService, mThreadId, mThreadId.second, this); + GxsCreateCommentDialog pcc(mTokenQueue, mCommentService, std::make_pair(mGroupId,mLatestMsgId), mLatestMsgId, this); pcc.exec(); } void GxsCommentTreeWidget::replyToComment() { RsGxsGrpMsgIdPair msgId; - msgId.first = mThreadId.first; - msgId.second = mCurrentMsgId; - GxsCreateCommentDialog pcc(mTokenQueue, mCommentService, msgId, mThreadId.second, this); + msgId.first = mGroupId; + msgId.second = mCurrentCommentMsgId; + GxsCreateCommentDialog pcc(mTokenQueue, mCommentService, msgId, mLatestMsgId, this); pcc.exec(); } @@ -309,29 +313,37 @@ void GxsCommentTreeWidget::setup(RsTokenService *token_service, RsGxsCommentServ /* Load Comments */ -void GxsCommentTreeWidget::requestComments(const RsGxsGrpMsgIdPair& threadId) +void GxsCommentTreeWidget::requestComments(const RsGxsGroupId& group, const std::set& message_versions,const RsGxsMessageId& most_recent_message) { /* request comments */ - mThreadId = threadId; - service_requestComments(threadId); + mGroupId = group ; + mMsgVersions = message_versions ; + mLatestMsgId = most_recent_message; + + service_requestComments(group,message_versions); } -void GxsCommentTreeWidget::service_requestComments(const RsGxsGrpMsgIdPair& threadId) +void GxsCommentTreeWidget::service_requestComments(const RsGxsGroupId& group_id,const std::set & msgIds) { /* request comments */ - std::cerr << "GxsCommentTreeWidget::service_requestComments(" << threadId.second << ")"; - std::cerr << std::endl; + std::cerr << "GxsCommentTreeWidget::service_requestComments for group " << group_id << std::endl; + + std::vector ids_to_ask; + + for(std::set::const_iterator it(msgIds.begin());it!=msgIds.end();++it) + { + std::cerr << " asking for msg " << *it << std::endl; + + ids_to_ask.push_back(std::make_pair(group_id,*it)); + } RsTokReqOptions opts; opts.mReqType = GXS_REQUEST_TYPE_MSG_RELATED_DATA; opts.mOptions = RS_TOKREQOPT_MSG_THREAD | RS_TOKREQOPT_MSG_LATEST; - std::vector msgIds; - msgIds.push_back(threadId); - uint32_t token; - mTokenQueue->requestMsgRelatedInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, msgIds, GXSCOMMENTS_LOADTHREAD); + mTokenQueue->requestMsgRelatedInfo(token, RS_TOKREQ_ANSTYPE_DATA, opts, ids_to_ask, GXSCOMMENTS_LOADTHREAD); } @@ -384,7 +396,7 @@ void GxsCommentTreeWidget::completeItems() parent->addChild(pit->second); } - else if (parentId == mThreadId.second) + else if (mMsgVersions.find(parentId) != mMsgVersions.end()) { std::cerr << "GxsCommentTreeWidget::completeItems() Added to topLevelItems"; std::cerr << std::endl; @@ -458,7 +470,7 @@ void GxsCommentTreeWidget::acknowledgeComment(const uint32_t &token) mCommentService->acknowledgeComment(token, msgId); // simply reload data - service_requestComments(mThreadId); + service_requestComments(mGroupId,mMsgVersions); } @@ -468,7 +480,7 @@ void GxsCommentTreeWidget::acknowledgeVote(const uint32_t &token) if (mCommentService->acknowledgeVote(token, msgId)) { // reload data if vote was added. - service_requestComments(mThreadId); + service_requestComments(mGroupId,mMsgVersions); } } @@ -508,7 +520,7 @@ void GxsCommentTreeWidget::service_loadThread(const uint32_t &token) RsGxsId authorId = comment.mMeta.mAuthorId; item->setId(authorId, PCITEM_COLUMN_AUTHOR, false); - item->setData(PCITEM_COLUMN_COMMENT,Qt::UserRole+2,QVariant(authorId.toByteArray()[1])); + item->setData(PCITEM_COLUMN_COMMENT,POST_COLOR_ROLE,QVariant(authorId.toByteArray()[1])); text = QString::number(comment.mScore); item->setText(PCITEM_COLUMN_SCORE, text); diff --git a/retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.h b/retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.h index e9f87bce6..dcc2db991 100644 --- a/retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.h +++ b/retroshare-gui/src/gui/gxs/GxsCommentTreeWidget.h @@ -39,7 +39,7 @@ public: ~GxsCommentTreeWidget(); void setup(RsTokenService *token_service, RsGxsCommentService *comment_service); - void requestComments(const RsGxsGrpMsgIdPair& threadId); + void requestComments(const RsGxsGroupId& group, const std::set &message_versions, const RsGxsMessageId &most_recent_message); void getCurrentMsgId(RsGxsMessageId& parentId); void applyRankings(std::map& positions); @@ -49,7 +49,7 @@ public: protected: /* to be overloaded */ - virtual void service_requestComments(const RsGxsGrpMsgIdPair& threadId); + virtual void service_requestComments(const RsGxsGroupId &group_id, const std::set &msgIds); virtual void service_loadThread(const uint32_t &token); virtual QTreeWidgetItem *service_createMissingItem(const RsGxsMessageId& parent); @@ -65,7 +65,7 @@ protected: public slots: void customPopUpMenu(const QPoint& point); - void setCurrentMsgId(QTreeWidgetItem* current, QTreeWidgetItem* previous); + void setCurrentCommentMsgId(QTreeWidgetItem* current, QTreeWidgetItem* previous); void makeComment(); @@ -85,8 +85,10 @@ protected: const RsGxsMessageId &parentId, const RsGxsId &authorId, bool up); /* Data */ - RsGxsGrpMsgIdPair mThreadId; - RsGxsMessageId mCurrentMsgId; + RsGxsGroupId mGroupId; + std::set mMsgVersions; + RsGxsMessageId mLatestMsgId; + RsGxsMessageId mCurrentCommentMsgId; RsGxsId mVoterId; std::map mLoadingMap; diff --git a/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.cpp b/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.cpp index 6ab4ca165..8ae997eab 100644 --- a/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.cpp +++ b/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.cpp @@ -525,7 +525,7 @@ void GxsGroupFrameDialog::sharePublishKey() shareUi.exec(); } -void GxsGroupFrameDialog::loadComment(const RsGxsGroupId &grpId, const RsGxsMessageId &msgId, const QString &title) +void GxsGroupFrameDialog::loadComment(const RsGxsGroupId &grpId, const QVector& msg_versions, const RsGxsMessageId &most_recent_msgId, const QString &title) { RsGxsCommentService *commentService = getCommentService(); if (!commentService) { @@ -533,7 +533,8 @@ void GxsGroupFrameDialog::loadComment(const RsGxsGroupId &grpId, const RsGxsMess return; } - GxsCommentDialog *commentDialog = commentWidget(msgId); + GxsCommentDialog *commentDialog = commentWidget(most_recent_msgId); + if (!commentDialog) { QString comments = title; if (title.length() > MAX_COMMENT_TITLE) @@ -544,12 +545,16 @@ void GxsGroupFrameDialog::loadComment(const RsGxsGroupId &grpId, const RsGxsMess commentDialog = new GxsCommentDialog(this, mInterface->getTokenService(), commentService); - QWidget *commentHeader = createCommentHeaderWidget(grpId, msgId); + QWidget *commentHeader = createCommentHeaderWidget(grpId, most_recent_msgId); if (commentHeader) { commentDialog->setCommentHeader(commentHeader); } - commentDialog->commentLoad(grpId, msgId); + std::set msgv; + for(int i=0;icommentLoad(grpId, msgv,most_recent_msgId); int index = ui->messageTabWidget->addTab(commentDialog, comments); ui->messageTabWidget->setTabIcon(index, QIcon(IMAGE_COMMENT)); @@ -620,12 +625,12 @@ GxsMessageFrameWidget *GxsGroupFrameDialog::createMessageWidget(const RsGxsGroup connect(msgWidget, SIGNAL(groupChanged(QWidget*)), this, SLOT(messageTabInfoChanged(QWidget*))); connect(msgWidget, SIGNAL(waitingChanged(QWidget*)), this, SLOT(messageTabWaitingChanged(QWidget*))); - connect(msgWidget, SIGNAL(loadComment(RsGxsGroupId,RsGxsMessageId,QString)), this, SLOT(loadComment(RsGxsGroupId,RsGxsMessageId,QString))); + connect(msgWidget, SIGNAL(loadComment(RsGxsGroupId,QVector,RsGxsMessageId,QString)), this, SLOT(loadComment(RsGxsGroupId,QVector,RsGxsMessageId,QString))); return msgWidget; } -GxsCommentDialog *GxsGroupFrameDialog::commentWidget(const RsGxsMessageId &msgId) +GxsCommentDialog *GxsGroupFrameDialog::commentWidget(const RsGxsMessageId& msgId) { int tabCount = ui->messageTabWidget->count(); for (int index = 0; index < tabCount; ++index) { diff --git a/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.h b/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.h index 3b74b8214..8138cc1e1 100644 --- a/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.h +++ b/retroshare-gui/src/gui/gxs/GxsGroupFrameDialog.h @@ -126,7 +126,7 @@ private slots: void sharePublishKey(); - void loadComment(const RsGxsGroupId &grpId, const RsGxsMessageId &msgId, const QString &title); + void loadComment(const RsGxsGroupId &grpId, const QVector& msg_versions,const RsGxsMessageId &most_recent_msgId, const QString &title); private: virtual QString text(TextType type) = 0; diff --git a/retroshare-gui/src/gui/gxs/GxsMessageFrameWidget.h b/retroshare-gui/src/gui/gxs/GxsMessageFrameWidget.h index d604be716..71d0ae2a1 100644 --- a/retroshare-gui/src/gui/gxs/GxsMessageFrameWidget.h +++ b/retroshare-gui/src/gui/gxs/GxsMessageFrameWidget.h @@ -54,7 +54,7 @@ public: signals: void groupChanged(QWidget *widget); void waitingChanged(QWidget *widget); - void loadComment(const RsGxsGroupId &groupId, const RsGxsMessageId &msgId, const QString &title); + void loadComment(const RsGxsGroupId &groupId, const QVector& msg_versions,const RsGxsMessageId &msgId, const QString &title); protected: virtual void setAllMessagesReadDo(bool read, uint32_t &token) = 0; diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp index bae5cfee4..c3e6fe731 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.cpp @@ -207,9 +207,9 @@ void GxsChannelPostsWidget::openChat(const RsPeerId & /*peerId*/) } // Callback from Widget->FeedHolder->ServiceDialog->CommentContainer->CommentDialog, -void GxsChannelPostsWidget::openComments(uint32_t /*type*/, const RsGxsGroupId &groupId, const RsGxsMessageId &msgId, const QString &title) +void GxsChannelPostsWidget::openComments(uint32_t /*type*/, const RsGxsGroupId &groupId, const QVector& msg_versions,const RsGxsMessageId &msgId, const QString &title) { - emit loadComment(groupId, msgId, title); + emit loadComment(groupId, msg_versions,msgId, title); } void GxsChannelPostsWidget::createMsg() diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.h b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.h index 541fcc506..ddeb474a0 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.h +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidget.h @@ -61,7 +61,7 @@ public: virtual QScrollArea *getScrollArea(); virtual void deleteFeedItem(QWidget *item, uint32_t type); virtual void openChat(const RsPeerId& peerId); - virtual void openComments(uint32_t type, const RsGxsGroupId &groupId, const RsGxsMessageId &msgId, const QString &title); + virtual void openComments(uint32_t type, const RsGxsGroupId &groupId, const QVector &msg_versions, const RsGxsMessageId &msgId, const QString &title); protected: /* GxsMessageFramePostWidget */ From 7acefda94361f25d16a89909107baa67edf36b4a Mon Sep 17 00:00:00 2001 From: Phenom Date: Fri, 19 May 2017 18:40:17 +0200 Subject: [PATCH 15/23] Fix Chat Font setting saving. And don't use native dialog. --- retroshare-gui/src/gui/chat/ChatWidget.cpp | 3 ++- retroshare-gui/src/gui/settings/ChatPage.cpp | 3 ++- retroshare-gui/src/gui/settings/ChatPage.ui | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/retroshare-gui/src/gui/chat/ChatWidget.cpp b/retroshare-gui/src/gui/chat/ChatWidget.cpp index ead335091..9b659000b 100644 --- a/retroshare-gui/src/gui/chat/ChatWidget.cpp +++ b/retroshare-gui/src/gui/chat/ChatWidget.cpp @@ -1440,7 +1440,8 @@ void ChatWidget::colorChanged() void ChatWidget::chooseFont() { bool ok; - QFont font = QFontDialog::getFont(&ok, currentFont, this); + //Use NULL as parent as with this QFontDialog don't take care of title nether options. + QFont font = QFontDialog::getFont(&ok, currentFont, NULL, tr("Choose your font."),QFontDialog::DontUseNativeDialog); if (ok) { currentFont = font; setFont(); diff --git a/retroshare-gui/src/gui/settings/ChatPage.cpp b/retroshare-gui/src/gui/settings/ChatPage.cpp index 23669840e..81e54c802 100644 --- a/retroshare-gui/src/gui/settings/ChatPage.cpp +++ b/retroshare-gui/src/gui/settings/ChatPage.cpp @@ -416,7 +416,7 @@ ChatPage::load() void ChatPage::on_pushButtonChangeChatFont_clicked() { bool ok; - QFont font = QFontDialog::getFont(&ok, fontTempChat, this); + QFont font = QFontDialog::getFont(&ok, fontTempChat, this, tr("Choose your default font for Chat."),QFontDialog::DontUseNativeDialog); if (ok) { fontTempChat = font; // using fontTempChat.rawname() does not always work! @@ -424,6 +424,7 @@ void ChatPage::on_pushButtonChangeChatFont_clicked() QStringList fontname = fontTempChat.toString().split(","); ui.labelChatFontPreview->setText(fontname[0]); ui.labelChatFontPreview->setFont(fontTempChat); + updateChatParams(); } } diff --git a/retroshare-gui/src/gui/settings/ChatPage.ui b/retroshare-gui/src/gui/settings/ChatPage.ui index 152e3530e..14d1cc6f8 100644 --- a/retroshare-gui/src/gui/settings/ChatPage.ui +++ b/retroshare-gui/src/gui/settings/ChatPage.ui @@ -14,7 +14,7 @@ - 2 + 0 @@ -866,7 +866,7 @@ QTabWidget::North - 2 + 0 From bda7a50621deecf89c6cc163c27e9c2fe55a2390 Mon Sep 17 00:00:00 2001 From: defnax Date: Sat, 20 May 2017 15:14:43 +0200 Subject: [PATCH 16/23] Improved look & feel for Generate and Login Window --- retroshare-gui/src/gui/GenCertDialog.cpp | 14 +- retroshare-gui/src/gui/GenCertDialog.ui | 372 ++++++++---- retroshare-gui/src/gui/StartDialog.ui | 550 +++++++++--------- retroshare-gui/src/gui/icons.qrc | 2 + .../src/gui/icons/svg/randomness.svg | 197 +++++++ retroshare-gui/src/gui/images.qrc | 1 + .../src/gui/images/logo/background.png | Bin 0 -> 351645 bytes .../src/gui/qss/stylesheet/Standard.qss | 28 +- 8 files changed, 760 insertions(+), 404 deletions(-) create mode 100644 retroshare-gui/src/gui/icons/svg/randomness.svg create mode 100644 retroshare-gui/src/gui/images/logo/background.png diff --git a/retroshare-gui/src/gui/GenCertDialog.cpp b/retroshare-gui/src/gui/GenCertDialog.cpp index 11bd8f7dd..1887ca304 100644 --- a/retroshare-gui/src/gui/GenCertDialog.cpp +++ b/retroshare-gui/src/gui/GenCertDialog.cpp @@ -161,12 +161,12 @@ GenCertDialog::GenCertDialog(bool onlyGenerateIdentity, QWidget *parent) ui.keylength_comboBox->addItem("Very high (4096 bits)", QVariant(4096)); #if QT_VERSION >= 0x040700 - ui.node_input->setPlaceholderText(tr("[Required] Examples: Home, Laptop,...(Visible to friends).")) ; - ui.hiddenaddr_input->setPlaceholderText(tr("[Optional] Tor/I2P address (Example: xa76giaf6ifda7ri63i263.onion)")) ; - ui.name_input->setPlaceholderText(tr("[Required] Visible to friends, and friends of friends.")); - ui.nickname_input->setPlaceholderText(tr("[Optional] Used to write in chat rooms and forums. Can be set later.")); - ui.password_input->setPlaceholderText(tr("[Required] This password protects your data. Dont forget it!")); - ui.password_input_2->setPlaceholderText(tr("[Required] Type the same password again here.")); + ui.node_input->setPlaceholderText(tr("Node name")) ; + ui.hiddenaddr_input->setPlaceholderText(tr("Tor/I2P address")) ; + ui.name_input->setPlaceholderText(tr("Username")); + ui.nickname_input->setPlaceholderText(tr("Identity name")); + ui.password_input->setPlaceholderText(tr("Password")); + ui.password_input_2->setPlaceholderText(tr("Password again")); #endif ui.nickname_input->setMaxLength(RSID_MAXIMUM_NICKNAME_SIZE); @@ -294,7 +294,7 @@ void GenCertDialog::setupState() ui.entropy_bar->setVisible(true); ui.genButton->setVisible(true); - ui.genButton->setText(generate_new?tr("Generate new profile and node"):tr("Generate new node")); + ui.genButton->setText(generate_new?tr("Generate"):tr("Generate")); ui.hiddenaddr_input->setVisible(hidden_state); ui.hiddenaddr_label->setVisible(hidden_state); diff --git a/retroshare-gui/src/gui/GenCertDialog.ui b/retroshare-gui/src/gui/GenCertDialog.ui index 468c17693..9eb77800e 100644 --- a/retroshare-gui/src/gui/GenCertDialog.ui +++ b/retroshare-gui/src/gui/GenCertDialog.ui @@ -6,8 +6,8 @@ 0 0 - 533 - 544 + 520 + 611 @@ -34,13 +34,16 @@ 0 - + 0 0 + + + QFrame::StyledPanel @@ -48,6 +51,9 @@ QFrame::Raised + + 9 + @@ -105,19 +111,63 @@ - + - - QFrame::StyledPanel - - - QFrame::Raised - + + 24 + + + 24 + + + 24 + + + 24 + + + + + + 0 + 0 + + + + PGP Key Length + + + + + + + + + + + 24 + 24 + + + + + + + :/icons/svg/randomness.svg + + + true + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + @@ -125,17 +175,7 @@ - - - - PGP key length - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - + @@ -163,42 +203,6 @@ - - - - This password is for PGP - - - Password - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - This password is for PGP - - - Password (check) - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - @@ -229,7 +233,7 @@ - + @@ -271,16 +275,6 @@ - - - - Node name - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - @@ -365,7 +359,7 @@ - + @@ -394,46 +388,6 @@ - - - - Profile name - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Randomness - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Node type - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - hidden address - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - @@ -498,20 +452,7 @@ - - - - - - - Chat identity - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - + @@ -564,6 +505,191 @@ + + + + + 24 + 24 + + + + + + + :/icons/svg/person.svg + + + true + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 24 + 24 + + + + + + + + + + :/icons/svg/chat-lobbies.svg + + + true + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 24 + 24 + + + + + + + :/icons/svg/network.svg + + + true + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 24 + 24 + + + + + + + :/icons/svg/keyring.svg + + + true + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 24 + 24 + + + + This password is for PGP + + + + + + :/icons/svg/password.svg + + + true + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 24 + 24 + + + + This password is for PGP + + + + + + :/icons/svg/password.svg + + + true + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 24 + 24 + + + + + + + :/icons/svg/hidden.svg + + + true + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 24 + 24 + + + + + + + :/icons/svg/netgraph.svg + + + true + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + diff --git a/retroshare-gui/src/gui/StartDialog.ui b/retroshare-gui/src/gui/StartDialog.ui index 4665dfdc0..3d2a4dc44 100644 --- a/retroshare-gui/src/gui/StartDialog.ui +++ b/retroshare-gui/src/gui/StartDialog.ui @@ -17,6 +17,9 @@ :/images/logo/logo_32.png:/images/logo/logo_32.png + + false + 0 @@ -31,296 +34,313 @@ 0 - - - 0 + + + false - - 0 + + QFrame#loginframe{ +background-image: url(:/images/logo/background.png); +background-repeat: repeat; +} - - 0 + + QFrame::StyledPanel - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - - - - - - 85 - 170 - 255 - - - - - - - - - 85 - 170 - 255 - - - - - - - - - 118 - 116 - 108 - - - - - - - - - 18 - - - - - - - :/images/logo/logo_spash2.png - - - - - - - Qt::Horizontal - - - - 48 - 20 - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Minimum - - - - 60 - 20 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Horizontal - - - QSizePolicy::Minimum - - - - 60 - 20 - - - - - - - - true - - - - 0 - 0 - - - - - - - - - - - 9 - + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + - - - Profile - Location: - - - - - - + + - 22 - 22 + 0 + 0 - - + + + + + + + 85 + 170 + 255 + + + + + + + + + 85 + 170 + 255 + + + + + + + + + 118 + 116 + 108 + + + + + - - :/icons/svg/person.svg - - - true - - - - - - - - - - - 22 - 22 - - - - - - - :/icons/svg/password.svg - - - true - - - - - - - QLineEdit::Password - - - Password - - - - - - - Remember Password - - - false - - - - - - 12 + 18 - Log In + - - true - - - false + + :/images/logo/logo_spash2.png + + + + Qt::Horizontal + + + + 48 + 20 + + + + - - - - - - - - Qt::Horizontal + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 60 + 20 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 60 + 20 + + + + + + + + true + + + + 0 + 0 + + + + + + + + + + + 9 - - - 40 - 20 - - - - - - - - Opens a dialog for creating a new profile or + + + + Profile - Location: + + + + + + + + 22 + 22 + + + + + + + :/icons/svg/person.svg + + + true + + + + + + + + + + + 22 + 22 + + + + + + + :/icons/svg/password.svg + + + true + + + + + + + QLineEdit::Password + + + Password + + + + + + + Remember Password + + + false + + + + + + + + 12 + + + + Log In + + + true + + + false + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Opens a dialog for creating a new profile or adding locations to an existing profile. The current identities/locations will not be affected. - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="Create new Profile..."><span style=" font-family:'MS Shell Dlg 2'; font-size:8pt; text-decoration: underline; color:#0000ff;">Manage profiles and nodes...</span></a></p></body></html> - - - - - - + + + + + + + diff --git a/retroshare-gui/src/gui/icons.qrc b/retroshare-gui/src/gui/icons.qrc index e9b7d32bd..737b12ae3 100644 --- a/retroshare-gui/src/gui/icons.qrc +++ b/retroshare-gui/src/gui/icons.qrc @@ -1,5 +1,7 @@ + icons/svg/hidden.svg + icons/svg/randomness.svg icons/svg/password.svg icons/stars/star0.png icons/stars/star1.png diff --git a/retroshare-gui/src/gui/icons/svg/randomness.svg b/retroshare-gui/src/gui/icons/svg/randomness.svg new file mode 100644 index 000000000..b0b8e0b9f --- /dev/null +++ b/retroshare-gui/src/gui/icons/svg/randomness.svg @@ -0,0 +1,197 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/retroshare-gui/src/gui/images.qrc b/retroshare-gui/src/gui/images.qrc index fbdb66d3d..887cb6620 100644 --- a/retroshare-gui/src/gui/images.qrc +++ b/retroshare-gui/src/gui/images.qrc @@ -1,5 +1,6 @@ + images/logo/background.png images/logo/logo_spash2.png images/network_map.png images/global_switch_on.png diff --git a/retroshare-gui/src/gui/images/logo/background.png b/retroshare-gui/src/gui/images/logo/background.png new file mode 100644 index 0000000000000000000000000000000000000000..b3d347d7e2fa6599e5605d6c69b2717c30de3296 GIT binary patch literal 351645 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

CNF}C0lbD0h|TV9n6J=oSA+#*-5a1c@tL~(ZUI4 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