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