1 // Copyright (C) 2010 Jaakko Kyro <jkyro@korjaussarja.net>
2 // This file is licenced under GPL, see COPYING
3 // for full licence information
6 #include "eveaccount.h"
7 #include "evesettingsdialog.h"
8 #include "eveskilltraining.h"
11 //#include <QNetworkConfigurationManager>
18 Widget::Widget(QWidget *parent)
20 m_settings(new EveSettingsDialog(this)),
22 //m_net(new QNetworkConfigurationManager(this)),
23 m_skills(new SkillTree(this)),
24 m_model(new EveModel),
25 m_timer(new QTimer(this)),
26 m_updateTimer(new QTimer(this))
28 setAlignment(Qt::AlignCenter);
29 setAttribute(Qt::WA_TranslucentBackground);
30 setGeometry(0,0,150,180);
31 //connect(m_net,SIGNAL(onlineStateChanged(bool)),this,SLOT(onlineStateChanged(bool)));
32 connect(m_skills,SIGNAL(skillsLoaded()),this,SLOT(update()));
33 m_skills->loadSkills();
34 m_model->loadSettings();
35 m_settings->setModel(m_model);
36 EveCharacter *c = m_model->selectedCharacter();
40 m_timer->setSingleShot(true);
41 connect(m_timer,SIGNAL(timeout()),this,SLOT(loadTraining()));
42 m_updateTimer->setSingleShot(true);
43 connect(m_updateTimer,SIGNAL(timeout()),this,SLOT(update()));
52 QSize Widget::sizeHint() const
54 return 2 * QLabel::sizeHint();
57 void Widget::paintEvent(QPaintEvent *event)
60 QColor bgColor(0, 0, 0, 128);
63 p.drawRoundedRect(rect(), 25, 25);
65 QFont dFont(p.font());
66 dFont.setPixelSize(15);
68 EveCharacter *character = m_model->selectedCharacter();
69 if (character != NULL) {
70 QPoint iconLoc((150-64)/2,(150-64)/2);
71 if (character->characterIcon) {
72 p.drawPixmap(iconLoc,*(character->characterIcon));
74 QRect nameLoc(0,10,150,20);
76 p.drawText(nameLoc,Qt::AlignCenter,character->name);
78 if (m_training->isLoading()) {
79 QRect skillTitle(0,100,150,50);
80 p.drawText(skillTitle,Qt::AlignCenter|Qt::TextWordWrap,
82 } else if (m_training->training) {
83 int timeLeft = m_training->currentTime.secsTo(m_training->lastTraining().endTime);
84 qDebug() << "Time left:" << timeLeft;
85 if (timeLeft < 60*60*24) {
86 // Queue not full -> yellow text
88 QColor penColor(254,241,53);
92 QRect skillTitle(0,100,150,50);
93 p.drawText(skillTitle,Qt::AlignCenter|Qt::TextWordWrap,
94 QString("%1 %2").arg(m_skills->skillName(m_training->firstTraining().typeId))
95 .arg(m_training->firstTraining().level));
96 QRect skillLoc(0,145,150,20);
97 p.drawText(skillLoc,Qt::AlignCenter,m_training->firstTraining().endTime.toString(Qt::SystemLocaleShortDate));
101 QRect skillTitle(0,110,150,50);
103 p.drawText(skillTitle,Qt::AlignCenter|Qt::TextWordWrap,
104 "No skill in training");
110 QLabel::paintEvent(event);
113 void Widget::showSettingsDialog()
116 int result = m_settings->exec();
117 if (result == QDialog::Accepted) {
119 m_model->setSelected(m_settings->selectedCharacter());
120 EveCharacter *character = m_model->selectedCharacter();
121 if (character != NULL) {
122 qDebug() << "Got character " << character->name;
123 connect(character,SIGNAL(imageLoaded()),this,SLOT(skillReady()));
124 character->fetchImage();
131 void Widget::loadTraining()
133 EveCharacter *character = m_model->selectedCharacter();
135 if (character != NULL) {
137 qDebug() << "Fetch skills";
138 if (m_training == NULL) {
139 m_training = new EveSkillTraining(this);
140 connect(m_training,SIGNAL(finished()),this,SLOT(trainingLoaded()));
142 m_training->setAccount(m_settings->model().data());
143 m_training->setCharacter(character);
145 m_training->fetchInfo();
150 void Widget::skillReady()
152 m_training->fetchInfo();
153 m_model->saveSettings();
157 void Widget::onlineStateChanged(bool online)
159 qDebug() << "Online status changed, reloading info";
161 m_training->fetchInfo();
166 void Widget::trainingLoaded()
168 qDebug() << "Training loaded";
169 if (m_training != NULL && m_training->training) {
170 QDateTime limit = (m_training->cachedUntil > m_training->lastTraining().endTime) ?
171 m_training->cachedUntil : m_training->lastTraining().endTime;
173 qDebug() << "Next refresh:" << limit.toString(Qt::SystemLocaleShortDate);
174 int interval = 1000 * (m_training->currentTime.secsTo(limit) + 15);
175 //qDebug() << "Timer interval" << interval;
176 if (m_timer->isActive()) {
180 m_timer->setInterval( interval );
182 if (m_updateTimer->isActive())
183 m_updateTimer->stop();
185 QDateTime nextUpdate = m_training->lastTraining().endTime;
187 nextUpdate.addSecs(-1*60*60*24);
188 if (nextUpdate > m_training->currentTime) {
189 m_updateTimer->setInterval(1000 * (m_training->currentTime.secsTo(nextUpdate) + 15));
190 m_updateTimer->start();
196 void Widget::mousePressEvent(QMouseEvent *event)
199 qDebug() << "Press event";
200 m_training->fetchInfo();