コード例 #1
0
	void AccountsListWidget::handleItemChanged (QStandardItem *item)
	{
		const auto type = item->data (Roles::RItemType).toInt ();
		if (type != ItemTypes::ShowInRoster)
			return;

		IAccount *acc = item->data (Roles::RAccObj).value<IAccount*> ();
		acc->SetShownInRoster (item->checkState () == Qt::Checked);
		if (!acc->IsShownInRoster () && acc->GetState ().State_ != SOffline)
			acc->ChangeState (EntryStatus (SOffline, QString ()));
		emit accountVisibilityChanged (acc);
	}
コード例 #2
0
ファイル: autoidler.cpp プロジェクト: aboduo/leechcraft
	void Plugin::handleIdle (int seconds)
	{
		IdleSeconds_ = seconds;
		if (seconds && seconds % 60)
			return;

		if (!XmlSettingsManager::Instance ().property ("EnableAutoidler").toBool ())
			return;

		const int mins = seconds / 60;
		if (!mins &&
				!OldStatuses_.isEmpty ())
		{
			for (QObject *accObj : AzothProxy_->GetAllAccounts ())
			{
				if (!OldStatuses_.contains (accObj))
					continue;

				IAccount *acc = qobject_cast<IAccount*> (accObj);
				acc->ChangeState (OldStatuses_ [accObj]);
			}

			OldStatuses_.clear ();
		}

		if (!mins)
			return;

		EntryStatus status;
		if (mins == XmlSettingsManager::Instance ().property ("AwayTimeout").toInt ())
			status = EntryStatus (SAway,
					XmlSettingsManager::Instance ().property ("AwayText").toString ());
		else if (mins == XmlSettingsManager::Instance ().property ("NATimeout").toInt ())
			status = EntryStatus (SXA,
					XmlSettingsManager::Instance ().property ("NAText").toString ());
		else
			return;

		for (QObject *accObj : AzothProxy_->GetAllAccounts ())
		{
			auto acc = qobject_cast<IAccount*> (accObj);

			const auto& accState = acc->GetState ();
			if (accState.State_ == State::SOffline)
				continue;

			if (!OldStatuses_.contains (accObj))
				OldStatuses_ [accObj] = accState;
			acc->ChangeState (status);
		}
	}