initial import
[vym] / exportoofiledialog.cpp
diff --git a/exportoofiledialog.cpp b/exportoofiledialog.cpp
new file mode 100644 (file)
index 0000000..b7e26e0
--- /dev/null
@@ -0,0 +1,97 @@
+#include <iostream>
+
+#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==selectedFilter()) return *itpath;
+               itpath++;       
+               itf++;
+    }
+       qWarning ("ExportOOFileDialog::selectedConfig  No filter found!");
+       return "";
+}
+
+void ExportOOFileDialog::newConfigPath(const QString &s)
+{
+       lastFilter=s;
+}
+
+QString ExportOOFileDialog::selectedFile()
+{
+       return QFileDialog::selectedFile();
+}
+
+
+void ExportOOFileDialog::show()
+{
+       setFilters (filters);
+       QFileDialog::show();
+}
+
+void ExportOOFileDialog::init()
+{
+       setMode( QFileDialog::AnyFile );
+       QDir d;
+       d.setPath ("/usr/share/vym/exports");
+       scanExportConfigs(d);
+       d.setPath (d.homeDirPath()+"/.vym/exports");
+       scanExportConfigs(d);
+       d.setPath (d.currentPath()+"/exports");
+       scanExportConfigs(d);
+
+       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.absFilePath());
+                               set.clear();
+                               set.readSettings (fi.absFilePath());
+                               addFilter (set.readEntry(QString("Name")) + " (*.odp)");
+                       }               
+        }
+       }               
+}