20
20
#include " qgsfieldexpressionwidget.h"
21
21
22
22
#include < QTableWidget>
23
- #include < QCheckBox>
24
23
#include < QKeyEvent>
25
24
26
25
QgsOrderByDialog::QgsOrderByDialog ( QgsVectorLayer* layer, QWidget* parent )
@@ -30,15 +29,14 @@ QgsOrderByDialog::QgsOrderByDialog( QgsVectorLayer* layer, QWidget* parent )
30
29
setupUi ( this );
31
30
32
31
mOrderByTableWidget ->horizontalHeader ()->setResizeMode ( QHeaderView::Stretch );
33
- mOrderByTableWidget ->horizontalHeader ()->setResizeMode ( 1 , QHeaderView::Interactive );
34
- mOrderByTableWidget ->horizontalHeader ()->setResizeMode ( 2 , QHeaderView::Interactive );
32
+ mOrderByTableWidget ->horizontalHeader ()->setResizeMode ( 1 , QHeaderView::ResizeToContents );
33
+ mOrderByTableWidget ->horizontalHeader ()->setResizeMode ( 2 , QHeaderView::ResizeToContents );
35
34
36
35
mOrderByTableWidget ->installEventFilter ( this );
37
36
}
38
37
39
38
void QgsOrderByDialog::setOrderBy ( const QgsFeatureRequest::OrderBy& orderBy )
40
39
{
41
- mOrderByTableWidget ->clear ();
42
40
mOrderByTableWidget ->setRowCount ( orderBy.length () + 1 );
43
41
44
42
int i = 0 ;
@@ -63,8 +61,16 @@ QgsFeatureRequest::OrderBy QgsOrderByDialog::orderBy()
63
61
64
62
if ( ! expressionText.isEmpty () )
65
63
{
66
- bool asc = static_cast <QCheckBox*>( mOrderByTableWidget ->cellWidget ( i, 1 ) )->checkState ();
67
- bool nullsFirst = static_cast <QCheckBox*>( mOrderByTableWidget ->cellWidget ( i, 2 ) )->checkState ();
64
+ bool asc = true ;
65
+ int ascIndex = static_cast <QComboBox*>( mOrderByTableWidget ->cellWidget ( i, 1 ) )->currentIndex ();
66
+ if ( ascIndex == 1 )
67
+ asc = false ;
68
+
69
+ bool nullsFirst = false ;
70
+ int nullsFirstIndex = static_cast <QComboBox*>( mOrderByTableWidget ->cellWidget ( i, 2 ) )->currentIndex ();
71
+ if ( nullsFirstIndex == 1 )
72
+ nullsFirst = true ;
73
+
68
74
QgsFeatureRequest::OrderByClause orderByClause ( expressionText, asc, nullsFirst );
69
75
70
76
orderBy << orderByClause;
@@ -103,14 +109,20 @@ void QgsOrderByDialog::setRow( int row, const QgsFeatureRequest::OrderByClause&
103
109
fieldExpression->setLayer ( mLayer );
104
110
fieldExpression->setField ( orderByClause.expression ().expression () );
105
111
connect ( fieldExpression, SIGNAL ( fieldChanged ( QString ) ), this , SLOT ( onExpressionChanged ( QString ) ) );
106
- QCheckBox* ascCheckBox = new QCheckBox ();
107
- ascCheckBox->setChecked ( orderByClause.ascending () );
108
- QCheckBox* nullsFirstCheckBox = new QCheckBox ();
109
- nullsFirstCheckBox->setChecked ( orderByClause.nullsFirst () );
112
+
113
+ QComboBox* ascComboBox = new QComboBox ();
114
+ ascComboBox->addItem ( tr ( " Ascending" ) );
115
+ ascComboBox->addItem ( tr ( " Descencing" ) );
116
+ ascComboBox->setCurrentIndex ( orderByClause.ascending () ? 0 : 1 );
117
+
118
+ QComboBox* nullsFirstComboBox = new QComboBox ();
119
+ nullsFirstComboBox->addItem ( tr ( " NULLs last" ) );
120
+ nullsFirstComboBox->addItem ( tr ( " NULLs first" ) );
121
+ nullsFirstComboBox->setCurrentIndex ( orderByClause.nullsFirst () ? 1 : 0 );
110
122
111
123
mOrderByTableWidget ->setCellWidget ( row, 0 , fieldExpression );
112
- mOrderByTableWidget ->setCellWidget ( row, 1 , ascCheckBox );
113
- mOrderByTableWidget ->setCellWidget ( row, 2 , nullsFirstCheckBox );
124
+ mOrderByTableWidget ->setCellWidget ( row, 1 , ascComboBox );
125
+ mOrderByTableWidget ->setCellWidget ( row, 2 , nullsFirstComboBox );
114
126
}
115
127
116
128
bool QgsOrderByDialog::eventFilter ( QObject* obj, QEvent* e )
0 commit comments