circuit.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include <QStringList>
00018 #include <QRegExp>
00019
00020 #include "circuit.h"
00021
00022
00023
00024 Circuit::Circuit()
00025 {
00026 _circId = 0;
00027 _status = Unknown;
00028 _isValid = false;
00029 }
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 Circuit::Circuit(const QString &circuit)
00040 {
00041 _isValid = false;
00042
00043 QStringList parts = circuit.split(" ");
00044 if (parts.size() >= 2) {
00045
00046 _circId = (quint64)parts.at(0).toULongLong();
00047
00048 _status = Circuit::toStatus(parts.at(1));
00049
00050
00051 if (parts.size() > 2) {
00052 foreach (QString hop, parts.at(2).split(",")) {
00053 QStringList parts = hop.split(QRegExp("[=~]"));
00054 if (parts.size() != 2)
00055 return;
00056
00057 _ids << parts.at(0).mid(1);
00058 _names << parts.at(1);
00059 }
00060 }
00061
00062 _isValid = true;
00063 }
00064 }
00065
00066
00067 Circuit::Status
00068 Circuit::toStatus(const QString &status)
00069 {
00070 if (!status.compare("LAUNCHED", Qt::CaseInsensitive))
00071 return Launched;
00072 if (!status.compare("BUILT", Qt::CaseInsensitive))
00073 return Built;
00074 if (!status.compare("EXTENDED", Qt::CaseInsensitive))
00075 return Extended;
00076 if (!status.compare("FAILED", Qt::CaseInsensitive))
00077 return Failed;
00078 if (!status.compare("CLOSED", Qt::CaseInsensitive))
00079 return Closed;
00080 return Unknown;
00081 }
00082
00083
00084 QString
00085 Circuit::statusString() const
00086 {
00087 QString status;
00088 switch (_status) {
00089 case Launched: status = tr("New"); break;
00090 case Built: status = tr("Open"); break;
00091 case Extended: status = tr("Building"); break;
00092 case Failed: status = tr("Failed"); break;
00093 case Closed: status = tr("Closed"); break;
00094 default: status = tr("Unknown"); break;
00095 }
00096 return status;
00097 }
00098