-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathnsropenfiledialog.cpp
105 lines (87 loc) · 2.58 KB
/
nsropenfiledialog.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
/*
* Copyright (C) 2011-2015 Alexander Saprykin <[email protected]>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "nsropenfiledialog.h"
#include "ui_nsropenfiledialog.h"
#include "nsrlanguage.h"
#include <QPainter>
NSROpenFileDialog::NSROpenFileDialog (QWidget *parent) :
QWidget (parent),
ui (new Ui::NSROpenFileDialog)
{
const NSRLanguageData *lang = NSRLanguage::instance()->getLanguage ();
ui->setupUi (this);
_model = new NSRDirModel (this);
_model->setRootPath (QDir::homePath ());
connect (ui->treeView, SIGNAL (clicked (QModelIndex)),
this, SLOT (onItemClicked (QModelIndex)));
connect (_model, SIGNAL (currentPathChanged (QString)),
this, SLOT (onDirChanged (QString)));
connect (_model, SIGNAL (fileSelected ()),
this, SLOT (onFileSelected ()));
ui->treeView->setIconSize (QSize (24, 24));
ui->treeView->setRootIsDecorated (false);
ui->treeView->setModel (_model);
ui->pathLabel->setText (_model->getCurrentPath ());
ui->cancelButton->setText (lang->mainCancel);
}
NSROpenFileDialog::~NSROpenFileDialog ()
{
delete ui;
}
void NSROpenFileDialog::setRootPath (const QString &path)
{
_model->setRootPath (path);
}
void NSROpenFileDialog::setNameFilters (const QStringList &filters)
{
_model->setNameFilters (filters);
}
void NSROpenFileDialog::execDialog ()
{
show ();
_loop.exec ();
close ();
}
QString NSROpenFileDialog::getSelectedFile () const
{
return _model->getSelectedFile ();
}
void NSROpenFileDialog::paintEvent (QPaintEvent *ev)
{
Q_UNUSED (ev);
QStyleOption opt;
opt.init (this);
QPainter p (this);
style()->drawPrimitive (QStyle::PE_Widget, &opt, &p, this);
}
void NSROpenFileDialog::onItemClicked (const QModelIndex &index)
{
_model->itemClicked (index);
}
void NSROpenFileDialog::onFileSelected ()
{
_loop.quit ();
}
void NSROpenFileDialog::onDirChanged (const QString &dir)
{
ui->pathLabel->setText (dir);
}
void NSROpenFileDialog::on_cancelButton_clicked ()
{
_loop.quit ();
}