diff --git a/sources/qetapp.cpp b/sources/qetapp.cpp index 7c74fd463..3e2608969 100644 --- a/sources/qetapp.cpp +++ b/sources/qetapp.cpp @@ -59,6 +59,7 @@ RecentFiles *QETApp::m_projects_recent_files = nullptr; RecentFiles *QETApp::m_elements_recent_files = nullptr; TitleBlockTemplate *QETApp::default_titleblock_template_ = nullptr; + /** Constructeur @param argc Nombre d'arguments passes a l'application @@ -455,12 +456,23 @@ QString QETApp::userName() { #endif } + /** - Renvoie le dossier des elements communs, c-a-d le chemin du dossier dans - lequel QET doit chercher les definitions XML des elements de la collection QET. - @return Le chemin du dossier des elements communs -*/ -QString QETApp::commonElementsDir() { + * @brief QETApp::commonElementsDir + * @return the dir path of the common elements collection. + */ +QString QETApp::commonElementsDir() +{ + QSettings settings; + QString path = settings.value("elements-collections/common-collection-path", "default").toString(); + if (path != "default" && !path.isEmpty()) + { + QDir dir(path); + if (dir.exists()) { + return path; + } + } + #ifdef QET_ALLOW_OVERRIDE_CED_OPTION if (common_elements_dir != QString()) return(common_elements_dir); #endif @@ -479,12 +491,21 @@ QString QETApp::commonElementsDir() { } /** - Renvoie le dossier des elements de l'utilisateur, c-a-d le chemin du dossier - dans lequel QET chercher les definitions XML des elements propres a - l'utilisateur. - @return Le chemin du dossier des elements persos -*/ -QString QETApp::customElementsDir() { + * @brief QETApp::customElementsDir + * @return the dir path of user elements collection + */ +QString QETApp::customElementsDir() +{ + QSettings settings; + QString path = settings.value("elements-collections/custom-collection-path", "default").toString(); + if (path != "default" && !path.isEmpty()) + { + QDir dir(path); + if (dir.exists()) { + return path; + } + } + return(configDir() + "elements/"); } diff --git a/sources/ui/configpage/generalconfigurationpage.cpp b/sources/ui/configpage/generalconfigurationpage.cpp index 605276c80..b7e895834 100644 --- a/sources/ui/configpage/generalconfigurationpage.cpp +++ b/sources/ui/configpage/generalconfigurationpage.cpp @@ -61,6 +61,24 @@ GeneralConfigurationPage::GeneralConfigurationPage(QWidget *parent) : ui->m_highlight_integrated_elements->setChecked(settings.value("diagrameditor/highlight-integrated-elements", true).toBool()); ui->m_default_elements_info->setPlainText(settings.value("elementeditor/default-informations", "").toString()); + QString path = settings.value("elements-collections/common-collection-path", "default").toString(); + if (path != "default") + { + ui->m_common_elmt_path_cb->blockSignals(true); + ui->m_common_elmt_path_cb->setCurrentIndex(1); + ui->m_common_elmt_path_cb->setItemData(1, path, Qt::DisplayRole); + ui->m_common_elmt_path_cb->blockSignals(false); + } + + path = settings.value("elements-collections/custom-collection-path", "default").toString(); + if (path != "default") + { + ui->m_custom_elmt_path_cb->blockSignals(true); + ui->m_custom_elmt_path_cb->setCurrentIndex(1); + ui->m_custom_elmt_path_cb->setItemData(1, path, Qt::DisplayRole); + ui->m_custom_elmt_path_cb->blockSignals(false); + } + fillLang(); } @@ -97,6 +115,28 @@ void GeneralConfigurationPage::applyConf() settings.setValue("genericpanel/folio",ui->m_use_folio_label->isChecked()); settings.setValue("nomenclature/terminal-exportlist",ui->m_export_terminal->isChecked()); settings.setValue("diagrameditor/autosave-interval", ui->m_autosave_sb->value()); + + if (ui->m_common_elmt_path_cb->currentIndex() == 1) + { + QString path = ui->m_common_elmt_path_cb->currentText(); + QDir dir(path); + settings.setValue("elements-collections/common-collection-path", + dir.exists() ? path : "default"); + } + else { + settings.setValue("elements-collections/common-collection-path", "default"); + } + + if (ui->m_custom_elmt_path_cb->currentIndex() == 1) + { + QString path = ui->m_custom_elmt_path_cb->currentText(); + QDir dir(path); + settings.setValue("elements-collections/custom-collection-path", + dir.exists() ? path : "default"); + } + else { + settings.setValue("elements-collections/custom-collection-path", "default"); + } } /** @@ -202,3 +242,32 @@ void GeneralConfigurationPage::on_m_folio_list_pb_clicked() ui->m_folio_list_pb->setText(fontInfos); } } + +#include +void GeneralConfigurationPage::on_m_common_elmt_path_cb_currentIndexChanged(int index) +{ + if (index == 1) + { + QString path = QFileDialog::getExistingDirectory(this, tr("Chemin de la collection commune"), QDir::homePath()); + if (!path.isEmpty()) { + ui->m_common_elmt_path_cb->setItemData(1, path, Qt::DisplayRole); + } + else { + ui->m_common_elmt_path_cb->setCurrentIndex(0); + } + } +} + +void GeneralConfigurationPage::on_m_custom_elmt_path_cb_currentIndexChanged(int index) +{ + if (index == 1) + { + QString path = QFileDialog::getExistingDirectory(this, tr("Chemin de la collection utilisateur"), QDir::homePath()); + if (!path.isEmpty()) { + ui->m_custom_elmt_path_cb->setItemData(1, path, Qt::DisplayRole); + } + else { + ui->m_custom_elmt_path_cb->setCurrentIndex(0); + } + } +} diff --git a/sources/ui/configpage/generalconfigurationpage.h b/sources/ui/configpage/generalconfigurationpage.h index 3771cfc38..1b3e958f7 100644 --- a/sources/ui/configpage/generalconfigurationpage.h +++ b/sources/ui/configpage/generalconfigurationpage.h @@ -40,6 +40,8 @@ class GeneralConfigurationPage : public ConfigPage private slots: void on_m_font_pb_clicked(); void on_m_folio_list_pb_clicked(); + void on_m_common_elmt_path_cb_currentIndexChanged(int index); + void on_m_custom_elmt_path_cb_currentIndexChanged(int index); private: void fillLang(); diff --git a/sources/ui/configpage/generalconfigurationpage.ui b/sources/ui/configpage/generalconfigurationpage.ui index d66d8033e..7c78aa492 100644 --- a/sources/ui/configpage/generalconfigurationpage.ui +++ b/sources/ui/configpage/generalconfigurationpage.ui @@ -6,8 +6,8 @@ 0 0 - 916 - 747 + 827 + 779 @@ -44,6 +44,64 @@ + + + + Collections d'éléments + + + + + + Chemin de la collection utilisateur + + + + + + + Chemin de la collection commune + + + + + + + + Par defaut + + + + + Parcourir... + + + + + + + + + Par defaut + + + + + Parcourir... + + + + + + + + (Recharger les collections d'éléments pour appliquer les changements) + + + + + +