10 #include <QStandardItemModel> 11 #include <QNetworkInterface> 12 #include <xmlsettingsdialog/datasourceroles.h> 13 #include <xmlsettingsdialog/basesettingsmanager.h> 21 const auto& addrs = QNetworkInterface::allAddresses ();
23 hosts.reserve (addrs.size ());
24 for (
const auto& addr : addrs)
26 if (!addr.scopeId ().isEmpty ())
29 const auto& str = addr.toString ();
41 , Model_ {
new QStandardItemModel {
this } }
44 Model_->setHorizontalHeaderLabels ({ tr (
"Host"), tr (
"Port") });
46 using namespace DataSources;
48 const auto hostHeader = Model_->horizontalHeaderItem (0);
49 hostHeader->setData (DataFieldType::Enum, DataSourceRole::FieldType);
50 hostHeader->setData (QVariant::fromValue<EnumValueInfoGenerator> (GetAddrInfos), DataSourceRole::FieldValuesGenerator);
52 Model_->horizontalHeaderItem (1)->setData (DataFieldType::Integer, DataSourceRole::FieldType);
54 const auto& addrs = BSM_->Property (
"ListenAddresses",
56 qDebug () << Q_FUNC_INFO << addrs;
57 for (
const auto& addr : addrs)
63 qRegisterMetaType<AddrList_t> (
"LC::Util::AddrList_t");
64 qRegisterMetaTypeStreamOperators<AddrList_t> ();
75 for (
auto i = 0; i < Model_->rowCount (); ++i)
77 auto hostItem = Model_->item (i, 0);
78 auto portItem = Model_->item (i, 1);
79 addresses.push_back ({ hostItem->text (), portItem->text () });
84 void AddressesModelManager::SaveSettings ()
const 86 BSM_->setProperty (
"ListenAddresses",
90 void AddressesModelManager::AppendRow (
const QPair<QString, QString>& pair)
94 new QStandardItem { pair.first },
95 new QStandardItem { pair.second }
97 for (
const auto item : items)
98 item->setEditable (
false);
99 Model_->appendRow (items);
106 const auto port = data.value (1).toInt ();
107 if (port < 1024 || port > 65535)
110 AppendRow ({ data.value (0).toString (), QString::number (port) });
116 for (
const auto& item : list)
117 Model_->removeRow (item.row ());
QList< QPair< QString, QString > > AddrList_t
QAbstractItemModel * GetModel() const
Returns the managed model.
AddrList_t GetLocalAddresses(int defaultPort)
Returns all local addresses.
void addressesChanged()
Notifies about the changes in the selected interfaces list.
AddrList_t GetAddresses() const
Returns the list of addresses of interfaces selected by the user.
void addRequested(const QString &property, const QVariantList &list)
Invoked by XML settings dialog to add new user-selected items.
void removeRequested(const QString &property, const QModelIndexList &list)
Invoked by XML settings dialog to remove some user-selected items.
static void RegisterTypes()
Registers the types used for storage in Qt metasystem.
AddressesModelManager(BaseSettingsManager *bsm, int defaultPort, QObject *parent=nullptr)
Constructs the model manager.