Exemplo n.º 1
0
	void BookmarksManagerDialog::handleBookmarksChanged ()
	{
		const int curIdx = Ui_.AccountBox_->currentIndex ();

		IAccount *acc = qobject_cast<IAccount*> (sender ());
		if (acc != Ui_.AccountBox_->itemData (curIdx).value<IAccount*> ())
			return;

		on_AccountBox__currentIndexChanged (curIdx);
	}
	bool BookmarksManagerDialog::FocusOn (IAccount *acc)
	{
		const auto& accVar = QVariant::fromValue<IAccount*> (acc);

		for (int i = 0; i < Ui_.AccountBox_->count (); ++i)
			if (Ui_.AccountBox_->itemData (i) == accVar)
			{
				Ui_.AccountBox_->setCurrentIndex (i);
				on_AccountBox__currentIndexChanged (i);
				return true;
			}

		return false;
	}
	BookmarksManagerDialog::BookmarksManagerDialog (QWidget *parent)
	: QDialog (parent)
	, BMModel_ (new QStandardItemModel (this))
	{
		setAttribute (Qt::WA_DeleteOnClose, true);

		Ui_.setupUi (this);
		Ui_.BookmarksTree_->setModel (BMModel_);

		for (auto proto : Core::Instance ().GetProtocols ())
		{
			if (!qobject_cast<IMUCProtocol*> (proto->GetQObject ()))
				continue;

			for (auto accObj : proto->GetRegisteredAccounts ())
			{
				const auto account = qobject_cast<IAccount*> (accObj);
				if (!account)
				{
					qWarning () << Q_FUNC_INFO
							<< "unable to cast"
							<< accObj
							<< "to IAccount for protocol"
							<< proto->GetProtocolID ();
					continue;
				}

				if (!qobject_cast<ISupportBookmarks*> (accObj))
					continue;

				Ui_.AccountBox_->addItem (account->GetAccountName (),
						QVariant::fromValue (account));

				connect (accObj,
						SIGNAL (bookmarksChanged ()),
						this,
						SLOT (handleBookmarksChanged ()));
			}
		}

		if (Ui_.AccountBox_->count ())
			on_AccountBox__currentIndexChanged (0);
	}
Exemplo n.º 4
0
	void BookmarksManagerDialog::Save ()
	{
		QVariantList datas;
		for (int i = 0; i < BMModel_->rowCount (); ++i)
			datas << BMModel_->item (i)->data ();

		const int index = Ui_.AccountBox_->currentIndex ();
		IAccount *account = Ui_.AccountBox_->itemData (index).value<IAccount*> ();
		if (!account)
		{
			qWarning () << Q_FUNC_INFO
					<< "no account available for index"
					<< index;
			return;
		}

		qobject_cast<ISupportBookmarks*> (account->GetQObject ())->SetBookmarkedMUCs (datas);

		on_AccountBox__currentIndexChanged (index);
	}