Fix another issue with station details not being saved

Due to  what appears to be  a Qt bug, any  in progress user edit  to a
table  fields is  not  updated  in the  underlying  data models  until
QDialog::accept() is  called, this means that  model validation before
calling QDialog::accept() is tricky.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5164 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Bill Somerville 2015-04-06 13:25:51 +00:00
parent dad4863e84
commit 3781bdb57a
5 changed files with 16 additions and 14 deletions

View File

@ -1490,6 +1490,13 @@ void Configuration::impl::accept ()
{
return; // not accepting
}
QDialog::accept(); // do this before accessing custom
// models so that any changes in
// delegates in views get flushed to
// the underlying models before we
// access them
sync_transceiver (true); // force an update
//
@ -1637,8 +1644,6 @@ void Configuration::impl::accept ()
}
write_settings (); // make visible to all
QDialog::accept();
}
void Configuration::impl::reject ()

View File

@ -58,7 +58,6 @@ FrequencyList::FrequencyList (Frequencies frequencies, QObject * parent)
: QSortFilterProxyModel {parent}
, m_ {frequencies, parent}
{
// setDynamicSortFilter (true);
setSourceModel (&*m_);
setSortRole (SortRole);
}
@ -73,9 +72,8 @@ FrequencyList& FrequencyList::operator = (Frequencies frequencies)
return *this;
}
auto FrequencyList::frequencies () -> Frequencies
auto FrequencyList::frequencies () const -> Frequencies
{
submit ();
return m_->frequencies ();
}

View File

@ -41,7 +41,7 @@ public:
// Load and store contents
FrequencyList& operator = (Frequencies);
Frequencies frequencies ();
Frequencies frequencies () const;
// Model API
QModelIndex add (Frequency);

View File

@ -119,7 +119,6 @@ StationList::StationList (Bands const * bands, Stations stations, QObject * pare
: QSortFilterProxyModel {parent}
, m_ {bands, stations, parent}
{
// setDynamicSortFilter (true);
setSourceModel (&*m_);
setSortRole (SortRole);
}
@ -134,9 +133,8 @@ StationList& StationList::operator = (Stations stations)
return *this;
}
auto StationList::stations () -> Stations
auto StationList::stations () const -> Stations
{
submit ();
return m_->stations ();
}
@ -432,6 +430,7 @@ bool StationList::impl::setData (QModelIndex const& model_index, QVariant const&
case 2:
stations_[row].antenna_description_ = value.toString ();
qDebug () << "stations edited:" << stations_;
Q_EMIT dataChanged (model_index, model_index, roles);
changed = true;
break;

View File

@ -65,7 +65,7 @@ public:
// Load and store contents.
StationList& operator = (Stations);
Stations stations ();
Stations stations () const;
//
// Model API
@ -83,6 +83,10 @@ private:
pimpl<impl> m_;
};
#if !defined (QT_NO_DEBUG_STREAM)
QDebug operator << (QDebug debug, StationList::Station const&);
#endif
// Station equivalence
inline
bool operator == (StationList::Station const& lhs, StationList::Station const& rhs)
@ -95,8 +99,4 @@ bool operator == (StationList::Station const& lhs, StationList::Station const& r
Q_DECLARE_METATYPE (StationList::Station);
Q_DECLARE_METATYPE (StationList::Stations);
#if !defined (QT_NO_DEBUG_STREAM)
QDebug operator << (QDebug debug, StationList::Station const&);
#endif
#endif