Settings are now persistent
authorjasu <jasu@skeletor.(none)>
Sat, 8 May 2010 18:00:24 +0000 (21:00 +0300)
committerjasu <jasu@skeletor.(none)>
Sat, 8 May 2010 18:00:24 +0000 (21:00 +0300)
12 files changed:
src/evehomescreen
src/evehomescreen.pro
src/evemodel.cpp
src/evemodel.h
src/evesettingsdialog.cpp
src/evesettingsdialog.h
src/mainwindow.cpp
src/skilltree.cpp
src/ui_evesettingsdialog.h
src/ui_mainwindow.h
src/widget.cpp
src/widget.h

index 92960a9..98c3c56 100755 (executable)
Binary files a/src/evehomescreen and b/src/evehomescreen differ
index 6969bdb..e2c8fd4 100644 (file)
@@ -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
index d0ce515..e8e60c4 100644 (file)
@@ -9,12 +9,16 @@
 #include <QNetworkAccessManager>
 #include <QNetworkRequest>
 #include <QtDebug>
+#include <QSettings>
+
 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<size;++i) {
+        settings.setArrayIndex(i);
+        EveCharacter character;
+        character.name = settings.value("characterName").toString();
+        character.characterId = settings.value("characterId").toInt();
+        character.corpName = settings.value("corpName").toString();
+        character.corpId = settings.value("corpId").toInt();
+
+        if (settings.contains("characterIcon")) {
+            character.characterIcon = new QPixmap(settings.value("characerIcon").value<QPixmap>());
+        }
+        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().size();++i) {
+        settings.setArrayIndex(i);
+        settings.setValue("characerName", characters().at(i).name);
+        settings.setValue("characterId", characters().at(i).characterId);
+        settings.setValue("corpName", characters().at(i).corpName);
+        settings.setValue("corpId", characters().at(i).corpId);
+        if (characters().at(i).characterIcon != NULL) {
+            settings.setValue("characterIcon",*(characters().at(i).characterIcon));
+        }
+    }
+    settings.endArray();
+}
index 7381e5d..beb8bce 100644 (file)
@@ -20,11 +20,18 @@ public:
     void setUserId(int aId) { m_userId = aId; }
     int userId() const { return m_userId; }
     QList<EveCharacter> &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<EveCharacter> m_characters;
+    int m_selectedIndex;
 };
 
 #endif // EVEMODEL_H
index cc977d2..ff0ea47 100644 (file)
@@ -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<EveModel> &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();
+}
index e56bee8..bd246f8 100644 (file)
@@ -21,7 +21,7 @@ class EveSettingsDialog : public QDialog {
 public:
     EveSettingsDialog(QWidget *parent = 0);
 
-    EveCharacter *selectedCharacter();
+    int selectedCharacter();
     QSharedPointer<EveModel> model() { return m_model; }
     void setModel(QSharedPointer<EveModel> &model);
 protected:
@@ -30,6 +30,7 @@ public slots:
     void tryLoadCharacters();
     void charactersLoaded();
     void characterSelected();
+    void donePressed();
 private:
     QSharedPointer<EveModel> m_model;
     QNetworkReply *m_reply;
index d1321bd..86b8826 100644 (file)
@@ -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();
index 8eaf2b9..8826b3b 100644 (file)
@@ -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;
 }
 
index 7644fac..73e737c 100644 (file)
@@ -1,10 +1,7 @@
-// Copyright (C) 2010 Jaakko Kyro <jkyro@korjaussarja.net>
-// 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!
index 51049d6..6f40eb6 100644 (file)
@@ -1,10 +1,7 @@
-// Copyright (C) 2010 Jaakko Kyro <jkyro@korjaussarja.net>
-// 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!
index 3a6f0bd..9e304d2 100644 (file)
@@ -9,28 +9,30 @@
 #include "skilltree.h"
 #include <QtDebug>
 #include <QNetworkConfigurationManager>
+#include <QSettings>
 
 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()
-{
-
-}
index 66bb5a8..967acf7 100644 (file)
@@ -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;