0
0
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:
Arin Alexander
2019-04-04 04:37:18 +03:00
parent de5cc0e0ca
commit 51b2effa3c
9 changed files with 737 additions and 329 deletions

View File

@@ -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: