bool SortFilterProxyModel::lessThan (const QModelIndex& right,
			const QModelIndex& left) const			// sort in reverse order ok
	{
		if (GetType (left) != Core::CLETContact ||
				GetType (right) != Core::CLETContact)
			return QSortFilterProxyModel::lessThan (left, right);

		ICLEntry *lE = GetEntry (left);
		ICLEntry *rE = GetEntry (right);

		if (lE->GetEntryType () == ICLEntry::ETPrivateChat &&
				rE->GetEntryType () == ICLEntry::ETPrivateChat &&
				lE->GetParentCLEntry () == rE->GetParentCLEntry ())
		{
			IMUCPerms *lp = qobject_cast<IMUCPerms*> (lE->GetParentCLEntry ());
			if (lp)
			{
				bool less = lp->IsLessByPerm (lE->GetObject (), rE->GetObject ());
				bool more = lp->IsLessByPerm (rE->GetObject (), lE->GetObject ());
				if (less || more)
					return more;
			}
		}

		State lState = lE->GetStatus ().State_;
		State rState = rE->GetStatus ().State_;
		if (lState == rState ||
				!OrderByStatus_)
			return lE->GetEntryName ().localeAwareCompare (rE->GetEntryName ()) < 0;
		else
			return IsLess (lState, rState);
	}
/*
nama :dyarsa S.Pamungkas
Nim  :A11.2011.06186
Klmpk: A11.4204


---copyright dy_arsa---
*/
int main()
{
TabInt T,T1,T2,TCopy,TInv,TSim,TBaca;
 int i;
    MakeEmpty(&T1);
    for (i=1;i<=10;i++)
    {

        T1.TI[i]=i;
    }
     TulisIsiTab(T1);
//       printf("Tekan sembarang tombol untuk melanjutkan....\n");getch();
    printf("\n");
    printf("Empty T=1, F=0 :%d\n",IsEmpty(T1));
    printf("Full   T=1, F=0 :%d\n",IsFull(T1));
//       printf("Tekan sembarang tombol untuk melanjutkan....\n");getch();
    printf("\n");
    printf("index 0           :%s\n",IsIdxValid(T1,0)?"Ya":"Tidak");
    printf("index 1           :%s\n",IsIdxValid(T1,1)?"Ya":"Tidak");
    printf("index 5           :%s\n",IsIdxValid(T1,5)?"Ya":"Tidak");
    printf("index 10          :%s\n",IsIdxValid(T1,10)?"Ya":"Tidak");
    printf("index 101         :%s\n",IsIdxValid(T1,101)?"Ya":"Tidak");

    printf("GetFirstIdx Efektif]  :%d\n",GetFirstIdx(T1));
    printf("GetLastIdx Efektif   :%d\n",GetLastEfIdx(T1));
    printf("\n");
    MakeEmpty(&T2);
    for (i=1;i<=10;i++)
    {

        T2.TI[i]=i*2+1;
    }
    printf("T1\n");
    TulisIsiTab(T1);
    printf("\nT2 \n");
    TulisIsiTab(T2);
    printf("\n");
    printf("\nT1+T2 :\n"); PlusTab(T1,T2);
    printf("\nT2-T1 :\n"); MinusTab(T2,T1);
    printf("\nT1*T2 :\n");KaliTab(T1,T2);
    printf("\nT1*2:\n"); KaliKons(T1,2);
    printf("\nApakah T1 Sama dg T2?: %s\n",IsEQ(T1,T2)?"Ya":"Tidak");
    printf("\nApakah T1 Kurang dari T2?: %s\n",IsLess(T1,T2)?"Ya":"Tidak");

    printf("\nApa Nilai Maksimum tabel T1?: %i\n",ValMax(T1));
    printf("\nApa Nilai Minimum tabel T1?: %i\n",ValMin(T1));
    printf("\nApa index Nilai Maksimum tabel T2?: %i\n",IdxMaxTab(T2));
    printf("\nApa index Nilai Minimum tabel T2?: %i\n",IdxMinTab(T2));
    printf("\nApa Nilai Maksimum tabel T?: %i\n",Max(T));
    printf("\nApa Nilai Minimum tabel T?: %i\n",Min(T));
    printf("\nApa Nilai MaksMin tabel T?: ");MaxMin(T);

    return 0;
}
Exemple #3
0
/* Sort a list of members. */
static void SortMembers(MemberStruct *m, int n)
{
    int i, j;

    for (i = 1; i < n; i++) {
        for (j = i; j > 0 && IsLess(m[j], m[j - 1]); j--) {
            MemberStruct t = m[j];
            m[j] = m[j - 1];
            m[j - 1] = t;
        }
    }
}
Exemple #4
0
TEST(CompareTest, CompareIfDigitsAreEquals)
{
	BigInt left, right;
	left.size = 2;
	right.size = 2;

	int leftDigits[] = {123, 45};
	int rightDigits[] = {123, 45};
	SetDigits(&left, leftDigits);
	SetDigits(&right, rightDigits);
	ASSERT_EQ(true, AreEquals(&left, &right));
	ASSERT_EQ(false, IsGreater(&left, &right));
	ASSERT_EQ(false, IsLess(&left, &right));
}
	bool SortFilterProxyModel::lessThan (const QModelIndex& right,
			const QModelIndex& left) const			// sort in reverse order ok
	{
		const auto leftType = GetType (left);
		if (leftType == Core::CLETAccount)
			return QSortFilterProxyModel::lessThan (left, right);
		else if (leftType == Core::CLETCategory)
		{
			const bool leftIsMuc = left.data (Core::CLRIsMUCCategory).toBool ();
			const bool rightIsMuc = right.data (Core::CLRIsMUCCategory).toBool ();
			if ((leftIsMuc && rightIsMuc) || (!leftIsMuc && !rightIsMuc))
				return QSortFilterProxyModel::lessThan (left, right);
			else
				return rightIsMuc;
		}

		ICLEntry *lE = GetEntry (left);
		ICLEntry *rE = GetEntry (right);

		if (lE->GetEntryType () == ICLEntry::ETPrivateChat &&
				rE->GetEntryType () == ICLEntry::ETPrivateChat &&
				lE->GetParentCLEntry () == rE->GetParentCLEntry ())
			if (IMUCPerms *lp = qobject_cast<IMUCPerms*> (lE->GetParentCLEntry ()))
			{
				bool less = lp->IsLessByPerm (lE->GetObject (), rE->GetObject ());
				bool more = lp->IsLessByPerm (rE->GetObject (), lE->GetObject ());
				if (less || more)
					return more;
			}

		State lState = lE->GetStatus ().State_;
		State rState = rE->GetStatus ().State_;
		if (lState == rState ||
				!OrderByStatus_)
			return lE->GetEntryName ().localeAwareCompare (rE->GetEntryName ()) < 0;
		else
			return IsLess (lState, rState);
	}
Exemple #6
0
void CTeam::SortPlayers(int nSortKey, int nDir)
{
	// Sanity checks...

	if (nSortKey == TM_KEY_SCORE) return;
	if (GetNumPlayers() <= 1) return;


	// Remove each player from our list, and insert it, sorted, into a temp list...

	CTeamPlayerList lsTemp;

	CTeamPlayer* pCurPlr = GetFirstPlayer();

	while (pCurPlr)
	{
		CTeamPlayer* pNextPlr = GetNextPlayer(pCurPlr);

		m_lsPlayers.Delete(pCurPlr);


		// Insert the player from our main list, sorted, into our temp list...

		CTeamPlayer* pTmpPlr = lsTemp.GetFirst();

		if (!pTmpPlr)
		{
			lsTemp.Insert(pCurPlr);
		}
		else
		{
			while (pTmpPlr)
			{
				if (nDir == TM_SORT_DESCENDING && IsGreater(pCurPlr, pTmpPlr, nSortKey))
				{
					lsTemp.InsertBefore(pTmpPlr, pCurPlr);
					pTmpPlr = NULL;
				}
				else if (nDir == TM_SORT_ASCENDING && IsLess(pCurPlr, pTmpPlr, nSortKey))
				{
					lsTemp.InsertBefore(pTmpPlr, pCurPlr);
					pTmpPlr = NULL;
				}
				else
				{
					pTmpPlr = pTmpPlr->GetNext();
					if (!pTmpPlr)
					{
						lsTemp.InsertLast(pCurPlr);
					}
				}
			}
		}

		pCurPlr = pNextPlr;
	}


	// Re-insert all items into our main list...

	CTeamPlayer* pPlr = lsTemp.GetFirst();

	while (pPlr)
	{
		CTeamPlayer* pNextPlr = pPlr->GetNext();
		m_lsPlayers.InsertLast(pPlr);
		pPlr = pNextPlr;
	}
}
Exemple #7
0
void CTeamMgr::SortTeams(int nSortKey, int nDir)
{
	// Sanity check...

	if (GetNumTeams() <= 1) return;


	// Remove each team from our list, and insert it, sorted, into a temp list...

	CTeamList lsTemp;

	CTeam* pCurTeam = GetFirstTeam();

	while (pCurTeam)
	{
		CTeam* pNextTeam = GetNextTeam(pCurTeam);

		m_lsTeams.Delete(pCurTeam);


		// Insert the team from our main list, sorted, into our temp list...

		CTeam* pTmpTeam = lsTemp.GetFirst();

		if (!pTmpTeam)
		{
			lsTemp.Insert(pCurTeam);
		}
		else
		{
			while (pTmpTeam)
			{
				if (nDir == TM_SORT_DESCENDING && IsGreater(pCurTeam, pTmpTeam, nSortKey))
				{
					lsTemp.InsertBefore(pTmpTeam, pCurTeam);
					pTmpTeam = NULL;
				}
				else if (nDir == TM_SORT_ASCENDING && IsLess(pCurTeam, pTmpTeam, nSortKey))
				{
					lsTemp.InsertBefore(pTmpTeam, pCurTeam);
					pTmpTeam = NULL;
				}
				else
				{
					pTmpTeam = pTmpTeam->GetNext();
					if (!pTmpTeam)
					{
						lsTemp.InsertLast(pCurTeam);
					}
				}
			}
		}

		pCurTeam = pNextTeam;
	}


	// Re-insert all items into our main list...

	CTeam* pTeam = lsTemp.GetFirst();

	while (pTeam)
	{
		CTeam* pNextTeam = pTeam->GetNext();
		m_lsTeams.InsertLast(pTeam);
		pTeam = pNextTeam;
	}
}