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();
profiles[name]=prof;
prof->Set("Username",name);
prof->Set("Realname",realname);
//prof->Set("Realname",realname);
if (!password.isEmpty()) prof->Set("Password",SHA1(password));
prof->Set("DataFolder","{home}/Profiles/{Username}");

View File

@ -381,6 +381,7 @@ void MainWindow::on_action_Preferences_triggered()
PreferencesDialog pd(this);
if (pd.exec()==PreferencesDialog::Accepted) {
qDebug() << "Preferences Accepted";
pd.Save();
}
}
@ -396,7 +397,7 @@ void MainWindow::on_actionEnable_Multithreading_toggled(bool checked)
{
pref["EnableMultithreading"]=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 <QColorDialog>
#include "SleepLib/profiles.h"
#include "preferencesdialog.h"
#include "ui_preferencesdialog.h"
#include "SleepLib/machine_common.h"
@ -11,6 +10,27 @@ PreferencesDialog::PreferencesDialog(QWidget *parent) :
{
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")) {
QTime t=pref["DaySplitTime"].toTime();
ui->timeEdit->setTime(t);
@ -74,6 +94,16 @@ PreferencesDialog::PreferencesDialog(QWidget *parent) :
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();
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) {
ui->combineLCD->display(position);
} 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) {
ui->IgnoreLCD->display(position);
} else ui->IgnoreLCD->display(tr("OFF"));
pref["IgnoreShorterSessions"]=position;
}

View File

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

View File

@ -9,8 +9,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>501</width>
<height>292</height>
<width>491</width>
<height>299</height>
</rect>
</property>
<property name="windowTitle">
@ -29,8 +29,272 @@
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
<number>1</number>
</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">
<attribute name="title">
<string>&amp;Sessions</string>