Added ability to delete and edit separate media in SendFilesBox.

This commit is contained in:
23rd 2020-01-08 18:35:52 +03:00 committed by John Preston
parent 58cc8fc08b
commit 836df873f0

View file

@ -627,6 +627,12 @@ void AlbumThumb::paintPhoto(Painter &p, int left, int top, int outerWidth) {
top,
outerWidth,
_photo);
_lastRectOfButtons = PaintAlbumThumbButtons(
p,
{ left, top },
st::sendMediaPreviewSize,
0);
}
void AlbumThumb::paintFile(Painter &p, int left, int top, int outerWidth) {
@ -1261,9 +1267,21 @@ int SendFilesBox::AlbumPreview::contentTop() const {
AlbumThumb *SendFilesBox::AlbumPreview::findThumb(QPoint position) const {
position -= QPoint(contentLeft(), contentTop());
const auto i = ranges::find_if(_thumbs, [&](const auto &thumb) {
return thumb->containsPoint(position);
});
auto top = 0;
auto find = [&](const auto &thumb) {
if (_sendWay == SendFilesWay::Album) {
return thumb->containsPoint(position);
} else if (_sendWay == SendFilesWay::Photos) {
const auto bottom = top + thumb->photoHeight();
const auto isUnderTop = (position.y() > top);
top = bottom + st::sendMediaPreviewPhotoSkip;
return isUnderTop && (position.y() < bottom);
}
return false;
};
const auto i = ranges::find_if(_thumbs, std::move(find));
return (i == _thumbs.end()) ? nullptr : i->get();
}
@ -1512,21 +1530,25 @@ void SendFilesBox::AlbumPreview::mousePressEvent(QMouseEvent *e) {
}
void SendFilesBox::AlbumPreview::mouseMoveEvent(QMouseEvent *e) {
if (_sendWay != SendFilesWay::Album) {
if (_sendWay == SendFilesWay::Files) {
applyCursor(style::cur_default);
return;
}
if (_draggedThumb) {
const auto isAlbum = (_sendWay == SendFilesWay::Album);
if (isAlbum && _draggedThumb) {
const auto position = e->pos();
_draggedThumb->moveInAlbum(position - _draggedStartPosition);
updateSuggestedDrag(_draggedThumb->center());
update();
} else {
const auto thumb = findThumb(e->pos());
const auto regularCursor = isAlbum
? style::cur_sizeall
: style::cur_default;
const auto cursor = thumb
? (thumb->buttonsContainPoint(e->pos())
? style::cur_pointer
: style::cur_sizeall)
: regularCursor)
: style::cur_default;
applyCursor(cursor);
}