mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-26 07:59:35 -05:00
Merge pull request #2147 from csoler/v0.6-BugFixing_2
Still bug fixing 0.6.6-RC1
This commit is contained in:
commit
906c1f03e4
@ -240,6 +240,11 @@ enum class RsGxsCircleEventCode: uint8_t
|
||||
* The circle has been deleted by auto-cleaning.
|
||||
* */
|
||||
CIRCLE_DELETED = 0x07,
|
||||
|
||||
/**
|
||||
* Circle has been updated (name, parent circle, type, etc)
|
||||
* */
|
||||
CIRCLE_UPDATED = 0x08,
|
||||
};
|
||||
|
||||
struct RsGxsCircleEvent: RsEvent
|
||||
@ -312,8 +317,7 @@ public:
|
||||
* @param[out] details Storage for the circle details
|
||||
* @return false if something failed, true otherwhise
|
||||
*/
|
||||
virtual bool getCircleDetails(
|
||||
const RsGxsCircleId& id, RsGxsCircleDetails& details ) = 0;
|
||||
virtual bool getCircleDetails(const RsGxsCircleId& id, RsGxsCircleDetails& details ) = 0;
|
||||
|
||||
/**
|
||||
* @brief Get list of known external circles ids. Memory cached
|
||||
@ -321,8 +325,7 @@ public:
|
||||
* @param[in] circleIds Storage for circles id list
|
||||
* @return false if something failed, true otherwhise
|
||||
*/
|
||||
virtual bool getCircleExternalIdList(
|
||||
std::list<RsGxsCircleId>& circleIds ) = 0;
|
||||
virtual bool getCircleExternalIdList(std::set<RsGxsCircleId>& circleIds ) = 0;
|
||||
|
||||
/**
|
||||
* @brief Get circles summaries list.
|
||||
|
@ -153,7 +153,7 @@ p3GxsCircles::p3GxsCircles( RsGeneralDataService *gds, RsNetworkExchangeService
|
||||
mLastCacheUpdateEvent = 0;
|
||||
mLastDebugPrintTS = 0;
|
||||
|
||||
RsTickEvent::schedule_now(CIRCLE_EVENT_LOADIDS);
|
||||
RsTickEvent::schedule_now(CIRCLE_EVENT_CACHELOAD);
|
||||
|
||||
mDummyIdToken = 0;
|
||||
}
|
||||
@ -654,10 +654,8 @@ void p3GxsCircles::notifyChanges(std::vector<RsGxsNotify *> &changes)
|
||||
// for new circles we need to add them to the list.
|
||||
// we don't know the type of this circle here
|
||||
// original behavior was to add all ids to the external ids list
|
||||
|
||||
addCircleIdToList(RsGxsCircleId(*git), 0);
|
||||
|
||||
circles_to_reload.insert(RsGxsCircleId(*git));
|
||||
|
||||
} // fallthrough
|
||||
case RsGxsNotify::TYPE_STATISTICS_CHANGED:
|
||||
{
|
||||
@ -743,7 +741,18 @@ void p3GxsCircles::notifyChanges(std::vector<RsGxsNotify *> &changes)
|
||||
rsEvents->postEvent(ev);
|
||||
}
|
||||
|
||||
}
|
||||
if( old_circle_grp_item->meta.mGroupName != new_circle_grp_item->meta.mGroupName
|
||||
|| old_circle_grp_item->meta.mGroupFlags != new_circle_grp_item->meta.mGroupFlags
|
||||
|| old_circle_grp_item->meta.mAuthorId != new_circle_grp_item->meta.mAuthorId
|
||||
|| old_circle_grp_item->meta.mCircleId != new_circle_grp_item->meta.mCircleId
|
||||
)
|
||||
{
|
||||
auto ev = std::make_shared<RsGxsCircleEvent>();
|
||||
ev->mCircleId = RsGxsCircleId(new_circle_grp_item->meta.mGroupId);
|
||||
ev->mCircleEventType = RsGxsCircleEventCode::CIRCLE_UPDATED;
|
||||
rsEvents->postEvent(ev);
|
||||
}
|
||||
}
|
||||
else if(c->getType()==RsGxsNotify::TYPE_GROUP_DELETED)
|
||||
{
|
||||
auto ev = std::make_shared<RsGxsCircleEvent>();
|
||||
@ -824,7 +833,7 @@ bool p3GxsCircles::getCircleDetails(const RsGxsCircleId& id, RsGxsCircleDetails&
|
||||
return false;
|
||||
}
|
||||
|
||||
bool p3GxsCircles::getCircleExternalIdList(std::list<RsGxsCircleId> &circleIds)
|
||||
bool p3GxsCircles::getCircleExternalIdList(std::set<RsGxsCircleId> &circleIds)
|
||||
{
|
||||
#ifdef DEBUG_CIRCLES
|
||||
std::cerr << "p3GxsCircles::getCircleIdList()";
|
||||
@ -832,14 +841,10 @@ bool p3GxsCircles::getCircleExternalIdList(std::list<RsGxsCircleId> &circleIds)
|
||||
#endif // DEBUG_CIRCLES
|
||||
|
||||
RsStackMutex stack(mCircleMtx); /********** STACK LOCKED MTX ******/
|
||||
if (circleIds.empty())
|
||||
circleIds = mCircleExternalIdList;
|
||||
else
|
||||
{
|
||||
std::list<RsGxsCircleId>::const_iterator it;
|
||||
for(it = mCircleExternalIdList.begin(); it != mCircleExternalIdList.begin(); ++it)
|
||||
circleIds.push_back(*it);
|
||||
}
|
||||
|
||||
for(auto& cache: mCircleCache)
|
||||
if(cache.second.mIsExternal)
|
||||
circleIds.insert(cache.first);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -1006,18 +1011,6 @@ bool p3GxsCircles::getMsgData(const uint32_t &token, std::vector<RsGxsCircleMsg>
|
||||
|
||||
for(; vit != msgItems.end(); ++vit)
|
||||
{
|
||||
#ifdef TO_REMOVE
|
||||
RsGxsCircleMsgItem* item = dynamic_cast<RsGxsCircleMsgItem*>(*vit);
|
||||
|
||||
if(item)
|
||||
{
|
||||
RsGxsCircleMsg msg = item->mMsg;
|
||||
msg.mMeta = item->meta;
|
||||
msgs.push_back(msg);
|
||||
delete item;
|
||||
}
|
||||
#endif
|
||||
|
||||
RsGxsCircleSubscriptionRequestItem* rsItem = dynamic_cast<RsGxsCircleSubscriptionRequestItem*>(*vit);
|
||||
|
||||
if (rsItem)
|
||||
@ -1087,10 +1080,6 @@ RsGenExchange::ServiceCreate_Return p3GxsCircles::service_CreateGroup(RsGxsGrpIt
|
||||
item->meta.mCircleId = RsGxsCircleId(item->meta.mGroupId);
|
||||
}
|
||||
|
||||
// the advantage of adding the id to the list now is, that we know the cirlce type at this point
|
||||
// this is not the case in NotifyChanges()
|
||||
addCircleIdToList(RsGxsCircleId(item->meta.mGroupId), item->meta.mCircleType);
|
||||
|
||||
return SERVICE_CREATE_SUCCESS;
|
||||
}
|
||||
|
||||
@ -1210,67 +1199,6 @@ bool RsGxsCircleCache::addLocalFriend(const RsPgpId &pgpId)
|
||||
return true;
|
||||
}
|
||||
|
||||
/************************************************************************************/
|
||||
/************************************************************************************/
|
||||
|
||||
bool p3GxsCircles::request_CircleIdList()
|
||||
{
|
||||
/* trigger request to load missing ids into cache */
|
||||
#ifdef DEBUG_CIRCLES
|
||||
std::cerr << "p3GxsCircles::request_CircleIdList()";
|
||||
std::cerr << std::endl;
|
||||
#endif // DEBUG_CIRCLES
|
||||
|
||||
uint32_t ansType = RS_TOKREQ_ANSTYPE_SUMMARY;
|
||||
RsTokReqOptions opts;
|
||||
opts.mReqType = GXS_REQUEST_TYPE_GROUP_META;
|
||||
|
||||
uint32_t token = 0;
|
||||
|
||||
RsGenExchange::getTokenService()->requestGroupInfo(token, ansType, opts);
|
||||
GxsTokenQueue::queueRequest(token, CIRCLEREQ_CIRCLE_LIST);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool p3GxsCircles::load_CircleIdList(uint32_t token)
|
||||
{
|
||||
#ifdef DEBUG_CIRCLES
|
||||
std::cerr << "p3GxsCircles::load_CircleIdList() : " << token;
|
||||
std::cerr << std::endl;
|
||||
#endif // DEBUG_CIRCLES
|
||||
|
||||
std::list<RsGroupMetaData> groups;
|
||||
bool ok = RsGenExchange::getGroupMeta(token, groups);
|
||||
|
||||
if(ok)
|
||||
{
|
||||
// Save List
|
||||
{
|
||||
RsStackMutex stack(mCircleMtx); /********** STACK LOCKED MTX ******/
|
||||
mCirclePersonalIdList.clear();
|
||||
mCircleExternalIdList.clear();
|
||||
}
|
||||
|
||||
for(std::list<RsGroupMetaData>::iterator it = groups.begin(); it != groups.end(); ++it)
|
||||
{
|
||||
addCircleIdToList(RsGxsCircleId(it->mGroupId), it->mCircleType);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << "p3GxsCircles::load_CircleIdList() ERROR no data";
|
||||
std::cerr << std::endl;
|
||||
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/************************************************************************************/
|
||||
/************************************************************************************/
|
||||
/************************************************************************************/
|
||||
@ -1713,24 +1641,6 @@ bool p3GxsCircles::locked_checkCircleCacheForAutoSubscribe(RsGxsCircleCache& cac
|
||||
return true;
|
||||
}
|
||||
|
||||
void p3GxsCircles::addCircleIdToList(const RsGxsCircleId &circleId, uint32_t circleType)
|
||||
{
|
||||
RsStackMutex stack(mCircleMtx); /********** STACK LOCKED MTX ******/
|
||||
|
||||
if (circleType == GXS_CIRCLE_TYPE_LOCAL)
|
||||
{
|
||||
if(mCirclePersonalIdList.end() == std::find(mCirclePersonalIdList.begin(), mCirclePersonalIdList.end(), circleId)){
|
||||
mCirclePersonalIdList.push_back(circleId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(mCircleExternalIdList.end() == std::find(mCircleExternalIdList.begin(), mCircleExternalIdList.end(), circleId)){
|
||||
mCircleExternalIdList.push_back(circleId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool p3GxsCircles::service_checkIfGroupIsStillUsed(const RsGxsGrpMetaData& meta)
|
||||
{
|
||||
#ifdef GXSFORUMS_CHANNELS
|
||||
@ -1802,10 +1712,6 @@ void p3GxsCircles::handleResponse(uint32_t token, uint32_t req_type)
|
||||
// stuff.
|
||||
switch(req_type)
|
||||
{
|
||||
case CIRCLEREQ_CIRCLE_LIST:
|
||||
load_CircleIdList(token);
|
||||
break;
|
||||
|
||||
case CIRCLEREQ_MESSAGE_DATA:
|
||||
processMembershipRequests(token);
|
||||
break;
|
||||
@ -1831,10 +1737,6 @@ void p3GxsCircles::handle_event(uint32_t event_type, const std::string &elabel)
|
||||
// stuff.
|
||||
switch(event_type)
|
||||
{
|
||||
case CIRCLE_EVENT_LOADIDS:
|
||||
request_CircleIdList();
|
||||
break;
|
||||
|
||||
case CIRCLE_EVENT_CACHELOAD:
|
||||
cache_start_load();
|
||||
break;
|
||||
|
@ -271,7 +271,7 @@ public:
|
||||
) override;
|
||||
|
||||
virtual bool getCircleDetails(const RsGxsCircleId &id, RsGxsCircleDetails &details) override;
|
||||
virtual bool getCircleExternalIdList(std::list<RsGxsCircleId> &circleIds) override;
|
||||
virtual bool getCircleExternalIdList(std::set<RsGxsCircleId> &circleIds) override;
|
||||
|
||||
virtual bool isLoaded(const RsGxsCircleId &circleId) override;
|
||||
virtual bool loadCircle(const RsGxsCircleId &circleId) override;
|
||||
@ -326,8 +326,6 @@ protected:
|
||||
private:
|
||||
|
||||
// Load data.
|
||||
bool request_CircleIdList();
|
||||
bool load_CircleIdList(uint32_t token);
|
||||
bool processMembershipRequests(uint32_t token);
|
||||
|
||||
// Need some crazy arsed cache to store the circle info.
|
||||
@ -351,21 +349,11 @@ protected:
|
||||
p3IdService *mIdentities; // Needed for constructing Circle Info,
|
||||
PgpAuxUtils *mPgpUtils;
|
||||
|
||||
// put a circle id into the external or personal circle id list
|
||||
// this function locks the mutex
|
||||
// if the id is already in the list, it will not be added again
|
||||
// G10h4ck: this is terrible, an std::set instead of a list should be used
|
||||
// to guarantee uniqueness
|
||||
void addCircleIdToList(const RsGxsCircleId& circleId, uint32_t circleType);
|
||||
|
||||
RsMutex mCircleMtx; /* Locked Below Here */
|
||||
RsMutex mKnownCirclesMtx; /* Locked Below Here */
|
||||
|
||||
std::map<RsGxsGroupId,rstime_t> mKnownCircles;
|
||||
|
||||
std::list<RsGxsCircleId> mCircleExternalIdList;
|
||||
std::list<RsGxsCircleId> mCirclePersonalIdList;
|
||||
|
||||
/***** Caching Circle Info, *****/
|
||||
|
||||
// waiting for subcircle to load. (first is part of each of the second list)
|
||||
|
@ -380,6 +380,18 @@ void p3GxsForums::notifyChanges(std::vector<RsGxsNotify *> &changes)
|
||||
rsEvents->postEvent(ev);
|
||||
}
|
||||
|
||||
if( old_forum_grp_item->mGroup.mDescription != new_forum_grp_item->mGroup.mDescription
|
||||
|| old_forum_grp_item->meta.mGroupName != new_forum_grp_item->meta.mGroupName
|
||||
|| old_forum_grp_item->meta.mGroupFlags != new_forum_grp_item->meta.mGroupFlags
|
||||
|| old_forum_grp_item->meta.mAuthorId != new_forum_grp_item->meta.mAuthorId
|
||||
|| old_forum_grp_item->meta.mCircleId != new_forum_grp_item->meta.mCircleId
|
||||
)
|
||||
{
|
||||
auto ev = std::make_shared<RsGxsForumEvent>();
|
||||
ev->mForumGroupId = new_forum_grp_item->meta.mGroupId;
|
||||
ev->mForumEventCode = RsForumEventCode::UPDATED_FORUM;
|
||||
rsEvents->postEvent(ev);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -159,7 +159,7 @@
|
||||
<item row="0" column="1">
|
||||
<widget class="QToolButton" name="createLobbyToolButton">
|
||||
<property name="toolTip">
|
||||
<string>Create chat lobby</string>
|
||||
<string><html><head/><body><p>Create new chat room</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
|
@ -152,6 +152,9 @@
|
||||
</item>
|
||||
<item row="3" column="1" colspan="5">
|
||||
<widget class="QLabel" name="infoLastPost">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>This includes posts, comments to posts and votes to comments.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">unknown</string>
|
||||
</property>
|
||||
@ -217,8 +220,11 @@
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>This includes posts, comments to posts and votes to comments.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Last Post:</string>
|
||||
<string>Last activity:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -230,6 +236,9 @@
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Includes all posts, comments and votes. This number is progressively updates when new friend connect. The local vs. at friends difference may indicate that you would get older posts by increasing the synchronization period.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">0</string>
|
||||
</property>
|
||||
@ -269,7 +278,7 @@
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Popularity</string>
|
||||
<string>Popularity:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -287,8 +296,11 @@
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Includes all posts, comments and votes. This number is progressively updated when new friend connect. The local vs. at friends difference may indicate that you would get older posts by increasing the synchronization period.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Posts</string>
|
||||
<string>Contributions:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -340,7 +352,7 @@
|
||||
<string notr="true"><!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:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
|
||||
</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; 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></string>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
@ -592,23 +604,16 @@ p, li { white-space: pre-wrap; }
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>GxsIdChooser</class>
|
||||
<extends>QComboBox</extends>
|
||||
<header>gui/gxs/GxsIdChooser.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>LineEditClear</class>
|
||||
<extends>QLineEdit</extends>
|
||||
<header location="global">gui/common/LineEditClear.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>RSTabWidget</class>
|
||||
<extends>QTabWidget</extends>
|
||||
<header>gui/common/RSTabWidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>RSTreeView</class>
|
||||
<extends>QTreeView</extends>
|
||||
<header>gui/common/RSTreeView.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>GxsIdLabel</class>
|
||||
<extends>QLabel</extends>
|
||||
@ -620,14 +625,21 @@ p, li { white-space: pre-wrap; }
|
||||
<header>gui/common/SubscribeToolButton.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>GxsIdChooser</class>
|
||||
<extends>QComboBox</extends>
|
||||
<header>gui/gxs/GxsIdChooser.h</header>
|
||||
<class>RSTreeView</class>
|
||||
<extends>QTreeView</extends>
|
||||
<header>gui/common/RSTreeView.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>RSTabWidget</class>
|
||||
<extends>QTabWidget</extends>
|
||||
<header>gui/common/RSTabWidget.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources>
|
||||
<include location="../icons.qrc"/>
|
||||
<include location="Posted_images.qrc"/>
|
||||
<include location="../icons.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
@ -134,14 +134,8 @@ public:
|
||||
|
||||
QModelIndex index = sourceModel()->index(source_row,0,source_parent);
|
||||
|
||||
if(index.data(RsFriendListModel::TypeRole) == RsFriendListModel::ENTRY_TYPE_GROUP)
|
||||
{
|
||||
RsGroupInfo group_info ;
|
||||
static_cast<RsFriendListModel*>(sourceModel())->getGroupData(index,group_info);
|
||||
|
||||
if(group_info.peerIds.empty())
|
||||
return false;
|
||||
}
|
||||
if(index.data(RsFriendListModel::TypeRole) == RsFriendListModel::ENTRY_TYPE_GROUP) // always show groups, so we can delete them even when empty
|
||||
return true;
|
||||
|
||||
// Filter offline friends
|
||||
|
||||
|
@ -163,7 +163,7 @@ void GxsChannelPostItem::setup()
|
||||
ui->downloadButton->setIcon(FilesDefs::getIconFromQtResourcePath(":/icons/png/download.png"));
|
||||
ui->playButton->setIcon(FilesDefs::getIconFromQtResourcePath(":/icons/png/play.png"));
|
||||
ui->commentButton->setIcon(FilesDefs::getIconFromQtResourcePath(":/icons/png/comment.png"));
|
||||
ui->editButton->setIcon(FilesDefs::getIconFromQtResourcePath(":/icons/png/pencil-edit-button.png"));
|
||||
//ui->editButton->setIcon(FilesDefs::getIconFromQtResourcePath(":/icons/png/pencil-edit-button.png"));
|
||||
ui->copyLinkButton->setIcon(FilesDefs::getIconFromQtResourcePath(":/icons/png/copy.png"));
|
||||
ui->expandButton->setIcon(FilesDefs::getIconFromQtResourcePath(":/icons/png/down-arrow.png"));
|
||||
ui->readAndClearButton->setIcon(FilesDefs::getIconFromQtResourcePath(":/icons/png/correct.png"));
|
||||
@ -196,7 +196,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->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)));
|
||||
@ -447,8 +447,8 @@ void GxsChannelPostItem::fill()
|
||||
else
|
||||
ui->logoLabel->setPicture( FilesDefs::getPixmapFromQtResourcePath(":/images/thumb-default-video.png") );
|
||||
|
||||
if( !IS_GROUP_PUBLISHER(mGroupMeta.mSubscribeFlags) )
|
||||
ui->editButton->hide() ;
|
||||
//if( !IS_GROUP_PUBLISHER(mGroupMeta.mSubscribeFlags) )
|
||||
ui->editButton->hide() ; // never show this button. Feeds are not the place to edit posts.
|
||||
|
||||
if (!mIsHome)
|
||||
{
|
||||
|
@ -63,7 +63,7 @@ bool MakeGxsCircleDesc(const RsGxsCircleId &id, QString &desc)
|
||||
|
||||
void GxsCircleChooser::loadGxsCircles()
|
||||
{
|
||||
std::list<RsGxsCircleId> ids;
|
||||
std::set<RsGxsCircleId> ids;
|
||||
rsGxsCircles->getCircleExternalIdList(ids);
|
||||
|
||||
if (ids.empty())
|
||||
@ -73,10 +73,9 @@ void GxsCircleChooser::loadGxsCircles()
|
||||
return;
|
||||
}
|
||||
|
||||
std::list<RsGxsCircleId>::iterator it;
|
||||
int i = 0;
|
||||
int def = -1;
|
||||
for(it = ids.begin(); it != ids.end(); ++it, ++i)
|
||||
for(auto it(ids.begin()); it != ids.end(); ++it, ++i)
|
||||
{
|
||||
/* add to Chooser */
|
||||
QString str;
|
||||
@ -91,15 +90,11 @@ void GxsCircleChooser::loadGxsCircles()
|
||||
addItem(str, id);
|
||||
|
||||
if (mDefaultCircleId == *it)
|
||||
{
|
||||
def = i;
|
||||
}
|
||||
}
|
||||
|
||||
if (def >= 0)
|
||||
{
|
||||
setCurrentIndex(def);
|
||||
}
|
||||
}
|
||||
|
||||
bool GxsCircleChooser::getChosenCircle(RsGxsCircleId &id)
|
||||
|
@ -234,6 +234,9 @@
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QLabel" name="infoPosts">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Includes all posts, comments and votes. This number is progressively updated when new friend connect. The local vs. at friends difference may indicate that you would get older posts by increasing the synchronization period.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">0</string>
|
||||
</property>
|
||||
@ -251,6 +254,9 @@
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QLabel" name="infoLastPost">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>This includes posts, comments to posts and votes to comments.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string notr="true">unknown</string>
|
||||
</property>
|
||||
@ -277,8 +283,11 @@
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>This includes posts, comments to posts and votes to comments.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Last Post:</string>
|
||||
<string>Last activity:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -310,7 +319,7 @@
|
||||
</font>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p align="justify">The number of posts at friends is progressively updated.</p><p align="justify">The new numbers will show next time you load this channel.</p><p align="justify">The two numbers differ depending on your friends synchronization</p><p>time limits as well as yours.</p></body></html></string>
|
||||
<string><html><head/><body><p>Includes all posts, comments and votes. This number is progressively updated when new friend connect. The local vs. at friends difference may indicate that you would get older posts by increasing the synchronization period.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Posts (locally / at friends):</string>
|
||||
@ -380,7 +389,7 @@
|
||||
<string notr="true"><!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:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;">
|
||||
</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; 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></string>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
@ -627,18 +636,18 @@ p, li { white-space: pre-wrap; }
|
||||
<customwidget>
|
||||
<class>LineEditClear</class>
|
||||
<extends>QLineEdit</extends>
|
||||
<header>gui/common/LineEditClear.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>SubscribeToolButton</class>
|
||||
<extends>QToolButton</extends>
|
||||
<header>gui/common/SubscribeToolButton.h</header>
|
||||
<header location="global">gui/common/LineEditClear.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>GxsIdLabel</class>
|
||||
<extends>QLabel</extends>
|
||||
<header>gui/gxs/GxsIdLabel.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>SubscribeToolButton</class>
|
||||
<extends>QToolButton</extends>
|
||||
<header>gui/common/SubscribeToolButton.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>RSTreeView</class>
|
||||
<extends>QTreeView</extends>
|
||||
|
@ -66,7 +66,8 @@ void GxsForumsDialog::handleEvent_main_thread(std::shared_ptr<const RsEvent> eve
|
||||
updateGroupStatisticsReal(e->mForumGroupId); // update the list immediately
|
||||
break;
|
||||
|
||||
case RsForumEventCode::NEW_FORUM: // [[fallthrough]];
|
||||
case RsForumEventCode::NEW_FORUM: // [[fallthrough]];
|
||||
case RsForumEventCode::UPDATED_FORUM: // [[fallthrough]];
|
||||
case RsForumEventCode::DELETED_FORUM: // [[fallthrough]];
|
||||
case RsForumEventCode::SUBSCRIBE_STATUS_CHANGED:
|
||||
updateDisplay(true);
|
||||
|
Loading…
Reference in New Issue
Block a user