30
30
#include " qgisapp.h"
31
31
#include " qgssearchquerybuilder.h"
32
32
33
+
34
+ class QBeataTableDock : public QDockWidget
35
+ {
36
+ public:
37
+ QBeataTableDock ( const QString & title, QWidget * parent = 0 , Qt::WindowFlags flags = 0 )
38
+ : QDockWidget( title, parent, flags )
39
+ {
40
+ setObjectName (" AttributeTable" ); // set object name so the position can be saved
41
+ }
42
+
43
+ virtual void closeEvent ( QCloseEvent * ev )
44
+ {
45
+ deleteLater ();
46
+ }
47
+ };
48
+
49
+
33
50
BeataDialog::BeataDialog (QgsVectorLayer *theLayer, QWidget *parent, Qt::WindowFlags flags)
34
- : QDialog(parent, flags)
51
+ : QDialog(parent, flags), mDock( NULL )
35
52
{
36
53
mLayer = theLayer;
37
54
@@ -50,9 +67,17 @@ BeataDialog::BeataDialog(QgsVectorLayer *theLayer, QWidget *parent, Qt::WindowFl
50
67
mColumnBox = columnBox;
51
68
columnBoxInit ();
52
69
53
- mShowBox = showBox;
54
- mShowBox ->addItem (" Show unselected rows" );
55
- mShowBox ->addItem (" Hide unselected rows" );
70
+ QSettings mySettings;
71
+ bool myDockFlag = mySettings.value ( " /qgis/dockAttributeTable" , false ).toBool ();
72
+ if ( myDockFlag )
73
+ {
74
+ mDock = new QBeataTableDock ( tr ( " Attribute table - %1" ).arg ( mLayer ->name () ), QgisApp::instance () );
75
+ mDock ->setAllowedAreas ( Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea );
76
+ mDock ->setWidget ( this );
77
+ QgisApp::instance ()->addDockWidget ( Qt::BottomDockWidgetArea, mDock );
78
+ }
79
+
80
+ setWindowTitle ( tr ( " Attribute table - %1" ).arg ( mLayer ->name () ) );
56
81
57
82
mMenuActions = new QMenu ();
58
83
mMenuActions ->addAction (tr (" Advanced search" ), this , SLOT (advancedSearch ()));
@@ -69,19 +94,23 @@ BeataDialog::BeataDialog(QgsVectorLayer *theLayer, QWidget *parent, Qt::WindowFl
69
94
mActionToggleEditing ->setCheckable ( true );
70
95
mActionToggleEditing ->setEnabled ( mLayer ->dataProvider ()->capabilities () & QgsVectorDataProvider::ChangeAttributeValues );
71
96
// info from table to application
72
- connect ( this , SIGNAL ( editingToggled ( QgsMapLayer * ) ), parentWidget (), SLOT ( toggleEditing ( QgsMapLayer * ) ) );
97
+ connect ( this , SIGNAL ( editingToggled ( QgsMapLayer * ) ), QgisApp::instance (), SLOT ( toggleEditing ( QgsMapLayer * ) ) );
73
98
// info from layer to table
74
99
connect ( mLayer , SIGNAL ( editingStarted () ), this , SLOT ( editingToggled () ) );
75
100
connect ( mLayer , SIGNAL ( editingStopped () ), this , SLOT ( editingToggled () ) );
76
101
77
- connect (mShowBox , SIGNAL (currentIndexChanged (const QString &)), this , SLOT (toggleShowDeselected (const QString &)));
102
+ connect (btnShowAll, SIGNAL (clicked ()), this , SLOT (clickedShowAll ()));
103
+ connect (btnShowSelected, SIGNAL (clicked ()), this , SLOT (clickedShowSelected ()));
104
+
78
105
connect (searchButton, SIGNAL (clicked ()), this , SLOT (search ()));
79
106
connect (actionsButton, SIGNAL (clicked ()), this , SLOT (showAdvanced ()));
80
107
81
108
connect (mLayer , SIGNAL (selectionChanged ()), this , SLOT (updateSelectionFromLayer ()));
82
109
connect (mLayer , SIGNAL (layerDeleted ()), this , SLOT ( close ()));
83
110
connect (mView ->verticalHeader (), SIGNAL (sectionClicked (int )), this , SLOT (updateRowSelection (int )));
84
111
connect (mModel , SIGNAL (modelChanged ()), this , SLOT (updateSelection ()));
112
+
113
+ clickedShowAll (); // make sure the show all button is checked
85
114
86
115
mLastClickedHeaderIndex = 0 ;
87
116
mSelectionModel = new QItemSelectionModel (mFilterModel );
@@ -96,8 +125,11 @@ void BeataDialog::closeEvent( QCloseEvent* event )
96
125
{
97
126
QDialog::closeEvent ( event );
98
127
99
- QSettings settings;
100
- settings.setValue ( " /Windows/BetterAttributeTable/geometry" , saveGeometry () );
128
+ if ( mDock == NULL )
129
+ {
130
+ QSettings settings;
131
+ settings.setValue ( " /Windows/BetterAttributeTable/geometry" , saveGeometry () );
132
+ }
101
133
}
102
134
103
135
@@ -188,18 +220,30 @@ void BeataDialog::removeSelection()
188
220
mLayer ->removeSelection ();
189
221
}
190
222
191
- void BeataDialog::toggleShowDeselected ( const QString &text )
223
+ void BeataDialog::clickedShowAll ( )
192
224
{
193
- if (text == " Show unselected rows" )
225
+ // the button can't be unchecked by clicking it
226
+ // gets unchecked when show selected is clicked
227
+ if (!btnShowAll->isChecked ())
194
228
{
195
- mFilterModel ->mHideUnselected = false ;
196
- // TODO: divne
197
- // mModel->changeLayout();
198
- mFilterModel ->invalidate ();
199
- return ;
229
+ btnShowAll->setChecked (true );
200
230
}
231
+ btnShowSelected->setChecked (false );
232
+
233
+ mFilterModel ->mHideUnselected = false ;
234
+ mFilterModel ->invalidate ();
235
+ // TODO: weird
236
+ // mModel->changeLayout();
237
+ }
201
238
202
- // show only selected
239
+ void BeataDialog::clickedShowSelected ()
240
+ {
241
+ if (!btnShowSelected->isChecked ())
242
+ {
243
+ btnShowSelected->setChecked (true );
244
+ }
245
+ btnShowAll->setChecked (false );
246
+
203
247
mFilterModel ->mHideUnselected = true ;
204
248
mFilterModel ->invalidate ();
205
249
// mModel->changeLayout();
0 commit comments