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))
27 setAlignment(Qt::AlignCenter);
28 setAttribute(Qt::WA_TranslucentBackground);
29 setGeometry(0,0,150,180);
30 connect(m_net,SIGNAL(onlineStateChanged(bool)),this,SLOT(onlineStateChanged(bool)));
31 connect(m_skills,SIGNAL(skillsLoaded()),this,SLOT(update()));
32 m_skills->loadSkills();
33 m_model->loadSettings();
34 m_settings->setModel(m_model);
35 EveCharacter *c = m_model->selectedCharacter();
39 m_timer->setSingleShot(true);
40 connect(m_timer,SIGNAL(timeout()),this,SLOT(loadTraining()));
49 QSize Widget::sizeHint() const
51 return 2 * QLabel::sizeHint();
54 void Widget::paintEvent(QPaintEvent *event)
57 QColor bgColor(0, 0, 0, 128);
59 // Queue empty -> red background
60 if (!m_training->training) {
62 bgColor.setAlpha(160);
63 } else if (m_training->currentTime.secsTo(m_training->lastTraining().endTime) < 60*60*24) {
64 // Queue not full -> yellow background
65 bgColor.setGreen(109);
71 p.drawRoundedRect(rect(), 25, 25);
73 QFont dFont(p.font());
74 dFont.setPixelSize(15);
76 EveCharacter *character = m_model->selectedCharacter();
77 if (character != NULL) {
78 QPoint iconLoc((150-64)/2,(150-64)/2);
79 if (character->characterIcon) {
80 p.drawPixmap(iconLoc,*(character->characterIcon));
82 QRect nameLoc(0,10,150,20);
83 p.drawText(nameLoc,Qt::AlignCenter,character->name);
84 if (m_training && m_training->training) {
85 QRect skillTitle(0,110,150,50);
86 p.drawText(skillTitle,Qt::AlignCenter|Qt::TextWordWrap,
87 QString("%1 %2").arg(m_skills->skillName(m_training->firstTraining().typeId))
88 .arg(m_training->firstTraining().level));
89 QRect skillLoc(0,155,150,20);
90 p.drawText(skillLoc,Qt::AlignCenter,m_training->firstTraining().endTime.toString(Qt::SystemLocaleShortDate));
93 QRect skillTitle(0,110,150,50);
95 p.drawText(skillTitle,Qt::AlignCenter|Qt::TextWordWrap,
96 "No skill in training");
102 QLabel::paintEvent(event);
105 void Widget::showSettingsDialog()
108 int result = m_settings->exec();
109 if (result == QDialog::Accepted) {
111 m_model->setSelected(m_settings->selectedCharacter());
112 EveCharacter *character = m_model->selectedCharacter();
113 if (character != NULL) {
114 qDebug() << "Got character " << character->name;
115 connect(character,SIGNAL(imageLoaded()),this,SLOT(skillReady()));
116 character->fetchImage();
123 void Widget::loadTraining()
125 EveCharacter *character = m_model->selectedCharacter();
126 if (character != NULL) {
128 qDebug() << "Fetch skills";
129 if (m_training == NULL) {
130 m_training = new EveSkillTraining(this);
131 connect(m_training,SIGNAL(finished()),this,SLOT(trainingLoaded()));
133 m_training->setAccount(m_settings->model().data());
134 m_training->setCharacter(character);
136 m_training->fetchInfo();
140 void Widget::skillReady()
143 m_training->fetchInfo();
144 m_model->saveSettings();
147 void Widget::onlineStateChanged(bool online)
149 qDebug() << "Online status changed, reloading info";
151 m_training->fetchInfo();
155 void Widget::trainingLoaded()
157 qDebug() << "Training loaded";
158 if (m_training != NULL && m_training->training) {
159 QDateTime limit = (m_training->cachedUntil > m_training->lastTraining().endTime) ?
160 m_training->cachedUntil : m_training->lastTraining().endTime;
161 qDebug() << "Next refresh:" << limit.toString(Qt::SystemLocaleShortDate);
162 int interval = 1000 * (m_training->currentTime.secsTo(limit) + 15);
163 //qDebug() << "Timer interval" << interval;
164 if (m_timer->isActive()) {
167 m_timer->setInterval( interval );