OSDN Git Service

Merge branch 'post-2.4.2'
[tjqt4port/tj2qt4.git] / taskjuggler / ScenarioList.cpp
1 /*
2  * ScenarioList.cpp - TaskJuggler
3  *
4  * Copyright (c) 2001, 2002, 2003, 2004 by Chris Schlaeger <cs@kde.org>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of version 2 of the GNU General Public License as
8  * published by the Free Software Foundation.
9  *
10  * $Id$
11  */
12
13 #include "ScenarioList.h"
14 #include "Scenario.h"
15
16 ScenarioList::ScenarioList() :
17     CoreAttributesList()
18 {
19     sorting[0] = CoreAttributesList::TreeMode;
20     sorting[1] = CoreAttributesList::IdUp;
21 }
22
23 Scenario*
24 ScenarioList::operator[](int i)
25 {
26     return static_cast<Scenario*>(at(i));
27 }
28
29 bool
30 ScenarioList::isSupportedSortingCriteria(int sc)
31 {
32     switch (sc)
33     {
34     case TreeMode:
35         return true;
36     default:
37         return CoreAttributesList::isSupportedSortingCriteria(sc);
38     }
39 }
40
41 int
42 ScenarioList::compareItemsLevel(CoreAttributes* c1, CoreAttributes* c2,
43                                 int level)
44 {
45     Scenario* r1 = static_cast<Scenario*>(c1);
46     Scenario* r2 = static_cast<Scenario*>(c2);
47
48     if (level < 0 || level >= maxSortingLevel)
49         return -1;
50
51     switch (sorting[level])
52     {
53     case TreeMode:
54         if (level == 0)
55             return compareTreeItemsT(this, r1, r2);
56         else
57             return r1->getSequenceNo() == r2->getSequenceNo() ? 0 :
58                 r1->getSequenceNo() < r2->getSequenceNo() ? -1 : 1;
59     default:
60         return CoreAttributesList::compareItemsLevel(r1, r2, level);
61     }
62 }
63
64 Scenario*
65 ScenarioList::getScenario(const QString& id) const
66 {
67     for (ScenarioListIterator rli(*this); *rli != 0; ++rli)
68         if ((*rli)->getId() == id)
69             return *rli;
70
71     return 0;
72 }
73