kpilot Library API Documentation

pilotAppCategory.h

00001 #ifndef _KPILOT_PILOTAPPCATEGORY_H
00002 #define _KPILOT_PILOTAPPCATEGORY_H
00003 /* pilotAppCategory.h                   KPilot
00004 **
00005 ** Copyright (C) 1998-2001 by Dan Pilone
00006 **
00007 ** The class PilotAppCategory is the base class for "interpretations"
00008 ** of a PilotRecord. This is where the records change from a collction
00009 ** of bits to something with meaning. Subclasses of PilotAppCategory
00010 ** give specific meaning to records from specific databases.
00011 **
00012 ** Almost everything is inline; as a crufty hack, the non-inline
00013 ** part of this class lives in pilotRecord.cc.
00014 */
00015 
00016 /*
00017 ** This program is free software; you can redistribute it and/or modify
00018 ** it under the terms of the GNU Lesser General Public License as published by
00019 ** the Free Software Foundation; either version 2.1 of the License, or
00020 ** (at your option) any later version.
00021 **
00022 ** This program is distributed in the hope that it will be useful,
00023 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
00024 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00025 ** GNU Lesser General Public License for more details.
00026 **
00027 ** You should have received a copy of the GNU Lesser General Public License
00028 ** along with this program in a file called COPYING; if not, write to
00029 ** the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
00030 ** MA 02111-1307, USA.
00031 */
00032 
00033 /*
00034 ** Bug reports and questions can be sent to kde-pim@kde.org
00035 */
00036 
00037 // #include <pi-macros.h>
00038 
00039 #include <qstring.h>
00040 
00041 #include "pilotRecord.h"
00042 
00043 class QTextCodec;
00044 
00045 class PilotAppCategory
00046 {
00047 protected:                      // Use protected since we will be subclassed
00048         int fAttrs;             // Attributes on this record
00049         recordid_t fId;         // The unique ID this record was assigned
00050 
00059         int fCategory;          // The category ID this record belongs to
00060 
00061         virtual void *pack(void *, int *) = 0;
00062         virtual void unpack(const void *, int = 0) = 0;
00063 
00064 
00065 public:
00066         PilotAppCategory(void) : 
00067                 fAttrs(0), 
00068                 fId(0), 
00069                 fCategory(0) 
00070         {} ;
00071 
00072         PilotAppCategory(int a, recordid_t i, int c) : 
00073                 fAttrs(a), 
00074                 fId(i), 
00075                 fCategory(c) 
00076         {} ;
00077 
00078         PilotAppCategory(PilotRecord* rec) : 
00079                 fAttrs((rec)?rec->getAttrib():0), 
00080                 fId((rec)?rec->getID():0), 
00081                 fCategory((rec)?rec->getCat():0) 
00082         {} ;
00083 
00084         PilotAppCategory(const PilotAppCategory &copyFrom) :
00085                 fAttrs(copyFrom.fAttrs), 
00086                 fId(copyFrom.fId), 
00087                 fCategory(copyFrom.fCategory) 
00088         {} ;
00089 
00090         PilotAppCategory& operator=( const PilotAppCategory &r )
00091         {
00092                 fAttrs = r.fAttrs;
00093                 fId = r.fId;
00094                 fCategory = r.fCategory;
00095                 return *this;
00096         } ;
00097 
00098         bool operator==(const PilotAppCategory &compareTo)
00099         {
00100                 return (fAttrs==compareTo.fAttrs && fId==compareTo.fId && fCategory==compareTo.fCategory);
00101         } ;
00102         
00103         virtual ~PilotAppCategory(void) {};
00104 
00108         virtual PilotRecord* pack()
00109         { 
00110                 int len = 0xffff; 
00111                 void* buff = new unsigned char[len];
00112                 pack(buff, &len);
00113                 PilotRecord* rec =  new PilotRecord(buff, len, getAttrib(), getCat(), id());
00114                 delete [] (unsigned char*)buff;
00115                 return rec;
00116         }
00117 
00118         int getAttrib(void) const { return fAttrs; }
00119         int getCat(void) const { return fCategory; }
00120         void setCat(int cat) { fCategory = cat; }
00121         recordid_t id(void) const { return fId; }
00122         recordid_t getID() { return id(); } // Just for compatability's sake
00123         recordid_t getID() const { return id(); } // Just for compatability's sake
00124         void setID(recordid_t id) { fId = id; }
00125         void setAttrib(int attrib) { fAttrs = attrib; }
00126 
00127 public:
00128         bool isSecret() const { return fAttrs & dlpRecAttrSecret ; } ;
00129         bool isDeleted() const { return fAttrs & dlpRecAttrDeleted ; } ;
00130         void makeSecret() { fAttrs |= dlpRecAttrSecret; } ;
00131         void makeDeleted() { fAttrs |= dlpRecAttrDeleted ; } ;
00132         bool isModified() const { return fAttrs & dlpRecAttrDirty; }
00133 
00134 protected:
00135         static QTextCodec *pilotCodec;
00136 public:
00137         static QTextCodec *codec() 
00138                 { if (pilotCodec) return pilotCodec; else return createCodec(0L); } ;
00139         static QTextCodec *createCodec(const char *);
00140         static QTextCodec *setupPilotCodec(const QString &);
00141 };
00142 
00143 #endif
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.5.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Sun Feb 15 11:40:44 2004 by doxygen 1.3.5 written by Dimitri van Heesch, © 1997-2001