Skip to content

Commit

Permalink
evaluating alias and editable expressions
Browse files Browse the repository at this point in the history
  • Loading branch information
VitorVieiraZ committed Oct 17, 2024
1 parent 8579949 commit 5a9e8c0
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 23 deletions.
50 changes: 50 additions & 0 deletions app/attributes/attributecontroller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -919,6 +919,56 @@ void AttributeController::recalculateDerivedItems( bool isFormValueChange, bool
}
}

// Evaluate form items editability
{
QMap<QUuid, std::shared_ptr<FormItem>>::iterator formItemsIterator = mFormItems.begin();
while ( formItemsIterator != mFormItems.end() )
{
std::shared_ptr<FormItem> item = formItemsIterator.value();
bool editable = item->isEditable();
QgsExpression exp = item->editableExpression();
exp.prepare( &expressionContext );

if ( exp.isValid() )
{
editable = exp.evaluate( &expressionContext ).toInt();
}

if ( item->isEditable() != editable )
{
item->setEditable( editable );
changedFormItems << item->id();
}

++formItemsIterator;
}
}

// Evaluate form items alias/name
{
QMap<QUuid, std::shared_ptr<FormItem>>::iterator formItemsIterator = mFormItems.begin();
while ( formItemsIterator != mFormItems.end() )
{
std::shared_ptr<FormItem> item = formItemsIterator.value();
QString name = item->name();
QgsExpression exp = item->nameExpression();
exp.prepare( &expressionContext );

if ( exp.isValid() )
{
name = exp.evaluate( &expressionContext ).toString();
}

if ( item->name() != name )
{
item->setName( name );
changedFormItems << item->id();
}

++formItemsIterator;
}
}

// Evaluate form items value state - hard/soft constraints, value validity
{
bool containsValidationError = false;
Expand Down
21 changes: 6 additions & 15 deletions app/attributes/attributedata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,11 @@ QString FormItem::name() const
return mName;
}

void FormItem::setName( QString name )
{
mName = name;
}

bool FormItem::isEditable() const
{
return mIsEditable;
Expand Down Expand Up @@ -319,15 +324,11 @@ void FormItem::setRawValue( const QVariant &rawValue )
TabItem::TabItem( const int &id,
const QString &name,
const QVector<QUuid> &formItems,
const QgsExpression &visibilityExpression,
const QgsExpression &aliasExpression,
const QgsExpression &editableExpression )
const QgsExpression &visibilityExpression )
: mTabIndex( id )
, mName( name )
, mFormItems( formItems )
, mVisibilityExpression( visibilityExpression )
, mNameExpression( aliasExpression )
, mEditableExpression( editableExpression )
{
}

Expand Down Expand Up @@ -356,16 +357,6 @@ QgsExpression TabItem::visibilityExpression() const
return mVisibilityExpression;
}

QgsExpression TabItem::nameExpression() const
{
return mNameExpression;
}

QgsExpression TabItem::editableExpression() const
{
return mEditableExpression;
}

const QVector<QUuid> TabItem::formItems() const
{
return mFormItems;
Expand Down
13 changes: 5 additions & 8 deletions app/attributes/attributedata.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,10 @@ class FormItem
);

FormItem::FormItemType type() const;

QString name() const;
void setName( QString name );

QString editorWidgetType() const;
QVariantMap editorWidgetConfig() const;
int fieldIndex() const;
Expand Down Expand Up @@ -162,14 +165,14 @@ class FormItem
const QString mGroupName; //empty for no group, group/tab name if widget is in container
const int mParentTabId;
const FormItem::FormItemType mType;
const QString mName;
const bool mShowName = true; // "Show label" in Widget Display group in QGIS widget settings
const QgsEditorWidgetSetup mEditorWidgetSetup;
const int mFieldIndex;
const QgsExpression mVisibilityExpression;
const QgsExpression mNameExpression;
const QgsExpression mEditableExpression;

QString mName;
QString mValidationMessage;
FieldValidator::ValidationStatus mValidationStatus = FieldValidator::Valid;
bool mIsEditable = true;
Expand All @@ -186,9 +189,7 @@ class TabItem
TabItem( const int &id,
const QString &name,
const QVector<QUuid> &formItems,
const QgsExpression &visibilityExpression,
const QgsExpression &nameExpression,
const QgsExpression &editableExpression
const QgsExpression &visibilityExpression
);

QString name() const;
Expand All @@ -200,16 +201,12 @@ class TabItem
int tabIndex() const;

QgsExpression visibilityExpression() const;
QgsExpression nameExpression() const;
QgsExpression editableExpression() const;

private:
const int mTabIndex;
const QString mName;
const QVector<QUuid> mFormItems;
const QgsExpression mVisibilityExpression;
const QgsExpression mNameExpression;
const QgsExpression mEditableExpression;
bool mVisible = false;
};

Expand Down

1 comment on commit 5a9e8c0

@inputapp-bot
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

iOS - version 24.10.670311 just submitted!

Please sign in to comment.