yacreader/YACReaderLibrary/options_dialog.cpp
2012-07-14 09:56:50 +02:00

149 lines
3.9 KiB
C++

#include "options_dialog.h"
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QFileDialog>
#include <QGroupBox>
#include <QRadioButton>
#include <QTextStream>
#include <QCoreApplication>
#include <QFile>
#include <QMessageBox>
PictureFlow::FlowType flowType = PictureFlow::Strip;
OptionsDialog::OptionsDialog(QWidget * parent)
:QDialog()
{
QVBoxLayout * layout = new QVBoxLayout(this);
accept = new QPushButton(tr("Save"));
cancel = new QPushButton(tr("Cancel"));
connect(accept,SIGNAL(clicked()),this,SLOT(saveOptions()));
connect(cancel,SIGNAL(clicked()),this,SLOT(restoreOptions()));
connect(cancel,SIGNAL(clicked()),this,SLOT(close()));
QGroupBox *groupBox = new QGroupBox(tr("How to show covers:"));
radio1 = new QRadioButton(tr("CoverFlow look"));
radio2 = new QRadioButton(tr("Stripe look"));
radio3 = new QRadioButton(tr("Overlapped Stripe look"));
QVBoxLayout *vbox = new QVBoxLayout;
QHBoxLayout * opt1 = new QHBoxLayout;
opt1->addWidget(radio1);
QLabel * lOpt1 = new QLabel();
lOpt1->setPixmap(QPixmap(":/images/flow1.png"));
opt1->addStretch();
opt1->addWidget(lOpt1);
vbox->addLayout(opt1);
QHBoxLayout * opt2 = new QHBoxLayout;
opt2->addWidget(radio2);
QLabel * lOpt2 = new QLabel();
lOpt2->setPixmap(QPixmap(":/images/flow2.png"));
opt2->addStretch();
opt2->addWidget(lOpt2);
vbox->addLayout(opt2);
QHBoxLayout * opt3 = new QHBoxLayout;
opt3->addWidget(radio3);
QLabel * lOpt3 = new QLabel();
lOpt3->setPixmap(QPixmap(":/images/flow3.png"));
opt3->addStretch();
opt3->addWidget(lOpt3);
vbox->addLayout(opt3);
//vbox->addStretch(1);
groupBox->setLayout(vbox);
QHBoxLayout * buttons = new QHBoxLayout();
buttons->addStretch();
buttons->addWidget(accept);
buttons->addWidget(cancel);
layout->addWidget(groupBox);
layout->addLayout(buttons);
setLayout(layout);
restoreOptions(); //load options
resize(200,0);
setModal (true);
setWindowTitle("Options");
}
void OptionsDialog::findFolder()
{
QString s = QFileDialog::getExistingDirectory(0,tr("Comics directory"),".");
if(!s.isEmpty())
{
pathEdit->setText(s);
}
}
void OptionsDialog::saveOptions()
{
QFile f(QCoreApplication::applicationDirPath()+"/YACReaderLibrary.conf");
if(!f.open(QIODevice::WriteOnly))
{
QMessageBox::critical(NULL,tr("Saving config file...."),tr("There was a problem saving YACReaderLibrary configuration. Please, check if you have enough permissions in the YACReader root folder."));
}
else
{
QTextStream txtS(&f);
if(radio1->isChecked())
{
txtS << "FLOW_TYPE" << "\n" << (int)PictureFlow::CoverFlowLike << "\n";
flowType = PictureFlow::CoverFlowLike;
}
if(radio2->isChecked())
{
txtS << "FLOW_TYPE" << "\n" << (int)PictureFlow::Strip << "\n";
flowType = PictureFlow::Strip;
}
if(radio3->isChecked())
{
txtS << "FLOW_TYPE" << "\n" << (int)PictureFlow::StripOverlapped << "\n";
flowType = PictureFlow::StripOverlapped;
}
f.close();
close();
emit(optionsChanged());
}
}
void OptionsDialog::restoreOptions()
{
QFile f(QCoreApplication::applicationDirPath()+"/YACReaderLibrary.conf");
if(f.exists())
{
f.open(QIODevice::ReadOnly);
QTextStream txtS(&f);
QString content = txtS.readAll();
QStringList lines = content.split('\n');
if(lines.count()>0){
QString name = lines.at(1);
switch(flowType=(PictureFlow::FlowType)name.toInt()){
case PictureFlow::CoverFlowLike:
radio1->setChecked(true);
break;
case PictureFlow::Strip:
radio2->setChecked(true);
break;
case PictureFlow::StripOverlapped:
radio3->setChecked(true);
break;
}
}
else
flowType=PictureFlow::Strip;
}
else
flowType=PictureFlow::Strip;
}