UI: ProgramsWindow: Tweak group's state.

This commit is contained in:
Nodir Temirkhodjaev 2020-01-21 08:49:35 +05:00
parent 64f2b48077
commit 9bdc83f199
2 changed files with 45 additions and 42 deletions

View File

@ -22,10 +22,12 @@ namespace {
const auto alertColor = QColorConstants::Svg::orange;
const auto allowColor = QColorConstants::Svg::green;
const auto blockColor = QColorConstants::Svg::red;
const auto inactiveColor = QColorConstants::Svg::slategray;
#else
const auto alertColor = QColor{QColor::Rgb, 0xff * 0x101, 0xff * 0x101, 0xa5 * 0x101, 0x00 * 0x101};
const auto allowColor = QColor{QColor::Rgb, 0xff * 0x101, 0x00 * 0x101, 0x80 * 0x101, 0x00 * 0x101};
const auto blockColor = QColor{QColor::Rgb, 0xff * 0x101, 0xff * 0x101, 0x00 * 0x101, 0x00 * 0x101};
const auto inactiveColor = {QColor::Rgb, 0xff * 0x101, 0x70 * 0x101, 0x80 * 0x101, 0x90 * 0x101};
#endif
}
@ -144,7 +146,11 @@ QVariant AppListModel::data(const QModelIndex &index, int role) const
return appName;
}
case 1: return appGroupAt(appRow.groupIndex)->name();
case 2: return appStateToString(appRow);
case 2: {
if (appRow.alerted) return tr("Alert");
if (appRow.blocked) return tr("Block");
return tr("Allow");
}
case 3: return appRow.endTime.isValid()
? appRow.endTime : QVariant();
case 4: return appRow.creatTime;
@ -155,25 +161,27 @@ QVariant AppListModel::data(const QModelIndex &index, int role) const
// Icon
case Qt::DecorationRole: {
const int row = index.row();
const int column = index.column();
const auto appRow = appRowAt(row);
if (column == 0 || column == 2) {
const int row = index.row();
const auto appRow = appRowAt(row);
switch (column) {
case 0: {
const auto appPath = appRow.appPath;
const auto appInfo = appInfoCache()->appInfo(appPath);
const auto appIcon = appInfoCache()->appIcon(appInfo);
if (!appIcon.isNull()) {
return QIcon(QPixmap::fromImage(appIcon));
switch (column) {
case 0: {
const auto appPath = appRow.appPath;
const auto appInfo = appInfoCache()->appInfo(appPath);
const auto appIcon = appInfoCache()->appIcon(appInfo);
if (!appIcon.isNull()) {
return QIcon(QPixmap::fromImage(appIcon));
}
return QIcon(":/images/application-window-96.png");
}
case 2:
return appRow.blocked ? QIcon(":/images/stop.png")
: QIcon(":/images/arrow_switch.png");
}
return QIcon(":/images/application-window-96.png");
}
case 2:
return appRow.blocked ? QIcon(":/images/stop.png")
: QIcon(":/images/arrow_switch.png");
}
break;
@ -181,7 +189,9 @@ QVariant AppListModel::data(const QModelIndex &index, int role) const
// Font
case Qt::FontRole: {
if (index.column() == 2) {
const int column = index.column();
if (column == 2) {
QFont font;
font.setWeight(QFont::DemiBold);
return font;
@ -192,11 +202,25 @@ QVariant AppListModel::data(const QModelIndex &index, int role) const
// Foreground
case Qt::ForegroundRole: {
if (index.column() == 2) {
const auto appRow = appRowAt(index.row());
const int column = index.column();
return appRow.alerted ? alertColor : (appBlockedByGroup(appRow)
? blockColor : allowColor);
if (column == 1 || column == 2) {
const int row = index.row();
const auto appRow = appRowAt(row);
switch (column) {
case 1: {
if (!appRow.useGroupPerm)
return inactiveColor;
if (!appGroupAt(appRow.groupIndex)->enabled())
return blockColor;
break;
}
case 2:
if (appRow.alerted) return alertColor;
if (appRow.blocked) return blockColor;
return allowColor;
}
}
break;
@ -414,21 +438,3 @@ QStringList AppListModel::appGroupNames() const
}
return list;
}
bool AppListModel::appBlockedByGroup(const AppRow &appRow) const
{
return appRow.blocked
|| (appRow.useGroupPerm
&& !appGroupAt(appRow.groupIndex)->enabled());
}
QString AppListModel::appStateToString(const AppRow &appRow) const
{
if (appRow.alerted)
return tr("Alert");
if (appBlockedByGroup(appRow))
return tr("Block");
return tr("Allow");
}

View File

@ -89,9 +89,6 @@ private:
QString sqlBase() const;
QString sqlOrder() const;
bool appBlockedByGroup(const AppRow &appRow) const;
QString appStateToString(const AppRow &appRow) const;
private:
int m_sortColumn = 5;
Qt::SortOrder m_sortOrder = Qt::DescendingOrder;