Navigation Menu

Skip to content

Commit

Permalink
[QGIS-Server] Help editing OWS Server general information
Browse files Browse the repository at this point in the history
Fees and access constraints have a defined list of value by ISO. To help user editing these parameters, edit lines have been remplaced by editable combo box.

To enhance general information and has more INSPIRE compatibility, contact position is added to general information.
  • Loading branch information
rldhont committed Nov 28, 2015
1 parent 25c68c6 commit 5473c33
Show file tree
Hide file tree
Showing 5 changed files with 152 additions and 22 deletions.
101 changes: 97 additions & 4 deletions src/app/qgsprojectproperties.cpp
Expand Up @@ -51,6 +51,8 @@
#include "qgsexpressioncontext.h"
#include "qgsmapoverviewcanvas.h"

#include "qgsmessagelog.h"

//qt includes
#include <QInputDialog>
#include <QFileDialog>
Expand Down Expand Up @@ -270,10 +272,66 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas* mapCanvas, QWidget *pa
mWMSAbstract->setPlainText( QgsProject::instance()->readEntry( "WMSServiceAbstract", "/", "" ) );
mWMSOnlineResourceLineEdit->setText( QgsProject::instance()->readEntry( "WMSOnlineResource", "/", "" ) );
mWMSUrlLineEdit->setText( QgsProject::instance()->readEntry( "WMSUrl", "/", "" ) );
mWMSFees->setText( QgsProject::instance()->readEntry( "WMSFees", "/", "" ) );
mWMSAccessConstraints->setText( QgsProject::instance()->readEntry( "WMSAccessConstraints", "/", "" ) );
mWMSKeywordList->setText( QgsProject::instance()->readListEntry( "WMSKeywordList", "/" ).join( ", " ) );

// WMS Contact Position
QString contactPositionText = QgsProject::instance()->readEntry( "WMSContactPosition", "/", "" );
mWMSContactPositionCb->addItem( "" );
mWMSContactPositionCb->addItem( tr( "Custodian" ), "custodian" );
mWMSContactPositionCb->addItem( tr( "Owner" ), "owner" );
mWMSContactPositionCb->addItem( tr( "User" ), "user" );
mWMSContactPositionCb->addItem( tr( "Distributor" ), "distributor" );
mWMSContactPositionCb->addItem( tr( "Originator" ), "originator" );
mWMSContactPositionCb->addItem( tr( "Point of contact" ), "pointOfContact" );
mWMSContactPositionCb->addItem( tr( "Principal investigator" ), "principalInvestigator" );
mWMSContactPositionCb->addItem( tr( "Processor" ), "processor" );
mWMSContactPositionCb->addItem( tr( "Publisher" ), "publisher" );
mWMSContactPositionCb->addItem( tr( "Author" ), "author" );
int contactPositionIndex = mWMSContactPositionCb->findData( contactPositionText );
if ( contactPositionIndex > 0 )
{
mWMSContactPositionCb->setCurrentIndex( contactPositionIndex );
}
else if ( contactPositionText != "" )
{
mWMSContactPositionCb->setEditText( contactPositionText );
}

// WMS Fees
QString feesText = QgsProject::instance()->readEntry( "WMSFees", "/", "" );
mWMSFeesCb->addItem( tr( "Conditions unknown" ), "conditions unknown" );
mWMSFeesCb->addItem( tr( "No conditions apply" ), "no conditions apply" );
int feesIndex = mWMSFeesCb->findData( feesText );
if ( feesIndex > -1 )
{
mWMSFeesCb->setCurrentIndex( feesIndex );
}
else if ( feesText != "" )
{
mWMSFeesCb->setEditText( feesText );
}

// WMS Access Constraints
QString accessConstraintsText = QgsProject::instance()->readEntry( "WMSAccessConstraints", "/", "" );
mWMSAccessConstraintsCb->addItem( tr( "None" ), "None" );
mWMSAccessConstraintsCb->addItem( tr( "Copyright" ), "copyright" );
mWMSAccessConstraintsCb->addItem( tr( "Patent" ), "patent" );
mWMSAccessConstraintsCb->addItem( tr( "Patent pending" ), "patentPending" );
mWMSAccessConstraintsCb->addItem( tr( "Trademark" ), "trademark" );
mWMSAccessConstraintsCb->addItem( tr( "License" ), "license" );
mWMSAccessConstraintsCb->addItem( tr( "Intellectual property rights" ), "intellectualPropertyRights" );
mWMSAccessConstraintsCb->addItem( tr( "Restricted" ), "restricted" );
mWMSAccessConstraintsCb->addItem( tr( "Other restrictions" ), "otherRestrictions" );
int accessConstraintsIndex = mWMSAccessConstraintsCb->findData( accessConstraintsText );
if ( accessConstraintsIndex > -1 )
{
mWMSAccessConstraintsCb->setCurrentIndex( accessConstraintsIndex );
}
else if ( accessConstraintsText != "" )
{
mWMSAccessConstraintsCb->setEditText( accessConstraintsText );
}

// WMS GetFeatureInfo precision
int WMSprecision = QgsProject::instance()->readNumEntry( "WMSPrecision", "/", -1 );
if ( WMSprecision != -1 )
Expand Down Expand Up @@ -737,8 +795,43 @@ void QgsProjectProperties::apply()
QgsProject::instance()->writeEntry( "WMSServiceAbstract", "/", mWMSAbstract->toPlainText() );
QgsProject::instance()->writeEntry( "WMSOnlineResource", "/", mWMSOnlineResourceLineEdit->text() );
QgsProject::instance()->writeEntry( "WMSUrl", "/", mWMSUrlLineEdit->text() );
QgsProject::instance()->writeEntry( "WMSFees", "/", mWMSFees->text() );
QgsProject::instance()->writeEntry( "WMSAccessConstraints", "/", mWMSAccessConstraints->text() );

// WMS Contact Position
int contactPositionIndex = mWMSContactPositionCb->currentIndex();
QString contactPositionText = mWMSContactPositionCb->currentText();
if ( contactPositionText != "" && contactPositionText == mWMSContactPositionCb->itemText( contactPositionIndex ) )
{
QgsProject::instance()->writeEntry( "WMSContactPosition", "/", mWMSContactPositionCb->itemData( contactPositionIndex ).toString() );
}
else
{
QgsProject::instance()->writeEntry( "WMSContactPosition", "/", contactPositionText );
}

// WMS Fees
int feesIndex = mWMSFeesCb->currentIndex();
QString feesText = mWMSFeesCb->currentText();
if ( feesText != "" && feesText == mWMSFeesCb->itemText( feesIndex ) )
{
QgsProject::instance()->writeEntry( "WMSFees", "/", mWMSFeesCb->itemData( feesIndex ).toString() );
}
else
{
QgsProject::instance()->writeEntry( "WMSFees", "/", feesText );
}

// WMS Access Constraints
int accessConstraintsIndex = mWMSAccessConstraintsCb->currentIndex();
QString accessConstraintsText = mWMSAccessConstraintsCb->currentText();
if ( accessConstraintsText != "" && accessConstraintsText == mWMSAccessConstraintsCb->itemText( accessConstraintsIndex ) )
{
QgsProject::instance()->writeEntry( "WMSAccessConstraints", "/", mWMSAccessConstraintsCb->itemData( accessConstraintsIndex ).toString() );
}
else
{
QgsProject::instance()->writeEntry( "WMSAccessConstraints", "/", accessConstraintsText );
}

//WMS keyword list
QStringList keywordStringList = mWMSKeywordList->text().split( ',' );
if ( keywordStringList.size() > 0 )
Expand Down
12 changes: 12 additions & 0 deletions src/server/qgsserverprojectparser.cpp
Expand Up @@ -491,6 +491,18 @@ void QgsServerProjectParser::serviceCapabilities( QDomElement& parentElement, QD
QDomText contactOrganizationText = doc.createTextNode( contactOrganizationString );
wmsContactOrganizationElem.appendChild( contactOrganizationText );
contactPersonPrimaryElem.appendChild( wmsContactOrganizationElem );

//Contact position
QDomElement contactPositionElem = propertiesElement.firstChildElement( "WMSContactPosition" );
QString contactPositionString;
if ( !contactPositionElem.isNull() )
{
contactPositionString = contactPositionElem.text();
}
QDomElement wmsContactPositionElem = doc.createElement( "ContactPosition" );
QDomText contactPositionText = doc.createTextNode( contactPositionString );
wmsContactPositionElem.appendChild( contactPositionText );
contactPersonPrimaryElem.appendChild( wmsContactPositionElem );
contactInfoElem.appendChild( contactPersonPrimaryElem );

//phone
Expand Down
59 changes: 41 additions & 18 deletions src/ui/qgsprojectpropertiesbase.ui
Expand Up @@ -1449,12 +1449,6 @@
<string notr="true">projowsserver</string>
</property>
<layout class="QGridLayout" name="gridLayout_6">
<item row="7" column="1">
<widget class="QLineEdit" name="mWMSFees"/>
</item>
<item row="8" column="1">
<widget class="QLineEdit" name="mWMSAccessConstraints"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
Expand Down Expand Up @@ -1485,13 +1479,13 @@
</property>
</widget>
</item>
<item row="4" column="1">
<item row="5" column="1">
<widget class="QLineEdit" name="mWMSContactMail"/>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="mWMSContactPerson"/>
</item>
<item row="4" column="0">
<item row="5" column="0">
<widget class="QLabel" name="label_13">
<property name="text">
<string>E-Mail</string>
Expand All @@ -1501,7 +1495,7 @@
<item row="1" column="1">
<widget class="QLineEdit" name="mWMSContactOrganization"/>
</item>
<item row="5" column="0">
<item row="6" column="0">
<widget class="QLabel" name="label_12">
<property name="text">
<string>Phone</string>
Expand All @@ -1514,7 +1508,7 @@
<item row="0" column="1">
<widget class="QLineEdit" name="mWMSTitle"/>
</item>
<item row="6" column="0">
<item row="7" column="0">
<widget class="QLabel" name="label_15">
<property name="text">
<string>Abstract</string>
Expand All @@ -1524,20 +1518,20 @@
</property>
</widget>
</item>
<item row="5" column="1">
<item row="6" column="1">
<widget class="QLineEdit" name="mWMSContactPhone"/>
</item>
<item row="6" column="1">
<item row="7" column="1">
<widget class="QTextEdit" name="mWMSAbstract"/>
</item>
<item row="9" column="0">
<item row="10" column="0">
<widget class="QLabel" name="mWMSKeywordListLabel">
<property name="text">
<string>Keyword list</string>
</property>
</widget>
</item>
<item row="9" column="1">
<item row="10" column="1">
<widget class="QLineEdit" name="mWMSKeywordList"/>
</item>
<item row="1" column="0">
Expand All @@ -1550,20 +1544,48 @@
</property>
</widget>
</item>
<item row="8" column="0">
<item row="9" column="0">
<widget class="QLabel" name="mWMSAccessConstraintsLabel">
<property name="text">
<string>Access constraints</string>
</property>
</widget>
</item>
<item row="7" column="0">
<item row="8" column="0">
<widget class="QLabel" name="mWMSFeesLabel">
<property name="text">
<string>Fees</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QComboBox" name="mWMSFeesCb">
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QComboBox" name="mWMSAccessConstraintsCb">
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_20">
<property name="text">
<string>Position</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QComboBox" name="mWMSContactPositionCb">
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
Expand Down Expand Up @@ -2391,9 +2413,10 @@
<tabstop>mWMSContactPerson</tabstop>
<tabstop>mWMSContactMail</tabstop>
<tabstop>mWMSContactPhone</tabstop>
<tabstop>mWMSContactPositionCb</tabstop>
<tabstop>mWMSAbstract</tabstop>
<tabstop>mWMSFees</tabstop>
<tabstop>mWMSAccessConstraints</tabstop>
<tabstop>mWMSFeesCb</tabstop>
<tabstop>mWMSAccessConstraintsCb</tabstop>
<tabstop>mWMSKeywordList</tabstop>
<tabstop>grpWMSExt</tabstop>
<tabstop>mWMSExtMinX</tabstop>
Expand Down
1 change: 1 addition & 0 deletions tests/testdata/qgis_server/getcapabilities.txt
Expand Up @@ -15,6 +15,7 @@ Content-Type: text/xml; charset=utf-8
<ContactPersonPrimary>
<ContactPerson>Alessandro Pasotti</ContactPerson>
<ContactOrganization>QGIS dev team</ContactOrganization>
<ContactPosition></ContactPosition>
</ContactPersonPrimary>
<ContactVoiceTelephone></ContactVoiceTelephone>
<ContactElectronicMailAddress>elpaso@itopen.it</ContactElectronicMailAddress>
Expand Down
1 change: 1 addition & 0 deletions tests/testdata/qgis_server/getprojectsettings.txt
Expand Up @@ -15,6 +15,7 @@ Content-Type: text/xml; charset=utf-8
<ContactPersonPrimary>
<ContactPerson>Alessandro Pasotti</ContactPerson>
<ContactOrganization>QGIS dev team</ContactOrganization>
<ContactPosition></ContactPosition>
</ContactPersonPrimary>
<ContactVoiceTelephone></ContactVoiceTelephone>
<ContactElectronicMailAddress>elpaso@itopen.it</ContactElectronicMailAddress>
Expand Down

0 comments on commit 5473c33

Please sign in to comment.