qrailway 0.9
|
00001 #ifndef CLISTE_H 00002 #define CLISTE_H 00003 00004 #include "cConstants.h" 00005 //#include <math.h> 00006 #include <qdatetime.h> 00007 #include <qlist.h> 00008 #include <qfile.h> 00009 #include <qtextstream.h> 00010 #include <qstring.h> 00011 00013 class cListenEintrag 00014 { 00015 public: 00017 cListenEintrag() { 00018 nummer=0; 00019 listenid=0; 00020 richtung=0; 00021 eintragstyp='R'; 00022 weichenrichtung=dirFehler; // undefined 00023 parsed=TRUE; 00024 } 00026 cListenEintrag(int listenidT,QString unparsedT) { 00027 nummer=0; 00028 listenid=listenidT; 00029 listensubid=0; 00030 richtung=0; 00031 weichenrichtung=dirFehler; 00032 eintragstyp='U'; 00033 parsed=FALSE; 00034 unparsed=unparsedT; 00035 } 00037 cListenEintrag(int listenidT,int listensubidT,int nummerT) { 00038 nummer=nummerT; 00039 listenid=listenidT; 00040 listensubid=listensubidT; 00041 richtung=0; 00042 weichenrichtung=dirFehler; 00043 eintragstyp='R'; 00044 parsed=TRUE; 00045 unparsed=QString("Reed"); 00046 } 00048 cListenEintrag(int listenidT,int listensubidT,int nummerT,QString weichenRichtungT) { 00049 nummer=nummerT; 00050 listenid=listenidT; 00051 listensubid=listensubidT; 00052 richtung=0; 00053 weichenrichtung=weichenRichtungT; 00054 eintragstyp='W'; 00055 parsed=TRUE; 00056 unparsed=QString("Weiche"); 00057 } 00059 cListenEintrag(int listenidT,int listensubidT,int nummerT,QString weichenRichtungT,QString unparsedT) { 00060 nummer=nummerT; 00061 listenid=listenidT; 00062 listensubid=listensubidT; 00063 richtung=0; 00064 weichenrichtung=weichenRichtungT; 00065 eintragstyp='W'; 00066 parsed=TRUE; 00067 unparsed=unparsedT; 00068 } 00070 void cDebug(int prioritaet,const QString & meldung) { 00071 QString debugstring=QString(" cListenEintrag::"); 00072 if (prioritaet==0) qWarning("%s",qPrintable(debugstring+meldung)); 00073 if (prioritaet<=2) { 00074 QFile Debugdatei("log.cListe"); 00075 if (!Debugdatei.open(QFile::Append|QFile::WriteOnly)) { 00076 cerr << "\"log.cListe\" konnte nicht geoeffnet werden!" << endl; 00077 return; 00078 } 00079 QTextStream Debugstream(&Debugdatei); 00080 QDateTime zeitdebug=QDateTime::currentDateTime(); 00081 Debugstream << zeitdebug.toString("hh:mm:ss.zzz") << " " << debugstring+meldung << endl; 00082 Debugstream.flush();Debugdatei.close(); 00083 } 00084 } 00086 void anzeigen(void) { 00087 cDebug(2,"anzeigen "+QString::number(listenid)+"."+QString::number(listensubid)+":"+unparsed); 00088 } 00090 bool operator>( const cListenEintrag &anderer ) const { 00091 if (anderer.listenid<listenid) return(TRUE); 00092 if (anderer.listenid>listenid) return(FALSE); 00093 if (anderer.listensubid<listensubid) return(TRUE); 00094 return(FALSE); 00095 } 00097 bool operator<=( const cListenEintrag &anderer ) const { 00098 if (anderer.listenid>listenid) return(TRUE); 00099 if (anderer.listenid<listenid) return(FALSE); 00100 if (anderer.listensubid>=listensubid) return(TRUE); 00101 return(FALSE); 00102 } 00104 bool operator<( const cListenEintrag &anderer ) const { 00105 if (anderer.listenid>listenid) return(TRUE); 00106 if (anderer.listenid<listenid) return(FALSE); 00107 if (anderer.listensubid>listensubid) return(TRUE); 00108 return(FALSE); 00109 } 00111 int listenid; 00113 int listensubid; 00115 bool parsed; 00117 QString unparsed; 00119 int nummer; 00121 int richtung; 00123 QString weichenrichtung; 00125 char eintragstyp; 00126 }; 00127 00129 00130 class cListe 00131 { 00132 public: 00134 void cDebug(int prioritaet,const QString & meldung); 00135 00137 cListe(void); 00139 ~cListe(void); 00140 00142 int getMaxBefehlsNr(void); 00143 00145 void entferneBefehl(int n); 00146 00148 void setBezeichnung(const QString & bezeichnungT); 00149 00151 QString getBezeichnung(void) { return(bezeichnung); }; 00152 00154 void anhaengenBefehlUnparsed(int befehlid, QString befehl); 00155 bool setBahnhofParsed(int bahnhofsnrtmp); 00156 00158 void einfuegenReedSubBefehl(cListenEintrag parentbefehl,int listensubid, int reedid); 00159 00161 void einfuegenWeichenSubBefehl(cListenEintrag parentbefehl,int listensubid, int weichenid,QString weichenRichtung); 00162 void einfuegenWWeichenSubBefehl(cListenEintrag parentbefehl,int listensubid, int weichenid,QString weichenRichtung); 00163 00164 // sortiert die Liste 00165 //void sortieren(void); 00166 00168 int anzahlBefehle(void); 00169 00171 int einfuegen(cListenEintrag befehl); 00172 00174 void zeigBefehle(void); 00175 00177 cListenEintrag getAktuellerBefehl(int i=0); 00178 00180 bool setAktuellerBefehl(int i,cListenEintrag eintrag,bool idgeaendert=TRUE); 00181 00183 cListenEintrag getBefehl(int i); 00184 00186 bool setBefehl(int i,cListenEintrag eintrag,bool idgeaendert=TRUE); 00187 00189 int naechsterBefehl(void); 00190 00192 void start(void); 00193 00194 private: 00196 typedef QList<cListenEintrag> ListenTyp; 00197 00199 ListenTyp Liste; 00200 00202 int position; 00203 00205 QString bezeichnung; 00206 00207 }; 00208 00209 #endif // CLISTE_H