• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

exporter.h

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

Generated on Tue Aug 24 2010 15:58:55 for Smartlet by  doxygen 1.7.1