mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-16 06:07:06 +02:00
Show Saved Messages in Reply in another chat.
This commit is contained in:
parent
ec3fc8c749
commit
597816db09
7 changed files with 31 additions and 25 deletions
|
@ -2361,6 +2361,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
"lng_saved_messages" = "Saved Messages";
|
||||
"lng_saved_short" = "Save";
|
||||
"lng_saved_forward_here" = "Forward messages here for quick access";
|
||||
"lng_saved_quote_here" = "Quote here to save";
|
||||
|
||||
"lng_scheduled_messages" = "Scheduled Messages";
|
||||
"lng_scheduled_messages_empty" = "No scheduled messages here yet...";
|
||||
|
|
|
@ -456,7 +456,7 @@ int PeerListController::descriptionTopSkipMin() const {
|
|||
void PeerListBox::addSelectItem(
|
||||
not_null<PeerData*> peer,
|
||||
anim::type animated) {
|
||||
const auto respect = _controller->respectSavedMessagesChat();
|
||||
const auto respect = !_controller->savedMessagesChatStatus().isEmpty();
|
||||
const auto text = (respect && peer->isSelf())
|
||||
? tr::lng_saved_short(tr::now)
|
||||
: (respect && peer->isRepliesChat())
|
||||
|
@ -579,8 +579,8 @@ void PeerListRow::refreshStatus() {
|
|||
_statusType = StatusType::LastSeen;
|
||||
_statusValidTill = 0;
|
||||
if (auto user = peer()->asUser()) {
|
||||
if (_isSavedMessagesChat) {
|
||||
setStatusText(tr::lng_saved_forward_here(tr::now));
|
||||
if (!_savedMessagesStatus.isEmpty()) {
|
||||
setStatusText(_savedMessagesStatus);
|
||||
} else {
|
||||
auto time = base::unixtime::now();
|
||||
setStatusText(Data::OnlineText(user, time));
|
||||
|
@ -613,7 +613,7 @@ void PeerListRow::refreshName(const style::PeerListItem &st) {
|
|||
if (!_initialized) {
|
||||
return;
|
||||
}
|
||||
const auto text = _isSavedMessagesChat
|
||||
const auto text = !_savedMessagesStatus.isEmpty()
|
||||
? tr::lng_saved_messages(tr::now)
|
||||
: _isRepliesMessagesChat
|
||||
? tr::lng_replies_messages(tr::now)
|
||||
|
@ -683,7 +683,7 @@ QString PeerListRow::generateName() {
|
|||
}
|
||||
|
||||
QString PeerListRow::generateShortName() {
|
||||
return _isSavedMessagesChat
|
||||
return !_savedMessagesStatus.isEmpty()
|
||||
? tr::lng_saved_short(tr::now)
|
||||
: _isRepliesMessagesChat
|
||||
? tr::lng_replies_messages(tr::now)
|
||||
|
@ -699,7 +699,7 @@ Ui::PeerUserpicView &PeerListRow::ensureUserpicView() {
|
|||
|
||||
PaintRoundImageCallback PeerListRow::generatePaintUserpicCallback(
|
||||
bool forceRound) {
|
||||
const auto saved = _isSavedMessagesChat;
|
||||
const auto saved = !_savedMessagesStatus.isEmpty();
|
||||
const auto replies = _isRepliesMessagesChat;
|
||||
const auto peer = this->peer();
|
||||
auto userpic = saved ? Ui::PeerUserpicView() : ensureUserpicView();
|
||||
|
@ -745,7 +745,9 @@ int PeerListRow::paintNameIconGetWidth(
|
|||
int availableWidth,
|
||||
int outerWidth,
|
||||
bool selected) {
|
||||
if (special() || _isSavedMessagesChat || _isRepliesMessagesChat) {
|
||||
if (special()
|
||||
|| !_savedMessagesStatus.isEmpty()
|
||||
|| _isRepliesMessagesChat) {
|
||||
return 0;
|
||||
}
|
||||
return _bagde.drawGetWidth(
|
||||
|
@ -855,7 +857,7 @@ void PeerListRow::paintDisabledCheckUserpic(
|
|||
auto iconBorderPen = st.checkbox.check.border->p;
|
||||
iconBorderPen.setWidth(st.checkbox.selectWidth);
|
||||
|
||||
if (_isSavedMessagesChat) {
|
||||
if (!_savedMessagesStatus.isEmpty()) {
|
||||
Ui::EmptyUserpic::PaintSavedMessages(p, userpicLeft, userpicTop, outerWidth, userpicRadius * 2);
|
||||
} else if (_isRepliesMessagesChat) {
|
||||
Ui::EmptyUserpic::PaintRepliesMessages(p, userpicLeft, userpicTop, outerWidth, userpicRadius * 2);
|
||||
|
@ -1046,9 +1048,10 @@ void PeerListContent::setRowHidden(not_null<PeerListRow*> row, bool hidden) {
|
|||
}
|
||||
|
||||
void PeerListContent::addRowEntry(not_null<PeerListRow*> row) {
|
||||
if (_controller->respectSavedMessagesChat() && !row->special()) {
|
||||
const auto savedMessagesStatus = _controller->savedMessagesChatStatus();
|
||||
if (!savedMessagesStatus.isEmpty() && !row->special()) {
|
||||
if (row->peer()->isSelf()) {
|
||||
row->setIsSavedMessagesChat(true);
|
||||
row->setSavedMessagesChatStatus(savedMessagesStatus);
|
||||
} else if (row->peer()->isRepliesChat()) {
|
||||
row->setIsRepliesMessagesChat(true);
|
||||
}
|
||||
|
|
|
@ -185,8 +185,8 @@ public:
|
|||
void setIsSearchResult(bool isSearchResult) {
|
||||
_isSearchResult = isSearchResult;
|
||||
}
|
||||
void setIsSavedMessagesChat(bool isSavedMessagesChat) {
|
||||
_isSavedMessagesChat = isSavedMessagesChat;
|
||||
void setSavedMessagesChatStatus(QString savedMessagesStatus) {
|
||||
_savedMessagesStatus = savedMessagesStatus;
|
||||
}
|
||||
void setIsRepliesMessagesChat(bool isRepliesMessagesChat) {
|
||||
_isRepliesMessagesChat = isRepliesMessagesChat;
|
||||
|
@ -278,12 +278,12 @@ private:
|
|||
StatusType _statusType = StatusType::Online;
|
||||
crl::time _statusValidTill = 0;
|
||||
base::flat_set<QChar> _nameFirstLetters;
|
||||
QString _savedMessagesStatus;
|
||||
int _absoluteIndex = -1;
|
||||
State _disabledState = State::Active;
|
||||
bool _hidden : 1 = false;
|
||||
bool _initialized : 1 = false;
|
||||
bool _isSearchResult : 1 = false;
|
||||
bool _isSavedMessagesChat : 1 = false;
|
||||
bool _isRepliesMessagesChat : 1 = false;
|
||||
|
||||
};
|
||||
|
@ -517,8 +517,8 @@ public:
|
|||
void peerListSearchAddRow(PeerListRowId id) override;
|
||||
void peerListSearchRefreshRows() override;
|
||||
|
||||
[[nodiscard]] virtual bool respectSavedMessagesChat() const {
|
||||
return false;
|
||||
[[nodiscard]] virtual QString savedMessagesChatStatus() const {
|
||||
return QString();
|
||||
}
|
||||
[[nodiscard]] virtual int customRowHeight() {
|
||||
Unexpected("PeerListController::customRowHeight.");
|
||||
|
|
|
@ -313,7 +313,7 @@ void ChatsListBoxController::rebuildRows() {
|
|||
return count;
|
||||
};
|
||||
auto added = 0;
|
||||
if (respectSavedMessagesChat()) {
|
||||
if (!savedMessagesChatStatus().isEmpty()) {
|
||||
if (appendRow(session().data().history(session().user()))) {
|
||||
++added;
|
||||
}
|
||||
|
@ -330,7 +330,7 @@ void ChatsListBoxController::rebuildRows() {
|
|||
const auto history = static_cast<const Row&>(a).history();
|
||||
return history->inChatList();
|
||||
});
|
||||
if (respectSavedMessagesChat()) {
|
||||
if (!savedMessagesChatStatus().isEmpty()) {
|
||||
delegate()->peerListPartitionRows([](const PeerListRow &a) {
|
||||
return a.peer()->isSelf();
|
||||
});
|
||||
|
@ -696,6 +696,10 @@ void ChooseRecipientBoxController::rowClicked(not_null<PeerListRow*> row) {
|
|||
}
|
||||
}
|
||||
|
||||
QString ChooseRecipientBoxController::savedMessagesChatStatus() const {
|
||||
return tr::lng_saved_forward_here(tr::now);
|
||||
}
|
||||
|
||||
auto ChooseRecipientBoxController::createRow(
|
||||
not_null<History*> history) -> std::unique_ptr<Row> {
|
||||
const auto peer = history->peer;
|
||||
|
|
|
@ -218,9 +218,7 @@ public:
|
|||
Main::Session &session() const override;
|
||||
void rowClicked(not_null<PeerListRow*> row) override;
|
||||
|
||||
bool respectSavedMessagesChat() const override {
|
||||
return true;
|
||||
}
|
||||
QString savedMessagesChatStatus() const override;
|
||||
|
||||
protected:
|
||||
void prepareViewHook() override;
|
||||
|
|
|
@ -45,8 +45,8 @@ public:
|
|||
Main::Session &session() const override;
|
||||
void rowClicked(not_null<PeerListRow*> row) override;
|
||||
|
||||
bool respectSavedMessagesChat() const override {
|
||||
return true;
|
||||
QString savedMessagesChatStatus() const override {
|
||||
return tr::lng_saved_forward_here(tr::now);
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
@ -854,12 +854,12 @@ void ShowReplyToChatBox(
|
|||
ChooseRecipientBoxController::rowClicked(row);
|
||||
}
|
||||
|
||||
[[nodiscard]] rpl::producer<Chosen> singleChosen() const{
|
||||
[[nodiscard]] rpl::producer<Chosen> singleChosen() const {
|
||||
return _singleChosen.events();
|
||||
}
|
||||
|
||||
bool respectSavedMessagesChat() const override {
|
||||
return false;
|
||||
QString savedMessagesChatStatus() const override {
|
||||
return tr::lng_saved_quote_here(tr::now);
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
Loading…
Add table
Reference in a new issue