summaryrefslogtreecommitdiff
path: root/libopie2/opiepim/core/opimrecord.cpp
Unidiff
Diffstat (limited to 'libopie2/opiepim/core/opimrecord.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/core/opimrecord.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/libopie2/opiepim/core/opimrecord.cpp b/libopie2/opiepim/core/opimrecord.cpp
index 49b5bf9..ac0f4a9 100644
--- a/libopie2/opiepim/core/opimrecord.cpp
+++ b/libopie2/opiepim/core/opimrecord.cpp
@@ -1,84 +1,166 @@
1#include <qarray.h>
2
1#include <qpe/categories.h> 3#include <qpe/categories.h>
2#include <qpe/categoryselect.h> 4#include <qpe/categoryselect.h>
3 5
4#include "opimrecord.h" 6#include "opimrecord.h"
5 7
6Qtopia::UidGen OPimRecord::m_uidGen( Qtopia::UidGen::Qtopia ); 8Qtopia::UidGen OPimRecord::m_uidGen( Qtopia::UidGen::Qtopia );
7 9
8 10
9OPimRecord::OPimRecord( int uid ) 11OPimRecord::OPimRecord( int uid )
10 : Qtopia::Record() { 12 : Qtopia::Record() {
11 13
12 setUid( uid ); 14 setUid( uid );
13} 15}
14OPimRecord::~OPimRecord() { 16OPimRecord::~OPimRecord() {
15} 17}
16OPimRecord::OPimRecord( const OPimRecord& rec ) 18OPimRecord::OPimRecord( const OPimRecord& rec )
17 : Qtopia::Record( rec ) 19 : Qtopia::Record( rec )
18{ 20{
19 (*this) = rec; 21 (*this) = rec;
20} 22}
21 23
22OPimRecord &OPimRecord::operator=( const OPimRecord& rec) { 24OPimRecord &OPimRecord::operator=( const OPimRecord& rec) {
23 Qtopia::Record::operator=( rec ); 25 Qtopia::Record::operator=( rec );
24 m_xrefman = rec.m_xrefman; 26 m_xrefman = rec.m_xrefman;
25 27
26 return *this; 28 return *this;
27} 29}
28/* 30/*
29 * category names 31 * category names
30 */ 32 */
31QStringList OPimRecord::categoryNames()const { 33QStringList OPimRecord::categoryNames()const {
32 QStringList list; 34 QStringList list;
33 QArray<int> cats = categories(); 35 QArray<int> cats = categories();
34 Categories catDB; 36 Categories catDB;
35 catDB.load( categoryFileName() ); 37 catDB.load( categoryFileName() );
36 38
37 for (uint i = 0; i < cats.count(); i++ ) { 39 for (uint i = 0; i < cats.count(); i++ ) {
38 list << catDB.label("Todo List", cats[i] ); 40 list << catDB.label("Todo List", cats[i] );
39 } 41 }
40 42
41 return list; 43 return list;
42} 44}
43void OPimRecord::setCategoryNames( const QStringList& ) { 45void OPimRecord::setCategoryNames( const QStringList& ) {
44 46
45} 47}
46void OPimRecord::addCategoryName( const QString& ) { 48void OPimRecord::addCategoryName( const QString& ) {
47 Categories catDB; 49 Categories catDB;
48 catDB.load( categoryFileName() ); 50 catDB.load( categoryFileName() );
49 51
50 52
51} 53}
52bool OPimRecord::isEmpty()const { 54bool OPimRecord::isEmpty()const {
53 return ( uid() == 0 ); 55 return ( uid() == 0 );
54} 56}
55/*QString OPimRecord::crossToString()const { 57/*QString OPimRecord::crossToString()const {
56 QString str; 58 QString str;
57 QMap<QString, QArray<int> >::ConstIterator it; 59 QMap<QString, QArray<int> >::ConstIterator it;
58 for (it = m_relations.begin(); it != m_relations.end(); ++it ) { 60 for (it = m_relations.begin(); it != m_relations.end(); ++it ) {
59 QArray<int> id = it.data(); 61 QArray<int> id = it.data();
60 for ( uint i = 0; i < id.size(); ++i ) { 62 for ( uint i = 0; i < id.size(); ++i ) {
61 str += it.key() + "," + QString::number( i ) + ";"; 63 str += it.key() + "," + QString::number( i ) + ";";
62 } 64 }
63 } 65 }
64 str = str.remove( str.length()-1, 1); // strip the ; 66 str = str.remove( str.length()-1, 1); // strip the ;
65 //qWarning("IDS " + str ); 67 //qWarning("IDS " + str );
66 68
67 return str; 69 return str;
68 }*/ 70 }*/
69/* if uid = 1 assign a new one */ 71/* if uid = 1 assign a new one */
70void OPimRecord::setUid( int uid ) { 72void OPimRecord::setUid( int uid ) {
71 if ( uid == 1) 73 if ( uid == 1)
72 uid = uidGen().generate(); 74 uid = uidGen().generate();
73 75
74 Qtopia::Record::setUid( uid ); 76 Qtopia::Record::setUid( uid );
75}; 77};
76Qtopia::UidGen &OPimRecord::uidGen() { 78Qtopia::UidGen &OPimRecord::uidGen() {
77 return m_uidGen; 79 return m_uidGen;
78} 80}
79OPimXRefManager &OPimRecord::xrefmanager() { 81OPimXRefManager &OPimRecord::xrefmanager() {
80 return m_xrefman; 82 return m_xrefman;
81} 83}
82int OPimRecord::rtti(){ 84int OPimRecord::rtti(){
83 return 0; 85 return 0;
84} 86}
87
88/**
89 * now let's put our data into the stream
90 */
91/*
92 * First read UID
93 * Categories
94 * XRef
95 */
96bool OPimRecord::loadFromStream( QDataStream& stream ) {
97 int Int;
98 uint UInt;
99 stream >> Int;
100 setUid(Int);
101
102 /** Categories */
103 stream >> UInt;
104 QArray<int> array(UInt);
105 for (uint i = 0; i < UInt; i++ ) {
106 stream >> array[i];
107 }
108 setCategories( array );
109
110 /*
111 * now we do the X-Ref stuff
112 */
113 OPimXRef xref;
114 stream >> UInt;
115 for ( uint i = 0; i < UInt; i++ ) {
116 xref.setPartner( OPimXRef::One, partner( stream ) );
117 xref.setPartner( OPimXRef::Two, partner( stream ) );
118 m_xrefman.add( xref );
119 }
120
121 return true;
122}
123bool OPimRecord::saveToStream( QDataStream& stream )const {
124 /** UIDs */
125
126 stream << uid();
127
128 /** Categories */
129 stream << categories().count();
130 for ( uint i = 0; i < categories().count(); i++ ) {
131 stream << categories()[i];
132 }
133
134 /*
135 * first the XRef count
136 * then the xrefs
137 */
138 stream << m_xrefman.list().count();
139 for ( OPimXRef::ValueList::ConstIterator it = m_xrefman.list().begin();
140 it != m_xrefman.list().end(); ++it ) {
141 flush( (*it).partner( OPimXRef::One), stream );
142 flush( (*it).partner( OPimXRef::Two), stream );
143 }
144 return true;
145}
146void OPimRecord::flush( const OPimXRefPartner& par, QDataStream& str ) const{
147 str << par.service();
148 str << par.uid();
149 str << par.field();
150}
151OPimXRefPartner OPimRecord::partner( QDataStream& stream ) {
152 OPimXRefPartner par;
153 QString str;
154 int i;
155
156 stream >> str;
157 par.setService( str );
158
159 stream >> i;
160 par.setUid( i );
161
162 stream >> i ;
163 par.setField( i );
164
165 return par;
166}