1 #include "PathsDialog.hxx"
2 #include "ui_PathsDialog.h"
7 #include "CatalogListModel.hxx"
8 #include "AddCatalogDialog.hxx"
10 #include <Main/options.hxx>
12 PathsDialog::PathsDialog(QWidget *parent, simgear::pkg::RootRef root) :
14 m_ui(new Ui::PathsDialog),
19 m_catalogsModel = new CatalogListModel(this, m_packageRoot);
20 m_ui->catalogsList->setModel(m_catalogsModel);
22 connect(m_ui->addCatalog, &QToolButton::clicked,
23 this, &PathsDialog::onAddCatalog);
24 connect(m_ui->removeCatalog, &QToolButton::clicked,
25 this, &PathsDialog::onRemoveCatalog);
27 connect(m_ui->addSceneryPath, &QToolButton::clicked,
28 this, &PathsDialog::onAddSceneryPath);
29 connect(m_ui->removeSceneryPath, &QToolButton::clicked,
30 this, &PathsDialog::onRemoveSceneryPath);
32 connect(m_ui->addAircraftPath, &QToolButton::clicked,
33 this, &PathsDialog::onAddAircraftPath);
34 connect(m_ui->removeAircraftPath, &QToolButton::clicked,
35 this, &PathsDialog::onRemoveAircraftPath);
37 connect(m_ui->changeDownloadDir, &QPushButton::clicked,
38 this, &PathsDialog::onChangeDownloadDir);
40 connect(m_ui->clearDownloadDir, &QPushButton::clicked,
41 this, &PathsDialog::onClearDownloadDir);
45 QStringList sceneryPaths = settings.value("scenery-paths").toStringList();
46 m_ui->sceneryPathsList->addItems(sceneryPaths);
48 QStringList aircraftPaths = settings.value("aircraft-paths").toStringList();
49 m_ui->aircraftPathsList->addItems(aircraftPaths);
51 QVariant downloadDir = settings.value("download-dir");
52 if (downloadDir.isValid()) {
53 m_downloadDir = downloadDir.toString();
59 PathsDialog::~PathsDialog()
64 void PathsDialog::accept()
68 for (int i=0; i<m_ui->sceneryPathsList->count(); ++i) {
69 paths.append(m_ui->sceneryPathsList->item(i)->text());
72 settings.setValue("scenery-paths", paths);
75 for (int i=0; i<m_ui->aircraftPathsList->count(); ++i) {
76 paths.append(m_ui->aircraftPathsList->item(i)->text());
79 settings.setValue("aircraft-paths", paths);
81 if (m_downloadDir.isEmpty()) {
82 settings.remove("download-dir");
84 settings.setValue("download-dir", m_downloadDir);
90 void PathsDialog::onAddSceneryPath()
92 QString path = QFileDialog::getExistingDirectory(this, tr("Choose scenery folder"));
93 if (!path.isEmpty()) {
94 m_ui->sceneryPathsList->addItem(path);
98 void PathsDialog::onRemoveSceneryPath()
100 if (m_ui->sceneryPathsList->currentItem()) {
101 delete m_ui->sceneryPathsList->currentItem();
105 void PathsDialog::onAddAircraftPath()
107 QString path = QFileDialog::getExistingDirectory(this, tr("Choose aircraft folder"));
108 if (!path.isEmpty()) {
109 m_ui->aircraftPathsList->addItem(path);
113 void PathsDialog::onRemoveAircraftPath()
115 if (m_ui->aircraftPathsList->currentItem()) {
116 delete m_ui->aircraftPathsList->currentItem();
120 void PathsDialog::onAddCatalog()
122 AddCatalogDialog* dlg = new AddCatalogDialog(this, m_packageRoot);
124 if (dlg->result() == QDialog::Accepted) {
125 m_catalogsModel->refresh();
129 void PathsDialog::onRemoveCatalog()
134 void PathsDialog::onChangeDownloadDir()
136 QString path = QFileDialog::getExistingDirectory(this,
137 tr("Choose downloads folder"),
139 if (!path.isEmpty()) {
140 m_downloadDir = path;
145 void PathsDialog::onClearDownloadDir()
147 // does this need an 'are you sure'?
148 m_downloadDir.clear();
152 void PathsDialog::updateUi()
154 QString s = m_downloadDir;
156 s = QString::fromStdString(flightgear::defaultDownloadDir());
157 s.append(tr(" (default)"));
158 m_ui->clearDownloadDir->setEnabled(false);
160 m_ui->clearDownloadDir->setEnabled(true);
163 QString m = tr("Download location: %1").arg(s);
164 m_ui->downloadLocation->setText(m);