mirror of https://github.com/procxx/kepka.git
				
				
				
			Display consistent caption/comment placeholder.
After latest PRs regarding sticker sending with comment (#5500) and album sending with caption (#4869) the input field placeholder in SendFilesBox was inconsistent with the sending behaviour. Fix it.
This commit is contained in:
		
							parent
							
								
									0b87db8b45
								
							
						
					
					
						commit
						096c310e0e
					
				| 
						 | 
					@ -4302,14 +4302,10 @@ void ApiWrap::sendFiles(
 | 
				
			||||||
		TextWithTags &&caption,
 | 
							TextWithTags &&caption,
 | 
				
			||||||
		std::shared_ptr<SendingAlbum> album,
 | 
							std::shared_ptr<SendingAlbum> album,
 | 
				
			||||||
		const SendOptions &options) {
 | 
							const SendOptions &options) {
 | 
				
			||||||
	const auto isSticker = [&] {
 | 
						const auto haveCaption = !caption.text.isEmpty();
 | 
				
			||||||
		if (list.files.empty() || type != SendMediaType::File) {
 | 
						const auto isAlbum = (album != nullptr);
 | 
				
			||||||
			return false;
 | 
						const auto compressImages = (type == SendMediaType::Photo);
 | 
				
			||||||
		}
 | 
						if (haveCaption && !list.canAddCaption(isAlbum, compressImages)) {
 | 
				
			||||||
		return list.files.front().mime == qstr("image/webp");
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
	if ((list.files.size() > 1 || isSticker())
 | 
					 | 
				
			||||||
		&& !caption.text.isEmpty() && !album) {
 | 
					 | 
				
			||||||
		auto message = MessageToSend(options.history);
 | 
							auto message = MessageToSend(options.history);
 | 
				
			||||||
		message.textWithTags = std::move(caption);
 | 
							message.textWithTags = std::move(caption);
 | 
				
			||||||
		message.replyTo = options.replyTo;
 | 
							message.replyTo = options.replyTo;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -896,10 +896,14 @@ rpl::producer<int> SingleFilePreview::desiredHeightValue() const {
 | 
				
			||||||
	return rpl::single(st::boxPhotoPadding.top() + h + st::msgShadow);
 | 
						return rpl::single(st::boxPhotoPadding.top() + h + st::msgShadow);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Fn<QString()> FieldPlaceholder(const Storage::PreparedList &list) {
 | 
					Fn<QString()> FieldPlaceholder(
 | 
				
			||||||
	return langFactory(list.files.size() > 1
 | 
							const Storage::PreparedList &list,
 | 
				
			||||||
		? lng_photos_comment
 | 
							SendFilesWay way) {
 | 
				
			||||||
		: lng_photo_caption);
 | 
						const auto isAlbum = (way == SendFilesWay::Album);
 | 
				
			||||||
 | 
						const auto compressImages = (way != SendFilesWay::Files);
 | 
				
			||||||
 | 
						return langFactory(list.canAddCaption(isAlbum, compressImages)
 | 
				
			||||||
 | 
							? lng_photo_caption
 | 
				
			||||||
 | 
							: lng_photos_comment);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} // namespace
 | 
					} // namespace
 | 
				
			||||||
| 
						 | 
					@ -1339,7 +1343,7 @@ SendFilesBox::SendFilesBox(
 | 
				
			||||||
	this,
 | 
						this,
 | 
				
			||||||
	st::confirmCaptionArea,
 | 
						st::confirmCaptionArea,
 | 
				
			||||||
	Ui::InputField::Mode::MultiLine,
 | 
						Ui::InputField::Mode::MultiLine,
 | 
				
			||||||
	FieldPlaceholder(_list),
 | 
						nullptr,
 | 
				
			||||||
	caption) {
 | 
						caption) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1433,8 +1437,8 @@ void SendFilesBox::setupShadows(
 | 
				
			||||||
void SendFilesBox::prepare() {
 | 
					void SendFilesBox::prepare() {
 | 
				
			||||||
	_send = addButton(langFactory(lng_send_button), [this] { send(); });
 | 
						_send = addButton(langFactory(lng_send_button), [this] { send(); });
 | 
				
			||||||
	addButton(langFactory(lng_cancel), [this] { closeBox(); });
 | 
						addButton(langFactory(lng_cancel), [this] { closeBox(); });
 | 
				
			||||||
	setupCaption();
 | 
					 | 
				
			||||||
	initSendWay();
 | 
						initSendWay();
 | 
				
			||||||
 | 
						setupCaption();
 | 
				
			||||||
	preparePreview();
 | 
						preparePreview();
 | 
				
			||||||
	boxClosing() | rpl::start_with_next([=] {
 | 
						boxClosing() | rpl::start_with_next([=] {
 | 
				
			||||||
		if (!_confirmed && _cancelledCallback) {
 | 
							if (!_confirmed && _cancelledCallback) {
 | 
				
			||||||
| 
						 | 
					@ -1469,6 +1473,7 @@ void SendFilesBox::initSendWay() {
 | 
				
			||||||
	}();
 | 
						}();
 | 
				
			||||||
	_sendWay = std::make_shared<Ui::RadioenumGroup<SendFilesWay>>(value);
 | 
						_sendWay = std::make_shared<Ui::RadioenumGroup<SendFilesWay>>(value);
 | 
				
			||||||
	_sendWay->setChangedCallback([this](SendFilesWay value) {
 | 
						_sendWay->setChangedCallback([this](SendFilesWay value) {
 | 
				
			||||||
 | 
							updateCaptionPlaceholder();
 | 
				
			||||||
		applyAlbumOrder();
 | 
							applyAlbumOrder();
 | 
				
			||||||
		if (_albumPreview) {
 | 
							if (_albumPreview) {
 | 
				
			||||||
			_albumPreview->setSendWay(value);
 | 
								_albumPreview->setSendWay(value);
 | 
				
			||||||
| 
						 | 
					@ -1477,6 +1482,10 @@ void SendFilesBox::initSendWay() {
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void SendFilesBox::updateCaptionPlaceholder() {
 | 
				
			||||||
 | 
						_caption->setPlaceholder(FieldPlaceholder(_list, _sendWay->value()));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SendFilesBox::refreshAlbumMediaCount() {
 | 
					void SendFilesBox::refreshAlbumMediaCount() {
 | 
				
			||||||
	_albumVideosCount = _list.albumIsPossible
 | 
						_albumVideosCount = _list.albumIsPossible
 | 
				
			||||||
		? ranges::count(
 | 
							? ranges::count(
 | 
				
			||||||
| 
						 | 
					@ -1505,7 +1514,6 @@ void SendFilesBox::preparePreview() {
 | 
				
			||||||
void SendFilesBox::setupControls() {
 | 
					void SendFilesBox::setupControls() {
 | 
				
			||||||
	setupTitleText();
 | 
						setupTitleText();
 | 
				
			||||||
	setupSendWayControls();
 | 
						setupSendWayControls();
 | 
				
			||||||
	_caption->setPlaceholder(FieldPlaceholder(_list));
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SendFilesBox::setupSendWayControls() {
 | 
					void SendFilesBox::setupSendWayControls() {
 | 
				
			||||||
| 
						 | 
					@ -1593,6 +1601,7 @@ void SendFilesBox::setupCaption() {
 | 
				
			||||||
		getDelegate()->outerContainer(),
 | 
							getDelegate()->outerContainer(),
 | 
				
			||||||
		_caption);
 | 
							_caption);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						updateCaptionPlaceholder();
 | 
				
			||||||
	setupEmojiPanel();
 | 
						setupEmojiPanel();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -101,6 +101,7 @@ private:
 | 
				
			||||||
	void setupTitleText();
 | 
						void setupTitleText();
 | 
				
			||||||
	void updateBoxSize();
 | 
						void updateBoxSize();
 | 
				
			||||||
	void updateControlsGeometry();
 | 
						void updateControlsGeometry();
 | 
				
			||||||
 | 
						void updateCaptionPlaceholder();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bool canAddFiles(not_null<const QMimeData*> data) const;
 | 
						bool canAddFiles(not_null<const QMimeData*> data) const;
 | 
				
			||||||
	bool canAddUrls(const QList<QUrl> &urls) const;
 | 
						bool canAddUrls(const QList<QUrl> &urls) const;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -311,6 +311,16 @@ void PreparedList::mergeToEnd(PreparedList &&other) {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool PreparedList::canAddCaption(bool isAlbum, bool compressImages) const {
 | 
				
			||||||
 | 
						const auto isSticker = [&] {
 | 
				
			||||||
 | 
							if (files.empty() || compressImages) {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return (files.front().mime == qstr("image/webp"));
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						return isAlbum || (files.size() == 1 && !isSticker());
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int MaxAlbumItems() {
 | 
					int MaxAlbumItems() {
 | 
				
			||||||
	return kMaxAlbumCount;
 | 
						return kMaxAlbumCount;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -61,6 +61,8 @@ struct PreparedList {
 | 
				
			||||||
		std::vector<int> order);
 | 
							std::vector<int> order);
 | 
				
			||||||
	void mergeToEnd(PreparedList &&other);
 | 
						void mergeToEnd(PreparedList &&other);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool canAddCaption(bool isAlbum, bool compressImages) const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Error error = Error::None;
 | 
						Error error = Error::None;
 | 
				
			||||||
	QString errorData;
 | 
						QString errorData;
 | 
				
			||||||
	std::vector<PreparedFile> files;
 | 
						std::vector<PreparedFile> files;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue