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);
46 connect(button,SIGNAL(pressed()),this,SLOT(donePressed()));
47 //connect(buttons,SIGNAL(rejected()),this,SLOT(reject()));
48 //connect(ui->getCharactersButton,SIGNAL(pressed()),this,SLOT(tryLoadCharacters()));
49 //connect(ui->characterCombo,SIGNAL(currentIndexChanged(int)),this,SLOT(characterSelected(int)));
50 //connect(apiKeyEdit,SIGNAL(editingFinished()),this,SLOT(tryLoadCharacters()));
51 //connect(userIdEdit,SIGNAL(editingFinished()),this,SLOT(tryLoadCharacters()));
52 //connect(characterSelector->view(),SIGNAL(activated(const QModelIndex &)),this,SLOT(characterSelected()));
53 connect(characterPicker,SIGNAL(pressed()),this,SLOT(tryLoadCharacters()));
54 //connect(characterSelector,SIGNAL(selected(const QString &)),characterPicker,SLOT(setValuetext(const QString &)));
59 void EveSettingsDialog::changeEvent(QEvent *e)
61 QDialog::changeEvent(e);
63 case QEvent::LanguageChange:
64 //retranslateUi(this);
71 void EveSettingsDialog::tryLoadCharacters()
73 if (!apiKeyEdit->text().isEmpty() &&
74 !userIdEdit->text().isEmpty()) {
75 qDebug() << "Load characters, API key " << apiKeyEdit->text() << " user ID: " << userIdEdit->text();
76 characterModel->clear();
77 QStandardItem *item = new QStandardItem("Retrieving characters, please wait...");
79 characterModel->appendRow(item);
80 if (m_model.isNull()) {
81 m_model = QSharedPointer<EveModel>(new EveModel);
83 m_model->setApiKey(apiKeyEdit->text());
84 m_model->setUserId(userIdEdit->text().toInt());
85 connect(m_model.data(),SIGNAL(accountsReady()),this,SLOT(charactersLoaded()));
86 m_model->fetchAccounts();
87 setAttribute(Qt::WA_Maemo5ShowProgressIndicator, true);
91 // Setting the model also sets the
92 // API key and user info since
93 // Widget is responsible for loading and saving
95 void EveSettingsDialog::setModel(QSharedPointer<EveModel> &model)
97 qDebug() << "Set model";
99 apiKeyEdit->setText(m_model->apiKey());
100 if (m_model->userId() != 0)
101 userIdEdit->setText(QString::number(m_model->userId()));
104 characterSelector->setCurrentIndex(m_model->selectedIndex());
107 void EveSettingsDialog::charactersLoaded()
109 setAttribute(Qt::WA_Maemo5ShowProgressIndicator, false);
111 qDebug() << "Characters loaded";
112 characterModel->clear();
113 foreach (c,m_model->characters()) {
114 qDebug() << "Found " << c.name;
115 QStandardItem *item = new QStandardItem(c.name);
116 item->setTextAlignment(Qt::AlignCenter);
117 item->setEditable(false);
118 characterModel->appendRow(item);
122 int EveSettingsDialog::selectedCharacter()
124 return characterSelector->currentIndex();
127 void EveSettingsDialog::characterSelected()
132 void EveSettingsDialog::donePressed()
134 m_model->saveSettings();