Skip to content

Commit f79d747

Browse files
committedJun 19, 2015
[bookmarks] switch spatial bookmarks dialog to dockwidget with toolbar
1 parent 513cfad commit f79d747

File tree

5 files changed

+141
-125
lines changed

5 files changed

+141
-125
lines changed
 

‎src/app/qgisapp.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,10 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, QWidget * parent,
603603
mStatisticalSummaryDockWidget = new QgsStatisticalSummaryDockWidget( this );
604604
mStatisticalSummaryDockWidget->setObjectName( "StatistalSummaryDockWidget" );
605605

606+
// Bookmarks dock
607+
mBookMarksDockWidget = new QgsBookmarks( this );
608+
mBookMarksDockWidget->setObjectName( "BookmarksDockWidget" );
609+
606610
mSnappingUtils = new QgsMapCanvasSnappingUtils( mMapCanvas, this );
607611
mMapCanvas->setSnappingUtils( mSnappingUtils );
608612
connect( QgsProject::instance(), SIGNAL( snapSettingsChanged() ), mSnappingUtils, SLOT( readConfigFromProject() ) );
@@ -650,6 +654,9 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, QWidget * parent,
650654
addDockWidget( Qt::LeftDockWidgetArea, mStatisticalSummaryDockWidget );
651655
mStatisticalSummaryDockWidget->hide();
652656

657+
addDockWidget( Qt::LeftDockWidgetArea, mBookMarksDockWidget );
658+
mBookMarksDockWidget->hide();
659+
653660
QMainWindow::addDockWidget( Qt::BottomDockWidgetArea, mUserInputDockWidget );
654661
mUserInputDockWidget->setFloating( true );
655662

@@ -925,6 +932,7 @@ QgisApp::QgisApp()
925932
, mBrowserWidget2( 0 )
926933
, mAdvancedDigitizingDockWidget( 0 )
927934
, mStatisticalSummaryDockWidget( 0 )
935+
, mBookMarksDockWidget( 0 )
928936
, mSnappingDialog( 0 )
929937
, mPluginManager( 0 )
930938
, mComposerManager( 0 )
@@ -10044,12 +10052,14 @@ void QgisApp::customProjection()
1004410052

1004510053
void QgisApp::newBookmark()
1004610054
{
10047-
QgsBookmarks::newBookmark();
10055+
showBookmarks();
10056+
mBookMarksDockWidget->addClicked();
1004810057
}
1004910058

1005010059
void QgisApp::showBookmarks()
1005110060
{
10052-
QgsBookmarks::showBookmarks();
10061+
mBookMarksDockWidget->show();
10062+
mBookMarksDockWidget->raise();
1005310063
}
1005410064

1005510065
// Slot that gets called when the project file was saved with an older

‎src/app/qgisapp.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ class QgsTileScaleWidget;
103103
#include "qgssnappingdialog.h"
104104
#include "qgspluginmanager.h"
105105
#include "qgsmessagebar.h"
106+
#include "qgsbookmarks.h"
106107

107108
#include "ui_qgisapp.h"
108109

@@ -1620,6 +1621,7 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
16201621

16211622
QgsAdvancedDigitizingDockWidget *mAdvancedDigitizingDockWidget;
16221623
QgsStatisticalSummaryDockWidget* mStatisticalSummaryDockWidget;
1624+
QgsBookmarks* mBookMarksDockWidget;
16231625

16241626
QgsSnappingDialog *mSnappingDialog;
16251627

‎src/app/qgsbookmarks.cpp

Lines changed: 17 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -14,58 +14,51 @@
1414
* (at your option) any later version. *
1515
* *
1616
***************************************************************************/
17-
#include "qgsbookmarks.h"
1817
#include "qgisapp.h"
1918
#include "qgsapplication.h"
19+
#include "qgsbookmarks.h"
2020
#include "qgscontexthelp.h"
2121
#include "qgsmapcanvas.h"
2222
#include "qgsmaprenderer.h"
2323
#include "qgsproject.h"
2424

2525
#include "qgslogger.h"
2626

27-
#include <QFileInfo>
2827
#include <QFileDialog>
28+
#include <QFileInfo>
2929
#include <QMessageBox>
3030
#include <QSettings>
31-
#include <QPushButton>
32-
#include <QSqlTableModel>
3331
#include <QSqlError>
3432
#include <QSqlQuery>
33+
#include <QSqlTableModel>
3534

36-
QgsBookmarks *QgsBookmarks::sInstance = 0;
3735

38-
QgsBookmarks::QgsBookmarks( QWidget *parent, Qt::WindowFlags fl )
39-
: QDialog( parent, fl )
36+
QgsBookmarks::QgsBookmarks( QWidget *parent ) : QDockWidget( parent )
4037
{
4138
setupUi( this );
4239
restorePosition();
4340

44-
//
45-
// Create the zoomto and delete buttons and add them to the
46-
// toolbar
47-
//
48-
QPushButton *btnAdd = new QPushButton( tr( "&Add" ) );
49-
QPushButton *btnDelete = new QPushButton( tr( "&Delete" ) );
50-
QPushButton *btnZoomTo = new QPushButton( tr( "&Zoom to" ) );
51-
QPushButton *btnImpExp = new QPushButton( tr( "&Share" ) );
52-
53-
btnZoomTo->setDefault( true );
54-
buttonBox->addButton( btnAdd, QDialogButtonBox::ActionRole );
55-
buttonBox->addButton( btnDelete, QDialogButtonBox::ActionRole );
56-
buttonBox->addButton( btnZoomTo, QDialogButtonBox::ActionRole );
57-
buttonBox->addButton( btnImpExp, QDialogButtonBox::ActionRole );
41+
QToolButton* btnImpExp = new QToolButton;
42+
btnImpExp->setAutoRaise( true );
43+
btnImpExp->setToolTip( tr( "Import/Export Bookmarks" ) );
44+
btnImpExp->setIcon( QgsApplication::getThemeIcon( "/mActionSharing.svg" ) );
45+
btnImpExp->setPopupMode( QToolButton::InstantPopup );
5846

5947
QMenu *share = new QMenu();
6048
QAction *btnExport = share->addAction( tr( "&Export" ) );
6149
QAction *btnImport = share->addAction( tr( "&Import" ) );
50+
btnExport->setIcon( QgsApplication::getThemeIcon( "/mActionSharingExport.svg" ) );
51+
btnImport->setIcon( QgsApplication::getThemeIcon( "/mActionSharingImport.svg" ) );
6252
connect( btnExport, SIGNAL( triggered() ), this, SLOT( exportToXML() ) );
6353
connect( btnImport, SIGNAL( triggered() ), this, SLOT( importFromXML() ) );
6454
btnImpExp->setMenu( share );
6555

66-
connect( btnAdd, SIGNAL( clicked() ), this, SLOT( addClicked() ) );
67-
connect( btnDelete, SIGNAL( clicked() ), this, SLOT( deleteClicked() ) );
68-
connect( btnZoomTo, SIGNAL( clicked() ), this, SLOT( zoomToBookmark() ) );
56+
connect( actionAdd, SIGNAL( triggered() ), this, SLOT( addClicked() ) );
57+
connect( actionDelete, SIGNAL( triggered() ), this, SLOT( deleteClicked() ) );
58+
connect( actionZoomTo, SIGNAL( triggered() ), this, SLOT( zoomToBookmark() ) );
59+
60+
mBookmarkToolbar->addWidget( btnImpExp );
61+
mBookmarkToolbar->addAction( actionHelp );
6962

7063
// open the database
7164
QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE", "bookmarks" );
@@ -111,7 +104,6 @@ QgsBookmarks::QgsBookmarks( QWidget *parent, Qt::WindowFlags fl )
111104
QgsBookmarks::~QgsBookmarks()
112105
{
113106
saveWindowLocation();
114-
sInstance = 0;
115107
}
116108

117109
void QgsBookmarks::restorePosition()
@@ -127,26 +119,6 @@ void QgsBookmarks::saveWindowLocation()
127119
settings.setValue( "/Windows/Bookmarks/headerstate", lstBookmarks->header()->saveState() );
128120
}
129121

130-
void QgsBookmarks::newBookmark()
131-
{
132-
showBookmarks();
133-
sInstance->addClicked();
134-
}
135-
136-
void QgsBookmarks::showBookmarks()
137-
{
138-
if ( !sInstance )
139-
{
140-
sInstance = new QgsBookmarks( QgisApp::instance() );
141-
sInstance->setAttribute( Qt::WA_DeleteOnClose );
142-
}
143-
144-
sInstance->show();
145-
sInstance->raise();
146-
sInstance->setWindowState( sInstance->windowState() & ~Qt::WindowMinimized );
147-
sInstance->activateWindow();
148-
}
149-
150122
void QgsBookmarks::addClicked()
151123
{
152124
QSqlTableModel *model = qobject_cast<QSqlTableModel *>( lstBookmarks->model() );

‎src/app/qgsbookmarks.h

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,37 +16,36 @@
1616
***************************************************************************/
1717
#ifndef QGSBOOKMARKS_H
1818
#define QGSBOOKMARKS_H
19+
20+
#include <QDockWidget>
21+
1922
#include "ui_qgsbookmarksbase.h"
2023
#include "qgscontexthelp.h"
2124

22-
#include <QDialog>
23-
24-
class APP_EXPORT QgsBookmarks : public QDialog, private Ui::QgsBookmarksBase
25+
class APP_EXPORT QgsBookmarks : public QDockWidget, private Ui::QgsBookmarksBase
2526
{
2627
Q_OBJECT
2728

2829
public:
29-
static void showBookmarks();
30-
static void newBookmark();
30+
QgsBookmarks( QWidget *parent = 0 );
31+
~QgsBookmarks();
3132

32-
private slots:
33+
public slots:
3334
void addClicked();
35+
36+
private slots:
3437
void deleteClicked();
3538
void zoomToBookmark();
3639
void exportToXML();
3740
void importFromXML();
3841

3942
void on_lstBookmarks_doubleClicked( const QModelIndex & );
40-
void on_buttonBox_helpRequested() { QgsContextHelp::run( metaObject()->className() ); }
43+
void on_actionHelp_triggered() { QgsContextHelp::run( metaObject()->className() ); }
4144

4245
private:
43-
QgsBookmarks( QWidget *parent = 0, Qt::WindowFlags fl = 0 );
44-
~QgsBookmarks();
45-
4646
void saveWindowLocation();
4747
void restorePosition();
4848

49-
static QgsBookmarks *sInstance;
5049
};
5150

5251

‎src/ui/qgsbookmarksbase.ui

Lines changed: 100 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,114 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<ui version="4.0">
33
<class>QgsBookmarksBase</class>
4-
<widget class="QDialog" name="QgsBookmarksBase">
4+
<widget class="QDockWidget" name="QgsBookmarksBase">
55
<property name="geometry">
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>440</width>
10-
<height>370</height>
9+
<width>424</width>
10+
<height>334</height>
1111
</rect>
1212
</property>
1313
<property name="windowTitle">
14-
<string>Geospatial Bookmarks</string>
14+
<string>Spatial Bookmarks</string>
1515
</property>
16-
<layout class="QGridLayout">
17-
<property name="margin">
18-
<number>0</number>
16+
<widget class="QWidget" name="bookmarksDockContents">
17+
<layout class="QGridLayout" name="gridLayout">
18+
<property name="margin">
19+
<number>0</number>
20+
</property>
21+
<item row="0" column="0">
22+
<widget class="QToolBar" name="mBookmarkToolbar">
23+
<property name="iconSize">
24+
<size>
25+
<width>16</width>
26+
<height>16</height>
27+
</size>
28+
</property>
29+
<property name="floatable">
30+
<bool>false</bool>
31+
</property>
32+
<addaction name="actionAdd"/>
33+
<addaction name="actionDelete"/>
34+
<addaction name="actionZoomTo"/>
35+
</widget>
36+
</item>
37+
<item row="1" column="0">
38+
<widget class="QTreeView" name="lstBookmarks">
39+
<property name="alternatingRowColors">
40+
<bool>true</bool>
41+
</property>
42+
<property name="selectionMode">
43+
<enum>QAbstractItemView::ExtendedSelection</enum>
44+
</property>
45+
<property name="rootIsDecorated">
46+
<bool>false</bool>
47+
</property>
48+
<property name="sortingEnabled">
49+
<bool>true</bool>
50+
</property>
51+
</widget>
52+
</item>
53+
</layout>
54+
</widget>
55+
<action name="actionAdd">
56+
<property name="icon">
57+
<iconset resource="../../images/images.qrc">
58+
<normaloff>:/images/themes/default/mActionNewBookmark.png</normaloff>:/images/themes/default/mActionNewBookmark.png</iconset>
1959
</property>
20-
<item row="0" column="0">
21-
<widget class="QTreeView" name="lstBookmarks">
22-
<property name="selectionMode">
23-
<enum>QAbstractItemView::ExtendedSelection</enum>
24-
</property>
25-
<property name="rootIsDecorated">
26-
<bool>false</bool>
27-
</property>
28-
<property name="sortingEnabled">
29-
<bool>true</bool>
30-
</property>
31-
</widget>
32-
</item>
33-
<item row="3" column="0">
34-
<layout class="QHBoxLayout" name="horizontalLayout_2">
35-
<property name="leftMargin">
36-
<number>3</number>
37-
</property>
38-
<property name="topMargin">
39-
<number>0</number>
40-
</property>
41-
<property name="rightMargin">
42-
<number>3</number>
43-
</property>
44-
<property name="bottomMargin">
45-
<number>3</number>
46-
</property>
47-
<item>
48-
<widget class="QDialogButtonBox" name="buttonBox">
49-
<property name="standardButtons">
50-
<set>QDialogButtonBox::Close|QDialogButtonBox::Help</set>
51-
</property>
52-
</widget>
53-
</item>
54-
</layout>
55-
</item>
56-
</layout>
60+
<property name="text">
61+
<string>Add</string>
62+
</property>
63+
<property name="toolTip">
64+
<string>Add bookmark</string>
65+
</property>
66+
</action>
67+
<action name="actionDelete">
68+
<property name="icon">
69+
<iconset resource="../../images/images.qrc">
70+
<normaloff>:/images/themes/default/mActionDeleteSelected.svg</normaloff>:/images/themes/default/mActionDeleteSelected.svg</iconset>
71+
</property>
72+
<property name="text">
73+
<string>Delete</string>
74+
</property>
75+
<property name="toolTip">
76+
<string>Delete bookmark</string>
77+
</property>
78+
</action>
79+
<action name="actionZoomTo">
80+
<property name="icon">
81+
<iconset resource="../../images/images.qrc">
82+
<normaloff>:/images/themes/default/mActionScaleHighlightFeature.svg</normaloff>:/images/themes/default/mActionScaleHighlightFeature.svg</iconset>
83+
</property>
84+
<property name="text">
85+
<string>Zoom to</string>
86+
</property>
87+
<property name="toolTip">
88+
<string>Zoom to bookmark</string>
89+
</property>
90+
</action>
91+
<action name="actionHelp">
92+
<property name="enabled">
93+
<bool>true</bool>
94+
</property>
95+
<property name="icon">
96+
<iconset resource="../../images/images.qrc">
97+
<normaloff>:/images/themes/default/mActionHelpContents.svg</normaloff>:/images/themes/default/mActionHelpContents.svg</iconset>
98+
</property>
99+
<property name="text">
100+
<string>Help</string>
101+
</property>
102+
<property name="toolTip">
103+
<string>Help</string>
104+
</property>
105+
<property name="visible">
106+
<bool>true</bool>
107+
</property>
108+
</action>
57109
</widget>
58-
<layoutdefault spacing="6" margin="11"/>
59-
<tabstops>
60-
<tabstop>lstBookmarks</tabstop>
61-
</tabstops>
62-
<resources/>
63-
<connections>
64-
<connection>
65-
<sender>buttonBox</sender>
66-
<signal>rejected()</signal>
67-
<receiver>QgsBookmarksBase</receiver>
68-
<slot>reject()</slot>
69-
<hints>
70-
<hint type="sourcelabel">
71-
<x>211</x>
72-
<y>342</y>
73-
</hint>
74-
<hint type="destinationlabel">
75-
<x>274</x>
76-
<y>256</y>
77-
</hint>
78-
</hints>
79-
</connection>
80-
</connections>
110+
<resources>
111+
<include location="../../images/images.qrc"/>
112+
</resources>
113+
<connections/>
81114
</ui>

0 commit comments

Comments
 (0)
Please sign in to comment.