diff --git a/tools/chatgui-android/app/src/main/res/values-ru/strings.xml b/tools/chatgui-android/app/src/main/res/values-ru/strings.xml
index f47b8047..fd0ba2a4 100644
--- a/tools/chatgui-android/app/src/main/res/values-ru/strings.xml
+++ b/tools/chatgui-android/app/src/main/res/values-ru/strings.xml
@@ -541,4 +541,22 @@
Разрешить получать приглашения из локальной сети
Разрешить отправлять широковещательные объявления
Приём приглашений запрещён. Разрешите его в настройках устройства получателя.
+ Показывать, что я разговариваю
+ Публиковать статус звонка для других участников
+ Предупреждать при входящем вызове
+ Сообщать, что я разговариваю, и предлагать всё равно позвонить или завершить
+ Нужно разрешение на состояние телефона; статус неизвестен
+ Абонент разговаривает по телефону
+ Занят звонком
+ Телефон свободен
+ Статус телефона неизвестен
+ Всё равно позвонить
+ Завершить
+ Рация абонента уже включена в этом канале
+ Отклонять вызовы, когда я разговариваю
+ Отклонять телефонные вызовы и приглашения в рацию вместо предложения позвонить
+ Отклонять все телефонные вызовы
+ Отклонять входящие звонки vibechat без рингтона
+ Отклонять все вызовы по рации
+ Отклонять приглашения; включённая рация продолжит работать
diff --git a/tools/chatgui-android/app/src/main/res/values/strings.xml b/tools/chatgui-android/app/src/main/res/values/strings.xml
index e4e8699a..5a2f6dfe 100644
--- a/tools/chatgui-android/app/src/main/res/values/strings.xml
+++ b/tools/chatgui-android/app/src/main/res/values/strings.xml
@@ -540,4 +540,22 @@
Receive invitations from the local network
Broadcast presence on the local network
Receiving invitations is forbidden. Enable it in the recipient device\'s settings.
+ Show when I am on a call
+ Share my call status with other members
+ Warn callers when I am on a call
+ Let callers choose whether to call anyway before my phone rings
+ Phone permission is required; status is unknown
+ The subscriber is on a phone call
+ Busy on a call
+ Phone is free
+ Phone status unknown
+ Call anyway
+ End
+ The subscriber’s radio is already on in this channel
+ Reject calls when I am on a phone call
+ Reject telephone and radio invitations instead of offering to call anyway
+ Reject all telephone calls
+ Reject incoming vibechat calls without ringing
+ Reject all radio calls
+ Reject radio invitations; the channel radio keeps working
diff --git a/tools/chatgui/tests/test_invite_links.cpp b/tools/chatgui/tests/test_invite_links.cpp
index a3a6c197..1ab90fbd 100644
--- a/tools/chatgui/tests/test_invite_links.cpp
+++ b/tools/chatgui/tests/test_invite_links.cpp
@@ -459,6 +459,30 @@ private slots:
if (!preview.isEmpty()) QVERIFY(view.grab().save(preview));
}
+ void phoneButtonReflectsBusyFreeUnknownAndOffline() {
+ QStandardItemModel model;
+ auto* peer = new QStandardItem("peer"); model.appendRow(peer);
+ peer->setData(false, Qt::UserRole + 2); peer->setData(true, MemberListModel::OnlineRole);
+ AccountDelegate delegate;
+ QStyleOptionViewItem option; option.rect = QRect(0, 0, 280, 52);
+ auto pixels = [&](int flags, bool online, const QColor& color) {
+ peer->setData(flags, Qt::UserRole + 3); peer->setData(online, MemberListModel::OnlineRole);
+ QImage image(option.rect.size(), QImage::Format_RGB32); image.fill(Qt::white);
+ QPainter painter(&image); delegate.paint(&painter, option, model.index(0, 0)); painter.end();
+ int count = 0;
+ for (int y = 0; y < image.height(); ++y)
+ for (int x = image.width() - 31; x < image.width(); ++x) count += image.pixelColor(x, y) == color;
+ return count;
+ };
+ const int known = CHAT_MEMBER_FLAG_PHONE_KNOWN, busy = CHAT_MEMBER_FLAG_PHONE_BUSY;
+ QVERIFY(pixels(known | busy, true, QColor("#E53935")) > 0);
+ QVERIFY(pixels(known, true, QColor("#4CAF50")) > 0);
+ QCOMPARE(pixels(0, true, QColor("#4CAF50")), 0);
+ QCOMPARE(pixels(busy, true, QColor("#E53935")), 0);
+ QCOMPARE(pixels(known | busy, false, QColor("#E53935")), 0);
+ QCOMPARE(pixels(known | busy, true, QColor("#4CAF50")), 0);
+ }
+
void radioMuteButtonTargetsMemberAndChangesColor() {
QStandardItemModel model;
auto* other = new QStandardItem("other"); other->setData(false, Qt::UserRole + 2); model.appendRow(other);