mirror of
https://github.com/kotatogram/kotatogram-desktop
synced 2025-08-31 06:35:14 +00:00
Mute settings box
Closes: #3153 Signed-off-by: Nicholas Guriev <guriev-ns@ya.ru> (github: mymedia2)
This commit is contained in:
committed by
John Preston
parent
98f3e9a853
commit
24fc162e71
@@ -666,3 +666,16 @@ rightsHeaderLabel: FlatLabel(boxLabel) {
|
||||
textFg: windowActiveTextFg;
|
||||
}
|
||||
rightsUntilMargin: margins(0px, 8px, 0px, 0px);
|
||||
|
||||
mutePhotoButton: PeerAvatarButton {
|
||||
size: 40px;
|
||||
photoSize: 40px;
|
||||
}
|
||||
muteChatTitle: FlatLabel(boxLabel) {
|
||||
width: 235px;
|
||||
maxHeight: 20px; // block word wrap
|
||||
margin: margins(50px, 0px, 0px, 0px); // left offset for place peer avatar
|
||||
style: TextStyle(boxTextStyle) {
|
||||
font: font(boxFontSize semibold);
|
||||
}
|
||||
}
|
||||
|
64
Telegram/SourceFiles/boxes/mute_settings_box.cpp
Normal file
64
Telegram/SourceFiles/boxes/mute_settings_box.cpp
Normal file
@@ -0,0 +1,64 @@
|
||||
/* This file is part of Telegram Desktop, the official desktop version of
|
||||
* Telegram messaging app, see https://desktop.telegram.org
|
||||
*
|
||||
* This code is in Public Domain, see license terms in .github/CONTRIBUTING.md
|
||||
* Copyright (C) 2017, Nicholas Guriev <guriev-ns@ya.ru>
|
||||
*/
|
||||
|
||||
#include "boxes/mute_settings_box.h"
|
||||
|
||||
#include "lang/lang_keys.h"
|
||||
#include "mainwidget.h"
|
||||
#include "styles/style_boxes.h"
|
||||
#include "ui/special_buttons.h"
|
||||
#include "ui/widgets/checkbox.h"
|
||||
#include "ui/widgets/labels.h"
|
||||
|
||||
void MuteSettingsBox::prepare() {
|
||||
setTitle(langFactory(lng_disable_notifications_from_tray));
|
||||
int y = 0;
|
||||
|
||||
object_ptr<Ui::FlatLabel> info(this, st::boxLabel);
|
||||
info->setText(lang(lng_mute_box_tip));
|
||||
info->moveToLeft(st::boxPadding.left(), y);
|
||||
y += info->height() + st::boxLittleSkip;
|
||||
|
||||
object_ptr<Ui::PeerAvatarButton> icon(this, _peer, st::mutePhotoButton);
|
||||
icon->setPointerCursor(false);
|
||||
icon->moveToLeft(st::boxPadding.left(), y);
|
||||
|
||||
object_ptr<Ui::FlatLabel> title(this, st::muteChatTitle);
|
||||
title->setText(App::peerName(_peer, true));
|
||||
title->moveToLeft(st::boxPadding.left(),
|
||||
y + icon->height() / 2 - title->height() / 2);
|
||||
// the icon is always higher than this chat title
|
||||
y += icon->height() + st::boxMediumSkip;
|
||||
|
||||
const int FOREVER = 8760; // in fact, this is mute only for 1 year
|
||||
auto group = std::make_shared<Ui::RadiobuttonGroup>(FOREVER);
|
||||
y += st::boxOptionListPadding.top();
|
||||
for (int value : { 1, 4, 18, 72, FOREVER }) { // periods in hours
|
||||
QString text;
|
||||
if (value < 24) {
|
||||
text = lng_mute_duration_hours(lt_count, value);
|
||||
} else if (value < FOREVER) {
|
||||
text = lng_rights_chat_banned_day(lt_count, value / 24);
|
||||
} else {
|
||||
text = lang(lng_rights_chat_banned_forever);
|
||||
}
|
||||
object_ptr<Ui::Radiobutton> option(this, group, value, text);
|
||||
option->moveToLeft(st::boxPadding.left(), y);
|
||||
y += option->heightNoMargins() + st::boxOptionListSkip;
|
||||
}
|
||||
y += st::boxOptionListPadding.bottom() - st::boxOptionListSkip;
|
||||
|
||||
addButton(langFactory(lng_box_ok), [this, group] {
|
||||
App::main()->updateNotifySetting(_peer, NotifySettingSetMuted,
|
||||
SilentNotifiesDontChange, group->value() * 3600);
|
||||
closeBox();
|
||||
});
|
||||
addButton(langFactory(lng_cancel), [this] { closeBox(); });
|
||||
|
||||
setDimensions(st::boxWidth, y);
|
||||
}
|
||||
// vi: ts=4 tw=80
|
28
Telegram/SourceFiles/boxes/mute_settings_box.h
Normal file
28
Telegram/SourceFiles/boxes/mute_settings_box.h
Normal file
@@ -0,0 +1,28 @@
|
||||
/* This file is part of Telegram Desktop, the official desktop version of
|
||||
* Telegram messaging app, see https://desktop.telegram.org
|
||||
*
|
||||
* This code is in Public Domain, see license terms in .github/CONTRIBUTING.md
|
||||
* Copyright (C) 2017, Nicholas Guriev <guriev-ns@ya.ru>
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "boxes/abstract_box.h"
|
||||
|
||||
/* This class implements a dialog-box with radio-buttons for pick duration of
|
||||
* turning off notifications from a chat. The widget is opened by a context menu
|
||||
* in the left list of dialogues. */
|
||||
class MuteSettingsBox : public BoxContent {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
MuteSettingsBox(QWidget *parent, gsl::not_null<PeerData*> peer)
|
||||
: _peer(peer) {
|
||||
}
|
||||
|
||||
protected:
|
||||
void prepare() override;
|
||||
|
||||
private:
|
||||
gsl::not_null<PeerData*> _peer;
|
||||
};
|
||||
// vi: ts=4 tw=80
|
Reference in New Issue
Block a user