You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
253 lines
7.2 KiB
253 lines
7.2 KiB
//=============================================================================
|
|
//
|
|
// File : kvi_useridentity.cpp
|
|
// Created on Sun 21 Jan 2007 04:31:47 by Szymon Stefanek
|
|
//
|
|
// This file is part of the KVIrc IRC Client distribution
|
|
// Copyright (C) 2007 Szymon Stefanek <pragma at kvirc dot net>
|
|
//
|
|
// This program is FREE software. You can redistribute it and/or
|
|
// modify it under the terms of the GNU General Public License
|
|
// as published by the Free Software Foundation; either version 2
|
|
// of the License, or (at your opinion) any later version.
|
|
//
|
|
// This program is distributed in the HOPE that it will be USEFUL,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
// See the GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program. If not, write to the Free Software Foundation,
|
|
// Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
//
|
|
//=============================================================================
|
|
|
|
#define __KVILIB__
|
|
|
|
#include "kvi_useridentity.h"
|
|
#include "kvi_locale.h"
|
|
#include "kvi_defaults.h"
|
|
|
|
// FIXME: Put here also the default away message, default away nick, default ctcp replies etc ?
|
|
|
|
bool KviUserIdentity::load(KviConfig &cfg)
|
|
{
|
|
m_szId = cfg.group();
|
|
m_szNickName = cfg.readTQStringEntry("NickName");
|
|
m_szAltNickName1 = cfg.readTQStringEntry("AltNickName1");
|
|
m_szAltNickName2 = cfg.readTQStringEntry("AltNickName2");
|
|
m_szAltNickName3 = cfg.readTQStringEntry("AltNickName3");
|
|
m_szUserName = cfg.readTQStringEntry("UserName");
|
|
// FIXME: At least scramble the pass ?
|
|
m_szPassword = cfg.readTQStringEntry("Password");
|
|
KviPixmap def;
|
|
m_pixAvatar = cfg.readPixmapEntry("Avatar",def);
|
|
m_szPartMessage = cfg.readTQStringEntry("PartMessage");
|
|
m_szQuitMessage= cfg.readTQStringEntry("QuitMessage");
|
|
m_szAge = cfg.readTQStringEntry("Age");
|
|
m_szGender = cfg.readTQStringEntry("Gender");
|
|
m_szLocation = cfg.readTQStringEntry("Location");
|
|
m_szLanguages = cfg.readTQStringEntry("Languages");
|
|
m_szOtherInfo = cfg.readTQStringEntry("OtherInfo");
|
|
m_szUserMode = cfg.readTQStringEntry("UserMode");
|
|
m_szOnConnectCommand = cfg.readTQStringEntry("OnConnectCommand");
|
|
m_szOnLoginCommand = cfg.readTQStringEntry("OnLoginCommand");
|
|
return !(m_szId.isEmpty() || m_szNickName.isEmpty());
|
|
}
|
|
|
|
bool KviUserIdentity::save(KviConfig &cfg)
|
|
{
|
|
cfg.setGroup(m_szId);
|
|
cfg.writeEntry("NickName",m_szNickName);
|
|
cfg.writeEntry("AltNickName1",m_szAltNickName1);
|
|
cfg.writeEntry("AltNickName2",m_szAltNickName2);
|
|
cfg.writeEntry("AltNickName3",m_szAltNickName3);
|
|
cfg.writeEntry("UserName",m_szUserName);
|
|
// FIXME: At least scramble the pass ?
|
|
cfg.writeEntry("Password",m_szPassword);
|
|
cfg.writeEntry("Avatar",m_pixAvatar);
|
|
cfg.writeEntry("PartMessage",m_szPartMessage);
|
|
cfg.writeEntry("QuitMessage",m_szQuitMessage);
|
|
cfg.writeEntry("Age",m_szAge);
|
|
cfg.writeEntry("Gender",m_szGender);
|
|
cfg.writeEntry("Location",m_szLocation);
|
|
cfg.writeEntry("Languages",m_szLanguages);
|
|
cfg.writeEntry("OtherInfo",m_szOtherInfo);
|
|
cfg.writeEntry("UserMode",m_szUserMode);
|
|
cfg.writeEntry("OnConnectCommand",m_szOnConnectCommand);
|
|
cfg.writeEntry("OnLoginCommand",m_szOnLoginCommand);
|
|
return true;
|
|
}
|
|
|
|
void KviUserIdentity::copyFrom(const KviUserIdentity &src)
|
|
{
|
|
m_szId = src.m_szId;
|
|
m_szNickName = src.m_szNickName;
|
|
|
|
m_szAltNickName1 = src.m_szAltNickName1;
|
|
m_szAltNickName2 = src.m_szAltNickName2;
|
|
m_szAltNickName3 = src.m_szAltNickName3;
|
|
|
|
m_szUserName = src.m_szUserName;
|
|
m_szRealName = src.m_szRealName;
|
|
m_szPassword = src.m_szPassword;
|
|
|
|
m_pixAvatar = src.m_pixAvatar;
|
|
|
|
m_szUserName = src.m_szUserName;
|
|
m_szRealName = src.m_szRealName;
|
|
m_szPassword = src.m_szPassword;
|
|
|
|
m_pixAvatar = src.m_pixAvatar;
|
|
|
|
m_szPartMessage = src.m_szPartMessage;
|
|
m_szQuitMessage = src.m_szQuitMessage;
|
|
|
|
m_szAge = src.m_szAge;
|
|
m_szGender = src.m_szGender;
|
|
m_szLocation = src.m_szLocation;
|
|
m_szLanguages = src.m_szLanguages;
|
|
m_szOtherInfo = src.m_szOtherInfo;
|
|
|
|
m_szUserMode = src.m_szUserMode;
|
|
|
|
m_szOnConnectCommand = src.m_szOnConnectCommand;
|
|
m_szOnLoginCommand = src.m_szOnLoginCommand;
|
|
}
|
|
|
|
|
|
KviUserIdentityManager * KviUserIdentityManager::m_pInstance = 0;
|
|
|
|
KviUserIdentityManager::KviUserIdentityManager()
|
|
: KviHeapObject()
|
|
{
|
|
m_pIdentityDict = new KviPointerHashTable<TQString,KviUserIdentity>();
|
|
m_pIdentityDict->setAutoDelete(true);
|
|
}
|
|
|
|
KviUserIdentityManager::~KviUserIdentityManager()
|
|
{
|
|
delete m_pIdentityDict;
|
|
}
|
|
|
|
void KviUserIdentityManager::init()
|
|
{
|
|
if(m_pInstance)return;
|
|
m_pInstance = new KviUserIdentityManager();
|
|
}
|
|
|
|
void KviUserIdentityManager::done()
|
|
{
|
|
if(!m_pInstance)return;
|
|
delete m_pInstance;
|
|
m_pInstance = 0;
|
|
}
|
|
|
|
const KviUserIdentity * KviUserIdentityManager::defaultIdentity()
|
|
{
|
|
KviUserIdentity * ret;
|
|
if(!m_szDefaultIdentity.isEmpty())
|
|
{
|
|
ret = m_pIdentityDict->find(m_szDefaultIdentity);
|
|
if(ret)return ret;
|
|
}
|
|
|
|
// the default identity is borken :/
|
|
// grab the first one
|
|
KviPointerHashTableIterator<TQString,KviUserIdentity> it(*m_pIdentityDict);
|
|
ret = it.current();
|
|
if(ret)
|
|
{
|
|
m_szDefaultIdentity = ret->id();
|
|
return ret;
|
|
}
|
|
// no identities available: create the default
|
|
ret = new KviUserIdentity();
|
|
|
|
ret->setId(__tr2qs("Default"));
|
|
ret->setNickName(KVI_DEFAULT_NICKNAME1);
|
|
ret->setAltNickName1(KVI_DEFAULT_NICKNAME2);
|
|
ret->setAltNickName2(KVI_DEFAULT_NICKNAME3);
|
|
ret->setAltNickName3(KVI_DEFAULT_NICKNAME4);
|
|
ret->setUserName(KVI_DEFAULT_USERNAME);
|
|
ret->setRealName(KVI_DEFAULT_REALNAME);
|
|
ret->setPartMessage(KVI_DEFAULT_PART_MESSAGE);
|
|
ret->setQuitMessage(KVI_DEFAULT_QUIT_MESSAGE);
|
|
|
|
m_pIdentityDict->replace(ret->id(),ret);
|
|
|
|
return ret;
|
|
}
|
|
|
|
void KviUserIdentityManager::load(const TQString &szFileName)
|
|
{
|
|
m_pIdentityDict->clear();
|
|
|
|
KviConfig cfg(szFileName,KviConfig::Read);
|
|
|
|
cfg.setGroup("KVIrc");
|
|
|
|
m_szDefaultIdentity = cfg.readTQStringEntry("DefaultIdentity","");
|
|
|
|
KviConfigIterator it(*(cfg.dict()));
|
|
while(KviConfigGroup * grp = it.current())
|
|
{
|
|
if(!KviTQString::equalCI(it.currentKey(),"KVIrc"))
|
|
{
|
|
cfg.setGroup(it.currentKey());
|
|
|
|
KviUserIdentity * id = new KviUserIdentity();
|
|
if(id->load(cfg))
|
|
m_pIdentityDict->replace(id->id(),id);
|
|
else
|
|
delete id;
|
|
}
|
|
++it;
|
|
}
|
|
}
|
|
|
|
void KviUserIdentityManager::save(const TQString &szFileName)
|
|
{
|
|
KviConfig cfg(szFileName,KviConfig::Write);
|
|
cfg.clear();
|
|
|
|
cfg.setGroup("KVIrc");
|
|
|
|
cfg.writeEntry("DefaultIdentity",m_szDefaultIdentity);
|
|
|
|
KviPointerHashTableIterator<TQString,KviUserIdentity> it(*m_pIdentityDict);
|
|
while(KviUserIdentity * id = it.current())
|
|
{
|
|
id->save(cfg);
|
|
++it;
|
|
}
|
|
}
|
|
|
|
void KviUserIdentityManager::copyFrom(KviUserIdentityManager * pWorkingCopy)
|
|
{
|
|
m_pIdentityDict->clear();
|
|
m_szDefaultIdentity = pWorkingCopy->m_szDefaultIdentity;
|
|
KviPointerHashTableIterator<TQString,KviUserIdentity> it(*(pWorkingCopy->m_pIdentityDict));
|
|
while(KviUserIdentity * id = it.current())
|
|
{
|
|
KviUserIdentity * pNew = new KviUserIdentity();
|
|
pNew->copyFrom(*id);
|
|
m_pIdentityDict->replace(pNew->id(),pNew);
|
|
++it;
|
|
}
|
|
}
|
|
|
|
KviUserIdentityManager * KviUserIdentityManager::createWorkingCopy()
|
|
{
|
|
KviUserIdentityManager * pCopy = new KviUserIdentityManager();
|
|
pCopy->copyFrom(this);
|
|
return pCopy;
|
|
}
|
|
|
|
void KviUserIdentityManager::releaseWorkingCopy(KviUserIdentityManager * pWorkingCopy)
|
|
{
|
|
if(pWorkingCopy)delete pWorkingCopy;
|
|
}
|
|
|
|
|