1 #include "evesettingsdialog.h"
2 #include "ui_evesettingsdialog.h"
3 #include <QNetworkAccessManager>
4 #include <QNetworkReply>
5 #include <QNetworkRequest>
11 EveSettingsDialog::EveSettingsDialog(QWidget *parent) :
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))
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);
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");
40 QPushButton *button = new QPushButton("Done");
41 m_layout->addWidget(button);
42 characterPicker->setPickSelector(characterSelector);
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 &)));
55 void EveSettingsDialog::changeEvent(QEvent *e)
57 QDialog::changeEvent(e);
59 case QEvent::LanguageChange:
60 //retranslateUi(this);
67 void EveSettingsDialog::tryLoadCharacters()
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...");
75 characterModel->appendRow(item);
76 if (m_model.isNull()) {
77 m_model = QSharedPointer<EveModel>(new EveModel);
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);
87 // Setting the model also sets the
88 // API key and user info since
89 // Widget is responsible for loading and saving
91 void EveSettingsDialog::setModel(QSharedPointer<EveModel> &model)
94 apiKeyEdit->setText(model->apiKey());
95 userIdEdit->setText(QString::number(model->userId()));
99 void EveSettingsDialog::charactersLoaded()
101 setAttribute(Qt::WA_Maemo5ShowProgressIndicator, false);
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);
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]);
124 void EveSettingsDialog::characterSelected()