0
0
mirror of https://github.com/fralx/LimeReport.git synced 2025-11-07 00:21:24 +03:00

TOC has been added

This commit is contained in:
Arin Alexander
2017-08-18 22:55:29 +03:00
parent 0b0185a7f9
commit 54c5bc65ed
11 changed files with 241 additions and 21 deletions

View File

@@ -49,6 +49,7 @@
#include "base/lrsingleton.h"
#include "lrglobal.h"
#include "lrscriptenginemanagerintf.h"
#include "lrcallbackdatasourceintf.h"
#include "lrcollection.h"
namespace LimeReport{
@@ -56,6 +57,26 @@ namespace LimeReport{
class DataSourceManager;
class BaseDesignIntf;
struct ContentItem {
QString content;
int indent;
int pageNumber;
};
class TableOfContens : public QObject{
Q_OBJECT
public:
~TableOfContens();
void setItem(const QString& content, int pageNumber, int indent = 0);
void clear();
private slots:
void slotOneSlotDS(LimeReport::CallbackInfo info, QVariant &data);
private:
QVector<ContentItem*> m_tableOfContens;
QHash<QString, ContentItem* > m_hash;
};
struct ScriptFunctionDesc{
enum FuncType {Native,Script};
ScriptValueType scriptValue;
@@ -156,7 +177,7 @@ public:
QString getNewDialogName();
void initDialogs();
#endif
void baseDesignIntfToScript(BaseDesignIntf *item);
void baseDesignIntfToScript(const QString& pageName, BaseDesignIntf *item);
void clear();
QString initScript() const;
void setInitScript(const QString& initScript);
@@ -242,7 +263,9 @@ public:
Q_INVOKABLE void setVariable(const QString& name, QVariant value);
Q_INVOKABLE QVariant getVariable(const QString& name);
Q_INVOKABLE QVariant getField(const QString& field);
Q_INVOKABLE QVariant color(const QString& color){ return QColor(color);}
Q_INVOKABLE QVariant color(const QString& color){ return QColor(color);}
Q_INVOKABLE void addTableOfContensItem(const QString& content, int pageNumber, int indent = 0);
Q_INVOKABLE void clearTableOfContens();
#ifdef USE_QJSENGINE
Q_INVOKABLE QFont font(const QString& family, int pointSize = -1, bool bold = false, bool italic = false, bool underLine = false);
#endif
@@ -282,6 +305,8 @@ public:
QString expandDataFields(QString context, ExpandType expandType, QVariant &varValue, QObject* reportItem);
QString expandScripts(QString context, QVariant &varValue, QObject* reportItem);
QVariant evaluateScript(const QString &script);
void addTableOfContensItem(const QString& content, int pageNumber, int indent);
void clearTableOfContens(){ m_tableOfContens->clear(); }
protected:
void updateModel();
@@ -300,6 +325,8 @@ private:
bool createSetVariableFunction();
bool createGetVariableFunction();
bool createGetFieldFunction();
bool createAddTableOfContensItemFunction();
bool createClearTableOfContensFunction();
private:
ScriptEngineManager();
ScriptEngineType* m_scriptEngine;
@@ -309,6 +336,7 @@ private:
ScriptEngineContext* m_context;
DataSourceManager* m_dataManager;
ScriptFunctionsManager* m_functionManager;
TableOfContens* m_tableOfContens;
};
class ScriptExtractor