1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

fix(status): use enum as UI property instead of untranslated string

Translation of getStatusTitle introduced in 15d72a9610, breaking asset path from string.
This commit is contained in:
Anthony Bilinski 2019-04-22 03:56:22 -07:00
parent e1876a2691
commit 881aa3083a
No known key found for this signature in database
GPG Key ID: 2AA8E0DA1B31FB3C
3 changed files with 32 additions and 29 deletions

View File

@ -47,24 +47,32 @@ namespace Status
return QStringLiteral("");
}
QString getAssetSuffix(Status status)
{
switch (status) {
case Status::Online:
return "online";
case Status::Away:
return "away";
case Status::Busy:
return "busy";
case Status::Offline:
return "offline";
case Status::Blocked:
return "blocked";
}
assert(false);
return QStringLiteral("");
}
QString getIconPath(Status status, bool event)
{
const QString eventSuffix = event ? QStringLiteral("_notification") : QString();
switch (status) {
case Status::Online:
return ":/img/status/online" + eventSuffix + ".svg";
case Status::Away:
return ":/img/status/away" + eventSuffix + ".svg";
case Status::Busy:
return ":/img/status/busy" + eventSuffix + ".svg";
case Status::Offline:
return ":/img/status/offline" + eventSuffix + ".svg";
case Status::Blocked:
return ":/img/status/blocked.svg";
const QString statusSuffix = getAssetSuffix(status);
if (status == Status::Blocked) {
return ":/img/status/" + statusSuffix + ".svg";
} else {
return ":/img/status/" + statusSuffix + eventSuffix + ".svg";
}
qWarning() << "Status unknown";
assert(false);
return QString{};
}
} // namespace Status

View File

@ -37,6 +37,7 @@ namespace Status
QString getIconPath(Status status, bool event = false);
QString getTitle(Status status);
QString getAssetSuffix(Status status);
}
#endif // STATUS_H

View File

@ -437,15 +437,9 @@ void Widget::updateIcons()
return;
}
QString status;
if (eventIcon) {
status = QStringLiteral("event");
} else {
status = ui->statusButton->property("status").toString();
if (!status.length()) {
status = QStringLiteral("offline");
}
}
const QString assetSuffix = eventIcon ? "event" :
Status::getAssetSuffix(static_cast<Status::Status>(ui->statusButton->property("status").toInt()));
// Some builds of Qt appear to have a bug in icon loading:
// QIcon::hasThemeIcon is sometimes unaware that the icon returned
@ -474,11 +468,11 @@ void Widget::updateIcons()
}
QIcon ico;
if (!hasThemeIconBug && QIcon::hasThemeIcon("qtox-" + status)) {
ico = QIcon::fromTheme("qtox-" + status);
if (!hasThemeIconBug && QIcon::hasThemeIcon("qtox-" + assetSuffix)) {
ico = QIcon::fromTheme("qtox-" + assetSuffix);
} else {
QString color = settings.getLightTrayIcon() ? "light" : "dark";
QString path = ":/img/taskbar/" + color + "/taskbar_" + status + ".svg";
QString path = ":/img/taskbar/" + color + "/taskbar_" + assetSuffix + ".svg";
QSvgRenderer renderer(path);
// Prepare a QImage with desired characteritisc
@ -649,7 +643,7 @@ void Widget::onBadProxyCore()
void Widget::onStatusSet(Status::Status status)
{
ui->statusButton->setProperty("status", getTitle(status));
ui->statusButton->setProperty("status", static_cast<int>(status));
ui->statusButton->setIcon(prepareIcon(getIconPath(status), icon_size, icon_size));
updateIcons();
}
@ -1968,7 +1962,7 @@ void Widget::onUserAwayCheck()
{
#ifdef QTOX_PLATFORM_EXT
uint32_t autoAwayTime = settings.getAutoAwayTime() * 60 * 1000;
bool online = ui->statusButton->property("status").toString() == "online";
bool online = static_cast<Status::Status>(ui->statusButton->property("status").toInt()) == Status::Status::Online;
bool away = autoAwayTime && Platform::getIdleTime() >= autoAwayTime;
if (online && away) {