bool CUserProfile::updateContactProfileFromJSON( const std::string& data, int& jsId, int& qtId ) { bool result = false; ContactProfile profile; ContactProfileJSONSerializer serializer( getUserProfile().getContactList(), profile ); if ( serializer.unserialize( data ) ) { if ( profile.getId() <= 0 ) //This is an add. { jsId = profile.getId(); getCContactList().addContact(profile); } else { Contact* contact = getUserProfile().getContactList().getContactByJSONId( profile.getId() ); if ( contact ) { // getCContactList().updateContactGroups( *contact, contact->getContactGroupInfoSet(), profile.getContactGroupInfoSet() ); //VOXOX - JRT - 2009.09.23 profile.getIMContactSetNonConst() = contact->getIMContactSetNonConst(); } getCContactList().updateContact( profile ); } result = true; } return result; }
void CUserProfile::updateUserProfileThreadSafe() { if ( _cWsContactProfile ) { _cWsContactProfile->setUserProfile( getUserProfile() ); } }
void CUserProfile::updateContactThreadSafe(const ContactProfile contactProfile) { //We need to get the ServerProtocolId or UserNetworkId for the IMAccount. IMContact* imContact = contactProfile.getPreferredIMContact(); if ( imContact ) { IMAccount* imAccount = getUserProfile().getIMAccountManager().getIMAccount( imContact->getIMAccount()->getKey() ); if ( imAccount ) { imContact->setServerProtocolId( imAccount->getServerProtocolId() ); imContact->setUserNetworkId ( imAccount->getUserNetworkId() ); //VOXOX - JRT - 2009.06.09 getCContactList().updateContact(contactProfile); //This does the update. } } }
std::string CUserProfile::getTranslationLanguageXML()//VOXOX - CJC - 2010.01.28 { return getUserProfile().getTranslationLanguagesXML();//VOXOX - CJC - 2010.01.28 }
//VOXOX - CJC - 2010.01.17 WsTranslation* CUserProfile::getWsTranslation()//VOXOX - CJC - 2010.01.17 { return getUserProfile().getWsTranslation(); }
//VOXOX CHANGE by Rolando - 2009.05.22 - added parameter "loginInvisible" to be able to login with a invisible presence void UserProfileHandler::setCurrentUserProfile(const std::string & name, const SipAccount & sipAccount, bool loginInvisible) { RecursiveMutex::ScopedLock lock(_mutex); UserProfile * result = getUserProfile(name); // Check if the desired UserProfile is different from the current UserProfile // and check if the WengoAccount of the current UserProfile is different from the given WengoAccount // (if so the WengoAccount (only 'password' and 'keep password' members) will be updated). if (!_currentUserProfile || (_currentUserProfile && ((_currentUserProfile->getName() != name) || ((sipAccount.getUserPassword() != result->getSipAccount()->getUserPassword()) || (sipAccount.isPasswordRemembered() != result->getSipAccount()->isPasswordRemembered()))))) { if (result) { // If the SipAccount is not empty, we update the one in UserProfile // This can happen if the password has been changed if (!sipAccount.isEmpty() ) { // to be virtual ? switch(sipAccount.getType()) { case SipAccount::SipAccountTypeBasic: { SipAccount * actSipAccount = result->getSipAccount(); if (actSipAccount) { actSipAccount->setRegisterServerHostname(sipAccount.getRegisterServerHostname()); actSipAccount->setRegisterServerPort(sipAccount.getRegisterServerPort()); actSipAccount->setSIPProxyServerHostname(sipAccount.getSIPProxyServerHostname()); actSipAccount->setSIPProxyServerPort(sipAccount.getSIPProxyServerPort()); actSipAccount->setDisplayName(sipAccount.getDisplayName()); actSipAccount->setIdentity(sipAccount.getIdentity()); actSipAccount->setUsername(sipAccount.getUsername()); actSipAccount->setPassword(sipAccount.getPassword()); actSipAccount->setRealm(sipAccount.getRealm()); actSipAccount->setVisibleName(sipAccount.getVisibleName()); actSipAccount->enablePIM(sipAccount.isPIMEnabled()); actSipAccount->setRememberPassword(sipAccount.isPasswordRemembered()); actSipAccount->setRememberUsername(sipAccount.isUsernameRemembered()); actSipAccount->setAutoLoginVoxOx(sipAccount.isAutoLoginVoxOx()); } else { SipAccount mySipAccount = sipAccount; result->setSipAccount(mySipAccount, false); } } break; case SipAccount::SipAccountTypeWengo: { const WengoAccount & refWengoAccount = dynamic_cast<const WengoAccount &>(sipAccount); WengoAccount * actWengoAccount = result->getWengoAccount(); if (actWengoAccount) { actWengoAccount->setWengoLogin(refWengoAccount.getWengoLogin()); actWengoAccount->setWengoPassword(refWengoAccount.getWengoPassword()); actWengoAccount->setRememberPassword(refWengoAccount.isPasswordRemembered()); actWengoAccount->setRememberUsername(refWengoAccount.isUsernameRemembered()); actWengoAccount->setAutoLoginVoxOx(sipAccount.isAutoLoginVoxOx()); } else { WengoAccount myWengoAccount = refWengoAccount; result->setSipAccount(myWengoAccount, false); } } break; } } //VOXOX CHANGE by Rolando - 2009.05.22 - sets if user checked login with a invisible presence result->setLoginInvisible(loginInvisible); if (_currentUserProfile) { LOG_DEBUG("UserProfile will change"); _desiredUserProfile = result; currentUserProfileWillDieEvent(*this); } else { LOG_DEBUG("No current UserProfile set. Change now"); _currentUserProfile = result; initializeCurrentUserProfile(); } } else { // log off if (_currentUserProfile && name.empty()) { _saveTimerRunning = false; _saveTimer.stop(); _desiredUserProfile = NULL; currentUserProfileWillDieEvent(*this); // when name is empty or do not match any profile } else { noCurrentUserProfileSetEvent(*this); } } } }