summaryrefslogtreecommitdiffabout
path: root/korganizer/cellitem.cpp
Unidiff
Diffstat (limited to 'korganizer/cellitem.cpp') (more/less context) (show whitespace changes)
-rw-r--r--korganizer/cellitem.cpp14
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
@@ -6,93 +6,95 @@
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
32using namespace KOrg; 34using namespace KOrg;
33 35
34QString CellItem::label() const 36QString CellItem::label() const
35{ 37{
36 return i18n("<undefined>"); 38 return i18n("<undefined>");
37} 39}
38 40
39QPtrList<CellItem> CellItem::placeItem( QPtrList<CellItem> cells, 41Q3PtrList<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}