Go to the documentation of this file.00001 #ifndef EXPORTER_H
00002 #define EXPORTER_H
00003
00004 #include <QDebug>
00005
00006 #include "global.h"
00007 #include "basequerymodel.h"
00008
00009 #include <QValidator>
00010
00014 class FileNameValidator : public QValidator
00015 {
00016 public:
00017 FileNameValidator(QObject *parent = 0);
00018 virtual State validate(QString &input, int &pos) const;
00019 };
00020
00021 #include <QWidget>
00022 class QToolButton;
00023
00027 class DirectoryEdit : public QWidget
00028 {
00029 Q_OBJECT
00030 public:
00031 DirectoryEdit(QWidget *parent = 0);
00032 QString directory();
00033
00034 private slots:
00035 void onDirExplorerButtonPress();
00036 void onEdit();
00037
00038 private:
00039 QLineEdit *editor;
00040 QToolButton *dirExplorerButton;
00041 };
00042
00043 #include <QLineEdit>
00044
00048 class FileNameEdit : public QLineEdit
00049 {
00050 public:
00051 FileNameEdit(const QString &contents, QWidget *parent = 0);
00052 };
00053
00054 #include <QCheckBox>
00055
00059 class CheckBox : public QCheckBox
00060 {
00061 public:
00062 CheckBox(const QString &text, const QVariant &data = QVariant(), QWidget *parent = 0);
00063
00064 void setData(const QVariant &data);
00065 QVariant data();
00066
00067 private:
00068 QVariant m_data;
00069 };
00070
00071 #include <QGroupBox>
00072 #include <QPointer>
00073
00077 class ComboBoxGroup : public QGroupBox
00078 {
00079 Q_OBJECT
00080 public:
00081 ComboBoxGroup(const QString &title, QWidget *parent = 0);
00082 CheckBox *addComboBox(const QString &title, const QVariant &data = QVariant());
00083 void setAutoExclusive(bool exclude);
00084 CheckBox *currentChecked();
00085 virtual void setStandardDelimiters();
00086
00087 protected slots:
00088 void onDelimiterClick();
00089
00090 private:
00091 QList < CheckBox* > boxContainer;
00092 bool autoExclude;
00093 QPointer<CheckBox> lastChecked;
00094 };
00095
00099 class SplitOnGroup : public ComboBoxGroup
00100 {
00101 public:
00102 SplitOnGroup(const QString &title, QWidget *parent = 0);
00103 virtual void setStandardDelimiters();
00104 };
00105
00109 class DelimiterGroup : public ComboBoxGroup
00110 {
00111 Q_OBJECT
00112 public:
00113 DelimiterGroup(const QString &title, QWidget *parent = 0);
00114 virtual void setStandardDelimiters();
00115 };
00116
00117 #include <QTemporaryFile>
00118 #include <QDateTime>
00119 #include <QSharedDataPointer>
00120
00124 class Writer
00125 {
00126 public:
00130 class TemporaryTextFile : public QTemporaryFile {
00131 public:
00132 inline virtual bool open(){return QTemporaryFile::open(QIODevice::ReadWrite | QIODevice::Text);}
00133 };
00134
00135 Writer();
00136 Writer(const Writer &original);
00137 template<class T>
00138 inline Writer & operator<<(const T &t);
00139 inline Writer & operator<<(const QVariant &v);
00140 inline Writer & operator<<(const QDateTime &dt);
00141 const QDateTime &min();
00142 const QDateTime &max();
00143
00144 QString filePath() const;
00145
00146 private:
00147 QDateTime m_min;
00148 QDateTime m_max;
00149 QSharedPointer<TemporaryTextFile> m_file;
00150 QSharedPointer<QTextStream> m_stream;
00151 };
00152
00167 class Exporter : public QWidget
00168 {
00169 Q_OBJECT
00170 public:
00171 Exporter(BaseQueryModel *base, QWidget *parent = 0);
00172 QGridLayout *layout();
00173 virtual void setVisible(bool visible);
00174
00175 protected slots:
00176 void updateButtons();
00177
00178 private:
00179 bool exportModel(const QAbstractItemModel *model, const int datetimeColumn, const QString &destDir, const QString &delimiter = QString(),
00180 const bool &writeHeader = true, const QString &splitOn = QString(), const QString &fileNameTemplate = QString());
00181
00182 private slots:
00183 void onExportButtonPush();
00184
00185 signals:
00186 void busy(bool);
00187
00188 private:
00189 QPushButton *exportButton;
00190 DirectoryEdit *dirEdit;
00191 FileNameEdit *fileNameEdit;
00192 DelimiterGroup *dBox;
00193 SplitOnGroup *soBox;
00194 QCheckBox *exportHeader;
00195 const BaseQueryModel *base;
00196
00197 QTableView *view;
00198 };
00199
00200 #endif // EXPORTER_H