6 #include "PlacemarkEditHeader.h"
7 #include "ui_PlacemarkEditHeader.h"
10 #include "MarbleDebug.h"
17 class PlacemarkEditHeaderPrivate :
public Ui::PlacemarkEditHeaderPrivate
21 explicit PlacemarkEditHeaderPrivate(PlacemarkEditHeader *_q);
22 ~PlacemarkEditHeaderPrivate();
26 void setName(
const QString &name);
28 void setIconLink(
const QString &iconLink);
30 qreal longitude()
const;
31 void setLongitude(qreal longitude);
32 qreal latitude()
const;
33 void setLatitude(qreal latitude);
38 bool isIdVisible()
const;
39 void setIdVisible(
bool visible );
40 bool isIdValid()
const;
42 bool positionVisible()
const;
43 void setPositionVisible(
bool visible );
45 void setTargetId(
const QString &targetId );
47 void setTargetIdList(
const QStringList &targetIdList );
48 bool isTargetIdVisible()
const;
49 void setTargetIdVisible(
bool visible );
53 PlacemarkEditHeader*
const q;
54 bool m_positionVisible;
62 PlacemarkEditHeaderPrivate::PlacemarkEditHeaderPrivate(PlacemarkEditHeader* _q)
64 m_positionVisible(true),
65 m_idWasEdited( false )
68 PlacemarkEditHeaderPrivate::~PlacemarkEditHeaderPrivate()
71 void PlacemarkEditHeaderPrivate::init(
QWidget* parent)
74 m_longitude->setDimension(LatLonEdit::Longitude);
75 m_latitude->setDimension(LatLonEdit::Latitude);
76 m_targetId->setVisible(
false);
77 targetIdLabel->setVisible(
false);
79 QObject::connect( iconLinkButton, SIGNAL(clicked()), q, SLOT(loadIconFile()) );
84 m_longitude->setNotation(notation);
85 m_latitude->setNotation(notation);
90 return m_longitude->notation();
93 void PlacemarkEditHeaderPrivate::setName(
const QString &name)
95 m_name->setText(name);
96 if( !m_idWasEdited ) {
101 QString PlacemarkEditHeaderPrivate::name()
const
103 return m_name->text();
106 void PlacemarkEditHeaderPrivate::setIconLink(
const QString &iconLink)
109 if( !pixmap.isNull() ) {
111 m_iconLink->setText(iconLink);
112 iconLinkButton->setText(
QString());
113 iconLinkButton->setIcon( icon );
117 QString PlacemarkEditHeaderPrivate::iconLink()
const
119 return m_iconLink->text();
122 qreal PlacemarkEditHeaderPrivate::longitude()
const
124 return m_longitude->value();
127 void PlacemarkEditHeaderPrivate::setLongitude(qreal longitude)
129 m_longitude->setValue(longitude);
132 qreal PlacemarkEditHeaderPrivate::latitude()
const
134 return m_latitude->value();
137 void PlacemarkEditHeaderPrivate::setLatitude(qreal latitude)
139 m_latitude->setValue(latitude);
142 QString PlacemarkEditHeaderPrivate::id()
const
147 QString PlacemarkEditHeaderPrivate::setId(
const QString &
id,
bool isNew )
150 if( newId == m_idString && !isNew ) {
154 m_idFilter.removeOne( m_idString );
156 if( m_idFilter.contains( newId ) && m_id->hasFocus() ) {
160 if ( m_idFilter.contains( newId ) ) {
162 for (
const QString &filterString : m_idFilter ) {
163 if( filterString.startsWith( newId ) ) {
164 filter.append( filterString );
175 m_idFilter.
append( newId );
176 m_id->setText( newId );
180 QStringList PlacemarkEditHeaderPrivate::idFilter()
const
185 void PlacemarkEditHeaderPrivate::setIdFilter(
const QStringList &filter)
191 bool PlacemarkEditHeaderPrivate::isIdVisible()
const
193 return m_id->isVisible() && idLabel->isVisible();
196 void PlacemarkEditHeaderPrivate::setIdVisible(
bool visible)
198 m_id->setVisible( visible );
199 idLabel->setVisible( visible );
202 bool PlacemarkEditHeaderPrivate::isIdValid()
const
207 void PlacemarkEditHeaderPrivate::loadIconFile()
213 if ( filename.
isNull() ) {
217 setIconLink(filename);
218 iconLinkButton->setIcon(
QIcon(filename) );
221 bool PlacemarkEditHeaderPrivate::positionVisible()
const
223 return m_positionVisible;
226 void PlacemarkEditHeaderPrivate::setPositionVisible(
bool visible)
228 m_longitude->setVisible(visible);
229 m_latitude->setVisible(visible);
230 positionLabel->setVisible(visible);
231 m_positionVisible = visible;
234 QString PlacemarkEditHeaderPrivate::targetId()
const
236 return m_targetId->currentText();
239 void PlacemarkEditHeaderPrivate::setTargetId(
const QString &targetId)
241 m_targetId->setCurrentIndex( m_targetId->findText( targetId ) );
242 m_targetIdString = targetId;
245 QStringList PlacemarkEditHeaderPrivate::targetIdList()
const
248 for(
int i = 0; i < m_targetId->count(); ++i ) {
249 result.
append( m_targetId->itemText( i ) );
254 void PlacemarkEditHeaderPrivate::setTargetIdList(
const QStringList &targetIdList)
257 if( m_targetId->currentIndex() != -1 ) {
258 current = m_targetId->currentText();
260 current = m_targetIdString;
263 m_targetId->addItems( targetIdList );
264 setTargetId( current );
267 bool PlacemarkEditHeaderPrivate::isTargetIdVisible()
const
269 return m_targetId->isVisible() && targetIdLabel->isVisible();
272 void PlacemarkEditHeaderPrivate::setTargetIdVisible(
bool visible)
274 m_targetId->setVisible( visible );
275 targetIdLabel->setVisible( visible );
278 void PlacemarkEditHeaderPrivate::updateValues()
280 if( m_idString !=
id() ) {
282 m_idWasEdited =
true;
283 }
else if( !m_idWasEdited && isIdVisible() ){
288 void PlacemarkEditHeaderPrivate::selectAll()
303 :
QWidget( parent ), d(new PlacemarkEditHeaderPrivate(this))
306 d->setNotation(notation);
308 d->setIconLink(iconLink);
309 d->setIdFilter(idFilter);
310 d->setId(
id.isEmpty() ? d->name() :
id );
311 connect(d->m_longitude, SIGNAL(valueChanged(qreal)),
this, SLOT(updateValues()));
312 connect(d->m_latitude, SIGNAL(valueChanged(qreal)),
this, SLOT(updateValues()));
313 connect(d->m_name, SIGNAL(textChanged(
QString)),
this, SLOT(updateValues()));
314 connect(d->m_iconLink, SIGNAL(textChanged(
QString)),
this, SLOT(updateValues()));
315 connect(d->m_id, SIGNAL(textChanged(
QString)),
this, SLOT(updateValues()));
318 PlacemarkEditHeader::~PlacemarkEditHeader()
323 QString PlacemarkEditHeader::name()
const
328 QString PlacemarkEditHeader::iconLink()
const
330 return d->iconLink();
333 qreal PlacemarkEditHeader::latitude()
const
335 return d->latitude();
338 qreal PlacemarkEditHeader::longitude()
const
340 return d->longitude();
345 return d->notation();
348 bool PlacemarkEditHeader::positionVisible()
const
350 return d->positionVisible();
353 QString PlacemarkEditHeader::id()
const
360 return d->idFilter();
363 bool PlacemarkEditHeader::isIdVisible()
const
365 return d->isIdVisible();
368 bool PlacemarkEditHeader::isIdValid()
const
370 return d->isIdValid();
373 QString PlacemarkEditHeader::targetId()
const
375 return d->targetId();
378 QStringList PlacemarkEditHeader::targetIdList()
const
380 return d->targetIdList();
383 bool PlacemarkEditHeader::isTargetIdVisible()
const
385 return d->isTargetIdVisible();
388 void PlacemarkEditHeader::setName(
const QString &name)
393 void PlacemarkEditHeader::setIconLink(
const QString &iconLink)
395 d->setIconLink(iconLink);
398 void PlacemarkEditHeader::setLatitude(qreal latitude)
400 d->setLatitude(latitude);
403 void PlacemarkEditHeader::setLongitude(qreal longitude)
405 d->setLongitude(longitude);
410 d->setNotation(notation);
413 void PlacemarkEditHeader::setPositionVisible(
bool visible)
415 d->setPositionVisible(visible);
420 return d->setId(
id );
423 void PlacemarkEditHeader::setIdFilter(
const QStringList &filter )
425 d->setIdFilter( filter );
428 void PlacemarkEditHeader::setIdVisible(
bool visible)
430 d->setIdVisible( visible );
433 void PlacemarkEditHeader::setTargetId(
const QString &targetId)
435 d->setTargetId( targetId );
438 void PlacemarkEditHeader::setTargetIdList(
const QStringList &targetIdList)
440 d->setTargetIdList( targetIdList );
443 void PlacemarkEditHeader::setTargetIdVisible(
bool visible)
445 d->setTargetIdVisible( visible );
448 void PlacemarkEditHeader::selectAll()
453 void PlacemarkEditHeader::setReadOnly(
bool state)
455 d->m_longitude->setDisabled(state);
456 d->m_latitude->setDisabled(state);
457 d->m_name->setReadOnly(state);
458 d->m_iconLink->setReadOnly(state);
459 d->iconLinkButton->setDisabled(state);
460 d->m_id->setReadOnly(state);
461 d->m_targetId->setDisabled(state);
462 d->m_iconLink->setReadOnly(state);
464 d->idLabel->setVisible(!state);
465 d->m_id->setVisible(!state);
468 void PlacemarkEditHeader::updateValues()
470 disconnect(d->m_id, SIGNAL(textChanged(
QString)),
this, SLOT(updateValues()));
472 connect(d->m_id, SIGNAL(textChanged(
QString)),
this, SLOT(updateValues()));
478 #include "moc_PlacemarkEditHeader.cpp"