31 #include <QStandardItemModel>
32 #include <QNetworkInterface>
33 #include <xmlsettingsdialog/datasourceroles.h>
34 #include <xmlsettingsdialog/basesettingsmanager.h>
42 , Model_ {
new QStandardItemModel {
this } }
45 Model_->setHorizontalHeaderLabels ({ tr (
"Host"), tr (
"Port") });
46 Model_->horizontalHeaderItem (0)->setData (DataSources::DataFieldType::Enum,
47 DataSources::DataSourceRole::FieldType);
48 Model_->horizontalHeaderItem (1)->setData (DataSources::DataFieldType::Integer,
49 DataSources::DataSourceRole::FieldType);
51 updateAvailInterfaces ();
53 const auto& addrs = BSM_->Property (
"ListenAddresses",
55 qDebug () << Q_FUNC_INFO << addrs;
56 for (
const auto& addr : addrs)
62 qRegisterMetaType<AddrList_t> (
"LeechCraft::Util::AddrList_t");
63 qRegisterMetaTypeStreamOperators<AddrList_t> ();
74 for (
auto i = 0; i < Model_->rowCount (); ++i)
76 auto hostItem = Model_->item (i, 0);
77 auto portItem = Model_->item (i, 1);
78 addresses.push_back ({ hostItem->text (), portItem->text () });
83 void AddressesModelManager::SaveSettings ()
const
85 BSM_->setProperty (
"ListenAddresses",
89 void AddressesModelManager::AppendRow (
const QPair<QString, QString>& pair)
93 new QStandardItem { pair.first },
94 new QStandardItem { pair.second }
96 for (
const auto item : items)
97 item->setEditable (
false);
98 Model_->appendRow (items);
103 void AddressesModelManager::updateAvailInterfaces ()
106 for (
const auto& addr : QNetworkInterface::allAddresses ())
108 if (!addr.scopeId ().isEmpty ())
112 map [
"ID"] = map [
"Name"] = addr.toString ();
115 Model_->horizontalHeaderItem (0)->setData (hosts,
116 DataSources::DataSourceRole::FieldValues);
121 const auto port = data.value (1).toInt ();
122 if (port < 1024 || port > 65535)
125 AppendRow ({ data.value (0).toString (), QString::number (port) });
131 for (
const auto& item : list)
132 Model_->removeRow (item.row ());
AddrList_t GetLocalAddresses(int defaultPort)
Returns all local addresses.
void removeRequested(const QString &, const QModelIndexList &)
static void RegisterTypes()
AddressesModelManager(BaseSettingsManager *, int defaultPort, QObject *=0)
AddrList_t GetAddresses() const
QList< QPair< QString, QString > > AddrList_t
void addRequested(const QString &, const QVariantList &)
QAbstractItemModel * GetModel() const