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