on textchange update the actions

This commit is contained in:
David Signer 2019-08-20 13:48:55 +02:00
parent e44b34cfc1
commit 32ebab2c9c
6 changed files with 98 additions and 2 deletions

View File

@ -69,6 +69,23 @@ Appends a list of expressions to the existing list
%Docstring
Returns the list of named expressions
:param tag: some content, maybe scope where to be shown
%End
QgsStoredExpression storedExpression( const QUuid &id, const QString &tag = QString() );
%Docstring
Returns an expression according to the id
:param id: id of the expression as identification
:param tag: some content, maybe scope where to be shown
%End
QgsStoredExpression findStoredExpressionByExpression( const QString &expression, const QString &tag = QString() );
%Docstring
Returns an expression according to the expression text
:param expression: id of the expression as identification
:param tag: some content, maybe scope where to be shown
%End

View File

@ -198,6 +198,8 @@ QgsAttributeTableDialog::QgsAttributeTableDialog( QgsVectorLayer *layer, QgsAttr
// Set button to store or delete stored filter expressions
mStoreFilterExpressionButton->setDefaultAction( mActionHandleStoreFilterExpression );
connect( mActionSaveAsStoredFilterExpression, &QAction::triggered, this, &QgsAttributeTableDialog::saveAsStoredFilterExpression );
connect( mActionEditStoredFilterExpression, &QAction::triggered, this, &QgsAttributeTableDialog::editStoredFilterExpression );
connect( mActionHandleStoreFilterExpression, &QAction::toggled, this, &QgsAttributeTableDialog::handleStoreFilterExpression );
mApplyFilterButton->setDefaultAction( mActionApplyFilter );
mActionFeatureActions = new QToolButton();
@ -218,7 +220,7 @@ QgsAttributeTableDialog::QgsAttributeTableDialog( QgsVectorLayer *layer, QgsAttr
connect( mFilterActionMapper, SIGNAL( mapped( QObject * ) ), SLOT( filterColumnChanged( QObject * ) ) );
connect( mFilterQuery, &QLineEdit::returnPressed, this, &QgsAttributeTableDialog::filterQueryAccepted );
connect( mActionApplyFilter, &QAction::triggered, this, &QgsAttributeTableDialog::filterQueryAccepted );
connect( mActionHandleStoreFilterExpression, &QAction::toggled, this, &QgsAttributeTableDialog::handleStoreFilterExpression );
connect( mFilterQuery, &QLineEdit::textChanged, this, &QgsAttributeTableDialog::updateCurrentStoredFilterExpression );
connect( mActionSetStyles, &QAction::triggered, this, &QgsAttributeTableDialog::openConditionalStyles );
// info from layer to table
@ -507,6 +509,7 @@ void QgsAttributeTableDialog::storeExpressionButtonInit()
mActionHandleStoreFilterExpression->setText( tr( "Delete Stored Expression" ) );
mActionHandleStoreFilterExpression->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "mActionHandleStoreFilterExpressionChecked.svg" ) ) );
mStoreFilterExpressionButton->removeAction( mActionSaveAsStoredFilterExpression );
mStoreFilterExpressionButton->addAction( mActionEditStoredFilterExpression );
}
else
{
@ -514,6 +517,7 @@ void QgsAttributeTableDialog::storeExpressionButtonInit()
mActionHandleStoreFilterExpression->setText( tr( "Save Expression" ) );
mActionHandleStoreFilterExpression->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "mActionHandleStoreFilterExpressionUnchecked.svg" ) ) );
mStoreFilterExpressionButton->addAction( mActionSaveAsStoredFilterExpression );
mStoreFilterExpressionButton->removeAction( mActionEditStoredFilterExpression );
}
}
@ -1127,7 +1131,7 @@ void QgsAttributeTableDialog::handleStoreFilterExpression()
if ( !mActionHandleStoreFilterExpression->isChecked() )
{
//care for deleting by name
mLayer->storedExpressions()->removeStoredExpression( mFilterQuery->text() );
mLayer->storedExpressions()->removeStoredExpression( mActionHandleStoreFilterExpression->data().toUuid() );
qDebug() << "changed to unchecked, here we would delete it...";
}
else
@ -1140,6 +1144,22 @@ void QgsAttributeTableDialog::handleStoreFilterExpression()
storedFilterExpressionBoxInit();
}
void QgsAttributeTableDialog::updateCurrentStoredFilterExpression( const QString &value )
{
//dave make time thingy because this is emmited on every tipe
QgsStoredExpression currentStoredExpression = mLayer->storedExpressions()->findStoredExpressionByExpression( value );
if ( !currentStoredExpression.id.isNull() )
{
mActionHandleStoreFilterExpression->setChecked( true );
}
else
{
mActionHandleStoreFilterExpression->setChecked( false );
}
mActionHandleStoreFilterExpression->setData( currentStoredExpression.id );
mActionEditStoredFilterExpression->setData( currentStoredExpression.id );
}
void QgsAttributeTableDialog::setFilterExpression( const QString &filterString, QgsAttributeForm::FilterType type,
bool alwaysShowFilter )
{

View File

@ -182,6 +182,7 @@ class APP_EXPORT QgsAttributeTableDialog : public QDialog, private Ui::QgsAttrib
void saveAsStoredFilterExpression();
void editStoredFilterExpression();
void handleStoreFilterExpression();
void updateCurrentStoredFilterExpression( const QString &value );
void openConditionalStyles();

View File

@ -31,6 +31,7 @@ QUuid QgsStoredExpressionManager::addStoredExpression( const QString &name, cons
QgsStoredExpression storedExpression; //( name, expression );
storedExpression.id = QUuid::createUuid();
storedExpression.name = name;
storedExpression.expression = expression;
@ -69,6 +70,34 @@ QList< QgsStoredExpression > QgsStoredExpressionManager::storedExpressions( cons
return mStoredExpressions;
}
QgsStoredExpression QgsStoredExpressionManager::storedExpression( const QUuid &id, const QString &tag )
{
Q_UNUSED( tag );
for ( const QgsStoredExpression &storedExpression : mStoredExpressions )
{
if ( storedExpression.id == id )
{
return storedExpression;
}
}
return QgsStoredExpression();
}
QgsStoredExpression QgsStoredExpressionManager::findStoredExpressionByExpression( const QString &expression, const QString &tag )
{
Q_UNUSED( tag );
for ( const QgsStoredExpression &storedExpression : mStoredExpressions )
{
if ( storedExpression.expression == expression )
{
return storedExpression;
}
}
return QgsStoredExpression();
}
void QgsStoredExpressionManager::clearStoredExpressions()
{
mStoredExpressions.clear();

View File

@ -106,6 +106,23 @@ class CORE_EXPORT QgsStoredExpressionManager : public QObject
*/
QList< QgsStoredExpression > storedExpressions( const QString &tag = QString() );
/**
* Returns an expression according to the id
*
* \param id id of the expression as identification
* \param tag some content, maybe scope where to be shown
*/
QgsStoredExpression storedExpression( const QUuid &id, const QString &tag = QString() );
/**
* Returns an expression according to the expression text
*
* \param expression id of the expression as identification
* \param tag some content, maybe scope where to be shown
*/
QgsStoredExpression findStoredExpressionByExpression( const QString &expression, const QString &tag = QString() );
//! clears list of stored expressions
void clearStoredExpressions();

View File

@ -701,6 +701,18 @@
<string>Save expression under defined name</string>
</property>
</action>
<action name="mActionEditStoredFilterExpression">
<property name="icon">
<iconset resource="../../images/images.qrc">
<normaloff>:/images/themes/default/mActionHandleStoreFilterExpressionChecked.svg</normaloff>:/images/themes/default/mActionHandleStoreFilterExpressionChecked.svg</iconset>
</property>
<property name="text">
<string>Edit Expression</string>
</property>
<property name="toolTip">
<string>Edit the expression (change name or content)</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>