19 #ifndef QGSSQLCOMPOSERDIALOG_H 
   20 #define QGSSQLCOMPOSERDIALOG_H 
   22 #include "ui_qgssqlcomposerdialogbase.h" 
   27 #include <QStringList> 
   63         virtual void tableSelected( 
const QString &name ) = 0;
 
   76         virtual bool isValid( 
const QString &sql, QString &errorReason, QString &warningMsg ) = 0;
 
   88       Argument( 
const QString &nameIn = QString(), 
const QString &typeIn = QString() ) : name( nameIn ), type( typeIn ) {}
 
  106       Function( 
const QString &nameIn, 
int args ) : name( nameIn ), minArgs( args ), maxArgs( args ) {}
 
  108       Function( 
const QString &nameIn, 
int minArgs, 
int maxArgsIn ) : name( nameIn ), minArgs( minArgs ), maxArgs( maxArgsIn ) {}
 
  114     explicit QgsSQLComposerDialog( QWidget *parent = 
nullptr, Qt::WindowFlags fl = QgsGuiUtils::ModalDialogFlags );
 
  127     void setSql( 
const QString &sql );
 
  133     void setSubsetString( 
const QString &subsetString )
 override { setSql( subsetString ); }
 
  136     void addTableNames( 
const QStringList &list );
 
  138     void addTableNames( 
const QList<PairNameTitle> &listNameTitle );
 
  140     void addColumnNames( 
const QStringList &list, 
const QString &tableName );
 
  142     void addColumnNames( 
const QList<PairNameType> &list, 
const QString &tableName );
 
  144     void addOperators( 
const QStringList &list );
 
  146     void addSpatialPredicates( 
const QStringList &list );
 
  148     void addSpatialPredicates( 
const QList<Function> &list );
 
  150     void addFunctions( 
const QStringList &list );
 
  152     void addFunctions( 
const QList<Function> &list );
 
  154     void addApis( 
const QStringList &list );
 
  157     void setSupportMultipleTables( 
bool bMultipleTables, 
const QString &mainTypename = QString() );
 
  164     void setTableSelectedCallback( TableSelectedCallback *tableSelectedCallback );
 
  170     void setSQLValidatorCallback( SQLValidatorCallback *sqlValidatorCallback );
 
  173     bool eventFilter( QObject *obj, QEvent *event ) 
override;
 
  176     void accept() 
override;
 
  178     void mTablesCombo_currentIndexChanged( 
int );
 
  179     void mColumnsCombo_currentIndexChanged( 
int );
 
  180     void mSpatialPredicatesCombo_currentIndexChanged( 
int );
 
  181     void mFunctionsCombo_currentIndexChanged( 
int );
 
  182     void mOperatorsCombo_currentIndexChanged( 
int );
 
  183     void mAddJoinButton_clicked();
 
  184     void mRemoveJoinButton_clicked();
 
  185     void mTableJoins_itemSelectionChanged();
 
  188     void buildSQLFromFields();
 
  189     void splitSQLIntoFields();
 
  193     QStringList mApiList;
 
  194     QSet<QString> mAlreadySelectedTables;
 
  195     TableSelectedCallback *mTableSelectedCallback = 
nullptr;
 
  196     SQLValidatorCallback *mSQLValidatorCallback = 
nullptr;
 
  197     QObject *mFocusedObject = 
nullptr;
 
  198     bool mAlreadyModifyingFields = 
false;
 
  199     bool mDistinct = 
false;
 
  201     QMap<QString, QString> mapTableEntryTextToName;
 
  202     QMap<QString, QString> mapColumnEntryTextToName;
 
  203     QMap<QString, QString> mapSpatialPredicateEntryTextToName;
 
  204     QMap<QString, QString> mapFunctionEntryTextToName;
 
  205     QString lastSearchedText;
 
  208     void loadTableColumns( 
const QString &table );
 
  209     void functionCurrentIndexChanged( QComboBox *combo,
 
  210                                       const QMap<QString, QString> &mapEntryTextToName );
 
  211     void getFunctionList( 
const QList<Function> &list,
 
  212                           QStringList &listApi,
 
  213                           QStringList &listCombo,
 
  214                           QMap<QString, QString> &mapEntryTextToName );