QGIS API Documentation 4.1.0-Master (5bf3c20f3c9)
Loading...
Searching...
No Matches
qgshttpheaderwidget.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgshttpheaderswidget.cpp
3 This class implements simple UI for http header.
4
5 -------------------
6 begin : 2021-09-09
7 copyright : (C) 2021 B. De Mezzo
8 email : benoit dot de dot mezzo at oslandia dot com
9
10***************************************************************************/
11
12/***************************************************************************
13 * *
14 * This program is free software; you can redistribute it and/or modify *
15 * it under the terms of the GNU General Public License as published by *
16 * the Free Software Foundation; either version 2 of the License, or *
17 * (at your option) any later version. *
18 * *
19 ***************************************************************************/
20
21#include "ui_qgshttpheaderwidget.h"
22#include "qgshttpheaderwidget.h"
23
24#include "qgsapplication.h"
25
26#include <QString>
27
28#include "moc_qgshttpheaderwidget.cpp"
29
30using namespace Qt::StringLiterals;
31
33 : QWidget( parent )
34{
35 setupUi( this );
36 btnAddQueryPair->setIcon( QgsApplication::getThemeIcon( u"/symbologyAdd.svg"_s ) );
37 btnRemoveQueryPair->setIcon( QgsApplication::getThemeIcon( u"/symbologyRemove.svg"_s ) );
38 grpbxAdvanced->setCollapsed( true );
39
40 // Action and interaction connections
41 connect( btnAddQueryPair, &QToolButton::clicked, this, &QgsHttpHeaderWidget::addQueryPair );
42 connect( btnRemoveQueryPair, &QToolButton::clicked, this, &QgsHttpHeaderWidget::removeQueryPair );
43}
44
46
47void QgsHttpHeaderWidget::addQueryPairRow( const QString &key, const QString &val )
48{
49 const int rowCnt = tblwdgQueryPairs->rowCount();
50 tblwdgQueryPairs->insertRow( rowCnt );
51
52 const Qt::ItemFlags itemFlags = Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsDropEnabled;
53
54 QTableWidgetItem *keyItem = new QTableWidgetItem( key );
55 keyItem->setFlags( itemFlags );
56 tblwdgQueryPairs->setItem( rowCnt, 0, keyItem );
57
58 QTableWidgetItem *valueItem = new QTableWidgetItem( val );
59 valueItem->setFlags( itemFlags );
60 tblwdgQueryPairs->setItem( rowCnt, 1, valueItem );
61}
62
64{
65 QgsHttpHeaders querypairs;
66 for ( int i = 0; i < tblwdgQueryPairs->rowCount(); ++i )
67 {
68 if ( tblwdgQueryPairs->item( i, 0 )->text().isEmpty() )
69 {
70 continue;
71 }
72 querypairs[tblwdgQueryPairs->item( i, 0 )->text()] = QVariant( tblwdgQueryPairs->item( i, 1 )->text() );
73 }
74
75 if ( !mRefererLineEdit->text().isEmpty() )
76 {
77 querypairs["referer"] = QVariant( mRefererLineEdit->text() );
78 }
79
80#if 0
81 for ( auto k : querypairs.keys() )
82 {
83 QgsLogger::debug( QString( "httpHeaders called: %1=%2" ).arg( k, querypairs[k].toString() ) );
84 }
85#endif
86
87 return querypairs;
88}
89
90
91void QgsHttpHeaderWidget::addQueryPair()
92{
93 addQueryPairRow( QString(), QString() );
94 tblwdgQueryPairs->setFocus();
95 tblwdgQueryPairs->setCurrentCell( tblwdgQueryPairs->rowCount() - 1, 0 );
96}
97
98
99void QgsHttpHeaderWidget::removeQueryPair()
100{
101 tblwdgQueryPairs->removeRow( tblwdgQueryPairs->currentRow() );
102}
103
104
105void QgsHttpHeaderWidget::setFromSettings( const QgsSettings &settings, const QString &key )
106{
107 // load headers from settings
108 QgsHttpHeaders headers;
109 headers.setFromSettings( settings, key );
110 setHeaders( headers );
111}
112
114{
115 // clean table
116 for ( int i = tblwdgQueryPairs->rowCount(); i > 0; i-- )
117 tblwdgQueryPairs->removeRow( i - 1 );
118
119 // push headers to table
120 QList<QString> lst = headers.keys();
121 for ( auto ite = lst.constBegin(); ite != lst.constEnd(); ++ite )
122 {
123 if ( ite->compare( "referer" ) != 0 )
124 {
125 addQueryPairRow( *ite, headers[*ite].toString() );
126 }
127 else
128 {
129 mRefererLineEdit->setText( headers[*ite].toString() );
130 }
131 }
132}
133
134void QgsHttpHeaderWidget::updateSettings( QgsSettings &settings, const QString &key ) const
135{
138 h.updateSettings( settings, key );
140}
static QIcon getThemeIcon(const QString &name, const QColor &fillColor=QColor(), const QColor &strokeColor=QColor())
Helper to get a theme icon.
~QgsHttpHeaderWidget() override
QgsHttpHeaderWidget(QWidget *parent=nullptr)
Default constructor.
void setHeaders(const QgsHttpHeaders &headers)
Sets the widget from the headers.
Q_DECL_DEPRECATED void updateSettings(QgsSettings &settings, const QString &key) const SIP_DEPRECATED
update the settings with the http headers present in the inner map.
Q_DECL_DEPRECATED void setFromSettings(const QgsSettings &settings, const QString &key) SIP_DEPRECATED
fill the inner header map from the settings defined at key
QgsHttpHeaders httpHeaders() const
Returns the headers as defined in the widget.
Implements simple HTTP header management.
QList< QString > keys() const
Returns the list of all HTTP header keys.
void setFromSettings(const QgsSettings &settings, const QString &key=QString())
Loads headers from the settings.
static void debug(const QString &msg, int debuglevel=1, const char *file=nullptr, const char *function=nullptr, int line=-1)
Goes to qDebug.
Definition qgslogger.cpp:62
Stores settings for use within QGIS.
Definition qgssettings.h:68
#define Q_NOWARN_DEPRECATED_POP
Definition qgis.h:7504
#define Q_NOWARN_DEPRECATED_PUSH
Definition qgis.h:7503