]> git.sven.stormbind.net Git - sven/vym.git/blob - src/exportoofiledialog.cpp
Replace Pierre as the maintainer
[sven/vym.git] / src / exportoofiledialog.cpp
1 #include "exportoofiledialog.h"
2
3 extern QDir vymBaseDir;
4
5 ExportOOFileDialog::ExportOOFileDialog() : QFileDialog() { init(); }
6
7 ExportOOFileDialog::ExportOOFileDialog(QWidget *parent, const QString &caption)
8     : QFileDialog(parent, caption)
9 {
10     init();
11 }
12
13 bool ExportOOFileDialog::foundConfig() { return !filters.isEmpty(); }
14
15 QString ExportOOFileDialog::selectedConfig()
16 {
17     QStringList::Iterator itpath = configPaths.begin();
18     QStringList::Iterator itf = filters.begin();
19     while (itf != filters.end()) {
20         if (*itf == selectedNameFilter())
21             return *itpath;
22         itpath++;
23         itf++;
24     }
25     qWarning("ExportOOFileDialog::selectedConfig  No filter found!");
26     return "";
27 }
28
29 void ExportOOFileDialog::newConfigPath(const QString &s) { lastFilter = s; }
30
31 void ExportOOFileDialog::show()
32 {
33     setNameFilters(filters);
34     QFileDialog::show();
35 }
36
37 void ExportOOFileDialog::init()
38 {
39     setFileMode(QFileDialog::AnyFile);
40     QDir d = vymBaseDir;
41     d.cd("exports");
42     scanExportConfigs(d);
43     d.setPath(d.homePath() + "/.vym/exports");
44     scanExportConfigs(d);
45     d.setPath(d.currentPath() + "/exports");
46     scanExportConfigs(d);
47
48     setNameFilters(filters);
49     connect(this, SIGNAL(filterSelected(const QString &)), this,
50             SLOT(newConfigPath(const QString &)));
51 }
52
53 void ExportOOFileDialog::addFilter(const QString &f)
54 {
55     lastFilter = f;
56     filters.append(f);
57 }
58
59 void ExportOOFileDialog::scanExportConfigs(QDir dir)
60 {
61     // Scan existing export configurations
62     SimpleSettings set;
63     QFile f;
64     if (dir.exists()) {
65         // Traverse files
66         dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
67
68         QFileInfoList list = dir.entryInfoList();
69         for (int i = 0; i < list.size(); ++i) {
70             QFileInfo fi = list.at(i);
71
72             if (fi.fileName().endsWith(".conf")) {
73                 configPaths.append(fi.absoluteFilePath());
74                 set.clear();
75                 set.readSettings(fi.absoluteFilePath());
76                 addFilter(set.value(QString("Name")) + " (*.odp)");
77             }
78         }
79     }
80 }