From d26afe1b64e13bdf8562c58b61400b13ae712a4e Mon Sep 17 00:00:00 2001 From: John Preston <johnprestonmail@gmail.com> Date: Mon, 11 Aug 2014 13:03:45 +0400 Subject: [PATCH] new photo viewer done, testing, added compressed checkbox in send-from-clipboard --- Telegram/Resources/lang.txt | 10 + Telegram/Resources/style.txt | 44 +- Telegram/SourceFiles/art/sprite.png | Bin 30461 -> 24111 bytes Telegram/SourceFiles/art/sprite_200x.png | Bin 63921 -> 52514 bytes Telegram/SourceFiles/boxes/photosendbox.cpp | 13 +- Telegram/SourceFiles/boxes/photosendbox.h | 1 + Telegram/SourceFiles/config.h | 2 + Telegram/SourceFiles/gui/animation.h | 9 +- Telegram/SourceFiles/gui/filedialog.cpp | 26 +- Telegram/SourceFiles/gui/filedialog.h | 2 +- Telegram/SourceFiles/gui/images.cpp | 86 +++ Telegram/SourceFiles/gui/images.h | 2 + Telegram/SourceFiles/gui/text.cpp | 4 + Telegram/SourceFiles/gui/text.h | 2 + Telegram/SourceFiles/history.cpp | 103 ++- Telegram/SourceFiles/history.h | 48 +- Telegram/SourceFiles/historywidget.cpp | 12 + Telegram/SourceFiles/historywidget.h | 2 + Telegram/SourceFiles/layerwidget.cpp | 325 -------- Telegram/SourceFiles/layerwidget.h | 51 -- Telegram/SourceFiles/localimageloader.cpp | 18 +- Telegram/SourceFiles/mainwidget.cpp | 47 +- Telegram/SourceFiles/mainwidget.h | 1 + Telegram/SourceFiles/mediaview.cpp | 783 +++++++++++++++++++- Telegram/SourceFiles/mediaview.h | 86 ++- Telegram/SourceFiles/profilewidget.cpp | 6 +- Telegram/SourceFiles/settingswidget.cpp | 6 +- Telegram/SourceFiles/window.cpp | 63 +- Telegram/SourceFiles/window.h | 13 +- 29 files changed, 1274 insertions(+), 491 deletions(-) diff --git a/Telegram/Resources/lang.txt b/Telegram/Resources/lang.txt index ef7bbf718..c4bf91c20 100644 --- a/Telegram/Resources/lang.txt +++ b/Telegram/Resources/lang.txt @@ -341,6 +341,7 @@ lng_context_forward_selected: "Forward Selected"; lng_context_delete_selected: "Delete Selected"; lng_context_clear_selection: "Clear Selection"; lng_really_send_image: "Do you want to send this image?"; +lng_send_image_compressed: "Send compressed image"; lng_forward_choose: "Choose recipient..."; lng_forward_confirm: "Forward to {recipient}?"; @@ -398,6 +399,15 @@ lng_search_no_results: "No messages found"; lng_search_one_result: "Found {count} message"; lng_search_n_results: "Found {count} messages"; +lng_mediaview_close: "Close"; +lng_mediaview_save: "Save as"; +lng_mediaview_forward: "Forward"; +lng_mediaview_delete: "Delete"; +lng_mediaview_single_photo: "Single Photo"; +lng_mediaview_group_photo: "Group Photo"; +lng_mediaview_profile_photo: "Profile Photo"; +lng_mediaview_n_of_count: "{n} of {count}"; + // Mac specific lng_mac_choose_app: "Choose Application"; diff --git a/Telegram/Resources/style.txt b/Telegram/Resources/style.txt index 1083e0e97..0e8799d5a 100644 --- a/Telegram/Resources/style.txt +++ b/Telegram/Resources/style.txt @@ -975,6 +975,8 @@ boxBG: white;//rgb(228, 233, 240); boxGrayTitle: #777; confirmWidth: 364px; +confirmMaxHeight: 320px; +confirmCompressedSkip: 10px; addContactWidth: 364px; addContactPadding: margins(18px, 24px, 18px, 24px); addContactDelta: 14px; @@ -1439,11 +1441,45 @@ emojiPanDuration: 200; emojiPanHover: #f0f0f0; emojiPanRound: 2px; -medviewNavBarWidth: 200px; -medviewTopSkip: 50px; -medviewBottomSkip: 50px; -medviewLightOpacity: 0.75; +medviewNavBarWidth: 120px; +medviewTopSkip: 66px; +medviewBottomSkip: 66px; +medviewMainWidth: 600px; +medviewLightOpacity: 0.7; +medviewDarkOpacity: 0.8; +medviewLightNav: 0.5; +medviewHeaderFont: font(semibold 18px); +medviewDateFont: font(fsize); +medviewNameTop: 3px; +medviewDateTop: 25px; +medviewHeaderColor: #ffffffc0; +medviewNameColor: medviewHeaderColor; +medviewNameOverColor: #fff; +medviewDarkNav: 1; medviewMinWidth: 600; +medviewLeft: sprite(0px, 340px, 22px, 40px); +medviewRight: sprite(22px, 340px, 22px, 40px); +medviewDeltaFromLastAction: 5px; +medviewSwipeDistance: 80px; +medviewButton: flatButton(btnDefFlat) { + color: #ffffff80; + overColor: #fff; + downColor: #fff; + + bgColor: #0000; + overBgColor: #00000055; + downBgColor: #00000055; + + width: 100px; + height: 46px; + + textTop: 13px; + overTextTop: 13px; + downTextTop: 14px; + + font: font(16px); + overFont: font(16px); +} // Mac specific diff --git a/Telegram/SourceFiles/art/sprite.png b/Telegram/SourceFiles/art/sprite.png index d628343ba2f044277ac5b07fa2fa7b515d987c38..dd716c3f6862d4d7024537487dad0cdaa70de165 100644 GIT binary patch literal 24111 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�?$bWH9ki& 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 Mn^+rH8G8Klf6!h}Bme*a literal 30461 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 diff --git a/Telegram/SourceFiles/art/sprite_200x.png b/Telegram/SourceFiles/art/sprite_200x.png index 2ec674003bb06d1a00aa8ce7492d419d8bdeaade..cac720556ddaf9a407903581749f63d0e757ca99 100644 GIT binary patch literal 52514 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¬p50?pp{32BZ8xLrk3GJW17hFA{6n1w|RC=?pf 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 OhG)&r6zW}w{C@y%yz^54 literal 63921 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 A^#A|> diff --git a/Telegram/SourceFiles/boxes/photosendbox.cpp b/Telegram/SourceFiles/boxes/photosendbox.cpp index 405e28068..9f148f5f5 100644 --- a/Telegram/SourceFiles/boxes/photosendbox.cpp +++ b/Telegram/SourceFiles/boxes/photosendbox.cpp @@ -24,6 +24,7 @@ Copyright (c) 2014 John Preston, https://tdesktop.com #include "photosendbox.h" PhotoSendBox::PhotoSendBox(const ReadyLocalMedia &img) : _img(img), + _compressed(this, lang(lng_send_image_compressed), true), _sendButton(this, lang(lng_send_button), st::btnSelectDone), _cancelButton(this, lang(lng_cancel), st::btnSelectCancel), a_opacity(0, 1) { @@ -48,7 +49,7 @@ PhotoSendBox::PhotoSendBox(const ReadyLocalMedia &img) : _img(img), if (_thumb.width() < _thumbw) { _thumbw = (_thumb.width() > 20) ? _thumb.width() : 20; } - int32 maxthumbh = qRound(1.5 * _thumbw); + int32 maxthumbh = qMin(qRound(1.5 * _thumbw), int(st::confirmMaxHeight)); _thumbh = qRound(th * float64(_thumbw) / tw); if (_thumbh > maxthumbh) { _thumbw = qRound(_thumbw * float64(maxthumbh) / _thumbh); @@ -57,7 +58,7 @@ PhotoSendBox::PhotoSendBox(const ReadyLocalMedia &img) : _img(img), _thumbw = 10; } } - _height = _thumbh + st::boxPadding.top() + st::boxFont->height + st::boxPadding.bottom() + st::boxPadding.bottom() + _sendButton.height(); + _height = _thumbh + st::boxPadding.top() + st::boxFont->height + st::boxPadding.bottom() + st::boxPadding.bottom() + _compressed.height() + _sendButton.height(); _thumb = QPixmap::fromImage(_thumb.toImage().scaled(_thumbw, _thumbh, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); @@ -77,6 +78,7 @@ void PhotoSendBox::parentResized() { setGeometry((s.width() - _width) / 2, (s.height() - _height) / 2, _width, _height); _sendButton.move(_width - _sendButton.width(), _height - _sendButton.height()); _cancelButton.move(0, _height - _cancelButton.height()); + _compressed.move((width() - _compressed.width()) / 2, _height - _cancelButton.height() - _compressed.height() - st::confirmCompressedSkip); update(); } @@ -107,11 +109,16 @@ void PhotoSendBox::animStep(float64 ms) { } _sendButton.setOpacity(a_opacity.current()); _cancelButton.setOpacity(a_opacity.current()); + _compressed.setOpacity(a_opacity.current()); update(); } void PhotoSendBox::onSend() { - if (App::main()) App::main()->confirmSendImage(_img); + if (_compressed.checked()) { + if (App::main()) App::main()->confirmSendImage(_img); + } else { + if (App::main()) App::main()->confirmSendImageUncompressed(); + } emit closed(); } diff --git a/Telegram/SourceFiles/boxes/photosendbox.h b/Telegram/SourceFiles/boxes/photosendbox.h index a3caadea5..3ec2f504e 100644 --- a/Telegram/SourceFiles/boxes/photosendbox.h +++ b/Telegram/SourceFiles/boxes/photosendbox.h @@ -42,6 +42,7 @@ private: ReadyLocalMedia _img; int32 _width, _height, _thumbw, _thumbh; + FlatCheckbox _compressed; FlatButton _sendButton, _cancelButton; QPixmap _thumb; diff --git a/Telegram/SourceFiles/config.h b/Telegram/SourceFiles/config.h index 15e5fc232..52a987f75 100644 --- a/Telegram/SourceFiles/config.h +++ b/Telegram/SourceFiles/config.h @@ -66,6 +66,8 @@ enum { AutoSearchTimeout = 900, // 0.9 secs SearchPerPage = 50, + MediaOverviewStartPerPage = 5, + MediaOverviewPreloadCount = 4, }; #ifdef Q_OS_WIN diff --git a/Telegram/SourceFiles/gui/animation.h b/Telegram/SourceFiles/gui/animation.h index e9892461d..d8bc532f8 100644 --- a/Telegram/SourceFiles/gui/animation.h +++ b/Telegram/SourceFiles/gui/animation.h @@ -58,8 +58,9 @@ namespace anim { const float64 ¤t() const { return _cur; } - void update(const float64 &dt, transition func) { + fvalue &update(const float64 &dt, transition func) { _cur = _from + (*func)(_delta, dt); + return *this; } void finish() { _cur = _from + _delta; @@ -92,8 +93,9 @@ namespace anim { int32 current() const { return _cur; } - void update(const float64 &dt, transition func) { + ivalue &update(const float64 &dt, transition func) { _cur = qRound(_from + (*func)(_delta, dt)); + return *this; } void finish() { _cur = qRound(_from + _delta); @@ -143,11 +145,12 @@ namespace anim { const QColor ¤t() const { return _cur; } - void update(const float64 &dt, transition func) { + cvalue &update(const float64 &dt, transition func) { _cur.setRedF(_from_r + (*func)(_delta_r, dt)); _cur.setGreenF(_from_g + (*func)(_delta_g, dt)); _cur.setBlueF(_from_b + (*func)(_delta_b, dt)); _cur.setAlphaF(_from_a + (*func)(_delta_a, dt)); + return *this; } void finish() { _cur.setRedF(_from_r + _delta_r); diff --git a/Telegram/SourceFiles/gui/filedialog.cpp b/Telegram/SourceFiles/gui/filedialog.cpp index 41552d0aa..31a0964af 100644 --- a/Telegram/SourceFiles/gui/filedialog.cpp +++ b/Telegram/SourceFiles/gui/filedialog.cpp @@ -68,14 +68,14 @@ bool _filedialogGetFiles(QStringList &files, QByteArray &remoteContent, const QS remoteContent = QByteArray(); QString file; if (multipleFiles >= 0) { - files = QFileDialog::getOpenFileNames(App::wnd(), caption, startFile, filter); + files = QFileDialog::getOpenFileNames(App::wnd() ? App::wnd()->filedialogParent() : 0, caption, startFile, filter); return !files.isEmpty(); } else if (multipleFiles < -1) { - file = QFileDialog::getExistingDirectory(App::wnd(), caption); + file = QFileDialog::getExistingDirectory(App::wnd() ? App::wnd()->filedialogParent() : 0, caption); } else if (multipleFiles < 0) { - file = QFileDialog::getSaveFileName(App::wnd(), caption, startFile, filter); + file = QFileDialog::getSaveFileName(App::wnd() ? App::wnd()->filedialogParent() : 0, caption, startFile, filter); } else { - file = QFileDialog::getOpenFileName(App::wnd(), caption, startFile, filter); + file = QFileDialog::getOpenFileName(App::wnd() ? App::wnd()->filedialogParent() : 0, caption, startFile, filter); } if (file.isEmpty()) { files = QStringList(); @@ -89,7 +89,7 @@ bool _filedialogGetFiles(QStringList &files, QByteArray &remoteContent, const QS filedialogInit(); // hack for fast non-native dialog create - QFileDialog dialog(App::wnd(), caption, cDialogHelperPathFinal(), filter); + QFileDialog dialog(App::wnd() ? App::wnd()->filedialogParent() : 0, caption, cDialogHelperPathFinal(), filter); dialog.setModal(true); if (multipleFiles >= 0) { // open file or files @@ -171,7 +171,7 @@ bool filedialogGetDir(QString &dir, const QString &caption) { return result; } -QString filedialogDefaultName(const QString &prefix, const QString &extension, const QString &path) { +QString filedialogDefaultName(const QString &prefix, const QString &extension, const QString &path, bool skipExistance) { filedialogInit(); time_t t = time(NULL); @@ -180,11 +180,17 @@ QString filedialogDefaultName(const QString &prefix, const QString &extension, c QChar zero('0'); - QDir dir(path.isEmpty() ? cDialogLastPath() : path); + QString name; QString base = prefix + QString("_%1-%2-%3_%4-%5-%6").arg(tm.tm_year + 1900).arg(tm.tm_mon + 1, 2, 10, zero).arg(tm.tm_mday, 2, 10, zero).arg(tm.tm_hour, 2, 10, zero).arg(tm.tm_min, 2, 10, zero).arg(tm.tm_sec, 2, 10, zero); - QString nameBase = dir.absolutePath() + '/' + base, name = nameBase + extension; - for (int i = 0; QFileInfo(name).exists(); ++i) { - name = nameBase + QString(" (%1)").arg(i + 2) + extension; + if (skipExistance) { + name = base + extension; + } else { + QDir dir(path.isEmpty() ? cDialogLastPath() : path); + QString nameBase = dir.absolutePath() + '/' + base; + name = nameBase + extension; + for (int i = 0; QFileInfo(name).exists(); ++i) { + name = nameBase + QString(" (%1)").arg(i + 2) + extension; + } } return name; } diff --git a/Telegram/SourceFiles/gui/filedialog.h b/Telegram/SourceFiles/gui/filedialog.h index 669826d62..9b03fd075 100644 --- a/Telegram/SourceFiles/gui/filedialog.h +++ b/Telegram/SourceFiles/gui/filedialog.h @@ -23,4 +23,4 @@ bool filedialogGetOpenFile(QString &file, QByteArray &remoteContent, const QStri bool filedialogGetSaveFile(QString &file, const QString &caption, const QString &filter, const QString &startName); bool filedialogGetDir(QString &dir, const QString &caption); -QString filedialogDefaultName(const QString &prefix, const QString &extension, const QString &path = QString()); +QString filedialogDefaultName(const QString &prefix, const QString &extension, const QString &path = QString(), bool skipExistance = false); diff --git a/Telegram/SourceFiles/gui/images.cpp b/Telegram/SourceFiles/gui/images.cpp index b05198e4b..3213084ac 100644 --- a/Telegram/SourceFiles/gui/images.cpp +++ b/Telegram/SourceFiles/gui/images.cpp @@ -78,6 +78,92 @@ const QPixmap &Image::pix(int32 w, int32 h) const { return i.value(); } +const QPixmap &Image::pixBlurred(int32 w, int32 h) const { + restore(); + checkload(); + + if (w <= 0 || !width() || !height()) { + w = width() * cIntRetinaFactor(); + } else if (cRetina()) { + w *= cIntRetinaFactor(); + h *= cIntRetinaFactor(); + } + uint64 k = 0x8000000000000000L | (uint64(w) << 32) | uint64(h); + Sizes::const_iterator i = _sizesCache.constFind(k); + if (i == _sizesCache.cend()) { + QPixmap p(pixBlurredNoCache(w, h)); + if (cRetina()) p.setDevicePixelRatio(cRetinaFactor()); + i = _sizesCache.insert(k, p); + if (!p.isNull()) { + globalAquiredSize += int64(p.width()) * p.height() * 4; + } + } + return i.value(); +} + +QPixmap Image::pixBlurredNoCache(int32 w, int32 h) const { + return pixNoCache(w, h); + restore(); + loaded(); + + const QPixmap &p(pixData()); + if (p.isNull()) return blank()->pix(); + + QImage img; + if (h <= 0) { + img = p.toImage().scaledToWidth(w, Qt::SmoothTransformation); + } else { + img = p.toImage().scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + } + QImage::Format fmt = img.format(); + if (fmt != QImage::Format_RGB32 && fmt != QImage::Format_ARGB32 && fmt != QImage::Format_ARGB32_Premultiplied) { + QImage tmp(img.width(), img.height(), QImage::Format_ARGB32); + { + QPainter p(&tmp); + p.drawImage(0, 0, img); + } + img = tmp; + } + QImage fromimg = img; + + uchar *bits = img.bits(); + const uchar *from = fromimg.bits(); + if (bits && from) { + int width = img.width(), height = img.height(); + for (int i = 0; i < width; ++i) { + for (int j = 0; j < height; ++j) { + uint32 a = 0, b = 0, c = 0; + for (int index = i - 32; index < i + 32; ++index) { + int fullindex = 4 * (j * width + ((index < 0) ? 0 : (index >= width ? (width - 1) : index))), coef = 4; + a += from[fullindex + 1] * coef; + b += from[fullindex + 2] * coef; + c += from[fullindex + 3] * coef; + } + int fullindex = 4 * (j * width + i); + bits[fullindex + 1] = uchar(a >> 8); + bits[fullindex + 2] = uchar(b >> 8); + bits[fullindex + 3] = uchar(c >> 8); + } + } + for (int i = 0; i < width; ++i) { + for (int j = 0; j < height; ++j) { + uint32 a = 0, b = 0, c = 0; + for (int index = j - 32; index < j + 32; ++index) { + int fullindex = 4 * (((index < 0) ? 0 : (index >= height ? (height - 1) : index)) * width + i), coef = 4; + a += from[fullindex + 1] * coef; + b += from[fullindex + 2] * coef; + c += from[fullindex + 3] * coef; + } + int fullindex = 4 * (j * width + i); + bits[fullindex + 1] = uchar(a >> 8); + bits[fullindex + 2] = uchar(b >> 8); + bits[fullindex + 3] = uchar(c >> 8); + } + } + } + return QPixmap::fromImage(img); +} + QPixmap Image::pixNoCache(int32 w, int32 h, bool smooth) const { restore(); loaded(); diff --git a/Telegram/SourceFiles/gui/images.h b/Telegram/SourceFiles/gui/images.h index db99a71a1..ed23b9ea5 100644 --- a/Telegram/SourceFiles/gui/images.h +++ b/Telegram/SourceFiles/gui/images.h @@ -28,7 +28,9 @@ public: return true; } const QPixmap &pix(int32 w = 0, int32 h = 0) const; + const QPixmap &pixBlurred(int32 w = 0, int32 h = 0) const; QPixmap pixNoCache(int32 w = 0, int32 h = 0, bool smooth = false) const; + QPixmap pixBlurredNoCache(int32 w, int32 h = 0) const; virtual int32 width() const = 0; virtual int32 height() const = 0; diff --git a/Telegram/SourceFiles/gui/text.cpp b/Telegram/SourceFiles/gui/text.cpp index c221e8362..852a959a7 100644 --- a/Telegram/SourceFiles/gui/text.cpp +++ b/Telegram/SourceFiles/gui/text.cpp @@ -2642,6 +2642,10 @@ int32 Text::countHeight(int32 w) const { return result; } +void Text::replaceFont(style::font f) { + _font = f; +} + void Text::draw(QPainter &painter, int32 left, int32 top, int32 w, style::align align, int32 yFrom, int32 yTo, uint16 selectedFrom, uint16 selectedTo) const { // painter.fillRect(QRect(left, top, w, countHeight(w)), QColor(0, 0, 0, 32)); // debug TextPainter p(&painter, this); diff --git a/Telegram/SourceFiles/gui/text.h b/Telegram/SourceFiles/gui/text.h index d0d1c92f9..a404f8e2a 100644 --- a/Telegram/SourceFiles/gui/text.h +++ b/Telegram/SourceFiles/gui/text.h @@ -373,6 +373,8 @@ public: return _minHeight; } + void replaceFont(style::font f); // does not recount anything, use at your own risk! + void draw(QPainter &p, int32 left, int32 top, int32 width, style::align align = style::al_left, int32 yFrom = 0, int32 yTo = -1, uint16 selectedFrom = 0, uint16 selectedTo = 0) const; void drawElided(QPainter &p, int32 left, int32 top, int32 width, int32 lines = 1, style::align align = style::al_left, int32 yFrom = 0, int32 yTo = -1) const; diff --git a/Telegram/SourceFiles/history.cpp b/Telegram/SourceFiles/history.cpp index b40705a05..8909dbf25 100644 --- a/Telegram/SourceFiles/history.cpp +++ b/Telegram/SourceFiles/history.cpp @@ -223,7 +223,9 @@ void ChatData::setPhoto(const MTPChatPhoto &p, const PhotoId &phId) { } void PhotoLink::onClick(Qt::MouseButton button) const { - if (button == Qt::LeftButton) App::wnd()->showPhoto(this, App::hoveredLinkItem()); + if (button == Qt::LeftButton) { + App::wnd()->showPhoto(this, App::hoveredLinkItem()); + } } QString saveFileName(const QString &title, const QString &filter, const QString &prefix, QString name, bool savingAs, const QDir &dir = QDir()) { @@ -657,6 +659,7 @@ History::History(const PeerId &peerId) : width(0), height(0) , posInDialogs(0) , typingText(st::dlgRichMinWidth) , myTyping(0) +, _photosOverviewCount(-1) // not loaded yet { } @@ -1081,6 +1084,14 @@ HistoryItem *History::doAddToBack(HistoryBlock *to, bool newBlock, HistoryItem * if (newMsg) { newItemAdded(adding); } + HistoryMedia *media = adding->getMedia(true); + if (media && media->type() == MediaTypePhoto) { + if (_photosOverviewIds.constFind(adding->id) == _photosOverviewIds.cend()) { + _photosOverview.push_front(adding->id); + _photosOverviewIds.insert(adding->id); + if (App::wnd()) App::wnd()->mediaOverviewUpdated(peer); + } + } return adding; } @@ -1163,6 +1174,20 @@ void History::addToFront(const QVector<MTPMessage> &slice) { push_front(block); addToH += block->height; ++skip; + + if (loadedAtBottom()) { // add photos to overview + for (int32 i = block->size(); i > 0; --i) { + HistoryItem *item = (*block)[i - 1]; + HistoryMedia *media = item->getMedia(true); + if (media && media->type() == MediaTypePhoto) { + if (_photosOverviewIds.constFind(item->id) == _photosOverviewIds.cend()) { + _photosOverview.push_front(item->id); + _photosOverviewIds.insert(item->id); + } + } + } + if (App::wnd()) App::wnd()->mediaOverviewUpdated(peer); + } } else { delete block; } @@ -1225,6 +1250,7 @@ void History::addToBack(const QVector<MTPMessage> &slice) { } if (i == e) break; } + bool wasLoadedAtBottom = loadedAtBottom(); if (block->size()) { block->y = height; push_back(block); @@ -1234,6 +1260,23 @@ void History::addToBack(const QVector<MTPMessage> &slice) { fixLastMessage(true); delete block; } + if (!wasLoadedAtBottom && loadedAtBottom()) { // add all loaded photos to overview + _photosOverview.clear(); + _photosOverviewIds.clear(); + _photosOverviewCount = -1; // full count unknown + for (int32 i = 0; i < size(); ++i) { + HistoryBlock *b = (*this)[i]; + for (int32 j = 0; j < b->size(); ++j) { + HistoryItem *item = (*b)[j]; + HistoryMedia *media = item->getMedia(true); + if (media && media->type() == MediaTypePhoto) { + _photosOverview.push_back(item->id); + _photosOverviewIds.insert(item->id); + } + } + } + if (App::wnd()) App::wnd()->mediaOverviewUpdated(peer); + } if (wasEmpty && !isEmpty()) { HistoryBlock *dateBlock = new HistoryBlock(this); HistoryItem *dayItem = createDayServiceMsg(this, dateBlock, front()->front()->date); @@ -1469,6 +1512,10 @@ void History::clear(bool leaveItems) { if (showFrom) { showFrom = 0; } + _photosOverview.clear(); + _photosOverviewIds.clear(); + _photosOverviewCount = -1; // full count unknown + if (App::wnd()) App::wnd()->mediaOverviewUpdated(peer); for (Parent::const_iterator i = cbegin(), e = cend(); i != e; ++i) { if (leaveItems) { (*i)->clear(true); @@ -1664,6 +1711,31 @@ void HistoryItem::markRead() { } } +void HistoryItem::destroy() { + if (!out()) markRead(); + bool wasAtBottom = history()->loadedAtBottom(); + _history->removeNotification(this); + detach(); + if (history()->last == this) { + history()->fixLastMessage(wasAtBottom); + } + HistoryMedia *m = getMedia(true); + if (m && m->type() == MediaTypePhoto && !history()->_photosOverviewIds.isEmpty()) { + History::MediaOverviewIds::iterator i = history()->_photosOverviewIds.find(id); + if (i != history()->_photosOverviewIds.cend()) { + history()->_photosOverviewIds.erase(i); + for (History::MediaOverview::iterator i = history()->_photosOverview.begin(), e = history()->_photosOverview.end(); i != e; ++i) { + if ((*i) == id) { + history()->_photosOverview.erase(i); + break; + } + } + if (App::wnd()) App::wnd()->mediaOverviewUpdated(history()->peer); + } + } + delete this; +} + void HistoryItem::detach() { if (_history && _history->unreadBar == this) { _history->unreadBar = 0; @@ -1705,8 +1777,17 @@ HistoryItem *regItem(HistoryItem *item, bool returnExisting) { HistoryPhoto::HistoryPhoto(const MTPDphoto &photo, int32 width) : data(App::feedPhoto(photo)) , openl(new PhotoLink(data)) -, w(width) -{ +, w(width) { + init(); +} + +HistoryPhoto::HistoryPhoto(PeerData *chat, const MTPDphoto &photo, int32 width) : data(App::feedPhoto(photo)) +, openl(new PhotoLink(data, chat)) +, w(width) { + init(); +} + +void HistoryPhoto::init() { int32 tw = data->full->width(), th = data->full->height(); if (!tw || !th) { tw = th = 1; @@ -1767,11 +1848,11 @@ HistoryMedia *HistoryPhoto::clone() const { void HistoryPhoto::draw(QPainter &p, const HistoryItem *parent, const QString &time, int32 timeWidth, bool selected) const { data->full->load(false, false); bool out = parent->out(); - if (parent != App::contextItem() || App::wnd()->photoShown() != data) { + if (parent != App::contextItem()/* || App::wnd()->photoShown() != data*/) { if (data->full->loaded()) { p.drawPixmap(0, 0, data->full->pix(_maxw, _height)); } else { - p.drawPixmap(0, 0, data->thumb->pix(_maxw, _height)); + p.drawPixmap(0, 0, data->thumb->pixBlurred(_maxw, _height)); } if (selected) { @@ -2718,7 +2799,7 @@ QString HistoryMessage::selectedText(uint32 selection) const { return _text.original(selectedFrom, selectedTo); } -HistoryMedia *HistoryMessage::getMedia() const { +HistoryMedia *HistoryMessage::getMedia(bool inOverview) const { return media; } @@ -3030,7 +3111,9 @@ QString HistoryMessage::notificationText() const { } HistoryMessage::~HistoryMessage() { - if (media) media->unregItem(this); + if (media) { + media->unregItem(this); + } delete media; } @@ -3249,7 +3332,7 @@ QString HistoryServiceMsg::messageByAction(const MTPmessageAction &action, TextL case mtpc_messageActionChatEditPhoto: { const MTPDmessageActionChatEditPhoto &d(action.c_messageActionChatEditPhoto()); if (d.vphoto.type() == mtpc_photo) { - media = new HistoryPhoto(d.vphoto.c_photo(), 100); + media = new HistoryPhoto(history()->peer, d.vphoto.c_photo(), 100); } return lang(lng_action_changed_photo); } break; @@ -3457,6 +3540,10 @@ QString HistoryServiceMsg::notificationText() const { return msg; } +HistoryMedia *HistoryServiceMsg::getMedia(bool inOverview) const { + return inOverview ? 0 : media; +} + HistoryServiceMsg::~HistoryServiceMsg() { delete media; } diff --git a/Telegram/SourceFiles/history.h b/Telegram/SourceFiles/history.h index a3c3e79fc..ad7839084 100644 --- a/Telegram/SourceFiles/history.h +++ b/Telegram/SourceFiles/history.h @@ -135,8 +135,9 @@ private: const PeerData *_peer; }; +struct PhotoData; struct UserData : public PeerData { - UserData(const PeerId &id) : PeerData(id), lnk(new PeerLink(this)), onlineTill(0), contact(-1) { + UserData(const PeerId &id) : PeerData(id), lnk(new PeerLink(this)), onlineTill(0), contact(-1), photosCount(-1) { } void setPhoto(const MTPUserProfilePhoto &photo); void setName(const QString &first, const QString &last, const QString &phoneName); @@ -151,6 +152,10 @@ struct UserData : public PeerData { TextLinkPtr lnk; int32 onlineTill; int32 contact; // -1 - not contact, cant add (self, empty, deleted, foreign), 0 - not contact, can add (request), 1 - contact + + typedef QList<PhotoData*> Photos; + Photos photos; + int32 photosCount; // -1 not loaded, 0 all loaded }; struct ChatData : public PeerData { @@ -193,15 +198,21 @@ struct PhotoData { class PhotoLink : public ITextLink { public: - PhotoLink(PhotoData *photo) : _photo(photo) { + PhotoLink(PhotoData *photo) : _photo(photo), _peer(0) { + } + PhotoLink(PhotoData *photo, PeerData *peer) : _photo(photo), _peer(peer) { } void onClick(Qt::MouseButton button) const; PhotoData *photo() const { return _photo; } + PeerData *peer() const { + return _peer; + } private: PhotoData *_photo; + PeerData *_peer; }; enum FileStatus { @@ -695,6 +706,12 @@ struct History : public QList<HistoryBlock*> { bool updateTyping(uint64 ms = 0, uint32 dots = 0, bool force = false); uint64 myTyping; + typedef QList<MsgId> MediaOverview; + typedef QSet<MsgId> MediaOverviewIds; + MediaOverview _photosOverview; + MediaOverviewIds _photosOverviewIds; + int32 _photosOverviewCount; // -1 - not loaded, 0 - all loaded, > 0 - count, but not all loaded + static const int32 ScrollMax = INT_MAX; }; @@ -1018,6 +1035,7 @@ protected: }; +class HistoryMedia; class HistoryItem : public HistoryElem { public: @@ -1048,16 +1066,7 @@ public: const HistoryBlock *block() const { return _block; } - void destroy() { - if (!out()) markRead(); - bool wasAtBottom = history()->loadedAtBottom(); - _history->removeNotification(this); - detach(); - if (history()->last == this) { - history()->fixLastMessage(wasAtBottom); - } - delete this; - } + void destroy(); void detach(); void detachFast(); bool detached() const { @@ -1117,6 +1126,10 @@ public: int32 y, id; QDateTime date; + virtual HistoryMedia *getMedia(bool inOverview = false) const { + return 0; + } + virtual ~HistoryItem(); protected: @@ -1177,6 +1190,9 @@ class HistoryPhoto : public HistoryMedia { public: HistoryPhoto(const MTPDphoto &photo, int32 width = 0); + HistoryPhoto(PeerData *chat, const MTPDphoto &photo, int32 width = 0); + + void init(); void draw(QPainter &p, const HistoryItem *parent, const QString &time, int32 timeWidth, bool selected) const; int32 resize(int32 width); @@ -1189,6 +1205,10 @@ public: bool getPhotoCoords(PhotoData *photo, int32 &x, int32 &y, int32 &w) const; HistoryMedia *clone() const; + PhotoData *photo() const { + return data; + } + private: PhotoData *data; TextLinkPtr openl; @@ -1369,7 +1389,7 @@ public: } QString selectedText(uint32 selection) const; - HistoryMedia *getMedia() const; + HistoryMedia *getMedia(bool inOverview = false) const; ~HistoryMessage(); @@ -1446,6 +1466,8 @@ public: } QString selectedText(uint32 selection) const; + HistoryMedia *getMedia(bool inOverview = false) const; + ~HistoryServiceMsg(); protected: diff --git a/Telegram/SourceFiles/historywidget.cpp b/Telegram/SourceFiles/historywidget.cpp index 2f96903cd..072032e91 100644 --- a/Telegram/SourceFiles/historywidget.cpp +++ b/Telegram/SourceFiles/historywidget.cpp @@ -2669,9 +2669,19 @@ void HistoryWidget::uploadImage(const QImage &img) { if (!hist || confirmImageId) return; App::wnd()->activateWindow(); + confirmImage = img; confirmImageId = imageLoader.append(img, histPeer->id, ToPreparePhoto); } +void HistoryWidget::uploadConfirmImageUncompressed() { + if (!hist || !confirmImageId || confirmImage.isNull()) return; + + App::wnd()->activateWindow(); + imageLoader.append(confirmImage, histPeer->id, ToPrepareDocument); + confirmImageId = 0; + confirmImage = QImage(); +} + void HistoryWidget::uploadMedias(const QStringList &files, ToPrepareMediaType type) { if (!hist) return; @@ -2706,6 +2716,7 @@ void HistoryWidget::onPhotoFailed(quint64 id) { void HistoryWidget::confirmSendImage(const ReadyLocalMedia &img) { if (img.id == confirmImageId) { confirmImageId = 0; + confirmImage = QImage(); } MsgId newId = clientMsgId(); @@ -2737,6 +2748,7 @@ void HistoryWidget::confirmSendImage(const ReadyLocalMedia &img) { void HistoryWidget::cancelSendImage() { confirmImageId = 0; + confirmImage = QImage(); } void HistoryWidget::onPhotoUploaded(MsgId newId, const MTPInputFile &file) { diff --git a/Telegram/SourceFiles/historywidget.h b/Telegram/SourceFiles/historywidget.h index 968a530b2..3378e1a7e 100644 --- a/Telegram/SourceFiles/historywidget.h +++ b/Telegram/SourceFiles/historywidget.h @@ -291,6 +291,7 @@ public: void destroyData(); void uploadImage(const QImage &img); + void uploadConfirmImageUncompressed(); void uploadMedias(const QStringList &files, ToPrepareMediaType type); void uploadMedia(const QByteArray &fileContent, ToPrepareMediaType type); void confirmSendImage(const ReadyLocalMedia &img); @@ -427,6 +428,7 @@ private: mtpRequestId loadingRequestId; int64 serviceImageCacheSize; + QImage confirmImage; PhotoId confirmImageId; QString titlePeerText; diff --git a/Telegram/SourceFiles/layerwidget.cpp b/Telegram/SourceFiles/layerwidget.cpp index ff8e33ec2..d44fca34d 100644 --- a/Telegram/SourceFiles/layerwidget.cpp +++ b/Telegram/SourceFiles/layerwidget.cpp @@ -125,328 +125,3 @@ BackgroundWidget::~BackgroundWidget() { w->deleteLater(); if (_hidden) _hidden->deleteLater(); } - -LayerWidget::LayerWidget(QWidget *parent, PhotoData *photo, HistoryItem *item) : QWidget(parent) -, photo(photo) -, video(0) -, aBackground(0) -, aOver(0) -, iX(App::wnd()->width() / 2) -, iY(App::wnd()->height() / 2) -, iW(0) -, iCoordFunc(anim::sineInOut) -, aBackgroundFunc(anim::easeOutCirc) -, aOverFunc(anim::linear) -, hiding(false) -, _touchPress(false) -, _touchMove(false) -, _touchRightButton(false) -, _menu(0) -{ - int32 x, y, w; - if (App::wnd()->getPhotoCoords(photo, x, y, w)) { - iX = anim::ivalue(x); - iY = anim::ivalue(y); - iW = anim::ivalue(w); - } - photo->full->load(); - setGeometry(0, 0, App::wnd()->width(), App::wnd()->height()); - aBackground.start(1); - aOver.start(1); - anim::start(this); - show(); - setFocus(); - App::contextItem(item); - - setAttribute(Qt::WA_AcceptTouchEvents); - _touchTimer.setSingleShot(true); - connect(&_touchTimer, SIGNAL(timeout()), this, SLOT(onTouchTimer())); -} - -LayerWidget::LayerWidget(QWidget *parent, VideoData *video, HistoryItem *item) : QWidget(parent) -, photo(0) -, video(video) -, aBackground(0) -, aOver(0) -, iX(App::wnd()->width() / 2) -, iY(App::wnd()->height() / 2) -, iW(0) -, iCoordFunc(anim::sineInOut) -, aBackgroundFunc(anim::easeOutCirc) -, aOverFunc(anim::linear) -, hiding(false) -, _touchPress(false) -, _touchMove(false) -, _touchRightButton(false) -, _menu(0) -{ - int32 x, y, w; - if (App::wnd()->getVideoCoords(video, x, y, w)) { - iX = anim::ivalue(x); - iY = anim::ivalue(y); - iW = anim::ivalue(w); - } - setGeometry(0, 0, App::wnd()->width(), App::wnd()->height()); - aBackground.start(1); - aOver.start(1); - anim::start(this); - show(); - setFocus(); - App::contextItem(item); - - setAttribute(Qt::WA_AcceptTouchEvents); - _touchTimer.setSingleShot(true); - connect(&_touchTimer, SIGNAL(timeout()), this, SLOT(onTouchTimer())); -} - -PhotoData *LayerWidget::photoShown() { - return hiding ? 0 : photo; -} - -void LayerWidget::onTouchTimer() { - _touchRightButton = true; -} - -bool LayerWidget::event(QEvent *e) { - if (e->type() == QEvent::TouchBegin || e->type() == QEvent::TouchUpdate || e->type() == QEvent::TouchEnd || e->type() == QEvent::TouchCancel) { - QTouchEvent *ev = static_cast<QTouchEvent*>(e); - if (ev->device()->type() == QTouchDevice::TouchScreen) { - touchEvent(ev); - return true; - } - } - return QWidget::event(e); -} - -void LayerWidget::touchEvent(QTouchEvent *e) { - switch (e->type()) { - case QEvent::TouchBegin: - if (_touchPress || e->touchPoints().isEmpty()) return; - _touchTimer.start(QApplication::startDragTime()); - _touchPress = true; - _touchMove = _touchRightButton = false; - _touchStart = e->touchPoints().cbegin()->screenPos().toPoint(); - break; - - case QEvent::TouchUpdate: - if (!_touchPress || e->touchPoints().isEmpty()) return; - if (!_touchMove && (e->touchPoints().cbegin()->screenPos().toPoint() - _touchStart).manhattanLength() >= QApplication::startDragDistance()) { - _touchMove = true; - } - break; - - case QEvent::TouchEnd: - if (!_touchPress) return; - if (!_touchMove && App::wnd()) { - Qt::MouseButton btn(_touchRightButton ? Qt::RightButton : Qt::LeftButton); - QPoint mapped(mapFromGlobal(_touchStart)), winMapped(App::wnd()->mapFromGlobal(_touchStart)); - - QMouseEvent pressEvent(QEvent::MouseButtonPress, mapped, winMapped, _touchStart, btn, Qt::MouseButtons(btn), Qt::KeyboardModifiers()); - pressEvent.accept(); - mousePressEvent(&pressEvent); - - QMouseEvent releaseEvent(QEvent::MouseButtonRelease, mapped, winMapped, _touchStart, btn, Qt::MouseButtons(btn), Qt::KeyboardModifiers()); - mouseReleaseEvent(&releaseEvent); - - if (_touchRightButton) { - QContextMenuEvent contextEvent(QContextMenuEvent::Mouse, mapped, _touchStart); - contextMenuEvent(&contextEvent); - } - } - _touchTimer.stop(); - _touchPress = _touchMove = _touchRightButton = false; - break; - - case QEvent::TouchCancel: - _touchPress = false; - _touchTimer.stop(); - break; - } -} - -void LayerWidget::onMenuDestroy(QObject *obj) { - if (_menu == obj) { - _menu = 0; - } -} - -void LayerWidget::paintEvent(QPaintEvent *e) { - bool trivial = (rect() == e->rect()); - - QPainter p(this); - if (!trivial) { - p.setClipRect(e->rect()); - } - p.setOpacity(st::layerAlpha * aBackground.current()); - p.fillRect(rect(), st::layerBG->b); - if (iW.current()) { - if (!hiding) p.setOpacity(aOver.current()); - if (animating()) { - const QPixmap &pm((photo ? (photo->full->loaded() ? photo->full : photo->thumb) : video->thumb)->pix()); - int32 h = pm.width() ? (pm.height() * iW.current() / pm.width()) : 1; - p.drawPixmap(iX.current(), iY.current(), iW.current(), h, pm); - if (!hiding) { - p.setOpacity(1); - p.setClipRect(App::wnd()->photoRect(), Qt::IntersectClip); - p.drawPixmap(iX.current(), iY.current(), iW.current(), h, pm); - } - } else { - const QPixmap &pm((photo ? (photo->full->loaded() ? photo->full : photo->thumb) : video->thumb)->pixNoCache(iW.current(), 0, !animating())); - p.drawPixmap(iX.current(), iY.current(), pm); - } - } -} - -void LayerWidget::keyPressEvent(QKeyEvent *e) { - if (!_menu && e->key() == Qt::Key_Escape) { - startHide(); - } else if (photo && photo->full->loaded() && (e == QKeySequence::Save || e == QKeySequence::SaveAs)) { - QString file; - if (filedialogGetSaveFile(file, lang(lng_save_photo), qsl("JPEG Image (*.jpg);;All files (*.*)"), filedialogDefaultName(qsl("photo"), qsl(".jpg")))) { - if (!file.isEmpty()) { - photo->full->pix().toImage().save(file, "JPG"); - } - } - } else if (photo && photo->full->loaded() && (e->key() == Qt::Key_Copy || (e->key() == Qt::Key_C && e->modifiers().testFlag(Qt::ControlModifier)))) { - QApplication::clipboard()->setPixmap(photo->full->pix()); - } -} - -void LayerWidget::mousePressEvent(QMouseEvent *e) { - if (_menu) return; - if (e->button() == Qt::LeftButton) startHide(); -} - -void LayerWidget::contextMenuEvent(QContextMenuEvent *e) { - if (photo && photo->full->loaded() && !hiding) { - if (_menu) { - _menu->deleteLater(); - _menu = 0; - } - _menu = new QMenu(this); - _menu->addAction(lang(lng_context_save_image), this, SLOT(saveContextImage()))->setEnabled(true); - _menu->addAction(lang(lng_context_copy_image), this, SLOT(copyContextImage()))->setEnabled(true); - _menu->addAction(lang(lng_context_close_image), this, SLOT(startHide()))->setEnabled(true); - if (App::contextItem()) { - if (dynamic_cast<HistoryMessage*>(App::contextItem())) { - _menu->addAction(lang(lng_context_forward_image), this, SLOT(forwardMessage()))->setEnabled(true); - } - _menu->addAction(lang(lng_context_delete_image), this, SLOT(deleteMessage()))->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(deleteMessage()))->setEnabled(true); - } - _menu->setAttribute(Qt::WA_DeleteOnClose); - - _menu->setAttribute(Qt::WA_DeleteOnClose); - connect(_menu, SIGNAL(destroyed(QObject*)), this, SLOT(onMenuDestroy(QObject*))); - _menu->popup(e->globalPos()); - e->accept(); - } -} - -void LayerWidget::deleteMessage() { - if (!App::contextItem()) { - if (App::self() && photo && App::self()->photoId == photo->id) { - App::app()->peerClearPhoto(App::self()->id); - } else if (photo->chat && photo->chat->photoId == photo->id) { - App::app()->peerClearPhoto(photo->chat->id); - } - startHide(); - } else { - App::wnd()->layerHidden(); - App::main()->deleteLayer(); - } -} - -void LayerWidget::forwardMessage() { - startHide(); - App::main()->forwardLayer(); -} - -void LayerWidget::saveContextImage() { - if (!photo || !photo->full->loaded() || hiding) return; - - QString file; - if (filedialogGetSaveFile(file, lang(lng_save_photo), qsl("JPEG Image (*.jpg);;All files (*.*)"), filedialogDefaultName(qsl("photo"), qsl(".jpg")))) { - if (!file.isEmpty()) { - photo->full->pix().toImage().save(file, "JPG"); - } - } -} - -void LayerWidget::copyContextImage() { - if (!photo || !photo->full->loaded() || hiding) return; - - QApplication::clipboard()->setPixmap(photo->full->pix()); -} - -void LayerWidget::startHide() { - hiding = true; - aBackground.start(0); - anim::start(this); -} - -void LayerWidget::resizeEvent(QResizeEvent *e) { - int32 w = width() - st::layerPadding.left() - st::layerPadding.right(), h = height() - st::layerPadding.top() - st::layerPadding.bottom(); - int32 iw = (photo ? photo->full : video->thumb)->width(), ih = (photo ? photo->full : video->thumb)->height(); - if (!iw || !ih) { - iw = ih = 1; - } else { - switch (cScale()) { - case dbisOneAndQuarter: iw = qRound(float64(iw) * 1.25 - 0.01); ih = qRound(float64(ih) * 1.25 - 0.01); break; - case dbisOneAndHalf: iw = qRound(float64(iw) * 1.5 - 0.01); ih = qRound(float64(ih) * 1.5 - 0.01); break; - case dbisTwo: iw *= 2; ih *= 2; break; - } - } - if (w >= iw && h >= ih) { - iW.start(iw); - iX.start(st::layerPadding.left() + (w - iw) / 2); - iY.start(st::layerPadding.top() + (h - ih) / 2); - } else if (w * ih > iw * h) { - int32 nw = qRound(iw * float64(h) / ih); - iW.start(nw); - iX.start(st::layerPadding.left() + (w - nw) / 2); - iY.start(st::layerPadding.top()); - } else { - int32 nh = qRound(ih * float64(w) / iw); - iW.start(w); - iX.start(st::layerPadding.left()); - iY.start(st::layerPadding.top() + (h - nh) / 2); - } - if (!animating() || hiding) { - iX.finish(); - iY.finish(); - iW.finish(); - } -} - -bool LayerWidget::animStep(float64 ms) { - float64 dt = ms / (hiding ? st::layerHideDuration : st::layerSlideDuration); - bool res = true; - if (dt >= 1) { - aBackground.finish(); - aOver.finish(); - iX.finish(); - iY.finish(); - iW.finish(); - if (hiding) { - QTimer::singleShot(0, App::wnd(), SLOT(layerHidden())); - } - res = false; - } else { - aBackground.update(dt, aBackgroundFunc); - if (!hiding) { - aOver.update(dt, aOverFunc); - iX.update(dt, iCoordFunc); - iY.update(dt, iCoordFunc); - iW.update(dt, iCoordFunc); - } - } - update(); - return res; -} - -LayerWidget::~LayerWidget() { - if (App::wnd()) App::wnd()->noLayer(this); - delete _menu; -} diff --git a/Telegram/SourceFiles/layerwidget.h b/Telegram/SourceFiles/layerwidget.h index 0cd9a97c1..7ed6e69c6 100644 --- a/Telegram/SourceFiles/layerwidget.h +++ b/Telegram/SourceFiles/layerwidget.h @@ -81,54 +81,3 @@ private: BoxShadow shadow; }; - -class LayerWidget : public QWidget, public Animated { - Q_OBJECT - -public: - - LayerWidget(QWidget *parent, PhotoData *photo, HistoryItem *item); - LayerWidget(QWidget *parent, VideoData *video, HistoryItem *item); - - PhotoData *photoShown(); - - bool event(QEvent *e); - void touchEvent(QTouchEvent *e); - void paintEvent(QPaintEvent *e); - void keyPressEvent(QKeyEvent *e); - void mousePressEvent(QMouseEvent *e); - void resizeEvent(QResizeEvent *e); - void contextMenuEvent(QContextMenuEvent *e); - - bool animStep(float64 ms); - - ~LayerWidget(); - -public slots: - - void onTouchTimer(); - - void saveContextImage(); - void copyContextImage(); - void startHide(); - - void deleteMessage(); - void forwardMessage(); - - void onMenuDestroy(QObject *obj); - -private: - - PhotoData *photo; - VideoData *video; - anim::fvalue aBackground, aOver; - anim::ivalue iX, iY, iW; - anim::transition iCoordFunc, aBackgroundFunc, aOverFunc; - bool hiding; - - bool _touchPress, _touchMove, _touchRightButton; - QTimer _touchTimer; - QPoint _touchStart; - - QMenu *_menu; -}; diff --git a/Telegram/SourceFiles/localimageloader.cpp b/Telegram/SourceFiles/localimageloader.cpp index a1e9df5d7..b07cf7005 100644 --- a/Telegram/SourceFiles/localimageloader.cpp +++ b/Telegram/SourceFiles/localimageloader.cpp @@ -17,6 +17,7 @@ Copyright (c) 2014 John Preston, https://tdesktop.com */ #include "stdafx.h" #include "localimageloader.h" +#include "gui/filedialog.h" #include <libexif/exif-data.h> LocalImageLoaderPrivate::LocalImageLoaderPrivate(int32 currentUser, LocalImageLoader *loader, QThread *thread) : QObject(0) @@ -99,9 +100,20 @@ void LocalImageLoaderPrivate::prepareImages() { filesize = data.size(); } } else { - type = ToPreparePhoto; // only photo from QImage - filename = qsl("Untitled.jpg"); - filesize = 0; + if (type == ToPrepareDocument) { + filename = filedialogDefaultName(qsl("image"), qsl(".png"), QString(), true); + QMimeType mimeType = QMimeDatabase().mimeTypeForName("image/png"); + data = QByteArray(); + { + QBuffer b(&data); + img.save(&b, "PNG"); + } + filesize = data.size(); + } else { + type = ToPreparePhoto; // only photo from QImage + filename = qsl("Untitled.jpg"); + filesize = 0; + } } if ((img.isNull() && (type != ToPrepareDocument || !filesize)) || type == ToPrepareAuto || (img.isNull() && file.isEmpty() && data.isEmpty())) { // if could not decide what type diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index 7486c7ff2..a5c0e4869 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -678,6 +678,10 @@ void MainWidget::confirmSendImage(const ReadyLocalMedia &img) { history.confirmSendImage(img); } +void MainWidget::confirmSendImageUncompressed() { + history.uploadConfirmImageUncompressed(); +} + void MainWidget::cancelSendImage() { history.cancelSendImage(); } @@ -802,6 +806,9 @@ PeerData *MainWidget::profilePeer() { } void MainWidget::showPeerProfile(const PeerData *peer, bool back) { + App::wnd()->hideSettings(); + if (profile && profile->peer() == peer) return; + dialogs.enableShadow(false); _topBar.enableShadow(false); QPixmap animCache = myGrab(this, history.geometry()), animTopBarCache = myGrab(this, QRect(_topBar.x(), _topBar.y(), _topBar.width(), st::topBarHeight)); @@ -1573,9 +1580,24 @@ void MainWidget::feedUpdate(const MTPUpdate &update) { HistoryItem *msgRow = App::histItemById(msg); if (msgRow) { App::historyUnregItem(msgRow); + History *h = msgRow->history(); + History::MediaOverviewIds::iterator i = h->_photosOverviewIds.find(msgRow->id); + if (i != h->_photosOverviewIds.cend()) { + h->_photosOverviewIds.erase(i); + if (h->_photosOverviewIds.constFind(d.vid.v) == h->_photosOverviewIds.cend()) { + h->_photosOverviewIds.insert(d.vid.v); + for (int32 i = 0, l = h->_photosOverview.size(); i != l; ++i) { + if (h->_photosOverview.at(i) == msgRow->id) { + h->_photosOverview[i] = d.vid.v; + break; + } + } + } + } + if (App::wnd()) App::wnd()->changingMsgId(msgRow, d.vid.v); msgRow->id = d.vid.v; if (!App::historyRegItem(msgRow)) { - msgUpdated(msgRow->history()->peer->id, msgRow); + msgUpdated(h->peer->id, msgRow); } else { msgRow->destroy(); history.peerMessagesUpdated(); @@ -1668,14 +1690,27 @@ void MainWidget::feedUpdate(const MTPUpdate &update) { if (user) { user->setPhoto(d.vphoto); user->photo->load(); - if (false && !d.vprevious.v && d.vuser_id.v != MTP::authedId() && d.vphoto.type() == mtpc_userProfilePhoto) { - MTPPhoto photo(App::photoFromUserPhoto(MTP_int(user->id & 0xFFFFFFFF), d.vdate, d.vphoto)); - HistoryMedia *media = new HistoryPhoto(photo.c_photo(), 100); - if (App::history(user->id)->loadedAtBottom()) { - App::history(user->id)->addToBackService(clientMsgId(), date(d.vdate), lang(lng_action_user_photo).replace(qsl("{from}"), user->name), false, true, media); + if (d.vprevious.v) { + user->photosCount = -1; + user->photos.clear(); + } else { + if (user->photoId) { + if (user->photosCount > 0) ++user->photosCount; + user->photos.push_front(App::photo(user->photoId)); + } else { + user->photosCount = -1; + user->photos.clear(); + } + if (false && d.vuser_id.v != MTP::authedId() && d.vphoto.type() == mtpc_userProfilePhoto) { + MTPPhoto photo(App::photoFromUserPhoto(MTP_int(user->id & 0xFFFFFFFF), d.vdate, d.vphoto)); + HistoryMedia *media = new HistoryPhoto(photo.c_photo(), 100); + if (App::history(user->id)->loadedAtBottom()) { + App::history(user->id)->addToBackService(clientMsgId(), date(d.vdate), lang(lng_action_user_photo).replace(qsl("{from}"), user->name), false, true, media); + } } } if (App::main()) App::main()->peerUpdated(user); + if (App::wnd()) App::wnd()->mediaOverviewUpdated(user); } } break; diff --git a/Telegram/SourceFiles/mainwidget.h b/Telegram/SourceFiles/mainwidget.h index 523dc9b50..44f8ff984 100644 --- a/Telegram/SourceFiles/mainwidget.h +++ b/Telegram/SourceFiles/mainwidget.h @@ -141,6 +141,7 @@ public: QRect historyRect() const; void confirmSendImage(const ReadyLocalMedia &img); + void confirmSendImageUncompressed(); void cancelSendImage(); void destroyData(); diff --git a/Telegram/SourceFiles/mediaview.cpp b/Telegram/SourceFiles/mediaview.cpp index 0adeab69a..bc31e4826 100644 --- a/Telegram/SourceFiles/mediaview.cpp +++ b/Telegram/SourceFiles/mediaview.cpp @@ -19,33 +19,291 @@ Copyright (c) 2014 John Preston, https://tdesktop.com #include "lang.h" #include "mediaview.h" +#include "mainwidget.h" #include "window.h" +#include "application.h" +#include "gui/filedialog.h" MediaView::MediaView() : QWidget(App::wnd()), -_photo(0), _maxWidth(0), _maxHeight(0), _x(0), _y(0), _w(0) { +_photo(0), _maxWidth(0), _maxHeight(0), _x(0), _y(0), _w(0), _full(false), +_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, lang(lng_mediaview_close), st::medviewButton), +_save(this, lang(lng_mediaview_save), st::medviewButton), +_forward(this, lang(lng_mediaview_forward), st::medviewButton), +_delete(this, lang(lng_mediaview_delete), st::medviewButton), +_menu(0), _receiveMouse(true), _touchPress(false), _touchMove(false), _touchRightButton(false), +_leftNavVisible(false), _rightNavVisible(false) { setWindowFlags(Qt::FramelessWindowHint | Qt::BypassWindowManagerHint | Qt::Tool | Qt::NoDropShadowWindowHint); moveToScreen(); setAttribute(Qt::WA_PaintOnScreen, true); setAttribute(Qt::WA_NoSystemBackground, true); setAttribute(Qt::WA_TranslucentBackground, true); + setMouseTracking(true); hide(); + + connect(&_close, SIGNAL(clicked()), this, SLOT(onClose())); + connect(&_save, SIGNAL(clicked()), this, SLOT(onSave())); + connect(&_forward, SIGNAL(clicked()), this, SLOT(onForward())); + connect(&_delete, SIGNAL(clicked()), this, SLOT(onDelete())); + + connect(App::wnd()->windowHandle(), SIGNAL(activeChanged()), this, SLOT(onCheckActive())); + + setAttribute(Qt::WA_AcceptTouchEvents); + _touchTimer.setSingleShot(true); + connect(&_touchTimer, SIGNAL(timeout()), this, SLOT(onTouchTimer())); } void MediaView::moveToScreen() { QPoint wndCenter(App::wnd()->x() + App::wnd()->width() / 2, App::wnd()->y() + App::wnd()->height() / 2); QRect geom = QDesktopWidget().screenGeometry(wndCenter); + _avail = QDesktopWidget().availableGeometry(wndCenter); if (geom != geometry()) { setGeometry(geom); } - _maxWidth = width() - 2 * st::medviewNavBarWidth; - _maxHeight = height() - st::medviewTopSkip - st::medviewBottomSkip; + if (!geom.contains(_avail)) { + _avail = geom; + } + _avail.setX(_avail.x() - geom.x()); + _avail.setY(_avail.y() - geom.y()); + _maxWidth = _avail.width() - 2 * st::medviewNavBarWidth; + _maxHeight = _avail.height() - st::medviewTopSkip - st::medviewBottomSkip; + _leftNav = QRect(0, 0, st::medviewNavBarWidth, height()); + _rightNav = QRect(width() - st::medviewNavBarWidth, 0, st::medviewNavBarWidth, height()); + _close.move(_avail.x() + (_avail.width() + st::medviewMainWidth) / 2 - _close.width(), _avail.y() + (st::medviewTopSkip - _close.height()) / 2); + _save.move(_avail.x() + (_avail.width() - st::medviewMainWidth) / 2, _avail.y() + (st::medviewTopSkip - _save.height()) / 2); + _delete.move(_avail.x() + (_avail.width() + st::medviewMainWidth) / 2 - _delete.width(), _avail.y() + _avail.height() - (st::medviewTopSkip + _delete.height()) / 2); + _forward.move(_avail.x() + (_avail.width() - st::medviewMainWidth) / 2, _avail.y() + _avail.height() - (st::medviewTopSkip + _forward.height()) / 2); } -void MediaView::showPhoto(PhotoData *photo, const QRect &opaque) { +void MediaView::mediaOverviewUpdated(PeerData *peer) { + if (_history && _history->peer == peer) { + _index = -1; + for (int i = 0, l = _history->_photosOverview.size(); i < l; ++i) { + if (_history->_photosOverview.at(i) == _msgid) { + _index = i; + break; + } + } + updateControls(); + } else if (_user == peer) { + _index = -1; + for (int i = 0, l = _user->photos.size(); i < l; ++i) { + if (_user->photos.at(i) == _photo) { + _index = i; + break; + } + } + updateControls(); + } +} + +void MediaView::changingMsgId(HistoryItem *row, MsgId newId) { + if (row->id == _msgid) { + _msgid = newId; + } + mediaOverviewUpdated(row->history()->peer); +} + +void MediaView::updateControls() { + if (!_photo) return; + + _close.show(); + if (_photo->full->loaded()) { + _save.show(); + } else { + _save.hide(); + } + if (_history) { + HistoryItem *item = App::histItemById(_msgid); + if (dynamic_cast<HistoryMessage*>(item)) { + _forward.show(); + } else { + _forward.hide(); + } + _delete.show(); + } else { + _forward.hide(); + if (App::self() && _photo && App::self()->photoId == _photo->id || _photo->chat && _photo->chat->photoId == _photo->id) { + _delete.show(); + } else { + _delete.hide(); + } + } + QDateTime d(date(_photo->date)), dNow(date(unixtime())); + if (d.date() == dNow.date()) { + _dateText = lang(lng_status_lastseen_today).replace(qsl("{time}"), d.time().toString(qsl("hh:mm"))); + } else if (d.date().addDays(1) == dNow.date()) { + _dateText = lang(lng_status_lastseen_yesterday).replace(qsl("{time}"), d.time().toString(qsl("hh:mm"))); + } else { + _dateText = lang(lng_status_lastseen_date_time).replace(qsl("{date}"), d.date().toString(qsl("dd.MM.yy"))).replace(qsl("{time}"), d.time().toString(qsl("hh:mm"))); + } + int32 nameWidth = _from->nameText.maxWidth(), maxWidth = _delete.x() - _forward.x() - _forward.width(), dateWidth = st::medviewDateFont->m.width(_dateText); + if (nameWidth > maxWidth) { + nameWidth = maxWidth; + } + _nameNav = QRect(_forward.x() + _forward.width() + (maxWidth - nameWidth) / 2, _forward.y() + st::medviewNameTop, nameWidth, st::msgNameFont->height); + _dateNav = QRect(_forward.x() + _forward.width() + (maxWidth - dateWidth) / 2, _forward.y() + st::medviewDateTop, dateWidth, st::medviewDateFont->height); + updateHeader(); + _leftNavVisible = (_index > 0 || (_index == 0 && _history && _history->_photosOverview.size() < _history->_photosOverviewCount)); + _rightNavVisible = (_index >= 0 && ( + (_history && _index + 1 < _history->_photosOverview.size()) || + (_user && (_index + 1 < _user->photos.size() || _index + 1 < _user->photosCount)))); + updateOver(mapFromGlobal(QCursor::pos())); + update(); +} + +bool MediaView::animStep(float64 msp) { + uint64 ms = getms(); + for (Showing::iterator i = _animations.begin(); i != _animations.end();) { + int64 start = i.value(); + switch (i.key()) { + case OverLeftNav: update(_leftNav); break; + case OverRightNav: update(_rightNav); break; + case OverName: update(_nameNav); break; + case OverDate: update(_dateNav); break; + default: break; + } + float64 dt = float64(ms - start) / st::medviewButton.duration; + if (dt >= 1) { + _animOpacities.remove(i.key()); + i = _animations.erase(i); + } else { + _animOpacities[i.key()].update(dt, anim::linear); + ++i; + } + } + return !_animations.isEmpty(); +} + +MediaView::~MediaView() { + delete _menu; +} + +void MediaView::onClose() { + if (App::wnd()) App::wnd()->layerHidden(); +} + +void MediaView::onSave() { + if (!_photo || !_photo->full->loaded()) return; + + QString file; + if (filedialogGetSaveFile(file, lang(lng_save_photo), qsl("JPEG Image (*.jpg);;All files (*.*)"), filedialogDefaultName(qsl("photo"), qsl(".jpg")))) { + if (!file.isEmpty()) { + _photo->full->pix().toImage().save(file, "JPG"); + } + } +} + +void MediaView::onForward() { + HistoryItem *item = App::histItemById(_msgid); + if (!_msgid || !item) return; + + if (App::wnd()) { + onClose(); + if (App::main()) { + App::contextItem(item); + App::main()->forwardLayer(); + } + } +} + +void MediaView::onDelete() { + onClose(); + if (!_msgid) { + if (App::self() && _photo && App::self()->photoId == _photo->id) { + App::app()->peerClearPhoto(App::self()->id); + } else if (_photo->chat && _photo->chat->photoId == _photo->id) { + App::app()->peerClearPhoto(_photo->chat->id); + } + } else { + HistoryItem *item = App::histItemById(_msgid); + if (item) { + App::contextItem(item); + App::main()->deleteLayer(); + } + } +} + +void MediaView::onCopy() { + if (!_photo || !_photo->full->loaded()) return; + + QApplication::clipboard()->setPixmap(_photo->full->pix()); +} + +void MediaView::showPhoto(PhotoData *photo, HistoryItem *context) { + _history = context->history(); + _peer = 0; + _user = 0; + + _loadRequest = 0; + _over = OverNone; + if (!_animations.isEmpty()) { + _animations.clear(); + anim::stop(this); + } + if (!_animOpacities.isEmpty()) _animOpacities.clear(); + setCursor(style::cur_default); + + _index = -1; + _msgid = context->id; + for (int i = 0, l = _history->_photosOverview.size(); i < l; ++i) { + if (_history->_photosOverview.at(i) == _msgid) { + _index = i; + break; + } + } + + if (_history->_photosOverviewCount < 0) { + loadPhotosBack(); + } + + showPhoto(photo); + preloadPhotos(0); +} + +void MediaView::showPhoto(PhotoData *photo, PeerData *context) { + _history = 0; + _peer = context; + _user = context->chat ? 0 : context->asUser(); + + _loadRequest = 0; + _over = OverNone; + if (!_animations.isEmpty()) { + _animations.clear(); + anim::stop(this); + } + if (!_animOpacities.isEmpty()) _animOpacities.clear(); + setCursor(style::cur_default); + + _msgid = 0; + _index = -1; + if (_user) { + if (_user->photos.isEmpty() && _user->photosCount < 0 && _user->photoId) { + _index = 0; + } + for (int i = 0, l = _user->photos.size(); i < l; ++i) { + if (_user->photos.at(i) == photo) { + _index = i; + break; + } + } + + if (_user->photosCount < 0) { + loadPhotosBack(); + } + } + showPhoto(photo); + preloadPhotos(0); +} + +void MediaView::showPhoto(PhotoData *photo) { _photo = photo; - _opaqueRect = opaque; + MTP::clearLoaderPriorities(); _photo->full->load(); + _full = false; + _current = QPixmap(); _w = photo->full->width(); + _down = OverNone; int h = photo->full->height(); switch (cScale()) { case dbisOneAndQuarter: _w = qRound(float64(_w) * 1.25 - 0.01); h = qRound(float64(h) * 1.25 - 0.01); break; @@ -60,8 +318,10 @@ void MediaView::showPhoto(PhotoData *photo, const QRect &opaque) { _w = qRound(_w * _maxHeight / float64(h)); h = _maxHeight; } - _x = (width() - _w) / 2; - _y = (height() - h) / 2; + _x = _avail.x() + (_avail.width() - _w) / 2; + _y = _avail.y() + (_avail.height() - h) / 2; + _from = App::user(_photo->user); + updateControls(); if (isHidden()) { moveToScreen(); bool wm = testAttribute(Qt::WA_Mapped), wv = testAttribute(Qt::WA_WState_Visible); @@ -74,27 +334,520 @@ void MediaView::showPhoto(PhotoData *photo, const QRect &opaque) { if (!wv) setAttribute(Qt::WA_WState_Visible, false); show(); } - update(); } void MediaView::paintEvent(QPaintEvent *e) { QPainter p(this); + QRect r(e->rect()); + + // main bg p.setOpacity(st::medviewLightOpacity); - p.fillRect(QRect(0, 0, st::medviewNavBarWidth, height()), st::black->b); - p.fillRect(QRect(width() - st::medviewNavBarWidth, 0, st::medviewNavBarWidth, height()), st::black->b); - p.fillRect(QRect(st::medviewNavBarWidth, 0, width() - 2 * st::medviewNavBarWidth, height()), st::black->b); + QRect r_bg(st::medviewNavBarWidth, 0, width() - 2 * st::medviewNavBarWidth, height()); + if (r_bg.intersects(r)) p.fillRect(r_bg.intersected(r), st::black->b); + + // header p.setOpacity(1); - p.drawPixmap(_x, _y, (_photo->full->loaded() ? _photo->full : _photo->thumb)->pixNoCache(_w, 0, true)); + p.setPen(st::medviewHeaderColor->p); + p.setFont(st::medviewHeaderFont->f); + QRect r_header(_save.x() + _save.width(), _save.y(), _close.x() - _save.x() - _save.width(), _save.height()); + if (r_header.intersects(r)) p.drawText(r_header, _header, style::al_center); + + // name + p.setPen(nameDateColor(overLevel(OverName))); + if (_over == OverName) _from->nameText.replaceFont(st::msgNameFont->underline()); + if (_nameNav.intersects(r)) _from->nameText.drawElided(p, _nameNav.left(), _nameNav.top(), _nameNav.width()); + if (_over == OverName) _from->nameText.replaceFont(st::msgNameFont); + + // date + p.setPen(nameDateColor(overLevel(OverDate))); + p.setFont((_over == OverDate ? st::medviewDateFont->underline() : st::medviewDateFont)->f); + if (_dateNav.intersects(r)) p.drawText(_dateNav.left(), _dateNav.top() + st::medviewDateFont->ascent, _dateText); + + // left nav bar + if (_leftNavVisible) { + float64 o = overLevel(OverLeftNav); + p.setOpacity(o * st::medviewDarkOpacity + (1 - o) * st::medviewLightOpacity); + if (_leftNav.intersects(r)) p.fillRect(_leftNav.intersected(r), st::black->b); + p.setOpacity(o * st::medviewDarkNav + (1 - o) * st::medviewLightNav); + QPoint p_left((st::medviewNavBarWidth - st::medviewLeft.pxWidth()) / 2, (height() - st::medviewLeft.pxHeight()) / 2); + if (QRect(p_left.x(), p_left.y(), st::medviewLeft.pxWidth(), st::medviewLeft.pxHeight()).intersects(r)) { + p.drawPixmap(p_left, App::sprite(), st::medviewLeft); + } + } else { + p.setOpacity(st::medviewLightOpacity); + if (_leftNav.intersects(r)) p.fillRect(_leftNav.intersected(r), st::black->b); + } + + // right nav bar + if (_rightNavVisible) { + float64 o = overLevel(OverRightNav); + p.setOpacity(o * st::medviewDarkOpacity + (1 - o) * st::medviewLightOpacity); + if (_rightNav.intersects(r)) p.fillRect(_rightNav.intersected(r), st::black->b); + p.setOpacity(o * st::medviewDarkNav + (1 - o) * st::medviewLightNav); + QPoint p_right(width() - (st::medviewNavBarWidth + st::medviewRight.pxWidth()) / 2, (height() - st::medviewRight.pxHeight()) / 2); + if (QRect(p_right.x(), p_right.y(), st::medviewRight.pxWidth(), st::medviewRight.pxHeight()).intersects(r)) { + p.drawPixmap(p_right, App::sprite(), st::medviewRight); + } + } else { + p.setOpacity(st::medviewLightOpacity); + if (_rightNav.intersects(r)) p.fillRect(_rightNav.intersected(r), st::black->b); + } + + // photo + p.setOpacity(1); + if (!_full && _photo->full->loaded()) { + _current = _photo->full->pixNoCache(_w, 0, true); + _full = true; + } else if (_current.isNull() && _photo->thumb->loaded()) { + _current = _photo->thumb->pixBlurredNoCache(_w); + } + if (QRect(_x, _y, _current.width() / cIntRetinaFactor(), _current.height() / cIntRetinaFactor()).intersects(r)) { + p.drawPixmap(_x, _y, _current); + } } void MediaView::keyPressEvent(QKeyEvent *e) { - if (e->key() == Qt::Key_Escape) { - App::wnd()->layerHidden(); + if (!_menu && e->key() == Qt::Key_Escape) { + onClose(); + } 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); + } else if (e->key() == Qt::Key_Right) { + moveToPhoto(1); + } +} + +void MediaView::moveToPhoto(int32 delta) { + if (_index < 0) return; + + int32 newIndex = _index + delta; + if (_history) { + if (newIndex >= 0 && newIndex < _history->_photosOverview.size()) { + _index = newIndex; + if (HistoryItem *item = App::histItemById(_history->_photosOverview[_index])) { + _msgid = item->id; + HistoryPhoto *photo = dynamic_cast<HistoryPhoto*>(item->getMedia()); + if (photo) { + showPhoto(photo->photo()); + preloadPhotos(delta); + } + } + } + if (delta < 0 && _index < MediaOverviewStartPerPage) { + loadPhotosBack(); + } + } else if (_user) { + if (newIndex >= 0 && newIndex < _user->photos.size()) { + _index = newIndex; + showPhoto(_user->photos[_index]); + preloadPhotos(delta); + } + if (delta > 0 && _index > _user->photos.size() - MediaOverviewStartPerPage) { + loadPhotosBack(); + } + } +} + +void MediaView::preloadPhotos(int32 delta) { + if (_index < 0) return; + + int32 from = _index + (delta ? delta : -1), to = _index + (delta ? delta * MediaOverviewPreloadCount : 1); + if (from > to) qSwap(from, to); + if (_history) { + for (int32 i = from; i <= to; ++i) { + if (i >= 0 && i < _history->_photosOverview.size() && i != _index) { + if (HistoryItem *item = App::histItemById(_history->_photosOverview[i])) { + HistoryPhoto *photo = dynamic_cast<HistoryPhoto*>(item->getMedia()); + if (photo) { + photo->photo()->full->load(); + } + } + } + } + } else if (_user) { + for (int32 i = from; i <= to; ++i) { + if (i >= 0 && i < _user->photos.size() && i != _index) { + _user->photos[i]->thumb->load(); + } + } + for (int32 i = from; i <= to; ++i) { + if (i >= 0 && i < _user->photos.size() && i != _index) { + _user->photos[i]->full->load(); + } + } } } void MediaView::mousePressEvent(QMouseEvent *e) { + updateOver(e->pos()); + if (_menu || !_receiveMouse) return; + if (e->button() == Qt::LeftButton) { - App::wnd()->layerHidden(); + _down = OverNone; + if (_over == OverLeftNav && _index >= 0) { + moveToPhoto(-1); + _lastAction = e->pos(); + } else if (_over == OverRightNav && _index >= 0) { + moveToPhoto(1); + _lastAction = e->pos(); + } else if (_over == OverName) { + _down = OverName; + } else if (_over == OverDate) { + _down = OverDate; + } else { + int32 w = st::medviewMainWidth + (st::medviewTopSkip - _save.height()), l = _avail.x() + (_avail.width() - w) / 2; + if (!QRect(l, _avail.y(), w, st::medviewTopSkip).contains(e->pos()) && !QRect(l, _avail.y() + _avail.height() - st::medviewBottomSkip, w, st::medviewBottomSkip).contains(e->pos())) { + if ((e->pos() - _lastAction).manhattanLength() >= st::medviewDeltaFromLastAction) { + onClose(); + } + } + } } } + +void MediaView::mouseMoveEvent(QMouseEvent *e) { + updateOver(e->pos()); + if (_lastAction.x() >= 0 && (e->pos() - _lastAction).manhattanLength() >= st::medviewDeltaFromLastAction) { + _lastAction = QPoint(-st::medviewDeltaFromLastAction, -st::medviewDeltaFromLastAction); + } +} + +bool MediaView::updateOverState(OverState newState) { + bool result = true; + if (_over != newState) { + if (_over != OverNone) { + _animations[_over] = getms(); + ShowingOpacities::iterator i = _animOpacities.find(_over); + if (i != _animOpacities.end()) { + i->start(0); + } else { + _animOpacities.insert(_over, anim::fvalue(1, 0)); + } + anim::start(this); + if (newState != OverNone) update(); + } else { + result = false; + } + _over = newState; + if (newState != OverNone) { + _animations[_over] = getms(); + ShowingOpacities::iterator i = _animOpacities.find(_over); + if (i != _animOpacities.end()) { + i->start(1); + } else { + _animOpacities.insert(_over, anim::fvalue(0, 1)); + } + anim::start(this); + setCursor(style::cur_pointer); + } else { + setCursor(style::cur_default); + } + } + return result; +} + +void MediaView::updateOver(const QPoint &pos) { + if (_leftNavVisible && _leftNav.contains(pos)) { + if (!updateOverState(OverLeftNav)) { + update(_leftNav); + } + } else if (_rightNavVisible && _rightNav.contains(pos)) { + if (!updateOverState(OverRightNav)) { + update(_rightNav); + } + } else if (_nameNav.contains(pos)) { + if (!updateOverState(OverName)) { + update(_nameNav); + } + } else if (_msgid && _dateNav.contains(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); + } + updateOverState(OverNone); + } +} + +void MediaView::mouseReleaseEvent(QMouseEvent *e) { + updateOver(e->pos()); + if (_over == OverName && _down == OverName) { + if (App::wnd()) { + onClose(); + 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); + } + } + } + _down = OverNone; +} + +void MediaView::contextMenuEvent(QContextMenuEvent *e) { + if (_photo && _photo->full->loaded() && (e->reason() != QContextMenuEvent::Mouse || QRect(_x, _y, _current.width() / cIntRetinaFactor(), _current.height() / cIntRetinaFactor()).contains(e->pos()))) { + + if (_menu) { + _menu->deleteLater(); + _menu = 0; + } + _menu = new QMenu(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->setAttribute(Qt::WA_DeleteOnClose); + connect(_menu, SIGNAL(destroyed(QObject*)), this, SLOT(onMenuDestroy(QObject*))); + _menu->popup(e->globalPos()); + e->accept(); + } +} + +void MediaView::touchEvent(QTouchEvent *e) { + switch (e->type()) { + case QEvent::TouchBegin: + if (_touchPress || e->touchPoints().isEmpty()) return; + _touchTimer.start(QApplication::startDragTime()); + _touchPress = true; + _touchMove = _touchRightButton = false; + _touchStart = e->touchPoints().cbegin()->screenPos().toPoint(); + break; + + case QEvent::TouchUpdate: + if (!_touchPress || e->touchPoints().isEmpty()) return; + if (!_touchMove && (e->touchPoints().cbegin()->screenPos().toPoint() - _touchStart).manhattanLength() >= QApplication::startDragDistance()) { + _touchMove = true; + } + break; + + case QEvent::TouchEnd: + if (!_touchPress) return; + if (!_touchMove && App::wnd()) { + Qt::MouseButton btn(_touchRightButton ? Qt::RightButton : Qt::LeftButton); + QPoint mapped(mapFromGlobal(_touchStart)), winMapped(App::wnd()->mapFromGlobal(_touchStart)); + + QMouseEvent pressEvent(QEvent::MouseButtonPress, mapped, winMapped, _touchStart, btn, Qt::MouseButtons(btn), Qt::KeyboardModifiers()); + pressEvent.accept(); + mousePressEvent(&pressEvent); + + QMouseEvent releaseEvent(QEvent::MouseButtonRelease, mapped, winMapped, _touchStart, btn, Qt::MouseButtons(btn), Qt::KeyboardModifiers()); + mouseReleaseEvent(&releaseEvent); + + if (_touchRightButton) { + QContextMenuEvent contextEvent(QContextMenuEvent::Mouse, mapped, _touchStart); + contextMenuEvent(&contextEvent); + } + } else if (_touchMove) { + if ((!_leftNavVisible || !_leftNav.contains(_touchStart)) && (!_rightNavVisible && !_rightNav.contains(_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); + } + } + } + _touchTimer.stop(); + _touchPress = _touchMove = _touchRightButton = false; + break; + + case QEvent::TouchCancel: + _touchPress = false; + _touchTimer.stop(); + break; + } +} + +bool MediaView::event(QEvent *e) { + if (e->type() == QEvent::TouchBegin || e->type() == QEvent::TouchUpdate || e->type() == QEvent::TouchEnd || e->type() == QEvent::TouchCancel) { + QTouchEvent *ev = static_cast<QTouchEvent*>(e); + if (ev->device()->type() == QTouchDevice::TouchScreen) { + touchEvent(ev); + return true; + } + } + return QWidget::event(e); +} + +void MediaView::onMenuDestroy(QObject *obj) { + if (_menu == obj) { + _menu = 0; + } + _receiveMouse = false; + QTimer::singleShot(0, this, SLOT(receiveMouse())); +} + +void MediaView::receiveMouse() { + _receiveMouse = true; +} + +void MediaView::onCheckActive() { + if (App::wnd() && isVisible()) { + if (App::wnd()->isActiveWindow()) { + activateWindow(); + setFocus(); + } + } +} + +void MediaView::onTouchTimer() { + _touchRightButton = true; +} + +void MediaView::loadPhotosBack() { + if (_loadRequest || _index < 0) return; + + if (_history && _history->_photosOverviewCount != 0) { + MsgId minId = 0; + for (History::MediaOverviewIds::const_iterator i = _history->_photosOverviewIds.cbegin(), e = _history->_photosOverviewIds.cend(); i != e; ++i) { + if (*i > 0) { + minId = *i; + break; + } + } + int32 limit = (_index < MediaOverviewStartPerPage && _history->_photosOverview.size() > MediaOverviewStartPerPage) ? SearchPerPage : MediaOverviewStartPerPage; + _loadRequest = MTP::send(MTPmessages_Search(_history->peer->input, MTPstring(), MTP_inputMessagesFilterPhotos(), MTP_int(0), MTP_int(0), MTP_int(0), MTP_int(minId), MTP_int(limit)), rpcDone(&MediaView::photosLoaded, _history)); + } 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)); + } +} + +void MediaView::photosLoaded(History *h, const MTPmessages_Messages &msgs, mtpRequestId req) { + if (req == _loadRequest) { + _loadRequest = 0; + } + + const QVector<MTPMessage> *v = 0; + switch (msgs.type()) { + case mtpc_messages_messages: { + const MTPDmessages_messages &d(msgs.c_messages_messages()); + App::feedUsers(d.vusers); + App::feedChats(d.vchats); + v = &d.vmessages.c_vector().v; + h->_photosOverviewCount = 0; + } break; + + case mtpc_messages_messagesSlice: { + const MTPDmessages_messagesSlice &d(msgs.c_messages_messagesSlice()); + App::feedUsers(d.vusers); + App::feedChats(d.vchats); + h->_photosOverviewCount = d.vcount.v; + v = &d.vmessages.c_vector().v; + } break; + + default: return; + } + + if (h->_photosOverviewCount > 0) { + for (History::MediaOverviewIds::const_iterator i = h->_photosOverviewIds.cbegin(), e = h->_photosOverviewIds.cend(); i != e; ++i) { + if (*i < 0) { + ++h->_photosOverviewCount; + } else { + break; + } + } + } + if (v->isEmpty()) { + h->_photosOverviewCount = 0; + } + + for (QVector<MTPMessage>::const_iterator i = v->cbegin(), e = v->cend(); i != e; ++i) { + HistoryItem *item = App::histories().addToBack(*i, -1); + if (item && h->_photosOverviewIds.constFind(item->id) == h->_photosOverviewIds.cend()) { + h->_photosOverviewIds.insert(item->id); + h->_photosOverview.push_front(item->id); + } + } + if (App::wnd()) App::wnd()->mediaOverviewUpdated(h->peer); + preloadPhotos(0); +} + +void MediaView::userPhotosLoaded(UserData *u, const MTPphotos_Photos &photos, mtpRequestId req) { + if (req == _loadRequest) { + _loadRequest = 0; + } + + const QVector<MTPPhoto> *v = 0; + switch (photos.type()) { + case mtpc_photos_photos: { + const MTPDphotos_photos &d(photos.c_photos_photos()); + App::feedUsers(d.vusers); + v = &d.vphotos.c_vector().v; + u->photosCount = 0; + } break; + + case mtpc_photos_photosSlice: { + const MTPDphotos_photosSlice &d(photos.c_photos_photosSlice()); + App::feedUsers(d.vusers); + u->photosCount = d.vcount.v; + v = &d.vphotos.c_vector().v; + } break; + + default: return; + } + + if (v->isEmpty()) { + u->photosCount = 0; + } + + for (QVector<MTPPhoto>::const_iterator i = v->cbegin(), e = v->cend(); i != e; ++i) { + PhotoData *photo = App::feedPhoto(*i); + photo->thumb->load(); + u->photos.push_back(photo); + } + if (App::wnd()) App::wnd()->mediaOverviewUpdated(u); + preloadPhotos(0); +} + +void MediaView::updateHeader() { + int32 index = _index, count = 0; + if (_history) { + count = _history->_photosOverviewCount ? _history->_photosOverviewCount : _history->_photosOverview.size(); + if (index >= 0) index += count - _history->_photosOverview.size(); + } else if (_user) { + count = _user->photosCount ? _user->photosCount : _user->photos.size(); + } + if (_index >= 0 && _index < count && count > 1) { + _header = lang(lng_mediaview_n_of_count).replace(qsl("{n}"), QString::number(index + 1)).replace(qsl("{count}"), QString::number(count)); + } else if (_user) { + _header = lang(lng_mediaview_profile_photo); + } else if (_peer) { + _header = lang(lng_mediaview_group_photo); + } else { + _header = lang(lng_mediaview_single_photo); + } +} + +float64 MediaView::overLevel(OverState control) { + ShowingOpacities::const_iterator i = _animOpacities.constFind(control); + return (i == _animOpacities.cend()) ? (_over == control ? 1 : 0) : i->current(); +} + +QColor MediaView::nameDateColor(float64 over) { + float64 mover = 1 - over; + QColor result; + result.setRedF(over * st::medviewNameOverColor->c.redF() + mover * st::medviewNameColor->c.redF()); + result.setGreenF(over * st::medviewNameOverColor->c.greenF() + mover * st::medviewNameColor->c.greenF()); + result.setBlueF(over * st::medviewNameOverColor->c.blueF() + mover * st::medviewNameColor->c.blueF()); + result.setAlphaF(over * st::medviewNameOverColor->c.alphaF() + mover * st::medviewNameColor->c.alphaF()); + return result; +} diff --git a/Telegram/SourceFiles/mediaview.h b/Telegram/SourceFiles/mediaview.h index d55da3f5e..b496e0982 100644 --- a/Telegram/SourceFiles/mediaview.h +++ b/Telegram/SourceFiles/mediaview.h @@ -17,7 +17,7 @@ Copyright (c) 2014 John Preston, https://tdesktop.com */ #pragma once -class MediaView : public QWidget { +class MediaView : public QWidget, public RPCSender, public Animated { Q_OBJECT public: @@ -28,16 +28,96 @@ public: void keyPressEvent(QKeyEvent *e); void mousePressEvent(QMouseEvent *e); + void mouseMoveEvent(QMouseEvent *e); + void mouseReleaseEvent(QMouseEvent *e); + void contextMenuEvent(QContextMenuEvent *e); + void touchEvent(QTouchEvent *e); - void showPhoto(PhotoData *photo, const QRect &opaque); + bool event(QEvent *e); + + void updateOver(const QPoint &mpos); + + void showPhoto(PhotoData *photo, HistoryItem *context); + void showPhoto(PhotoData *photo, PeerData *context); void moveToScreen(); + void moveToPhoto(int32 delta); + void preloadPhotos(int32 delta); + + void mediaOverviewUpdated(PeerData *peer); + void changingMsgId(HistoryItem *row, MsgId newId); + void updateControls(); + + bool animStep(float64 dt); + + ~MediaView(); + +public slots: + + void onClose(); + void onSave(); + void onForward(); + void onDelete(); + void onCopy(); + void onMenuDestroy(QObject *obj); + void receiveMouse(); + + void onCheckActive(); + void onTouchTimer(); private: + void showPhoto(PhotoData *photo); + void loadPhotosBack(); + + void photosLoaded(History *h, const MTPmessages_Messages &msgs, mtpRequestId req); + void userPhotosLoaded(UserData *u, const MTPphotos_Photos &photos, mtpRequestId req); + + void updateHeader(); + QTimer _timer; PhotoData *_photo; - QRect _opaqueRect; + QRect _avail, _leftNav, _rightNav, _nameNav, _dateNav; + bool _leftNavVisible, _rightNavVisible; + QString _dateText; int32 _maxWidth, _maxHeight, _x, _y, _w; + QPixmap _current; + bool _full; + History *_history; // if conversation photos overview + PeerData *_peer; + UserData *_user, *_from; // if user profile photos overview + int32 _index; // index in photos array, -1 if just photo + MsgId _msgid; // msgId of current photo + + QString _header; + + mtpRequestId _loadRequest; + + enum OverState { + OverNone, + OverLeftNav, + OverRightNav, + OverName, + OverDate + }; + OverState _over, _down; + QPoint _lastAction; + + FlatButton _close, _save, _forward, _delete; + QMenu *_menu; + bool _receiveMouse; + + bool _touchPress, _touchMove, _touchRightButton; + QTimer _touchTimer; + QPoint _touchStart; + + typedef QMap<OverState, uint64> Showing; + Showing _animations; + typedef QMap<OverState, anim::fvalue> ShowingOpacities; + ShowingOpacities _animOpacities; + + bool updateOverState(OverState newState); + float64 overLevel(OverState control); + QColor nameDateColor(float64 over); }; diff --git a/Telegram/SourceFiles/profilewidget.cpp b/Telegram/SourceFiles/profilewidget.cpp index b8f6e4aba..96a4c1759 100644 --- a/Telegram/SourceFiles/profilewidget.cpp +++ b/Telegram/SourceFiles/profilewidget.cpp @@ -62,7 +62,7 @@ ProfileInner::ProfileInner(ProfileWidget *profile, ScrollArea *scroll, const Pee } else if (_peerChat->photoId) { PhotoData *ph = App::photo(_peerChat->photoId); if (ph->date) { - _photoLink = TextLinkPtr(new PhotoLink(ph)); + _photoLink = TextLinkPtr(new PhotoLink(ph, _peer)); } } else { _loadingId = MTP::send(MTPmessages_GetFullChat(App::peerToMTP(_peerChat->id).c_peerChat().vchat_id), rpcDone(&ProfileInner::gotFullChat)); @@ -213,7 +213,7 @@ void ProfileInner::gotFullUser(const MTPUserFull &user) { App::feedUsers(MTP_vector<MTPUser>(QVector<MTPUser>(1, d.vuser))); PhotoData *userPhoto = _peerUser->photoId ? App::photo(_peerUser->photoId) : 0; if (userPhoto && userPhoto->date) { - _photoLink = TextLinkPtr(new PhotoLink(userPhoto)); + _photoLink = TextLinkPtr(new PhotoLink(userPhoto, _peer)); } else { _photoLink = TextLinkPtr(); } @@ -249,7 +249,7 @@ void ProfileInner::peerUpdated(PeerData *data) { } else { if (_peerChat->photoId) photo = App::photo(_peerChat->photoId); } - _photoLink = (photo && photo->date) ? TextLinkPtr(new PhotoLink(photo)) : TextLinkPtr(); + _photoLink = (photo && photo->date) ? TextLinkPtr(new PhotoLink(photo, _peer)) : TextLinkPtr(); if (_peer->name != _nameCache) { _nameCache = _peer->name; _nameText.setText(st::profileNameFont, _nameCache, _textNameOptions); diff --git a/Telegram/SourceFiles/settingswidget.cpp b/Telegram/SourceFiles/settingswidget.cpp index 1b3fe62c2..47c9b2d4e 100644 --- a/Telegram/SourceFiles/settingswidget.cpp +++ b/Telegram/SourceFiles/settingswidget.cpp @@ -155,7 +155,7 @@ SettingsInner::SettingsInner(SettingsWidget *parent) : QWidget(parent), if (_self) { _nameText.setText(st::setNameFont, _nameCache, _textNameOptions); PhotoData *selfPhoto = _self->photoId ? App::photo(_self->photoId) : 0; - if (selfPhoto && selfPhoto->date) _photoLink = TextLinkPtr(new PhotoLink(selfPhoto)); + if (selfPhoto && selfPhoto->date) _photoLink = TextLinkPtr(new PhotoLink(selfPhoto, _self)); MTP::send(MTPusers_GetFullUser(_self->inputUser), rpcDone(&SettingsInner::gotFullSelf)); connect(App::main(), SIGNAL(peerPhotoChanged(PeerData *)), this, SLOT(peerUpdated(PeerData *))); @@ -257,7 +257,7 @@ void SettingsInner::peerUpdated(PeerData *data) { if (_self->photoId) { PhotoData *selfPhoto = App::photo(_self->photoId); if (selfPhoto->date) { - _photoLink = TextLinkPtr(new PhotoLink(selfPhoto)); + _photoLink = TextLinkPtr(new PhotoLink(selfPhoto, _self)); } else { _photoLink = TextLinkPtr(); MTP::send(MTPusers_GetFullUser(_self->inputUser), rpcDone(&SettingsInner::gotFullSelf)); @@ -612,7 +612,7 @@ void SettingsInner::gotFullSelf(const MTPUserFull &self) { App::feedUsers(MTP_vector<MTPUser>(QVector<MTPUser>(1, self.c_userFull().vuser))); PhotoData *selfPhoto = _self->photoId ? App::photo(_self->photoId) : 0; if (selfPhoto && selfPhoto->date) { - _photoLink = TextLinkPtr(new PhotoLink(selfPhoto)); + _photoLink = TextLinkPtr(new PhotoLink(selfPhoto, _self)); } else { _photoLink = TextLinkPtr(); } diff --git a/Telegram/SourceFiles/window.cpp b/Telegram/SourceFiles/window.cpp index eb3c4840e..a97bdf9e8 100644 --- a/Telegram/SourceFiles/window.cpp +++ b/Telegram/SourceFiles/window.cpp @@ -336,7 +336,7 @@ NotifyWindow::~NotifyWindow() { } Window::Window(QWidget *parent) : PsMainWindow(parent), - intro(0), main(0), settings(0), layer(0), layerBG(0), _topWidget(0), _mediaView(0), + intro(0), main(0), settings(0), layerBG(0), _topWidget(0), _mediaView(0), _connecting(0), _tempDeleter(0), _tempDeleterThread(0), myIcon(QPixmap::fromImage(icon256)), dragging(false), _inactivePress(false) { if (objectName().isEmpty()) @@ -391,6 +391,10 @@ void Window::init() { psUpdateWorkmode(); } +QWidget *Window::filedialogParent() { + return (_mediaView && _mediaView->isVisible()) ? (QWidget*)_mediaView : (QWidget*)this; +} + void Window::clearWidgets() { layerHidden(); if (settings) { @@ -547,29 +551,23 @@ SettingsWidget *Window::settingsWidget() { } void Window::showPhoto(const PhotoLink *lnk, HistoryItem *item) { - return showPhoto(lnk->photo(), item); + return lnk->peer() ? showPhoto(lnk->photo(), lnk->peer()) : showPhoto(lnk->photo(), item); } - void Window::showPhoto(PhotoData *photo, HistoryItem *item) { layerHidden(); - _mediaView->showPhoto(photo, QRect()); + _mediaView->showPhoto(photo, item); _mediaView->activateWindow(); _mediaView->setFocus(); -// layer = new LayerWidget(this, photo, item); } -PhotoData *Window::photoShown() { - return layer ? layer->photoShown() : 0; -} - -/* -void Window::showVideo(const VideoOpenLink *lnk, HistoryItem *item) { +void Window::showPhoto(PhotoData *photo, PeerData *peer) { layerHidden(); - VideoData *video = App::video(lnk->video()); - layer = new LayerWidget(this, video, item); + _mediaView->showPhoto(photo, peer); + _mediaView->activateWindow(); + _mediaView->setFocus(); } -/**/ + void Window::showLayer(LayeredWidget *w) { layerHidden(); layerBG = new BackgroundWidget(this, w); @@ -594,8 +592,6 @@ void Window::hideConnecting() { } void Window::replaceLayer(LayeredWidget *w) { - if (layer) layer->deleteLater(); - layer = 0; if (layerBG) { layerBG->replaceInner(w); } else { @@ -607,13 +603,13 @@ void Window::hideLayer() { if (layerBG) { layerBG->onClose(); } - if (layer) { - layer->startHide(); + if (_mediaView && !_mediaView->isHidden()) { + _mediaView->hide(); } } bool Window::layerShown() { - return !!layer || !!layerBG || !!_topWidget; + return !!layerBG || !!_topWidget; } bool Window::historyIsActive(int state) const { @@ -627,11 +623,9 @@ void Window::checkHistoryActivation(int state) { } void Window::layerHidden() { - if (layer) layer->deleteLater(); - layer = 0; if (layerBG) layerBG->deleteLater(); layerBG = 0; - if (_mediaView) _mediaView->hide(); + if (_mediaView && !_mediaView->isHidden()) _mediaView->hide(); if (main) main->setInnerFocus(); } @@ -685,7 +679,7 @@ HitTestType Window::hitTest(const QPoint &p) const { } } HitTestType titleTest = title->hitTest(p - title->geometry().topLeft()); - if (titleTest && (!layer || titleTest != HitTestCaption)) { + if (titleTest) { return titleTest; } else if (x >= 0 && y >= 0 && x < w && y < h) { return HitTestClient; @@ -826,13 +820,6 @@ void Window::noMain(MainWidget *was) { } } -void Window::noLayer(LayerWidget *was) { - if (was == layer) { - layer = 0; - } - fixOrder(); -} - void Window::noBox(BackgroundWidget *was) { if (was == layerBG) { layerBG = 0; @@ -841,7 +828,6 @@ void Window::noBox(BackgroundWidget *was) { void Window::fixOrder() { title->raise(); - if (layer) layer->raise(); if (layerBG) layerBG->raise(); if (_topWidget) _topWidget->raise(); if (_connecting) _connecting->raise(); @@ -890,7 +876,6 @@ TitleWidget *Window::getTitle() { void Window::resizeEvent(QResizeEvent *e) { title->setGeometry(QRect(0, 0, width(), st::titleHeight + st::titleShadow)); - if (layer) layer->resize(width(), height()); if (layerBG) layerBG->resize(width(), height()); if (_connecting) _connecting->setGeometry(0, height() - _connecting->height(), _connecting->width(), _connecting->height()); emit resized(QSize(width(), height() - st::titleHeight)); @@ -1206,7 +1191,7 @@ void Window::notifyUpdateAllPhotos() { (*i)->updatePeerPhoto(); } } - if (_mediaView) _mediaView->update(); + if (_mediaView) _mediaView->updateControls(); } void Window::notifyUpdateAll() { @@ -1231,6 +1216,7 @@ QImage Window::iconLarge() const { } void Window::sendPaths() { + if (_mediaView && !_mediaView->isHidden()) _mediaView->hide(); if (settings) { hideSettings(); } else { @@ -1243,6 +1229,16 @@ void Window::sendPaths() { } } +void Window::mediaOverviewUpdated(PeerData *peer) { + if (!_mediaView || _mediaView->isHidden()) return; + _mediaView->mediaOverviewUpdated(peer); +} + +void Window::changingMsgId(HistoryItem *row, MsgId newId) { + if (!_mediaView || _mediaView->isHidden()) return; + _mediaView->changingMsgId(row, newId); +} + Window::~Window() { notifyClearFast(); delete _tempDeleter; @@ -1253,6 +1249,5 @@ Window::~Window() { delete trayIconMenu; delete intro; delete main; - delete layer; delete settings; } diff --git a/Telegram/SourceFiles/window.h b/Telegram/SourceFiles/window.h index c7b10bd5e..3fa5df141 100644 --- a/Telegram/SourceFiles/window.h +++ b/Telegram/SourceFiles/window.h @@ -27,7 +27,6 @@ class TitleWidget; class IntroWidget; class MainWidget; class SettingsWidget; -class LayerWidget; class BackgroundWidget; class LayeredWidget; @@ -135,6 +134,8 @@ public: void init(); + QWidget *filedialogParent(); + bool eventFilter(QObject *obj, QEvent *evt); void inactivePress(bool inactive); @@ -173,9 +174,8 @@ public: void hideSettings(bool fast = false); void showPhoto(const PhotoLink *lnk, HistoryItem *item = 0); - void showPhoto(PhotoData *photo, HistoryItem *item = 0); -// void showVideo(const VideoOpenLink *lnk, HistoryItem *item = 0); - PhotoData *photoShown(); + void showPhoto(PhotoData *photo, HistoryItem *item); + void showPhoto(PhotoData *photo, PeerData *item); void showLayer(LayeredWidget *w); void replaceLayer(LayeredWidget *w); void hideLayer(); @@ -194,7 +194,6 @@ public: void noIntro(IntroWidget *was); void noSettings(SettingsWidget *was); void noMain(MainWidget *was); - void noLayer(LayerWidget *was); void noBox(BackgroundWidget *was); void topWidget(QWidget *w); @@ -228,6 +227,9 @@ public: void sendPaths(); + void mediaOverviewUpdated(PeerData *peer); + void changingMsgId(HistoryItem *row, MsgId newId); + public slots: void checkHistoryActivation(int state = -1); @@ -263,7 +265,6 @@ private: IntroWidget *intro; MainWidget *main; SettingsWidget *settings; - LayerWidget *layer; BackgroundWidget *layerBG; QWidget *_topWidget; // temp hack for CountrySelect