Add copying and licence information
[evehomescreen] / src / evesettingsdialog.cpp
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>
9 #include <QtDebug>
10 #include <QtMaemo5>
11 #include <QtGui>
12 #include <QSettings>
13
14 EveSettingsDialog::EveSettingsDialog(QWidget *parent) :
15     QDialog(parent),
16     m_reply(0),
17     m_selection(0),
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))
24 {
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);
30     setLayout(m_layout);
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");
42
43     QPushButton *button = new QPushButton("Done");
44     m_layout->addWidget(button);
45     characterPicker->setPickSelector(characterSelector);
46
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 &)));
56 }
57
58 void EveSettingsDialog::changeEvent(QEvent *e)
59 {
60     QDialog::changeEvent(e);
61     switch (e->type()) {
62     case QEvent::LanguageChange:
63         //retranslateUi(this);
64         break;
65     default:
66         break;
67     }
68 }
69
70 void EveSettingsDialog::tryLoadCharacters()
71 {
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...");
77
78         characterModel->appendRow(item);
79         if (m_model.isNull()) {
80             m_model = QSharedPointer<EveModel>(new EveModel);
81         }
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);
87     }
88 }
89
90 // Setting the model also sets the
91 // API key and user info since
92 // Widget is responsible for loading and saving
93
94 void EveSettingsDialog::setModel(QSharedPointer<EveModel> &model)
95 {
96     m_model = model;
97     apiKeyEdit->setText(model->apiKey());
98     userIdEdit->setText(QString::number(model->userId()));
99     charactersLoaded();
100 }
101
102 void EveSettingsDialog::charactersLoaded()
103 {
104     setAttribute(Qt::WA_Maemo5ShowProgressIndicator, false);
105     EveCharacter c;
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);
114     }
115 }
116
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]);
123     }
124     return NULL;
125 }
126
127 void EveSettingsDialog::characterSelected()
128 {
129
130 }