Git commit 70003fa4d415f545c66d0ee13b16d18f7c4d812f by Dennis Nienh?ser. Committed on 13/05/2012 at 22:54. Pushed by nienhueser into branch 'master'.
Make common tasks easier/possible in the user interface. Adds buttons to open a route (from .kml), clear the current one, reverse it, add a via point and save it. GUI: REVIEW: 102539 FEATURE: 285090 FEATURE: 281278 FEATURE: 278625 FIXED-IN: KDE-4.9.0 A +- -- src/icons/16x16/configure.png A +- -- src/icons/16x16/document-open.png A +- -- src/icons/16x16/document-save.png M +19 -33 src/lib/routing/RoutingWidget.cpp M +72 -16 src/lib/routing/RoutingWidget.ui M +3 -0 src/marble.qrc http://commits.kde.org/marble/70003fa4d415f545c66d0ee13b16d18f7c4d812f diff --git a/src/icons/16x16/configure.png b/src/icons/16x16/configure.png new file mode 100644 index 0000000..5ce478b Binary files /dev/null and b/src/icons/16x16/configure.png differ diff --git a/src/icons/16x16/document-open.png b/src/icons/16x16/document-open.png new file mode 100644 index 0000000..2d83b2a Binary files /dev/null and b/src/icons/16x16/document-open.png differ diff --git a/src/icons/16x16/document-save.png b/src/icons/16x16/document-save.png new file mode 100644 index 0000000..8072aea Binary files /dev/null and b/src/icons/16x16/document-save.png differ diff --git a/src/lib/routing/RoutingWidget.cpp b/src/lib/routing/RoutingWidget.cpp index bba13ee..a04de9f 100644 --- a/src/lib/routing/RoutingWidget.cpp +++ b/src/lib/routing/RoutingWidget.cpp @@ -224,7 +224,17 @@ RoutingWidget::RoutingWidget( MarbleWidget *marbleWidget, QWidget *parent ) : connect( d->m_ui.directionsListView, SIGNAL( activated ( QModelIndex ) ), this, SLOT( activateItem ( QModelIndex ) ) ); - connect( d->m_ui.searchButton, SIGNAL( clicked( ) ), + connect( d->m_ui.openRouteButton, SIGNAL( clicked() ), + this, SLOT( openRoute () ) ); + connect( d->m_ui.saveRouteButton, SIGNAL( clicked() ), + this, SLOT( saveRoute () ) ); + connect( d->m_ui.addViaButton, SIGNAL( clicked() ), + this, SLOT( addInputWidget() ) ); + connect( d->m_ui.reverseRouteButton, SIGNAL( clicked() ), + d->m_routingManager, SLOT( reverseRoute () ) ); + connect( d->m_ui.clearRouteButton, SIGNAL( clicked() ), + d->m_routingManager, SLOT( clearRoute () ) ); + connect( d->m_ui.searchButton, SIGNAL( clicked() ), this, SLOT( retrieveRoute () ) ); connect( d->m_ui.showInstructionsButton, SIGNAL( clicked( bool ) ), this, SLOT( showDirections() ) ); @@ -432,6 +442,8 @@ void RoutingWidget::updateRouteState( RoutingManager::State state ) if ( state == RoutingManager::Downloading ) { d->m_progressTimer.start(); } + + d->m_ui.saveRouteButton->setEnabled( d->m_routingManager->routingModel()->rowCount() > 0 ); } void RoutingWidget::requestMapPosition( RoutingInputWidget *widget, bool enabled ) @@ -503,32 +515,11 @@ void RoutingWidget::updateAlternativeRoutes() { if ( d->m_ui.routeComboBox->count() == 1) { // Parts of the route may lie outside the route trip points - GeoDataLineString bbox; - for ( int i = 0; i < d->m_routingManager->routingModel()->rowCount(); ++i ) { - QModelIndex index = d->m_routingManager->routingModel()->index( i, 0 ); - QVariant pos = index.data( MarblePlacemarkModel::CoordinateRole ); - if ( !pos.isNull() ) { - bbox << qVariantValue<GeoDataCoordinates>( pos ); - } - } - - if ( bbox.size() > 1 ) { -// qreal distance = d->m_routingManager->routingModel()->totalDistance(); -// unsigned int days = d->m_routingManager->routingModel()->duration().days; -// QTime time = d->m_routingManager->routingModel()->duration().time; -// QString timeString = time.toString( Qt::DefaultLocaleShortDate ); -// if ( days ) { -// QString label = tr( "Estimated travel time: %1 days, %2 (%3 km)", 0, days ); -// d->m_ui.descriptionLabel->setText( label.arg( days ).arg( timeString ).arg( distance, 0, 'f', 1 ) ); -// } else { -// QString label = tr( "Estimated travel time: %1 (%2 km)" ); -// d->m_ui.descriptionLabel->setText( label.arg( timeString ).arg( distance, 0, 'f', 1 ) ); -// } -// d->m_ui.descriptionLabel->setVisible( true ); - + GeoDataLatLonBox const bbox = d->m_routingManager->routingModel()->route().bounds(); + if ( !bbox.isEmpty() ) { if ( d->m_zoomRouteAfterDownload ) { d->m_zoomRouteAfterDownload = false; - d->m_widget->centerOn( GeoDataLatLonBox::fromLineString( bbox ) ); + d->m_widget->centerOn( bbox ); } } } @@ -544,6 +535,7 @@ void RoutingWidget::updateAlternativeRoutes() QString const results = tr( "%n routes found", "", d->m_ui.routeComboBox->count() ); d->m_ui.resultLabel->setText( results ); d->m_ui.resultLabel->setVisible( true ); + d->m_ui.saveRouteButton->setEnabled( d->m_routingManager->routingModel()->rowCount() > 0 ); } void RoutingWidget::setShowDirectionsButtonVisible( bool visible ) @@ -557,15 +549,9 @@ void RoutingWidget::openRoute() d->m_routingManager->lastOpenPath(), tr("KML Files (*.kml)") ); if ( !file.isEmpty() ) { d->m_routingManager->setLastOpenPath( QFileInfo( file ).absolutePath() ); - d->m_routingManager->alternativeRoutesModel()->clear(); + d->m_zoomRouteAfterDownload = true; d->m_routingManager->loadRoute( file ); - GeoDataDocument* route = d->m_routingManager->alternativeRoutesModel()->route( 0 ); - if ( route ) { - GeoDataLineString* waypoints = d->m_routingManager->alternativeRoutesModel()->waypoints( route ); - if ( waypoints ) { - d->m_widget->centerOn( waypoints->latLonAltBox() ); - } - } + updateAlternativeRoutes(); } } diff --git a/src/lib/routing/RoutingWidget.ui b/src/lib/routing/RoutingWidget.ui index 7d0620c..0cf837e 100644 --- a/src/lib/routing/RoutingWidget.ui +++ b/src/lib/routing/RoutingWidget.ui @@ -6,23 +6,47 @@ <rect> <x>0</x> <y>0</y> - <width>282</width> - <height>319</height> + <width>245</width> + <height>414</height> </rect> </property> <layout class="QVBoxLayout" name="routingLayout"> - <property name="sizeConstraint"> - <enum>QLayout::SetMinAndMaxSize</enum> - </property> <item> - <layout class="QHBoxLayout" name="horizontalLayout"> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <item> + <widget class="QPushButton" name="addViaButton"> + <property name="text"> + <string>Add Via</string> + </property> + <property name="checkable"> + <bool>false</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="reverseRouteButton"> + <property name="text"> + <string>Reverse</string> + </property> + <property name="checkable"> + <bool>false</bool> + </property> + </widget> + </item> <item> - <widget class="QLabel" name="preferenceLabel"> + <widget class="QPushButton" name="clearRouteButton"> <property name="text"> - <string>Profile</string> + <string>Clear</string> + </property> + <property name="checkable"> + <bool>false</bool> </property> </widget> </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QComboBox" name="routingProfileComboBox"> <item> @@ -61,9 +85,13 @@ </spacer> </item> <item> - <widget class="QPushButton" name="configureButton"> + <widget class="QToolButton" name="configureButton"> <property name="text"> - <string>Configure</string> + <string/> + </property> + <property name="icon"> + <iconset resource="../../marble.qrc"> + <normaloff>:/icons/16x16/configure.png</normaloff>:/icons/16x16/configure.png</iconset> </property> </widget> </item> @@ -130,14 +158,42 @@ </widget> </item> <item> - <widget class="QComboBox" name="routeComboBox"> - <property name="toolTip"> - <string>Choose alternative routes</string> - </property> - </widget> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QComboBox" name="routeComboBox"> + <property name="toolTip"> + <string>Choose alternative routes</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="openRouteButton"> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../../marble.qrc"> + <normaloff>:/icons/16x16/document-open.png</normaloff>:/icons/16x16/document-open.png</iconset> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="saveRouteButton"> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../../marble.qrc"> + <normaloff>:/icons/16x16/document-save.png</normaloff>:/icons/16x16/document-save.png</iconset> + </property> + </widget> + </item> + </layout> </item> </layout> </widget> - <resources/> + <resources> + <include location="../../marble.qrc"/> + </resources> <connections/> </ui> diff --git a/src/marble.qrc b/src/marble.qrc index 089f627..ac7da95 100644 --- a/src/marble.qrc +++ b/src/marble.qrc @@ -50,8 +50,11 @@ <file>icons/crosshairs.png</file> <file>icons/elevationprofile.png</file> <file>icons/16x16/task-accepted.png</file> + <file>icons/16x16/document-open.png</file> + <file>icons/16x16/document-save.png</file> <file>icons/16x16/task-attention.png</file> <file>icons/16x16/edit-find.png</file> + <file>icons/16x16/configure.png</file> <file>icons/16x16/edit-clear-locationbar-ltr.png</file> <file>icons/16x16/edit-clear-locationbar-rtl.png</file> <file>icons/22x22/edit-clear-locationbar-ltr.png</file>
