forked from lindenle/QTpapers
/
PrefDialog.cpp
executable file
·115 lines (101 loc) · 3.58 KB
/
PrefDialog.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include "PrefDialog.h"
#include <QHBoxLayout>
#include <QFileDialog>
#include <QProcess>
#include <QSettings>
PrefDialog::PrefDialog(QWidget * parent, QString extra_text) :
QDialog(parent),
_stdout(stdout)
{
setFixedWidth(500.);
QString my_text(" - ");
my_text+=extra_text;
if ( extra_text != "" )
setWindowTitle(tr("Modify Preferences%1").arg(my_text));
else
setWindowTitle(tr("Modify Preferences"));
_viewer = new QLabel(tr("PDF Viewer"));
_viewer_edit = new QLineEdit("",this);
_viewer->setBuddy(_viewer_edit);
_search_viewer = new QPushButton(tr("Search"));
_converter = new QLabel(tr("PDF Converter"));
_converter_edit = new QLineEdit("",this);
_converter->setBuddy(_converter_edit);
_search_converter = new QPushButton(tr("Search"));
// a way to map the signals
_mapper = new QSignalMapper(this);
_mapper->setMapping(_search_viewer,"viewer");
_mapper->setMapping(_search_converter,"converter");
connect(_search_viewer, SIGNAL( clicked() ), _mapper, SLOT( map() ) );
connect(_search_converter, SIGNAL( clicked() ), _mapper, SLOT( map() ) );
connect(_mapper,SIGNAL( mapped( QString ) ), this, SLOT( open_search( QString) ) );
QSettings settings("LindenLevy", "QtPapers");
//read back in the settings
settings.beginGroup("Collection Preferences");
_viewer_edit->setText( settings.value("PDF Viewer").toString());
_converter_edit->setText( settings.value("PDF Converter").toString());
settings.endGroup();
QWidget * viewer = new QWidget;
QHBoxLayout * viewer_layout = new QHBoxLayout;
viewer_layout->addWidget( _viewer);
viewer_layout->addWidget( _viewer_edit);
viewer_layout->addWidget( _search_viewer);
viewer->setLayout(viewer_layout);
QWidget * converter = new QWidget;
QHBoxLayout * converter_layout = new QHBoxLayout;
converter_layout->addWidget( _converter);
converter_layout->addWidget( _converter_edit);
converter_layout->addWidget( _search_converter);
converter->setLayout(converter_layout);
QWidget * buttons = new QWidget;
_ok = new QPushButton(tr("OK"));
connect(_ok, SIGNAL(clicked()), this, SLOT(ok_clicked()));
_cancel = new QPushButton(tr("CANCEL"));
connect(_cancel, SIGNAL(clicked()), this, SLOT(reject()));
QHBoxLayout * bottom_buttons = new QHBoxLayout;
bottom_buttons->addWidget(_ok);
bottom_buttons->addWidget(_cancel);
buttons->setLayout(bottom_buttons);
_topdown = new QVBoxLayout();
_topdown->addWidget(viewer);
_topdown->addWidget(converter);
_topdown->addWidget(buttons);
setLayout(_topdown);
//here we need to set some signals
}
void PrefDialog::ok_clicked()
{
//store the new settings into
QSettings settings("LindenLevy", "QtPapers");
settings.beginGroup("Collection Preferences");
if ( _viewer_edit->text() != "" )
{
QDir viewer_directory(_viewer_edit->text());
settings.setValue("PDF Viewer", viewer_directory.absolutePath());
}
if ( _converter_edit->text() != "" )
{
QDir converter_directory(_converter_edit->text());
settings.setValue("PDF Converter", converter_directory.absolutePath());
}
settings.endGroup();
close();
}
void PrefDialog::open_search(QString who)
{
QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setViewMode(QFileDialog::Detail);
dialog.hasFocus();
dialog.show();
QStringList fileNames;
if (dialog.exec())
{
fileNames = dialog.selectedFiles();
// need to know who called me so I can set the value in the correct box
if ( who == "converter" )
_converter_edit->setText(fileNames.at(0));
else
_viewer_edit->setText(fileNames.at(0));
}
}