fixed bug with default chat lobby identity causing settings to show an empty list. Also fixed up GxsIdChooser

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@8081 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
csoler 2015-03-26 21:20:57 +00:00
parent 24c421c0b7
commit 9d2b6faf9c
6 changed files with 31 additions and 8 deletions

View File

@ -66,6 +66,7 @@ H [ ] Distant chat should work with shared identities
[X] Distant chat fails (tunnel bullet never gets green) when re-openning a distant chat window after closing a tunnel [X] Distant chat fails (tunnel bullet never gets green) when re-openning a distant chat window after closing a tunnel
[X] Distant chat fails (chat window never appears) when re-openning a distant chat window after closing a tunnel [X] Distant chat fails (chat window never appears) when re-openning a distant chat window after closing a tunnel
[X] You should not be enabled to distant-chat yourself! [X] You should not be enabled to distant-chat yourself!
[ ] Nickname completion is broken. It only works with @
Identities: Identities:
[X] "Owned by you" => "Owned by node [nodename]" [X] "Owned by you" => "Owned by node [nodename]"

View File

@ -1565,9 +1565,27 @@ bool DistributedChatService::setDefaultIdentityForChatLobby(const RsGxsId& nick)
} }
bool DistributedChatService::getDefaultIdentityForChatLobby(RsGxsId& nick) bool DistributedChatService::getDefaultIdentityForChatLobby(RsGxsId& nick)
{ {
RsStackMutex stack(mDistributedChatMtx); /********** STACK LOCKED MTX ******/ RsStackMutex stack(mDistributedChatMtx); /********** STACK LOCKED MTX ******/
nick = _default_identity ;
return true ; nick = locked_getDefaultIdentity() ;
return true ;
}
RsGxsId DistributedChatService::locked_getDefaultIdentity()
{
if(_default_identity.isNull() && rsIdentity!=NULL)
{
std::list<RsGxsId> own_ids ;
rsIdentity->getOwnIds(own_ids) ;
if(!own_ids.empty())
{
_default_identity = own_ids.front() ;
triggerConfigSave();
}
}
return _default_identity ;
} }
bool DistributedChatService::getIdentityForChatLobby(const ChatLobbyId& lobby_id,RsGxsId& nick) bool DistributedChatService::getIdentityForChatLobby(const ChatLobbyId& lobby_id,RsGxsId& nick)
{ {

View File

@ -130,6 +130,7 @@ class DistributedChatService
bool locked_initLobbyBouncableObject(const ChatLobbyId& id,RsChatLobbyBouncingObject&) ; bool locked_initLobbyBouncableObject(const ChatLobbyId& id,RsChatLobbyBouncingObject&) ;
void locked_printDebugInfo() const ; void locked_printDebugInfo() const ;
RsGxsId locked_getDefaultIdentity();
static ChatLobbyVirtualPeerId makeVirtualPeerId(ChatLobbyId) ; static ChatLobbyVirtualPeerId makeVirtualPeerId(ChatLobbyId) ;
static uint64_t makeConnexionChallengeCode(const RsPeerId& peer_id,ChatLobbyId lobby_id,ChatLobbyMsgId msg_id) ; static uint64_t makeConnexionChallengeCode(const RsPeerId& peer_id,ChatLobbyId lobby_id,ChatLobbyMsgId msg_id) ;

View File

@ -306,9 +306,10 @@ void GxsIdChooser::indexActivated(int index)
} }
} }
void GxsIdChooser::updateDisplay(bool complete) void GxsIdChooser::updateDisplay(bool reset)
{ {
Q_UNUSED(complete) if(reset)
mFirstLoad = true ;
/* Update identity list */ /* Update identity list */
loadPrivateIds(); loadPrivateIds();

View File

@ -58,7 +58,7 @@ public:
protected: protected:
virtual void showEvent(QShowEvent *event); virtual void showEvent(QShowEvent *event);
void updateDisplay(bool complete); void updateDisplay(bool reset);
private slots: private slots:
void fillDisplay(bool complete); void fillDisplay(bool complete);

View File

@ -272,8 +272,10 @@ ChatPage::load()
RsGxsId gxs_id ; RsGxsId gxs_id ;
rsMsgs->getDefaultIdentityForChatLobby(gxs_id) ; rsMsgs->getDefaultIdentityForChatLobby(gxs_id) ;
ui.chatLobbyIdentity_IC->loadIds(IDCHOOSER_ID_REQUIRED, gxs_id); ui.chatLobbyIdentity_IC->setFlags(IDCHOOSER_ID_REQUIRED) ;
ui.chatLobbyIdentity_IC->setChosenId(gxs_id);
if(!gxs_id.isNull())
ui.chatLobbyIdentity_IC->setChosenId(gxs_id);
uint chatflags = Settings->getChatFlags(); uint chatflags = Settings->getChatFlags();