From ddc0a8c1ec6477cae0979f832b02bb439e77c947 Mon Sep 17 00:00:00 2001 From: csoler Date: Mon, 18 Jan 2021 21:49:03 +0100 Subject: [PATCH 1/5] fixed update of identity list when avatar is changed and changed avatar to use ZoomableLabel --- libretroshare/src/services/p3idservice.cc | 1 + .../src/gui/Identity/IdEditDialog.cpp | 21 +++++++++++++++++++ .../src/gui/Identity/IdEditDialog.ui | 14 ++++++++----- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/libretroshare/src/services/p3idservice.cc b/libretroshare/src/services/p3idservice.cc index 543a29f43..84398e053 100644 --- a/libretroshare/src/services/p3idservice.cc +++ b/libretroshare/src/services/p3idservice.cc @@ -644,6 +644,7 @@ void p3IdService::notifyChanges(std::vector &changes) case RsGxsNotify::TYPE_PROCESSED: break ; // Happens when the group is subscribed. This is triggered by RsGenExchange::subscribeToGroup, so better not // call it again from here!! + case RsGxsNotify::TYPE_UPDATED: case RsGxsNotify::TYPE_PUBLISHED: { auto ev = std::make_shared(); diff --git a/retroshare-gui/src/gui/Identity/IdEditDialog.cpp b/retroshare-gui/src/gui/Identity/IdEditDialog.cpp index 94d092faf..33eb903b0 100644 --- a/retroshare-gui/src/gui/Identity/IdEditDialog.cpp +++ b/retroshare-gui/src/gui/Identity/IdEditDialog.cpp @@ -20,6 +20,7 @@ #include #include +#include #include "IdEditDialog.h" #include "ui_IdEditDialog.h" @@ -100,6 +101,7 @@ IdEditDialog::~IdEditDialog() {} void IdEditDialog::changeAvatar() { +#ifdef TODO AvatarDialog dialog(this); dialog.setAvatar(mAvatar); @@ -109,6 +111,23 @@ void IdEditDialog::changeAvatar() setAvatar(newAvatar); } +#endif + // For now we use a simpler method since AvatarDialog is not finished yet; we use the thumbnail viewer to allow the user to + // select a proper scale/crop of a given image to make his/her avatar. + + QString image_filename ; + + if(!misc::getOpenFileName(this,RshareSettings::LASTDIR_IMAGES,tr("Import image"), tr("Image files (*.jpg *.png);;All files (*)"),image_filename)) + return; + + QImage img(image_filename); + + ui->avatarLabel->setPicture(QPixmap::fromImage(img)); + ui->avatarLabel->setEnableZoom(true); + ui->avatarLabel->setToolTip(tr("Use the mouse to zoom and adjust the image for your avatar.")); + + // shows the tooltip for a while + QToolTip::showText( ui->avatarLabel->mapToGlobal( QPoint( 0, 0 ) ), ui->avatarLabel->toolTip() ); } void IdEditDialog::setupNewId(bool pseudo,bool enable_anon) @@ -598,6 +617,8 @@ void IdEditDialog::updateId() mEditGroup.mMeta.mGroupName = groupname.toUtf8().constData(); + mAvatar = ui->avatarLabel->extractCroppedScaledPicture(); + if (!mAvatar.isNull()) { QByteArray ba; diff --git a/retroshare-gui/src/gui/Identity/IdEditDialog.ui b/retroshare-gui/src/gui/Identity/IdEditDialog.ui index 9ed2d258a..fee114a9d 100644 --- a/retroshare-gui/src/gui/Identity/IdEditDialog.ui +++ b/retroshare-gui/src/gui/Identity/IdEditDialog.ui @@ -6,8 +6,8 @@ 0 0 - 542 - 536 + 593 + 604 @@ -291,7 +291,7 @@ - + 0 @@ -330,7 +330,7 @@ - Set Avatar + Choose image... @@ -529,9 +529,13 @@
gui/common/HeaderFrame.h
1 + + ZoomableLabel + QLabel +
gui/gxschannels/GxsChannelPostThumbnail.h
+
- From e56add841a37501921a6d38afd17c3611d1fd541 Mon Sep 17 00:00:00 2001 From: csoler Date: Tue, 19 Jan 2021 19:38:38 +0100 Subject: [PATCH 2/5] removed useless reload of channel data. Fixed default implicit conversion from pointer to shared_ptr --- libretroshare/src/gxs/rsgenexchange.cc | 6 +++--- libretroshare/src/services/p3gxschannels.cc | 12 ++++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/libretroshare/src/gxs/rsgenexchange.cc b/libretroshare/src/gxs/rsgenexchange.cc index d133355d7..7b1c328cf 100644 --- a/libretroshare/src/gxs/rsgenexchange.cc +++ b/libretroshare/src/gxs/rsgenexchange.cc @@ -2519,7 +2519,7 @@ void RsGenExchange::processGroupUpdatePublish() { GroupUpdatePublish& gup = *vit; const RsGxsGroupId& groupId = gup.grpItem->meta.mGroupId; - grpMeta.insert(std::make_pair(groupId, (RsGxsGrpMetaData*)(NULL))); + grpMeta.insert(std::make_pair(groupId, std::make_shared())); } if(grpMeta.empty()) @@ -2985,7 +2985,7 @@ bool RsGenExchange::getGroupKeys(const RsGxsGroupId &grpId, RsTlvSecurityKeySet RS_STACK_MUTEX(mGenMtx) ; RsGxsGrpMetaTemporaryMap grpMeta; - grpMeta[grpId] = NULL; + grpMeta[grpId] = std::make_shared(); mDataStore->retrieveGxsGrpMetaData(grpMeta); if(grpMeta.empty()) @@ -3078,7 +3078,7 @@ void RsGenExchange::processRecvdMessages() } else { - grpMetas.insert(std::make_pair(pend_it->second.mItem->grpId, (RsGxsGrpMetaData*)NULL)); + grpMetas.insert(std::make_pair(pend_it->second.mItem->grpId, std::make_shared())); ++pend_it; } } diff --git a/libretroshare/src/services/p3gxschannels.cc b/libretroshare/src/services/p3gxschannels.cc index a69ddc8f6..0422b9212 100644 --- a/libretroshare/src/services/p3gxschannels.cc +++ b/libretroshare/src/services/p3gxschannels.cc @@ -93,13 +93,17 @@ p3GxsChannels::p3GxsChannels( mLastDistantSearchNotificationTS = 0; mCommentService = new p3GxsCommentService(this, RS_SERVICE_GXS_TYPE_CHANNELS); - RsTickEvent::schedule_in(CHANNEL_PROCESS, 0); - + // This is not needed since it just loads all channel data ever 5 mins which takes a lot + // of useless CPU/memory. + // + // RsTickEvent::schedule_in(CHANNEL_PROCESS, 0); + // // Test Data disabled in repo. - //RsTickEvent::schedule_in(CHANNEL_TESTEVENT_DUMMYDATA, DUMMYDATA_PERIOD); + // + // RsTickEvent::schedule_in(CHANNEL_TESTEVENT_DUMMYDATA, DUMMYDATA_PERIOD); + mGenToken = 0; mGenCount = 0; - } From 20082321e7c5226beb9909b3c5df4ba1a6a6bd41 Mon Sep 17 00:00:00 2001 From: csoler Date: Tue, 19 Jan 2021 19:42:24 +0100 Subject: [PATCH 3/5] removed variable shadowing another --- .../src/gui/gxschannels/GxsChannelPostsWidgetWithModel.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidgetWithModel.cpp b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidgetWithModel.cpp index 02a603284..372a8a535 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidgetWithModel.cpp +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidgetWithModel.cpp @@ -669,7 +669,6 @@ void GxsChannelPostsWidgetWithModel::download() for(auto file:post.mFiles) { std::list sources; - std::string destination; // Add possible direct sources. FileInfo fileInfo; From 5fc3108533b2471817543e5a7a507b3ba2275be4 Mon Sep 17 00:00:00 2001 From: csoler Date: Tue, 19 Jan 2021 20:33:30 +0100 Subject: [PATCH 4/5] removed crash on exit because of double delete --- retroshare-gui/src/gui/MainWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/retroshare-gui/src/gui/MainWindow.cpp b/retroshare-gui/src/gui/MainWindow.cpp index ea9e9d8df..a42590103 100644 --- a/retroshare-gui/src/gui/MainWindow.cpp +++ b/retroshare-gui/src/gui/MainWindow.cpp @@ -377,7 +377,7 @@ MainWindow::~MainWindow() delete sysTrayStatus; delete trayIcon; delete trayMenu; - delete notifyMenu; +// delete notifyMenu; #ifdef MESSENGER_WINDOW MessengerWindow::releaseInstance(); #endif From 0757b161ba76bdd619822579c2ae79ee1653d758 Mon Sep 17 00:00:00 2001 From: csoler Date: Tue, 19 Jan 2021 20:44:21 +0100 Subject: [PATCH 5/5] patched BroadcastDiscivery and GxsNetTunnel so that they respond faster to shutdown --- libretroshare/src/gxs/rsgxsnettunnel.cc | 7 ++++++- .../src/services/broadcastdiscoveryservice.cc | 10 +++++++--- retroshare-gui/src/gui/MainWindow.cpp | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/libretroshare/src/gxs/rsgxsnettunnel.cc b/libretroshare/src/gxs/rsgxsnettunnel.cc index 61e1101f4..0237c4fb7 100644 --- a/libretroshare/src/gxs/rsgxsnettunnel.cc +++ b/libretroshare/src/gxs/rsgxsnettunnel.cc @@ -766,7 +766,12 @@ void RsGxsNetTunnelService::threadTick() } #endif - rstime::rs_usleep(1*1000*1000) ; // 1 sec + for(uint32_t i=0;i<2;++i) + { + if(shouldStop()) + return; + rstime::rs_usleep(500*1000) ; // 1 sec + } } const Bias20Bytes& RsGxsNetTunnelService::locked_randomBias() diff --git a/libretroshare/src/services/broadcastdiscoveryservice.cc b/libretroshare/src/services/broadcastdiscoveryservice.cc index f691fd7ed..076244b44 100644 --- a/libretroshare/src/services/broadcastdiscoveryservice.cc +++ b/libretroshare/src/services/broadcastdiscoveryservice.cc @@ -141,8 +141,6 @@ void BroadcastDiscoveryService::updatePublishedData() void BroadcastDiscoveryService::threadTick() { - auto nextRunAt = std::chrono::system_clock::now() + std::chrono::seconds(5); - if( mUdcParameters.can_discover() && !mRsPeers.isHiddenNode(mRsPeers.getOwnId()) ) { @@ -200,7 +198,13 @@ void BroadcastDiscoveryService::threadTick() if( mUdcParameters.can_be_discovered() && !mRsPeers.isHiddenNode(mRsPeers.getOwnId()) ) updatePublishedData(); - std::this_thread::sleep_until(nextRunAt); + // This avoids waiting 5 secs when the thread should actually terminate (when RS closes). + for(uint32_t i=0;i<10;++i) + { + if(shouldStop()) + return; + rstime::rs_usleep(500*1000); // sleep for 0.5 sec. + } } RsBroadcastDiscoveryResult BroadcastDiscoveryService::createResult( diff --git a/retroshare-gui/src/gui/MainWindow.cpp b/retroshare-gui/src/gui/MainWindow.cpp index a42590103..73507b588 100644 --- a/retroshare-gui/src/gui/MainWindow.cpp +++ b/retroshare-gui/src/gui/MainWindow.cpp @@ -377,7 +377,7 @@ MainWindow::~MainWindow() delete sysTrayStatus; delete trayIcon; delete trayMenu; -// delete notifyMenu; +// delete notifyMenu; // already deleted by the deletion of trayMenu #ifdef MESSENGER_WINDOW MessengerWindow::releaseInstance(); #endif