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++; } }
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); } }
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); } }