#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)");
	    }	    
        }
    }	    
}
