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)),
29 setAlignment(Qt::AlignCenter);
30 setAttribute(Qt::WA_TranslucentBackground);
31 setGeometry(0,0,150,180);
32 //connect(m_net,SIGNAL(onlineStateChanged(bool)),this,SLOT(onlineStateChanged(bool)));
33 connect(m_skills,SIGNAL(skillsLoaded()),this,SLOT(update()));
34 m_skills->loadSkills();
35 m_model->loadSettings();
36 m_settings->setModel(m_model);
37 EveCharacter *c = m_model->selectedCharacter();
41 m_timer->setSingleShot(true);
42 connect(m_timer,SIGNAL(timeout()),this,SLOT(loadTraining()));
43 m_updateTimer->setSingleShot(true);
44 connect(m_updateTimer,SIGNAL(timeout()),this,SLOT(update()));
53 QSize Widget::sizeHint() const
55 return 2 * QLabel::sizeHint();
58 void Widget::paintEvent(QPaintEvent *event)
61 QColor bgColor(0, 0, 0, 128);
63 bgColor.setRgb(101,150,254,128);
66 p.drawRoundedRect(rect(), 25, 25);
68 QFont dFont(p.font());
69 dFont.setPixelSize(15);
71 EveCharacter *character = m_model->selectedCharacter();
72 if (character != NULL) {
73 QPoint iconLoc((150-64)/2,(150-64)/2);
74 if (character->characterIcon) {
75 p.drawPixmap(iconLoc,*(character->characterIcon));
77 QRect nameLoc(0,10,150,20);
79 p.drawText(nameLoc,Qt::AlignCenter,character->name);
81 if (m_training->isLoading()) {
82 QRect skillTitle(0,100,150,50);
83 p.drawText(skillTitle,Qt::AlignCenter|Qt::TextWordWrap,
85 } else if (m_training->training) {
86 int timeLeft = m_training->currentTime.secsTo(m_training->lastTraining().endTime);
87 qDebug() << "Time left:" << timeLeft;
88 if (timeLeft < 60*60*24) {
89 // Queue not full -> yellow text
91 QColor penColor(254,241,53);
95 QRect skillTitle(0,100,150,50);
96 p.drawText(skillTitle,Qt::AlignCenter|Qt::TextWordWrap,
97 QString("%1 %2").arg(m_skills->skillName(m_training->firstTraining().typeId))
98 .arg(m_training->firstTraining().level));
99 QRect skillLoc(0,145,150,20);
100 p.drawText(skillLoc,Qt::AlignCenter,m_training->firstTraining().endTime.toString(Qt::SystemLocaleShortDate));
104 QRect skillTitle(0,110,150,50);
106 p.drawText(skillTitle,Qt::AlignCenter|Qt::TextWordWrap,
107 "No skill in training");
113 QLabel::paintEvent(event);
116 void Widget::showSettingsDialog()
119 int result = m_settings->exec();
120 if (result == QDialog::Accepted) {
122 m_model->setSelected(m_settings->selectedCharacter());
123 EveCharacter *character = m_model->selectedCharacter();
124 if (character != NULL) {
125 qDebug() << "Got character " << character->name;
126 connect(character,SIGNAL(imageLoaded()),this,SLOT(skillReady()));
127 character->fetchImage();
134 void Widget::loadTraining()
136 EveCharacter *character = m_model->selectedCharacter();
138 if (character != NULL) {
140 qDebug() << "Fetch skills";
141 if (m_training == NULL) {
142 m_training = new EveSkillTraining(this);
143 connect(m_training,SIGNAL(finished()),this,SLOT(trainingLoaded()));
145 m_training->setAccount(m_settings->model().data());
146 m_training->setCharacter(character);
148 m_training->fetchInfo();
153 void Widget::skillReady()
155 m_training->fetchInfo();
156 m_model->saveSettings();
160 void Widget::onlineStateChanged(bool online)
162 qDebug() << "Online status changed, reloading info";
164 m_training->fetchInfo();
169 void Widget::trainingLoaded()
171 qDebug() << "Training loaded";
172 if (m_training != NULL && m_training->training) {
173 QDateTime limit = (m_training->cachedUntil > m_training->lastTraining().endTime) ?
174 m_training->cachedUntil : m_training->lastTraining().endTime;
176 qDebug() << "Next refresh:" << limit.toString(Qt::SystemLocaleShortDate);
177 int interval = 1000 * (m_training->currentTime.secsTo(limit) + 15);
178 //qDebug() << "Timer interval" << interval;
179 if (m_timer->isActive()) {
183 m_timer->setInterval( interval );
185 if (m_updateTimer->isActive())
186 m_updateTimer->stop();
188 QDateTime nextUpdate = m_training->lastTraining().endTime;
190 nextUpdate.addSecs(-1*60*60*24);
191 if (nextUpdate > m_training->currentTime) {
192 m_updateTimer->setInterval(1000 * (m_training->currentTime.secsTo(nextUpdate) + 15));
193 m_updateTimer->start();
199 void Widget::mousePressEvent(QMouseEvent *event)
202 qDebug() << "Press event";
207 void Widget::mouseReleaseEvent(QMouseEvent *event)
210 qDebug() << "Release event";
212 m_training->fetchInfo();