From c42b142884d472c2f8fe5e9f4ab4e2652abccc38 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 20 May 2016 18:35:58 +0300 Subject: [PATCH] Divider added to new profiles. Icons from new styles can fill rects. --- .../Resources/icons/profile_divider_fill.png | Bin 0 -> 96 bytes .../icons/profile_divider_fill@2x.png | Bin 0 -> 109 bytes .../Resources/icons/profile_divider_left.png | Bin 0 -> 114 bytes .../icons/profile_divider_left@2x.png | Bin 0 -> 155 bytes .../SourceFiles/codegen/style/parsed_file.cpp | 60 ++++++++++++------ .../SourceFiles/codegen/style/parsed_file.h | 3 + Telegram/SourceFiles/profile/profile.style | 12 +++- .../profile/profile_block_widget.cpp | 47 ++++++++++++++ .../profile/profile_block_widget.h | 56 ++++++++++++++++ .../SourceFiles/profile/profile_cover.cpp | 16 ++++- Telegram/SourceFiles/profile/profile_cover.h | 4 ++ .../profile/profile_inner_widget.cpp | 3 +- .../SourceFiles/ui/style/style_core_icon.cpp | 29 ++++++++- .../SourceFiles/ui/style/style_core_icon.h | 3 + Telegram/Telegram.vcxproj | 27 ++++++++ Telegram/Telegram.vcxproj.filters | 15 +++++ 16 files changed, 250 insertions(+), 25 deletions(-) create mode 100644 Telegram/Resources/icons/profile_divider_fill.png create mode 100644 Telegram/Resources/icons/profile_divider_fill@2x.png create mode 100644 Telegram/Resources/icons/profile_divider_left.png create mode 100644 Telegram/Resources/icons/profile_divider_left@2x.png create mode 100644 Telegram/SourceFiles/profile/profile_block_widget.cpp create mode 100644 Telegram/SourceFiles/profile/profile_block_widget.h diff --git a/Telegram/Resources/icons/profile_divider_fill.png b/Telegram/Resources/icons/profile_divider_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..f212416e798b535b787b9b795d237ff51d2c7cf7 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrA!3HEtFPV4&DRoa5#}JO0$rGkb`E&lu>+AY# v%kJ;5H#YeD_xJS1&c;SY>w{;`oMB+-oz7+REdAa_pcV#CS3j3^P6gTe~ HDWM4fI)5eg literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/profile_divider_left.png b/Telegram/Resources/icons/profile_divider_left.png new file mode 100644 index 0000000000000000000000000000000000000000..c4d4c3aa116da865dddfc792ee476b5ee83423c1 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y=!3HD?)t{6DDN9cm#}JO0b5Cp(Wl-cf9H827 zxat3-gxO8cUIl*-H5R_DlK6J-#4ie+#eCads@!lBI=kFHBGmPJwfMnCCDp9ApBRCL OFnGH9xvXg(GHD` z$d)eu-=}^t>i6kazlC21J+3{(RsGve*W5BPROkUqByXJ2{8@I=K-(BRUHx3vIVCg! E0PjyW5dZ)H literal 0 HcmV?d00001 diff --git a/Telegram/SourceFiles/codegen/style/parsed_file.cpp b/Telegram/SourceFiles/codegen/style/parsed_file.cpp index 1a397765f..859a7a428 100644 --- a/Telegram/SourceFiles/codegen/style/parsed_file.cpp +++ b/Telegram/SourceFiles/codegen/style/parsed_file.cpp @@ -535,8 +535,8 @@ structure::Value ParsedFile::readPointValue() { if (tokenValue(font) == "point") { assertNextToken(BasicType::LeftParenthesis); - auto x = readNumericValue(); assertNextToken(BasicType::Comma); - auto y = readNumericValue(); + auto x = readNumericOrNumericCopyValue(); assertNextToken(BasicType::Comma); + auto y = readNumericOrNumericCopyValue(); if (x.type().tag != structure::TypeTag::Pixels || y.type().tag != structure::TypeTag::Pixels) { logErrorTypeMismatch() << "expected two px values for the point"; @@ -581,8 +581,8 @@ structure::Value ParsedFile::readSizeValue() { if (tokenValue(font) == "size") { assertNextToken(BasicType::LeftParenthesis); - auto w = readNumericValue(); assertNextToken(BasicType::Comma); - auto h = readNumericValue(); + auto w = readNumericOrNumericCopyValue(); assertNextToken(BasicType::Comma); + auto h = readNumericOrNumericCopyValue(); if (w.type().tag != structure::TypeTag::Pixels || h.type().tag != structure::TypeTag::Pixels) { logErrorTypeMismatch() << "expected two px values for the size"; @@ -662,10 +662,10 @@ structure::Value ParsedFile::readMarginsValue() { if (tokenValue(font) == "margins") { assertNextToken(BasicType::LeftParenthesis); - auto l = readNumericValue(); assertNextToken(BasicType::Comma); - auto t = readNumericValue(); assertNextToken(BasicType::Comma); - auto r = readNumericValue(); assertNextToken(BasicType::Comma); - auto b = readNumericValue(); + auto l = readNumericOrNumericCopyValue(); assertNextToken(BasicType::Comma); + auto t = readNumericOrNumericCopyValue(); assertNextToken(BasicType::Comma); + auto r = readNumericOrNumericCopyValue(); assertNextToken(BasicType::Comma); + auto b = readNumericOrNumericCopyValue(); if (l.type().tag != structure::TypeTag::Pixels || t.type().tag != structure::TypeTag::Pixels || r.type().tag != structure::TypeTag::Pixels || @@ -701,18 +701,10 @@ structure::Value ParsedFile::readFontValue() { file_.putBack(); } } - if (auto familyValue = readStringValue()) { + if (auto familyValue = readStringOrStringCopyValue()) { family = familyValue; - } else if (auto sizeValue = readNumericValue()) { + } else if (auto sizeValue = readNumericOrNumericCopyValue()) { size = sizeValue; - } else if (auto copyValue = readCopyValue()) { - if (copyValue.type().tag == structure::TypeTag::String) { - family = copyValue; - } else if (copyValue.type().tag == structure::TypeTag::Pixels) { - size = copyValue; - } else { - logErrorUnexpectedToken() << "font family, font size or ')'"; - } } else if (file_.getToken(BasicType::RightParenthesis)) { break; } else { @@ -776,7 +768,37 @@ structure::Value ParsedFile::readCopyValue() { if (auto variable = module_->findVariable(name)) { return variable->value.makeCopy(variable->name); } - logError(kErrorIdentifierNotFound) << "identifier '" << logFullName(name) << "' not found"; + file_.putBack(); + } + return {}; +} + +structure::Value ParsedFile::readNumericOrNumericCopyValue() { + if (auto result = readNumericValue()) { + return result; + } else if (auto copy = readCopyValue()) { + auto type = copy.type().tag; + if (type == structure::TypeTag::Int + || type == structure::TypeTag::Double + || type == structure::TypeTag::Pixels) { + return copy; + } else { + file_.putBack(); + } + } + return {}; +} + +structure::Value ParsedFile::readStringOrStringCopyValue() { + if (auto result = readStringValue()) { + return result; + } else if (auto copy = readCopyValue()) { + auto type = copy.type().tag; + if (type == structure::TypeTag::String) { + return copy; + } else { + file_.putBack(); + } } return {}; } diff --git a/Telegram/SourceFiles/codegen/style/parsed_file.h b/Telegram/SourceFiles/codegen/style/parsed_file.h index 158782c53..afe641da5 100644 --- a/Telegram/SourceFiles/codegen/style/parsed_file.h +++ b/Telegram/SourceFiles/codegen/style/parsed_file.h @@ -98,6 +98,9 @@ private: structure::Value readIconValue(); structure::Value readCopyValue(); + structure::Value readNumericOrNumericCopyValue(); + structure::Value readStringOrStringCopyValue(); + structure::data::monoicon readMonoIconFields(); QString readMonoIconFilename(); diff --git a/Telegram/SourceFiles/profile/profile.style b/Telegram/SourceFiles/profile/profile.style index 5ec69df55..214095fdb 100644 --- a/Telegram/SourceFiles/profile/profile.style +++ b/Telegram/SourceFiles/profile/profile.style @@ -44,7 +44,17 @@ profileStatusTop: 35px; profileStatusFont: normalFont; profileStatusFg: windowSubTextFg; profileMarginBottom: 30px; -profileSeparator: 10px; + +profileDividerFg: black; +profileDividerLeft: icon { + { "profile_divider_left", profileDividerFg }, +}; +profileDividerFill: icon { + { "profile_divider_fill", profileDividerFg }, +}; profileBlocksTop: 7px; profileBlockMarginTop: 21px; +profileBlockTitleFont: semiboldFont; +profileBlockTitleFg: black; +profileBlockTitlePosition: point(16px, profileBlockMarginTop); \ No newline at end of file diff --git a/Telegram/SourceFiles/profile/profile_block_widget.cpp b/Telegram/SourceFiles/profile/profile_block_widget.cpp new file mode 100644 index 000000000..abfe8453b --- /dev/null +++ b/Telegram/SourceFiles/profile/profile_block_widget.cpp @@ -0,0 +1,47 @@ +/* +This file is part of Telegram Desktop, +the official desktop version of Telegram messaging app, see https://telegram.org + +Telegram Desktop is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +It is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +In addition, as a special exception, the copyright holders give permission +to link the code of portions of this program with the OpenSSL library. + +Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE +Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org +*/ +#include "stdafx.h" +#include "profile/profile_block_widget.h" + +#include "styles/style_profile.h" + +namespace Profile { + +BlockWidget::BlockWidget(QWidget *parent, PeerData *peer, const QString &title) : TWidget(parent) +, _peer(peer) +, _title(title) { +} + +void BlockWidget::resizeToWidth(int newWidth) { + resize(newWidth, resizeGetHeight(newWidth)); +} + +void BlockWidget::paintEvent(QPaintEvent *e) { + Painter p(this); + + p.setFont(st::profileBlockTitleFont); + p.setPen(st::profileBlockTitleFg); + p.drawText(st::profileBlockTitlePosition, _title); + + paintContents(p); +} + +} // namespace Profile diff --git a/Telegram/SourceFiles/profile/profile_block_widget.h b/Telegram/SourceFiles/profile/profile_block_widget.h new file mode 100644 index 000000000..313e0d747 --- /dev/null +++ b/Telegram/SourceFiles/profile/profile_block_widget.h @@ -0,0 +1,56 @@ +/* +This file is part of Telegram Desktop, +the official desktop version of Telegram messaging app, see https://telegram.org + +Telegram Desktop is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +It is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +In addition, as a special exception, the copyright holders give permission +to link the code of portions of this program with the OpenSSL library. + +Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE +Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org +*/ +#pragma once + +namespace Profile { + +class BlockWidget : public TWidget { + Q_OBJECT + +public: + BlockWidget(QWidget *parent, PeerData *peer, const QString &title); + + // Count new height for width=newWidth and resize to it. + void resizeToWidth(int newWidth); + + // Updates the area that is visible inside the scroll container. + virtual void setVisibleTopBottom(int visibleTop, int visibleBottom) { + } + +protected: + void paintEvent(QPaintEvent *e) override; + virtual void paintContents(Painter &p) { + } + + // Resizes content and counts natural widget height for the desired width. + virtual int resizeGetHeight(int newWidth) = 0; + + PeerData *peer() const { + return _peer; + } + +private: + PeerData *_peer; + QString _title; + +}; + +} // namespace Profile diff --git a/Telegram/SourceFiles/profile/profile_cover.cpp b/Telegram/SourceFiles/profile/profile_cover.cpp index 98ba80f27..08126174b 100644 --- a/Telegram/SourceFiles/profile/profile_cover.cpp +++ b/Telegram/SourceFiles/profile/profile_cover.cpp @@ -119,7 +119,9 @@ void CoverWidget::resizeToWidth(int newWidth) { newHeight += st::profilePhotoSize; newHeight += st::profileMarginBottom; - newHeight += st::profileSeparator; + + _dividerTop = newHeight; + newHeight += st::profileDividerFill.height(); newHeight += st::profileBlocksTop; @@ -130,7 +132,7 @@ void CoverWidget::resizeToWidth(int newWidth) { void CoverWidget::paintEvent(QPaintEvent *e) { Painter p(this); - p.fillRect(e->rect(), st::white); + p.fillRect(e->rect(), st::profileBg); int availWidth = width() - _namePosition.x() - _photoButton->x(); p.setFont(st::profileNameFont); @@ -140,6 +142,16 @@ void CoverWidget::paintEvent(QPaintEvent *e) { p.setFont(st::profileStatusFont); p.setPen(st::profileStatusFg); p.drawTextLeft(_statusPosition.x(), _statusPosition.y(), width(), _statusText); + + paintDivider(p); +} + +void CoverWidget::paintDivider(Painter &p) { + st::profileDividerLeft.paint(p, QPoint(st::lineWidth, _dividerTop), width()); + + int toFillLeft = st::lineWidth + st::profileDividerLeft.width(); + QRect toFill = rtlrect(toFillLeft, _dividerTop, width() - toFillLeft, st::profileDividerFill.height(), width()); + st::profileDividerFill.fill(p, toFill); } void CoverWidget::updateStatusText() { diff --git a/Telegram/SourceFiles/profile/profile_cover.h b/Telegram/SourceFiles/profile/profile_cover.h index 1f06abcca..de911a08a 100644 --- a/Telegram/SourceFiles/profile/profile_cover.h +++ b/Telegram/SourceFiles/profile/profile_cover.h @@ -44,6 +44,8 @@ private: void updateStatusText(); bool isUsingMegagroupOnlineCount() const; + void paintDivider(Painter &p); + PeerData *_peer; UserData *_peerUser; ChatData *_peerChat; @@ -59,6 +61,8 @@ private: QPoint _statusPosition; QString _statusText; + int _dividerTop; + ChildWidget _primaryButton = { nullptr }; ChildWidget _secondaryButton = { nullptr }; diff --git a/Telegram/SourceFiles/profile/profile_inner_widget.cpp b/Telegram/SourceFiles/profile/profile_inner_widget.cpp index 49580822b..408ecf18c 100644 --- a/Telegram/SourceFiles/profile/profile_inner_widget.cpp +++ b/Telegram/SourceFiles/profile/profile_inner_widget.cpp @@ -30,6 +30,7 @@ namespace Profile { InnerWidget::InnerWidget(QWidget *parent, PeerData *peer) : TWidget(parent) , _peer(peer) , _cover(this, peer) { + setAttribute(Qt::WA_OpaquePaintEvent); } void InnerWidget::resizeToWidth(int newWidth, int minHeight) { @@ -62,7 +63,7 @@ void InnerWidget::decreaseAdditionalHeight(int removeHeight) { void InnerWidget::paintEvent(QPaintEvent *e) { Painter p(this); - p.fillRect(e->rect(), st::white); + p.fillRect(e->rect(), st::profileBg); } void InnerWidget::mousePressEvent(QMouseEvent *e) { // TEMP for testing diff --git a/Telegram/SourceFiles/ui/style/style_core_icon.cpp b/Telegram/SourceFiles/ui/style/style_core_icon.cpp index 203ef8bfc..83bd66a26 100644 --- a/Telegram/SourceFiles/ui/style/style_core_icon.cpp +++ b/Telegram/SourceFiles/ui/style/style_core_icon.cpp @@ -85,6 +85,11 @@ int MonoIcon::height() const { return _size.height(); } +QSize MonoIcon::size() const { + ensureLoaded(); + return _size; +} + QPoint MonoIcon::offset() const { return _offset; } @@ -103,6 +108,15 @@ void MonoIcon::paint(QPainter &p, const QPoint &pos, int outerw) const { } } +void MonoIcon::fill(QPainter &p, const QRect &rect) const { + ensureLoaded(); + if (_pixmap.isNull()) { + p.fillRect(rect, _color); + } else { + p.drawPixmap(rect, _pixmap, QRect(0, 0, _pixmap.width(), _pixmap.height())); + } +} + void MonoIcon::ensureLoaded() const { if (_size.isValid()) { return; @@ -162,15 +176,26 @@ MonoIcon::MonoIcon(const IconMask *mask, const Color &color, QPoint offset, Owni } void Icon::paint(QPainter &p, const QPoint &pos, int outerw) const { - for_const (const auto &part, _parts) { + for_const (auto &part, _parts) { part.paint(p, pos, outerw); } } +void Icon::fill(QPainter &p, const QRect &rect) const { + if (_parts.isEmpty()) return; + + auto partSize = _parts.at(0).size(); + for_const (auto &part, _parts) { + t_assert(part.offset() == QPoint(0, 0)); + t_assert(part.size() == partSize); + part.fill(p, rect); + } +} + int Icon::width() const { if (_width < 0) { _width = 0; - for_const (const auto &part, _parts) { + for_const (auto &part, _parts) { accumulate_max(_width, part.offset().x() + part.width()); } } diff --git a/Telegram/SourceFiles/ui/style/style_core_icon.h b/Telegram/SourceFiles/ui/style/style_core_icon.h index 7c424026f..446c6258c 100644 --- a/Telegram/SourceFiles/ui/style/style_core_icon.h +++ b/Telegram/SourceFiles/ui/style/style_core_icon.h @@ -52,9 +52,11 @@ public: int width() const; int height() const; + QSize size() const; QPoint offset() const; void paint(QPainter &p, const QPoint &pos, int outerw) const; + void fill(QPainter &p, const QRect &rect) const; MonoIcon clone(const Color &color) const { return MonoIcon(_mask, color ? color : _color, _offset, OwningPixmapTag()); @@ -104,6 +106,7 @@ public: } void paint(QPainter &p, const QPoint &pos, int outerw) const; + void fill(QPainter &p, const QRect &rect) const; int width() const; int height() const; diff --git a/Telegram/Telegram.vcxproj b/Telegram/Telegram.vcxproj index b96571968..89c43e219 100644 --- a/Telegram/Telegram.vcxproj +++ b/Telegram/Telegram.vcxproj @@ -390,6 +390,10 @@ true true + + true + true + true true @@ -701,6 +705,10 @@ true true + + true + true + true true @@ -1038,6 +1046,10 @@ true true + + true + true + true true @@ -1199,6 +1211,7 @@ + @@ -1527,6 +1540,20 @@ .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/profile/profile_fixed_bar.h" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore\5.6.0\QtCore" "-I$(QTDIR)\include\QtGui\5.6.0\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I.\..\..\Libraries\openssl\Release\include" + + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing profile_block_widget.h... + .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/profile/profile_block_widget.h" -DAL_LIBTYPE_STATIC -DCUSTOM_API_ID -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore\5.6.0\QtCore" "-I$(QTDIR)\include\QtGui\5.6.0\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I.\..\..\Libraries\openssl\Release\include" + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing profile_block_widget.h... + .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/profile/profile_block_widget.h" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -D_SCL_SECURE_NO_WARNINGS "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore\5.6.0\QtCore" "-I$(QTDIR)\include\QtGui\5.6.0\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I.\..\..\Libraries\openssl_debug\Debug\include" + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing profile_block_widget.h... + .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fstdafx.h" "-f../../SourceFiles/profile/profile_block_widget.h" -DAL_LIBTYPE_STATIC -DUNICODE -DWIN32 -DWIN64 -DHAVE_STDINT_H -DZLIB_WINAPI -DQT_NO_DEBUG -DNDEBUG -D_SCL_SECURE_NO_WARNINGS "-I.\SourceFiles" "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore\5.6.0\QtCore" "-I$(QTDIR)\include\QtGui\5.6.0\QtGui" "-I.\..\..\Libraries\breakpad\src" "-I.\..\..\Libraries\lzma\C" "-I.\..\..\Libraries\libexif-0.6.20" "-I.\..\..\Libraries\zlib-1.2.8" "-I.\..\..\Libraries\ffmpeg" "-I.\..\..\Libraries\openal-soft\include" "-I.\ThirdParty\minizip" "-I.\..\..\Libraries\openssl\Release\include" + diff --git a/Telegram/Telegram.vcxproj.filters b/Telegram/Telegram.vcxproj.filters index 0fec8a251..58b4e144e 100644 --- a/Telegram/Telegram.vcxproj.filters +++ b/Telegram/Telegram.vcxproj.filters @@ -1188,6 +1188,18 @@ SourceFiles\profile + + GeneratedFiles\Deploy + + + GeneratedFiles\Debug + + + GeneratedFiles\Release + + + SourceFiles\profile + @@ -1633,6 +1645,9 @@ SourceFiles\window + + SourceFiles\profile +