From bdff0b9c47410e6bc9f3c4c8cb25d000c28629de Mon Sep 17 00:00:00 2001 From: jasu Date: Sun, 23 May 2010 13:02:50 +0300 Subject: [PATCH] Yellow text color if training queue has room for more skills, adjust text location --- src/eveskilltraining.cpp | 49 +++++++++++++++++++++++++++++----------------- src/eveskilltraining.h | 6 +++++- src/widget.cpp | 28 +++++++++++++------------- 3 files changed, 50 insertions(+), 33 deletions(-) diff --git a/src/eveskilltraining.cpp b/src/eveskilltraining.cpp index 4a09391..bb86cb3 100644 --- a/src/eveskilltraining.cpp +++ b/src/eveskilltraining.cpp @@ -30,6 +30,7 @@ bool EveSkillTraining::fromXml(QXmlStreamReader &xml) } currentTime = QDateTime::fromString(xml.readElementText(),"yyyy-MM-dd hh:mm:ss"); + currentTime.setTimeSpec(Qt::UTC); //xml.readNextStartElement(); // end currentTime element bool inResult = xml.readNextStartElement(); // start result element if (xml.name() != "result") { @@ -42,26 +43,31 @@ bool EveSkillTraining::fromXml(QXmlStreamReader &xml) return false; } inResult = xml.readNextStartElement(); - while (inResult) { - if (xml.name() == "row") { - TrainingEntry entry; - entry.typeId = xml.attributes().value("","typeID").toString().toInt(); - entry.destSkillpoints = xml.attributes().value("","endSP").toString().toInt(); - entry.startSkillpoints = xml.attributes().value("","startSP").toString().toInt(); - entry.level = xml.attributes().value("","level").toString().toInt(); - if (xml.attributes().hasAttribute("","startTime")) { - entry.startTime = QDateTime::fromString(xml.attributes().value("","startTime").toString(), - "yyyy-MM-dd hh:mm:ss"); - entry.startTime.setTimeSpec(Qt::UTC); - } - if (xml.attributes().hasAttribute("","endTime")) { - entry.endTime = QDateTime::fromString(xml.attributes().value("","endtTime").toString(), - "yyyy-MM-dd hh:mm:ss"); - entry.endTime.setTimeSpec(Qt::UTC); - } - m_trainingQueue.append(entry); + if (xml.name() == "row") { + training = true; + m_trainingQueue.clear(); + } + while (xml.name() == "row") { + TrainingEntry entry; + entry.typeId = xml.attributes().value("","typeID").toString().toInt(); + entry.destSkillpoints = xml.attributes().value("","endSP").toString().toInt(); + entry.startSkillpoints = xml.attributes().value("","startSP").toString().toInt(); + entry.level = xml.attributes().value("","level").toString().toInt(); + if (xml.attributes().hasAttribute("","startTime")) { + entry.startTime = QDateTime::fromString(xml.attributes().value("","startTime").toString(), + "yyyy-MM-dd hh:mm:ss"); + entry.startTime.setTimeSpec(Qt::UTC); + } + if (xml.attributes().hasAttribute("","endTime")) { + entry.endTime = QDateTime::fromString(xml.attributes().value("","endTime").toString(), + "yyyy-MM-dd hh:mm:ss"); + entry.endTime.setTimeSpec(Qt::UTC); } + qDebug() << entry; + m_trainingQueue.append(entry); + if (!xml.readNextStartElement() ) // end row element + xml.readNextStartElement(); // start next row element } if (xml.name() == "cachedUntil" ) { cachedUntil = QDateTime::fromString(xml.readElementText(),"yyyy-MM-dd hh:mm:ss"); @@ -69,6 +75,7 @@ bool EveSkillTraining::fromXml(QXmlStreamReader &xml) qDebug() << "Cached until " << cachedUntil.toString(Qt::SystemLocaleShortDate); } qDebug() << "Parsing finished"; + qDebug() << firstTraining(); return true; } @@ -105,3 +112,9 @@ void EveSkillTraining::infoReady() m_reply->deleteLater(); emit finished(); } + +QDebug operator<<(QDebug dbg, const TrainingEntry &e) +{ + dbg.nospace() << e.typeId << " to " << e.level << e.startTime << " -> " << e.endTime; + return dbg.space(); +}; diff --git a/src/eveskilltraining.h b/src/eveskilltraining.h index de1281e..4b76cf7 100644 --- a/src/eveskilltraining.h +++ b/src/eveskilltraining.h @@ -9,6 +9,7 @@ #include #include #include +#include class EveCharacter; class EveModel; @@ -17,13 +18,14 @@ class TrainingEntry { public: QDateTime startTime; QDateTime endTime; - QDateTime currentTime; int typeId; int startSkillpoints; int destSkillpoints; int level; }; +QDebug operator<<(QDebug, const TrainingEntry &); + class EveSkillTraining : public QObject { Q_OBJECT @@ -53,4 +55,6 @@ private: QList m_trainingQueue; }; + + #endif // EVESKILLTRAINING_H diff --git a/src/widget.cpp b/src/widget.cpp index 634c0d1..399f0fe 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -55,21 +55,10 @@ void Widget::paintEvent(QPaintEvent *event) { QPainter p(this); QColor bgColor(0, 0, 0, 128); - if (m_training) { - // Queue empty -> red background - if (!m_training->training) { - bgColor.setRed(128); - bgColor.setAlpha(160); - } else if (m_training->currentTime.secsTo(m_training->lastTraining().endTime) < 60*60*24) { - // Queue not full -> yellow background - bgColor.setGreen(109); - bgColor.setRed(163); - } - } p.setBrush(bgColor); p.setPen(Qt::NoPen); p.drawRoundedRect(rect(), 25, 25); - p.setPen(Qt::white); + QFont dFont(p.font()); dFont.setPixelSize(15); p.setFont(dFont); @@ -80,13 +69,23 @@ void Widget::paintEvent(QPaintEvent *event) p.drawPixmap(iconLoc,*(character->characterIcon)); } QRect nameLoc(0,10,150,20); + p.setPen(Qt::white); p.drawText(nameLoc,Qt::AlignCenter,character->name); if (m_training && m_training->training) { - QRect skillTitle(0,110,150,50); + int timeLeft = m_training->currentTime.secsTo(m_training->lastTraining().endTime); + qDebug() << "Time left:" << timeLeft; + if (timeLeft < 60*60*24) { + // Queue not full -> yellow text + + QColor penColor(254,241,53); + p.setPen(penColor); + } + + QRect skillTitle(0,100,150,50); p.drawText(skillTitle,Qt::AlignCenter|Qt::TextWordWrap, QString("%1 %2").arg(m_skills->skillName(m_training->firstTraining().typeId)) .arg(m_training->firstTraining().level)); - QRect skillLoc(0,155,150,20); + QRect skillLoc(0,145,150,20); p.drawText(skillLoc,Qt::AlignCenter,m_training->firstTraining().endTime.toString(Qt::SystemLocaleShortDate)); } else { @@ -158,6 +157,7 @@ void Widget::trainingLoaded() if (m_training != NULL && m_training->training) { QDateTime limit = (m_training->cachedUntil > m_training->lastTraining().endTime) ? m_training->cachedUntil : m_training->lastTraining().endTime; + qDebug() << "Next refresh:" << limit.toString(Qt::SystemLocaleShortDate); int interval = 1000 * (m_training->currentTime.secsTo(limit) + 15); //qDebug() << "Timer interval" << interval; -- 1.7.9.5