UI: Options: IP Addresses: Show Zones count

This commit is contained in:
Nodir Temirkhodjaev 2023-02-03 20:30:48 +03:00
parent ae63c79a31
commit cd8f152b92
8 changed files with 40 additions and 38 deletions

View File

@ -15,7 +15,7 @@ static int fort_memcmp(const void *p1, const void *p2, size_t len)
}
#endif
FORT_API int bit_scan_forward(unsigned long mask)
FORT_API int bit_scan_forward(ULONG mask)
{
unsigned long index;
return _BitScanForward(&index, mask) ? index : -1;

View File

@ -241,7 +241,7 @@ typedef BOOL fort_conf_zones_ip_included_func(
extern "C" {
#endif
FORT_API int bit_scan_forward(unsigned long mask);
FORT_API int bit_scan_forward(ULONG mask);
FORT_API BOOL is_time_in_period(FORT_TIME time, FORT_PERIOD period);

View File

@ -7,6 +7,9 @@ TableView::TableView(QWidget *parent) : QTableView(parent) { }
void TableView::setModel(QAbstractItemModel *model)
{
setWordWrap(false);
setTextElideMode(Qt::ElideMiddle);
QTableView::setModel(model);
connect(model, &QAbstractItemModel::modelReset, this,

View File

@ -17,14 +17,29 @@ AddressesColumn::AddressesColumn(QWidget *parent) : QWidget(parent)
setupUi();
}
void AddressesColumn::setZonesCount(qint8 v)
{
if (m_zonesCount == v)
return;
m_zonesCount = v;
retranslateZonesText();
}
void AddressesColumn::retranslateUi()
{
m_btOpenZones->setToolTip(tr("Show Zones"));
m_btSelectZones->setText(tr("Zones"));
retranslateZonesText();
m_btSelectZones->setToolTip(tr("Select Zones"));
}
void AddressesColumn::retranslateZonesText()
{
m_btSelectZones->setText(tr("Zones") + QString(" (%1)").arg(zonesCount()));
}
void AddressesColumn::setupUi()
{
auto layout = new QVBoxLayout();
@ -63,19 +78,13 @@ QLayout *AddressesColumn::setupZonesRow()
// Open Zones
m_btOpenZones = ControlUtil::createFlatToolButton(
":/icons/application_go.png", [&] { IoC<WindowManager>()->showZonesWindow(); });
layout->addWidget(m_btOpenZones);
// Select Zones
m_btSelectZones = ControlUtil::createButton(":/icons/ip_class.png");
layout->addWidget(m_btOpenZones);
layout->addWidget(m_btSelectZones);
m_labelZones = ControlUtil::createLabel();
m_labelZones->setWordWrap(true);
auto font = ControlUtil::fontDemiBold();
m_labelZones->setFont(font);
layout->addWidget(m_labelZones, 1);
layout->addStretch();
return layout;
}

View File

@ -16,25 +16,30 @@ class AddressesColumn : public QWidget
public:
explicit AddressesColumn(QWidget *parent = nullptr);
qint8 zonesCount() const { return m_zonesCount; }
void setZonesCount(qint8 v);
QLabel *labelTitle() const { return m_labelTitle; }
QCheckBox *cbUseAll() const { return m_cbUseAll; }
QPushButton *btSelectZones() const { return m_btSelectZones; }
QLabel *labelZones() const { return m_labelZones; }
PlainTextEdit *editIpText() const { return m_editIpText; }
public slots:
void retranslateUi();
private:
void retranslateZonesText();
void setupUi();
QLayout *setupZonesRow();
private:
qint8 m_zonesCount = 0;
QLabel *m_labelTitle = nullptr;
QCheckBox *m_cbUseAll = nullptr;
QToolButton *m_btOpenZones = nullptr;
QPushButton *m_btSelectZones = nullptr;
QLabel *m_labelZones = nullptr;
PlainTextEdit *m_editIpText = nullptr;
};

View File

@ -318,17 +318,15 @@ void AddressesPage::updateZonesMenuEnabled()
void AddressesPage::updateZonesText(bool include)
{
if (include) {
m_includeAddresses->labelZones()->setText(zonesText(true));
} else {
m_excludeAddresses->labelZones()->setText(zonesText(false));
}
AddressesColumn *addressesColumn = include ? m_includeAddresses : m_excludeAddresses;
addressesColumn->setZonesCount(zonesCount(include));
}
void AddressesPage::updateZonesTextAll()
{
updateZonesText(true);
updateZonesText(false);
updateZonesText(/*include=*/true);
updateZonesText(/*include=*/false);
}
void AddressesPage::setupZones()
@ -376,22 +374,11 @@ quint32 AddressesPage::addressGroupZones(bool include) const
return include ? addressGroup()->includeZones() : addressGroup()->excludeZones();
}
QString AddressesPage::zonesText(bool include) const
qint8 AddressesPage::zonesCount(bool include) const
{
QStringList list;
const quint32 zonesMask = addressGroupZones(include);
quint32 zonesMask = addressGroupZones(include);
while (zonesMask != 0) {
const int zoneIndex = DriverCommon::bitScanForward(zonesMask);
const int zoneId = zoneIndex + 1;
const auto zoneName = zoneListModel()->zoneNameById(zoneId);
list.append(zoneName);
zonesMask ^= (quint32(1) << zoneIndex);
}
return list.join(", ");
return __popcnt(zonesMask);
}
QString AddressesPage::localNetworks()

View File

@ -52,7 +52,7 @@ private:
quint32 addressGroupZones(bool include) const;
QString zonesText(bool include) const;
qint8 zonesCount(bool include) const;
static QString localNetworks();

View File

@ -265,8 +265,6 @@ void ProgramsWindow::setupTableApps()
m_appListView->setAlternatingRowColors(true);
m_appListView->setSelectionMode(QAbstractItemView::ExtendedSelection);
m_appListView->setSelectionBehavior(QAbstractItemView::SelectItems);
m_appListView->setWordWrap(false);
m_appListView->setTextElideMode(Qt::ElideMiddle);
m_appListView->setSortingEnabled(true);
m_appListView->setModel(appListModel());