From: jasu Date: Sat, 8 May 2010 18:00:24 +0000 (+0300) Subject: Settings are now persistent X-Git-Tag: 0.0.2~3 X-Git-Url: http://git.maemo.org/git/?p=evehomescreen;a=commitdiff_plain;h=68d4480c86880f96e6f0d01165c3b4e17d4d3a09 Settings are now persistent --- diff --git a/src/evehomescreen b/src/evehomescreen index 92960a9..98c3c56 100755 Binary files a/src/evehomescreen and b/src/evehomescreen differ diff --git a/src/evehomescreen.pro b/src/evehomescreen.pro index 6969bdb..e2c8fd4 100644 --- a/src/evehomescreen.pro +++ b/src/evehomescreen.pro @@ -13,14 +13,12 @@ SOURCES += main.cpp \ eveaccount.cpp \ eveskilltraining.cpp \ evesettingsdialog.cpp \ - mainwindow.cpp \ skilltree.cpp HEADERS += widget.h \ evemodel.h \ eveaccount.h \ eveskilltraining.h \ evesettingsdialog.h \ - mainwindow.h \ skilltree.h FORMS += evesettingsdialog.ui \ mainwindow.ui diff --git a/src/evemodel.cpp b/src/evemodel.cpp index d0ce515..e8e60c4 100644 --- a/src/evemodel.cpp +++ b/src/evemodel.cpp @@ -9,12 +9,16 @@ #include #include #include +#include + static QUrl imageUrl("http://img.eve.is/serv.asp"); EveModel::EveModel(QObject *parent) : QObject(parent), - m_userId(0) + m_userId(0), + m_selectedIndex(-1) { + } void EveModel::fetchAccounts() @@ -80,6 +84,7 @@ void EveModel::replyReady() reader.readNextStartElement(); // start next row } m_reply->deleteLater(); + saveSettings(); emit accountsReady(); } @@ -88,3 +93,64 @@ void EveModel::networkError(QNetworkReply::NetworkError error) qDebug() << "Network error " << error; } +EveCharacter *EveModel::selectedCharacter() +{ + qDebug() << "Index:" << m_selectedIndex; + if (m_selectedIndex >= 0 && m_selectedIndex < m_characters.size()) + return &(m_characters[m_selectedIndex]); + return NULL; +} + +bool EveModel::loadSettings() +{ + QSettings settings("net.korjaussarja","evehomescreen"); + qDebug() << "Load settings"; + // Absence of this key means first time load + if (!settings.contains("account/apiKey")) { + qDebug() << "No saved settings"; + return false; + } + setApiKey(settings.value("account/apiKey").toString()); + setUserId(settings.value("account/userId").toInt()); + + int size = settings.beginReadArray("characters"); + for (int i = 0;i()); + } + characters().append(character); + } + settings.endArray(); + m_selectedIndex = settings.value("account/selectedCharacter",-1).toInt(); + return true; +} + +// TODO +void EveModel::saveSettings() +{ + QSettings settings("net.korjaussarja","evehomescreen"); + settings.setValue("account/apiKey",apiKey()); + settings.setValue("account/userId",userId()); + if (m_selectedIndex >= 0 && m_selectedIndex < characters().size()) + settings.setValue("account/selectedCharacter",m_selectedIndex); + settings.beginWriteArray("characters"); + + for (int i=0;i &characters() { return m_characters; } + + EveCharacter *selectedCharacter(); + void setSelected( int index ) { m_selectedIndex = index; } + int selectedIndex() { return m_selectedIndex; } signals: void accountsReady(); public slots: void fetchAccounts(); + bool loadSettings(); + void saveSettings(); + private slots: void replyReady(); void networkError(QNetworkReply::NetworkError); @@ -34,6 +41,7 @@ private: QNetworkAccessManager mgr; QNetworkReply *m_reply; QList m_characters; + int m_selectedIndex; }; #endif // EVEMODEL_H diff --git a/src/evesettingsdialog.cpp b/src/evesettingsdialog.cpp index cc977d2..ff0ea47 100644 --- a/src/evesettingsdialog.cpp +++ b/src/evesettingsdialog.cpp @@ -43,8 +43,7 @@ EveSettingsDialog::EveSettingsDialog(QWidget *parent) : QPushButton *button = new QPushButton("Done"); m_layout->addWidget(button); characterPicker->setPickSelector(characterSelector); - - connect(button,SIGNAL(pressed()),this,SLOT(accept())); + connect(button,SIGNAL(pressed()),this,SLOT(donePressed())); //connect(buttons,SIGNAL(rejected()),this,SLOT(reject())); //connect(ui->getCharactersButton,SIGNAL(pressed()),this,SLOT(tryLoadCharacters())); //connect(ui->characterCombo,SIGNAL(currentIndexChanged(int)),this,SLOT(characterSelected(int))); @@ -52,9 +51,11 @@ EveSettingsDialog::EveSettingsDialog(QWidget *parent) : //connect(userIdEdit,SIGNAL(editingFinished()),this,SLOT(tryLoadCharacters())); //connect(characterSelector->view(),SIGNAL(activated(const QModelIndex &)),this,SLOT(characterSelected())); connect(characterPicker,SIGNAL(pressed()),this,SLOT(tryLoadCharacters())); - connect(characterSelector,SIGNAL(selected(const QString &)),characterPicker,SLOT(setValuetext(const QString &))); + //connect(characterSelector,SIGNAL(selected(const QString &)),characterPicker,SLOT(setValuetext(const QString &))); } + + void EveSettingsDialog::changeEvent(QEvent *e) { QDialog::changeEvent(e); @@ -93,10 +94,14 @@ void EveSettingsDialog::tryLoadCharacters() void EveSettingsDialog::setModel(QSharedPointer &model) { + qDebug() << "Set model"; m_model = model; - apiKeyEdit->setText(model->apiKey()); - userIdEdit->setText(QString::number(model->userId())); + apiKeyEdit->setText(m_model->apiKey()); + if (m_model->userId() != 0) + userIdEdit->setText(QString::number(m_model->userId())); + charactersLoaded(); + characterSelector->setCurrentIndex(m_model->selectedIndex()); } void EveSettingsDialog::charactersLoaded() @@ -114,17 +119,18 @@ void EveSettingsDialog::charactersLoaded() } } -EveCharacter *EveSettingsDialog::selectedCharacter() { - int idx = characterSelector->currentIndex(); - qDebug() << "Selected index is " << idx; - if ( idx >=0 && idx < m_model->characters().size() ) { - qDebug() << "Selecting " << m_model->characters().at(idx).name; - return &(m_model->characters()[idx]); - } - return NULL; +int EveSettingsDialog::selectedCharacter() +{ + return characterSelector->currentIndex(); } void EveSettingsDialog::characterSelected() { } + +void EveSettingsDialog::donePressed() +{ + m_model->saveSettings(); + accept(); +} diff --git a/src/evesettingsdialog.h b/src/evesettingsdialog.h index e56bee8..bd246f8 100644 --- a/src/evesettingsdialog.h +++ b/src/evesettingsdialog.h @@ -21,7 +21,7 @@ class EveSettingsDialog : public QDialog { public: EveSettingsDialog(QWidget *parent = 0); - EveCharacter *selectedCharacter(); + int selectedCharacter(); QSharedPointer model() { return m_model; } void setModel(QSharedPointer &model); protected: @@ -30,6 +30,7 @@ public slots: void tryLoadCharacters(); void charactersLoaded(); void characterSelected(); + void donePressed(); private: QSharedPointer m_model; QNetworkReply *m_reply; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index d1321bd..86b8826 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -35,9 +35,9 @@ void MainWindow::settingsRequested() { int result = m_settings->exec(); if (result == QDialog::Accepted) { - m_character = m_settings->selectedCharacter(); + m_selectedCharacter = m_settings->selectedCharacter(); - if (m_character != NULL ) { + if (m_selectedCharacter > 0 && m_selectedCharacter < m_model->chara ) { qDebug() << "Selected character:" << m_character->name; connect(m_character,SIGNAL(imageLoaded()),this,SLOT(setLabelImage())); m_character->fetchImage(); diff --git a/src/skilltree.cpp b/src/skilltree.cpp index 8eaf2b9..8826b3b 100644 --- a/src/skilltree.cpp +++ b/src/skilltree.cpp @@ -51,7 +51,7 @@ void SkillTree::replyReady() qDebug() << "Reply ready"; if (!reply->error()) { QByteArray replyContent = reply->readAll(); - qDebug() << replyContent; + //qDebug() << replyContent; fromXml(replyContent); emit skillsLoaded(); } else { @@ -77,7 +77,7 @@ void SkillTree::fromXml(QByteArray &content) assert(xml.name() == "row"); QString name = xml.attributes().value("","typeName").toString(); int typeId = xml.attributes().value("","typeID").toString().toInt(); - qDebug() << "Found skill " << name << ":" << typeId; + //qDebug() << "Found skill " << name << ":" << typeId; skillNames[typeId] = name; xml.skipCurrentElement(); // description @@ -96,7 +96,7 @@ void SkillTree::fromXml(QByteArray &content) } } - qDebug() << skillNames; + //qDebug() << skillNames; qDebug() << longestName; } diff --git a/src/ui_evesettingsdialog.h b/src/ui_evesettingsdialog.h index 7644fac..73e737c 100644 --- a/src/ui_evesettingsdialog.h +++ b/src/ui_evesettingsdialog.h @@ -1,10 +1,7 @@ -// Copyright (C) 2010 Jaakko Kyro -// This file is licenced under GPL, see COPYING -// for full licence information /******************************************************************************** ** Form generated from reading UI file 'evesettingsdialog.ui' ** -** Created: Fri May 7 20:57:37 2010 +** Created: Sat May 8 12:01:14 2010 ** by: Qt User Interface Compiler version 4.6.2 ** ** WARNING! All changes made in this file will be lost when recompiling UI file! diff --git a/src/ui_mainwindow.h b/src/ui_mainwindow.h index 51049d6..6f40eb6 100644 --- a/src/ui_mainwindow.h +++ b/src/ui_mainwindow.h @@ -1,10 +1,7 @@ -// Copyright (C) 2010 Jaakko Kyro -// This file is licenced under GPL, see COPYING -// for full licence information /******************************************************************************** ** Form generated from reading UI file 'mainwindow.ui' ** -** Created: Fri May 7 20:57:37 2010 +** Created: Sat May 8 12:01:14 2010 ** by: Qt User Interface Compiler version 4.6.2 ** ** WARNING! All changes made in this file will be lost when recompiling UI file! diff --git a/src/widget.cpp b/src/widget.cpp index 3a6f0bd..9e304d2 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -9,28 +9,30 @@ #include "skilltree.h" #include #include +#include QTM_USE_NAMESPACE Widget::Widget(QWidget *parent) : QLabel(parent), - m_character(NULL), m_settings(new EveSettingsDialog(this)), m_training(NULL), m_net(new QNetworkConfigurationManager(this)), m_skills(new SkillTree(this)), - m_model(NULL) + m_model(new EveModel) { setAlignment(Qt::AlignCenter); setAttribute(Qt::WA_TranslucentBackground); setGeometry(0,0,150,180); connect(m_net,SIGNAL(onlineStateChanged(bool)),this,SLOT(onlineStateChanged(bool))); m_skills->loadSkills(); + m_model->loadSettings(); + m_settings->setModel(m_model); } Widget::~Widget() { - delete m_character; + } @@ -49,13 +51,14 @@ void Widget::paintEvent(QPaintEvent *event) QFont dFont(p.font()); dFont.setPixelSize(15); p.setFont(dFont); - if (m_character != NULL) { + EveCharacter *character = m_model->selectedCharacter(); + if (character != NULL) { QPoint iconLoc((150-64)/2,(150-64)/2); - if (m_character->characterIcon) { - p.drawPixmap(iconLoc,*(m_character->characterIcon)); + if (character->characterIcon) { + p.drawPixmap(iconLoc,*(character->characterIcon)); } QRect nameLoc(0,10,150,20); - p.drawText(nameLoc,Qt::AlignCenter,m_character->name); + p.drawText(nameLoc,Qt::AlignCenter,character->name); if (m_training) { QRect skillTitle(0,110,150,50); p.drawText(skillTitle,Qt::AlignCenter|Qt::TextWordWrap, @@ -76,17 +79,21 @@ void Widget::showSettingsDialog() int result = m_settings->exec(); if (result == QDialog::Accepted) { - m_character = m_settings->selectedCharacter(); - m_model = m_settings->model(); - qDebug() << "Got character " << m_character->name; - connect(m_character,SIGNAL(imageLoaded()),this,SLOT(skillReady())); - m_character->fetchImage(); - qDebug() << "Fetch skills"; - m_training = new EveSkillTraining(this); - m_training->setAccount(m_settings->model().data()); - m_training->setCharacter(m_character); - connect(m_training,SIGNAL(finished()),this,SLOT(update())); + m_model->setSelected(m_settings->selectedCharacter()); + EveCharacter *character = m_model->selectedCharacter(); + if (character != NULL) { + qDebug() << "Got character " << character->name; + + connect(character,SIGNAL(imageLoaded()),this,SLOT(skillReady())); + character->fetchImage(); + qDebug() << "Fetch skills"; + m_training = new EveSkillTraining(this); + m_training->setAccount(m_settings->model().data()); + m_training->setCharacter(character); + connect(m_training,SIGNAL(finished()),this,SLOT(update())); + m_training->fetchInfo(); + } } } @@ -94,6 +101,7 @@ void Widget::skillReady() { update(); m_training->fetchInfo(); + m_model->saveSettings(); } void Widget::onlineStateChanged(bool online) @@ -104,14 +112,3 @@ void Widget::onlineStateChanged(bool online) } } -// TODO -void Widget::loadSettings() -{ - -} - -// TODO -void Widget::saveSettings() -{ - -} diff --git a/src/widget.h b/src/widget.h index 66bb5a8..967acf7 100644 --- a/src/widget.h +++ b/src/widget.h @@ -24,18 +24,13 @@ public: Widget(QWidget *parent = 0); ~Widget(); QSize sizeHint() const; - void setCharacter(EveCharacter *aChar) { m_character = aChar; } - EveCharacter *character() { return m_character; } public slots: void showSettingsDialog(); void paintEvent(QPaintEvent *event); void skillReady(); void onlineStateChanged(bool online); - void loadSettings(); - void saveSettings(); private: - EveCharacter *m_character; EveSettingsDialog *m_settings; EveSkillTraining *m_training; QNetworkConfigurationManager *m_net;