00001 #ifndef QSEDATAEXPORT_H
00002 #define QSEDATAEXPORT_H
00003
00004 #include <QList>
00005 #include <QFlags>
00006 #include <QDir>
00007 #include <QDirModel>
00008 #include "qsedataset.h"
00009
00010 #include "ui_qsedataexport.h"
00011
00012 class QseDataExportPreview;
00013 class QseDataExportPreviewUI;
00014
00015 class QseDataExport : public QDialog
00016 {
00017 Q_OBJECT;
00018
00019 public:
00020 QseDataExport(const QString &id, QseDataSet *data, QList<int> selections, QWidget *parent=0);
00021
00022 public:
00023 static void exportSelectedData(const QString &id, QseDataSet *data, QList<int> selections);
00024
00025 enum Option {
00026 NoOptions = 0,
00027 SaveHeader = 0x01,
00028 BriefHeader = 0x02,
00029 SingleFile = 0x04,
00030 FileHeaderInEach = 0x08,
00031 ColumnHeaderLine = 0x10,
00032 AutoRename = 0x20
00033 };
00034 Q_DECLARE_FLAGS(Options, Option);
00035
00036 signals:
00037 void dataChanged();
00038
00039 private slots:
00040 void newDirectory();
00041 void upDirectory();
00042 void homeDirectory();
00043 void directoryChanged(const QModelIndex& index);
00044 void directoryChanged(const QString& newdir);
00045 void scanSelectAll();
00046 void scanSelectNone();
00047 void scanRevert();
00048
00049 void exportPressed();
00050 void cancelPressed();
00051 void previewPressed();
00052 void newOutputPattern(const QString &patt);
00053 void saveHeaderOptionChanged(bool opt);
00054 void briefHeaderOptionChanged(bool opt);
00055 void singleFileOptionChanged(bool opt);
00056 void fileHeaderInEachOptionChanged(bool opt);
00057 void columnHeaderLineOptionChanged(bool opt);
00058 void autoRenameOptionChanged(bool opt);
00059
00060 private:
00061 void setupConnections();
00062 void updateNewDirectory();
00063
00064 void readSettings();
00065 void writeSettings();
00066
00067 QList<int> selectedScans() const;
00068 bool checkForOverwriting();
00069 QString substituteFilenamePatterns(const QString &patt, int index, const QseDataSet *ds);
00070
00071 void autoRenameFiles();
00072 void updatePreview();
00073 void writePreview();
00074
00075 private:
00076 Ui::QseDataExport ui;
00077 QString m_Identifier;
00078 QList<int> m_Selections;
00079 QseDataSet *m_DataSet;
00080 int m_Options;
00081 QDir m_OutputDir;
00082 QString m_OutputPattern;
00083 QDirModel m_DirModel;
00084 QPushButton *m_PreviewButton;
00085 QseDataExportPreview *m_Preview;
00086 QseDataExportPreviewUI *m_PreviewUI;
00087 };
00088
00089 Q_DECLARE_OPERATORS_FOR_FLAGS(QseDataExport::Options);
00090
00091 #endif