示例#1
0
ClientPtr LoginDialog::loadClient(const QString &name, Buffer *cfg)
{
	if (name.isEmpty())
		return ClientPtr();
	QString clientName = name;
	QString pluginName = getToken(clientName, '/');
    if (pluginName.isEmpty() || clientName.length() == 0)
		return ClientPtr();
	if(!getPluginManager()->isPluginProtocol(pluginName))
    {
        log(L_DEBUG, "Plugin %s is not a protocol plugin", qPrintable(pluginName));
		return ClientPtr();
	}
	PluginPtr plugin = getPluginManager()->plugin(pluginName);
	if(plugin.isNull())
    {
        log(L_WARN, "Plugin %s not found", qPrintable(pluginName));
		return ClientPtr();
	}
	m_protocolPlugins.append(plugin);
	ProfileManager::instance()->currentProfile()->enablePlugin(pluginName);
	ProtocolPtr protocol;
	ProtocolIterator it;
    while ((protocol = ++it) != NULL)
        if (protocol->description()->text == clientName)
            return protocol->createClient(cfg);
    log(L_DEBUG, "Protocol %s not found", qPrintable(clientName));
	return ClientPtr();
}
    void ProtocolManager::removeProtocol(ProtocolPtr protocol)
    {
        int i = 0;
        foreach(ProtocolPtr p, m_protocols)
        {
            if(p.data() == protocol.data())
            {
                m_protocols.removeAt(i);
                break;
            }
            i++;
        }

    }
示例#3
0
void AIMInfo::fill()
{
    ICQUserData *data = m_data;
    if (data == NULL) data = &m_client->data.owner;

    edtScreen->setText(data->getScreen());
    edtFirst->setText(data->getFirstName());
    edtLast->setText(data->getLastName());
	edtMiddle->setText(data->getMiddleName());
    edtMaiden->setText(data->getMaiden());
    edtNick->setText(data->getNick());
    edtStreet->setText(data->getAddress());
    edtCity->setText(data->getCity());
    edtState->setText(data->getState());
    edtZip->setText(data->getZip());
    initCombo(cmbCountry, data->getCountry(), getCountries());

    if (m_data == NULL){
        if (edtFirst->text().isEmpty()) {
            QString firstName = getContacts()->owner()->getFirstName();
            firstName = getToken(firstName, '/');
            edtFirst->setText(firstName);
        }
        if (edtLast->text().isEmpty()) {
            QString lastName = getContacts()->owner()->getLastName();
            lastName = getToken(lastName, '/');
            edtLast->setText(lastName);
        }
    }

    cmbStatus->clear();
    unsigned status = STATUS_ONLINE;
    if (m_data){
        switch (m_data->getStatus()){
        case STATUS_ONLINE:
        case STATUS_OFFLINE:
            status = m_data->getStatus();
            break;
        default:
            status = STATUS_AWAY;
        }
    }else{
        status = m_client->getStatus();
    }
    if (m_data && !m_data->getAutoReply().isEmpty()){
        edtAutoReply->setPlainText(m_data->getAutoReply());
    }else{
        edtAutoReply->hide();
    }

    int current = 0;
    QString text;
	ProtocolPtr proto = ICQPlugin::icq_plugin->m_aim;
	AIMProtocol* aim = static_cast<AIMProtocol*>(proto.data());
    for (const CommandDef *cmd = aim->statusList(); cmd->id; cmd++){
        if (cmd->flags & COMMAND_CHECK_STATE)
            continue;
        if (status == cmd->id){
            current = cmbStatus->count();
            text = cmd->text;
        }
        cmbStatus->addItem(Pict(cmd->icon), i18n(cmd->text));
    }

    cmbStatus->setCurrentIndex(current);
    disableWidget(cmbStatus);
    if (status == STATUS_OFFLINE){
        lblOnline->setText(i18n("Last online") + ':');
        edtOnline->setText(formatDateTime(QDateTime::fromTime_t(data->getStatusTime())));
        lblNA->hide();
        edtNA->hide();
    }else{
		if (data->getOnlineTime()){
			edtOnline->setText(formatDateTime(QDateTime::fromTime_t(data->getOnlineTime())));
        }else{
            lblOnline->hide();
            edtOnline->hide();
        }
        if ((status == STATUS_ONLINE) || text.isEmpty()){
            lblNA->hide();
            edtNA->hide();
        }else{
            lblNA->setText(i18n(text));
            edtNA->setText(formatDateTime(QDateTime::fromTime_t(data->getStatusTime())));
        }
    }
    if (data->getIP()){
        edtExtIP->setText(formatAddr(data->getIP(), data->getPort()));
    }else{
        lblExtIP->hide();
        edtExtIP->hide();
    }
    if (data->getRealIP() && ((data->getIP() == 0) || ((data->getIP()) != (data->getRealIP())))){
        edtIntIP->setText(formatAddr(data->getRealIP(), data->getPort()));
    }else{
        lblIntIP->hide();
        edtIntIP->hide();
    }
    if (m_data){
        QString client_name = m_client->clientName(data);
        if (client_name.length()){
            edtClient->setText(client_name);
        }else{
            lblClient->hide();
            edtClient->hide();
        }
    }else{
        QString name = PACKAGE;
        name += ' ';
        name += VERSION;
#ifdef WIN32
        name += "/win32";
#endif
        edtClient->setText(name);
    }
}
示例#4
0
void ICQInfo::fill()
{
    ICQUserData *data = m_data;
    if (data == NULL) data = &m_client->data.owner;

    edtUin->setText(QString::number(data->Uin.toULong()));
    edtFirst->setText(data->FirstName.str());
    edtLast->setText(data->LastName.str());
    edtNick->setText(data->Nick.str());

    if (m_data == NULL){
        if (edtFirst->text().isEmpty()) {
            QString firstName = getContacts()->owner()->getFirstName();
            firstName = getToken(firstName, '/');
            edtFirst->setText(firstName);
        }
        if (edtLast->text().isEmpty()) {
            QString lastName = getContacts()->owner()->getLastName();
            lastName = getToken(lastName, '/');
            edtLast->setText(lastName);
        }
        password->setEnabled(m_client->getState() == Client::Connected);
    }

    cmbStatus->clear();
    unsigned status = STATUS_ONLINE;
    if (m_data){
        unsigned s = m_data->Status.toULong();
        if (s == ICQ_STATUS_OFFLINE){
            status = STATUS_OFFLINE;
        }else if (s & ICQ_STATUS_DND){
            status = STATUS_DND;
        }else if (s & ICQ_STATUS_OCCUPIED){
            status = STATUS_OCCUPIED;
        }else if (s & ICQ_STATUS_NA){
            status = STATUS_NA;
        }else if (s & ICQ_STATUS_AWAY){
            status = STATUS_AWAY;
        }else if (s & ICQ_STATUS_FFC){
            status = STATUS_FFC;
        }
    }else{
        status = m_client->getStatus();
        initCombo(cmbRandom, m_client->getRandomChatGroup(), chat_groups);
    }
    if ((status != STATUS_ONLINE) && (status != STATUS_OFFLINE) && m_data){
        edtAutoReply->setPlainText(m_data->AutoReply.str());
    }else{
        edtAutoReply->hide();
    }

    int current = 0;
    QString text;
    if (m_data && (status == STATUS_OFFLINE) && m_data->bInvisible.toBool()){
        cmbStatus->addItem(Pict("ICQ_invisible"), i18n("Possibly invisible"));
    }else{
		ProtocolPtr proto = ICQPlugin::icq_plugin->m_icq;
		ICQProtocol* icq = static_cast<ICQProtocol*>(proto.data());
        for (const CommandDef *cmd = icq->statusList(); cmd->id; cmd++){
            if (cmd->flags & COMMAND_CHECK_STATE)
                continue;
            if (status == cmd->id){
                current = cmbStatus->count();
                text = cmd->text;
            }
            cmbStatus->addItem(Pict(cmd->icon), i18n(cmd->text));
        }
    }
    cmbStatus->setCurrentIndex(current);
    disableWidget(cmbStatus);
    if (status == STATUS_OFFLINE){
        lblOnline->setText(i18n("Last online") + ':');
        edtOnline->setText(formatDateTime(data->StatusTime.toULong()));
        lblNA->hide();
        edtNA->hide();
    }else{
        if (data->OnlineTime.toULong()){
            edtOnline->setText(formatDateTime(data->OnlineTime.toULong()));
        }else{
            lblOnline->hide();
            edtOnline->hide();
        }
        if ((status == STATUS_ONLINE) || text.isEmpty()){
            lblNA->hide();
            edtNA->hide();
        }else{
            lblNA->setText(i18n(text));
            edtNA->setText(formatDateTime(data->StatusTime.toULong()));
        }
    }
    if (data->IP.ip()){
        edtExtIP->setText(formatAddr(data->IP, data->Port.toULong()));
    }else{
        lblExtIP->hide();
        edtExtIP->hide();
    }
    if ((data->RealIP.ip()) && ((data->IP.ip() == NULL) || (get_ip(data->IP) != get_ip(data->RealIP)))){
        edtIntIP->setText(formatAddr(data->RealIP, data->Port.toULong()));
    }else{
        lblIntIP->hide();
        edtIntIP->hide();
    }
    if (m_data){
        QString client_name = m_client->clientName(data);
        if (client_name.length()){
            edtClient->setText(client_name);
        }else{
            lblClient->hide();
            edtClient->hide();
        }
    }else{
        QString name = PACKAGE;
        name += ' ';
        name += VERSION;
#ifdef WIN32
        name += "/win32";
#endif
        edtClient->setText(name);
    }
}