Added Preferences->Profile form, made preferences only save data if pressed OK

This commit is contained in:
Mark Watkins 2011-09-08 19:50:05 +10:00
parent 0ad08d3aca
commit d2e133fa62
5 changed files with 329 additions and 23 deletions

View File

@ -329,7 +329,7 @@ Profile *Create(QString name,QString realname,QString password)
prof->Open(); prof->Open();
profiles[name]=prof; profiles[name]=prof;
prof->Set("Username",name); prof->Set("Username",name);
prof->Set("Realname",realname); //prof->Set("Realname",realname);
if (!password.isEmpty()) prof->Set("Password",SHA1(password)); if (!password.isEmpty()) prof->Set("Password",SHA1(password));
prof->Set("DataFolder","{home}/Profiles/{Username}"); prof->Set("DataFolder","{home}/Profiles/{Username}");

View File

@ -381,6 +381,7 @@ void MainWindow::on_action_Preferences_triggered()
PreferencesDialog pd(this); PreferencesDialog pd(this);
if (pd.exec()==PreferencesDialog::Accepted) { if (pd.exec()==PreferencesDialog::Accepted) {
qDebug() << "Preferences Accepted"; qDebug() << "Preferences Accepted";
pd.Save();
} }
} }
@ -396,7 +397,7 @@ void MainWindow::on_actionEnable_Multithreading_toggled(bool checked)
{ {
pref["EnableMultithreading"]=checked; pref["EnableMultithreading"]=checked;
if (checked) { if (checked) {
qDebug() << "This feature is disabled due to it currently being useless."; qDebug() << "Multithreading feature is disabled due to it currently being useless.";
} }
} }

View File

@ -1,6 +1,5 @@
#include <QLabel> #include <QLabel>
#include <QColorDialog> #include <QColorDialog>
#include "SleepLib/profiles.h"
#include "preferencesdialog.h" #include "preferencesdialog.h"
#include "ui_preferencesdialog.h" #include "ui_preferencesdialog.h"
#include "SleepLib/machine_common.h" #include "SleepLib/machine_common.h"
@ -11,6 +10,27 @@ PreferencesDialog::PreferencesDialog(QWidget *parent) :
{ {
ui->setupUi(this); ui->setupUi(this);
QString prof=pref["Profile"].toString();
profile=Profiles::Get(prof);
ui->firstNameEdit->setText((*profile)["FirstName"].toString());
ui->lastNameEdit->setText((*profile)["LastName"].toString());
ui->addressEdit->clear();
ui->addressEdit->appendPlainText((*profile)["Address"].toString());
ui->emailEdit->setText((*profile)["EmailAddress"].toString());
ui->phoneEdit->setText((*profile)["Phone"].toString());
bool gender=(*profile)["Gender"].toBool();
if (gender) ui->genderMale->setChecked(true); else ui->genderFemale->setChecked(true);
bool ok;
ui->heightEdit->setValue((*profile)["Height"].toDouble(&ok));
ui->dobEdit->setDate((*profile)["DOB"].toDate());
int i=ui->unitCombo->findText((*profile)["UnitSystem"].toString());
ui->unitCombo->setCurrentIndex(i);
int i=ui->timeZoneCombo->findText((*profile)["TimeZone"].toString());
ui->timeZoneCombo->setCurrentIndex(i);
if (pref.Exists("DaySplitTime")) { if (pref.Exists("DaySplitTime")) {
QTime t=pref["DaySplitTime"].toTime(); QTime t=pref["DaySplitTime"].toTime();
ui->timeEdit->setTime(t); ui->timeEdit->setTime(t);
@ -74,6 +94,16 @@ PreferencesDialog::PreferencesDialog(QWidget *parent) :
row++; row++;
} }
} }
ui->profileTab->setTabOrder(ui->firstNameEdit,ui->lastNameEdit);
ui->profileTab->setTabOrder(ui->lastNameEdit,ui->addressEdit);
ui->profileTab->setTabOrder(ui->addressEdit,ui->genderMale);
ui->profileTab->setTabOrder(ui->genderMale,ui->genderFemale);
ui->profileTab->setTabOrder(ui->genderFemale,ui->dobEdit);
ui->profileTab->setTabOrder(ui->dobEdit,ui->heightEdit);
ui->profileTab->setTabOrder(ui->heightEdit,ui->phoneEdit);
ui->profileTab->setTabOrder(ui->phoneEdit,ui->timeZoneCombo);
ui->profileTab->setTabOrder(ui->timeZoneCombo,ui->emailEdit);
ui->profileTab->setTabOrder(ui->emailEdit,ui->unitCombo);
} }
@ -100,28 +130,40 @@ void PreferencesDialog::on_eventTable_doubleClicked(const QModelIndex &index)
} }
} }
void PreferencesDialog::on_timeEdit_editingFinished() void PreferencesDialog::Save()
{ {
(*profile)["FirstName"]=ui->firstNameEdit->text();
(*profile)["LastName"]=ui->lastNameEdit->text();
(*profile)["Gender"]=ui->genderMale->isChecked();
(*profile)["Height"]=ui->heightEdit->value();
(*profile)["DOB"]=ui->dobEdit->date();
(*profile)["EmailAddress"]=ui->emailEdit->text();
(*profile)["Phone"]=ui->phoneEdit->text();
(*profile)["Address"]=ui->addressEdit->toPlainText();
(*profile)["UnitSystem"]=ui->unitCombo->currentText();
(*profile)["TimeZone"]=ui->timeZoneCombo->currentText();
pref["CombineCloserSessions"]=ui->combineSlider->value();
pref["IgnoreShorterSessions"]=ui->IgnoreSlider->value();
pref["MemoryHog"]=ui->memoryHogCheckbox->isChecked();
pref["DaySplitTime"]=ui->timeEdit->time(); pref["DaySplitTime"]=ui->timeEdit->time();
profile->Save();
pref.Save();
} }
void PreferencesDialog::on_memoryHogCheckbox_toggled(bool checked)
{
pref["MemoryHog"]=checked;
}
void PreferencesDialog::on_combineSlider_valueChanged(int position) void PreferencesDialog::on_combineSlider_sliderMoved(int position)
{ {
if (position>0) { if (position>0) {
ui->combineLCD->display(position); ui->combineLCD->display(position);
} else ui->combineLCD->display(tr("OFF")); } else ui->combineLCD->display(tr("OFF"));
pref["CombineCloserSessions"]=position;
} }
void PreferencesDialog::on_IgnoreSlider_valueChanged(int position) void PreferencesDialog::on_IgnoreSlider_sliderMoved(int position)
{ {
if (position>0) { if (position>0) {
ui->IgnoreLCD->display(position); ui->IgnoreLCD->display(position);
} else ui->IgnoreLCD->display(tr("OFF")); } else ui->IgnoreLCD->display(tr("OFF"));
pref["IgnoreShorterSessions"]=position;
} }

View File

@ -9,6 +9,8 @@
#include <QDialog> #include <QDialog>
#include <QModelIndex> #include <QModelIndex>
#include "SleepLib/profiles.h"
namespace Ui { namespace Ui {
class PreferencesDialog; class PreferencesDialog;
} }
@ -20,17 +22,14 @@ class PreferencesDialog : public QDialog
public: public:
explicit PreferencesDialog(QWidget *parent = 0); explicit PreferencesDialog(QWidget *parent = 0);
~PreferencesDialog(); ~PreferencesDialog();
void Save();
protected:
Profile * profile;
private slots: private slots:
void on_eventTable_doubleClicked(const QModelIndex &index); void on_eventTable_doubleClicked(const QModelIndex &index);
void on_combineSlider_sliderMoved(int position);
void on_timeEdit_editingFinished(); void on_IgnoreSlider_sliderMoved(int position);
void on_memoryHogCheckbox_toggled(bool checked);
void on_combineSlider_valueChanged(int value);
void on_IgnoreSlider_valueChanged(int value);
private: private:
Ui::PreferencesDialog *ui; Ui::PreferencesDialog *ui;

View File

@ -9,8 +9,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>501</width> <width>491</width>
<height>292</height> <height>299</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -29,8 +29,272 @@
<item> <item>
<widget class="QTabWidget" name="tabWidget"> <widget class="QTabWidget" name="tabWidget">
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>1</number>
</property> </property>
<widget class="QWidget" name="profileTab">
<attribute name="title">
<string>&amp;Profile</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<layout class="QGridLayout" name="gridLayout_2">
<item row="1" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Address:</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_13">
<property name="text">
<string>Phone:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="phoneEdit"/>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QLineEdit" name="firstNameEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string/>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>First Name:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="emailEdit"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_14">
<property name="text">
<string>Email:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1">
<widget class="QPlainTextEdit" name="addressEdit">
<property name="tabChangesFocus">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0" colspan="2">
<widget class="QLabel" name="label_12">
<property name="text">
<string>Gender:</string>
</property>
</widget>
</item>
<item row="1" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_9">
<item>
<widget class="QRadioButton" name="genderMale">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Male</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="genderFemale">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Female</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>D.O.B.:</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QDateEdit" name="dobEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>You don't have to if you don't want. Some nifty calculations may need it.</string>
</property>
<property name="displayFormat">
<string>d/MM/yyyy</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Height:</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QDoubleSpinBox" name="heightEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Used in BMI calculations</string>
</property>
<property name="minimum">
<double>40.000000000000000</double>
</property>
<property name="maximum">
<double>299.990000000000009</double>
</property>
</widget>
</item>
<item row="0" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_7">
<item>
<widget class="QLineEdit" name="lastNameEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Last Name:</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QComboBox" name="timeZoneCombo">
<item>
<property name="text">
<string>The Moon</string>
</property>
</item>
<item>
<property name="text">
<string>Jupiter</string>
</property>
</item>
<item>
<property name="text">
<string>Ursa Minor</string>
</property>
</item>
<item>
<property name="text">
<string>Yo Momma!</string>
</property>
</item>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_15">
<property name="text">
<string>Time Zone:</string>
</property>
</widget>
</item>
<item row="6" column="2">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="5" column="2">
<widget class="QComboBox" name="unitCombo">
<property name="toolTip">
<string/>
</property>
<item>
<property name="text">
<string>Metric</string>
</property>
</item>
<item>
<property name="text">
<string>Dark Ages</string>
</property>
</item>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_16">
<property name="text">
<string>Unit System:</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab"> <widget class="QWidget" name="tab">
<attribute name="title"> <attribute name="title">
<string>&amp;Sessions</string> <string>&amp;Sessions</string>