1 // Copyright (C) 2010 Jaakko Kyro <jkyro@korjaussarja.net>
2 // This file is licenced under GPL, see COPYING
3 // for full licence information
4 #include "evesettingsdialog.h"
5 #include "ui_evesettingsdialog.h"
6 #include <QNetworkAccessManager>
7 #include <QNetworkReply>
8 #include <QNetworkRequest>
14 EveSettingsDialog::EveSettingsDialog(QWidget *parent) :
18 userIdEdit(new QLineEdit(this)),
19 apiKeyEdit(new QLineEdit(this)),
20 characterPicker(new QMaemo5ValueButton(this)),
21 characterSelector(new QMaemo5ListPickSelector),
22 characterModel(new QStandardItemModel(0,1,this)),
23 m_layout(new QVBoxLayout(this))
25 setWindowTitle("EVE account");
26 //QHBoxLayout *hbox = new QHBoxLayout(this);
27 //QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel,Qt::Vertical,this);
28 //hbox->addLayout(m_layout);
29 //hbox->addWidget(buttons);
31 QLabel *label1 = new QLabel("User ID");
32 m_layout->addWidget(label1);
33 m_layout->addWidget(userIdEdit);
34 QLabel *label2 = new QLabel("API key");
35 m_layout->addWidget(label2);
36 m_layout->addWidget(apiKeyEdit);
37 m_layout->addWidget(characterPicker);
38 characterSelector->setModel(characterModel);
39 characterSelector->setModelColumn(0);
40 characterPicker->setValueLayout(QMaemo5ValueButton::ValueBesideText);
41 characterPicker->setText("Character");
43 QPushButton *button = new QPushButton("Done");
44 m_layout->addWidget(button);
45 characterPicker->setPickSelector(characterSelector);
47 connect(button,SIGNAL(pressed()),this,SLOT(accept()));
48 //connect(buttons,SIGNAL(rejected()),this,SLOT(reject()));
49 //connect(ui->getCharactersButton,SIGNAL(pressed()),this,SLOT(tryLoadCharacters()));
50 //connect(ui->characterCombo,SIGNAL(currentIndexChanged(int)),this,SLOT(characterSelected(int)));
51 //connect(apiKeyEdit,SIGNAL(editingFinished()),this,SLOT(tryLoadCharacters()));
52 //connect(userIdEdit,SIGNAL(editingFinished()),this,SLOT(tryLoadCharacters()));
53 //connect(characterSelector->view(),SIGNAL(activated(const QModelIndex &)),this,SLOT(characterSelected()));
54 connect(characterPicker,SIGNAL(pressed()),this,SLOT(tryLoadCharacters()));
55 connect(characterSelector,SIGNAL(selected(const QString &)),characterPicker,SLOT(setValuetext(const QString &)));
58 void EveSettingsDialog::changeEvent(QEvent *e)
60 QDialog::changeEvent(e);
62 case QEvent::LanguageChange:
63 //retranslateUi(this);
70 void EveSettingsDialog::tryLoadCharacters()
72 if (!apiKeyEdit->text().isEmpty() &&
73 !userIdEdit->text().isEmpty()) {
74 qDebug() << "Load characters, API key " << apiKeyEdit->text() << " user ID: " << userIdEdit->text();
75 characterModel->clear();
76 QStandardItem *item = new QStandardItem("Retrieving characters, please wait...");
78 characterModel->appendRow(item);
79 if (m_model.isNull()) {
80 m_model = QSharedPointer<EveModel>(new EveModel);
82 m_model->setApiKey(apiKeyEdit->text());
83 m_model->setUserId(userIdEdit->text().toInt());
84 connect(m_model.data(),SIGNAL(accountsReady()),this,SLOT(charactersLoaded()));
85 m_model->fetchAccounts();
86 setAttribute(Qt::WA_Maemo5ShowProgressIndicator, true);
90 // Setting the model also sets the
91 // API key and user info since
92 // Widget is responsible for loading and saving
94 void EveSettingsDialog::setModel(QSharedPointer<EveModel> &model)
97 apiKeyEdit->setText(model->apiKey());
98 userIdEdit->setText(QString::number(model->userId()));
102 void EveSettingsDialog::charactersLoaded()
104 setAttribute(Qt::WA_Maemo5ShowProgressIndicator, false);
106 qDebug() << "Characters loaded";
107 characterModel->clear();
108 foreach (c,m_model->characters()) {
109 qDebug() << "Found " << c.name;
110 QStandardItem *item = new QStandardItem(c.name);
111 item->setTextAlignment(Qt::AlignCenter);
112 item->setEditable(false);
113 characterModel->appendRow(item);
117 EveCharacter *EveSettingsDialog::selectedCharacter() {
118 int idx = characterSelector->currentIndex();
119 qDebug() << "Selected index is " << idx;
120 if ( idx >=0 && idx < m_model->characters().size() ) {
121 qDebug() << "Selecting " << m_model->characters().at(idx).name;
122 return &(m_model->characters()[idx]);
127 void EveSettingsDialog::characterSelected()