Skip to content

Commit be0abb3

Browse files
authoredJan 25, 2019
Merge pull request #8971 from elpaso/bugfix-21068-database-styles-button-order
Fix button order in DB styles dialog and add GPKG delete support
2 parents ee0e0e1 + a9553c9 commit be0abb3

File tree

5 files changed

+128
-111
lines changed

5 files changed

+128
-111
lines changed
 

‎src/app/qgsvectorlayerloadstyledialog.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "qgsvectorlayerproperties.h"
2424
#include "qgsmaplayerstylecategoriesmodel.h"
2525
#include "qgsmessagebar.h"
26+
#include "qgsapplication.h"
2627

2728

2829
QgsVectorLayerLoadStyleDialog::QgsVectorLayerLoadStyleDialog( QgsVectorLayer *layer, QWidget *parent )
@@ -32,6 +33,13 @@ QgsVectorLayerLoadStyleDialog::QgsVectorLayerLoadStyleDialog( QgsVectorLayer *la
3233
setupUi( this );
3334
setWindowTitle( QStringLiteral( "Database styles manager" ) );
3435

36+
mDeleteButton = mButtonBox->button( QDialogButtonBox::StandardButton::Close );
37+
mDeleteButton->setText( tr( "Delete Style" ) );
38+
mDeleteButton->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionDeleteSelected.svg" ) ) );
39+
mLoadButton = mButtonBox->button( QDialogButtonBox::StandardButton::Open );
40+
mLoadButton->setText( tr( "Load Style" ) );
41+
mCancelButton = mButtonBox->button( QDialogButtonBox::StandardButton::Cancel );
42+
3543
QgsSettings settings;
3644

3745
QString providerName = mLayer->providerType();

‎src/app/qgsvectorlayerloadstyledialog.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ class APP_EXPORT QgsVectorLayerLoadStyleDialog : public QDialog, private Ui::Qgs
5757
QString mSelectedStyleId;
5858
QString mSelectedStyleName;
5959
int mSectionLimit = 0;
60+
QPushButton *mDeleteButton = nullptr;
61+
QPushButton *mLoadButton = nullptr;
62+
QPushButton *mCancelButton = nullptr;
6063
};
6164

6265
#endif //QGSLOADFILEFROMDBDIALOG_H

‎src/providers/ogr/qgsogrprovider.cpp

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4504,6 +4504,11 @@ bool QgsOgrProvider::isSaveAndLoadStyleToDatabaseSupported() const
45044504
mGDALDriverName == QLatin1String( "SQLite" );
45054505
}
45064506

4507+
bool QgsOgrProvider::isDeleteStyleFromDatabaseSupported() const
4508+
{
4509+
return isSaveAndLoadStyleToDatabaseSupported();
4510+
}
4511+
45074512
QString QgsOgrProviderUtils::DatasetIdentification::toString() const
45084513
{
45094514
return dsName +
@@ -5876,7 +5881,7 @@ QGISEXTERN bool saveStyle( const QString &uri, const QString &qmlStyle, const QS
58765881
if ( !hLayer )
58775882
{
58785883
// if not create it
5879-
// Note: we use the same schema as in the SpatiaLite and postgre providers
5884+
// Note: we use the same schema as in the SpatiaLite and postgres providers
58805885
//for cross interoperability
58815886

58825887
char **options = nullptr;
@@ -6068,6 +6073,42 @@ QGISEXTERN bool saveStyle( const QString &uri, const QString &qmlStyle, const QS
60686073
return true;
60696074
}
60706075

6076+
6077+
QGISEXTERN bool deleteStyleById( const QString &uri, QString styleId, QString &errCause )
6078+
{
6079+
QgsDataSourceUri dsUri( uri );
6080+
bool deleted;
6081+
6082+
QgsOgrLayerUniquePtr userLayer = LoadDataSourceAndLayer( uri, errCause );
6083+
if ( !userLayer )
6084+
return false;
6085+
6086+
QMutex *mutex = nullptr;
6087+
GDALDatasetH hDS = userLayer->getDatasetHandleAndMutex( mutex );
6088+
QMutexLocker locker( mutex );
6089+
6090+
// check if layer_styles table already exist
6091+
OGRLayerH hLayer = GDALDatasetGetLayerByName( hDS, "layer_styles" );
6092+
if ( !hLayer )
6093+
{
6094+
errCause = QObject::tr( "Connection to database failed: %1" ).arg( dsUri.uri() );
6095+
deleted = false;
6096+
}
6097+
else
6098+
{
6099+
if ( OGR_L_DeleteFeature( hLayer, styleId.toInt() ) != OGRERR_NONE )
6100+
{
6101+
errCause = QObject::tr( "Error executing the delete query." );
6102+
deleted = false;
6103+
}
6104+
else
6105+
{
6106+
deleted = true;
6107+
}
6108+
}
6109+
return deleted;
6110+
}
6111+
60716112
static
60726113
bool LoadDataSourceLayerStylesAndLayer( const QString &uri,
60736114
QgsOgrLayerUniquePtr &layerStyles,

‎src/providers/ogr/qgsogrprovider.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ class QgsOgrProvider : public QgsVectorDataProvider
129129
bool enterUpdateMode() override { return _enterUpdateMode(); }
130130
bool leaveUpdateMode() override;
131131
bool isSaveAndLoadStyleToDatabaseSupported() const override;
132+
bool isDeleteStyleFromDatabaseSupported() const override;
132133
QString fileVectorFilters() const override;
133134
//! Returns a string containing the available database drivers
134135
QString databaseDrivers() const;

‎src/ui/qgsvectorlayerloadstyledialog.ui

Lines changed: 74 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,31 @@
2323
<bool>true</bool>
2424
</property>
2525
<layout class="QGridLayout" name="gridLayout">
26-
<item row="3" column="0" colspan="2">
27-
<widget class="QWidget" name="mFromDbWidget" native="true">
28-
<layout class="QGridLayout" name="gridLayout_2">
26+
<item row="4" column="0">
27+
<spacer name="verticalSpacer">
28+
<property name="orientation">
29+
<enum>Qt::Vertical</enum>
30+
</property>
31+
<property name="sizeHint" stdset="0">
32+
<size>
33+
<width>20</width>
34+
<height>40</height>
35+
</size>
36+
</property>
37+
</spacer>
38+
</item>
39+
<item row="0" column="1">
40+
<widget class="QComboBox" name="mStyleTypeComboBox"/>
41+
</item>
42+
<item row="2" column="0" colspan="2">
43+
<widget class="QWidget" name="mFromFileWidget" native="true">
44+
<property name="sizePolicy">
45+
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
46+
<horstretch>0</horstretch>
47+
<verstretch>0</verstretch>
48+
</sizepolicy>
49+
</property>
50+
<layout class="QGridLayout" name="gridLayout_3">
2951
<property name="leftMargin">
3052
<number>0</number>
3153
</property>
@@ -39,118 +61,45 @@
3961
<number>0</number>
4062
</property>
4163
<item row="0" column="0">
42-
<widget class="QLabel" name="label">
43-
<property name="text">
44-
<string>Styles related to the layer</string>
45-
</property>
46-
</widget>
47-
</item>
48-
<item row="1" column="0">
49-
<widget class="QTableWidget" name="mRelatedTable">
50-
<property name="sortingEnabled">
51-
<bool>true</bool>
52-
</property>
53-
</widget>
54-
</item>
55-
<item row="2" column="0">
56-
<widget class="QLabel" name="label_2">
64+
<widget class="QLabel" name="label_3">
5765
<property name="text">
58-
<string>Other styles on the database</string>
66+
<string>File</string>
5967
</property>
6068
</widget>
6169
</item>
62-
<item row="3" column="0">
63-
<widget class="QTableWidget" name="mOthersTable">
64-
<property name="sortingEnabled">
65-
<bool>true</bool>
66-
</property>
67-
</widget>
70+
<item row="0" column="1">
71+
<widget class="QgsFileWidget" name="mFileWidget" native="true"/>
6872
</item>
6973
</layout>
7074
</widget>
7175
</item>
72-
<item row="0" column="1">
73-
<widget class="QComboBox" name="mStyleTypeComboBox"/>
74-
</item>
75-
<item row="1" column="0">
76-
<widget class="QLabel" name="label_4">
76+
<item row="0" column="0">
77+
<widget class="QLabel" name="mModeLabel">
7778
<property name="text">
78-
<string>Categories</string>
79+
<string>Load style</string>
7980
</property>
8081
</widget>
8182
</item>
82-
<item row="5" column="0" colspan="2">
83-
<layout class="QGridLayout" name="gridLayout_4">
84-
<item row="0" column="0">
85-
<spacer name="horizontalSpacer">
86-
<property name="orientation">
87-
<enum>Qt::Horizontal</enum>
88-
</property>
89-
<property name="sizeHint" stdset="0">
90-
<size>
91-
<width>40</width>
92-
<height>20</height>
93-
</size>
94-
</property>
95-
</spacer>
96-
</item>
97-
<item row="0" column="1">
98-
<widget class="QPushButton" name="mCancelButton">
99-
<property name="sizePolicy">
100-
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
101-
<horstretch>0</horstretch>
102-
<verstretch>0</verstretch>
103-
</sizepolicy>
104-
</property>
105-
<property name="text">
106-
<string>Cancel</string>
107-
</property>
108-
</widget>
109-
</item>
110-
<item row="0" column="2">
111-
<widget class="QPushButton" name="mDeleteButton">
112-
<property name="sizePolicy">
113-
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
114-
<horstretch>0</horstretch>
115-
<verstretch>0</verstretch>
116-
</sizepolicy>
117-
</property>
118-
<property name="text">
119-
<string>Delete Style</string>
120-
</property>
121-
</widget>
122-
</item>
123-
<item row="0" column="3">
124-
<widget class="QPushButton" name="mLoadButton">
125-
<property name="sizePolicy">
126-
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
127-
<horstretch>0</horstretch>
128-
<verstretch>0</verstretch>
129-
</sizepolicy>
130-
</property>
131-
<property name="text">
132-
<string>Load Style</string>
133-
</property>
134-
</widget>
135-
</item>
136-
</layout>
137-
</item>
138-
<item row="0" column="0">
139-
<widget class="QLabel" name="mModeLabel">
83+
<item row="1" column="0">
84+
<widget class="QLabel" name="label_4">
14085
<property name="text">
141-
<string>Load style</string>
86+
<string>Categories</string>
14287
</property>
14388
</widget>
14489
</item>
145-
<item row="2" column="0" colspan="2">
146-
<widget class="QWidget" name="mFromFileWidget" native="true">
90+
<item row="1" column="1">
91+
<widget class="QListView" name="mStyleCategoriesListView">
14792
<property name="sizePolicy">
148-
<sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
93+
<sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
14994
<horstretch>0</horstretch>
15095
<verstretch>0</verstretch>
15196
</sizepolicy>
15297
</property>
153-
<layout class="QGridLayout" name="gridLayout_3">
98+
</widget>
99+
</item>
100+
<item row="3" column="0" colspan="2">
101+
<widget class="QWidget" name="mFromDbWidget" native="true">
102+
<layout class="QGridLayout" name="gridLayout_2">
154103
<property name="leftMargin">
155104
<number>0</number>
156105
</property>
@@ -164,38 +113,53 @@
164113
<number>0</number>
165114
</property>
166115
<item row="0" column="0">
167-
<widget class="QLabel" name="label_3">
116+
<widget class="QLabel" name="label">
168117
<property name="text">
169-
<string>File</string>
118+
<string>Styles related to the layer</string>
170119
</property>
171120
</widget>
172121
</item>
173-
<item row="0" column="1">
174-
<widget class="QgsFileWidget" name="mFileWidget" native="true"/>
122+
<item row="1" column="0">
123+
<widget class="QTableWidget" name="mRelatedTable">
124+
<property name="sortingEnabled">
125+
<bool>true</bool>
126+
</property>
127+
</widget>
128+
</item>
129+
<item row="2" column="0">
130+
<widget class="QLabel" name="label_2">
131+
<property name="text">
132+
<string>Other styles on the database</string>
133+
</property>
134+
</widget>
135+
</item>
136+
<item row="3" column="0">
137+
<widget class="QTableWidget" name="mOthersTable">
138+
<property name="sortingEnabled">
139+
<bool>true</bool>
140+
</property>
141+
</widget>
175142
</item>
176143
</layout>
177144
</widget>
178145
</item>
179-
<item row="4" column="0">
180-
<spacer name="verticalSpacer">
146+
<item row="5" column="0">
147+
<spacer name="horizontalSpacer">
181148
<property name="orientation">
182-
<enum>Qt::Vertical</enum>
149+
<enum>Qt::Horizontal</enum>
183150
</property>
184151
<property name="sizeHint" stdset="0">
185152
<size>
186-
<width>20</width>
187-
<height>40</height>
153+
<width>40</width>
154+
<height>20</height>
188155
</size>
189156
</property>
190157
</spacer>
191158
</item>
192-
<item row="1" column="1">
193-
<widget class="QListView" name="mStyleCategoriesListView">
194-
<property name="sizePolicy">
195-
<sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
196-
<horstretch>0</horstretch>
197-
<verstretch>0</verstretch>
198-
</sizepolicy>
159+
<item row="5" column="1">
160+
<widget class="QDialogButtonBox" name="mButtonBox">
161+
<property name="standardButtons">
162+
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Close|QDialogButtonBox::Open</set>
199163
</property>
200164
</widget>
201165
</item>

0 commit comments

Comments
 (0)
Please sign in to comment.