• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • knewstuff
 

knewstuff

  • knewstuff
entry.cpp
1 /*
2  This file is part of KOrganizer.
3  Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org>
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Library General Public
7  License as published by the Free Software Foundation; either
8  version 2 of the License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Library General Public License for more details.
14 
15  You should have received a copy of the GNU Library General Public License
16  along with this library; see the file COPYING.LIB. If not, write to
17  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  Boston, MA 02110-1301, USA.
19 */
20 
21 #include "entry.h"
22 
23 #include <tqptrdict.h>
24 #include <tqwindowdefs.h>
25 
26 #include <kglobal.h>
27 #include <klocale.h>
28 
29 using namespace KNS;
30 
31 // BCI for KDE 3.5 only
32 
33 class EntryPrivate
34 {
35  public:
36  EntryPrivate(){}
37  TQString mEmail;
38  TQMap<TQString,TQString> mNameMap;
39 };
40 
41 static TQPtrDict<EntryPrivate> *d_ptr = 0;
42 
43 static EntryPrivate *d(const Entry *e)
44 {
45  if(!d_ptr)
46  {
47  d_ptr = new TQPtrDict<EntryPrivate>();
48  d_ptr->setAutoDelete(true);
49  }
50  EntryPrivate *ret = d_ptr->find((void*)e);
51  if(!ret)
52  {
53  ret = new EntryPrivate();
54  d_ptr->replace((void*)e, ret);
55  }
56  return ret;
57 }
58 
59 TQString Entry::authorEmail() const
60 {
61  return d(this)->mEmail;
62 }
63 
64 void Entry::setAuthorEmail( const TQString& email )
65 {
66  d(this)->mEmail = email;
67 }
68 
69 TQString Entry::name( const TQString &lang ) const
70 {
71  if ( d(this)->mNameMap.isEmpty() ) return TQString::null;
72 
73  if ( !d(this)->mNameMap[ lang ].isEmpty() ) return d(this)->mNameMap[ lang ];
74  else {
75  TQStringList langs = KGlobal::locale()->languageList();
76  for(TQStringList::Iterator it = langs.begin(); it != langs.end(); ++it)
77  if( !d(this)->mNameMap[ *it ].isEmpty() ) return d(this)->mNameMap[ *it ];
78  }
79  if ( !d(this)->mNameMap[ TQString::null ].isEmpty() ) return d(this)->mNameMap[ TQString::null ];
80  else return *(mSummaryMap.begin());
81 }
82 
83 void Entry::setName( const TQString &name, const TQString &lang )
84 {
85  d(this)->mNameMap.insert( lang, name );
86 
87  if ( mLangs.find( lang ) == mLangs.end() ) mLangs.append( lang );
88 }
89 
90 // BCI part ends here
91 
92 Entry::Entry() :
93  mRelease( 0 ), mReleaseDate( TQDate::currentDate() ), mRating( 0 ),
94  mDownloads( 0 )
95 {
96 }
97 
98 Entry::Entry( const TQDomElement &e ) :
99  mRelease( 0 ), mRating( 0 ), mDownloads( 0 )
100 {
101  parseDomElement( e );
102 }
103 
104 Entry::~Entry()
105 {
106  if (d_ptr)
107  {
108  EntryPrivate *p = d_ptr->find(this);
109  if (p)
110  d_ptr->remove(p);
111 
112  if (d_ptr->isEmpty())
113  {
114  delete d_ptr;
115  d_ptr = 0L;
116  }
117  }
118 }
119 
120 
121 void Entry::setName( const TQString &name )
122 {
123  mName = name;
124 }
125 
126 TQString Entry::name() const
127 {
128  return mName;
129 }
130 
131 
132 void Entry::setType( const TQString &type )
133 {
134  mType = type;
135 }
136 
137 TQString Entry::type() const
138 {
139  return mType;
140 }
141 
142 
143 void Entry::setAuthor( const TQString &author )
144 {
145  mAuthor = author;
146 }
147 
148 TQString Entry::author() const
149 {
150  return mAuthor;
151 }
152 
153 
154 void Entry::setLicence( const TQString &license )
155 {
156  mLicence = license;
157 }
158 
159 TQString Entry::license() const
160 {
161  return mLicence;
162 }
163 
164 
165 void Entry::setSummary( const TQString &text, const TQString &lang )
166 {
167  mSummaryMap.insert( lang, text );
168 
169  if ( mLangs.find( lang ) == mLangs.end() ) mLangs.append( lang );
170 }
171 
172 TQString Entry::summary( const TQString &lang ) const
173 {
174  if ( mSummaryMap.isEmpty() ) return TQString::null;
175 
176  if ( !mSummaryMap[ lang ].isEmpty() ) return mSummaryMap[ lang ];
177  else {
178  TQStringList langs = KGlobal::locale()->languageList();
179  for(TQStringList::Iterator it = langs.begin(); it != langs.end(); ++it)
180  if( !mSummaryMap[ *it ].isEmpty() ) return mSummaryMap[ *it ];
181  }
182  if ( !mSummaryMap[ TQString::null ].isEmpty() ) return mSummaryMap[ TQString::null ];
183  else return *(mSummaryMap.begin());
184 }
185 
186 
187 void Entry::setVersion( const TQString &version )
188 {
189  mVersion = version;
190 }
191 
192 TQString Entry::version() const
193 {
194  return mVersion;
195 }
196 
197 
198 void Entry::setRelease( int release )
199 {
200  mRelease = release;
201 }
202 
203 int Entry::release() const
204 {
205  return mRelease;
206 }
207 
208 
209 void Entry::setReleaseDate( const TQDate &d )
210 {
211  mReleaseDate = d;
212 }
213 
214 TQDate Entry::releaseDate() const
215 {
216  return mReleaseDate;
217 }
218 
219 
220 void Entry::setPayload( const KURL &url, const TQString &lang )
221 {
222  mPayloadMap.insert( lang, url );
223 
224  if ( mLangs.find( lang ) == mLangs.end() ) mLangs.append( lang );
225 }
226 
227 KURL Entry::payload( const TQString &lang ) const
228 {
229  KURL payload = mPayloadMap[ lang ];
230  if ( payload.isEmpty() ) {
231  TQStringList langs = KGlobal::locale()->languageList();
232  for(TQStringList::Iterator it = langs.begin(); it != langs.end(); ++it)
233  if( !mPayloadMap[ *it ].isEmpty() ) return mPayloadMap[ *it ];
234  }
235  if ( payload.isEmpty() ) payload = mPayloadMap [ TQString::null ];
236  if ( payload.isEmpty() && !mPayloadMap.isEmpty() ) {
237  payload = *(mPayloadMap.begin());
238  }
239  return payload;
240 }
241 
242 
243 void Entry::setPreview( const KURL &url, const TQString &lang )
244 {
245  mPreviewMap.insert( lang, url );
246 
247  if ( mLangs.find( lang ) == mLangs.end() ) mLangs.append( lang );
248 }
249 
250 KURL Entry::preview( const TQString &lang ) const
251 {
252  KURL preview = mPreviewMap[ lang ];
253  if ( preview.isEmpty() ) {
254  TQStringList langs = KGlobal::locale()->languageList();
255  for(TQStringList::Iterator it = langs.begin(); it != langs.end(); ++it)
256  if( !mPreviewMap[ *it ].isEmpty() ) return mPreviewMap[ *it ];
257  }
258  if ( preview.isEmpty() ) preview = mPreviewMap [ TQString::null ];
259  if ( preview.isEmpty() && !mPreviewMap.isEmpty() ) {
260  preview = *(mPreviewMap.begin());
261  }
262  return preview;
263 }
264 
265 
266 void Entry::setRating( int rating )
267 {
268  mRating = rating;
269 }
270 
271 int Entry::rating()
272 {
273  return mRating;
274 }
275 
276 
277 void Entry::setDownloads( int downloads )
278 {
279  mDownloads = downloads;
280 }
281 
282 int Entry::downloads()
283 {
284  return mDownloads;
285 }
286 
287 TQString Entry::fullName()
288 {
289  if ( version().isEmpty() )
290  return name();
291  else
292  return name() + "-" + version() + "-" + TQString::number( release() );
293 }
294 
295 TQStringList Entry::langs()
296 {
297  return mLangs;
298 }
299 
300 void Entry::parseDomElement( const TQDomElement &element )
301 {
302  if ( element.tagName() != "stuff" ) return;
303  mType = element.attribute("type");
304 
305  TQDomNode n;
306  for( n = element.firstChild(); !n.isNull(); n = n.nextSibling() ) {
307  TQDomElement e = n.toElement();
308  if ( e.tagName() == "name" )
309  {
310  TQString lang = e.attribute( "lang" );
311  setName( e.text().stripWhiteSpace(), lang );
312  if(lang.isNull()) setName( e.text().stripWhiteSpace() ); /* primary key - no i18n */
313  }
314  if ( e.tagName() == "author" ) {
315  setAuthor( e.text().stripWhiteSpace() );
316  TQString email = e.attribute( "email" );
317  setAuthorEmail( email );
318  }
319  if ( e.tagName() == "email" ) setAuthorEmail( e.text().stripWhiteSpace() ); /* kde-look; change on server! */
320  if ( e.tagName() == "licence" ) setLicence( e.text().stripWhiteSpace() );
321  if ( e.tagName() == "summary" ) {
322  TQString lang = e.attribute( "lang" );
323  setSummary( e.text().stripWhiteSpace(), lang );
324  }
325  if ( e.tagName() == "version" ) setVersion( e.text().stripWhiteSpace() );
326  if ( e.tagName() == "release" ) setRelease( e.text().toInt() );
327  if ( e.tagName() == "releasedate" ) {
328  TQDate date = TQT_TQDATE_OBJECT(TQDate::fromString( e.text().stripWhiteSpace(), Qt::ISODate ));
329  setReleaseDate( date );
330  }
331  if ( e.tagName() == "preview" ) {
332  TQString lang = e.attribute( "lang" );
333  setPreview( KURL( e.text().stripWhiteSpace() ), lang );
334  }
335  if ( e.tagName() == "payload" ) {
336  TQString lang = e.attribute( "lang" );
337  setPayload( KURL( e.text().stripWhiteSpace() ), lang );
338  }
339  if ( e.tagName() == "rating" ) setRating( e.text().toInt() );
340  if ( e.tagName() == "downloads" ) setDownloads( e.text().toInt() );
341  }
342 }
343 
344 TQDomElement Entry::createDomElement( TQDomDocument &doc,
345  TQDomElement &parent )
346 {
347  TQDomElement entry = doc.createElement( "stuff" );
348  entry.setAttribute("type", mType);
349  parent.appendChild( entry );
350 
351  addElement( doc, entry, "name", name() );
352  addElement( doc, entry, "author", author() );
353  addElement( doc, entry, "email", authorEmail() );
354  addElement( doc, entry, "licence", license() );
355  addElement( doc, entry, "version", version() );
356  addElement( doc, entry, "release", TQString::number( release() ) );
357  addElement( doc, entry, "rating", TQString::number( rating() ) );
358  addElement( doc, entry, "downloads", TQString::number( downloads() ) );
359 
360  addElement( doc, entry, "releasedate",
361  releaseDate().toString( Qt::ISODate ) );
362 
363  TQStringList ls = langs();
364  TQStringList::ConstIterator it;
365  for( it = ls.begin(); it != ls.end(); ++it ) {
366  TQDomElement e = addElement( doc, entry, "summary", summary( *it ) );
367  e.setAttribute( "lang", *it );
368  e = addElement( doc, entry, "preview", preview( *it ).url() );
369  e.setAttribute( "lang", *it );
370  e = addElement( doc, entry, "payload", payload( *it ).url() );
371  e.setAttribute( "lang", *it );
372  }
373 
374  return entry;
375 }
376 
377 TQDomElement Entry::addElement( TQDomDocument &doc, TQDomElement &parent,
378  const TQString &tag, const TQString &value )
379 {
380  TQDomElement n = doc.createElement( tag );
381  n.appendChild( doc.createTextNode( value ) );
382  parent.appendChild( n );
383 
384  return n;
385 }

knewstuff

Skip menu "knewstuff"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Class Members
  • Related Pages

knewstuff

Skip menu "knewstuff"
  • arts
  • dcop
  • dnssd
  • interfaces
  •     interface
  •     library
  •   kspeech
  •   ktexteditor
  • kabc
  • kate
  • kcmshell
  • kdecore
  • kded
  • kdefx
  • kdeprint
  • kdesu
  • kdeui
  • kdoctools
  • khtml
  • kimgio
  • kinit
  • kio
  •   bookmarks
  •   httpfilter
  •   kfile
  •   kio
  •   kioexec
  •   kpasswdserver
  •   kssl
  • kioslave
  •   http
  • kjs
  • kmdi
  •   kmdi
  • knewstuff
  • kparts
  • krandr
  • kresources
  • kspell2
  • kunittest
  • kutils
  • kwallet
  • libkmid
  • libkscreensaver
Generated for knewstuff by doxygen 1.8.3.1
This website is maintained by Timothy Pearson.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. |