Ejemplo n.º 1
0
	QObject* VkAccount::CreateNonRosterItem (const QString& idStr)
	{
		auto realId = idStr;
		if (realId.startsWith ("id"))
			realId = realId.remove (0, 2);

		bool ok = false;
		const auto id = realId.toULongLong (&ok);
		if (!ok)
			throw std::runtime_error (tr ("%1 is invalid VKontake ID")
					.arg (idStr)
					.toUtf8 ().constData ());

		if (Entries_.contains (id))
			return Entries_ [id];

		const auto entry = CreateNonRosterItem (id);
		emit gotCLItems ({ entry });

		NonRosterItems_ << id;
		Conn_->SetNRIList (NonRosterItems_);
		Conn_->GetUserInfo ({ id });

		return entry;
	}
Ejemplo n.º 2
0
	void AccountActionsManager::handleOpenNonRoster ()
	{
		const auto obj = sender ()->property ("Azoth/AccountObject").value<QObject*> ();
		const auto isnr = qobject_cast<ISupportNonRoster*> (obj);
		if (!isnr)
			return;

		QObject *entryObj = nullptr;
		QString contactId;
		while (!entryObj)
		{
			contactId = QInputDialog::getText (nullptr,
					tr ("Open chat with non-roster contact"),
					tr ("Enter ID of the contact you wish to open chat with:"),
					QLineEdit::Normal,
					contactId);
			if (contactId.isEmpty ())
				return;

			try
			{
				entryObj = isnr->CreateNonRosterItem (contactId);
			}
			catch (const std::exception& e)
			{
				QMessageBox::critical (nullptr,
						"LeechCraft Azoth",
						tr ("Error opening chat: %1")
							.arg (QString::fromUtf8 (e.what ())));
			}
		}

		const auto entry = qobject_cast<ICLEntry*> (entryObj);
		Core::Instance ().GetChatTabsManager ()->OpenChat (entry, true);
	}
Ejemplo n.º 3
0
	void VkAccount::handleNRIList (const QList<qulonglong>& ids)
	{
		QList<qulonglong> toRequest;
		QList<QObject*> objs;
		for (auto id : ids)
		{
			if (Entries_.contains (id))
				continue;

			toRequest << id;
			objs << CreateNonRosterItem (id);
		}

		emit gotCLItems (objs);
		Conn_->GetUserInfo (toRequest);

		NonRosterItems_ = toRequest;
	}