Skip to content

Commit 67b5b67

Browse files
elpasonyalldawson
authored andcommittedFeb 20, 2019
Fix button order in DB styles dialog and add GPKG delete support
Fixes #21068 (cherry picked from commit 90a9852)
1 parent 80ab968 commit 67b5b67

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
@@ -4393,6 +4393,11 @@ bool QgsOgrProvider::isSaveAndLoadStyleToDatabaseSupported() const
43934393
mGDALDriverName == QLatin1String( "SQLite" );
43944394
}
43954395

4396+
bool QgsOgrProvider::isDeleteStyleFromDatabaseSupported() const
4397+
{
4398+
return isSaveAndLoadStyleToDatabaseSupported();
4399+
}
4400+
43964401
QString QgsOgrProviderUtils::DatasetIdentification::toString() const
43974402
{
43984403
return dsName +
@@ -5765,7 +5770,7 @@ QGISEXTERN bool saveStyle( const QString &uri, const QString &qmlStyle, const QS
57655770
if ( !hLayer )
57665771
{
57675772
// if not create it
5768-
// Note: we use the same schema as in the SpatiaLite and postgre providers
5773+
// Note: we use the same schema as in the SpatiaLite and postgres providers
57695774
//for cross interoperability
57705775

57715776
char **options = nullptr;
@@ -5957,6 +5962,42 @@ QGISEXTERN bool saveStyle( const QString &uri, const QString &qmlStyle, const QS
59575962
return true;
59585963
}
59595964

5965+
5966+
QGISEXTERN bool deleteStyleById( const QString &uri, QString styleId, QString &errCause )
5967+
{
5968+
QgsDataSourceUri dsUri( uri );
5969+
bool deleted;
5970+
5971+
QgsOgrLayerUniquePtr userLayer = LoadDataSourceAndLayer( uri, errCause );
5972+
if ( !userLayer )
5973+
return false;
5974+
5975+
QMutex *mutex = nullptr;
5976+
GDALDatasetH hDS = userLayer->getDatasetHandleAndMutex( mutex );
5977+
QMutexLocker locker( mutex );
5978+
5979+
// check if layer_styles table already exist
5980+
OGRLayerH hLayer = GDALDatasetGetLayerByName( hDS, "layer_styles" );
5981+
if ( !hLayer )
5982+
{
5983+
errCause = QObject::tr( "Connection to database failed: %1" ).arg( dsUri.uri() );
5984+
deleted = false;
5985+
}
5986+
else
5987+
{
5988+
if ( OGR_L_DeleteFeature( hLayer, styleId.toInt() ) != OGRERR_NONE )
5989+
{
5990+
errCause = QObject::tr( "Error executing the delete query." );
5991+
deleted = false;
5992+
}
5993+
else
5994+
{
5995+
deleted = true;
5996+
}
5997+
}
5998+
return deleted;
5999+
}
6000+
59606001
static
59616002
bool LoadDataSourceLayerStylesAndLayer( const QString &uri,
59626003
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.