Skip to content

Commit 437cb85

Browse files
committedJun 23, 2016
Left align mapped values
Fix #15101
1 parent d1952ba commit 437cb85

11 files changed

+77
-13
lines changed
 

‎python/gui/editorwidgets/core/qgseditorwidgetfactory.sip‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,16 @@ class QgsEditorWidgetFactory
123123
*/
124124
virtual QString representValue( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config, const QVariant& cache, const QVariant& value ) const;
125125

126+
/**
127+
* Return the alignment for a particular field. By default this will consider the field type but can be overwritten if mapped
128+
* values are represented.
129+
* @param vl The vector layer.
130+
* @param fieldIdx The index of the field.
131+
* @param config The editor widget config.
132+
* @return The alignment flag, normally Qt::AlignRight or Qt::AlignLeft
133+
*/
134+
virtual Qt::AlignmentFlag alignmentFlag( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config ) const;
135+
126136
/**
127137
* Create a cache for a given field.
128138
*

‎src/gui/attributetable/qgsattributetablemodel.cpp‎

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -579,23 +579,16 @@ QVariant QgsAttributeTableModel::data( const QModelIndex &index, int role ) cons
579579
if ( role == FieldIndexRole )
580580
return fieldId;
581581

582-
QgsField field = layer()->fields().at( fieldId );
583-
584-
QVariant::Type fldType = field.type();
585-
bool fldRightAlign = ( fldType == QVariant::Int || fldType == QVariant::Double || fldType == QVariant::LongLong
586-
|| fldType == QVariant::DateTime || fldType == QVariant::Date || fldType == QVariant::Time );
587-
588-
if ( role == Qt::TextAlignmentRole )
582+
if ( role == SortRole )
589583
{
590-
if ( fldRightAlign )
591-
return QVariant( Qt::AlignRight );
592-
else
593-
return QVariant( Qt::AlignLeft );
584+
return mSortCache[rowId];
594585
}
595586

596-
if ( role == SortRole )
587+
QgsField field = layer()->fields().at( fieldId );
588+
589+
if ( role == Qt::TextAlignmentRole )
597590
{
598-
return mSortCache[rowId];
591+
return mWidgetFactories.at( index.column() )->alignmentFlag( layer(), fieldId, mWidgetConfigs.at( index.column() ) );
599592
}
600593

601594
if ( mFeat.id() != rowId || !mFeat.isValid() )

‎src/gui/attributetable/qgsfeaturelistmodel.cpp‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,10 @@ QVariant QgsFeatureListModel::data( const QModelIndex &index, int role ) const
134134

135135
return QVariant::fromValue( feat );
136136
}
137+
else if ( role == Qt::TextAlignmentRole )
138+
{
139+
return Qt::AlignLeft;
140+
}
137141

138142
return sourceModel()->data( mapToSource( index ), role );
139143
}

‎src/gui/editorwidgets/core/qgseditorwidgetfactory.cpp‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "qgseditorwidgetfactory.h"
1717
#include "qgsdefaultsearchwidgetwrapper.h"
1818
#include "qgssearchwidgetwrapper.h"
19+
#include "qgsfield.h"
1920

2021
#include <QSettings>
2122

@@ -69,6 +70,20 @@ QString QgsEditorWidgetFactory::representValue( QgsVectorLayer* vl, int fieldIdx
6970
return vl->fields().at( fieldIdx ).displayString( value );
7071
}
7172

73+
Qt::AlignmentFlag QgsEditorWidgetFactory::alignmentFlag( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config ) const
74+
{
75+
Q_UNUSED( config );
76+
77+
QVariant::Type fldType = vl->fields().at( fieldIdx ).type();
78+
bool alignRight = ( fldType == QVariant::Int || fldType == QVariant::Double || fldType == QVariant::LongLong
79+
|| fldType == QVariant::DateTime || fldType == QVariant::Date || fldType == QVariant::Time );
80+
81+
if ( alignRight )
82+
return Qt::AlignRight;
83+
else
84+
return Qt::AlignLeft;
85+
}
86+
7287
QVariant QgsEditorWidgetFactory::createCache( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config )
7388
{
7489
Q_UNUSED( vl )

‎src/gui/editorwidgets/core/qgseditorwidgetfactory.h‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,16 @@ class GUI_EXPORT QgsEditorWidgetFactory
138138
*/
139139
virtual QString representValue( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config, const QVariant& cache, const QVariant& value ) const;
140140

141+
/**
142+
* Return the alignment for a particular field. By default this will consider the field type but can be overwritten if mapped
143+
* values are represented.
144+
* @param vl The vector layer.
145+
* @param fieldIdx The index of the field.
146+
* @param config The editor widget config.
147+
* @return The alignment flag, normally Qt::AlignRight or Qt::AlignLeft
148+
*/
149+
virtual Qt::AlignmentFlag alignmentFlag( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config ) const;
150+
141151
/**
142152
* Create a cache for a given field.
143153
*

‎src/gui/editorwidgets/qgsdatetimeeditfactory.cpp‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,15 @@ QString QgsDateTimeEditFactory::representValue( QgsVectorLayer* vl, int fieldIdx
9797
return result;
9898
}
9999

100+
Qt::AlignmentFlag QgsDateTimeEditFactory::alignmentFlag( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config ) const
101+
{
102+
Q_UNUSED( vl );
103+
Q_UNUSED( fieldIdx );
104+
Q_UNUSED( config );
105+
106+
return Qt::AlignLeft;
107+
}
108+
100109
QMap<const char*, int> QgsDateTimeEditFactory::supportedWidgetTypes()
101110
{
102111
QMap<const char*, int> map = QMap<const char*, int>();

‎src/gui/editorwidgets/qgsdatetimeeditfactory.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class GUI_EXPORT QgsDateTimeEditFactory : public QgsEditorWidgetFactory
3939
QgsEditorWidgetConfig readConfig( const QDomElement &configElement, QgsVectorLayer *layer, int fieldIdx ) override;
4040
void writeConfig( const QgsEditorWidgetConfig& config, QDomElement& configElement, QDomDocument& doc, const QgsVectorLayer* layer, int fieldIdx ) override;
4141
QString representValue( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config, const QVariant& cache, const QVariant& value ) const override;
42+
Qt::AlignmentFlag alignmentFlag( QgsVectorLayer *vl, int fieldIdx, const QgsEditorWidgetConfig &config ) const override;
4243
virtual QMap<const char*, int> supportedWidgetTypes() override;
4344
};
4445

‎src/gui/editorwidgets/qgsvaluemapwidgetfactory.cpp‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,15 @@ QString QgsValueMapWidgetFactory::representValue( QgsVectorLayer* vl, int fieldI
8989
return config.key( value, QVariant( QString( "(%1)" ).arg( value.toString() ) ).toString() );
9090
}
9191

92+
Qt::AlignmentFlag QgsValueMapWidgetFactory::alignmentFlag( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config ) const
93+
{
94+
Q_UNUSED( vl );
95+
Q_UNUSED( fieldIdx );
96+
Q_UNUSED( config );
97+
98+
return Qt::AlignLeft;
99+
}
100+
92101
QMap<const char*, int> QgsValueMapWidgetFactory::supportedWidgetTypes()
93102
{
94103
QMap<const char*, int> map = QMap<const char*, int>();

‎src/gui/editorwidgets/qgsvaluemapwidgetfactory.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class GUI_EXPORT QgsValueMapWidgetFactory : public QgsEditorWidgetFactory
3535
QgsEditorWidgetConfig readConfig( const QDomElement& configElement, QgsVectorLayer* layer, int fieldIdx ) override;
3636
void writeConfig( const QgsEditorWidgetConfig& config, QDomElement& configElement, QDomDocument& doc, const QgsVectorLayer* layer, int fieldIdx ) override;
3737
QString representValue( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config, const QVariant& cache, const QVariant& value ) const override;
38+
Qt::AlignmentFlag alignmentFlag( QgsVectorLayer *vl, int fieldIdx, const QgsEditorWidgetConfig &config ) const override;
3839
virtual QMap<const char*, int> supportedWidgetTypes() override;
3940
};
4041

‎src/gui/editorwidgets/qgsvaluerelationwidgetfactory.cpp‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,17 @@ QString QgsValueRelationWidgetFactory::representValue( QgsVectorLayer* vl, int f
130130
return QString( "(%1)" ).arg( value.toString() );
131131
}
132132

133+
Qt::AlignmentFlag QgsValueRelationWidgetFactory::alignmentFlag( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config ) const
134+
{
135+
Q_UNUSED( vl );
136+
Q_UNUSED( fieldIdx );
137+
Q_UNUSED( config );
138+
139+
QgsDebugMsg( "Entered" );
140+
141+
return Qt::AlignLeft;
142+
}
143+
133144
QVariant QgsValueRelationWidgetFactory::createCache( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config )
134145
{
135146
Q_UNUSED( vl )

‎src/gui/editorwidgets/qgsvaluerelationwidgetfactory.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class GUI_EXPORT QgsValueRelationWidgetFactory : public QgsEditorWidgetFactory
3838
QgsEditorWidgetConfig readConfig( const QDomElement& configElement, QgsVectorLayer* layer, int fieldIdx ) override;
3939
void writeConfig( const QgsEditorWidgetConfig& config, QDomElement& configElement, QDomDocument& doc, const QgsVectorLayer* layer, int fieldIdx ) override;
4040
QString representValue( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config, const QVariant& cache, const QVariant& value ) const override;
41+
Qt::AlignmentFlag alignmentFlag( QgsVectorLayer *vl, int fieldIdx, const QgsEditorWidgetConfig &config ) const override;
4142
QVariant createCache( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config ) override;
4243
};
4344

0 commit comments

Comments
 (0)
Please sign in to comment.