mirror of
https://github.com/fralx/LimeReport.git
synced 2025-11-20 06:30:03 +03:00
Added ability to create CSV data source
This commit is contained in:
@@ -33,6 +33,7 @@
|
||||
#include <QObject>
|
||||
#include <QMap>
|
||||
#include <QAbstractItemModel>
|
||||
#include <QStandardItemModel>
|
||||
#include <QtSql/QSqlQuery>
|
||||
#include <QDebug>
|
||||
#include <QSharedPointer>
|
||||
@@ -131,6 +132,64 @@ public:
|
||||
virtual QString lastError() const = 0;
|
||||
};
|
||||
|
||||
class CSVDesc: public QObject{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QString name READ name WRITE setName)
|
||||
Q_PROPERTY(QString csvText READ csvText WRITE setCsvText)
|
||||
Q_PROPERTY(QString separator READ separator WRITE setSeparator)
|
||||
Q_PROPERTY(bool firstRowIsHeader READ firstRowIsHeader WRITE setFirstRowIsHeader)
|
||||
public:
|
||||
CSVDesc(const QString name, const QString csvText, QString separator, bool firstRowIsHeader)
|
||||
: m_csvName(name), m_csvText(csvText), m_separator(separator), m_firstRowIsHeader(firstRowIsHeader){}
|
||||
explicit CSVDesc(QObject* parent = 0):QObject(parent) {}
|
||||
QString name() const;
|
||||
void setName(const QString &name);
|
||||
QString csvText() const;
|
||||
void setCsvText(const QString &csvText);
|
||||
QString separator() const;
|
||||
void setSeparator(const QString &separator);
|
||||
bool firstRowIsHeader() const;
|
||||
void setFirstRowIsHeader(bool firstRowIsHeader);
|
||||
signals:
|
||||
void cvsTextChanged(const QString& cvsName, const QString& cvsText);
|
||||
private:
|
||||
QString m_csvName;
|
||||
QString m_csvText;
|
||||
QString m_separator;
|
||||
bool m_firstRowIsHeader;
|
||||
};
|
||||
|
||||
class CSVHolder: public IDataSourceHolder{
|
||||
public:
|
||||
CSVHolder(const CSVDesc& desc, DataSourceManager* dataManager);
|
||||
void setCSVText(QString csvText);
|
||||
QString csvText() { return m_csvText;}
|
||||
QString separator() const;
|
||||
void setSeparator(const QString &separator);
|
||||
bool firsRowIsHeader() const;
|
||||
void setFirsRowIsHeader(bool firstRowIsHeader);
|
||||
// IDataSourceHolder interface
|
||||
public:
|
||||
IDataSource *dataSource(IDataSource::DatasourceMode mode = IDataSource::RENDER_MODE);
|
||||
QString lastError() const {return "";}
|
||||
bool isInvalid() const {return false;}
|
||||
bool isOwned() const {return true;}
|
||||
bool isEditable() const {return true;}
|
||||
bool isRemovable() const {return true;}
|
||||
void invalidate(IDataSource::DatasourceMode mode, bool dbWillBeClosed){ updateModel();}
|
||||
void update(){ updateModel(); }
|
||||
void clearErrors(){}
|
||||
private:
|
||||
void updateModel();
|
||||
private:
|
||||
QString m_csvText;
|
||||
QStandardItemModel m_model;
|
||||
QString m_separator;
|
||||
IDataSource::Ptr m_dataSource;
|
||||
DataSourceManager* m_dataManager;
|
||||
bool m_firstRowIsHeader;
|
||||
};
|
||||
|
||||
class QueryDesc : public QObject{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QString queryName READ queryName WRITE setQueryName)
|
||||
@@ -140,11 +199,11 @@ public:
|
||||
QueryDesc(QString queryName, QString queryText, QString connection);
|
||||
explicit QueryDesc(QObject* parent=0):QObject(parent){}
|
||||
void setQueryName(QString value){m_queryName=value;}
|
||||
QString queryName(){return m_queryName;}
|
||||
QString queryName() const {return m_queryName;}
|
||||
void setQueryText(QString value){m_queryText=value; emit queryTextChanged(m_queryName, m_queryText);}
|
||||
QString queryText(){return m_queryText;}
|
||||
QString queryText() const {return m_queryText;}
|
||||
void setConnectionName(QString value){m_connectionName=value;}
|
||||
QString connectionName(){return m_connectionName;}
|
||||
QString connectionName() const {return m_connectionName;}
|
||||
signals:
|
||||
void queryTextChanged(const QString& queryName, const QString& queryText);
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user