-rw-r--r-- | korganizer/cellitem.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/korganizer/cellitem.cpp b/korganizer/cellitem.cpp index 61d06ac..1fd703c 100644 --- a/korganizer/cellitem.cpp +++ b/korganizer/cellitem.cpp | |||
@@ -1,98 +1,100 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KOrganizer. | 2 | This file is part of KOrganizer. |
3 | 3 | ||
4 | Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org> | 4 | Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org> |
5 | 5 | ||
6 | This program is free software; you can redistribute it and/or modify | 6 | This program is free software; you can redistribute it and/or modify |
7 | it under the terms of the GNU General Public License as published by | 7 | it under the terms of the GNU General Public License as published by |
8 | the Free Software Foundation; either version 2 of the License, or | 8 | the Free Software Foundation; either version 2 of the License, or |
9 | (at your option) any later version. | 9 | (at your option) any later version. |
10 | 10 | ||
11 | This program is distributed in the hope that it will be useful, | 11 | This program is distributed in the hope that it will be useful, |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 | GNU General Public License for more details. | 14 | GNU General Public License for more details. |
15 | 15 | ||
16 | You should have received a copy of the GNU General Public License | 16 | You should have received a copy of the GNU General Public License |
17 | along with this program; if not, write to the Free Software | 17 | along with this program; if not, write to the Free Software |
18 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 18 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
19 | 19 | ||
20 | As a special exception, permission is given to link this program | 20 | As a special exception, permission is given to link this program |
21 | with any edition of Qt, and distribute the resulting executable, | 21 | with any edition of Qt, and distribute the resulting executable, |
22 | without including the source code for Qt in the source distribution. | 22 | without including the source code for Qt in the source distribution. |
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include "cellitem.h" | 25 | #include "cellitem.h" |
26 | 26 | ||
27 | #include <klocale.h> | 27 | #include <klocale.h> |
28 | #include <kdebug.h> | 28 | #include <kdebug.h> |
29 | 29 | ||
30 | #include <qintdict.h> | 30 | #include <q3intdict.h> |
31 | //Added by qt3to4: | ||
32 | #include <Q3PtrList> | ||
31 | 33 | ||
32 | using namespace KOrg; | 34 | using namespace KOrg; |
33 | 35 | ||
34 | QString CellItem::label() const | 36 | QString CellItem::label() const |
35 | { | 37 | { |
36 | return i18n("<undefined>"); | 38 | return i18n("<undefined>"); |
37 | } | 39 | } |
38 | 40 | ||
39 | QPtrList<CellItem> CellItem::placeItem( QPtrList<CellItem> cells, | 41 | Q3PtrList<CellItem> CellItem::placeItem( Q3PtrList<CellItem> cells, |
40 | CellItem *placeItem ) | 42 | CellItem *placeItem ) |
41 | { | 43 | { |
42 | kdDebug(5855) << "Placing " << placeItem->label() << endl; | 44 | kdDebug(5855) << "Placing " << placeItem->label() << endl; |
43 | 45 | ||
44 | QPtrList<KOrg::CellItem> conflictItems; | 46 | Q3PtrList<KOrg::CellItem> conflictItems; |
45 | int maxSubCells = 0; | 47 | int maxSubCells = 0; |
46 | QIntDict<KOrg::CellItem> subCellDict; | 48 | Q3IntDict<KOrg::CellItem> subCellDict; |
47 | 49 | ||
48 | // Find all items which are in same cell | 50 | // Find all items which are in same cell |
49 | QPtrListIterator<KOrg::CellItem> it2( cells ); | 51 | Q3PtrListIterator<KOrg::CellItem> it2( cells ); |
50 | for( it2.toFirst(); it2.current(); ++it2 ) { | 52 | for( it2.toFirst(); it2.current(); ++it2 ) { |
51 | KOrg::CellItem *item = it2.current(); | 53 | KOrg::CellItem *item = it2.current(); |
52 | if ( item == placeItem ) continue; | 54 | if ( item == placeItem ) continue; |
53 | 55 | ||
54 | if ( item->overlaps( placeItem ) ) { | 56 | if ( item->overlaps( placeItem ) ) { |
55 | kdDebug(5855) << " Overlaps: " << item->label() << endl; | 57 | kdDebug(5855) << " Overlaps: " << item->label() << endl; |
56 | 58 | ||
57 | conflictItems.append( item ); | 59 | conflictItems.append( item ); |
58 | if ( item->subCells() > maxSubCells ) maxSubCells = item->subCells(); | 60 | if ( item->subCells() > maxSubCells ) maxSubCells = item->subCells(); |
59 | subCellDict.insert( item->subCell(), item ); | 61 | subCellDict.insert( item->subCell(), item ); |
60 | } | 62 | } |
61 | } | 63 | } |
62 | 64 | ||
63 | if ( conflictItems.count() > 0 ) { | 65 | if ( conflictItems.count() > 0 ) { |
64 | // Look for unused sub cell and insert item | 66 | // Look for unused sub cell and insert item |
65 | int i; | 67 | int i; |
66 | for( i = 0; i < maxSubCells; ++i ) { | 68 | for( i = 0; i < maxSubCells; ++i ) { |
67 | kdDebug(5855) << " Trying subcell " << i << endl; | 69 | kdDebug(5855) << " Trying subcell " << i << endl; |
68 | if ( !subCellDict.find( i ) ) { | 70 | if ( !subCellDict.find( i ) ) { |
69 | kdDebug(5855) << " Use subcell " << i << endl; | 71 | kdDebug(5855) << " Use subcell " << i << endl; |
70 | placeItem->setSubCell( i ); | 72 | placeItem->setSubCell( i ); |
71 | break; | 73 | break; |
72 | } | 74 | } |
73 | } | 75 | } |
74 | if ( i == maxSubCells ) { | 76 | if ( i == maxSubCells ) { |
75 | kdDebug(5855) << " New subcell " << i << endl; | 77 | kdDebug(5855) << " New subcell " << i << endl; |
76 | placeItem->setSubCell( maxSubCells ); | 78 | placeItem->setSubCell( maxSubCells ); |
77 | maxSubCells++; // add new item to number of sub cells | 79 | maxSubCells++; // add new item to number of sub cells |
78 | } | 80 | } |
79 | 81 | ||
80 | kdDebug(5855) << " Sub cells: " << maxSubCells << endl; | 82 | kdDebug(5855) << " Sub cells: " << maxSubCells << endl; |
81 | 83 | ||
82 | // Write results to item to be placed | 84 | // Write results to item to be placed |
83 | conflictItems.append( placeItem ); | 85 | conflictItems.append( placeItem ); |
84 | placeItem->setSubCells( maxSubCells ); | 86 | placeItem->setSubCells( maxSubCells ); |
85 | 87 | ||
86 | QPtrListIterator<KOrg::CellItem> it3( conflictItems ); | 88 | Q3PtrListIterator<KOrg::CellItem> it3( conflictItems ); |
87 | for( it3.toFirst(); it3.current(); ++it3 ) { | 89 | for( it3.toFirst(); it3.current(); ++it3 ) { |
88 | (*it3)->setSubCells( maxSubCells ); | 90 | (*it3)->setSubCells( maxSubCells ); |
89 | } | 91 | } |
90 | // Todo: Adapt subCells of items conflicting with conflicting items | 92 | // Todo: Adapt subCells of items conflicting with conflicting items |
91 | } else { | 93 | } else { |
92 | kdDebug(5855) << " no conflicts" << endl; | 94 | kdDebug(5855) << " no conflicts" << endl; |
93 | placeItem->setSubCell( 0 ); | 95 | placeItem->setSubCell( 0 ); |
94 | placeItem->setSubCells( 1 ); | 96 | placeItem->setSubCells( 1 ); |
95 | } | 97 | } |
96 | 98 | ||
97 | return conflictItems; | 99 | return conflictItems; |
98 | } | 100 | } |