29b80beae393e2c7f5201896c2b7a1bb129de3d8
[evehomescreen] / src / widget.cpp
1 #include "widget.h"
2 #include <QPainter>
3 #include "eveaccount.h"
4 #include "evesettingsdialog.h"
5 #include "eveskilltraining.h"
6 #include "skilltree.h"
7 #include <QtDebug>
8 #include <QNetworkConfigurationManager>
9
10 QTM_USE_NAMESPACE
11
12 Widget::Widget(QWidget *parent)
13     : QLabel(parent),
14     m_character(NULL),
15     m_settings(new EveSettingsDialog(this)),
16     m_training(NULL),
17     m_net(new QNetworkConfigurationManager(this)),
18     m_skills(new SkillTree(this)),
19     m_model(NULL)
20 {
21     setAlignment(Qt::AlignCenter);
22     setAttribute(Qt::WA_TranslucentBackground);
23     setGeometry(0,0,150,180);
24     connect(m_net,SIGNAL(onlineStateChanged(bool)),this,SLOT(onlineStateChanged(bool)));
25     m_skills->loadSkills();
26 }
27
28 Widget::~Widget()
29 {
30     delete m_character;
31 }
32
33
34 QSize Widget::sizeHint() const
35 {
36     return 2 * QLabel::sizeHint();
37 }
38
39 void Widget::paintEvent(QPaintEvent *event)
40 {
41     QPainter p(this);
42     p.setBrush(QColor(0, 0, 0, 128));
43     p.setPen(Qt::NoPen);
44     p.drawRoundedRect(rect(), 25, 25);
45     p.setPen(Qt::white);
46     QFont dFont(p.font());
47     dFont.setPixelSize(15);
48     p.setFont(dFont);
49     if (m_character != NULL) {
50         QPoint iconLoc((150-64)/2,(150-64)/2);
51         if (m_character->characterIcon) {
52             p.drawPixmap(iconLoc,*(m_character->characterIcon));
53         }
54         QRect nameLoc(0,10,150,20);
55         p.drawText(nameLoc,Qt::AlignCenter,m_character->name);
56         if (m_training) {
57             QRect skillTitle(0,110,150,50);
58             p.drawText(skillTitle,Qt::AlignCenter|Qt::TextWordWrap,
59                        QString("%1 %2").arg(m_skills->skillName(m_training->typeId))
60                                        .arg(m_training->level));
61             QRect skillLoc(0,155,150,20);
62             p.drawText(skillLoc,Qt::AlignCenter,m_training->endTime.toString(Qt::SystemLocaleShortDate));
63         }
64
65     }
66     p.end();
67
68     QLabel::paintEvent(event);
69 }
70
71 void Widget::showSettingsDialog()
72 {
73
74     int result = m_settings->exec();
75     if (result == QDialog::Accepted) {
76         m_character = m_settings->selectedCharacter();
77         m_model = m_settings->model();
78         qDebug() << "Got character " << m_character->name;
79         connect(m_character,SIGNAL(imageLoaded()),this,SLOT(skillReady()));
80         m_character->fetchImage();
81         qDebug() << "Fetch skills";
82         m_training = new EveSkillTraining(this);
83         m_training->setAccount(m_settings->model().data());
84         m_training->setCharacter(m_character);
85         connect(m_training,SIGNAL(finished()),this,SLOT(update()));
86
87     }
88 }
89
90 void Widget::skillReady()
91 {
92     update();
93     m_training->fetchInfo();
94 }
95
96 void Widget::onlineStateChanged(bool online)
97 {
98     qDebug() << "Online status changed, reloading info";
99     if (online) {
100         m_training->fetchInfo();
101     }
102 }
103
104 // TODO
105 void Widget::loadSettings()
106 {
107
108 }
109
110 // TODO
111 void Widget::saveSettings()
112 {
113
114 }