mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2026-07-25 06:54:43 +00:00
Added draw-to-reply button to media view.
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.1 KiB |
@@ -119,6 +119,7 @@ mediaviewShare: icon {{ "mediaview/viewer_share", mediaviewControlFg }};
|
|||||||
mediaviewRotate: icon {{ "mediaview/rotate", mediaviewControlFg }};
|
mediaviewRotate: icon {{ "mediaview/rotate", mediaviewControlFg }};
|
||||||
mediaviewMore: icon {{ "title_menu_dots", mediaviewControlFg }};
|
mediaviewMore: icon {{ "title_menu_dots", mediaviewControlFg }};
|
||||||
mediaviewRecognize: icon {{ "mediaview/recognize", mediaviewControlFg }};
|
mediaviewRecognize: icon {{ "mediaview/recognize", mediaviewControlFg }};
|
||||||
|
mediaviewDraw: icon {{ "mediaview/draw", mediaviewControlFg }};
|
||||||
|
|
||||||
mediaviewFileRed: icon {
|
mediaviewFileRed: icon {
|
||||||
{ size(25px, 25px), mediaviewFileBg },
|
{ size(25px, 25px), mediaviewFileBg },
|
||||||
|
|||||||
@@ -31,12 +31,14 @@ public:
|
|||||||
not_null<PhotoData*> photo,
|
not_null<PhotoData*> photo,
|
||||||
HistoryItem *item,
|
HistoryItem *item,
|
||||||
MsgId topicRootId,
|
MsgId topicRootId,
|
||||||
PeerId monoforumPeerId)
|
PeerId monoforumPeerId,
|
||||||
|
bool showDrawButton = false)
|
||||||
: _controller(controller)
|
: _controller(controller)
|
||||||
, _photo(photo)
|
, _photo(photo)
|
||||||
, _item(item)
|
, _item(item)
|
||||||
, _topicRootId(topicRootId)
|
, _topicRootId(topicRootId)
|
||||||
, _monoforumPeerId(monoforumPeerId) {
|
, _monoforumPeerId(monoforumPeerId)
|
||||||
|
, _showDrawButton(showDrawButton) {
|
||||||
}
|
}
|
||||||
OpenRequest(
|
OpenRequest(
|
||||||
Window::SessionController *controller,
|
Window::SessionController *controller,
|
||||||
@@ -54,14 +56,16 @@ public:
|
|||||||
MsgId topicRootId,
|
MsgId topicRootId,
|
||||||
PeerId monoforumPeerId,
|
PeerId monoforumPeerId,
|
||||||
bool continueStreaming = false,
|
bool continueStreaming = false,
|
||||||
crl::time startTime = 0)
|
crl::time startTime = 0,
|
||||||
|
bool showDrawButton = false)
|
||||||
: _controller(controller)
|
: _controller(controller)
|
||||||
, _document(document)
|
, _document(document)
|
||||||
, _item(item)
|
, _item(item)
|
||||||
, _topicRootId(topicRootId)
|
, _topicRootId(topicRootId)
|
||||||
, _monoforumPeerId(monoforumPeerId)
|
, _monoforumPeerId(monoforumPeerId)
|
||||||
, _continueStreaming(continueStreaming)
|
, _continueStreaming(continueStreaming)
|
||||||
, _startTime(startTime) {
|
, _startTime(startTime)
|
||||||
|
, _showDrawButton(showDrawButton) {
|
||||||
}
|
}
|
||||||
OpenRequest(
|
OpenRequest(
|
||||||
Window::SessionController *controller,
|
Window::SessionController *controller,
|
||||||
@@ -148,6 +152,10 @@ public:
|
|||||||
return _startTime;
|
return _startTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[[nodiscard]] bool showDrawButton() const {
|
||||||
|
return _showDrawButton;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Window::SessionController *_controller = nullptr;
|
Window::SessionController *_controller = nullptr;
|
||||||
DocumentData *_document = nullptr;
|
DocumentData *_document = nullptr;
|
||||||
@@ -161,6 +169,7 @@ private:
|
|||||||
std::optional<Data::CloudTheme> _cloudTheme = std::nullopt;
|
std::optional<Data::CloudTheme> _cloudTheme = std::nullopt;
|
||||||
bool _continueStreaming = false;
|
bool _continueStreaming = false;
|
||||||
crl::time _startTime = 0;
|
crl::time _startTime = 0;
|
||||||
|
bool _showDrawButton = false;
|
||||||
|
|
||||||
std::shared_ptr<Data::GroupCall> _call;
|
std::shared_ptr<Data::GroupCall> _call;
|
||||||
QString _callLinkSlug;
|
QString _callLinkSlug;
|
||||||
|
|||||||
@@ -819,7 +819,8 @@ auto OverlayWidget::RendererGL::controlMeta(Over control) const -> Control {
|
|||||||
case Over::Share: return { 3, &st::mediaviewShare };
|
case Over::Share: return { 3, &st::mediaviewShare };
|
||||||
case Over::Rotate: return { 4, &st::mediaviewRotate };
|
case Over::Rotate: return { 4, &st::mediaviewRotate };
|
||||||
case Over::More: return { 5, &st::mediaviewMore };
|
case Over::More: return { 5, &st::mediaviewMore };
|
||||||
case Over::Recognize: return { 6, &st::mediaviewRecognize };
|
case Over::Draw: return { 6, &st::mediaviewDraw };
|
||||||
|
case Over::Recognize: return { 7, &st::mediaviewRecognize };
|
||||||
}
|
}
|
||||||
Unexpected("Control value in OverlayWidget::RendererGL::ControlIndex.");
|
Unexpected("Control value in OverlayWidget::RendererGL::ControlIndex.");
|
||||||
}
|
}
|
||||||
@@ -835,6 +836,7 @@ void OverlayWidget::RendererGL::validateControls() {
|
|||||||
controlMeta(Over::Share),
|
controlMeta(Over::Share),
|
||||||
controlMeta(Over::Rotate),
|
controlMeta(Over::Rotate),
|
||||||
controlMeta(Over::More),
|
controlMeta(Over::More),
|
||||||
|
controlMeta(Over::Draw),
|
||||||
controlMeta(Over::Recognize),
|
controlMeta(Over::Recognize),
|
||||||
};
|
};
|
||||||
auto maxWidth = 0;
|
auto maxWidth = 0;
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ private:
|
|||||||
static constexpr auto kStoriesSiblingPartsCount = 4;
|
static constexpr auto kStoriesSiblingPartsCount = 4;
|
||||||
Ui::GL::Image _storiesSiblingParts[kStoriesSiblingPartsCount];
|
Ui::GL::Image _storiesSiblingParts[kStoriesSiblingPartsCount];
|
||||||
|
|
||||||
static constexpr auto kControlsCount = 7;
|
static constexpr auto kControlsCount = 8;
|
||||||
[[nodiscard]] Control controlMeta(Over control) const;
|
[[nodiscard]] Control controlMeta(Over control) const;
|
||||||
|
|
||||||
// Last one is for the over circle image.
|
// Last one is for the over circle image.
|
||||||
|
|||||||
@@ -1452,6 +1452,10 @@ void OverlayWidget::updateControls() {
|
|||||||
_saveVisible = computeSaveButtonVisible();
|
_saveVisible = computeSaveButtonVisible();
|
||||||
_shareVisible = story && story->canShare();
|
_shareVisible = story && story->canShare();
|
||||||
_rotateVisible = !_themePreviewShown && !story;
|
_rotateVisible = !_themePreviewShown && !story;
|
||||||
|
_drawVisible = _drawButtonEnabled
|
||||||
|
&& !_themePreviewShown
|
||||||
|
&& !story
|
||||||
|
&& (_photo || (_document && _document->isImage()));
|
||||||
_recognizeVisible = _recognitionResult.success
|
_recognizeVisible = _recognitionResult.success
|
||||||
&& !_recognitionResult.items.empty();
|
&& !_recognitionResult.items.empty();
|
||||||
const auto navRect = [&](int i) {
|
const auto navRect = [&](int i) {
|
||||||
@@ -1484,6 +1488,12 @@ void OverlayWidget::updateControls() {
|
|||||||
if (_saveVisible) {
|
if (_saveVisible) {
|
||||||
++index;
|
++index;
|
||||||
}
|
}
|
||||||
|
_drawNav = navRect(index);
|
||||||
|
_drawNavOver = style::centerrect(_drawNav, overRect);
|
||||||
|
_drawNavIcon = style::centerrect(_drawNav, st::mediaviewDraw);
|
||||||
|
if (_drawVisible) {
|
||||||
|
++index;
|
||||||
|
}
|
||||||
_recognizeNav = navRect(index);
|
_recognizeNav = navRect(index);
|
||||||
_recognizeNavOver = style::centerrect(_recognizeNav, overRect);
|
_recognizeNavOver = style::centerrect(_recognizeNav, overRect);
|
||||||
_recognizeNavIcon = style::centerrect(_recognizeNav, st::mediaviewRecognize);
|
_recognizeNavIcon = style::centerrect(_recognizeNav, st::mediaviewRecognize);
|
||||||
@@ -2004,6 +2014,10 @@ bool OverlayWidget::updateControlsAnimation(crl::time now) {
|
|||||||
+ (_over == Over::Share ? _shareNavOver : _shareNavIcon)
|
+ (_over == Over::Share ? _shareNavOver : _shareNavIcon)
|
||||||
+ (_over == Over::Rotate ? _rotateNavOver : _rotateNavIcon)
|
+ (_over == Over::Rotate ? _rotateNavOver : _rotateNavIcon)
|
||||||
+ (_over == Over::More ? _moreNavOver : _moreNavIcon)
|
+ (_over == Over::More ? _moreNavOver : _moreNavIcon)
|
||||||
|
+ (_over == Over::Draw ? _drawNavOver : _drawNavIcon)
|
||||||
|
+ (_over == Over::Recognize
|
||||||
|
? _recognizeNavOver
|
||||||
|
: _recognizeNavIcon)
|
||||||
+ ((_stories
|
+ ((_stories
|
||||||
&& (_over == Over::LeftStories || _over == Over::RightStories))
|
&& (_over == Over::LeftStories || _over == Over::RightStories))
|
||||||
? _stories->sibling(siblingType).layout.geometry
|
? _stories->sibling(siblingType).layout.geometry
|
||||||
@@ -3077,6 +3091,9 @@ void OverlayWidget::recognize() {
|
|||||||
st::widgetFadeDuration);
|
st::widgetFadeDuration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OverlayWidget::draw() {
|
||||||
|
}
|
||||||
|
|
||||||
void OverlayWidget::copyMedia() {
|
void OverlayWidget::copyMedia() {
|
||||||
if (showCopyMediaRestriction()) {
|
if (showCopyMediaRestriction()) {
|
||||||
return;
|
return;
|
||||||
@@ -3675,6 +3692,7 @@ void OverlayWidget::show(OpenRequest request) {
|
|||||||
const auto contextItem = request.item();
|
const auto contextItem = request.item();
|
||||||
const auto contextPeer = request.peer();
|
const auto contextPeer = request.peer();
|
||||||
const auto contextTopicRootId = request.topicRootId();
|
const auto contextTopicRootId = request.topicRootId();
|
||||||
|
_drawButtonEnabled = request.showDrawButton();
|
||||||
if (!request.continueStreaming() && !request.startTime() && !_reShow) {
|
if (!request.continueStreaming() && !request.startTime() && !_reShow) {
|
||||||
if (_message && (_message == contextItem)) {
|
if (_message && (_message == contextItem)) {
|
||||||
return close();
|
return close();
|
||||||
@@ -5621,6 +5639,12 @@ void OverlayWidget::paintControls(
|
|||||||
_moreNavOver,
|
_moreNavOver,
|
||||||
_moreNavIcon,
|
_moreNavIcon,
|
||||||
st::mediaviewMore },
|
st::mediaviewMore },
|
||||||
|
{
|
||||||
|
Over::Draw,
|
||||||
|
_drawVisible,
|
||||||
|
_drawNavOver,
|
||||||
|
_drawNavIcon,
|
||||||
|
st::mediaviewDraw },
|
||||||
{
|
{
|
||||||
Over::Recognize,
|
Over::Recognize,
|
||||||
_recognizeVisible,
|
_recognizeVisible,
|
||||||
@@ -6283,6 +6307,7 @@ void OverlayWidget::handleMousePress(
|
|||||||
|| _over == Over::Save
|
|| _over == Over::Save
|
||||||
|| _over == Over::Share
|
|| _over == Over::Share
|
||||||
|| _over == Over::Rotate
|
|| _over == Over::Rotate
|
||||||
|
|| _over == Over::Draw
|
||||||
|| _over == Over::Recognize
|
|| _over == Over::Recognize
|
||||||
|| _over == Over::Icon
|
|| _over == Over::Icon
|
||||||
|| _over == Over::More
|
|| _over == Over::More
|
||||||
@@ -6440,6 +6465,7 @@ void OverlayWidget::updateOverRect(Over state) {
|
|||||||
case Over::Save: update(_saveNavOver); break;
|
case Over::Save: update(_saveNavOver); break;
|
||||||
case Over::Share: update(_shareNavOver); break;
|
case Over::Share: update(_shareNavOver); break;
|
||||||
case Over::Rotate: update(_rotateNavOver); break;
|
case Over::Rotate: update(_rotateNavOver); break;
|
||||||
|
case Over::Draw: update(_drawNavOver); break;
|
||||||
case Over::Icon: update(_docIconRect); break;
|
case Over::Icon: update(_docIconRect); break;
|
||||||
case Over::Header: update(_headerNav); break;
|
case Over::Header: update(_headerNav); break;
|
||||||
case Over::More: update(_moreNavOver); break;
|
case Over::More: update(_moreNavOver); break;
|
||||||
@@ -6578,6 +6604,8 @@ void OverlayWidget::updateOver(QPoint pos) {
|
|||||||
updateOverState(Over::Icon);
|
updateOverState(Over::Icon);
|
||||||
} else if (_moreNav.contains(pos)) {
|
} else if (_moreNav.contains(pos)) {
|
||||||
updateOverState(Over::More);
|
updateOverState(Over::More);
|
||||||
|
} else if (_drawVisible && _drawNav.contains(pos)) {
|
||||||
|
updateOverState(Over::Draw);
|
||||||
} else if (_recognizeVisible && _recognizeNav.contains(pos)) {
|
} else if (_recognizeVisible && _recognizeNav.contains(pos)) {
|
||||||
updateOverState(Over::Recognize);
|
updateOverState(Over::Recognize);
|
||||||
} else if (contentShown() && finalContentRect().contains(pos)) {
|
} else if (contentShown() && finalContentRect().contains(pos)) {
|
||||||
@@ -6676,6 +6704,8 @@ void OverlayWidget::handleMouseRelease(
|
|||||||
handleDocumentClick();
|
handleDocumentClick();
|
||||||
} else if (_over == Over::More && _down == Over::More) {
|
} else if (_over == Over::More && _down == Over::More) {
|
||||||
InvokeQueued(_widget, [=] { showDropdown(); });
|
InvokeQueued(_widget, [=] { showDropdown(); });
|
||||||
|
} else if (_over == Over::Draw && _down == Over::Draw) {
|
||||||
|
draw();
|
||||||
} else if (_over == Over::Recognize && _down == Over::Recognize) {
|
} else if (_over == Over::Recognize && _down == Over::Recognize) {
|
||||||
recognize();
|
recognize();
|
||||||
} else if (_over == Over::Video && _down == Over::Video) {
|
} else if (_over == Over::Video && _down == Over::Video) {
|
||||||
|
|||||||
@@ -158,6 +158,7 @@ private:
|
|||||||
Share,
|
Share,
|
||||||
Rotate,
|
Rotate,
|
||||||
More,
|
More,
|
||||||
|
Draw,
|
||||||
Recognize,
|
Recognize,
|
||||||
Icon,
|
Icon,
|
||||||
Video,
|
Video,
|
||||||
@@ -287,6 +288,7 @@ private:
|
|||||||
void showMediaOverview();
|
void showMediaOverview();
|
||||||
void copyMedia();
|
void copyMedia();
|
||||||
void recognize();
|
void recognize();
|
||||||
|
void draw();
|
||||||
void receiveMouse();
|
void receiveMouse();
|
||||||
void showAttachedStickers();
|
void showAttachedStickers();
|
||||||
[[nodiscard]] auto scaledRecognitionRect(QPoint position)
|
[[nodiscard]] auto scaledRecognitionRect(QPoint position)
|
||||||
@@ -594,6 +596,7 @@ private:
|
|||||||
QRect _headerNav, _nameNav, _dateNav, _separatorNav;
|
QRect _headerNav, _nameNav, _dateNav, _separatorNav;
|
||||||
QRect _rotateNav, _rotateNavOver, _rotateNavIcon;
|
QRect _rotateNav, _rotateNavOver, _rotateNavIcon;
|
||||||
QRect _shareNav, _shareNavOver, _shareNavIcon;
|
QRect _shareNav, _shareNavOver, _shareNavIcon;
|
||||||
|
QRect _drawNav, _drawNavOver, _drawNavIcon;
|
||||||
QRect _recognizeNav, _recognizeNavOver, _recognizeNavIcon;
|
QRect _recognizeNav, _recognizeNavOver, _recognizeNavIcon;
|
||||||
QRect _saveNav, _saveNavOver, _saveNavIcon;
|
QRect _saveNav, _saveNavOver, _saveNavIcon;
|
||||||
QRect _moreNav, _moreNavOver, _moreNavIcon;
|
QRect _moreNav, _moreNavOver, _moreNavIcon;
|
||||||
@@ -602,6 +605,8 @@ private:
|
|||||||
bool _saveVisible = false;
|
bool _saveVisible = false;
|
||||||
bool _shareVisible = false;
|
bool _shareVisible = false;
|
||||||
bool _rotateVisible = false;
|
bool _rotateVisible = false;
|
||||||
|
bool _drawButtonEnabled = true;
|
||||||
|
bool _drawVisible = false;
|
||||||
bool _recognizeVisible = false;
|
bool _recognizeVisible = false;
|
||||||
bool _headerHasLink = false;
|
bool _headerHasLink = false;
|
||||||
QString _dateText;
|
QString _dateText;
|
||||||
|
|||||||
Reference in New Issue
Block a user