From 782c254ea08ad482d4de3cf486435145655c80a3 Mon Sep 17 00:00:00 2001 From: John Preston Date: Sat, 11 Apr 2015 11:04:10 +0100 Subject: [PATCH] started photoviewer redesign --- Telegram/Resources/lang.strings | 6 +- Telegram/Resources/style.txt | 192 ++- Telegram/Resources/style_classes.txt | 11 + Telegram/SourceFiles/_other/genstyles.cpp | 13 +- Telegram/SourceFiles/app.cpp | 10 +- Telegram/SourceFiles/app.h | 4 +- Telegram/SourceFiles/art/sprite.png | Bin 62709 -> 163673 bytes Telegram/SourceFiles/art/sprite_200x.png | Bin 110749 -> 210077 bytes Telegram/SourceFiles/boxes/abstractbox.cpp | 2 +- Telegram/SourceFiles/boxes/sessionsbox.cpp | 10 +- Telegram/SourceFiles/dialogswidget.cpp | 4 +- Telegram/SourceFiles/dropdown.cpp | 508 +++----- Telegram/SourceFiles/dropdown.h | 111 +- Telegram/SourceFiles/gui/boxshadow.cpp | 7 +- Telegram/SourceFiles/gui/button.cpp | 1 + Telegram/SourceFiles/gui/contextmenu.cpp | 40 +- Telegram/SourceFiles/gui/contextmenu.h | 5 +- Telegram/SourceFiles/gui/flatbutton.cpp | 18 +- Telegram/SourceFiles/gui/flatbutton.h | 1 + Telegram/SourceFiles/gui/style_core.h | 7 +- Telegram/SourceFiles/gui/twidget.h | 38 +- Telegram/SourceFiles/history.cpp | 14 +- Telegram/SourceFiles/history.h | 8 + Telegram/SourceFiles/mainwidget.cpp | 2 +- Telegram/SourceFiles/mediaview.cpp | 1227 ++++++++++++-------- Telegram/SourceFiles/mediaview.h | 93 +- Telegram/SourceFiles/pspecific_wnd.cpp | 1 + Telegram/SourceFiles/structs.cpp | 2 +- Telegram/SourceFiles/window.cpp | 4 +- Telegram/SourceFiles/window.h | 2 +- 30 files changed, 1233 insertions(+), 1108 deletions(-) diff --git a/Telegram/Resources/lang.strings b/Telegram/Resources/lang.strings index 9c6e636e2..deb8fd138 100644 --- a/Telegram/Resources/lang.strings +++ b/Telegram/Resources/lang.strings @@ -527,12 +527,16 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_search_found_results" = "{count:No messages found|Found # message|Found # messages}"; "lng_search_global_results" = "Global search results"; -"lng_mediaview_save" = "Download"; +"lng_mediaview_save_as" = "Save as.."; +"lng_mediaview_copy" = "Copy"; "lng_mediaview_forward" = "Forward"; "lng_mediaview_delete" = "Delete"; +"lng_mediaview_photos_all" = "View all photos"; +"lng_mediaview_files_all" = "View all files"; "lng_mediaview_single_photo" = "Single Photo"; "lng_mediaview_group_photo" = "Group Photo"; "lng_mediaview_profile_photo" = "Profile Photo"; +"lng_mediaview_file_n_of_count" = "{file} {n} of {count}"; "lng_mediaview_n_of_count" = "Photo {n} of {count}"; "lng_mediaview_doc_image" = "File"; "lng_mediaview_today" = "today at {time}"; diff --git a/Telegram/Resources/style.txt b/Telegram/Resources/style.txt index 010b66b0f..31b97aa66 100644 --- a/Telegram/Resources/style.txt +++ b/Telegram/Resources/style.txt @@ -1361,12 +1361,16 @@ connectingBG: #fffe; connectingColor: #777; connectingPadding: margins(5px, 5px, 5px, 5px); -dropdownPadding: margins(10px, 10px, 10px, 10px); -dropdownShadow: sprite(241px, 46px, 6px, 6px); -dropdownBorder: 1px; -dropdownBorderColor: #ebebeb; -dropdownBackground: white; -dropdownDuration: 150; +dropdownDef: dropdown { + border: 1px; + borderColor: #ebebeb; + + padding: margins(10px, 10px, 10px, 10px); + shadow: sprite(241px, 46px, 6px, 6px); + + duration: 150; + width: 0px; +} dropdownAttachDocument: iconedButton(btnAttachDocument) { iconPos: point(14px, 13px); @@ -1555,18 +1559,82 @@ stickerPanPadding: 2px; stickerPanDelete: sprite(158px, 197px, 12px, 12px); stickerPanDeleteOpacity: 0.5; -medviewNavBarWidth: 132px; -medviewLightNav: 0.5; -medviewDarkNav: 1; -medviewHeaderFont: font(semibold 18px); -medviewNameFont: font(16px); -medviewDateFont: font(14px); -medviewNameTop: 13px; -medviewDateTop: 39px; -medviewLeft: sprite(340px, 79px, 28px, 48px); -medviewRight: sprite(368px, 79px, 28px, 48px); -medviewDeltaFromLastAction: 5px; -medviewSwipeDistance: 80px; +mvBgColor: #222; +mvBgOpacity: 0.92; +mvThickFont: font(fsize semibold); +mvFont: font(fsize); + +mvTextLeft: 16px; +mvTextSkip: 10px; +mvHeaderTop: 48px; +mvTextTop: 24px; +mvTextColor: white; +mvTextOpacity: 0.5; +mvTextOverOpacity: 1; + +mvIconOpacity: 0.45; +mvIconOverOpacity: 1; +mvControlBgColor: black; +mvControlBgOpacity: 0.3; +mvControlMargin: 0px; +mvControlSize: 90px; +mvIconSize: size(60px, 56px); + +mvLeft: sprite(320px, 400px, 12px, 22px); +mvRight: sprite(332px, 400px, 12px, 22px); +mvClose: sprite(344px, 400px, 18px, 18px); +mvSave: sprite(362px, 400px, 14px, 19px); +mvMore: sprite(376px, 400px, 5px, 21px); + +mvDropdown: dropdown(dropdownDef) { + shadow: sprite(0px, 0px, 0px, 0px); + padding: margins(11px, 12px, 11px, 12px); + + border: 0; + width: 182px; +} +mvButton: iconedButton(btnDefIconed) { + bgColor: #383838; + overBgColor: #505050; + font: font(fsize); + + opacity: 1; + overOpacity: 1; + + width: -32px; + height: 36px; + + color: white; + + textPos: point(16px, 9px); + downTextPos: point(16px, 10px); + + duration: 0; +} +mvContextButton: iconedButton(mvButton) { + bgColor: #383838E6; + overBgColor: #505050E7; +} +mvWaitHide: 2000; +mvHideDuration: 1000; +mvShowDuration: 200; +mvFadeDuration: 150; + +mvDocPadding: 18px; +mvDocSize: size(340px, 116px); +mvDocBg: white; +mvDocNameTop: 5px; +mvDocNameColor: black; +mvDocSizeTop: 30px; +mvDocSizeColor: #808080; +mvDocLinksTop: 57px; +mvDocRed: sprite(0px, 400px, 80px, 80px); +mvDocYellow: sprite(80px, 400px, 80px, 80px); +mvDocGreen: sprite(160px, 400px, 80px, 80px); +mvDocBlue: sprite(240px, 400px, 80px, 80px); + +mvDeltaFromLastAction: 5px; +mvSwipeDistance: 80px; medviewSaveMsgCheck: sprite(341px, 174px, 22px, 18px); medviewSaveMsgFont: font(16px); @@ -1578,87 +1646,7 @@ medviewSaveMsgShown: 2000; medviewSaveMsgHiding: 2500; medviewSaveMsg: #000000b2; -medviewOverview: iconedButton(btnDefIconed) { - bgColor: #0000; - overBgColor: #00000040; - font: font(16px); - - opacity: 0.77; - overOpacity: 1; - - icon: sprite(340px, 129px, 19px, 19px); - iconPos: point(16px, 14px); - downIcon: sprite(340px, 129px, 19px, 19px); - downIconPos: point(16px, 14px); - - width: -69px; - height: 47px; - - color: white; - - textPos: point(51px, 13px); - downTextPos: point(51px, 14px); -} -medviewForward: iconedButton(medviewOverview) { - icon: sprite(357px, 58px, 22px, 17px); - iconPos: point(16px, 15px); - downIcon: sprite(357px, 58px, 22px, 17px); - downIconPos: point(16px, 15px); - - width: -69px; -} -medviewDelete: iconedButton(medviewForward) { - icon: sprite(340px, 58px, 15px, 19px); - iconPos: point(16px, 14px); - downIcon: sprite(340px, 58px, 15px, 19px); - downIconPos: point(16px, 14px); -} -medviewClose: iconedButton(medviewOverview) { - icon: sprite(340px, 0px, 56px, 56px); - iconPos: point(0px, 0px); - downIcon: sprite(340px, 0px, 56px, 56px); - downIconPos: point(0px, 0px); - - opacity: 0.6; - - width: 56px; - height: 56px; -} -medviewBottomBar: 87px; -medviewBG: #272727D9; -medviewBottomBG: #272727; -medviewNavOpacity: 0.6; -medviewCloseOpacity: 0.6; -medviewNavBGOpacity: 0.4; -medviewNavOverOpacity: 1; -medviewCloseOverOpacity: 1; -medviewNameColor: black; -medviewDateColor: #999; -medviewSaveAs: iconedButton(medviewOverview) { - bgColor: #38abe6; - overBgColor: #299fdc; - - opacity: 1; - - icon: sprite(361px, 129px, 12px, 19px); - iconPos: point(18px, 15px); - downIcon: sprite(361px, 129px, 12px, 19px); - downIconPos: point(18px, 15px); - - width: -62px; - height: 47px; - - textPos: point(44px, 13px); - downTextPos: point(44px, 14px); -} -medviewSaveAsDisabledOpacity: 0.8; -medviewPolaroid: margins(17px, 18px, 17px, 72px); -medviewPolaroidMin: size(480px, 360px); -medviewDocumentSprite: sprite(341px, 150px, 20px, 22px); -medviewDocumentSpritePos: point(16px, 13px); -medviewPhotoSprite: sprite(363px, 150px, 23px, 20px); -medviewPhotoSpritePos: point(14px, 14px); -medviewTransparentBrush: sprite(148px, 197px, 8px, 8px); +mvTransparentBrush: sprite(148px, 197px, 8px, 8px); overviewPhotoSkip: 10px; overviewPhotoMinSize: 100px; @@ -1704,6 +1692,12 @@ photoLoaderDuration1: 150; // ms fade in photoLoaderDuration2: 150; // ms fade out photoLoaderAlphaMin: 0.1; // not less than that +radialSize: size(50px, 50px); +radialLine: 2px; +radialDuration: 200; +radialPeriod: 2000; +radialBgOpacity: 0.4; + overviewLoader: size(34px, 14px); overviewLoaderPoint: size(4px, 4px); overviewLoaderSkip: 4px; diff --git a/Telegram/Resources/style_classes.txt b/Telegram/Resources/style_classes.txt index 6846cf875..26c39731d 100644 --- a/Telegram/Resources/style_classes.txt +++ b/Telegram/Resources/style_classes.txt @@ -246,3 +246,14 @@ switcher { duration: number; } + +dropdown { + border: number; + borderColor: color; + + padding: margins; + shadow: sprite; + + duration: number; + width: number; +} diff --git a/Telegram/SourceFiles/_other/genstyles.cpp b/Telegram/SourceFiles/_other/genstyles.cpp index cf55a894f..668f06c5c 100644 --- a/Telegram/SourceFiles/_other/genstyles.cpp +++ b/Telegram/SourceFiles/_other/genstyles.cpp @@ -448,6 +448,7 @@ static const char *variantNames[] = { "dbisOne", "dbisOneAndQuarter", "dbisOneAn static const char *variantPostfixes[] = { "", "_125x", "_150x", "_200x" }; QPixmap *spriteMax = 0; QImage *variantSprites = 0; +int *spriteWidths = 0; QImage *variantGrids = 0; void readStyleGenToken(const char *&from, const char *end, StyleGenTokenType &tokenType, string &token) { @@ -1353,17 +1354,22 @@ bool genStyles(const QString &classes_in, const QString &classes_out, const QStr } QImage sprites[variantsCount]; + int widths[variantsCount] = { 0 }; variantSprites = sprites; + spriteWidths = widths; QString sprite0(path_to_sprites + "sprite" + QString(variantPostfixes[0]) + ".png"), spriteLast(path_to_sprites + "sprite" + QString(variantPostfixes[variantsCount - 1]) + ".png"); variantSprites[0] = QImage(sprite0); + spriteWidths[0] = variantSprites[0].width(); for (int i = 1; i < variantsCount - 1; ++i) { variantSprites[i] = QImage(adjustPx(variants[i], variantSprites[0].width(), true), adjustPx(variants[i], variantSprites[0].height(), true), QImage::Format_ARGB32_Premultiplied); + spriteWidths[i] = variantSprites[i].width(); QPainter p(&variantSprites[i]); p.setCompositionMode(QPainter::CompositionMode_Source); p.fillRect(0, 0, variantSprites[i].width(), variantSprites[i].height(), Qt::transparent); } variantSprites[variantsCount - 1] = QImage(spriteLast); + spriteWidths[variantsCount - 1] = variantSprites[variantsCount - 1].width(); QPixmap spriteMaxPix = QPixmap::fromImage(variantSprites[variantsCount - 1], Qt::ColorOnly); spriteMax = &spriteMaxPix; @@ -1567,11 +1573,13 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org\n\ tcpp << "\nnamespace style {\n\n"; tcpp << "\tFontFamilies _fontFamilies;\n"; tcpp << "\tFontDatas _fontsMap;\n"; - tcpp << "\tColorDatas _colorsMap;\n\n"; + tcpp << "\tColorDatas _colorsMap;\n"; + tcpp << "int _spriteWidth = " << spriteWidths[0] << ";\n\n"; tcpp << "\tvoid startManager() {\n"; tcpp << "\n\t\tif (cRetina()) {\n"; - tcpp << "\t\t\tcSetRealScale(dbisOne);\n\n"; + tcpp << "\t\t\tcSetRealScale(dbisOne);\n"; + tcpp << "\t\t\t_spriteWidth = " << spriteWidths[variantsCount - 1] << ";\n\n"; for (int i = 0, l = scalars.size(); i < l; ++i) { Scalar &sc(scalars[i]); if (sc.second.first == scSprite || sc.first == "spriteFile" || sc.first == "emojisFile" || sc.first == "emojiImgSize") { @@ -1594,6 +1602,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org\n\ const char *varName = variantNames[i]; tcpp << "\t\tcase " << varName << ":\n"; + tcpp << "\t\t\t_spriteWidth = " << spriteWidths[i] << ";\n\n"; typedef QMap FontFamilies; FontFamilies fontFamilies; diff --git a/Telegram/SourceFiles/app.cpp b/Telegram/SourceFiles/app.cpp index 5641b061d..7929fd510 100644 --- a/Telegram/SourceFiles/app.cpp +++ b/Telegram/SourceFiles/app.cpp @@ -1515,7 +1515,11 @@ namespace App { audioInit(); if (!::sprite) { - ::sprite = new QPixmap(st::spriteFile); + if (rtl()) { + ::sprite = new QPixmap(QPixmap::fromImage(QImage(st::spriteFile).mirrored(true, false))); + } else { + ::sprite = new QPixmap(st::spriteFile); + } if (cRetina()) ::sprite->setDevicePixelRatio(cRetinaFactor()); } if (!::emojis) { @@ -1598,11 +1602,11 @@ namespace App { return ::mousedItem; } - QPixmap &sprite() { + const QPixmap &sprite() { return *::sprite; } - QPixmap &emojis() { + const QPixmap &emojis() { return *::emojis; } diff --git a/Telegram/SourceFiles/app.h b/Telegram/SourceFiles/app.h index 2dc5a103f..fdec443c3 100644 --- a/Telegram/SourceFiles/app.h +++ b/Telegram/SourceFiles/app.h @@ -154,8 +154,8 @@ namespace App { void mousedItem(HistoryItem *item); HistoryItem *mousedItem(); - QPixmap &sprite(); - QPixmap &emojis(); + const QPixmap &sprite(); + const QPixmap &emojis(); const QPixmap &emojiSingle(const EmojiData *emoji, int32 fontHeight); void initMedia(); diff --git a/Telegram/SourceFiles/art/sprite.png b/Telegram/SourceFiles/art/sprite.png index a2ffacaf05c794160c5090d37b226bff7e3521dd..7e3eeca29a44781b9650434d51b85293657d552a 100644 GIT binary patch literal 163673 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 WvfIgKrJ+IKM?pqeI_n0;>%Rcg*v`fP delta 46057 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

sT=zXn*W1g*9MO_bZ*e)S_N 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 z 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 J$JpWge*hSrkB9&O diff --git a/Telegram/SourceFiles/boxes/abstractbox.cpp b/Telegram/SourceFiles/boxes/abstractbox.cpp index 6e0d57f53..656d9c0b1 100644 --- a/Telegram/SourceFiles/boxes/abstractbox.cpp +++ b/Telegram/SourceFiles/boxes/abstractbox.cpp @@ -71,7 +71,7 @@ void AbstractBox::paintTitle(Painter &p, const QString &title, bool withShadow) // paint box title p.setFont(st::boxTitleFont->f); p.setPen(st::black->p); - p.drawTextLeft(st::boxTitlePos.x(), st::boxTitlePos.y(), width() - 2 * st::boxTitlePos.x(), title); + p.drawTextLeft(st::boxTitlePos.x(), st::boxTitlePos.y(), width(), title); } void AbstractBox::paintGrayTitle(QPainter &p, const QString &title) { diff --git a/Telegram/SourceFiles/boxes/sessionsbox.cpp b/Telegram/SourceFiles/boxes/sessionsbox.cpp index 59899ca1c..f85fe974b 100644 --- a/Telegram/SourceFiles/boxes/sessionsbox.cpp +++ b/Telegram/SourceFiles/boxes/sessionsbox.cpp @@ -37,7 +37,7 @@ void SessionsInner::paintEvent(QPaintEvent *e) { p.fillRect(r, st::white->b); p.setFont(st::linkFont->f); int32 x = st::sessionPadding.left(), xact = st::sessionTerminateSkip + st::sessionTerminate.iconPos.x();// st::sessionTerminateSkip + st::sessionTerminate.width + st::sessionTerminateSkip; - int32 w = width() - 2 * x, availw = width() - 2 * xact; + int32 w = width(); int32 from = (r.top() >= 0) ? qFloor(r.top() / st::sessionHeight) : 0, count = _list->size(); if (from < count) { int32 to = (r.bottom() >= 0 ? qFloor(r.bottom() / st::sessionHeight) : 0) + 1; @@ -52,7 +52,7 @@ void SessionsInner::paintEvent(QPaintEvent *e) { p.setFont(st::sessionActiveFont->f); p.setPen(st::sessionActiveColor->p); - p.drawTextRight(xact, st::sessionPadding.top(), availw, auth.active, auth.activeWidth); + p.drawTextRight(xact, st::sessionPadding.top(), w, auth.active, auth.activeWidth); p.setFont(st::sessionInfoFont->f); p.setPen(st::black->p); @@ -132,7 +132,7 @@ void SessionsInner::listUpdated() { j = _terminateButtons.insert(_list->at(i).hash, new IconedButton(this, st::sessionTerminate)); connect(j.value(), SIGNAL(clicked()), this, SLOT(onTerminate())); } - j.value()->moveToRight(st::sessionTerminateSkip, i * st::sessionHeight + st::sessionTerminateTop, width() - 2 * st::sessionTerminateSkip); + j.value()->moveToRight(st::sessionTerminateSkip, i * st::sessionHeight + st::sessionTerminateTop, width()); } for (TerminateButtons::iterator i = _terminateButtons.begin(); i != _terminateButtons.cend();) { if (i.value()->y() >= 0) { @@ -175,7 +175,7 @@ _terminateAll(this, lang(lng_sessions_terminate_all)), _terminateBox(0), _shortP void SessionsBox::resizeEvent(QResizeEvent *e) { ScrollableBox::resizeEvent(e); _done.move(0, height() - _done.height()); - _terminateAll.moveToRight(st::sessionPadding.left(), st::boxTitleHeight + st::sessionHeight + st::boxTitlePos.y() + st::boxTitleFont->ascent - st::linkFont->ascent, width() - 2 * st::sessionPadding.left()); + _terminateAll.moveToRight(st::sessionPadding.left(), st::boxTitleHeight + st::sessionHeight + st::boxTitlePos.y() + st::boxTitleFont->ascent - st::linkFont->ascent, width()); } void SessionsBox::hideAll() { @@ -212,7 +212,7 @@ void SessionsBox::paintEvent(QPaintEvent *e) { p.drawText(QRect(0, 0, width(), st::noContactsHeight), lang(lng_contacts_loading), style::al_center); } else { int32 x = st::sessionPadding.left(); - int32 w = width() - x - st::sessionPadding.right(); + int32 w = width(); p.setFont(st::sessionNameFont->f); p.setPen(st::black->p); diff --git a/Telegram/SourceFiles/dialogswidget.cpp b/Telegram/SourceFiles/dialogswidget.cpp index 6aeb84c0c..c7a88e00e 100644 --- a/Telegram/SourceFiles/dialogswidget.cpp +++ b/Telegram/SourceFiles/dialogswidget.cpp @@ -67,11 +67,11 @@ void DialogsListWidget::paintEvent(QPaintEvent *e) { QRect r(e->rect()); bool trivial = (rect() == r); - QPainter p(this); + Painter p(this); if (!trivial) { p.setClipRect(r); } - + if (_state == DefaultState) { int32 otherStart = dialogs.list.count * st::dlgHeight; PeerData *active = App::main()->activePeer(), *selected = sel ? sel->history->peer : 0; diff --git a/Telegram/SourceFiles/dropdown.cpp b/Telegram/SourceFiles/dropdown.cpp index a4f62bf4e..4b8570c7a 100644 --- a/Telegram/SourceFiles/dropdown.cpp +++ b/Telegram/SourceFiles/dropdown.cpp @@ -26,8 +26,8 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org #include "window.h" #include "apiwrap.h" -Dropdown::Dropdown(QWidget *parent) : TWidget(parent), - _hiding(false), a_opacity(0), _shadow(st::dropdownShadow) { +Dropdown::Dropdown(QWidget *parent, const style::dropdown &st) : TWidget(parent), +_ignore(false), _selected(-1), _st(st), _width(_st.width), _hiding(false), a_opacity(0), _shadow(_st.shadow) { resetButtons(); _hideTimer.setSingleShot(true); @@ -38,6 +38,10 @@ Dropdown::Dropdown(QWidget *parent) : TWidget(parent), } } +void Dropdown::ignoreShow(bool ignore) { + _ignore = ignore; +} + void Dropdown::onWndActiveChanged() { if (!App::wnd()->windowHandle()->isActive() && !isHidden()) { leaveEvent(0); @@ -47,13 +51,21 @@ void Dropdown::onWndActiveChanged() { IconedButton *Dropdown::addButton(IconedButton *button) { button->setParent(this); - _width = qMax(_width, st::dropdownPadding.left() + st::dropdownPadding.right() + button->width()); - if (!_buttons.isEmpty()) { - _height += st::dropdownBorder; + int32 nw = _st.padding.left() + _st.padding.right() + button->width(); + if (nw > _width) { + _width = nw; + for (int32 i = 0, l = _buttons.size(); i < l; ++i) _buttons[i]->resize(_width - _st.padding.left() - _st.padding.right(), _buttons[i]->height()); + } else { + button->resize(_width - _st.padding.left() - _st.padding.right(), button->height()); + } + if (!button->isHidden()) { + if (_height > _st.padding.top() + _st.padding.bottom()) { + _height += _st.border; + } + _height += button->height(); } - _height += button->height(); - _buttons.push_back(button); + connect(button, SIGNAL(stateChanged(int, ButtonStateChangeSource)), this, SLOT(buttonStateChanged(int, ButtonStateChangeSource))); resize(_width, _height); @@ -61,20 +73,39 @@ IconedButton *Dropdown::addButton(IconedButton *button) { } void Dropdown::resetButtons() { - _width = st::dropdownPadding.left() + st::dropdownPadding.right(); - _height = st::dropdownPadding.top() + st::dropdownPadding.bottom(); - resize(_width, _height); + _width = qMax(_st.padding.left() + _st.padding.right(), int(_st.width)); + _height = _st.padding.top() + _st.padding.bottom(); for (int32 i = 0, l = _buttons.size(); i < l; ++i) { delete _buttons[i]; } _buttons.clear(); + resize(_width, _height); + + _selected = -1; +} + +void Dropdown::updateButtons() { + int32 top = _st.padding.top(), starttop = top; + for (Buttons::const_iterator i = _buttons.cbegin(), e = _buttons.cend(); i != e; ++i) { + if (!(*i)->isHidden()) { + (*i)->move(_st.padding.left(), top); + if ((*i)->width() != _width - _st.padding.left() - _st.padding.right()) { + (*i)->resize(_width - _st.padding.left() - _st.padding.right(), (*i)->height()); + } + top += (*i)->height() + _st.border; + } + } + _height = top + _st.padding.bottom() - (top > starttop ? _st.border : 0); + resize(_width, _height); } void Dropdown::resizeEvent(QResizeEvent *e) { - int32 top = st::dropdownPadding.top(); + int32 top = _st.padding.top(); for (Buttons::const_iterator i = _buttons.cbegin(), e = _buttons.cend(); i != e; ++i) { - (*i)->move(st::dropdownPadding.left(), top); - top += st::dropdownBorder + (*i)->height(); + if (!(*i)->isHidden()) { + (*i)->move(_st.padding.left(), top); + top += (*i)->height() + _st.border; + } } } @@ -85,16 +116,24 @@ void Dropdown::paintEvent(QPaintEvent *e) { p.setOpacity(a_opacity.current()); } - QRect r(st::dropdownPadding.left(), st::dropdownPadding.top(), _width - st::dropdownPadding.left() - st::dropdownPadding.right(), _height - st::dropdownPadding.top() - st::dropdownPadding.bottom()); // draw shadow + QRect r(_st.padding.left(), _st.padding.top(), _width - _st.padding.left() - _st.padding.right(), _height - _st.padding.top() - _st.padding.bottom()); _shadow.paint(p, r); - if (!_buttons.isEmpty()) { // paint separators - int32 top = st::dropdownPadding.top() + _buttons.front()->height(); - p.setPen(st::dropdownBorderColor->p); - for (int32 i = 1, s = _buttons.size(); i < s; ++i) { - p.fillRect(st::dropdownPadding.left(), top, _width - st::dropdownPadding.left() - st::dropdownPadding.right(), st::dropdownBorder, st::dropdownBorderColor->b); - top += st::dropdownBorder + _buttons[i]->height(); + if (!_buttons.isEmpty() && _st.border > 0) { // paint separators + p.setPen(_st.borderColor->p); + int32 top = _st.padding.top(), i = 0, l = _buttons.size(); + for (; i < l; ++i) { + if (!_buttons.at(i)->isHidden()) break; + } + if (i < l) { + top += _buttons.at(i)->height(); + for (++i; i < l; ++i) { + if (!_buttons.at(i)->isHidden()) { + p.fillRect(_st.padding.left(), top, _width - _st.padding.left() - _st.padding.right(), _st.border, _st.borderColor->b); + top += _st.border + _buttons.at(i)->height(); + } + } } } } @@ -102,6 +141,7 @@ void Dropdown::paintEvent(QPaintEvent *e) { void Dropdown::enterEvent(QEvent *e) { _hideTimer.stop(); if (_hiding) showStart(); + return TWidget::enterEvent(e); } void Dropdown::leaveEvent(QEvent *e) { @@ -110,6 +150,73 @@ void Dropdown::leaveEvent(QEvent *e) { } else { _hideTimer.start(300); } + return TWidget::leaveEvent(e); +} + +void Dropdown::keyPressEvent(QKeyEvent *e) { + if (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return) { + if (_selected >= 0 && _selected < _buttons.size()) { + emit _buttons[_selected]->clicked(); + return; + } + } else if (e->key() == Qt::Key_Escape) { + hideStart(); + return; + } + if ((e->key() != Qt::Key_Up && e->key() != Qt::Key_Down) || _buttons.size() < 1) return; + + bool none = (_selected < 0 || _selected >= _buttons.size()); + int32 delta = (e->key() == Qt::Key_Down ? 1 : -1); + int32 newSelected = none ? (e->key() == Qt::Key_Down ? 0 : _buttons.size() - 1) : (_selected + delta); + if (newSelected < 0) { + newSelected = _buttons.size() - 1; + } else if (newSelected >= _buttons.size()) { + newSelected = 0; + } + int32 startFrom = newSelected; + while (_buttons.at(newSelected)->isHidden()) { + newSelected += delta; + if (newSelected < 0) { + newSelected = _buttons.size() - 1; + } else if (newSelected >= _buttons.size()) { + newSelected = 0; + } + if (newSelected == startFrom) return; + } + if (!none) { + _buttons[_selected]->setOver(false); + } + _selected = newSelected; + _buttons[_selected]->setOver(true); +} + +void Dropdown::buttonStateChanged(int oldState, ButtonStateChangeSource source) { + if (source == ButtonByUser) { + for (int32 i = 0, l = _buttons.size(); i < l; ++i) { + if (_buttons[i]->getState() & Button::StateOver) { + if (i != _selected) { + _buttons[i]->setOver(false); + } + } + } + } else if (source == ButtonByHover) { + bool found = false; + for (int32 i = 0, l = _buttons.size(); i < l; ++i) { + if (_buttons[i]->getState() & Button::StateOver) { + found = true; + if (i != _selected) { + int32 sel = _selected; + _selected = i; + if (sel >= 0 && sel < _buttons.size()) { + _buttons[sel]->setOver(false); + } + } + } + } + if (!found) { + _selected = -1; + } + } } void Dropdown::otherEnter() { @@ -147,13 +254,19 @@ void Dropdown::hideStart() { } void Dropdown::hideFinish() { + emit hiding(); hide(); + for (Buttons::const_iterator i = _buttons.cbegin(), e = _buttons.cend(); i != e; ++i) { + (*i)->clearState(); + } + _selected = -1; } void Dropdown::showStart() { if (!isHidden() && a_opacity.current() == 1) { return; } + _selected = -1; _hiding = false; show(); a_opacity.start(1); @@ -161,7 +274,7 @@ void Dropdown::showStart() { } bool Dropdown::animStep(float64 ms) { - float64 dt = ms / st::dropdownDuration; + float64 dt = ms / _st.duration; bool res = true; if (dt >= 1) { a_opacity.finish(); @@ -312,7 +425,7 @@ void DragArea::showStart() { } bool DragArea::animStep(float64 ms) { - float64 dt = ms / st::dropdownDuration; + float64 dt = ms / st::dropdownDef.duration; bool res = true; if (dt >= 1) { a_opacity.finish(); @@ -648,7 +761,7 @@ void EmojiPanInner::showEmojiPack(DBIEmojiTab packIndex) { } EmojiPan::EmojiPan(QWidget *parent) : TWidget(parent), -_hiding(false), a_opacity(0), _shadow(st::dropdownShadow), +_hiding(false), a_opacity(0), _shadow(st::dropdownDef.shadow), _recent (this, qsl("emoji_group"), dbietRecent , QString(), cEmojiTab() == dbietRecent , st::rbEmojiRecent), _people (this, qsl("emoji_group"), dbietPeople , QString(), cEmojiTab() == dbietPeople , st::rbEmojiPeople), _nature (this, qsl("emoji_group"), dbietNature , QString(), cEmojiTab() == dbietNature , st::rbEmojiNature), @@ -665,15 +778,15 @@ _scroll(this, st::emojiScroll), _inner() { _inner.showEmojiPack(cEmojiTab()); } - _scroll.setGeometry(st::dropdownPadding.left() + st::emojiPanPadding.left(), st::dropdownPadding.top() + _recent.height() + st::emojiPanPadding.top(), st::emojiPanPadding.left() + _inner.width() + st::emojiPanPadding.right(), EmojiPadRowsPerPage * st::emojiPanSize.height() - st::emojiPanSub); + _scroll.setGeometry(st::dropdownDef.padding.left() + st::emojiPanPadding.left(), st::dropdownDef.padding.top() + _recent.height() + st::emojiPanPadding.top(), st::emojiPanPadding.left() + _inner.width() + st::emojiPanPadding.right(), EmojiPadRowsPerPage * st::emojiPanSize.height() - st::emojiPanSub); _scroll.setWidget(&_inner); - _width = st::dropdownPadding.left() + st::emojiPanPadding.left() + _scroll.width() + st::emojiPanPadding.right() + st::dropdownPadding.right(); - _height = st::dropdownPadding.top() + _recent.height() + st::emojiPanPadding.top() + _scroll.height() + st::emojiPanPadding.bottom() + st::dropdownPadding.bottom(); + _width = st::dropdownDef.padding.left() + st::emojiPanPadding.left() + _scroll.width() + st::emojiPanPadding.right() + st::dropdownDef.padding.right(); + _height = st::dropdownDef.padding.top() + _recent.height() + st::emojiPanPadding.top() + _scroll.height() + st::emojiPanPadding.bottom() + st::dropdownDef.padding.bottom(); resize(_width, _height); - int32 left = st::dropdownPadding.left() + (_width - st::dropdownPadding.left() - st::dropdownPadding.right() - 7 * _recent.width()) / 2; - int32 top = st::dropdownPadding.top(); + int32 left = st::dropdownDef.padding.left() + (_width - st::dropdownDef.padding.left() - st::dropdownDef.padding.right() - 7 * _recent.width()) / 2; + int32 top = st::dropdownDef.padding.top(); _recent.move(left, top); left += _recent.width(); _people.move(left, top); left += _people.width(); _nature.move(left, top); left += _nature.width(); @@ -716,7 +829,7 @@ void EmojiPan::paintEvent(QPaintEvent *e) { p.setOpacity(a_opacity.current()); } - QRect r(st::dropdownPadding.left(), st::dropdownPadding.top(), _width - st::dropdownPadding.left() - st::dropdownPadding.right(), _height - st::dropdownPadding.top() - st::dropdownPadding.bottom()); + QRect r(st::dropdownDef.padding.left(), st::dropdownDef.padding.top(), _width - st::dropdownDef.padding.left() - st::dropdownDef.padding.right(), _height - st::dropdownDef.padding.top() - st::dropdownDef.padding.bottom()); // draw shadow _shadow.paint(p, r); @@ -765,7 +878,7 @@ void EmojiPan::fastHide() { } bool EmojiPan::animStep(float64 ms) { - float64 dt = ms / st::dropdownDuration; + float64 dt = ms / st::dropdownDef.duration; bool res = true; if (dt >= 1) { a_opacity.finish(); @@ -786,7 +899,7 @@ bool EmojiPan::animStep(float64 ms) { void EmojiPan::hideStart() { if (_cache.isNull()) { showAll(); - _cache = myGrab(this, rect().marginsRemoved(st::dropdownPadding)); + _cache = myGrab(this, rect().marginsRemoved(st::dropdownDef.padding)); } hideAll(); _hiding = true; @@ -806,7 +919,7 @@ void EmojiPan::showStart() { } if (_cache.isNull()) { showAll(); - _cache = myGrab(this, rect().marginsRemoved(st::dropdownPadding)); + _cache = myGrab(this, rect().marginsRemoved(st::dropdownDef.padding)); } hideAll(); _hiding = false; @@ -1048,7 +1161,7 @@ void MentionsInner::onParentGeometryChanged() { } MentionsDropdown::MentionsDropdown(QWidget *parent) : QWidget(parent), -_scroll(this, st::mentionScroll), _inner(this, &_rows, &_hrows), _chat(0), _hiding(false), a_opacity(0), _shadow(st::dropdownShadow) { +_scroll(this, st::mentionScroll), _inner(this, &_rows, &_hrows), _chat(0), _hiding(false), a_opacity(0), _shadow(st::dropdownDef.shadow) { _hideTimer.setSingleShot(true); connect(&_hideTimer, SIGNAL(timeout()), this, SLOT(hideStart())); connect(&_inner, SIGNAL(chosen(QString)), this, SIGNAL(chosen(QString))); @@ -1235,7 +1348,7 @@ void MentionsDropdown::showStart() { } bool MentionsDropdown::animStep(float64 ms) { - float64 dt = ms / st::dropdownDuration; + float64 dt = ms / st::dropdownDef.duration; bool res = true; if (dt >= 1) { a_opacity.finish(); @@ -1284,330 +1397,3 @@ bool MentionsDropdown::eventFilter(QObject *obj, QEvent *e) { MentionsDropdown::~MentionsDropdown() { } - -//StickerPanInner::StickerPanInner(QWidget *parent) : QWidget(parent), _emoji(0), _selected(-1), _pressedSel(-1) { -// resize(StickerPadPerRow * st::stickerPanSize.width(), EmojiPadRowsPerPage * st::emojiPanSize.height() - st::emojiPanSub); -// setMouseTracking(true); -// setFocusPolicy(Qt::NoFocus); -//} -// -//void StickerPanInner::paintEvent(QPaintEvent *e) { -// QPainter p(this); -// int32 size = _stickers.size(); -// -// QRect r = e ? e->rect() : rect(); -// -// int32 rows = (size / StickerPadPerRow) + ((size % StickerPadPerRow) ? 1 : 0); -// int32 fromrow = qMax(qFloor(r.top() / st::stickerPanSize.height()), 0), torow = qMin(qCeil(r.bottom() / st::stickerPanSize.height()) + 1, rows); -// for (int32 i = fromrow; i < torow; ++i) { -// for (int32 j = 0; j < StickerPadPerRow; ++j) { -// int32 index = i * StickerPadPerRow + j; -// if (index >= size) break; -// -// float64 hover = _hovers[index]; -// QPoint pos(j * st::stickerPanSize.width(), i * st::stickerPanSize.height()); -// if (hover > 0) { -// p.setOpacity(hover); -// p.setBrush(st::stickerPanHover->b); -// p.setPen(Qt::NoPen); -// p.drawRoundedRect(QRect(pos, st::stickerPanSize), st::stickerPanRound, st::stickerPanRound); -// p.setOpacity(1); -// } -// -// DocumentData *data = _stickers[index]; -// bool already = !data->already().isEmpty(), hasdata = !data->data.isEmpty(); -// if (!data->loader && data->status != FileFailed && !already && !hasdata) { -// data->save(QString()); -// } -// if (data->sticker->isNull() && (already || hasdata)) { -// if (already) { -// data->sticker = ImagePtr(data->already()); -// } else { -// data->sticker = ImagePtr(data->data); -// } -// } -// -// float64 coef = qMin(st::stickerPanSize.width() / float64(data->dimensions.width()), st::stickerPanSize.height() / float64(data->dimensions.height())); -// int32 w = qRound(coef * data->dimensions.width()), h = qRound(coef * data->dimensions.height()); -// pos += QPoint((st::stickerPanSize.width() - w) / 2, (st::stickerPanSize.height() - h) / 2); -// -// if (data->sticker->isNull()) { -// p.drawPixmap(pos, data->thumb->pix(w)); -// } else { -// p.drawPixmap(pos, data->sticker->pix(w)); -// } -// } -// } -//} -// -//void StickerPanInner::mousePressEvent(QMouseEvent *e) { -// _lastMousePos = e->globalPos(); -// updateSelected(); -// _pressedSel = _selected; -//} -// -//void StickerPanInner::mouseReleaseEvent(QMouseEvent *e) { -// _lastMousePos = e->globalPos(); -// updateSelected(); -// if (_selected == _pressedSel && _selected >= 0 && _selected < _stickers.size()) { -// emit stickerSelected(_stickers[_selected]); -// } -//} -// -//void StickerPanInner::mouseMoveEvent(QMouseEvent *e) { -// _lastMousePos = e->globalPos(); -// updateSelected(); -//} -// -//void StickerPanInner::leaveEvent(QEvent *e) { -// _lastMousePos = QCursor::pos(); -// updateSelected(); -//} -// -//void StickerPanInner::updateSelected() { -// int32 selIndex = -1; -// QPoint p(mapFromGlobal(_lastMousePos)); -// if (p.x() >= 0 && p.y() >= 0 && p.x() < StickerPadPerRow * st::stickerPanSize.width()) { -// selIndex = qFloor(p.y() / st::stickerPanSize.height()) * StickerPadPerRow + qFloor(p.x() / st::stickerPanSize.width()); -// if (selIndex >= _stickers.size()) { -// selIndex = -1; -// } -// } -// if (selIndex != _selected) { -// bool startanim = false; -// if (_selected >= 0) { -// _stickerAnimations.remove(_selected + 1); -// if (_stickerAnimations.find(-_selected - 1) == _stickerAnimations.end()) { -// if (_stickerAnimations.isEmpty()) startanim = true; -// _stickerAnimations.insert(-_selected - 1, getms()); -// } -// } -// _selected = selIndex; -// if (_selected >= 0) { -// _stickerAnimations.remove(-_selected - 1); -// if (_stickerAnimations.find(_selected + 1) == _stickerAnimations.end()) { -// if (_stickerAnimations.isEmpty()) startanim = true; -// _stickerAnimations.insert(_selected + 1, getms()); -// } -// } -// if (startanim) anim::start(this); -// setCursor((_selected >= 0) ? style::cur_pointer : style::cur_default); -// } -//} -// -//bool StickerPanInner::animStep(float64 ms) { -// uint64 now = getms(); -// for (StickerAnimations::iterator i = _stickerAnimations.begin(); i != _stickerAnimations.end();) { -// float64 dt = float64(now - i.value()) / st::emojiPanDuration; -// if (dt >= 1) { -// _hovers[qAbs(i.key()) - 1] = (i.key() > 0) ? 1 : 0; -// i = _stickerAnimations.erase(i); -// } else { -// _hovers[qAbs(i.key()) - 1] = (i.key() > 0) ? dt : (1 - dt); -// ++i; -// } -// } -// update(); -// return !_stickerAnimations.isEmpty(); -//} -// -//void StickerPanInner::showStickerPack(EmojiPtr emoji) { -// StickerPack stickers = cStickers().value(emoji); -// if (stickers.isEmpty()) { -// _emoji = 0; -// } else { -// _emoji = emoji; -// _stickers = stickers; -// _hovers = QVector(_stickers.size(), 0); -// _stickerAnimations.clear(); -// _selected = _pressedSel = -1; -// int32 size = _stickers.size(); -// int32 h = qMax(((size / StickerPadPerRow) + ((size % StickerPadPerRow) ? 1 : 0)) * st::stickerPanSize.height(), EmojiPadRowsPerPage * st::emojiPanSize.height() - int(st::emojiPanSub)); -// resize(width(), h); -// _lastMousePos = QCursor::pos(); -// updateSelected(); -// update(); -// } -//} -// -//bool StickerPanInner::hasContent() const { -// return !!_emoji; -//} -// -//StickerPan::StickerPan(QWidget *parent) : TWidget(parent), -//_hiding(false), a_opacity(0), _shadow(st::dropdownShadow), -//_scroll(this, st::emojiScroll), _emoji(0), _inner() { -// setFocusPolicy(Qt::NoFocus); -// _scroll.setFocusPolicy(Qt::NoFocus); -// _scroll.viewport()->setFocusPolicy(Qt::NoFocus); -// -// _inner.showStickerPack(0); -// _scroll.setGeometry(st::dropdownPadding.left() + st::stickerPanPadding.left(), st::dropdownPadding.top() + st::rbEmoji.height + st::stickerPanPadding.top(), st::stickerPanPadding.left() + _inner.width() + st::stickerPanPadding.right(), EmojiPadRowsPerPage * st::emojiPanSize.height() - st::emojiPanSub); -// _scroll.setWidget(&_inner); -// -// _width = st::dropdownPadding.left() + st::stickerPanPadding.left() + _scroll.width() + st::stickerPanPadding.right() + st::dropdownPadding.right(); -// _height = st::dropdownPadding.top() + st::rbEmoji.height + st::stickerPanPadding.top() + _scroll.height() + st::stickerPanPadding.bottom() + st::dropdownPadding.bottom(); -// resize(_width, _height); -// -// _hideTimer.setSingleShot(true); -// connect(&_hideTimer, SIGNAL(timeout()), this, SLOT(hideStart())); -// -// connect(&_scroll, SIGNAL(scrolled()), &_inner, SLOT(updateSelected())); -// -// connect(&_inner, SIGNAL(stickerSelected(DocumentData*)), this, SIGNAL(stickerSelected(DocumentData*))); -//} -// -//void StickerPan::setStickerPack(EmojiPtr emoji, bool show) { -// _emoji = emoji; -// _inner.showStickerPack(_emoji); -// if (!_hiding && !isHidden() && !_inner.hasContent()) { -// _hideTimer.stop(); -// hideStart(); -// } else if ((_hiding || isHidden()) && _inner.hasContent() && show) { -// _hideTimer.stop(); -// showStart(); -// } -//} -// -//void StickerPan::paintEvent(QPaintEvent *e) { -// QPainter p(this); -// -// if (!_cache.isNull()) { -// p.setOpacity(a_opacity.current()); -// } -// -// QRect r(st::dropdownPadding.left(), st::dropdownPadding.top(), _width - st::dropdownPadding.left() - st::dropdownPadding.right(), _height - st::dropdownPadding.top() - st::dropdownPadding.bottom()); -// -// // draw shadow -// _shadow.paint(p, r); -// -// if (_cache.isNull()) { -// p.fillRect(r, st::white->b); -// -// p.setFont(st::stickerPanFont->f); -// p.setPen(st::stickerPanColor->p); -// p.drawText(QRect(st::dropdownPadding.left(), st::dropdownPadding.top(), width() - st::dropdownPadding.left() - st::dropdownPadding.right(), st::rbEmoji.height), lang(lng_attach_stickers_header), style::al_center); -// } else { -// p.drawPixmap(r.left(), r.top(), _cache); -// } -//} -// -//void StickerPan::enterEvent(QEvent *e) { -// _hideTimer.stop(); -// if (_hiding) showStart(); -//} -// -//void StickerPan::leaveEvent(QEvent *e) { -// if (animating()) { -// hideStart(); -// } else { -// _hideTimer.start(300); -// } -//} -// -//void StickerPan::otherEnter() { -// _hideTimer.stop(); -// showStart(); -//} -// -//void StickerPan::otherLeave() { -// if (animating()) { -// hideStart(); -// } else { -// _hideTimer.start(0); -// } -//} -// -//void StickerPan::fastHide() { -// if (animating()) { -// anim::stop(this); -// } -// a_opacity = anim::fvalue(0, 0); -// _hideTimer.stop(); -// hide(); -// _cache = QPixmap(); -//} -// -//bool StickerPan::animStep(float64 ms) { -// float64 dt = ms / st::dropdownDuration; -// bool res = true; -// if (dt >= 1) { -// a_opacity.finish(); -// if (_hiding) { -// hideFinish(); -// } else { -// showAll(); -// _cache = QPixmap(); -// } -// res = false; -// } else { -// a_opacity.update(dt, anim::linear); -// } -// update(); -// return res; -//} -// -//void StickerPan::hideStart() { -// if (_cache.isNull()) { -// showAll(); -// _cache = myGrab(this, rect().marginsRemoved(st::dropdownPadding)); -// } -// hideAll(); -// _hiding = true; -// a_opacity.start(0); -// anim::start(this); -//} -// -//void StickerPan::hideFinish() { -// hide(); -// _cache = QPixmap(); -//} -// -//void StickerPan::showStart() { -// if (!isHidden() && a_opacity.current() == 1) { -// return; -// } -// if (!_inner.hasContent()) { -// return; -// } -// if (_cache.isNull()) { -// showAll(); -// _cache = myGrab(this, rect().marginsRemoved(st::dropdownPadding)); -// } -// hideAll(); -// _hiding = false; -// show(); -// a_opacity.start(1); -// anim::start(this); -//} -// -//bool StickerPan::eventFilter(QObject *obj, QEvent *e) { -// if (e->type() == QEvent::Enter) { -// if (dynamic_cast(obj)) { -// enterEvent(e); -// } else { -// otherEnter(); -// } -// } else if (e->type() == QEvent::Leave) { -// if (dynamic_cast(obj)) { -// leaveEvent(e); -// } else { -// otherLeave(); -// } -// } else if (e->type() == QEvent::MouseButtonPress && static_cast(e)->button() == Qt::LeftButton && !dynamic_cast(obj)) { -// if (isHidden() || _hiding) { -// otherEnter(); -// } else { -// otherLeave(); -// } -// } -// return false; -//} -// -//void StickerPan::showAll() { -// _scroll.show(); -//} -// -//void StickerPan::hideAll() { -// _scroll.hide(); -//} diff --git a/Telegram/SourceFiles/dropdown.h b/Telegram/SourceFiles/dropdown.h index 7ba6bf008..e3b41b4c6 100644 --- a/Telegram/SourceFiles/dropdown.h +++ b/Telegram/SourceFiles/dropdown.h @@ -25,25 +25,32 @@ class Dropdown : public TWidget, public Animated { public: - Dropdown(QWidget *parent); + Dropdown(QWidget *parent, const style::dropdown &st = st::dropdownDef); IconedButton *addButton(IconedButton *button); void resetButtons(); + void updateButtons(); void resizeEvent(QResizeEvent *e); void paintEvent(QPaintEvent *e); void enterEvent(QEvent *e); void leaveEvent(QEvent *e); + void keyPressEvent(QKeyEvent *e); void otherEnter(); void otherLeave(); void fastHide(); + void ignoreShow(bool ignore = true); bool animStep(float64 ms); bool eventFilter(QObject *obj, QEvent *e); +signals: + + void hiding(); + public slots: void hideStart(); @@ -52,13 +59,21 @@ public slots: void showStart(); void onWndActiveChanged(); + void buttonStateChanged(int oldState, ButtonStateChangeSource source); + private: void adjustButtons(); + bool _ignore; + typedef QVector Buttons; Buttons _buttons; + int32 _selected; + + const style::dropdown &_st; + int32 _width, _height; bool _hiding; @@ -336,97 +351,3 @@ private: BoxShadow _shadow; }; - -//class StickerPanInner : public QWidget, public Animated { -// Q_OBJECT -// -//public: -// -// StickerPanInner(QWidget *parent = 0); -// -// void paintEvent(QPaintEvent *e); -// -// void mousePressEvent(QMouseEvent *e); -// void mouseReleaseEvent(QMouseEvent *e); -// void mouseMoveEvent(QMouseEvent *e); -// void leaveEvent(QEvent *e); -// -// bool animStep(float64 ms); -// -// void showStickerPack(EmojiPtr emoji); -// bool hasContent() const; -// -//public slots: -// -// void updateSelected(); -// -//signals: -// -// void stickerSelected(DocumentData *sticker); -// -//private: -// -// typedef QMap StickerAnimations; // index - showing, -index - hiding -// StickerAnimations _stickerAnimations; -// -// StickerPack _stickers; -// QVector _hovers; -// -// EmojiPtr _emoji; -// int32 _selected, _pressedSel; -// QPoint _lastMousePos; -// -//}; -// -//class StickerPan : public TWidget, public Animated { -// Q_OBJECT -// -//public: -// -// StickerPan(QWidget *parent); -// -// void setStickerPack(EmojiPtr emoji, bool show); -// void paintEvent(QPaintEvent *e); -// -// void enterEvent(QEvent *e); -// void leaveEvent(QEvent *e); -// void otherEnter(); -// void otherLeave(); -// -// void fastHide(); -// -// bool animStep(float64 ms); -// -// bool eventFilter(QObject *obj, QEvent *e); -// -//public slots: -// -// void hideStart(); -// void hideFinish(); -// -// void showStart(); -// -//signals: -// -// void stickerSelected(DocumentData *sticker); -// -//private: -// -// void showAll(); -// void hideAll(); -// -// int32 _width, _height; -// bool _hiding; -// QPixmap _cache; -// -// anim::fvalue a_opacity; -// -// QTimer _hideTimer; -// -// BoxShadow _shadow; -// -// EmojiPtr _emoji; -// ScrollArea _scroll; -// StickerPanInner _inner; -// -//}; diff --git a/Telegram/SourceFiles/gui/boxshadow.cpp b/Telegram/SourceFiles/gui/boxshadow.cpp index 1cc6ecebb..2b921e1e6 100644 --- a/Telegram/SourceFiles/gui/boxshadow.cpp +++ b/Telegram/SourceFiles/gui/boxshadow.cpp @@ -20,11 +20,14 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org #include "boxshadow.h" BoxShadow::BoxShadow(const style::rect &topLeft) : _size(topLeft.width() / cIntRetinaFactor()) { + if (!_size) return; + QImage cornersImage(_size * 2, _size * 2, QImage::Format_ARGB32_Premultiplied); { QPainter p(&cornersImage); - p.drawPixmap(QPoint(0, 0), App::sprite(), topLeft); + p.drawPixmap(QPoint(rtl() ? _size : 0, 0), App::sprite(), topLeft); } + if (rtl()) cornersImage = cornersImage.mirrored(true, false); uchar *bits = cornersImage.bits(); if (bits) { for ( @@ -58,6 +61,8 @@ BoxShadow::BoxShadow(const style::rect &topLeft) : _size(topLeft.width() / cIntR } void BoxShadow::paint(QPainter &p, const QRect &box, const QPoint &shift, int32 flags) { + if (!_size) return; + int32 count = _colors.size(), minus = _size - count + 1; bool left = (flags & Left), top = (flags & Top), right = (flags & Right), bottom = (flags & Bottom); if (left && top) p.drawPixmap(box.left() - _size + minus + shift.x(), box.top() - _size + minus + shift.y(), _corners, 0, 0, _size, _size); diff --git a/Telegram/SourceFiles/gui/button.cpp b/Telegram/SourceFiles/gui/button.cpp index 1dd71e00e..6e1653eb2 100644 --- a/Telegram/SourceFiles/gui/button.cpp +++ b/Telegram/SourceFiles/gui/button.cpp @@ -77,6 +77,7 @@ void Button::mouseReleaseEvent(QMouseEvent *e) { } void Button::setOver(bool over, ButtonStateChangeSource source) { +// LOG(("Set over: %1, by: %2 AT %3").arg(logBool(over)).arg(source).arg(dynamic_cast(this) ? dynamic_cast(this)->getText() : qsl("Unknown"))); if (over && !(_state & StateOver)) { int oldState = _state; _state |= StateOver; diff --git a/Telegram/SourceFiles/gui/contextmenu.cpp b/Telegram/SourceFiles/gui/contextmenu.cpp index ae0b1253c..91d088f30 100644 --- a/Telegram/SourceFiles/gui/contextmenu.cpp +++ b/Telegram/SourceFiles/gui/contextmenu.cpp @@ -25,8 +25,8 @@ #include "lang.h" -ContextMenu::ContextMenu(QWidget *parent, const style::iconedButton &st) : TWidget(0), -_hiding(false), _buttonStyle(st), _shadow(st::dropdownShadow), _selected(-1), a_opacity(0), _deleteOnHide(false) { +ContextMenu::ContextMenu(QWidget *parent, const style::dropdown &st, const style::iconedButton &btnst) : TWidget(0), +_width(st.width), _hiding(false), _st(st), _btnst(btnst), _shadow(_st.shadow), _selected(-1), a_opacity(0), _deleteOnHide(false) { resetActions(); setWindowFlags(Qt::FramelessWindowHint | Qt::BypassWindowManagerHint | Qt::Tool | Qt::NoDropShadowWindowHint | Qt::WindowStaysOnTopHint); @@ -43,13 +43,13 @@ QAction *ContextMenu::addAction(const QString &text, const QObject *receiver, co connect(a, SIGNAL(changed()), this, SLOT(actionChanged())); IconedButton *b = 0; - _buttons.push_back(b = new IconedButton(this, _buttonStyle, a->text())); + _buttons.push_back(b = new IconedButton(this, _btnst, a->text())); connect(b, SIGNAL(clicked()), this, SLOT(hideStart())); connect(b, SIGNAL(clicked()), a, SIGNAL(triggered())); connect(b, SIGNAL(stateChanged(int,ButtonStateChangeSource)), this, SLOT(buttonStateChanged(int,ButtonStateChangeSource))); - _width = qMax(_width, int(st::dropdownPadding.left() + st::dropdownPadding.right() + b->width())); - for (int32 i = 0, l = _buttons.size(); i < l; ++i) _buttons[i]->resize(_width - int(st::dropdownPadding.left() + st::dropdownPadding.right()), _buttons[i]->height()); + _width = qMax(_width, int(_st.padding.left() + _st.padding.right() + b->width())); + for (int32 i = 0, l = _buttons.size(); i < l; ++i) _buttons[i]->resize(_width - int(_st.padding.left() + _st.padding.right()), _buttons[i]->height()); _height += b->height(); resize(_width, _height); @@ -64,8 +64,8 @@ ContextMenu::Actions &ContextMenu::actions() { void ContextMenu::actionChanged() { for (int32 i = 0, l = _actions.size(); i < l; ++i) { _buttons[i]->setText(_actions[i]->text()); - _width = qMax(_width, int(st::dropdownPadding.left() + st::dropdownPadding.right() + _buttons[i]->width())); - _buttons[i]->resize(_width - int(st::dropdownPadding.left() + st::dropdownPadding.right()), _buttons[i]->height()); + _width = qMax(_width, int(_st.padding.left() + _st.padding.right() + _buttons[i]->width())); + _buttons[i]->resize(_width - int(_st.padding.left() + _st.padding.right()), _buttons[i]->height()); } } @@ -100,8 +100,8 @@ void ContextMenu::buttonStateChanged(int oldState, ButtonStateChangeSource sourc } void ContextMenu::resetActions() { - _width = st::dropdownPadding.left() + st::dropdownPadding.right(); - _height = st::dropdownPadding.top() + st::dropdownPadding.bottom(); + _width = qMax(_st.padding.left() + _st.padding.right(), int(_st.width)); + _height = _st.padding.top() + _st.padding.bottom(); resize(_width, _height); clearActions(); @@ -122,9 +122,9 @@ void ContextMenu::clearActions() { } void ContextMenu::resizeEvent(QResizeEvent *e) { - int32 top = st::dropdownPadding.top(); + int32 top = _st.padding.top(); for (Buttons::const_iterator i = _buttons.cbegin(), e = _buttons.cend(); i != e; ++i) { - (*i)->move(st::dropdownPadding.left(), top); + (*i)->move(_st.padding.left(), top); top += (*i)->height(); } } @@ -141,7 +141,7 @@ void ContextMenu::paintEvent(QPaintEvent *e) { p.setOpacity(a_opacity.current()); } - QRect r(st::dropdownPadding.left(), st::dropdownPadding.top(), _width - st::dropdownPadding.left() - st::dropdownPadding.right(), _height - st::dropdownPadding.top() - st::dropdownPadding.bottom()); + QRect r(_st.padding.left(), _st.padding.top(), _width - _st.padding.left() - _st.padding.right(), _height - _st.padding.top() - _st.padding.bottom()); // draw shadow _shadow.paint(p, r); } @@ -245,13 +245,19 @@ void ContextMenu::deleteOnHide() { } void ContextMenu::popup(const QPoint &p) { - QPoint w = p - QPoint(st::dropdownPadding.left(), st::dropdownPadding.top()); + QPoint w = p - QPoint(_st.padding.left(), _st.padding.top()); QRect r = App::app() ? App::app()->desktop()->screenGeometry(p) : QDesktopWidget().screenGeometry(p); - if (w.x() + width() - st::dropdownPadding.right() > r.x() + r.width()) { - w.setX(r.x() + r.width() - width() + st::dropdownPadding.right()); + if (rtl()) { + if (w.x() - width() + 2 * _st.padding.left() < r.x() - _st.padding.left()) { + w.setX(r.x() - _st.padding.left()); + } else { + w.setX(w.x() - width() + 2 * _st.padding.left()); + } + } else if (w.x() + width() - _st.padding.right() > r.x() + r.width()) { + w.setX(r.x() + r.width() - width() + _st.padding.right()); } - if (w.y() + height() - st::dropdownPadding.bottom() > r.y() + r.height()) { - w.setY(p.y() - height() + st::dropdownPadding.bottom()); + if (w.y() + height() - _st.padding.bottom() > r.y() + r.height()) { + w.setY(p.y() - height() + _st.padding.bottom()); } if (w.y() < r.y()) { w.setY(r.y()); diff --git a/Telegram/SourceFiles/gui/contextmenu.h b/Telegram/SourceFiles/gui/contextmenu.h index 267581a4a..a3c25dcfa 100644 --- a/Telegram/SourceFiles/gui/contextmenu.h +++ b/Telegram/SourceFiles/gui/contextmenu.h @@ -25,7 +25,7 @@ class ContextMenu : public TWidget, public Animated { public: - ContextMenu(QWidget *parent, const style::iconedButton &st = st::btnContext); + ContextMenu(QWidget *parent, const style::dropdown &st = st::dropdownDef, const style::iconedButton &btnst = st::btnContext); QAction *addAction(const QString &text, const QObject *receiver, const char* member); void resetActions(); @@ -72,7 +72,8 @@ private: int32 _width, _height; bool _hiding; - const style::iconedButton &_buttonStyle; + const style::dropdown &_st; + const style::iconedButton &_btnst; BoxShadow _shadow; int32 _selected; diff --git a/Telegram/SourceFiles/gui/flatbutton.cpp b/Telegram/SourceFiles/gui/flatbutton.cpp index 0c5165ee8..c090958cc 100644 --- a/Telegram/SourceFiles/gui/flatbutton.cpp +++ b/Telegram/SourceFiles/gui/flatbutton.cpp @@ -172,16 +172,26 @@ void IconedButton::setText(const QString &text) { } } +QString IconedButton::getText() const { + return _text; +} + bool IconedButton::animStep(float64 ms) { - float64 dt = ms / _st.duration; bool res = true; - if (dt >= 1) { + if (_st.duration <= 1) { a_opacity.finish(); a_bg.finish(); res = false; } else { - a_opacity.update(dt, anim::linear); - a_bg.update(dt, anim::linear); + float64 dt = ms / _st.duration; + if (dt >= 1) { + a_opacity.finish(); + a_bg.finish(); + res = false; + } else { + a_opacity.update(dt, anim::linear); + a_bg.update(dt, anim::linear); + } } update(); return res; diff --git a/Telegram/SourceFiles/gui/flatbutton.h b/Telegram/SourceFiles/gui/flatbutton.h index 21f700fe3..fc6958d74 100644 --- a/Telegram/SourceFiles/gui/flatbutton.h +++ b/Telegram/SourceFiles/gui/flatbutton.h @@ -100,6 +100,7 @@ public: void setOpacity(float64 o); void setText(const QString &text); + QString getText() const; public slots: diff --git a/Telegram/SourceFiles/gui/style_core.h b/Telegram/SourceFiles/gui/style_core.h index db4a53fae..cfab2435e 100644 --- a/Telegram/SourceFiles/gui/style_core.h +++ b/Telegram/SourceFiles/gui/style_core.h @@ -197,14 +197,17 @@ inline bool operator!=(const Font &a, const Font &b) { typedef QMap ColorDatas; extern ColorDatas _colorsMap; + extern int _spriteWidth; + typedef float64 number; typedef QString string; typedef QRect rect; - class sprite : public rect { + + class sprite : public rect { public: sprite() { } - sprite(int left, int top, int width, int height) : rect(left, top, width, height) { + sprite(int left, int top, int width, int height) : rect(rtl() ? (_spriteWidth - left - width) : left, top, width, height) { } inline int pxWidth() const { return rect::width() / cIntRetinaFactor(); diff --git a/Telegram/SourceFiles/gui/twidget.h b/Telegram/SourceFiles/gui/twidget.h index 74bf7fac1..5e458f973 100644 --- a/Telegram/SourceFiles/gui/twidget.h +++ b/Telegram/SourceFiles/gui/twidget.h @@ -21,34 +21,54 @@ void rtl(bool is); bool rtl(); Qt::LayoutDirection langDir(); +inline QRect rtlrect(int x, int y, int w, int h, int outerw) { + return rtl() ? QRect(outerw - x - w, y, w, h) : QRect(x, y, w, h); +} + class Widget : public QWidget { public: Widget(QWidget *parent = 0) : QWidget(parent) { } - void moveToLeft(int x, int y, int w) { - move(rtl() ? (x + w - width()) : x, y); + void moveToLeft(int x, int y, int outerw) { + move(rtl() ? (outerw - x - width()) : x, y); } - void moveToRight(int x, int y, int w) { - move(rtl() ? x : (x + w - width()), y); + void moveToRight(int x, int y, int outerw) { + move(rtl() ? x : (outerw - x - width()), y); } }; +namespace App { + const QPixmap &sprite(); +} + class Painter : public QPainter { public: explicit Painter(QPaintDevice *device) : QPainter(device) { } - void drawTextLeft(int x, int y, int w, const QString &text, int textWidth = -1) { + void drawTextLeft(int x, int y, int outerw, const QString &text, int textWidth = -1) { QFontMetrics m(fontMetrics()); if (rtl() && textWidth < 0) textWidth = m.width(text); - drawText(x + (rtl() ? (w - textWidth) : 0), y + m.ascent(), text); + drawText(rtl() ? (outerw - x - textWidth) : x, y + m.ascent(), text); } - void drawTextRight(int x, int y, int w, const QString &text, int textWidth = -1) { + void drawTextRight(int x, int y, int outerw, const QString &text, int textWidth = -1) { QFontMetrics m(fontMetrics()); if (!rtl() && textWidth < 0) textWidth = m.width(text); - drawText(x + (rtl() ? 0 : (w - textWidth)), y + m.ascent(), text); + drawText(rtl() ? x : (outerw - x - textWidth), y + m.ascent(), text); + } + void drawPixmapLeft(int x, int y, int outerw, const QPixmap &pix, const QRect &from) { + drawPixmap(QPoint(rtl() ? (outerw - x - (from.width() / pix.devicePixelRatio())) : x, y), pix, from); + } + void drawPixmapRight(int x, int y, int outerw, const QPixmap &pix, const QRect &from) { + drawPixmap(QPoint(rtl() ? x : (outerw - x - (from.width() / pix.devicePixelRatio())), y), pix, from); + } + void drawSpriteLeft(int x, int y, int outerw, const QRect &sprite) { + return drawPixmapLeft(x, y, outerw, App::sprite(), sprite); + } + void drawSpriteRight(int x, int y, int outerw, const QRect &sprite) { + return drawPixmapRight(x, y, outerw, App::sprite(), sprite); } }; @@ -80,10 +100,12 @@ protected: void enterEvent(QEvent *e) { TWidget *p(tparent()); if (p) p->leaveToChildEvent(e); + return Widget::enterEvent(e); } void leaveEvent(QEvent *e) { TWidget *p(tparent()); if (p) p->enterFromChildEvent(e); + return Widget::leaveEvent(e); } private: diff --git a/Telegram/SourceFiles/history.cpp b/Telegram/SourceFiles/history.cpp index 0f24e7460..073a8a2de 100644 --- a/Telegram/SourceFiles/history.cpp +++ b/Telegram/SourceFiles/history.cpp @@ -3257,17 +3257,19 @@ void HistoryWebPage::initDimensions(const HistoryItem *parent) { } } if (!data->description.isEmpty()) { + QString text = textClean(data->description); + if (!_asArticle) text += textcmdSkipBlock(parent->timeWidth(), st::msgDateFont->height - st::msgDateDelta.y()); + const TextParseOptions *opts = &_webpageDescriptionOptions; if (data->siteName == QLatin1String("Twitter")) { - _description.setText(st::webPageDescriptionFont, textClean(data->description), _twitterDescriptionOptions); + opts = &_twitterDescriptionOptions; } else if (data->siteName == QLatin1String("Instagram")) { - _description.setText(st::webPageDescriptionFont, textClean(data->description), _instagramDescriptionOptions); - } else { - _description.setText(st::webPageDescriptionFont, textClean(data->description), _webpageDescriptionOptions); + opts = &_instagramDescriptionOptions; } + _description.setText(st::webPageDescriptionFont, text, *opts); if (_asArticle) { _maxw = qMax(_maxw, int32(st::webPageLeft + _description.maxWidth() + st::webPagePhotoDelta + st::webPagePhotoSize)); } else { - _maxw = qMax(_maxw, int32(st::webPageLeft + _description.maxWidth() + parent->timeWidth())); + _maxw = qMax(_maxw, int32(st::webPageLeft + _description.maxWidth())); _minh += qMin(_description.minHeight(), 3 * st::webPageTitleFont->height); } } @@ -4443,7 +4445,7 @@ HistoryMedia *HistoryMessage::getMedia(bool inOverview) const { } void HistoryMessage::setMedia(const MTPmessageMedia &media) { - if (!_media && media.type() == mtpc_messageMediaEmpty) return; + if ((!_media || _media->isImageLink()) && media.type() == mtpc_messageMediaEmpty) return; if (_media) { delete _media; _media = 0; diff --git a/Telegram/SourceFiles/history.h b/Telegram/SourceFiles/history.h index 642a53c4b..7d9384fa5 100644 --- a/Telegram/SourceFiles/history.h +++ b/Telegram/SourceFiles/history.h @@ -802,6 +802,10 @@ public: virtual void updateFrom(const MTPMessageMedia &media) { } + virtual bool isImageLink() const { + return false; + } + virtual bool updateStickerEmoji() { return false; } @@ -1167,6 +1171,10 @@ public: void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const; HistoryMedia *clone() const; + bool isImageLink() const { + return true; + } + private: ImageLinkData *data; TextLinkPtr link; diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index f36cec797..2d20efcf2 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -1402,7 +1402,7 @@ void MainWidget::documentLoadProgress(mtpFileLoader *loader) { if (reader.supportsAnimation() && reader.imageCount() > 1 && item) { startGif(item, already); } else { - App::wnd()->showDocument(document, QPixmap::fromImage(App::readImage(already, 0, false), Qt::ColorOnly), item); + App::wnd()->showDocument(document, item); } } else { psOpenFile(already); diff --git a/Telegram/SourceFiles/mediaview.cpp b/Telegram/SourceFiles/mediaview.cpp index 0b554a8cf..6972183a7 100644 --- a/Telegram/SourceFiles/mediaview.cpp +++ b/Telegram/SourceFiles/mediaview.cpp @@ -44,16 +44,17 @@ namespace { } MediaView::MediaView() : TWidget(App::wnd()), -_photo(0), _doc(0), _availBottom(0), _leftNavVisible(false), _rightNavVisible(false), _animStarted(getms()), -_maxWidth(0), _maxHeight(0), _width(0), _x(0), _y(0), _w(0), _h(0), _xStart(0), _yStart(0), -_zoom(0), _zoomToScreen(0), _pressed(false), _dragging(0), _full(-1), _history(0), _peer(0), _user(0), _from(0), _index(-1), _msgid(0), -_loadRequest(0), _over(OverNone), _down(OverNone), _lastAction(-st::medviewDeltaFromLastAction, -st::medviewDeltaFromLastAction), -_close(this, st::medviewClose), -_save(this, st::medviewSaveAs, lang(lng_mediaview_save)), -_forward(this, st::medviewForward, lang(lng_mediaview_forward)), -_delete(this, st::medviewDelete, lang(lng_mediaview_delete)), -_overview(this, st::medviewOverview, lang(lng_mediaview_single_photo)), -_menu(0), _receiveMouse(true), _touchPress(false), _touchMove(false), _touchRightButton(false), +_photo(0), _doc(0), _overview(OverviewCount), +_leftNavVisible(false), _rightNavVisible(false), _saveVisible(false), _headerHasLink(false), _animStarted(getms()), +_width(0), _x(0), _y(0), _w(0), _h(0), _xStart(0), _yStart(0), +_zoom(0), _zoomToScreen(0), _pressed(false), _dragging(0), _full(-1), +_docNameWidth(0), _docSizeWidth(0), +_docThumbx(0), _docThumby(0), _docThumbw(0), +_docRadialFirst(0), _docRadialStart(0), _docRadialLast(0), a_docRadialStart(0, 1), +_history(0), _peer(0), _user(0), _from(0), _index(-1), _msgid(0), +_loadRequest(0), _over(OverNone), _down(OverNone), _lastAction(-st::mvDeltaFromLastAction, -st::mvDeltaFromLastAction), _ignoringDropdown(false), +_controlsState(ControlsShown), _controlsAnimStarted(0), +_dropdown(this, st::mvDropdown), _menu(0), _receiveMouse(true), _touchPress(false), _touchMove(false), _touchRightButton(false), _saveMsgStarted(0), _saveMsgOpacity(0) { TextCustomTagsMap custom; @@ -62,7 +63,9 @@ _saveMsgStarted(0), _saveMsgOpacity(0) _saveMsg = QRect(0, 0, _saveMsgText.maxWidth() + st::medviewSaveMsgPadding.left() + st::medviewSaveMsgPadding.right(), st::medviewSaveMsgFont->height + st::medviewSaveMsgPadding.top() + st::medviewSaveMsgPadding.bottom()); _saveMsgText.setLink(1, TextLinkPtr(new SaveMsgLink(this))); - _transparentBrush = QBrush(App::sprite().copy(st::medviewTransparentBrush)); + _transparentBrush = QBrush(App::sprite().copy(st::mvTransparentBrush)); + _docRadialPen = QPen(st::white->p); + _docRadialPen.setWidth(st::radialLine); setWindowFlags(Qt::FramelessWindowHint | Qt::BypassWindowManagerHint | Qt::Tool | Qt::NoDropShadowWindowHint); moveToScreen(); @@ -73,12 +76,6 @@ _saveMsgStarted(0), _saveMsgOpacity(0) hide(); createWinId(); - connect(&_close, SIGNAL(clicked()), this, SLOT(onClose())); - connect(&_save, SIGNAL(clicked()), this, SLOT(onDownload())); - connect(&_forward, SIGNAL(clicked()), this, SLOT(onForward())); - connect(&_delete, SIGNAL(clicked()), this, SLOT(onDelete())); - connect(&_overview, SIGNAL(clicked()), this, SLOT(onOverview())); - _saveMsgUpdater.setSingleShot(true); connect(&_saveMsgUpdater, SIGNAL(timeout()), this, SLOT(updateImage())); @@ -87,45 +84,59 @@ _saveMsgStarted(0), _saveMsgOpacity(0) setAttribute(Qt::WA_AcceptTouchEvents); _touchTimer.setSingleShot(true); connect(&_touchTimer, SIGNAL(timeout()), this, SLOT(onTouchTimer())); + + _btns.push_back(_btnToMessage = _dropdown.addButton(new IconedButton(this, st::mvButton, lang(lng_context_to_msg)))); + connect(_btnToMessage, SIGNAL(clicked()), this, SLOT(onToMessage())); + _btns.push_back(_btnShowInFolder = _dropdown.addButton(new IconedButton(this, st::mvButton, lang(cPlatform() == dbipMac ? lng_context_show_in_finder : lng_context_show_in_folder)))); + connect(_btnShowInFolder, SIGNAL(clicked()), this, SLOT(onShowInFolder())); + _btns.push_back(_btnCopy = _dropdown.addButton(new IconedButton(this, st::mvButton, lang(lng_mediaview_copy)))); + connect(_btnCopy, SIGNAL(clicked()), this, SLOT(onCopy())); + _btns.push_back(_btnForward = _dropdown.addButton(new IconedButton(this, st::mvButton, lang(lng_mediaview_forward)))); + connect(_btnForward, SIGNAL(clicked()), this, SLOT(onForward())); + _btns.push_back(_btnDelete = _dropdown.addButton(new IconedButton(this, st::mvButton, lang(lng_mediaview_delete)))); + connect(_btnDelete, SIGNAL(clicked()), this, SLOT(onDelete())); + _btns.push_back(_btnSaveAs = _dropdown.addButton(new IconedButton(this, st::mvButton, lang(lng_mediaview_save_as)))); + connect(_btnSaveAs, SIGNAL(clicked()), this, SLOT(onSave())); + _btns.push_back(_btnViewAll = _dropdown.addButton(new IconedButton(this, st::mvButton, lang(lng_mediaview_photos_all)))); + connect(_btnViewAll, SIGNAL(clicked()), this, SLOT(onOverview())); + + _dropdown.hide(); + connect(&_dropdown, SIGNAL(hiding()), this, SLOT(onDropdownHiding())); + + _controlsHideTimer.setSingleShot(true); + connect(&_controlsHideTimer, SIGNAL(timeout()), this, SLOT(onHideControls())); } void MediaView::moveToScreen() { QPoint wndCenter(App::wnd()->x() + App::wnd()->width() / 2, App::wnd()->y() + App::wnd()->height() / 2); - _avail = App::app() ? App::app()->desktop()->screenGeometry(wndCenter) : QDesktopWidget().screenGeometry(wndCenter); - if (_avail != geometry()) { - setGeometry(_avail); + QRect avail = App::app() ? App::app()->desktop()->screenGeometry(wndCenter) : QDesktopWidget().screenGeometry(wndCenter); + if (avail != geometry()) { + setGeometry(avail); } - _avail.moveTo(0, 0); - _availBottom = _avail.height() - st::medviewBottomBar; - _maxWidth = _avail.width() - 2 * st::medviewNavBarWidth - st::medviewPolaroid.left() - st::medviewPolaroid.right(); - _maxHeight = _avail.height() - st::medviewBottomBar - st::medviewPolaroid.top() - st::medviewPolaroid.bottom(); - _leftNav = QRect(0, 0, st::medviewNavBarWidth, _availBottom); - _rightNav = QRect(width() - st::medviewNavBarWidth, 0, st::medviewNavBarWidth + (cRetina() ? 1 : 0), _availBottom); + + int32 navSkip = 2 * st::mvControlMargin + st::mvControlSize; + _closeNav = rtlrect(width() - st::mvControlMargin - st::mvControlSize, st::mvControlMargin, st::mvControlSize, st::mvControlSize, width()); + _leftNav = rtlrect(st::mvControlMargin, navSkip, st::mvControlSize, height() - 2 * navSkip, width()); + _rightNav = rtlrect(width() - st::mvControlMargin - st::mvControlSize, navSkip, st::mvControlSize, height() - 2 * navSkip, width()); - _bottomBar = QRect(0, _availBottom, width(), height() - _availBottom); - - _close.move(width() - ((_close.width() + st::medviewNavBarWidth) / 2), (st::medviewNavBarWidth - _close.width()) / 2); - _save.move(width() - _save.width() - ((st::medviewBottomBar - _save.height()) / 2), _availBottom + ((st::medviewBottomBar - _save.height()) / 2)); - _forward.move(_save.x() - _forward.width() - ((st::medviewBottomBar - _forward.height()) / 2), _availBottom + ((st::medviewBottomBar - _forward.height()) / 2)); - _delete.move(_forward.isHidden() ? _save.x() : _forward.x() - _delete.width() - ((st::medviewBottomBar - _delete.height()) / 2), _availBottom + ((st::medviewBottomBar - _delete.height()) / 2)); - _overview.move(((st::medviewBottomBar - _overview.height()) / 2), _availBottom + ((st::medviewBottomBar - _overview.height()) / 2)); - - _saveMsg.moveTo((width() - _saveMsg.width()) / 2, (_availBottom - st::medviewPolaroid.bottom() - _saveMsg.height() + st::medviewPolaroid.top()) / 2); + _saveMsg.moveTo((width() - _saveMsg.width()) / 2, (height() - _saveMsg.height()) / 2); } void MediaView::mediaOverviewUpdated(PeerData *peer) { - if (!_photo) return; + if (!_photo && !_doc) return; if (_history && _history->peer == peer) { _index = -1; - for (int i = 0, l = _history->_overview[OverviewPhotos].size(); i < l; ++i) { - if (_history->_overview[OverviewPhotos].at(i) == _msgid) { + for (int i = 0, l = _history->_overview[_overview].size(); i < l; ++i) { + if (_history->_overview[_overview].at(i) == _msgid) { _index = i; break; } } updateControls(); - preloadPhotos(0); + preloadData(0); } else if (_user == peer) { + if (!_photo) return; + _index = -1; for (int i = 0, l = _user->photos.size(); i < l; ++i) { if (_user->photos.at(i) == _photo) { @@ -134,7 +145,7 @@ void MediaView::mediaOverviewUpdated(PeerData *peer) { } } updateControls(); - preloadPhotos(0); + preloadData(0); } } @@ -148,31 +159,10 @@ void MediaView::changingMsgId(HistoryItem *row, MsgId newId) { void MediaView::updateControls() { if (!_photo && !_doc) return; - _close.show(); - if ((_photo && _photo->full->loaded()) || (_doc && !_doc->already(true).isEmpty())) { - _save.show(); - } else { - _save.hide(); - } - if (_history) { - HistoryItem *item = App::histItemById(_msgid); - if (dynamic_cast(item)) { - _forward.show(); - _delete.move(_forward.x() - _delete.width() - ((st::medviewBottomBar - _delete.height()) / 2), _availBottom + ((st::medviewBottomBar - _delete.height()) / 2)); - } else { - _forward.hide(); - _delete.move(_save.x() - _delete.width() - ((st::medviewBottomBar - _delete.height()) / 2), _availBottom + ((st::medviewBottomBar - _delete.height()) / 2)); - } - _delete.show(); - } else { - _forward.hide(); - if (_photo && ((App::self() && App::self()->photoId == _photo->id) || (_photo->chat && _photo->chat->photoId == _photo->id))) { - _delete.show(); - _delete.move(_save.x() - _delete.width() - ((st::medviewBottomBar - _delete.height()) / 2), _availBottom + ((st::medviewBottomBar - _delete.height()) / 2)); - } else { - _delete.hide(); - } - } + _saveVisible = ((_photo && _photo->full->loaded()) || (_doc && !_doc->already(true).isEmpty())); + _saveNav = rtlrect(width() - st::mvIconSize.width() * 2, height() - st::mvIconSize.height(), st::mvIconSize.width(), st::mvIconSize.height(), width()); + _moreNav = rtlrect(width() - st::mvIconSize.width(), height() - st::mvIconSize.height(), st::mvIconSize.width(), st::mvIconSize.height(), width()); + QDateTime d(date(_photo ? _photo->date : _doc->date)), dNow(date(unixtime())); if (d.date() == dNow.date()) { _dateText = lng_mediaview_today(lt_time, d.time().toString(cTimeFormat())); @@ -181,18 +171,45 @@ void MediaView::updateControls() { } else { _dateText = lng_mediaview_date_time(lt_date, d.date().toString(qsl("dd.MM.yy")), lt_time, d.time().toString(cTimeFormat())); } - if (_from) _fromName.setText(st::medviewNameFont, _from->name); + if (_from) { + _fromName.setText(st::mvFont, _from->name); + _nameNav = rtlrect(st::mvTextLeft, height() - st::mvTextTop, qMin(_fromName.maxWidth(), width() / 3), st::mvFont->height, width()); + _dateNav = rtlrect(st::mvTextLeft + _nameNav.width() + st::mvTextSkip, height() - st::mvTextTop, st::mvFont->m.width(_dateText), st::mvFont->height, width()); + } else { + _nameNav = QRect(); + _dateNav = rtlrect(st::mvTextLeft, height() - st::mvTextTop, st::mvFont->m.width(_dateText), st::mvFont->height, width()); + } updateHeader(); - _leftNavVisible = _photo && (_index > 0 || (_index == 0 && _history && _history->_overview[OverviewPhotos].size() < _history->_overviewCount[OverviewPhotos])); - _rightNavVisible = _photo && (_index >= 0 && ( - (_history && _index + 1 < _history->_overview[OverviewPhotos].size()) || - (_user && (_index + 1 < _user->photos.size() || _index + 1 < _user->photosCount)))); + if (_photo) { + _leftNavVisible = (_index > 0) || (_index == 0 && _history && _history->_overview[_overview].size() < _history->_overviewCount[_overview]); + _rightNavVisible = (_index >= 0) && ( + (_history && _index + 1 < _history->_overview[_overview].size()) || + (_user && (_index + 1 < _user->photos.size() || _index + 1 < _user->photosCount))); + } else if (_doc) { + _leftNavVisible = (_index > 0) || (_index == 0 && _history && _history->_overview[_overview].size() < _history->_overviewCount[_overview]); + _rightNavVisible = (_index >= 0) && _history && (_index + 1 < _history->_overview[_overview].size()); + } else { + _leftNavVisible = _rightNavVisible = false; + } updateOver(mapFromGlobal(QCursor::pos())); - updatePolaroid(); update(); } +void MediaView::updateDropdown() { + _btnToMessage->setVisible(_msgid > 0); + _btnShowInFolder->setVisible(_doc && !_doc->already(true).isEmpty()); + _btnSaveAs->setVisible(true); + _btnCopy->setVisible((_doc && !_current.isNull()) || (_photo && _photo->full->loaded())); + _btnForward->setVisible(_msgid > 0); + _btnDelete->setVisible(_msgid > 0 || (App::self() && App::self()->photoId == _photo->id) || (_photo->chat && _photo->chat->photoId == _photo->id)); + _btnViewAll->setVisible((_overview != OverviewCount) && _history); + _btnViewAll->setText(lang(_doc ? lng_mediaview_files_all : lng_mediaview_photos_all)); + _dropdown.updateButtons(); + _dropdown.moveToRight(0, height() - _dropdown.height(), width()); +} + bool MediaView::animStep(float64 msp) { + bool result = false; uint64 ms = getms(); for (Showing::iterator i = _animations.begin(); i != _animations.end();) { int64 start = i.value(); @@ -201,9 +218,13 @@ bool MediaView::animStep(float64 msp) { case OverRightNav: update(_rightNav); break; case OverName: update(_nameNav); break; case OverDate: update(_dateNav); break; + case OverHeader: update(_headerNav); break; + case OverClose: update(_closeNav); break; + case OverSave: update(_saveNav); break; + case OverMore: update(_moreNav); break; default: break; } - float64 dt = float64(ms - start) / st::medviewOverview.duration; + float64 dt = float64(ms - start) / st::mvFadeDuration; if (dt >= 1) { _animOpacities.remove(i.key()); i = _animations.erase(i); @@ -212,7 +233,43 @@ bool MediaView::animStep(float64 msp) { ++i; } } - return !_animations.isEmpty(); + if (_controlsState == ControlsShowing || _controlsState == ControlsHiding) { + float64 dt = float64(ms - _controlsAnimStarted) / (_controlsState == ControlsShowing ? st::mvShowDuration : st::mvHideDuration); + if (dt >= 1) { + a_cOpacity.finish(); + _controlsState = (_controlsState == ControlsShowing ? ControlsShown : ControlsHidden); + setCursor(_controlsState == ControlsHidden ? Qt::BlankCursor : (_over == OverNone ? style::cur_default : style::cur_pointer)); + } else { + a_cOpacity.update(dt, anim::linear); + } + update(); + if (dt < 1) result = true; + } + if (_doc && _docRadialStart > 0) { + float64 prg = _doc->loader ? _doc->loader->currentProgress() : (_doc->status == FileFailed ? 0 : 1); + if (prg != a_docRadial.to()) { + a_docRadial.start(prg); + _docRadialStart = _docRadialLast; + } + _docRadialLast = ms; + + float64 dt = float64(ms - _docRadialStart); + if (_doc->loader) { + a_docRadial.update(1. - (st::radialDuration / (st::radialDuration + dt)), anim::linear); + result = true; + } else if (dt >= st::radialDuration) { + a_docRadial.update(1, anim::linear); + result = true; +// _docRadialStart = 0; + } else { + a_docRadial.update(dt / st::radialDuration, anim::linear); + result = true; + } + float64 fromstart = float64(ms - _docRadialFirst) / st::radialPeriod; + a_docRadialStart.update(fromstart - qFloor(fromstart), anim::linear); + update(_docIcon); + } + return result || !_animations.isEmpty(); } MediaView::~MediaView() { @@ -223,16 +280,60 @@ void MediaView::showSaveMsgFile() { psShowInFolder(_saveMsgFilename); } -void MediaView::onClose() { +void MediaView::close() { if (App::wnd()) App::wnd()->layerHidden(); } +void MediaView::activateControls() { + LOG(("ACTIVATING CONTROLS!!")); + _controlsHideTimer.start(int(st::mvWaitHide)); + if (_controlsState == ControlsHiding || _controlsState == ControlsHidden) { + _controlsState = ControlsShowing; + _controlsAnimStarted = getms(); + a_cOpacity.start(1); + anim::start(this); + } +} + +void MediaView::onHideControls(bool force) { + if (!force && !_dropdown.isHidden()) return; + if (_controlsState == ControlsHiding || _controlsState == ControlsHidden) return; + _controlsState = ControlsHiding; + _controlsAnimStarted = getms(); + a_cOpacity.start(0); + anim::start(this); +} + +void MediaView::onDropdownHiding() { + setFocus(); + LOG(("DROPDOWN HIDDEN")); + _ignoringDropdown = true; + _lastMouseMovePos = mapFromGlobal(QCursor::pos()); + updateOver(_lastMouseMovePos); + _ignoringDropdown = false; + if (!_controlsHideTimer.isActive()) { + LOG((", STARTING CONTROLS HIDE")); + onHideControls(true); + } +} + +void MediaView::onToMessage() { + if (_menu) _menu->fastHide(); + if (HistoryItem *item = _msgid ? App::histItemById(_msgid) : 0) { + if (App::wnd()) { + close(); + if (App::main()) App::main()->showPeer(item->history()->peer->id, _msgid, false, true); + } + } +} + void MediaView::onSave() { QString file; if (_doc) { QString cur = _doc->already(true); if (cur.isEmpty()) { - _save.hide(); + _saveVisible = false; + update(_saveNav); return; } @@ -275,7 +376,8 @@ void MediaView::onDownload() { if (_doc) { QString cur = _doc->already(true); if (cur.isEmpty()) { - _save.hide(); + _saveVisible = false; + update(_saveNav); } else { if (!QDir().exists(path)) QDir().mkpath(path); toName = filedialogNextFilename(_doc->name, cur, path); @@ -285,7 +387,8 @@ void MediaView::onDownload() { } } else { if (!_photo || !_photo->full->loaded()) { - _save.hide(); + _saveVisible = false; + update(_saveNav); } else { if (!QDir().exists(path)) QDir().mkpath(path); toName = filedialogDefaultName(qsl("photo"), qsl(".jpg"), path); @@ -303,6 +406,7 @@ void MediaView::onDownload() { } void MediaView::onShowInFolder() { + if (!_doc) return; QString already(_doc->already(true)); if (!already.isEmpty()) psShowInFolder(already); } @@ -312,7 +416,7 @@ void MediaView::onForward() { if (!_msgid || !item) return; if (App::wnd()) { - onClose(); + close(); if (App::main()) { App::contextItem(item); App::main()->forwardLayer(); @@ -321,7 +425,7 @@ void MediaView::onForward() { } void MediaView::onDelete() { - onClose(); + close(); if (!_msgid) { if (App::self() && _photo && App::self()->photoId == _photo->id) { App::app()->peerClearPhoto(App::self()->id); @@ -338,11 +442,20 @@ void MediaView::onDelete() { } void MediaView::onOverview() { - onClose(); - if (_history->peer) App::main()->showMediaOverview(_history->peer, OverviewPhotos); + if (_menu) _menu->fastHide(); + if (!_history || _overview == OverviewCount) { + update(); + return; + } + close(); + if (_history->peer) App::main()->showMediaOverview(_history->peer, _overview); } void MediaView::onCopy() { + if (!_dropdown.isHidden()) { + _dropdown.ignoreShow(); + _dropdown.hideStart(); + } if (_doc) { QApplication::clipboard()->setPixmap(_current); } else { @@ -367,26 +480,18 @@ void MediaView::showPhoto(PhotoData *photo, HistoryItem *context) { anim::stop(this); } if (!_animOpacities.isEmpty()) _animOpacities.clear(); - setCursor(style::cur_default); _index = -1; _msgid = context ? context->id : 0; _photo = photo; if (_history) { - for (int i = 0, l = _history->_overview[OverviewPhotos].size(); i < l; ++i) { - if (_history->_overview[OverviewPhotos].at(i) == _msgid) { - _index = i; - break; - } - } - - if (_history->_overviewCount[OverviewPhotos] < 0) { - loadPhotosBack(); - } + _overview = OverviewPhotos; + findCurrent(); } - showPhoto(photo); - preloadPhotos(0); + displayPhoto(photo); + preloadData(0); + activateControls(); } void MediaView::showPhoto(PhotoData *photo, PeerData *context) { @@ -406,6 +511,7 @@ void MediaView::showPhoto(PhotoData *photo, PeerData *context) { _msgid = 0; _index = -1; _photo = photo; + _overview = OverviewCount; if (_user) { if (_user->photos.isEmpty() && _user->photosCount < 0 && _user->photoId) { _index = 0; @@ -418,23 +524,22 @@ void MediaView::showPhoto(PhotoData *photo, PeerData *context) { } if (_user->photosCount < 0) { - loadPhotosBack(); + loadBack(); } } - showPhoto(photo); - preloadPhotos(0); + displayPhoto(photo); + preloadData(0); + activateControls(); } -void MediaView::showDocument(DocumentData *doc, QPixmap pix, HistoryItem *context) { +void MediaView::showDocument(DocumentData *doc, HistoryItem *context) { _photo = 0; _history = context ? context->history() : 0; _saveMsgStarted = 0; _peer = 0; _user = 0; - _msgid = context ? context->id : 0; - _index = -1; _loadRequest = 0; - _over = OverNone; + _down = OverNone; _pressed = false; _dragging = 0; setCursor(style::cur_default); @@ -444,58 +549,32 @@ void MediaView::showDocument(DocumentData *doc, QPixmap pix, HistoryItem *contex } if (!_animOpacities.isEmpty()) _animOpacities.clear(); - _current = pix; - _current.setDevicePixelRatio(cRetinaFactor()); - _doc = doc; - _down = OverNone; - if (isHidden()) { - moveToScreen(); - } - _w = _current.width() / cIntRetinaFactor(); - _h = _current.height() / cIntRetinaFactor(); - _width = _w; - if (_w > 0 && _h > 0) { - _zoomToScreen = float64(_avail.width()) / _w; - if (_h * _zoomToScreen > (_avail.height() - st::medviewBottomBar)) { - _zoomToScreen = float64(_avail.height() - st::medviewBottomBar) / _h; + _index = -1; + _msgid = context ? context->id : 0; + if (_history) { + _overview = OverviewDocuments; + + for (int i = 0, l = _history->_overview[_overview].size(); i < l; ++i) { + if (_history->_overview[_overview].at(i) == _msgid) { + _index = i; + break; + } } - if (_zoomToScreen >= 1.) { - _zoomToScreen -= 1.; - } else { - _zoomToScreen = 1. - (1. / _zoomToScreen); + + if (_history->_overviewCount[_overview] < 0) { + loadBack(); } - } else { - _zoomToScreen = 0; - } - if ((_w > _avail.width()) || (_h > (_avail.height() - st::medviewBottomBar))) { - _zoom = ZoomToScreenLevel; - if (_zoomToScreen >= 0) { - _w = qRound(_w * (_zoomToScreen + 1)); - _h = qRound(_h * (_zoomToScreen + 1)); - } else { - _w = qRound(_w / (-_zoomToScreen + 1)); - _h = qRound(_h / (-_zoomToScreen + 1)); - } - snapXY(); - } else { - _zoom = 0; - } - _x = (_avail.width() - _w) / 2; - _y = (_avail.height() - st::medviewBottomBar - _h) / 2; - _from = context ? context->from()->asUser() : 0; - _full = 1; - updateControls(); - if (isHidden()) { - psUpdateOverlayed(this); - show(); - psShowOverAll(this); } + displayDocument(doc, context); + preloadData(0); + activateControls(); } -void MediaView::showPhoto(PhotoData *photo) { +void MediaView::displayPhoto(PhotoData *photo) { _photo = photo; _doc = 0; _zoom = 0; + _zoomToScreen = 0; MTP::clearLoaderPriorities(); _full = -1; @@ -506,16 +585,16 @@ void MediaView::showPhoto(PhotoData *photo) { if (isHidden()) { moveToScreen(); } - if (_w > _maxWidth) { - _h = qRound(_h * _maxWidth / float64(_w)); - _w = _maxWidth; + if (_w > width()) { + _h = qRound(_h * width() / float64(_w)); + _w = width(); } - if (_h > _maxHeight) { - _w = qRound(_w * _maxHeight / float64(_h)); - _h = _maxHeight; + if (_h > height()) { + _w = qRound(_w * height() / float64(_h)); + _h = height(); } - _x = (_avail.width() - _w) / 2; - _y = st::medviewPolaroid.top() + (_avail.height() - st::medviewPolaroid.top() - st::medviewPolaroid.bottom() - st::medviewBottomBar - _h) / 2; + _x = (width() - _w) / 2; + _y = (height() - _h) / 2; _width = _w; if (_photo->user == WebPageUserId && _msgid) { if (HistoryItem *item = App::histItemById(_msgid)) { @@ -539,39 +618,144 @@ void MediaView::showPhoto(PhotoData *photo) { } } -void MediaView::paintEvent(QPaintEvent *e) { - QPainter p(this); - QRect r(e->rect()); +void MediaView::displayDocument(DocumentData *doc, HistoryItem *item) { + _doc = doc; - QPainter::CompositionMode m = p.compositionMode(); - p.setCompositionMode(QPainter::CompositionMode_Source); + _docRadialFirst = _docRadialLast = _docRadialStart = _doc->loader ? getms() : 0; + + QString already = _doc->already(true); + QPixmap pix = (_doc->sticker->isNull() || !_doc->sticker->loaded()) ? (already.isEmpty() ? QPixmap() : QPixmap::fromImage(App::readImage(already, 0, false), Qt::ColorOnly)) : _doc->sticker->pix(); + _current = pix; + if (_current.isNull()) { + if (_doc->thumb->isNull()) { + style::sprite thumbs[] = { st::mvDocBlue, st::mvDocGreen, st::mvDocRed, st::mvDocYellow }; + QString name = _doc->name.toLower(), mime = _doc->mime.toLower(); + if (name.endsWith(QLatin1String(".doc")) || + name.endsWith(QLatin1String(".txt")) || + name.endsWith(QLatin1String(".psd")) || + mime.startsWith(QLatin1String("text/")) + ) { + _docIcon = thumbs[0]; + } else if ( + name.endsWith(QLatin1String(".xls")) || + name.endsWith(QLatin1String(".csv")) + ) { + _docIcon = thumbs[1]; + } else if ( + name.endsWith(QLatin1String(".pdf")) || + name.endsWith(QLatin1String(".ppt")) || + name.endsWith(QLatin1String(".key")) + ) { + _docIcon = thumbs[2]; + } else if ( + name.endsWith(QLatin1String(".zip")) || + name.endsWith(QLatin1String(".rar")) || + name.endsWith(QLatin1String(".ai")) || + name.endsWith(QLatin1String(".mp3")) || + name.endsWith(QLatin1String(".mov")) || + name.endsWith(QLatin1String(".avi")) + ) { + _docIcon = thumbs[3]; + } else { + int ext = name.lastIndexOf('.'); + QChar ch = (ext >= 0 && ext + 1 < name.size()) ? name.at(ext + 1) : (name.isEmpty() ? (mime.isEmpty() ? '0' : mime.at(0)) : name.at(0)); + _docIcon = thumbs[ch.unicode() % 4]; + } + } else { + _doc->thumb->load(); + int32 tw = _doc->thumb->width(), th = _doc->thumb->height(); + if (!tw || !th) { + _docThumbx = _docThumby = _docThumbw = 0; + } else if (tw > th) { + _docThumbw = (tw * st::mvDocBlue.pxHeight()) / th; + _docThumbx = (_docThumbw - st::mvDocBlue.pxWidth()) / 2; + _docThumby = 0; + } else { + _docThumbw = st::mvDocBlue.pxWidth(); + _docThumbx = 0; + _docThumby = ((th * _docThumbw) / tw - st::mvDocBlue.pxHeight()) / 2; + } + } + + int32 maxw = st::mvDocSize.width() - st::mvDocBlue.pxWidth() - st::mvDocPadding * 3; + + _docName = _doc->name.isEmpty() ? lang(_doc->type == StickerDocument ? lng_in_dlg_sticker : lng_mediaview_doc_image) : _doc->name; + _docNameWidth = st::mvThickFont->m.width(_docName); + if (_docNameWidth > maxw) { + _docName = st::mvThickFont->m.elidedText(_docName, Qt::ElideRight, maxw); + _docNameWidth = st::mvThickFont->m.width(_docName); + } + + _docSize = formatSizeText(_doc->size); + _docSizeWidth = st::mvFont->m.width(_docSize); + if (_docSizeWidth > maxw) { + _docSize = st::mvFont->m.elidedText(_docSize, Qt::ElideRight, maxw); + _docSizeWidth = st::mvFont->m.width(_docSize); + } + + _docRect = QRect((width() - st::mvDocSize.width()) / 2, (height() - st::mvDocSize.height()) / 2, st::mvDocSize.width(), st::mvDocSize.height()); + } else { + _current.setDevicePixelRatio(cRetinaFactor()); + _w = _current.width() / cIntRetinaFactor(); + _h = _current.height() / cIntRetinaFactor(); + } + if (isHidden()) { + moveToScreen(); + } + _width = _w; + if (_w > 0 && _h > 0) { + _zoomToScreen = float64(width()) / _w; + if (_h * _zoomToScreen > height()) { + _zoomToScreen = float64(height()) / _h; + } + if (_zoomToScreen >= 1.) { + _zoomToScreen -= 1.; + } else { + _zoomToScreen = 1. - (1. / _zoomToScreen); + } + } else { + _zoomToScreen = 0; + } + if ((_w > width()) || (_h > height())) { + _zoom = ZoomToScreenLevel; + if (_zoomToScreen >= 0) { + _w = qRound(_w * (_zoomToScreen + 1)); + _h = qRound(_h * (_zoomToScreen + 1)); + } else { + _w = qRound(_w / (-_zoomToScreen + 1)); + _h = qRound(_h / (-_zoomToScreen + 1)); + } + snapXY(); + } else { + _zoom = 0; + } + _x = (width() - _w) / 2; + _y = (height() - _h) / 2; + if (HistoryForwarded *fwd = dynamic_cast(item)) { + _from = fwd->fromForwarded()->asUser(); + } else { + _from = item->from()->asUser(); + } + _full = 1; + updateControls(); + if (isHidden()) { + psUpdateOverlayed(this); + show(); + psShowOverAll(this); + } +} + +void MediaView::paintEvent(QPaintEvent *e) { + Painter p(this); + QRect r(e->rect()); + if (!rect().intersects(r)) return; // main bg - QRect r_bg(st::medviewNavBarWidth, 0, _avail.width() - 2 * st::medviewNavBarWidth, _avail.height() - st::medviewBottomBar); - if (r_bg.intersects(r)) p.fillRect(r_bg.intersected(r), st::medviewBG->b); - if (_bottomBar.intersects(r)) p.fillRect(_bottomBar.intersected(r), st::medviewBottomBG->b); - - // left nav bar bg - if (_leftNav.intersects(r)) { - if (_leftNavVisible) { - p.fillRect(_leftNav.intersected(r), overColor(st::medviewBG->c, 1, st::black->c, overLevel(OverLeftNav) * st::medviewNavBGOpacity)); - } else { - p.fillRect(_leftNav.intersected(r), st::medviewBG->c); - } - } - - // right nav bar - if (_rightNav.intersects(r)) { - if (_rightNavVisible) { - p.fillRect(_rightNav.intersected(r), overColor(st::medviewBG->c, 1, st::black->c, overLevel(OverRightNav) * st::medviewNavBGOpacity)); - float64 o = overLevel(OverRightNav); - } else { - p.fillRect(_rightNav.intersected(r), st::medviewBG->b); - } - } - + QPainter::CompositionMode m = p.compositionMode(); + p.setCompositionMode(QPainter::CompositionMode_Source); + p.setOpacity(st::mvBgOpacity); + p.fillRect(rect().intersected(r), st::mvBgColor->b); p.setCompositionMode(m); - p.setOpacity(1); // photo if (_photo) { @@ -593,9 +777,11 @@ void MediaView::paintEvent(QPaintEvent *e) { } } if (_photo || !_current.isNull()) { + p.setOpacity(1); + QRect imgRect(_x, _y, _w, _h); if (imgRect.intersects(r)) { - if (_current.hasAlpha()) { + if (_current.hasAlpha() && (!_doc || _doc->sticker->isNull())) { p.fillRect(imgRect, _transparentBrush); } if (_zoom) { @@ -606,32 +792,15 @@ void MediaView::paintEvent(QPaintEvent *e) { } else { p.drawPixmap(_x, _y, _current); } - } - if (!_doc && _polaroidOut.intersects(r)) { - // polaroid - p.fillRect(_polaroidOut.x(), _polaroidOut.y(), _polaroidIn.x() - _polaroidOut.x(), _polaroidOut.height(), st::white->b); - p.fillRect(_polaroidIn.x() + _polaroidIn.width(), _polaroidOut.y(), _polaroidOut.x() + _polaroidOut.width() - _polaroidIn.x() - _polaroidIn.width(), _polaroidOut.height(), st::white->b); - p.fillRect(_polaroidIn.x(), _polaroidOut.y(), _polaroidIn.width(), _polaroidIn.y() - _polaroidOut.y(), st::white->b); - p.fillRect(_polaroidIn.x(), _polaroidIn.y() + _polaroidIn.height(), _polaroidIn.width(), _polaroidOut.y() + _polaroidOut.height() - _polaroidIn.y() - _polaroidIn.height(), st::white->b); - } - if (imgRect.intersects(r)) { + uint64 ms = 0; - if (!_doc && imgRect.intersects(_leftNav)) { - p.fillRect(imgRect.intersected(_leftNav), _leftNavVisible ? overColor(st::medviewBG->c, 1, st::black->c, overLevel(OverLeftNav) * st::medviewNavBGOpacity) : st::medviewBG->c); - } - if (!_doc && imgRect.intersects(_rightNav)) { - p.fillRect(imgRect.intersected(_rightNav), _rightNavVisible ? overColor(st::medviewBG->c, 1, st::black->c, overLevel(OverRightNav) * st::medviewNavBGOpacity) : st::medviewBG->c); - } - if (imgRect.intersects(_bottomBar)) { - p.fillRect(imgRect.intersected(_bottomBar), st::medviewBG->b); - } if (_full < 1) { ms = getms(); uint64 dt = ms - _animStarted; int32 cnt = int32(st::photoLoaderCnt), period = int32(st::photoLoaderPeriod), t = dt % period, delta = int32(st::photoLoaderDelta); - int32 x = (_avail.width() - st::mediaviewLoader.width()) / 2; - int32 y = st::medviewPolaroid.top() + (_availBottom - st::medviewPolaroid.top() - st::medviewPolaroid.bottom() - st::mediaviewLoader.height()) / 2; + int32 x = (width() - st::mediaviewLoader.width()) / 2; + int32 y = (height() - st::mediaviewLoader.height()) / 2; p.fillRect(x, y, st::mediaviewLoader.width(), st::mediaviewLoader.height(), st::photoLoaderBg->b); x += (st::mediaviewLoader.width() - cnt * st::mediaviewLoaderPoint.width() - (cnt - 1) * st::mediaviewLoaderSkip) / 2; @@ -680,94 +849,167 @@ void MediaView::paintEvent(QPaintEvent *e) { } } } - } - - // disabled download button - if (_save.isHidden()) { - p.fillRect(_save.geometry(), st::medviewSaveAs.bgColor->b); - p.setOpacity(st::medviewSaveAsDisabledOpacity); - p.setPen(st::medviewSaveAs.color->p); - p.setFont(st::medviewSaveAs.font->f); - p.drawPixmap(_save.geometry().topLeft() + st::medviewSaveAs.iconPos, App::sprite(), st::medviewSaveAs.icon); - p.drawText(_save.geometry().topLeft() + st::medviewSaveAs.textPos + QPoint(0, st::medviewSaveAs.font->ascent), lang(lng_mediaview_save)); - p.setOpacity(1); - } - - // left nav arrow - if (_leftNavVisible) { - QPoint p_left((st::medviewNavBarWidth - st::medviewLeft.pxWidth()) / 2, (height() - st::medviewBottomBar - st::medviewLeft.pxHeight()) / 2); - if (QRect(p_left.x(), p_left.y(), st::medviewLeft.pxWidth(), st::medviewLeft.pxHeight()).intersects(r)) { - float64 o = overLevel(OverLeftNav); - p.setOpacity(o * st::medviewDarkNav + (1 - o) * st::medviewLightNav); - p.drawPixmap(p_left, App::sprite(), st::medviewLeft); - } - } - - // right nav arrow - if (_rightNavVisible) { - QPoint p_right(width() - (st::medviewNavBarWidth + st::medviewRight.pxWidth()) / 2, (height() - st::medviewBottomBar - st::medviewRight.pxHeight()) / 2); - if (QRect(p_right.x(), p_right.y(), st::medviewRight.pxWidth(), st::medviewRight.pxHeight()).intersects(r)) { - float64 o = overLevel(OverRightNav); - p.setOpacity(o * st::medviewDarkNav + (1 - o) * st::medviewLightNav); - p.drawPixmap(p_right, App::sprite(), st::medviewRight); - } - } - p.setOpacity(1); - - // header - if (_overview.isHidden()) { - QRect r_header(_overview.x(), _overview.y(), st::medviewHeaderFont->m.width(_header) - st::medviewOverview.width, _overview.height()); - if (r_header.intersects(r)) { - p.setOpacity(st::medviewOverview.opacity); - p.setPen(st::medviewOverview.color->p); - p.setFont(st::medviewOverview.font->f); - p.drawPixmap(_overview.geometry().topLeft() + (_photo ? st::medviewPhotoSpritePos : st::medviewDocumentSpritePos), App::sprite(), _photo ? st::medviewPhotoSprite : st::medviewDocumentSprite); - p.drawText(r_header.topLeft() + st::medviewOverview.textPos + QPoint(0, st::medviewHeaderFont->ascent), _header); - p.setOpacity(1); - } - } - - // name - if (_doc) { - float64 o = overLevel(OverName); - p.setOpacity(st::medviewOverview.overOpacity * o + st::medviewOverview.opacity * (1 - o)); - p.setPen(st::white->p); } else { - p.setPen(st::medviewNameColor->p); - } - if (_from) { - if (_nameNav.intersects(r)) { - if (_over == OverName) _fromName.replaceFont(st::medviewNameFont->underline()); - _fromName.drawElided(p, _nameNav.left(), _nameNav.top(), _nameNav.width()); - if (_over == OverName) _fromName.replaceFont(st::medviewNameFont); + if (_docRect.intersects(r)) { + p.fillRect(_docRect, st::mvDocBg->b); + QRect thumb = rtlrect(_docRect.x() + st::mvDocPadding, _docRect.y() + st::mvDocPadding, st::mvDocBlue.pxWidth(), st::mvDocBlue.pxHeight(), width()); + if (_doc->thumb->isNull()) { + p.drawPixmap(thumb.topLeft(), App::sprite(), _docIcon); + } else { + int32 rf(cIntRetinaFactor()); + p.drawPixmap(thumb.topLeft(), _doc->thumb->pix(_docThumbw), QRect(_docThumbx * rf, _docThumby * rf, st::mvDocBlue.pxWidth() * rf, st::mvDocBlue.pxHeight() * rf)); + } + + if (_doc && _docRadialStart > 0) { + p.setRenderHint(QPainter::HighQualityAntialiasing); + + QRect inner(QPoint(thumb.x() + ((thumb.width() - st::radialSize.width()) / 2), thumb.y() + ((thumb.height() - st::radialSize.height()) / 2)), st::radialSize); + p.setPen(Qt::NoPen); + p.setBrush(st::black->b); + p.setOpacity(st::radialBgOpacity); + p.drawEllipse(inner); + + QRect arc(inner.marginsRemoved(QMargins(st::radialLine / 2, st::radialLine / 2, st::radialLine / 2, st::radialLine / 2))); + p.setOpacity(1); + + p.setPen(_docRadialPen); + + p.drawArc(arc, a_docRadialStart.current() * 5600, 10 + a_docRadial.current() * 5490); + + p.setRenderHint(QPainter::HighQualityAntialiasing, false); + } + + p.setPen(st::mvDocNameColor->p); + p.setFont(st::mvThickFont->f); + p.drawTextLeft(_docRect.x() + 2 * st::mvDocPadding + st::mvDocBlue.pxWidth(), _docRect.y() + st::mvDocPadding + st::mvDocNameTop, width(), _docName, _docNameWidth); + + p.setPen(st::mvDocSizeColor->p); + p.setFont(st::mvFont->f); + p.drawTextLeft(_docRect.x() + 2 * st::mvDocPadding + st::mvDocBlue.pxWidth(), _docRect.y() + st::mvDocPadding + st::mvDocSizeTop, width(), _docSize, _docSizeWidth); } } - // date - if (_dateNav.intersects(r)) { - if (_doc) { - float64 o = overLevel(OverDate); - p.setOpacity(st::medviewOverview.overOpacity * o + st::medviewOverview.opacity * (1 - o)); - p.setPen(st::white->p); - } else { - p.setPen(st::medviewDateColor->p); + float64 co = a_cOpacity.current(); + if (co > 0) { + // left nav bar + if (_leftNav.intersects(r) && _leftNavVisible) { + float64 o = overLevel(OverLeftNav); + if (o > 0) { + p.setOpacity(o * st::mvControlBgOpacity * co); + p.fillRect(_leftNav.intersected(r), st::black->b); + } + + QPoint p_left(_leftNav.x() + (_leftNav.width() - st::mvLeft.pxWidth()) / 2, _leftNav.y() + (_leftNav.height() - st::mvLeft.pxHeight()) / 2); + if (QRect(p_left.x(), p_left.y(), st::mvLeft.pxWidth(), st::mvLeft.pxHeight()).intersects(r)) { + p.setOpacity((o * st::mvIconOverOpacity + (1 - o) * st::mvIconOpacity) * co); + p.drawPixmap(p_left, App::sprite(), st::mvLeft); + } + } + + // right nav bar + if (_rightNav.intersects(r) && _rightNavVisible) { + float64 o = overLevel(OverRightNav); + if (o > 0) { + p.setOpacity(o * st::mvControlBgOpacity * co); + p.fillRect(_rightNav.intersected(r), st::black->b); + } + + QPoint p_right(_rightNav.x() + (_rightNav.width() - st::mvRight.pxWidth()) / 2, _rightNav.y() + (_rightNav.height() - st::mvRight.pxHeight()) / 2); + if (QRect(p_right.x(), p_right.y(), st::mvRight.pxWidth(), st::mvRight.pxHeight()).intersects(r)) { + p.setOpacity((o * st::mvIconOverOpacity + (1 - o) * st::mvIconOpacity) * co); + p.drawPixmap(p_right, App::sprite(), st::mvRight); + } + } + + // close button + if (_closeNav.intersects(r)) { + float64 o = overLevel(OverClose); + if (o > 0) { + p.setOpacity(o * st::mvControlBgOpacity * co); + p.fillRect(_closeNav.intersected(r), st::black->b); + } + + QPoint p_right(_closeNav.x() + (_closeNav.width() - st::mvClose.pxWidth()) / 2, _closeNav.y() + (_closeNav.height() - st::mvClose.pxHeight()) / 2); + if (QRect(p_right.x(), p_right.y(), st::mvClose.pxWidth(), st::mvClose.pxHeight()).intersects(r)) { + p.setOpacity((o * st::mvIconOverOpacity + (1 - o) * st::mvIconOpacity) * co); + p.drawPixmap(p_right, App::sprite(), st::mvClose); + } + } + + // save button + if (_saveNav.intersects(r)) { + float64 o = overLevel(OverSave); + QPoint p_right(_saveNav.x() + (_saveNav.width() - st::mvSave.pxWidth()) / 2, _saveNav.y() + (_saveNav.height() - st::mvSave.pxHeight()) / 2); + if (QRect(p_right.x(), p_right.y(), st::mvSave.pxWidth(), st::mvSave.pxHeight()).intersects(r)) { + p.setOpacity((o * st::mvIconOverOpacity + (1 - o) * st::mvIconOpacity) * co); + p.drawPixmap(p_right, App::sprite(), st::mvSave); + } + } + + // more area + if (_moreNav.intersects(r)) { + float64 o = overLevel(OverMore); + QPoint p_right(_moreNav.x() + (_moreNav.width() - st::mvMore.pxWidth()) / 2, _moreNav.y() + (_moreNav.height() - st::mvMore.pxHeight()) / 2); + if (QRect(p_right.x(), p_right.y(), st::mvMore.pxWidth(), st::mvMore.pxHeight()).intersects(r)) { + p.setOpacity((o * st::mvIconOverOpacity + (1 - o) * st::mvIconOpacity) * co); + p.drawPixmap(p_right, App::sprite(), st::mvMore); + } + } + + p.setPen(st::white->p); + p.setFont(st::mvThickFont->f); + + // header + if (_headerNav.intersects(r)) { + float64 o = _headerHasLink ? overLevel(OverHeader) : 0; + p.setOpacity((o * st::mvIconOverOpacity + (1 - o) * st::mvIconOpacity) * co); + p.drawText(_headerNav.left(), _headerNav.top() + st::mvThickFont->ascent, _headerText); + + if (o > 0) { + p.setOpacity(o * co); + p.drawLine(_headerNav.left(), _headerNav.top() + st::mvThickFont->ascent + 1, _headerNav.right(), _headerNav.top() + st::mvThickFont->ascent + 1); + } + } + + p.setFont(st::mvFont->f); + + // name + if (_from && _nameNav.intersects(r)) { + float64 o = overLevel(OverName); + p.setOpacity((o * st::mvIconOverOpacity + (1 - o) * st::mvIconOpacity) * co); + _fromName.drawElided(p, _nameNav.left(), _nameNav.top(), _nameNav.width()); + + if (o > 0) { + p.setOpacity(o * co); + p.drawLine(_nameNav.left(), _nameNav.top() + st::mvFont->ascent + 1, _nameNav.right(), _nameNav.top() + st::mvFont->ascent + 1); + } + } + + // date + if (_dateNav.intersects(r)) { + float64 o = overLevel(OverDate); + p.setOpacity((o * st::mvIconOverOpacity + (1 - o) * st::mvIconOpacity) * co); + p.drawText(_dateNav.left(), _dateNav.top() + st::mvFont->ascent, _dateText); + + if (o > 0) { + p.setOpacity(o * co); + p.drawLine(_dateNav.left(), _dateNav.top() + st::mvFont->ascent + 1, _dateNav.right(), _dateNav.top() + st::mvFont->ascent + 1); + } } - p.setFont((_over == OverDate ? st::medviewDateFont->underline() : st::medviewDateFont)->f); - p.drawText(_dateNav.left(), _dateNav.top() + st::medviewDateFont->ascent, _dateText); } } void MediaView::keyPressEvent(QKeyEvent *e) { if (!_menu && e->key() == Qt::Key_Escape) { - onClose(); + close(); } else if (e == QKeySequence::Save || e == QKeySequence::SaveAs) { onSave(); } else if (e->key() == Qt::Key_Copy || (e->key() == Qt::Key_C && e->modifiers().testFlag(Qt::ControlModifier))) { onCopy(); } else if (e->key() == Qt::Key_Left) { - moveToPhoto(-1); + moveToNext(-1); } else if (e->key() == Qt::Key_Right) { - moveToPhoto(1); + moveToNext(1); } else if (e->modifiers().testFlag(Qt::ControlModifier) && (e->key() == Qt::Key_Plus || e->key() == Qt::Key_Equal || e->key() == ']' || e->key() == Qt::Key_Asterisk || e->key() == Qt::Key_Minus || e->key() == Qt::Key_Underscore || e->key() == Qt::Key_0)) { int32 newZoom = _zoom; if (e->key() == Qt::Key_Plus || e->key() == Qt::Key_Equal || e->key() == Qt::Key_Asterisk || e->key() == ']') { @@ -805,7 +1047,7 @@ void MediaView::keyPressEvent(QKeyEvent *e) { newZoom = 0; } _x = -_width / 2; - _y = (_doc ? 0 : st::medviewPolaroid.top()) - ((_current.height() / cIntRetinaFactor()) / 2); + _y = -((_current.height() / cIntRetinaFactor()) / 2); float64 z = (_zoom == ZoomToScreenLevel) ? _zoomToScreen : _zoom; if (z >= 0) { _x = qRound(_x * (z + 1)); @@ -814,9 +1056,8 @@ void MediaView::keyPressEvent(QKeyEvent *e) { _x = qRound(_x / (-z + 1)); _y = qRound(_y / (-z + 1)); } - _x += _avail.width() / 2; - _y += (_avail.height() - st::medviewBottomBar - (_doc ? 0 : (st::medviewPolaroid.top() + st::medviewPolaroid.bottom()))) / 2; - updatePolaroid(); + _x += width() / 2; + _y += height() / 2; update(); } if (newZoom != ZoomToScreenLevel) { @@ -829,24 +1070,24 @@ void MediaView::keyPressEvent(QKeyEvent *e) { _w = _current.width() / cIntRetinaFactor(); _h = _current.height() / cIntRetinaFactor(); if (z >= 0) { - nx = (_x - _avail.width() / 2.) / (z + 1); - ny = (_y - _avail.height() / 2.) / (z + 1); + nx = (_x - width() / 2.) / (z + 1); + ny = (_y - height() / 2.) / (z + 1); } else { - nx = (_x - _avail.width() / 2.) * (-z + 1); - ny = (_y - _avail.height() / 2.) * (-z + 1); + nx = (_x - width() / 2.) * (-z + 1); + ny = (_y - height() / 2.) * (-z + 1); } _zoom = newZoom; z = (_zoom == ZoomToScreenLevel) ? _zoomToScreen : _zoom; if (z > 0) { _w = qRound(_w * (z + 1)); _h = qRound(_h * (z + 1)); - _x = qRound(nx * (z + 1) + _avail.width() / 2.); - _y = qRound(ny * (z + 1) + _avail.height() / 2.); + _x = qRound(nx * (z + 1) + width() / 2.); + _y = qRound(ny * (z + 1) + height() / 2.); } else { _w = qRound(_w / (-z + 1)); _h = qRound(_h / (-z + 1)); - _x = qRound(nx / (-z + 1) + _avail.width() / 2.); - _y = qRound(ny / (-z + 1) + _avail.height() / 2.); + _x = qRound(nx / (-z + 1) + width() / 2.); + _y = qRound(ny / (-z + 1) + height() / 2.); } snapXY(); update(); @@ -854,58 +1095,64 @@ void MediaView::keyPressEvent(QKeyEvent *e) { } } -void MediaView::moveToPhoto(int32 delta) { - if (_index < 0 || !_photo) return; +void MediaView::moveToNext(int32 delta) { + if (_index < 0 || (!_photo && !_doc) || (_overview == OverviewCount && !_user)) return; int32 newIndex = _index + delta; - if (_history) { - if (newIndex >= 0 && newIndex < _history->_overview[OverviewPhotos].size()) { + if (_history && _overview != OverviewCount) { + if (newIndex >= 0 && newIndex < _history->_overview[_overview].size()) { _index = newIndex; - if (HistoryItem *item = App::histItemById(_history->_overview[OverviewPhotos][_index])) { + if (HistoryItem *item = App::histItemById(_history->_overview[_overview][_index])) { _msgid = item->id; - HistoryPhoto *photo = dynamic_cast(item->getMedia()); - if (photo) { - showPhoto(photo->photo()); - preloadPhotos(delta); + switch (item->getMedia()->type()) { + case MediaTypePhoto: displayPhoto(static_cast(item->getMedia())->photo()); preloadData(delta); break; + case MediaTypeDocument: displayDocument(static_cast(item->getMedia())->document(), item); preloadData(delta); break; + case MediaTypeSticker: displayDocument(static_cast(item->getMedia())->document(), item); preloadData(delta); break; } } } if (delta < 0 && _index < MediaOverviewStartPerPage) { - loadPhotosBack(); + loadBack(); } } else if (_user) { if (newIndex >= 0 && newIndex < _user->photos.size()) { _index = newIndex; - showPhoto(_user->photos[_index]); - preloadPhotos(delta); + displayPhoto(_user->photos[_index]); + preloadData(delta); } if (delta > 0 && _index > _user->photos.size() - MediaOverviewStartPerPage) { - loadPhotosBack(); + loadBack(); } } } -void MediaView::preloadPhotos(int32 delta) { - if (_index < 0 || !_photo) return; +void MediaView::preloadData(int32 delta) { + if (_index < 0 || !_user && _overview == OverviewCount) return; int32 from = _index + (delta ? delta : -1), to = _index + (delta ? delta * MediaOverviewPreloadCount : 1), forget = _index - delta * 2; if (from > to) qSwap(from, to); - if (_history) { + if (_history && _overview != OverviewCount) { for (int32 i = from; i <= to; ++i) { - if (i >= 0 && i < _history->_overview[OverviewPhotos].size() && i != _index) { - if (HistoryItem *item = App::histItemById(_history->_overview[OverviewPhotos][i])) { - HistoryPhoto *photo = dynamic_cast(item->getMedia()); - if (photo) { - photo->photo()->full->load(); + if (i >= 0 && i < _history->_overview[_overview].size() && i != _index) { + if (HistoryItem *item = App::histItemById(_history->_overview[_overview][i])) { + if (HistoryMedia *media = item->getMedia()) { + switch (media->type()) { + case MediaTypePhoto: static_cast(media)->photo()->full->load(); break; + case MediaTypeDocument: static_cast(media)->document()->thumb->load(); break; + case MediaTypeSticker: static_cast(media)->document()->sticker->load(); break; + } } } } } - if (forget >= 0 && forget < _history->_overview[OverviewPhotos].size() && forget != _index) { - if (HistoryItem *item = App::histItemById(_history->_overview[OverviewPhotos][forget])) { - HistoryMedia *media = item->getMedia(); - if (media && media->type() == MediaTypePhoto) { - static_cast(media)->photo()->forget(); + if (forget >= 0 && forget < _history->_overview[_overview].size() && forget != _index) { + if (HistoryItem *item = App::histItemById(_history->_overview[_overview][forget])) { + if (HistoryMedia *media = item->getMedia()) { + switch (media->type()) { + case MediaTypePhoto: static_cast(media)->photo()->forget(); break; + case MediaTypeDocument: static_cast(media)->document()->forget(); break; + case MediaTypeSticker: static_cast(media)->document()->forget(); break; + } } } } @@ -935,16 +1182,24 @@ void MediaView::mousePressEvent(QMouseEvent *e) { _down = OverNone; if (!textlnkDown()) { if (_over == OverLeftNav && _index >= 0) { - moveToPhoto(-1); + moveToNext(-1); _lastAction = e->pos(); } else if (_over == OverRightNav && _index >= 0) { - moveToPhoto(1); + moveToNext(1); _lastAction = e->pos(); } else if (_over == OverName) { _down = OverName; } else if (_over == OverDate) { _down = OverDate; - } else if (!_bottomBar.contains(e->pos()) && (!_saveMsg.contains(e->pos()) || !_saveMsgStarted)) { + } else if (_over == OverHeader) { + _down = OverHeader; + } else if (_over == OverSave) { + _down = OverSave; + } else if (_over == OverMore) { + _down = OverMore; + } else if (_over == OverClose) { + _down = OverClose; + } else if (!_saveMsg.contains(e->pos()) || !_saveMsgStarted) { _pressed = true; _dragging = 0; setCursor(style::cur_default); @@ -954,32 +1209,36 @@ void MediaView::mousePressEvent(QMouseEvent *e) { } } } + activateControls(); } void MediaView::snapXY() { - int32 xmin = _avail.width() - _w - (_doc ? 0 : (st::medviewNavBarWidth + st::medviewPolaroid.right())), xmax = _doc ? 0 : (st::medviewPolaroid.left() + st::medviewNavBarWidth); - int32 ymin = _avail.height() - _h - (_doc ? 0 : st::medviewPolaroid.bottom()) - st::medviewBottomBar, ymax = (_doc ? 0 : st::medviewPolaroid.top()); - if (xmin > (_avail.width() - _w) / 2) xmin = (_avail.width() - _w) / 2; - if (xmax < (_avail.width() - _w) / 2) xmax = (_avail.width() - _w) / 2; - if (ymin > (_avail.height() - _h - st::medviewBottomBar - (_doc ? 0 : (st::medviewPolaroid.bottom() - st::medviewPolaroid.top()))) / 2) ymin = (_avail.height() - _h - st::medviewBottomBar - (_doc ? 0 : (st::medviewPolaroid.bottom() - st::medviewPolaroid.top()))) / 2; - if (ymax < (_avail.height() - _h - st::medviewBottomBar - (_doc ? 0 : (st::medviewPolaroid.bottom() - st::medviewPolaroid.top()))) / 2) ymax = (_avail.height() - _h - st::medviewBottomBar - (_doc ? 0 : (st::medviewPolaroid.bottom() - st::medviewPolaroid.top()))) / 2; + int32 xmin = width() - _w, xmax = 0; + int32 ymin = height() - _h, ymax = 0; + if (xmin > (width() - _w) / 2) xmin = (width() - _w) / 2; + if (xmax < (width() - _w) / 2) xmax = (width() - _w) / 2; + if (ymin > (height() - _h) / 2) ymin = (height() - _h) / 2; + if (ymax < (height() - _h) / 2) ymax = (height() - _h) / 2; if (_x < xmin) _x = xmin; if (_x > xmax) _x = xmax; if (_y < ymin) _y = ymin; if (_y > ymax) _y = ymax; - updatePolaroid(); } void MediaView::mouseMoveEvent(QMouseEvent *e) { + bool moved = (e->pos() != _lastMouseMovePos); + LOG(("MOUSE MOVE: WAS %1 %2 NOW %3 %4 MOVED: %5").arg(_lastMouseMovePos.x()).arg(_lastMouseMovePos.y()).arg(e->pos().x()).arg(e->pos().y()).arg(logBool(moved))); + _lastMouseMovePos = e->pos(); + updateOver(e->pos()); - if (_lastAction.x() >= 0 && (e->pos() - _lastAction).manhattanLength() >= st::medviewDeltaFromLastAction) { - _lastAction = QPoint(-st::medviewDeltaFromLastAction, -st::medviewDeltaFromLastAction); + if (_lastAction.x() >= 0 && (e->pos() - _lastAction).manhattanLength() >= st::mvDeltaFromLastAction) { + _lastAction = QPoint(-st::mvDeltaFromLastAction, -st::mvDeltaFromLastAction); } if (_pressed) { if (!_dragging && (e->pos() - _mStart).manhattanLength() >= QApplication::startDragDistance()) { _dragging = QRect(_x, _y, _w, _h).contains(_mStart) ? 1 : -1; if (_dragging > 0) { - if (_w > _avail.width() - (_doc ? 0 : (2 * st::medviewNavBarWidth + st::medviewPolaroid.left() + st::medviewPolaroid.right())) || _h > _avail.height() - (_doc ? 0 : (st::medviewPolaroid.top() + st::medviewPolaroid.bottom())) - st::medviewBottomBar) { + if (_w > width() || _h > height()) { setCursor(style::cur_sizeall); } else { setCursor(style::cur_default); @@ -993,11 +1252,34 @@ void MediaView::mouseMoveEvent(QMouseEvent *e) { update(); } } + if (moved) activateControls(); } bool MediaView::updateOverState(OverState newState) { bool result = true; if (_over != newState) { + LOG(("UPDATING STATE TO %1, IGNORING: %2").arg(newState).arg(logBool(_ignoringDropdown))); + if (newState == OverMore && !_ignoringDropdown) { + QTimer::singleShot(0, this, SLOT(onDropdown())); + } else if (newState == OverNone) { + if (_over == OverLeftNav) { + update(_leftNav); + } else if (_over == OverRightNav) { + update(_rightNav); + } else if (_over == OverName) { + update(_nameNav); + } else if (_over == OverDate) { + update(_dateNav); + } else if (_over == OverSave) { + update(_saveNav); + } else if (_over == OverHeader) { + update(_headerNav); + } else if (_over == OverClose) { + update(_closeNav); + } else if (_over == OverMore) { + update(_moreNav); + } + } if (_over != OverNone) { _animations[_over] = getms(); ShowingOpacities::iterator i = _animOpacities.find(_over); @@ -1059,16 +1341,23 @@ void MediaView::updateOver(const QPoint &pos) { if (!updateOverState(OverDate)) { update(_dateNav); } - } else if (_over != OverNone) { - if (_over == OverLeftNav) { - update(_leftNav); - } else if (_over == OverRightNav) { - update(_rightNav); - } else if (_over == OverName) { - update(_nameNav); - } else if (_over == OverDate) { - update(_dateNav); + } else if (_headerHasLink && _headerNav.contains(pos)) { + if (!updateOverState(OverHeader)) { + update(_headerNav); } + } else if (_saveVisible && _saveNav.contains(pos)) { + if (!updateOverState(OverSave)) { + update(_saveNav); + } + } else if (_moreNav.contains(pos)) { + if (!updateOverState(OverMore)) { + update(_moreNav); + } + } else if (_closeNav.contains(pos)) { + if (!updateOverState(OverClose)) { + update(_closeNav); + } + } else if (_over != OverNone) { updateOverState(OverNone); } } @@ -1081,17 +1370,19 @@ void MediaView::mouseReleaseEvent(QMouseEvent *e) { textlnkDown(TextLinkPtr()); if (_over == OverName && _down == OverName) { if (App::wnd() && _from) { - onClose(); + close(); if (App::main()) App::main()->showPeerProfile(_from); } - } else if (_over == OverDate && _down == OverDate && _msgid) { - HistoryItem *item = App::histItemById(_msgid); - if (item) { - if (App::wnd()) { - onClose(); - if (App::main()) App::main()->showPeer(item->history()->peer->id, _msgid, false, true); - } - } + } else if (_over == OverDate && _down == OverDate) { + onToMessage(); + } else if (_over == OverHeader && _down == OverHeader) { + onOverview(); + } else if (_over == OverSave && _down == OverSave) { + onDownload(); + } else if (_over == OverMore && _down == OverMore) { + QTimer::singleShot(0, this, SLOT(onDropdown())); + } else if (_over == OverClose && _down == OverClose) { + close(); } else if (_pressed) { if (_dragging) { if (_dragging > 0) { @@ -1102,48 +1393,25 @@ void MediaView::mouseReleaseEvent(QMouseEvent *e) { } _dragging = 0; setCursor(style::cur_default); - } else if ((e->pos() - _lastAction).manhattanLength() >= st::medviewDeltaFromLastAction) { - onClose(); + } else if ((e->pos() - _lastAction).manhattanLength() >= st::mvDeltaFromLastAction) { + close(); } _pressed = false; } _down = OverNone; + activateControls(); } void MediaView::contextMenuEvent(QContextMenuEvent *e) { - if (_photo && _photo->full->loaded() && (e->reason() != QContextMenuEvent::Mouse || QRect(_x, _y, _w, _h).contains(e->pos()))) { + if (e->reason() != QContextMenuEvent::Mouse || QRect(_x, _y, _w, _h).contains(e->pos())) { if (_menu) { _menu->deleteLater(); _menu = 0; } - _menu = new ContextMenu(this); - _menu->addAction(lang(lng_context_save_image), this, SLOT(onSave()))->setEnabled(true); - _menu->addAction(lang(lng_context_copy_image), this, SLOT(onCopy()))->setEnabled(true); - _menu->addAction(lang(lng_context_close_image), this, SLOT(onClose()))->setEnabled(true); - if (_msgid) { - _menu->addAction(lang(lng_context_forward_image), this, SLOT(onForward()))->setEnabled(true); - _menu->addAction(lang(lng_context_delete_image), this, SLOT(onDelete()))->setEnabled(true); - } else if ((App::self() && App::self()->photoId == _photo->id) || (_photo->chat && _photo->chat->photoId == _photo->id)) { - _menu->addAction(lang(lng_context_delete_image), this, SLOT(onDelete()))->setEnabled(true); - } - _menu->deleteOnHide(); - connect(_menu, SIGNAL(destroyed(QObject*)), this, SLOT(onMenuDestroy(QObject*))); - _menu->popup(e->globalPos()); - e->accept(); - } else if (_doc && (e->reason() != QContextMenuEvent::Mouse || QRect(_x, _y, _w, _h).contains(e->pos()))) { - if (_menu) { - _menu->deleteLater(); - _menu = 0; - } - _menu = new ContextMenu(this); - if (!_doc->already(true).isEmpty()) { - _menu->addAction(lang(cPlatform() == dbipMac ? lng_context_show_in_finder : lng_context_show_in_folder), this, SLOT(onShowInFolder()))->setEnabled(true); - } - _menu->addAction(lang(lng_context_save_file), this, SLOT(onSave()))->setEnabled(true); - _menu->addAction(lang(lng_context_close_file), this, SLOT(onClose()))->setEnabled(true); - if (_msgid) { - _menu->addAction(lang(lng_context_forward_file), this, SLOT(onForward()))->setEnabled(true); - _menu->addAction(lang(lng_context_delete_file), this, SLOT(onDelete()))->setEnabled(true); + _menu = new ContextMenu(this, st::mvDropdown, st::mvContextButton); + updateDropdown(); + for (int32 i = 0, l = _btns.size(); i < l; ++i) { + if (!_btns.at(i)->isHidden()) _menu->addAction(_btns.at(i)->getText(), _btns.at(i), SIGNAL(clicked()))->setEnabled(true); } _menu->deleteOnHide(); connect(_menu, SIGNAL(destroyed(QObject*)), this, SLOT(onMenuDestroy(QObject*))); @@ -1189,8 +1457,8 @@ void MediaView::touchEvent(QTouchEvent *e) { } else if (_touchMove) { if ((!_leftNavVisible || !_leftNav.contains(mapFromGlobal(_touchStart))) && (!_rightNavVisible || !_rightNav.contains(mapFromGlobal(_touchStart)))) { QPoint d = (e->touchPoints().cbegin()->screenPos().toPoint() - _touchStart); - if (d.x() * d.x() > d.y() * d.y() && (d.x() > st::medviewSwipeDistance || d.x() < -st::medviewSwipeDistance)) { - moveToPhoto(d.x() > 0 ? -1 : 1); + if (d.x() * d.x() > d.y() * d.y() && (d.x() > st::mvSwipeDistance || d.x() < -st::mvSwipeDistance)) { + moveToNext(d.x() > 0 ? -1 : 1); } } } @@ -1223,7 +1491,7 @@ bool MediaView::event(QEvent *e) { if (ev->phase() == Qt::ScrollEnd) { if (ev->orientation() == Qt::Horizontal) { if (_accumScroll.x() * _accumScroll.x() > _accumScroll.y() * _accumScroll.y() && _accumScroll.x() != 0) { - moveToPhoto(_accumScroll.x() > 0 ? -1 : 1); + moveToNext(_accumScroll.x() > 0 ? -1 : 1); } _accumScroll = QPoint(); } @@ -1234,12 +1502,10 @@ bool MediaView::event(QEvent *e) { } void MediaView::hide() { + _controlsHideTimer.stop(); + _controlsState = ControlsShown; + a_cOpacity = anim::fvalue(1, 1); QWidget::hide(); - _close.clearState(); - _save.clearState(); - _forward.clearState(); - _delete.clearState(); - _overview.clearState(); } void MediaView::onMenuDestroy(QObject *obj) { @@ -1254,6 +1520,13 @@ void MediaView::receiveMouse() { _receiveMouse = true; } +void MediaView::onDropdown() { + updateDropdown(); + _dropdown.ignoreShow(false); + _dropdown.showStart(); + _dropdown.setFocus(); +} + void MediaView::onCheckActive() { if (App::wnd() && isVisible()) { if (App::wnd()->isActiveWindow() && App::wnd()->hasFocus()) { @@ -1271,11 +1544,24 @@ void MediaView::updateImage() { update(_saveMsg); } -void MediaView::loadPhotosBack() { - if (_loadRequest || _index < 0 || !_photo) return; +void MediaView::findCurrent() { + for (int i = 0, l = _history->_overview[_overview].size(); i < l; ++i) { + if (_history->_overview[_overview].at(i) == _msgid) { + _index = i; + break; + } + } - if (_history && _history->_overviewCount[OverviewPhotos] != 0) { - if (App::main()) App::main()->loadMediaBack(_history->peer, OverviewPhotos); + if (_history->_overviewCount[_overview] < 0) { + loadBack(); + } +} + +void MediaView::loadBack() { + if (_loadRequest || _index < 0 || (_overview == OverviewCount && !_user)) return; + + if (_history && _overview != OverviewCount && _history->_overviewCount[_overview] != 0) { + if (App::main()) App::main()->loadMediaBack(_history->peer, _overview); } else if (_user && _user->photosCount != 0) { int32 limit = (_index < MediaOverviewStartPerPage && _user->photos.size() > MediaOverviewStartPerPage) ? SearchPerPage : MediaOverviewStartPerPage; _loadRequest = MTP::send(MTPphotos_GetUserPhotos(_user->inputUser, MTP_int(_user->photos.size()), MTP_int(0), MTP_int(limit)), rpcDone(&MediaView::userPhotosLoaded, _user)); @@ -1319,101 +1605,102 @@ void MediaView::userPhotosLoaded(UserData *u, const MTPphotos_Photos &photos, mt } void MediaView::updateHeader() { - if (!_photo) { - _header = _doc ? _doc->name : QString(); - if (_header.isEmpty()) _header = lang(lng_mediaview_doc_image); - if (!_overview.isHidden()) _overview.hide(); - return; - } - int32 index = _index, count = 0; if (_history) { - count = _history->_overviewCount[OverviewPhotos] ? _history->_overviewCount[OverviewPhotos] : _history->_overview[OverviewPhotos].size(); - if (index >= 0) index += count - _history->_overview[OverviewPhotos].size(); + if (_overview != OverviewCount) { + count = _history->_overviewCount[_overview] ? _history->_overviewCount[_overview] : _history->_overview[_overview].size(); + if (index >= 0) index += count - _history->_overview[_overview].size(); + } } else if (_user) { count = _user->photosCount ? _user->photosCount : _user->photos.size(); } if (_index >= 0 && _index < count && count > 1) { - _header = lng_mediaview_n_of_count(lt_n, QString::number(index + 1), lt_count, QString::number(count)); - _overview.setText(_header); - if (_history) { - if (_overview.isHidden()) _overview.show(); + if (_doc) { + _headerText = lng_mediaview_file_n_of_count(lt_file, _doc->name.isEmpty() ? lang(lng_mediaview_doc_image) : _doc->name, lt_n, QString::number(index + 1), lt_count, QString::number(count)); } else { - if (!_overview.isHidden()) _overview.hide(); - } - } else if (_user) { - _header = lang(lng_mediaview_profile_photo); - if (!_overview.isHidden()) _overview.hide(); - } else if (_peer) { - _header = lang(lng_mediaview_group_photo); - if (!_overview.isHidden()) _overview.hide(); - } else { - _header = lang(lng_mediaview_single_photo); - if (!_overview.isHidden()) _overview.hide(); - } -} - -void MediaView::updatePolaroid() { - if (_doc) { - _polaroidIn = _polaroidOut = QRect(0, 0, _avail.width(), _avail.height() - st::medviewBottomBar); - int32 minus1 = width() - _delete.x(), minus2 = _overview.x() + st::medviewHeaderFont->m.width(_header) - st::medviewOverview.width; - if (minus2 > minus1) minus1 = minus2; - - int32 dateWidth = st::medviewDateFont->m.width(_dateText), maxWidth = width() - 2 * minus1; - if (_from) { - int32 nameWidth = _fromName.maxWidth(); - if (maxWidth < dateWidth) { - maxWidth = dateWidth; - } - if (nameWidth > maxWidth) { - nameWidth = maxWidth; - } - _nameNav = QRect((_avail.width() - nameWidth) / 2, _avail.y() + _avail.height() - ((st::medviewPolaroid.bottom() + st::medviewBottomBar) / 2) + st::medviewNameTop, nameWidth, st::medviewNameFont->height); - _dateNav = QRect((_avail.width() - dateWidth) / 2, _avail.y() + _avail.height() - ((st::medviewPolaroid.bottom() + st::medviewBottomBar) / 2) + st::medviewDateTop, dateWidth, st::medviewDateFont->height); - } else { - _nameNav = QRect(_avail.x() - 1, _avail.y() - 1, 0, 0); - _dateNav = QRect((_avail.width() - dateWidth) / 2, _avail.y() + _avail.height() - ((st::medviewPolaroid.bottom() + st::medviewBottomBar) / 2) + ((st::medviewNameTop + st::medviewDateTop) / 2), dateWidth, st::medviewDateFont->height); + _headerText = lng_mediaview_n_of_count(lt_n, QString::number(index + 1), lt_count, QString::number(count)); } } else { - int32 pminw = qMin(st::medviewPolaroidMin.width(), int(_avail.width() - 2 * st::medviewNavBarWidth)); - - int32 pl = _x - st::medviewPolaroid.left(), plw = st::medviewPolaroid.left(); - if (pl < st::medviewNavBarWidth) pl = st::medviewNavBarWidth; - int32 pr = _x + _w + st::medviewPolaroid.right(), prw = st::medviewPolaroid.right(); - if (pr > _avail.width() - st::medviewNavBarWidth) pr = _avail.width() - st::medviewNavBarWidth; - - if (_w + st::medviewPolaroid.left() + st::medviewPolaroid.right() < pminw) { - pl = (_avail.width() - pminw) / 2; - plw = _x - pl; - pr = pl + pminw; - prw = pr - (_x + _w); + if (_doc) { + _headerText = _doc->name.isEmpty() ? lang(lng_mediaview_doc_image) : _doc->name; + } else if (_user) { + _headerText = lang(lng_mediaview_profile_photo); + } else if (_peer) { + _headerText = lang(lng_mediaview_group_photo); + } else { + _headerText = lang(lng_mediaview_single_photo); } - - int32 pminh = qMin(st::medviewPolaroidMin.height(), int(_avail.height() - st::medviewBottomBar)); - - int32 pt = _y - st::medviewPolaroid.top(), pth = st::medviewPolaroid.top(); - if (pt < 0) pt = 0; - int32 pb = _y + _h + st::medviewPolaroid.bottom(), pbh = st::medviewPolaroid.bottom(); - if (pb > _avail.height() - st::medviewBottomBar) pb = _avail.height() - st::medviewBottomBar; - - if (_h + st::medviewPolaroid.top() + st::medviewPolaroid.bottom() < pminh) { - pt = (_avail.height() - st::medviewBottomBar - pminh) / 2; - pth = _y - pt; - pb = pt + pminh; - pbh = pb - (_y + _h); - } - - _polaroidOut = QRect(pl, pt, pr - pl, pb - pt); - _polaroidIn = QRect(pl + plw, pt + pth, pr - pl - prw - plw, pb - pt - pbh - pth); - - int32 nameWidth = _fromName.maxWidth(), maxWidth = _polaroidOut.width() - st::medviewPolaroid.left() - st::medviewPolaroid.right(), dateWidth = st::medviewDateFont->m.width(_dateText); - if (nameWidth > maxWidth) { - nameWidth = maxWidth; - } - _nameNav = QRect(_polaroidIn.x() + ((_polaroidIn.width() - nameWidth) / 2), _polaroidOut.y() + _polaroidOut.height() - st::medviewPolaroid.bottom() + st::medviewNameTop, nameWidth, st::medviewNameFont->height); - _dateNav = QRect(_polaroidIn.x() + ((_polaroidIn.width() - dateWidth) / 2), _polaroidOut.y() + _polaroidOut.height() - st::medviewPolaroid.bottom() + st::medviewDateTop, dateWidth, st::medviewDateFont->height); } + _headerHasLink = (_overview != OverviewCount) && _history; + int32 hwidth = st::mvThickFont->m.width(_headerText); + if (hwidth > width() / 3) { + hwidth = width() / 3; + _headerText = st::mvThickFont->m.elidedText(_headerText, Qt::ElideMiddle, hwidth); + } + _headerNav = rtlrect(st::mvTextLeft, height() - st::mvHeaderTop, hwidth, st::mvThickFont->height, width()); } +// +//void MediaView::updatePolaroid() { +// if (_doc) { +// _polaroidIn = _polaroidOut = QRect(0, 0, _avail.width(), _avail.height() - st::medviewBottomBar); +// int32 minus1 = width() - _delete.x(), minus2 = _overview.x() + st::medviewHeaderFont->m.width(_header) - st::medviewOverview.width; +// if (minus2 > minus1) minus1 = minus2; +// +// int32 dateWidth = st::medviewDateFont->m.width(_dateText), maxWidth = width() - 2 * minus1; +// if (_from) { +// int32 nameWidth = _fromName.maxWidth(); +// if (maxWidth < dateWidth) { +// maxWidth = dateWidth; +// } +// if (nameWidth > maxWidth) { +// nameWidth = maxWidth; +// } +// _nameNav = QRect((_avail.width() - nameWidth) / 2, _avail.y() + _avail.height() - ((st::medviewPolaroid.bottom() + st::medviewBottomBar) / 2) + st::medviewNameTop, nameWidth, st::medviewNameFont->height); +// _dateNav = QRect((_avail.width() - dateWidth) / 2, _avail.y() + _avail.height() - ((st::medviewPolaroid.bottom() + st::medviewBottomBar) / 2) + st::medviewDateTop, dateWidth, st::medviewDateFont->height); +// } else { +// _nameNav = QRect(_avail.x() - 1, _avail.y() - 1, 0, 0); +// _dateNav = QRect((_avail.width() - dateWidth) / 2, _avail.y() + _avail.height() - ((st::medviewPolaroid.bottom() + st::medviewBottomBar) / 2) + ((st::medviewNameTop + st::medviewDateTop) / 2), dateWidth, st::medviewDateFont->height); +// } +// } else { +// int32 pminw = qMin(st::medviewPolaroidMin.width(), int(_avail.width() - 2 * st::medviewNavBarWidth)); +// +// int32 pl = _x - st::medviewPolaroid.left(), plw = st::medviewPolaroid.left(); +// if (pl < st::medviewNavBarWidth) pl = st::medviewNavBarWidth; +// int32 pr = _x + _w + st::medviewPolaroid.right(), prw = st::medviewPolaroid.right(); +// if (pr > _avail.width() - st::medviewNavBarWidth) pr = _avail.width() - st::medviewNavBarWidth; +// +// if (_w + st::medviewPolaroid.left() + st::medviewPolaroid.right() < pminw) { +// pl = (_avail.width() - pminw) / 2; +// plw = _x - pl; +// pr = pl + pminw; +// prw = pr - (_x + _w); +// } +// +// int32 pminh = qMin(st::medviewPolaroidMin.height(), int(_avail.height() - st::medviewBottomBar)); +// +// int32 pt = _y - st::medviewPolaroid.top(), pth = st::medviewPolaroid.top(); +// if (pt < 0) pt = 0; +// int32 pb = _y + _h + st::medviewPolaroid.bottom(), pbh = st::medviewPolaroid.bottom(); +// if (pb > _avail.height() - st::medviewBottomBar) pb = _avail.height() - st::medviewBottomBar; +// +// if (_h + st::medviewPolaroid.top() + st::medviewPolaroid.bottom() < pminh) { +// pt = (_avail.height() - st::medviewBottomBar - pminh) / 2; +// pth = _y - pt; +// pb = pt + pminh; +// pbh = pb - (_y + _h); +// } +// +// _polaroidOut = QRect(pl, pt, pr - pl, pb - pt); +// _polaroidIn = QRect(pl + plw, pt + pth, pr - pl - prw - plw, pb - pt - pbh - pth); +// +// int32 nameWidth = _fromName.maxWidth(), maxWidth = _polaroidOut.width() - st::medviewPolaroid.left() - st::medviewPolaroid.right(), dateWidth = st::medviewDateFont->m.width(_dateText); +// if (nameWidth > maxWidth) { +// nameWidth = maxWidth; +// } +// _nameNav = QRect(_polaroidIn.x() + ((_polaroidIn.width() - nameWidth) / 2), _polaroidOut.y() + _polaroidOut.height() - st::medviewPolaroid.bottom() + st::medviewNameTop, nameWidth, st::medviewNameFont->height); +// _dateNav = QRect(_polaroidIn.x() + ((_polaroidIn.width() - dateWidth) / 2), _polaroidOut.y() + _polaroidOut.height() - st::medviewPolaroid.bottom() + st::medviewDateTop, dateWidth, st::medviewDateFont->height); +// } +//} QColor MediaView::overColor(const QColor &a, float64 ca, const QColor &b, float64 cb) { QColor res; diff --git a/Telegram/SourceFiles/mediaview.h b/Telegram/SourceFiles/mediaview.h index 41ac66f48..79a02a72e 100644 --- a/Telegram/SourceFiles/mediaview.h +++ b/Telegram/SourceFiles/mediaview.h @@ -17,6 +17,8 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org */ #pragma once +#include "dropdown.h" + class MediaView : public TWidget, public RPCSender, public Animated { Q_OBJECT @@ -41,24 +43,38 @@ public: void showPhoto(PhotoData *photo, HistoryItem *context); void showPhoto(PhotoData *photo, PeerData *context); - void showDocument(DocumentData *doc, QPixmap pix, HistoryItem *context); + void showDocument(DocumentData *doc, HistoryItem *context); void moveToScreen(); - void moveToPhoto(int32 delta); - void preloadPhotos(int32 delta); + void moveToNext(int32 delta); + void preloadData(int32 delta); + + void leaveToChildEvent(QEvent *e) { // e -- from enterEvent() of child TWidget + updateOverState(OverNone); + } + void enterFromChildEvent(QEvent *e) { // e -- from leaveEvent() of child TWidget + updateOver(mapFromGlobal(QCursor::pos())); + } void mediaOverviewUpdated(PeerData *peer); void changingMsgId(HistoryItem *row, MsgId newId); void updateControls(); + void updateDropdown(); bool animStep(float64 dt); void showSaveMsgFile(); + void close(); + + void activateControls(); ~MediaView(); public slots: - void onClose(); + void onHideControls(bool force = false); + void onDropdownHiding(); + + void onToMessage(); void onSave(); void onDownload(); void onShowInFolder(); @@ -69,6 +85,8 @@ public slots: void onMenuDestroy(QObject *obj); void receiveMouse(); + void onDropdown(); + void onCheckActive(); void onTouchTimer(); @@ -76,29 +94,31 @@ public slots: private: - void showPhoto(PhotoData *photo); - void loadPhotosBack(); + void displayPhoto(PhotoData *photo); + void displayDocument(DocumentData *doc, HistoryItem *item); + void findCurrent(); + void loadBack(); void photosLoaded(History *h, const MTPmessages_Messages &msgs, mtpRequestId req); void userPhotosLoaded(UserData *u, const MTPphotos_Photos &photos, mtpRequestId req); + void filesLoaded(History *h, const MTPmessages_Messages &msgs, mtpRequestId req); void updateHeader(); - void updatePolaroid(); void snapXY(); QBrush _transparentBrush; - QTimer _timer; PhotoData *_photo; DocumentData *_doc; - QRect _avail, _leftNav, _rightNav, _bottomBar, _nameNav, _dateNav, _polaroidOut, _polaroidIn; - int32 _availBottom; - bool _leftNavVisible, _rightNavVisible; + MediaOverviewType _overview; + QRect _closeNav, _leftNav, _rightNav, _headerNav, _nameNav, _dateNav, _saveNav, _moreNav; + bool _leftNavVisible, _rightNavVisible, _saveVisible, _headerHasLink; QString _dateText; + QString _headerText; uint64 _animStarted; - int32 _maxWidth, _maxHeight, _width, _x, _y, _w, _h, _xStart, _yStart; + int32 _width, _x, _y, _w, _h, _xStart, _yStart; int32 _zoom; // < 0 - out, 0 - none, > 0 - in float64 _zoomToScreen; // for documents QPoint _mStart; @@ -107,14 +127,24 @@ private: QPixmap _current; int32 _full; // -1 - thumb, 0 - medium, 1 - full - History *_history; // if conversation photos overview - PeerData *_peer; - UserData *_user, *_from; // if user profile photos overview - Text _fromName; - int32 _index; // index in photos array, -1 if just photo - MsgId _msgid; // msgId of current photo + style::sprite _docIcon; + QString _docName, _docSize; + int32 _docNameWidth, _docSizeWidth; + QRect _docRect; + int32 _docThumbx, _docThumby, _docThumbw; + uint64 _docRadialFirst, _docRadialStart, _docRadialLast; + QPen _docRadialPen; + anim::fvalue a_docRadial, a_docRadialStart; - QString _header; + History *_history; // if conversation photos or files overview + PeerData *_peer; + UserData *_user; // if user profile photos overview + + UserData *_from; + Text _fromName; + + int32 _index; // index in photos or files array, -1 if just photo + MsgId _msgid; // msgId of current photo or file mtpRequestId _loadRequest; @@ -122,14 +152,33 @@ private: OverNone, OverLeftNav, OverRightNav, + OverClose, + OverHeader, OverName, - OverDate + OverDate, + OverSave, + OverMore, }; OverState _over, _down; - QPoint _lastAction; + QPoint _lastAction, _lastMouseMovePos; + bool _ignoringDropdown; + + enum ControlsState { + ControlsShowing, + ControlsShown, + ControlsHiding, + ControlsHidden, + }; + ControlsState _controlsState; + uint64 _controlsAnimStarted; + QTimer _controlsHideTimer; + anim::fvalue a_cOpacity; - IconedButton _close, _save, _forward, _delete, _overview; ContextMenu *_menu; + Dropdown _dropdown; + IconedButton *_btnToMessage, *_btnShowInFolder, *_btnSaveAs, *_btnCopy, *_btnForward, *_btnDelete, *_btnViewAll; + QList _btns; + bool _receiveMouse; bool _touchPress, _touchMove, _touchRightButton; diff --git a/Telegram/SourceFiles/pspecific_wnd.cpp b/Telegram/SourceFiles/pspecific_wnd.cpp index 1ec5d4231..320b3eaa5 100644 --- a/Telegram/SourceFiles/pspecific_wnd.cpp +++ b/Telegram/SourceFiles/pspecific_wnd.cpp @@ -159,6 +159,7 @@ namespace { QPainter p(&cornersImage); p.drawPixmap(QPoint(0, 0), App::sprite(), topLeft); } + if (rtl()) cornersImage = cornersImage.mirrored(true, false); uchar *bits = cornersImage.bits(); if (bits) { for ( diff --git a/Telegram/SourceFiles/structs.cpp b/Telegram/SourceFiles/structs.cpp index 0d19d0c5f..f797f9336 100644 --- a/Telegram/SourceFiles/structs.cpp +++ b/Telegram/SourceFiles/structs.cpp @@ -470,7 +470,7 @@ void DocumentOpenLink::onClick(Qt::MouseButton button) const { if (reader.supportsAnimation() && reader.imageCount() > 1 && App::hoveredLinkItem()) { startGif(App::hoveredLinkItem(), already); } else { - App::wnd()->showDocument(data, QPixmap::fromImage(App::readImage(already, 0, false), Qt::ColorOnly), App::hoveredLinkItem()); + App::wnd()->showDocument(data, App::hoveredLinkItem()); } } else { psOpenFile(already); diff --git a/Telegram/SourceFiles/window.cpp b/Telegram/SourceFiles/window.cpp index 21450c571..8c0724372 100644 --- a/Telegram/SourceFiles/window.cpp +++ b/Telegram/SourceFiles/window.cpp @@ -739,9 +739,9 @@ void Window::showPhoto(PhotoData *photo, PeerData *peer) { _mediaView->setFocus(); } -void Window::showDocument(DocumentData *doc, QPixmap pix, HistoryItem *item) { +void Window::showDocument(DocumentData *doc, HistoryItem *item) { layerHidden(); - _mediaView->showDocument(doc, pix, item); + _mediaView->showDocument(doc, item); _mediaView->activateWindow(); _mediaView->setFocus(); } diff --git a/Telegram/SourceFiles/window.h b/Telegram/SourceFiles/window.h index 668a433fb..595379c44 100644 --- a/Telegram/SourceFiles/window.h +++ b/Telegram/SourceFiles/window.h @@ -176,7 +176,7 @@ public: void showPhoto(const PhotoLink *lnk, HistoryItem *item = 0); void showPhoto(PhotoData *photo, HistoryItem *item); void showPhoto(PhotoData *photo, PeerData *item); - void showDocument(DocumentData *doc, QPixmap pix, HistoryItem *item); + void showDocument(DocumentData *doc, HistoryItem *item); void showLayer(LayeredWidget *w, bool fast = false); void replaceLayer(LayeredWidget *w); void hideLayer(bool fast = false);