2
0
mirror of https://github.com/kotatogram/kotatogram-desktop synced 2025-09-02 23:55:12 +00:00

Updated app name in locale

This commit is contained in:
RadRussianRus
2019-10-19 07:35:53 +03:00
parent 720319816a
commit dc13f5fb76
23 changed files with 79 additions and 31 deletions

View File

@@ -2289,4 +2289,29 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"ktg_net_boost_restart_desc" = "You'll need to restart app to change network boost.\n\nRestart now?"; "ktg_net_boost_restart_desc" = "You'll need to restart app to change network boost.\n\nRestart now?";
"ktg_open_from_tray" = "Open Kotatogram";
"ktg_quit_from_tray" = "Quit Kotatogram";
"ktg_tray_icon_text" = "Kotatogram is still running here,\nyou can change this from settings page.\nIf this icon disappears from tray menu,\nyou can drag it here from hidden icons.";
"ktg_error_start_minimized_passcoded" = "You have set a local passcode, so Kotatogram Desktop can't be launched minimised; it will ask you to enter your passcode before it can start working.";
"ktg_proxy_unsupported" = "Your Kotatogram Desktop version doesn't support this proxy type or the proxy link is invalid. Please update Kotatogram Desktop to the latest version.";
"ktg_update_telegram" = "Update Kotatogram";
"ktg_settings_auto_start" = "Launch Kotatogram when system starts";
"ktg_settings_add_sendto" = "Place Kotatogram in \"Send to\" menu";
"ktg_theme_no_desktop" = "Sorry, this theme doesn't include a version for Kotatogram Desktop.";
"ktg_download_path_default_radio" = "Kotatogram folder in system «Downloads»";
"ktg_passcode_about" = "When a local passcode is set, a lock icon appears at the top of your chats list. Click it to lock the app.\n\nNote: if you forget your local passcode, you'll need to relogin in Kotatogram Desktop.";
"ktg_message_unsupported" = "This message is not supported by your version of Kotatogram Desktop. Please update to the latest version in Settings, or install it from {link}";
"ktg_bot_share_location_unavailable" = "Sorry, location sharing is currently unavailable in Kotatogram Desktop.";
"ktg_new_version_wrap" = "Kotatogram Desktop was rebased on Telegram Desktop {version}\n\n{changes}\n\nFull version history is available here:\n{link}";
"ktg_theme_editor_need_unlock" = "You need to unlock Kotatogram to save your theme.";
"ktg_payments_not_supported" = "Sorry, Kotatogram Desktop doesn't support payments yet. Please use one of our mobile apps to do this.";
"ktg_no_mic_permission" = "Kotatogram needs access to your microphone so that you can make calls and record voice messages.";
"ktg_passport_app_out_of_date" = "Sorry, your Telegram app is out of date and can't handle this request. Please update Kotatogram.";
"ktg_export_progress" = "You can close this window now. Please don't quit Kotatogram until the data export is completed.";
"ktg_language_not_ready_about" = "Unfortunately, this custom language pack ({lang_name}) doesn't contain data for Telegram Desktop. You can contribute to this language pack using the {link}.";
"ktg_outdated_soon" = "Otherwise, Kotatogram Desktop will stop updating on {date}.";
"ktg_outdated_now" = "So that Kotatogram Desktop can update to newer versions.";
"ktg_mac_menu_show" = "Show Kotatogram";
// Keys finished // Keys finished

View File

@@ -54,5 +54,28 @@
"ktg_net_speed_boost_slight": "Небольшое", "ktg_net_speed_boost_slight": "Небольшое",
"ktg_net_speed_boost_medium": "Среднее", "ktg_net_speed_boost_medium": "Среднее",
"ktg_net_speed_boost_big": "Высокое", "ktg_net_speed_boost_big": "Высокое",
"ktg_net_boost_restart_desc": "Для изменения ускорения загрузки требуется перезапуск.\n\nПерезапустить сейчас?" "ktg_net_boost_restart_desc": "Для изменения ускорения загрузки требуется перезапуск.\n\nПерезапустить сейчас?",
"ktg_open_from_tray": "Открыть Kotatogram",
"ktg_quit_from_tray": "Закрыть Kotatogram",
"ktg_tray_icon_text": "Kotatogram продолжает работать,\nВы можете изменить это в настройках.\nЕсли значок исчезнет из области уведомлений,\nего можно перенести из скрытых значков.",
"ktg_error_start_minimized_passcoded": "Вы установили для приложения код-пароль, поэтому оно не может запускаться в свёрнутом виде. Для входа в приложение нужно сначала ввести код-пароль.",
"ktg_proxy_unsupported": "Ссылка некорректна или тип прокси-сервера не поддерживается в Kotatogram Desktop. Убедитесь, что используете последнюю версию приложения.",
"ktg_update_telegram": "Обновить Kotatogram",
"ktg_settings_auto_start": "Запускать Kotatogram при запуске системы",
"ktg_settings_add_sendto": "Добавить в меню \"Отправить...\"",
"ktg_theme_no_desktop": "К сожалению, тема не подходит для приложения Kotatogram Desktop.",
"ktg_download_path_default_radio": "Папка Kotatogram в «Загрузках» системы",
"ktg_passcode_about": "Когда код-пароль включен, в списке чатов появляется значок замка для блокировки и разблокировки приложения.\n\nВажно: если Вы забудете код-пароль, нужно будет выйти и заново авторизоваться в Kotatogram Desktop.",
"ktg_message_unsupported": "Это сообщение не поддерживается в вашей версии Kotatogram. Пожалуйста, обновитесь до последней версии через Настройки или установите её по ссылке {link}",
"ktg_bot_share_location_unavailable": "В Kotatogram Desktop пока нельзя делиться геопозицией.",
"ktg_new_version_wrap": "Kotatogram Desktop обновил исходники Telegram Desktop до {version}\n\n{changes}\n\nВся история изменений доступна здесь:\n{link}",
"ktg_theme_editor_need_unlock": "Чтобы сохранить тему, необходимо разблокировать приложение.",
"ktg_payments_not_supported": "К сожалению, Kotatogram Desktop ещё не поддерживает платежи. Пожалуйста, используйте для этого мобильные приложения.",
"ktg_no_mic_permission": "Чтобы Вы могли пользоваться звонками и записывать голосовые сообщения, Kotatogram требуется доступ к микрофону.",
"ktg_passport_app_out_of_date": "К сожалению, ваша версия приложения устарела и не может обработать этот запрос. Пожалуйста, обновите Kotatogram.",
"ktg_export_progress": "Это окно можно пока закрыть. Пожалуйста, не выходите из Kotatogram, пока экспорт не завершится.",
"ktg_language_not_ready_about": "К сожалению, в этом неофициальном переводе ({lang_name}) нет текстов приложения Kotatogram Desktop. Вы можете использовать {link}, чтобы помочь с переводом приложения.",
"ktg_outdated_soon": "Иначе приложение перестанет обновляться с {date}.",
"ktg_outdated_now": "Чтобы приложение Kotatogram могло получать обновления.",
"ktg_mac_menu_show": "Показать Kotatogram"
} }

View File

@@ -1033,7 +1033,7 @@ void ProxiesBoxController::ShowApplyConfirmation(
} else { } else {
Ui::show(Box<InformBox>( Ui::show(Box<InformBox>(
(proxy.status() == ProxyData::Status::Unsupported (proxy.status() == ProxyData::Status::Unsupported
? tr::lng_proxy_unsupported(tr::now) ? tr::ktg_proxy_unsupported(tr::now)
: tr::lng_proxy_invalid(tr::now)))); : tr::lng_proxy_invalid(tr::now))));
} }
} }

View File

@@ -20,7 +20,7 @@ DownloadPathBox::DownloadPathBox(QWidget *parent)
: _path(Global::DownloadPath()) : _path(Global::DownloadPath())
, _pathBookmark(Global::DownloadPathBookmark()) , _pathBookmark(Global::DownloadPathBookmark())
, _group(std::make_shared<Ui::RadioenumGroup<Directory>>(typeFromPath(_path))) , _group(std::make_shared<Ui::RadioenumGroup<Directory>>(typeFromPath(_path)))
, _default(this, _group, Directory::Downloads, tr::lng_download_path_default_radio(tr::now), st::defaultBoxCheckbox) , _default(this, _group, Directory::Downloads, tr::ktg_download_path_default_radio(tr::now), st::defaultBoxCheckbox)
, _temp(this, _group, Directory::Temp, tr::lng_download_path_temp_radio(tr::now), st::defaultBoxCheckbox) , _temp(this, _group, Directory::Temp, tr::lng_download_path_temp_radio(tr::now), st::defaultBoxCheckbox)
, _dir(this, _group, Directory::Custom, tr::lng_download_path_dir_radio(tr::now), st::defaultBoxCheckbox) , _dir(this, _group, Directory::Custom, tr::lng_download_path_dir_radio(tr::now), st::defaultBoxCheckbox)
, _pathLink(this, QString(), st::boxLinkButton) { , _pathLink(this, QString(), st::boxLinkButton) {

View File

@@ -116,7 +116,7 @@ void PasscodeBox::prepare() {
? *_cloudFields.customDescription ? *_cloudFields.customDescription
: _cloudPwd : _cloudPwd
? tr::lng_cloud_password_about(tr::now) ? tr::lng_cloud_password_about(tr::now)
: tr::lng_passcode_about(tr::now))); : tr::ktg_passcode_about(tr::now)));
_aboutHeight = _about.countHeight(st::boxWidth - st::boxPadding.left() * 1.5); _aboutHeight = _about.countHeight(st::boxWidth - st::boxPadding.left() * 1.5);
const auto onlyCheck = onlyCheckCurrent(); const auto onlyCheck = onlyCheckCurrent();
if (onlyCheck) { if (onlyCheck) {

View File

@@ -291,7 +291,7 @@ void Instance::requestMicrophonePermissionOrFail(Fn<void()> onSuccess) {
if (alreadyInCall()) { if (alreadyInCall()) {
_currentCall->hangup(); _currentCall->hangup();
} }
Ui::show(Box<ConfirmBox>(tr::lng_no_mic_permission(tr::now), tr::lng_menu_settings(tr::now), crl::guard(this, [] { Ui::show(Box<ConfirmBox>(tr::ktg_no_mic_permission(tr::now), tr::lng_menu_settings(tr::now), crl::guard(this, [] {
Platform::OpenSystemSettingsForPermission(Platform::PermissionType::Microphone); Platform::OpenSystemSettingsForPermission(Platform::PermissionType::Microphone);
Ui::hideLayer(); Ui::hideLayer();
}))); })));

View File

@@ -136,7 +136,7 @@ void Changelogs::addLocalLogs() {
addBetaLogs(); addBetaLogs();
} }
if (!_addedSomeLocal) { if (!_addedSomeLocal) {
const auto text = tr::lng_new_version_wrap( const auto text = tr::ktg_new_version_wrap(
tr::now, tr::now,
lt_version, lt_version,
QString::fromLatin1(AppVersionStr), QString::fromLatin1(AppVersionStr),

View File

@@ -152,7 +152,7 @@ void CloudThemes::resolve(
}).fail([=](const RPCError &error) { }).fail([=](const RPCError &error) {
if (error.type() == qstr("THEME_FORMAT_INVALID")) { if (error.type() == qstr("THEME_FORMAT_INVALID")) {
Ui::show(Box<InformBox>( Ui::show(Box<InformBox>(
tr::lng_theme_no_desktop(tr::now))); tr::ktg_theme_no_desktop(tr::now)));
} }
}).send(); }).send();
} }
@@ -175,7 +175,7 @@ void CloudThemes::showPreview(const CloudTheme &cloud) {
cloud)); cloud));
} else { } else {
Ui::show(Box<InformBox>( Ui::show(Box<InformBox>(
tr::lng_theme_no_desktop(tr::now))); tr::ktg_theme_no_desktop(tr::now)));
} }
} }

View File

@@ -486,7 +486,7 @@ void Widget::checkUpdateStatus() {
if (_updateTelegram) return; if (_updateTelegram) return;
_updateTelegram.create( _updateTelegram.create(
this, this,
tr::lng_update_telegram(tr::now), tr::ktg_update_telegram(tr::now),
st::dialogsUpdateButton, st::dialogsUpdateButton,
st::dialogsInstallUpdate, st::dialogsInstallUpdate,
st::dialogsInstallUpdateOver); st::dialogsInstallUpdateOver);

View File

@@ -245,7 +245,7 @@ ProgressWidget::ProgressWidget(
_about = _body->add( _about = _body->add(
object_ptr<Ui::FlatLabel>( object_ptr<Ui::FlatLabel>(
this, this,
tr::lng_export_progress(tr::now), tr::ktg_export_progress(tr::now),
st::exportAboutLabel), st::exportAboutLabel),
st::exportAboutPadding); st::exportAboutPadding);

View File

@@ -84,7 +84,7 @@ void activateBotCommand(
} break; } break;
case ButtonType::Buy: { case ButtonType::Buy: {
Ui::show(Box<InformBox>(tr::lng_payments_not_supported(tr::now))); Ui::show(Box<InformBox>(tr::ktg_payments_not_supported(tr::now)));
} break; } break;
case ButtonType::Url: { case ButtonType::Url: {
@@ -104,7 +104,7 @@ void activateBotCommand(
case ButtonType::RequestLocation: { case ButtonType::RequestLocation: {
hideSingleUseKeyboard(msg); hideSingleUseKeyboard(msg);
Ui::show(Box<InformBox>(tr::lng_bot_share_location_unavailable(tr::now))); Ui::show(Box<InformBox>(tr::ktg_bot_share_location_unavailable(tr::now)));
} break; } break;
case ButtonType::RequestPhone: { case ButtonType::RequestPhone: {

View File

@@ -67,7 +67,7 @@ not_null<HistoryItem*> CreateUnsupportedMessage(
UserId from) { UserId from) {
const auto siteLink = qsl("https://kotatogram.github.io"); const auto siteLink = qsl("https://kotatogram.github.io");
auto text = TextWithEntities{ auto text = TextWithEntities{
tr::lng_message_unsupported(tr::now, lt_link, siteLink) tr::ktg_message_unsupported(tr::now, lt_link, siteLink)
}; };
TextUtilities::ParseEntities(text, Ui::ItemTextNoMonoOptions().flags); TextUtilities::ParseEntities(text, Ui::ItemTextNoMonoOptions().flags);
text.entities.push_front( text.entities.push_front(

View File

@@ -339,7 +339,7 @@ void CodeWidget::gotPassword(const MTPaccount_Password &result) {
if (*box) (*box)->closeBox(); if (*box) (*box)->closeBox();
}; };
*box = Ui::show(Box<ConfirmBox>( *box = Ui::show(Box<ConfirmBox>(
tr::lng_passport_app_out_of_date(tr::now), tr::ktg_passport_app_out_of_date(tr::now),
tr::lng_menu_update(tr::now), tr::lng_menu_update(tr::now),
callback)); callback));
return; return;

View File

@@ -118,7 +118,7 @@ NotReadyBox::NotReadyBox(
void NotReadyBox::prepare() { void NotReadyBox::prepare() {
setTitle(tr::lng_language_not_ready_title()); setTitle(tr::lng_language_not_ready_title());
auto text = tr::lng_language_not_ready_about( auto text = tr::ktg_language_not_ready_about(
lt_lang_name, lt_lang_name,
rpl::single(_name) | Ui::Text::ToWithEntities(), rpl::single(_name) | Ui::Text::ToWithEntities(),
lt_link, lt_link,

View File

@@ -142,14 +142,14 @@ void MainWindow::firstShow() {
: tr::lng_enable_notifications_from_tray(tr::now); : tr::lng_enable_notifications_from_tray(tr::now);
if (Platform::IsLinux()) { if (Platform::IsLinux()) {
trayIconMenu->addAction(tr::lng_open_from_tray(tr::now), this, SLOT(showFromTray())); trayIconMenu->addAction(tr::ktg_open_from_tray(tr::now), this, SLOT(showFromTray()));
trayIconMenu->addAction(tr::lng_minimize_to_tray(tr::now), this, SLOT(minimizeToTray())); trayIconMenu->addAction(tr::lng_minimize_to_tray(tr::now), this, SLOT(minimizeToTray()));
trayIconMenu->addAction(notificationActionText, this, SLOT(toggleDisplayNotifyFromTray())); trayIconMenu->addAction(notificationActionText, this, SLOT(toggleDisplayNotifyFromTray()));
trayIconMenu->addAction(tr::lng_quit_from_tray(tr::now), this, SLOT(quitFromTray())); trayIconMenu->addAction(tr::ktg_quit_from_tray(tr::now), this, SLOT(quitFromTray()));
} else { } else {
trayIconMenu->addAction(tr::lng_minimize_to_tray(tr::now), this, SLOT(minimizeToTray())); trayIconMenu->addAction(tr::lng_minimize_to_tray(tr::now), this, SLOT(minimizeToTray()));
trayIconMenu->addAction(notificationActionText, this, SLOT(toggleDisplayNotifyFromTray())); trayIconMenu->addAction(notificationActionText, this, SLOT(toggleDisplayNotifyFromTray()));
trayIconMenu->addAction(tr::lng_quit_from_tray(tr::now), this, SLOT(quitFromTray())); trayIconMenu->addAction(tr::ktg_quit_from_tray(tr::now), this, SLOT(quitFromTray()));
} }
Global::RefWorkMode().setForced(Global::WorkMode().value(), true); Global::RefWorkMode().setForced(Global::WorkMode().value(), true);
@@ -571,7 +571,7 @@ void MainWindow::updateTrayMenu(bool force) {
connect(toggleAction, SIGNAL(triggered(bool)), this, active ? SLOT(minimizeToTray()) : SLOT(showFromTray())); connect(toggleAction, SIGNAL(triggered(bool)), this, active ? SLOT(minimizeToTray()) : SLOT(showFromTray()));
toggleAction->setText(active toggleAction->setText(active
? tr::lng_minimize_to_tray(tr::now) ? tr::lng_minimize_to_tray(tr::now)
: tr::lng_open_from_tray(tr::now)); : tr::ktg_open_from_tray(tr::now));
// On macOS just remove trayIcon menu if the window is not active. // On macOS just remove trayIcon menu if the window is not active.
// So we will activate the window on click instead of showing the menu. // So we will activate the window on click instead of showing the menu.

View File

@@ -982,7 +982,7 @@ void PanelController::showUpdateAppBox() {
}; };
show( show(
Box<ConfirmBox>( Box<ConfirmBox>(
tr::lng_passport_app_out_of_date(tr::now), tr::ktg_passport_app_out_of_date(tr::now),
tr::lng_menu_update(tr::now), tr::lng_menu_update(tr::now),
callback, callback,
[=] { _form->cancelSure(); }), [=] { _form->cancelSure(); }),

View File

@@ -718,7 +718,7 @@ void MainWindow::createGlobalMenu() {
psNewGroup = window->addAction(tr::lng_mac_menu_new_group(tr::now), App::wnd(), SLOT(onShowNewGroup())); psNewGroup = window->addAction(tr::lng_mac_menu_new_group(tr::now), App::wnd(), SLOT(onShowNewGroup()));
psNewChannel = window->addAction(tr::lng_mac_menu_new_channel(tr::now), App::wnd(), SLOT(onShowNewChannel())); psNewChannel = window->addAction(tr::lng_mac_menu_new_channel(tr::now), App::wnd(), SLOT(onShowNewChannel()));
window->addSeparator(); window->addSeparator();
psShowTelegram = window->addAction(tr::lng_mac_menu_show(tr::now), App::wnd(), SLOT(showFromTray())); psShowTelegram = window->addAction(tr::ktg_mac_menu_show(tr::now), App::wnd(), SLOT(showFromTray()));
updateGlobalMenu(); updateGlobalMenu();
} }

View File

@@ -698,7 +698,7 @@ void MainWindow::psSetupTrayIcon() {
void MainWindow::showTrayTooltip() { void MainWindow::showTrayTooltip() {
if (trayIcon && !cSeenTrayTooltip()) { if (trayIcon && !cSeenTrayTooltip()) {
trayIcon->showMessage(str_const_toString(AppName), tr::lng_tray_icon_text(tr::now), QSystemTrayIcon::Information, 10000); trayIcon->showMessage(str_const_toString(AppName), tr::ktg_tray_icon_text(tr::now), QSystemTrayIcon::Information, 10000);
cSetSeenTrayTooltip(true); cSetSeenTrayTooltip(true);
Local::writeSettings(); Local::writeSettings();
} }

View File

@@ -115,7 +115,7 @@ void SetupUpdate(not_null<Ui::VerticalLayout*> container) {
st::settingsButton); st::settingsButton);
const auto update = Ui::CreateChild<Button>( const auto update = Ui::CreateChild<Button>(
check.get(), check.get(),
tr::lng_update_telegram() | Ui::Text::ToUpper(), tr::ktg_update_telegram() | Ui::Text::ToUpper(),
st::settingsUpdate); st::settingsUpdate);
update->hide(); update->hide();
check->widthValue() | rpl::start_with_next([=](int width) { check->widthValue() | rpl::start_with_next([=](int width) {
@@ -333,13 +333,13 @@ void SetupTrayContent(not_null<Ui::VerticalLayout*> container) {
}; };
const auto autostart = addCheckbox( const auto autostart = addCheckbox(
tr::lng_settings_auto_start(tr::now), tr::ktg_settings_auto_start(tr::now),
cAutoStart()); cAutoStart());
const auto minimized = addSlidingCheckbox( const auto minimized = addSlidingCheckbox(
tr::lng_settings_start_min(tr::now), tr::lng_settings_start_min(tr::now),
minimizedToggled()); minimizedToggled());
const auto sendto = addCheckbox( const auto sendto = addCheckbox(
tr::lng_settings_add_sendto(tr::now), tr::ktg_settings_add_sendto(tr::now),
cSendToMenu()); cSendToMenu());
autostart->checkedChanges( autostart->checkedChanges(
@@ -365,7 +365,7 @@ void SetupTrayContent(not_null<Ui::VerticalLayout*> container) {
if (Global::LocalPasscode()) { if (Global::LocalPasscode()) {
minimized->entity()->setChecked(false); minimized->entity()->setChecked(false);
Ui::show(Box<InformBox>( Ui::show(Box<InformBox>(
tr::lng_error_start_minimized_passcoded(tr::now))); tr::ktg_error_start_minimized_passcoded(tr::now)));
} else { } else {
cSetStartMinimized(checked); cSetStartMinimized(checked);
Local::writeSettings(); Local::writeSettings();

View File

@@ -339,7 +339,7 @@ void Calls::requestPermissionAndStartTestingMicrophone() {
Ui::hideLayer(); Ui::hideLayer();
}; };
Ui::show(Box<ConfirmBox>( Ui::show(Box<ConfirmBox>(
tr::lng_no_mic_permission(tr::now), tr::ktg_no_mic_permission(tr::now),
tr::lng_menu_settings(tr::now), tr::lng_menu_settings(tr::now),
showSystemSettings)); showSystemSettings));
} }

View File

@@ -561,7 +561,7 @@ object_ptr<BoxContent> CloudPasswordAppOutdatedBox() {
if (*box) (*box)->closeBox(); if (*box) (*box)->closeBox();
}; };
auto result = Box<ConfirmBox>( auto result = Box<ConfirmBox>(
tr::lng_passport_app_out_of_date(tr::now), tr::ktg_passport_app_out_of_date(tr::now),
tr::lng_menu_update(tr::now), tr::lng_menu_update(tr::now),
callback); callback);
*box = result.data(); *box = result.data();

View File

@@ -806,7 +806,7 @@ QByteArray Editor::ColorizeInContent(
void Editor::save() { void Editor::save() {
if (Core::App().passcodeLocked()) { if (Core::App().passcodeLocked()) {
Ui::Toast::Show(tr::lng_theme_editor_need_unlock(tr::now)); Ui::Toast::Show(tr::ktg_theme_editor_need_unlock(tr::now));
return; return;
} else if (!_window->account().sessionExists()) { } else if (!_window->account().sessionExists()) {
Ui::Toast::Show(tr::lng_theme_editor_need_auth(tr::now)); Ui::Toast::Show(tr::lng_theme_editor_need_auth(tr::now));

View File

@@ -56,8 +56,8 @@ Bar::Bar(not_null<QWidget*> parent, QDate date)
_title->setTryMakeSimilarLines(true); _title->setTryMakeSimilarLines(true);
_details->setTryMakeSimilarLines(true); _details->setTryMakeSimilarLines(true);
_details->setText(_soon _details->setText(_soon
? tr::lng_outdated_soon(tr::now, lt_date, langDayOfMonthFull(date)) ? tr::ktg_outdated_soon(tr::now, lt_date, langDayOfMonthFull(date))
: tr::lng_outdated_now(tr::now)); : tr::ktg_outdated_now(tr::now));
} }
rpl::producer<> Bar::hideClicks() const { rpl::producer<> Bar::hideClicks() const {