035265465c5f5b6f70f14c8bdc8e63ad36a16cc8
[evehomescreen] / src / evesettingsdialog.cpp
1 #include "evesettingsdialog.h"
2 #include "ui_evesettingsdialog.h"
3 #include <QNetworkAccessManager>
4 #include <QNetworkReply>
5 #include <QNetworkRequest>
6 #include <QtDebug>
7 #include <QtMaemo5>
8 #include <QtGui>
9 #include <QSettings>
10
11 EveSettingsDialog::EveSettingsDialog(QWidget *parent) :
12     QDialog(parent),
13     m_reply(0),
14     m_selection(0),
15     userIdEdit(new QLineEdit(this)),
16     apiKeyEdit(new QLineEdit(this)),
17     characterPicker(new QMaemo5ValueButton(this)),
18     characterSelector(new QMaemo5ListPickSelector),
19     characterModel(new QStandardItemModel(0,1,this)),
20     m_layout(new QVBoxLayout(this))
21 {
22     setWindowTitle("EVE account");
23     //QHBoxLayout *hbox = new QHBoxLayout(this);
24     //QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel,Qt::Vertical,this);
25     //hbox->addLayout(m_layout);
26     //hbox->addWidget(buttons);
27     setLayout(m_layout);
28     QLabel *label1 = new QLabel("User ID");
29     m_layout->addWidget(label1);
30     m_layout->addWidget(userIdEdit);
31     QLabel *label2 = new QLabel("API key");
32     m_layout->addWidget(label2);
33     m_layout->addWidget(apiKeyEdit);
34     m_layout->addWidget(characterPicker);
35     characterSelector->setModel(characterModel);
36     characterSelector->setModelColumn(0);
37     characterPicker->setValueLayout(QMaemo5ValueButton::ValueBesideText);
38     characterPicker->setText("Character");
39
40     QPushButton *button = new QPushButton("Done");
41     m_layout->addWidget(button);
42     characterPicker->setPickSelector(characterSelector);
43
44     connect(button,SIGNAL(pressed()),this,SLOT(accept()));
45     //connect(buttons,SIGNAL(rejected()),this,SLOT(reject()));
46     //connect(ui->getCharactersButton,SIGNAL(pressed()),this,SLOT(tryLoadCharacters()));
47     //connect(ui->characterCombo,SIGNAL(currentIndexChanged(int)),this,SLOT(characterSelected(int)));
48     //connect(apiKeyEdit,SIGNAL(editingFinished()),this,SLOT(tryLoadCharacters()));
49     //connect(userIdEdit,SIGNAL(editingFinished()),this,SLOT(tryLoadCharacters()));
50     //connect(characterSelector->view(),SIGNAL(activated(const QModelIndex &)),this,SLOT(characterSelected()));
51     connect(characterPicker,SIGNAL(pressed()),this,SLOT(tryLoadCharacters()));
52     connect(characterSelector,SIGNAL(selected(const QString &)),characterPicker,SLOT(setValuetext(const QString &)));
53 }
54
55 void EveSettingsDialog::changeEvent(QEvent *e)
56 {
57     QDialog::changeEvent(e);
58     switch (e->type()) {
59     case QEvent::LanguageChange:
60         //retranslateUi(this);
61         break;
62     default:
63         break;
64     }
65 }
66
67 void EveSettingsDialog::tryLoadCharacters()
68 {
69     if (!apiKeyEdit->text().isEmpty() &&
70         !userIdEdit->text().isEmpty()) {
71         qDebug() << "Load characters, API key " << apiKeyEdit->text() << " user ID: " << userIdEdit->text();
72         characterModel->clear();
73         QStandardItem *item = new QStandardItem("Retrieving characters, please wait...");
74
75         characterModel->appendRow(item);
76         if (m_model.isNull()) {
77             m_model = QSharedPointer<EveModel>(new EveModel);
78         }
79         m_model->setApiKey(apiKeyEdit->text());
80         m_model->setUserId(userIdEdit->text().toInt());
81         connect(m_model.data(),SIGNAL(accountsReady()),this,SLOT(charactersLoaded()));
82         m_model->fetchAccounts();
83         setAttribute(Qt::WA_Maemo5ShowProgressIndicator, true);
84     }
85 }
86
87 // Setting the model also sets the
88 // API key and user info since
89 // Widget is responsible for loading and saving
90
91 void EveSettingsDialog::setModel(QSharedPointer<EveModel> &model)
92 {
93     m_model = model;
94     apiKeyEdit->setText(model->apiKey());
95     userIdEdit->setText(QString::number(model->userId()));
96     charactersLoaded();
97 }
98
99 void EveSettingsDialog::charactersLoaded()
100 {
101     setAttribute(Qt::WA_Maemo5ShowProgressIndicator, false);
102     EveCharacter c;
103     qDebug() << "Characters loaded";
104     characterModel->clear();
105     foreach (c,m_model->characters()) {
106         qDebug() << "Found " << c.name;
107         QStandardItem *item = new QStandardItem(c.name);
108         item->setTextAlignment(Qt::AlignCenter);
109         item->setEditable(false);
110         characterModel->appendRow(item);
111     }
112 }
113
114 EveCharacter *EveSettingsDialog::selectedCharacter() {
115     int idx = characterSelector->currentIndex();
116     qDebug() << "Selected index is " << idx;
117     if ( idx >=0 && idx < m_model->characters().size() ) {
118         qDebug() << "Selecting " << m_model->characters().at(idx).name;
119         return &(m_model->characters()[idx]);
120     }
121     return NULL;
122 }
123
124 void EveSettingsDialog::characterSelected()
125 {
126
127 }