X-Git-Url: https://git.sven.stormbind.net/?a=blobdiff_plain;f=src%2Fexportoofiledialog.cpp;fp=src%2Fexportoofiledialog.cpp;h=b7e0f35316b025d5af2b787e02897d7df6872e97;hb=d483bd8e6523c23c6f1d8908a2e0611c2bc9ff4f;hp=0000000000000000000000000000000000000000;hpb=7dfa3fe589d1722d49681f42cdb0bf1e6efb5223;p=sven%2Fvym.git diff --git a/src/exportoofiledialog.cpp b/src/exportoofiledialog.cpp new file mode 100644 index 0000000..b7e0f35 --- /dev/null +++ b/src/exportoofiledialog.cpp @@ -0,0 +1,78 @@ +#include "exportoofiledialog.h" + +ExportOOFileDialog::ExportOOFileDialog() : QFileDialog() { init(); } + +ExportOOFileDialog::ExportOOFileDialog(QWidget *parent, const QString &caption) + : QFileDialog(parent, caption) +{ + init(); +} + +bool ExportOOFileDialog::foundConfig() { return !filters.isEmpty(); } + +QString ExportOOFileDialog::selectedConfig() +{ + QStringList::Iterator itpath = configPaths.begin(); + QStringList::Iterator itf = filters.begin(); + while (itf != filters.end()) { + if (*itf == selectedNameFilter()) + return *itpath; + itpath++; + itf++; + } + qWarning("ExportOOFileDialog::selectedConfig No filter found!"); + return ""; +} + +void ExportOOFileDialog::newConfigPath(const QString &s) { lastFilter = s; } + +void ExportOOFileDialog::show() +{ + setNameFilters(filters); + QFileDialog::show(); +} + +void ExportOOFileDialog::init() +{ + setFileMode(QFileDialog::AnyFile); + QDir d; + d.setPath("/usr/share/vym/exports"); + scanExportConfigs(d); + d.setPath(d.homePath() + "/.vym/exports"); + scanExportConfigs(d); + d.setPath(d.currentPath() + "/exports"); + scanExportConfigs(d); + + setNameFilters(filters); + connect(this, SIGNAL(filterSelected(const QString &)), this, + SLOT(newConfigPath(const QString &))); +} + +void ExportOOFileDialog::addFilter(const QString &f) +{ + lastFilter = f; + filters.append(f); +} + +void ExportOOFileDialog::scanExportConfigs(QDir dir) +{ + // Scan existing export configurations + SimpleSettings set; + QFile f; + if (dir.exists()) { + // Traverse files + dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); + + QFileInfoList list = dir.entryInfoList(); + for (int i = 0; i < list.size(); ++i) { + QFileInfo fi = list.at(i); + + if (fi.fileName().endsWith(".conf")) { + configPaths.append(fi.absoluteFilePath()); + set.clear(); + set.readSettings(fi.absoluteFilePath()); + addFilter(set.value(QString("Name")) + " (*.odp)"); + } + } + } +}