OSCAR-code/preferencesdialog.cpp

257 lines
9.4 KiB
C++
Raw Normal View History

2011-08-03 03:09:57 +00:00
#include <QLabel>
#include <QColorDialog>
2011-08-02 22:37:15 +00:00
#include "preferencesdialog.h"
#include "ui_preferencesdialog.h"
2011-08-03 03:09:57 +00:00
#include "SleepLib/machine_common.h"
2011-08-02 22:37:15 +00:00
extern QFont * defaultfont;
extern QFont * mediumfont;
extern QFont * bigfont;
PreferencesDialog::PreferencesDialog(QWidget *parent,Profile * _profile) :
2011-08-02 22:37:15 +00:00
QDialog(parent),
ui(new Ui::PreferencesDialog),
profile(_profile)
2011-08-02 22:37:15 +00:00
{
ui->setupUi(this);
Q_ASSERT(profile!=NULL);
2011-10-02 04:23:17 +00:00
ui->tabWidget->setCurrentIndex(0);
int i=ui->unitCombo->findText((*profile)["UnitSystem"].toString());
if (i<0) i=0;
ui->unitCombo->setCurrentIndex(i);
2011-10-02 04:23:17 +00:00
//i=ui->timeZoneCombo->findText((*profile)["TimeZone"].toString());
//ui->timeZoneCombo->setCurrentIndex(i);
QTime t=(*profile)["DaySplitTime"].toTime();
ui->timeEdit->setTime(t);
int val;
val=(*profile)["CombineCloserSessions"].toInt();
ui->combineSlider->setValue(val);
if (val>0) {
ui->combineLCD->display(val);
} else ui->combineLCD->display(tr("OFF"));
val=(*profile)["IgnoreShorterSessions"].toInt();
ui->IgnoreSlider->setValue(val);
ui->applicationFont->setCurrentFont(QApplication::font());
ui->applicationFontSize->setValue(QApplication::font().pointSize());
ui->applicationFontBold->setChecked(QApplication::font().weight()==QFont::Bold);
ui->applicationFontItalic->setChecked(QApplication::font().italic());
ui->graphFont->setCurrentFont(*defaultfont);
ui->graphFontSize->setValue(defaultfont->pointSize());
ui->graphFontBold->setChecked(defaultfont->weight()==QFont::Bold);
ui->graphFontItalic->setChecked(defaultfont->italic());
ui->titleFont->setCurrentFont(*mediumfont);
ui->titleFontSize->setValue(mediumfont->pointSize());
ui->titleFontBold->setChecked(mediumfont->weight()==QFont::Bold);
ui->titleFontItalic->setChecked(mediumfont->italic());
ui->bigFont->setCurrentFont(*bigfont);
ui->bigFontSize->setValue(bigfont->pointSize());
ui->bigFontBold->setChecked(bigfont->weight()==QFont::Bold);
ui->bigFontItalic->setChecked(bigfont->italic());
if (val>0) {
ui->IgnoreLCD->display(val);
} else ui->IgnoreLCD->display(tr("OFF"));
ui->overlayFlagsCombo->setCurrentIndex((*profile)["AlwaysShowOverlayBars"].toInt());
ui->useAntiAliasing->setChecked((*profile)["UseAntiAliasing"].toBool());
ui->memoryHogCheckbox->setChecked((*profile)["MemoryHog"].toBool());
ui->useGraphSnapshots->setChecked((*profile)["EnableGraphSnapshots"].toBool());
ui->intentionalLeakEdit->setValue((*profile)["IntentionalLeak"].toDouble());
ui->useMultithreading->setChecked((*profile)["EnableMultithreading"].toBool());
2011-08-05 07:52:32 +00:00
2011-08-03 03:09:57 +00:00
ui->eventTable->setColumnWidth(0,40);
ui->eventTable->setColumnWidth(1,55);
ui->eventTable->setColumnHidden(3,true);
2011-08-03 03:09:57 +00:00
int row=0;
QTableWidgetItem *item;
2011-09-17 12:39:00 +00:00
QHash<QString, schema::Channel *>::iterator ci;
for (ci=schema::channel.names.begin();ci!=schema::channel.names.end();ci++) {
if (ci.value()->type()==schema::DATA) {
2011-08-03 03:09:57 +00:00
ui->eventTable->insertRow(row);
int id=ci.value()->id();
ui->eventTable->setItem(row,3,new QTableWidgetItem(QString::number(id)));
2011-09-17 12:39:00 +00:00
item=new QTableWidgetItem(ci.value()->description());
2011-08-03 03:09:57 +00:00
ui->eventTable->setItem(row,2,item);
QCheckBox *c=new QCheckBox(ui->eventTable);
c->setChecked(true);
2011-08-03 03:09:57 +00:00
QLabel *pb=new QLabel(ui->eventTable);
pb->setText("foo");
ui->eventTable->setCellWidget(row,0,c);
ui->eventTable->setCellWidget(row,1,pb);
QColor a=ci.value()->defaultColor();//(rand() % 255, rand() % 255, rand() % 255, 255);
2011-08-03 03:09:57 +00:00
QPalette p(a,a,a,a,a,a,a);
pb->setPalette(p);
pb->setAutoFillBackground(true);
pb->setBackgroundRole(QPalette::Background);
row++;
}
}
2011-10-02 04:23:17 +00:00
/* QLocale locale=QLocale::system();
2011-09-12 05:18:31 +00:00
QString shortformat=locale.dateFormat(QLocale::ShortFormat);
if (!shortformat.toLower().contains("yyyy")) {
shortformat.replace("yy","yyyy");
2011-10-02 04:23:17 +00:00
}*/
2011-10-05 03:05:35 +00:00
QTreeWidget *tree=ui->graphTree;
tree->clear();
tree->setColumnCount(1); // 1 visible common.. (1 hidden)
QTreeWidgetItem *daily=new QTreeWidgetItem((QTreeWidget *)0,QStringList("Daily Graphs"));
QTreeWidgetItem *overview=new QTreeWidgetItem((QTreeWidget *)0,QStringList("Overview Graphs"));
tree->insertTopLevelItem(0,daily);
tree->insertTopLevelItem(0,overview);
QTreeWidgetItem *it=new QTreeWidgetItem(daily,QStringList("Event Flags"));//,QTreeWidgetItem::UserType);
it->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsSelectable|Qt::ItemIsEnabled);
it->setCheckState(0,Qt::Checked);
daily->addChild(it);
//QTreeWidgetItem *root=NULL;//new QTreeWidgetItem((QTreeWidget *)0,QStringList("Stuff"));
//=new QTreeWidgetItem(root,l);
//ui->graphTree->setModel(
tree->sortByColumn(0,Qt::AscendingOrder);
2011-08-03 03:09:57 +00:00
}
2011-08-05 07:52:32 +00:00
2011-08-02 22:37:15 +00:00
PreferencesDialog::~PreferencesDialog()
{
delete ui;
}
2011-08-03 03:09:57 +00:00
void PreferencesDialog::on_eventTable_doubleClicked(const QModelIndex &index)
{
int row=index.row();
int col=index.column();
bool ok;
int id=ui->eventTable->item(row,3)->text().toInt(&ok);
2011-08-03 03:09:57 +00:00
if (col==1) {
QWidget *w=ui->eventTable->cellWidget(row,col);
QColorDialog a;
QColor color=w->palette().background().color();
a.setCurrentColor(color);
if (a.exec()==QColorDialog::Accepted) {
QColor c=a.currentColor();
QPalette p(c,c,c,c,c,c,c);
w->setPalette(p);
m_new_colors[id]=c;
//qDebug() << "Color accepted" << col << id;
2011-08-03 03:09:57 +00:00
}
}
}
2011-08-05 07:52:32 +00:00
void PreferencesDialog::Save()
2011-08-05 07:52:32 +00:00
{
(*profile)["UnitSystem"]=ui->unitCombo->currentText();
2011-10-02 04:23:17 +00:00
//(*profile)["TimeZone"]=ui->timeZoneCombo->currentText();
(*profile)["CombineCloserSessions"]=ui->combineSlider->value();
(*profile)["IgnoreShorterSessions"]=ui->IgnoreSlider->value();
(*profile)["MemoryHog"]=ui->memoryHogCheckbox->isChecked();
(*profile)["DaySplitTime"]=ui->timeEdit->time();
2011-08-05 07:52:32 +00:00
(*profile)["AlwaysShowOverlayBars"]=ui->overlayFlagsCombo->currentIndex();
(*profile)["UseAntiAliasing"]=ui->useAntiAliasing->isChecked();
(*profile)["MemoryHog"]=ui->memoryHogCheckbox->isChecked();
(*profile)["EnableGraphSnapshots"]=ui->useGraphSnapshots->isChecked();
(*profile)["IntentionalLeak"]=ui->intentionalLeakEdit->value();
(*profile)["EnableMultithreading"]=ui->useMultithreading->isChecked();
PREF["FontApplication"]=ui->applicationFont->currentText();
PREF["FontApplicationSize"]=ui->applicationFontSize->value();
PREF["FontApplicationBold"]=ui->applicationFontBold->isChecked();
PREF["FontApplicationItalic"]=ui->applicationFontItalic->isChecked();
PREF["FontGraph"]=ui->graphFont->currentText();
PREF["FontGraphSize"]=ui->graphFontSize->value();
PREF["FontGraphBold"]=ui->graphFontBold->isChecked();
PREF["FontGraphItalic"]=ui->graphFontItalic->isChecked();
PREF["FontTitle"]=ui->titleFont->currentText();
PREF["FontTitleSize"]=ui->titleFontSize->value();
PREF["FontTitleBold"]=ui->titleFontBold->isChecked();
PREF["FontTitleItalic"]=ui->titleFontItalic->isChecked();
PREF["FontBig"]=ui->bigFont->currentText();
PREF["FontBigSize"]=ui->bigFontSize->value();
PREF["FontBigBold"]=ui->bigFontBold->isChecked();
PREF["FontBigItalic"]=ui->bigFontItalic->isChecked();
QFont font=ui->applicationFont->currentFont();
font.setPointSize(ui->applicationFontSize->value());
font.setWeight(ui->applicationFontBold->isChecked()?QFont::Bold : QFont::Normal);
font.setItalic(ui->applicationFontItalic->isChecked());
QApplication::setFont(font);
*defaultfont=ui->graphFont->currentFont();
defaultfont->setWeight(ui->graphFontBold->isChecked()?QFont::Bold : QFont::Normal);
defaultfont->setItalic(ui->graphFontItalic->isChecked());
*mediumfont=ui->titleFont->currentFont();
mediumfont->setWeight(ui->titleFontBold->isChecked()?QFont::Bold : QFont::Normal);
mediumfont->setItalic(ui->titleFontItalic->isChecked());
*bigfont=ui->bigFont->currentFont();
bigfont->setWeight(ui->bigFontBold->isChecked()?QFont::Bold : QFont::Normal);
bigfont->setItalic(ui->bigFontItalic->isChecked());
for (QHash<int,QColor>::iterator i=m_new_colors.begin();i!=m_new_colors.end();i++) {
schema::Channel &chan=schema::channel[i.key()];
if (!chan.isNull()) {
qDebug() << "TODO: Change" << chan.name() << "color to" << i.value();
chan.setDefaultColor(i.value());
}
}
qDebug() << "TODO: Save channels.xml to update channel data";
profile->Save();
PREF.Save();
2011-08-05 07:52:32 +00:00
}
void PreferencesDialog::on_combineSlider_valueChanged(int position)
2011-08-05 07:52:32 +00:00
{
if (position>0) {
ui->combineLCD->display(position);
} else ui->combineLCD->display(tr("OFF"));
}
void PreferencesDialog::on_IgnoreSlider_valueChanged(int position)
2011-08-05 07:52:32 +00:00
{
if (position>0) {
ui->IgnoreLCD->display(position);
} else ui->IgnoreLCD->display(tr("OFF"));
}
void PreferencesDialog::on_applicationFontSize_valueChanged(int arg1)
{
ui->applicationFont->currentFont().setPointSize(arg1);
}
void PreferencesDialog::on_graphFontSize_valueChanged(int arg1)
{
ui->graphFont->currentFont().setPointSize(arg1);
}
void PreferencesDialog::on_titleFontSize_valueChanged(int arg1)
{
ui->titleFont->currentFont().setPointSize(arg1);
}
void PreferencesDialog::on_bigFontSize_valueChanged(int arg1)
{
ui->bigFont->currentFont().setPointSize(arg1);
}