From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- knode/knarticlecollection.h | 120 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 knode/knarticlecollection.h (limited to 'knode/knarticlecollection.h') diff --git a/knode/knarticlecollection.h b/knode/knarticlecollection.h new file mode 100644 index 000000000..3a92f2182 --- /dev/null +++ b/knode/knarticlecollection.h @@ -0,0 +1,120 @@ +/* + knarticlecollection.h + + KNode, the KDE newsreader + Copyright (c) 1999-2001 the KNode authors. + See file AUTHORS for details + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, US +*/ + +#ifndef KNARTICLECOLLECTION_H +#define KNARTICLECOLLECTION_H + +#include "kncollection.h" + +class KNArticle; + + +class KNArticleVector { + + public: + enum SortingType { STid, STmsgId, STunsorted }; + + KNArticleVector(KNArticleVector *master=0, SortingType sorting=STunsorted); + virtual ~KNArticleVector(); + + // list-info + KNArticleVector* master() { return m_aster; } + void setMaster(KNArticleVector *m) { m_aster=m; } + bool isMaster() { return (m_aster==0); } + + bool isEmpty() { return ( (l_ist==0) || (l_en==0) ); } + int length() { return l_en; } + int size() { return s_ize; } + + // list-handling + bool resize(int s=0); + bool append(KNArticle *a, bool autoSort=false); + void remove(int pos, bool autoDel=false, bool autoCompact=false); + void clear(); + void compact(); + void syncWithMaster(); + + // sorting + SortingType sortMode() { return s_ortType; } + void setSortMode(SortingType s) { s_ortType=s; } + void sort(); + static int compareById(const void *a1, const void *a2); + static int compareByMsgId(const void *a1, const void *a2); + + // article access + KNArticle* at(int i) { return ( (i>=0 && i0); } + int size() { return a_rticles.size(); } + int length() { return a_rticles.length(); } + + // cache behavior + bool isNotUnloadable() { return n_otUnloadable; } + void setNotUnloadable(bool b=true) { n_otUnloadable = b; } + + // locking + unsigned int lockedArticles() { return l_ockedArticles; } + void articleLocked() { l_ockedArticles++; } + void articleUnlocked() { l_ockedArticles--; } + + // list-handling + bool resize(int s=0); + bool append(KNArticle *a, bool autoSync=false); + void clear(); + void compact(); + void setLastID(); + + // article access + KNArticle* at(int i) { return a_rticles.at(i); } + KNArticle* byId(int id); + KNArticle* byMessageId(const QCString &mid); + + // search index + void syncSearchIndex(); + void clearSearchIndex(); + + protected: + int l_astID; + unsigned int l_ockedArticles; + bool n_otUnloadable; + KNArticleVector a_rticles; + KNArticleVector m_idIndex; +}; + + +#endif -- cgit v1.2.1