Compare commits

...

79 Commits

Author SHA1 Message Date
John Preston
85ca7e0f05 version 0.6.10 prepared 2014-11-18 15:59:16 +03:00
John Preston
28c8d125cf Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2014-11-18 15:41:51 +03:00
John Preston
799a81966a min connection timeout 4secs, fixed photo display, thumbs size is less now, update button text and animation added 2014-11-18 15:41:33 +03:00
John Preston
6333bc59b1 fixed os x dark theme tray icon, added os x main menu 2014-11-18 15:40:43 +03:00
John Preston
d953f894a1 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2014-11-15 02:24:00 +03:00
John Preston
868b9843b0 version 0.6.9 - some network and protocol improvements, checkboxes in photos overview, other fixes 2014-11-15 02:23:35 +03:00
John Preston
c89f13bb53 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2014-11-13 21:32:24 +03:00
John Preston
722c801f8a fixed pspecific_linux 2014-11-13 10:32:06 -08:00
John Preston
269e588ad0 version 0.6.8 prepared 2014-11-13 21:32:03 +03:00
John Preston
4ee33d3bd9 added os x window icon and qt os x build fix to git 2014-11-13 21:26:39 +03:00
John Preston
85285d9862 fixed os x mouse input, window icon, qt os x build-from-source 2014-11-13 21:26:17 +03:00
John Preston
84226635b2 locations displayed as image links from google maps, killSession crash fixed 2014-11-13 14:27:10 +03:00
John Preston
8ed0cb7bf1 youtube and instagram links wrap fixed for os x 2014-11-13 01:35:00 +03:00
John Preston
55649ad6c4 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2014-11-12 23:30:32 +03:00
John Preston
379c5f75e7 os x setup done, fixing localtime on each os x wakeup or application active status change 2014-11-12 23:30:26 +03:00
John Preston
a75f57beb8 youtube and instagram preview display added (instead of messages with only one such link) 2014-11-12 23:18:00 +03:00
John Preston
e0ef1d434d version 0.6.7: invokeAfter, long messages split, protocol implementation improvements 2014-11-05 20:43:32 +03:00
John Preston
cdff62547b fixed to os x warnings 2014-10-31 15:57:32 +03:00
John Preston
5dc9cdbd3c version 0.6.6 - some network fixes and download/upload optimizations 2014-10-30 19:23:44 +03:00
John Preston
a8fd1c54c0 2x sprite updated 2014-10-30 19:14:03 +03:00
John Preston
cc45e06ea9 fixed some emojis not displayed in os x font 2014-10-25 19:40:20 +04:00
John Preston
898f8e66c1 fixed debug logs in os x crashes 2014-10-25 13:25:18 +04:00
John Preston
a9a01cf396 fixed << and >> for linux, global people search found part highlight 2014-10-23 20:05:33 +04:00
John Preston
0685cf34d3 fixed username save error 2014-10-23 00:27:49 +04:00
John Preston
4991b6743f Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2014-10-22 23:45:38 +04:00
John Preston
12ff311114 fixed settings on restart 2014-10-22 23:44:30 +04:00
John Preston
38f606b612 version 0.6.5 done for linux 2014-10-22 23:26:33 +04:00
John Preston
b4427a0073 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2014-10-22 23:02:01 +04:00
John Preston
f0900bc02e version 0.6.5: usernames 2014-10-22 23:01:13 +04:00
John Preston
5dfd499e07 usernames merged to os x and linux builds 2014-10-22 22:55:15 +04:00
John Preston
30ae073080 username support added, layer 18 2014-10-22 22:39:03 +04:00
John Preston
3daa74ff27 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2014-10-21 02:50:02 +04:00
John Preston
ccba1c8c6f some changes made to debug tl text serialize 2014-10-21 02:49:37 +04:00
John Preston
8f8a1e0d1f Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2014-10-17 23:49:31 +04:00
John Preston
ac81f16107 removed warning in linux 2014-10-17 23:49:02 +04:00
John Preston
ebe9b4f80f fixed os x 10.10 dragndrop 2014-10-17 23:14:42 +04:00
John Preston
b35b3bcb87 some template send improvements 2014-10-17 22:32:34 +04:00
John Preston
21a7e0243c fixed read history on msg forward 2014-10-17 19:18:57 +04:00
John Preston
8c668cfa24 version 0.6.4 prepared 2014-10-17 17:36:02 +04:00
John Preston
87d795807d added linux deploy script to git 2014-10-17 17:27:48 +04:00
John Preston
6377f59e23 added linux deploy script to git 2014-10-17 17:27:05 +04:00
John Preston
c81beeb023 fixed new photoviewer for linux 2014-10-17 17:24:17 +04:00
John Preston
f07606a0ce photoviewer updated, recent emojis filled with some by default 2014-10-17 16:57:14 +04:00
John Preston
e1adf54b36 fixed gif animations for wide gifs 2014-10-10 17:47:39 +04:00
John Preston
09e2fbaa6b inline gif view done, some design improvements, version 0.6.3 2014-10-10 16:46:20 +04:00
John Preston
3009200b76 fixed crash on logout 2014-10-08 11:45:32 +04:00
John Preston
e0910bfb3e fixed dialogs preloading on scroll 2014-10-08 11:42:36 +04:00
John Preston
d874609816 fixed mediaview zoom 2014-10-07 22:38:22 +04:00
John Preston
aebe171f55 0.6.2 version, context menus fixed, image documents view in overlay added 2014-10-07 21:57:57 +04:00
John Preston
c3a5194a6c fixed os x crash with tray icon disabled, fixed retina photos overview indicators 2014-09-30 15:50:35 -07:00
John Preston
9a3ea063c8 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2014-09-30 12:25:15 -07:00
John Preston
276e122b62 fixed context menus, version 0.6.1 2014-09-30 12:24:56 -07:00
John Preston
2c03abaa8e Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2014-09-30 11:33:08 -07:00
John Preston
fe87d45221 fixed os x photos display 2014-09-30 11:32:57 -07:00
John Preston
c216a888be 0.6 version prepared for linux build 2014-09-30 07:45:47 -07:00
John Preston
cb076e3587 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2014-09-30 07:13:52 -07:00
John Preston
1fd25e8778 fixed custom context menu for os x, fixed file drag-n-drop in os x 10.10 2014-09-30 07:13:47 -07:00
John Preston
311292c3a3 version 0.6 prepared, changed "Win (Unofficial)" to "Desktop", photo loader animation, custom context menu, default Downloads folder, cyclic logs 2014-09-30 07:11:09 -07:00
John Preston
0d85f91453 custom context menus (including tray menu for windows) done 2014-09-28 19:47:30 -07:00
John Preston
a4e9dadc2d mac tray icon/menu support improved, custom context menu started 2014-09-26 16:48:19 -07:00
John Preston
68a63e2217 prepared version 0.5.21 2014-09-21 20:57:21 -07:00
John Preston
40641133bc photos overview blur, multimonitor photoview fix, os x file dialog default path 2014-09-21 20:52:37 -07:00
John Preston
af9117e084 qt 5.3.1 patch updated for os x tray icon support, must rebuild qt 2014-09-20 16:20:53 -07:00
John Preston
8fcc9494fe prepared 0.5.20: photos blur, mac tray icon, apple emojis, win version signed 2014-09-20 14:52:47 -07:00
John Preston
08b9760939 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2014-09-20 14:35:57 -07:00
John Preston
da0df57563 prepared win version sign, saving compress image checkbox state, not loaded images blur added 2014-09-20 14:35:46 -07:00
John Preston
b9ed9e0b6d moved to xcode 6 beta, emoji changed to apple default, tray icon on os x added 2014-09-20 14:31:03 -07:00
John Preston
67e74e7aed Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2014-09-06 16:35:34 +04:00
John Preston
fe536fa15b build instructions improved for qt creator 2014-09-06 16:35:17 +04:00
John Preston
cc971e6a3e using self built opus/ogg/openal 2014-09-06 15:03:25 +04:00
John Preston
1acbed1f7f up to 1mb voice messages autoload, fixed voice messages in app playing, version 0.5.19 2014-09-05 14:40:22 +04:00
John Preston
25c19812e1 prepared openal sound and voice messages in linux 2014-09-04 23:24:03 +04:00
John Preston
57cbc06fd8 openal audio and voice messages prepared for os x 2014-09-04 16:23:28 +04:00
John Preston
9bbc99a6b4 openal audio and voice messages 2014-09-04 11:33:44 +04:00
John Preston
90a9c92d38 enabled contact share from templates, copy phone number from context menu in profiles 2014-08-22 18:55:23 +04:00
John Preston
38e8e51ec5 fixed file sending from templates 2014-08-22 14:27:05 +04:00
John Preston
2a8bf173b2 supporting many templates files 2014-08-22 13:53:53 +04:00
John Preston
63c38712a9 added file, img+text and file+text templates support, file send confirm 2014-08-22 13:35:22 +04:00
John Preston
ceb899b69b ctrl+pageup/pagedown/tab/shift+tab now work in search results 2014-08-22 11:41:39 +04:00
1854 changed files with 26282 additions and 13444 deletions

54
MSVC.md
View File

@@ -66,6 +66,57 @@ or download in ZIP and extract to **D:\TBuild\Libraries\**, rename **libexif-0.6
* Build Debug configuration
* Build Release configuration
####OpenAL Soft
Get sources by git in [Git Bash](http://git-scm.com/downloads) go to **/d/tbuild/libraries** and run
git clone git://repo.or.cz/openal-soft.git
to have **D:\TBuild\Libraries\openal-soft\CMakeLists.txt**
#####Building library
* Install [CMake](http://www.cmake.org/)
* Go in **cmd** to **D:\TBuild\Libraries\openal-soft\build\**
* Run **cmake -G "Visual Studio 12 2013" -D LIBTYPE:STRING=STATIC ..**
* Open in VS2013 **D:\TBuild\Libraries\openal-soft\build\OpenAL.sln**
* For **Debug** configuration
* OpenAL32 Properties > C/C++ > Code Generation > Runtime Library = **Multi-threaded Debug (/MTd)** **OK**
* common Properties > C/C++ > Code Generation > Runtime Library = **Multi-threaded Debug (/MTd)** **OK**
* For **Release** configuration
* OpenAL32 Properties > C/C++ > Code Generation > Runtime Library = **Multi-threaded (/MT)** **OK**
* common Properties > C/C++ > Code Generation > Runtime Library = **Multi-threaded (/MT)** **OK**
####libogg 1.3.2
Get sources from http://xiph.org/downloads/ in [ZIP](http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip) and extract to **D:\TBuild\Libraries\**
#####Building library
* Open in VS2013 **D:\TBuild\Libraries\libogg-1.3.2\win32\VS2010\libogg_static.sln** > One-way upgrade **OK**
* Build Debug configuration
* Build Release configuration
####Opus codec, opusfile
Get sources by git in [Git Bash](http://git-scm.com/downloads) go to **/d/tbuild/libraries** and run
git clone git://git.opus-codec.org/opus.git
git clone git://git.xiph.org/opusfile.git
to have **D:\TBuild\Libraries\opus\win32**
#####Building libraries
* Open in VS2013 **D:\TBuild\Libraries\opus\win32\VS2010\opus.sln** > One-way upgrade **OK**
* Build Debug configuration
* Build Release configuration
* Open in VS2013 **D:\TBuild\Libraries\opusfile\win32\VS2010\opusfile.sln** > One-way upgrade **OK**
* For **Debug** and **Release** configurations
* opusfile > C/C++ > General > Additional include directories > Add **../../../libogg-1.3.2/include;**
* Build Debug configuration
* Build Release configuration
####Qt 5.3.1, slightly patched
http://download.qt-project.org/official_releases/qt/5.3/5.3.1/single/qt-everywhere-opensource-src-5.3.1.zip
@@ -86,8 +137,7 @@ There go to Qt directory
and after that run configure
configure -debug-and-release -opensource -static -opengl desktop -mp -nomake examples -platform win32-msvc2013
y
configure -debug-and-release -opensource -confirm-license -static -I "D:\TBuild\Libraries\OpenSSL-Win32\include" -L "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib" -l Gdi32 -opengl desktop -openssl-linked OPENSSL_LIBS_DEBUG="D:\TBuild\Libraries\OpenSSL-Win32\lib\VC\static\ssleay32MTd.lib D:\TBuild\Libraries\OpenSSL-Win32\lib\VC\static\libeay32MTd.lib" OPENSSL_LIBS_RELEASE="D:\TBuild\Libraries\OpenSSL-Win32\lib\VC\static\ssleay32MT.lib D:\TBuild\Libraries\OpenSSL-Win32\lib\VC\static\libeay32MT.lib" -mp -nomake examples -platform win32-msvc2013
to configure Qt build. After configuration is complete run

View File

@@ -32,6 +32,53 @@ Install dev libraries
sudo apt-get install libexif-dev liblzma-dev libz-dev libssl-dev
Install audio libraries
####libogg-1.3.2
[Download libogg-1.3.2 sources](http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.xz) from http://xiph.org/downloads, extract to **/home/user/TBuild/Libraries**, go to **/home/user/TBuild/Libraries/libogg-1.3.2** and run
./configure
make
sudo make install
####Opus codec 1.1
[Download opus-1.1 sources](http://downloads.xiph.org/releases/opus/opus-1.1.tar.gz) from http://www.opus-codec.org/downloads, extract to **/home/user/TBuild/Libraries**, go to **/home/user/TBuild/Libraries/opus-1.1** and run
./configure
make
sudo make install
####opusfile-0.6
[Download opusfile-0.6 sources](http://downloads.xiph.org/releases/opus/opusfile-0.6.tar.gz) from http://www.opus-codec.org/downloads, extract to **/home/user/TBuild/Libraries**, go to **/home/user/TBuild/Libraries/opusfile-0.6** and run
./configure
make
sudo make install
####PortAudio 19
[Download portaudio sources](http://www.portaudio.com/archives/pa_stable_v19_20140130.tgz) from **http://www.portaudio.com/download.html**, extract to **/home/user/TBuild/Libraries**, go to **/home/user/TBuild/Libraries/portaudio** and run
./configure
make
sudo make install
####OpenAL Soft
In Terminal go to **/home/user/TBuild/Libraries** and run
git clone git://repo.or.cz/openal-soft.git
then go to **/home/user/TBuild/Libraries/openal-soft/build** and run
sudo apt-get install cmake
cmake -D LIBTYPE:STRING=STATIC ..
make
sudo make install
####Qt 5.3.1, slightly patched
http://download.qt-project.org/official_releases/qt/5.3/5.3.1/single/qt-everywhere-opensource-src-5.3.1.tar.gz
@@ -49,7 +96,6 @@ Install some packages for Qt (see **/home/user/TBuild/Libraries/QtStatic/qtbase/
In Terminal go to **/home/user/TBuild/Libraries/QtStatic** and there run
./configure -release -opensource -confirm-license -qt-xcb -no-opengl -static -nomake examples -skip qtquick1 -skip qtdeclarative
y
make
sudo make install

View File

@@ -26,6 +26,9 @@ Source code is published under GPL v3, license is available [here](https://githu
* libexif 0.6.20 ([LGPL](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html))
* LZMA SDK 9.20 ([public domain](http://www.7-zip.org/sdk.html))
* liblzma ([public domain](http://tukaani.org/xz/))
* OpenAL Soft ([LGPL](http://kcat.strangesoft.net/openal.html))
* Opus codec, opusfile ([BSD license](http://www.opus-codec.org/license/))
* libogg ([BSD license](http://www.xiph.org/downloads/))
* Open Sans font ([Apache License](http://www.apache.org/licenses/LICENSE-2.0.html))
* DejaVu Sans font ([Free license](http://dejavu-fonts.org/wiki/License))

16
Telegram/DeployLinux.sh Executable file
View File

@@ -0,0 +1,16 @@
AppVersionStr=0.6.10
AppVersion=6010
if [ ! -f "./../Linux/Release/deploy/$AppVersionStr/tlinuxupd$AppVersion" ]; then
echo "tlinuxupd$AppVersion not found!";
exit 1
fi
if [ ! -f "./../Linux/Release/deploy/$AppVersionStr/tsetup.$AppVersionStr.tar.xz" ]; then
echo "tsetup.$AppVersionStr.tar.xz not found!"
exit 1
fi
scp ./../Linux/Release/deploy/$AppVersionStr/tlinuxupd$AppVersion tupdates:tdesktop/static/tlinux/
scp ./../Linux/Release/deploy/$AppVersionStr/tsetup.$AppVersionStr.tar.xz tupdates:tdesktop/static/tlinux/

16
Telegram/DeployLinux32.sh Executable file
View File

@@ -0,0 +1,16 @@
AppVersionStr=0.6.10
AppVersion=6010
if [ ! -f "./../Linux/Release/deploy/$AppVersionStr/tlinux32upd$AppVersion" ]; then
echo "tlinux32upd$AppVersion not found!"
exit 1
fi
if [ ! -f "./../Linux/Release/deploy/$AppVersionStr/tsetup32.$AppVersionStr.tar.xz" ]; then
echo "tsetup32.$AppVersionStr.zip not found!"
exit 1
fi
scp ./../Linux/Release/deploy/$AppVersionStr/tlinux32upd$AppVersion tupdates:tdesktop/static/tlinux32/
scp ./../Linux/Release/deploy/$AppVersionStr/tsetup32.$AppVersionStr.tar.xz tupdates:tdesktop/static/tlinux32/

34
Telegram/DeployMacWin.sh Executable file
View File

@@ -0,0 +1,34 @@
AppVersionStr=0.6.10
AppVersion=6010
if [ ! -f "./../Mac/Release/deploy/$AppVersionStr/tmacupd$AppVersion" ]; then
echo "tmacupd$AppVersion not found!"
exit 1
fi
if [ ! -f "./../Mac/Release/deploy/$AppVersionStr/tsetup.$AppVersionStr.dmg" ]; then
echo "tsetup.$AppVersionStr.dmg not found!"
exit 1
fi
if [ ! -f "./../../tother/tsetup/tupdate$AppVersion" ]; then
echo "tupdate$AppVersion not found!"
exit 1
fi
if [ ! -f "./../../tother/tsetup/tportable.$AppVersionStr.zip" ]; then
echo "tportable.$AppVersionStr.zip not found!"
exit 1
fi
if [ ! -f "./../../tother/tsetup/tsetup.$AppVersionStr.exe" ]; then
echo "tsetup.$AppVersionStr.exe not found!"
exit 1
fi
scp ./../Mac/Release/deploy/$AppVersionStr/tmacupd$AppVersion tupdates:tdesktop/static/tmac/
scp ./../Mac/Release/deploy/$AppVersionStr/tsetup.$AppVersionStr.dmg tupdates:tdesktop/static/tmac/
scp ./../../tother/tsetup/tupdate$AppVersion tupdates:tdesktop/static/tsetup/
scp ./../../tother/tsetup/tportable.$AppVersionStr.zip tupdates:tdesktop/static/tsetup/
scp ./../../tother/tsetup/tsetup.$AppVersionStr.exe tupdates:tdesktop/static/tsetup/

21
Telegram/DeployWin.sh Normal file
View File

@@ -0,0 +1,21 @@
AppVersionStr=0.6.10
AppVersion=6010
if [ ! -f "./../Win32/Deploy/deploy/$AppVersionStr/tupdate$AppVersion" ]; then
echo "tupdate$AppVersion not found!"
exit 1
fi
if [ ! -f "./../Win32/Deploy/deploy/$AppVersionStr/tportable.$AppVersionStr.zip" ]; then
echo "tportable.$AppVersionStr.zip not found!"
exit 1
fi
if [ ! -f "./../Win32/Deploy/deploy/$AppVersionStr/tsetup.$AppVersionStr.exe" ]; then
echo "tsetup.$AppVersionStr.exe not found!"
exit 1
fi
cp -v ./../Win32/Deploy/deploy/$AppVersionStr/tupdate$AppVersion /z/TBuild/tother/tsetup/
cp -v ./../Win32/Deploy/deploy/$AppVersionStr/tportable.$AppVersionStr.zip /z/TBuild/tother/tsetup/
cp -v ./../Win32/Deploy/deploy/$AppVersionStr/tsetup.$AppVersionStr.exe /z/TBuild/tother/tsetup/

View File

@@ -14,4 +14,7 @@ sed -i 's/\-lssl/\/usr\/lib\/x86_64\-linux\-gnu\/libssl\.a/g' Makefile
sed -i 's/\-lcrypto/\/usr\/lib\/x86_64\-linux\-gnu\/libcrypto\.a/g' Makefile
sed -i 's/\-lexif/\/usr\/lib\/x86_64\-linux\-gnu\/libexif\.a/g' Makefile
sed -i 's/\-lglib\-2\.0/\/usr\/lib\/x86_64\-linux\-gnu\/libglib\-2\.0\.a/g' Makefile
sed -i 's/\-lopusfile/\/usr\/local\/lib\/libopusfile\.a/g' Makefile
sed -i 's/\-lopus/\/usr\/local\/lib\/libopus\.a/g' Makefile
sed -i 's/\-lopenal/\/usr\/local\/lib\/libopenal\.a/g' Makefile
sed -i 's/\-logg/\/usr\/local\/lib\/libogg\.a/g' Makefile

View File

@@ -14,4 +14,7 @@ sed -i 's/\-lssl/\/usr\/lib\/i386\-linux\-gnu\/libssl\.a/g' Makefile
sed -i 's/\-lcrypto/\/usr\/lib\/i386\-linux\-gnu\/libcrypto\.a/g' Makefile
sed -i 's/\-lexif/\/usr\/lib\/i386\-linux\-gnu\/libexif\.a/g' Makefile
sed -i 's/\-lglib\-2\.0/\/usr\/lib\/i386\-linux\-gnu\/libglib\-2\.0\.a/g' Makefile
sed -i 's/\-lopusfile/\/usr\/local\/lib\/libopusfile\.a/g' Makefile
sed -i 's/\-lopus/\/usr\/local\/lib\/libopus\.a/g' Makefile
sed -i 's/\-lopenal/\/usr\/local\/lib\/libopenal\.a/g' Makefile
sed -i 's/\-logg/\/usr\/local\/lib\/libogg\.a/g' Makefile

View File

@@ -515,7 +515,7 @@
6DB9C3763D02B1415CD9D565 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0510;
LastUpgradeCheck = 0610;
};
buildConfigurationList = DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "MetaEmoji" */;
compatibilityVersion = "Xcode 3.2";
@@ -575,25 +575,27 @@
isa = XCBuildConfiguration;
buildSettings = {
CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_BOOL_CONVERSION = NO;
CLANG_WARN_CONSTANT_CONVERSION = NO;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_ENUM_CONVERSION = NO;
CLANG_WARN_INT_CONVERSION = NO;
CLANG_WARN_UNREACHABLE_CODE = NO;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Emoji$(EFFECTIVE_PLATFORM_NAME)";
COPY_PHASE_STRIP = YES;
DYLIB_COMPATIBILITY_VERSION = 1.0;
DYLIB_CURRENT_VERSION = 1.0.0;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = "";
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
GCC_WARN_UNUSED_FUNCTION = NO;
GCC_WARN_UNUSED_VARIABLE = NO;
HEADER_SEARCH_PATHS = (
../../Libraries/QtStatic/qtbase/include/QtGui/5.3.1/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.3.1/QtCore,
@@ -660,27 +662,29 @@
isa = XCBuildConfiguration;
buildSettings = {
CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_BOOL_CONVERSION = NO;
CLANG_WARN_CONSTANT_CONVERSION = NO;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_ENUM_CONVERSION = NO;
CLANG_WARN_INT_CONVERSION = NO;
CLANG_WARN_UNREACHABLE_CODE = NO;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Emoji$(EFFECTIVE_PLATFORM_NAME)";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
DYLIB_COMPATIBILITY_VERSION = 1.0;
DYLIB_CURRENT_VERSION = 1.0.0;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = "";
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
GCC_WARN_UNUSED_FUNCTION = NO;
GCC_WARN_UNUSED_VARIABLE = NO;
HEADER_SEARCH_PATHS = (
../../Libraries/QtStatic/qtbase/include/QtGui/5.3.1/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.3.1/QtCore,

View File

@@ -516,7 +516,7 @@
6DB9C3763D02B1415CD9D565 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0510;
LastUpgradeCheck = 0610;
};
buildConfigurationList = DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "MetaLang" */;
compatibilityVersion = "Xcode 3.2";
@@ -594,11 +594,13 @@
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Lang$(EFFECTIVE_PLATFORM_NAME)";
COPY_PHASE_STRIP = YES;
DYLIB_COMPATIBILITY_VERSION = 1.0;
DYLIB_CURRENT_VERSION = 1.0.0;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = "";
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
@@ -679,12 +681,14 @@
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Lang$(EFFECTIVE_PLATFORM_NAME)";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
DYLIB_COMPATIBILITY_VERSION = 1.0;
DYLIB_CURRENT_VERSION = 1.0.0;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = "";
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_OPTIMIZATION_LEVEL = 0;

View File

@@ -516,7 +516,7 @@
6DB9C3763D02B1415CD9D565 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0510;
LastUpgradeCheck = 0610;
};
buildConfigurationList = DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "MetaStyle" */;
compatibilityVersion = "Xcode 3.2";
@@ -594,11 +594,13 @@
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Style$(EFFECTIVE_PLATFORM_NAME)";
COPY_PHASE_STRIP = YES;
DYLIB_COMPATIBILITY_VERSION = 1.0;
DYLIB_CURRENT_VERSION = 1.0.0;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = "";
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
@@ -679,12 +681,14 @@
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Style$(EFFECTIVE_PLATFORM_NAME)";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
DYLIB_COMPATIBILITY_VERSION = 1.0;
DYLIB_CURRENT_VERSION = 1.0.0;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = "";
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_OPTIMIZATION_LEVEL = 0;

View File

@@ -483,7 +483,7 @@
6DB9C3763D02B1415CD9D565 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0510;
LastUpgradeCheck = 0610;
};
buildConfigurationList = DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "Packer" */;
compatibilityVersion = "Xcode 3.2";
@@ -546,10 +546,12 @@
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = YES;
DYLIB_COMPATIBILITY_VERSION = 1.0;
DYLIB_CURRENT_VERSION = 1.0.0;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = "";
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
@@ -634,11 +636,13 @@
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
DYLIB_COMPATIBILITY_VERSION = 1.0;
DYLIB_CURRENT_VERSION = 1.0.0;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = "";
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_OPTIMIZATION_LEVEL = 0;

View File

@@ -1,5 +1,5 @@
AppVersionStr=0.5.17
AppVersion=5017
AppVersionStr=0.6.10
AppVersion=6010
if [ -d "./../Linux/Release/deploy/$AppVersionStr" ]; then
echo "Deploy folder for version $AppVersionStr already exists!"

View File

@@ -1,5 +1,5 @@
AppVersionStr=0.5.17
AppVersion=5017
AppVersionStr=0.6.10
AppVersion=6010
if [ -d "./../Linux/Release/deploy/$AppVersionStr" ]; then
echo "Deploy folder for version $AppVersionStr already exists!"

View File

@@ -1,5 +1,9 @@
AppVersionStr=0.5.17
AppVersion=5017
AppVersionStr=0.6.10
AppVersion=6010
echo ""
echo "Preparing version $AppVersionStr.."
echo ""
if [ -d "./../Mac/Release/deploy/$AppVersionStr" ]; then
echo "Deploy folder for version $AppVersionStr already exists!"
@@ -36,18 +40,20 @@ if [ ! -f "./../Mac/Release/Telegram.app/Contents/Frameworks/Updater" ]; then
exit 1
fi
if [ ! -f "./../Mac/Release/Telegram.app.dmg" ]; then
echo "Telegram.app.dmg not found!"
exit 1
fi
echo "Preparing version $AppVersionStr, executing Packer.."
cd ./../Mac/Release && codesign --force --deep --sign "Developer ID Application: John Preston" Telegram.app && cd ./../../Telegram
cd ./../Mac/Release
temppath=`hdiutil attach -readwrite tsetup.dmg | awk -F "\t" 'END {print $3}'`
cp -R ./Telegram.app "$temppath/"
bless --folder "$temppath/" --openfolder "$temppath/"
hdiutil detach "$temppath"
hdiutil convert tsetup.dmg -format UDZO -imagekey zlib-level=9 -ov -o tsetup.$AppVersionStr.dmg
cd ./../../Telegram
cd ./../Mac/Release && ./Packer.app/Contents/MacOS/Packer -path Telegram.app -version $AppVersion && cd ./../../Telegram
echo "Packer done!"
if [ ! -d "./../Mac/Release/deploy/" ]; then
mkdir "./../Mac/Release/deploy"
fi
echo "Copying Telegram.app and tmacupd$AppVersion to deploy/$AppVersionStr..";
mkdir "./../Mac/Release/deploy/$AppVersionStr"
mkdir "./../Mac/Release/deploy/$AppVersionStr/Telegram"
@@ -55,6 +61,6 @@ cp -r ./../Mac/Release/Telegram.app ./../Mac/Release/deploy/$AppVersionStr/Teleg
rm ./../Mac/Release/Telegram.app/Contents/MacOS/Telegram
rm ./../Mac/Release/Telegram.app/Contents/Frameworks/Updater
mv ./../Mac/Release/tmacupd$AppVersion ./../Mac/Release/deploy/$AppVersionStr/
mv ./../Mac/Release/Telegram.app.dmg ./../Mac/Release/deploy/$AppVersionStr/tsetup.$AppVersionStr.dmg
mv ./../Mac/Release/tsetup.$AppVersionStr.dmg ./../Mac/Release/deploy/$AppVersionStr/tsetup.$AppVersionStr.dmg
echo "Version $AppVersionStr prepared!";

View File

@@ -1,3 +1,46 @@
@echo OFF
set "AppVersionStr=0.6.10"
echo.
echo Preparing version %AppVersionStr%..
echo.
set "PATH=%PATH%;C:\Program Files\7-Zip;C:\Program Files (x86)\Inno Setup 5"
cd ..\Win32\Deploy
Prepare.exe -path Telegram.exe -path Updater.exe
call ..\..\..\TelegramPrivate\Sign.bat Telegram.exe
if %errorlevel% neq 0 goto error1
call ..\..\..\TelegramPrivate\Sign.bat Updater.exe
if %errorlevel% neq 0 goto error1
iscc ..\..\Telegram\Setup.iss
if %errorlevel% neq 0 goto error1
call ..\..\..\TelegramPrivate\Sign.bat tsetup.%AppVersionStr%.exe
if %errorlevel% neq 0 goto error1
call Prepare.exe -path Telegram.exe -path Updater.exe
if %errorlevel% neq 0 goto error1
cd deploy\%AppVersionStr%
mkdir Telegram
move Telegram.exe Telegram\
7z a -mx9 tportable.%AppVersionStr%.zip Telegram\
if %errorlevel% neq 0 goto error2
echo .
echo Version %AppVersionStr% is ready for deploy!
echo .
cd ..\..\..\..\Telegram
goto eof
:error2
cd ..\..
:error1
cd ..\..\Telegram
echo ERROR occured!
exit /b %errorlevel%
:eof

View File

@@ -22,8 +22,10 @@ lng_maintitle: "Telegram D";
lng_menu_contacts: "Contacts";
lng_menu_settings: "Settings";
lng_menu_about: "About";
lng_menu_update: "Update";
lng_open_from_tray: "Open Telegram";
lng_minimize_to_tray: "Minimize to tray";
lng_quit_from_tray: "Quit Telegram";
lng_tray_icon_text: "Telegram is still running here,
you can change this from settings page.
@@ -56,11 +58,14 @@ lng_month_day: "{month} {day}";
lng_cancel: "Cancel";
lng_continue: "Continue";
lng_connecting: "Connecting...";
lng_reconnecting: "Reconnect in %1 s...";
lng_connecting: "Connecting..";
lng_reconnecting: "Reconnect in %1 s..";
lng_reconnecting_try_now: "Try now";
lng_status_offline: "offline";
lng_status_offline: "last seen a long time ago";
lng_status_recently: "last seen recently";
lng_status_last_week: "last seen within a week";
lng_status_last_month: "last seen within a month";
lng_status_invisible: "invisible";
lng_status_lastseen: "last seen {when}";
lng_status_lastseen_now: "just now";
@@ -73,6 +78,7 @@ lng_status_lastseen_yesterday: "yesterday at {time}";
lng_status_lastseen_date: "{date}";
lng_status_lastseen_date_time: "{date} at {time}";
lng_status_online: "online";
lng_status_connecting: "connecting..";
lng_chat_no_members: "Group is unaccessible";
lng_chat_members: "%1 members";
@@ -108,7 +114,7 @@ lng_code_ph: "Your code";
lng_code_desc: "We have sent you an SMS with activation
code to your phone. Please enter it below.";
lng_code_call: "Telegram will dial your number in %1:%2";
lng_code_calling: "Requesting a call from Telegram...";
lng_code_calling: "Requesting a call from Telegram..";
lng_code_called: "Telegram dialed your number";
lng_bad_phone: "Invalid phone number. Please try again.";
@@ -135,7 +141,25 @@ lng_settings_cancel: "Cancel";
lng_settings_upload: "Set Profile Photo";
lng_settings_badsize: "This image has bad size, please try other.";
lng_settings_crop_profile: "Select square area for your profile photo";
lng_settings_uploading_photo: "Uploading photo...";
lng_settings_uploading_photo: "Uploading photo..";
lng_username_title: "Change username";
lng_username_about: "You can choose a username on Telegram.
If you do, other people will be able to find
you by this username and contact you
without knowing your phone number.
You can use a-z, 0-9 and underscores.
Minimum length is 5 characters.";
lng_username_invalid: "This name is invalid.";
lng_username_occupied: "This name is already occupied.";
lng_username_too_short: "This name is too short.";
lng_settings_section_contact_info: "Contact info";
lng_settings_phone_number: "Phone number:";
lng_settings_username: "Username:";
lng_settings_choose_username: "choose username";
lng_settings_change_username: "Change";
lng_settings_section_notify: "Notifications";
lng_settings_desktop_notify: "Desktop notifications";
@@ -150,9 +174,9 @@ lng_settings_section_general: "General";
lng_settings_auto_update: "Update automatically";
lng_settings_current_version: "Version {version}";
lng_settings_check_now: "Check for updates";
lng_settings_update_checking: "Checking for updates...";
lng_settings_update_checking: "Checking for updates..";
lng_settings_latest_installed: "Latest version is installed";
lng_settings_downloading: "Downloading update {ready} / {total} Mb...";
lng_settings_downloading: "Downloading update {ready} / {total} Mb..";
lng_settings_update_ready: "New version is ready";
lng_settings_update_now: "Restart Now";
lng_settings_update_fail: "Update check failed :(";
@@ -176,8 +200,10 @@ lng_settings_cats_and_dogs: "Allow cats and dogs";
lng_download_path_dont_ask: "Don't ask download path for each file";
lng_download_path_label: "Download path: ";
lng_download_path_temp: "temp folder";
lng_download_path_default: "default folder";
lng_download_path_clear: "Clear All";
lng_download_path_header: "Choose download path";
lng_download_path_default_radio: "Telegram folder in system «Downloads»";
lng_download_path_temp_radio: "Temp folder, cleared on logout or uninstall";
lng_download_path_dir_radio: "Custom folder, cleared only manually";
lng_download_path_choose: "Choose download path";
@@ -189,7 +215,7 @@ lng_download_path_settings: "Go to Settings";
lng_download_finish_failed: "File download could not be finished.
Would you like to try again?";
lng_download_path_clearing: "Clearing...";
lng_download_path_clearing: "Clearing..";
lng_download_path_cleared: "Cleared!";
lng_download_path_clear_failed: "Clear failed :(";
@@ -211,6 +237,7 @@ lng_connection_save: "Save";
lng_settings_reset: "Reset other sessions";
lng_settings_reset_done: "Sessions reset done";
lng_settings_logout: "Log Out";
lng_sure_logout: "Are you sure you want to log out?";
lng_settings_need_restart: "You need to restart for applying
some of the new settings. Restart now?";
@@ -235,7 +262,7 @@ lng_profile_add_participant: "Add Member";
lng_profile_delete_and_exit: "Leave";
lng_profile_kick: "Kick";
lng_profile_sure_kick: "Kick {user} from the group?";
lng_profile_loading: "Loading...";
lng_profile_loading: "Loading..";
lng_profile_shared_media: "Shared media";
lng_profile_no_media: "No media in this conversation.";
lng_profile_photo: "{count} photo »";
@@ -251,6 +278,7 @@ lng_profile_audio: "{count} voice message »";
lng_profile_audios: "{count} voice messages »";
lng_profile_audios_header: "Voice messages overview";
lng_profile_show_all_types: "Show all types";
lng_profile_copy_phone: "Copy phone number";
lng_participant_filter: "Search";
lng_participant_invite: "Invite";
@@ -311,7 +339,7 @@ lng_in_dlg_audio: "Audio";
lng_in_dlg_document: "Document";
lng_send_button: "Send";
lng_message_ph: "Write a message...";
lng_message_ph: "Write a message..";
lng_empty_history: "";
lng_willbe_history: "Please select chat to start messaging";
lng_message_with_from: "[c]{from}:[/c] {message}";
@@ -339,7 +367,7 @@ lng_context_copy_email: "Copy email address";
lng_context_open_hashtag: "Search by hashtag";
lng_context_copy_hashtag: "Copy hashtag";
lng_context_open_image: "Open Image";
lng_context_save_image: "Save Image As...";
lng_context_save_image: "Save Image As..";
lng_context_forward_image: "Forward Image";
lng_context_delete_image: "Delete Image";
lng_context_copy_image: "Copy Image";
@@ -348,24 +376,30 @@ lng_context_cancel_download: "Cancel Download";
lng_context_show_in_folder: "Show in Folder";
lng_context_show_in_finder: "Show in Finder";
lng_context_open_video: "Open Video";
lng_context_save_video: "Save Video As...";
lng_context_save_video: "Save Video As..";
lng_context_open_audio: "Open Audio";
lng_context_save_audio: "Save Audio As...";
lng_context_save_audio: "Save Audio As..";
lng_context_open_document: "Open File";
lng_context_save_document: "Save File As...";
lng_context_save_document: "Save File As..";
lng_context_forward_file: "Forward File";
lng_context_delete_file: "Delete File";
lng_context_close_file: "Close File";
lng_context_copy_text: "Copy Message Text";
lng_context_to_msg: "Go To Message";
lng_context_forward_msg: "Forward Message";
lng_context_delete_msg: "Delete Message";
lng_context_select_msg: "Select Message";
lng_context_cancel_upload: "Cancel Upload";
lng_context_copy_selected: "Copy Selected Text";
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_really_send_file: "Do you want to send this file?";
lng_really_share_contact: "Do you want to share this contact?";
lng_send_image_compressed: "Send compressed image";
lng_forward_choose: "Choose recipient...";
lng_forward_choose: "Choose recipient..";
lng_forward_confirm: "Forward to {recipient}?";
lng_forward_share_contact: "Share contact to {recipient}?";
lng_forward_send_file_confirm: "Send «{name}» to {recipient}?";
@@ -420,15 +454,18 @@ lng_about_done: "Done";
lng_search_no_results: "No messages found";
lng_search_one_result: "Found {count} message";
lng_search_n_results: "Found {count} messages";
lng_search_global_results: "Global search results";
lng_mediaview_close: "Close";
lng_mediaview_save: "Save as";
lng_mediaview_save: "Download";
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}";
lng_mediaview_n_of_count: "Photo {n} of {count}";
lng_mediaview_doc_image: "Document";
lng_mediaview_saved: "Image was saved to your [c]Downloads[/c] folder";
// Mac specific
@@ -441,5 +478,21 @@ lng_mac_always_open_with: "Always Open With";
lng_mac_this_app_can_open: "This application can open \"{file}\".";
lng_mac_not_known_app: "It's not known if this application can open \"{file}\".";
// Keys finished
lng_mac_menu_about: "About Telegram";
lng_mac_menu_preferences: "Preferences...";
lng_mac_menu_file: "File";
lng_mac_menu_logout: "Log Out";
lng_mac_menu_edit: "Edit";
lng_mac_menu_undo: "Undo";
lng_mac_menu_redo: "Redo";
lng_mac_menu_cut: "Cut";
lng_mac_menu_copy: "Copy";
lng_mac_menu_paste: "Paste";
lng_mac_menu_delete: "Delete";
lng_mac_menu_select_all: "Select All";
lng_mac_menu_window: "Window";
lng_mac_menu_contacts: "Contacts";
lng_mac_menu_new_group: "New Group";
lng_mac_menu_show: "Show Telegram";
// Keys finished

View File

@@ -20,15 +20,16 @@ semibold: 'Open Sans Semibold';
fsize: 13px;
spriteFile: ':/gui/art/sprite.png' / 2:':/gui/art/sprite_125x.png' / 3:':/gui/art/sprite_150x.png' / 4:':/gui/art/sprite_200x.png'; // exceptional value for retina
emojisFile: ':/gui/art/emoji.png' / 2:':/gui/art/emoji_125x.png' / 3:':/gui/art/emoji_150x.png' / 4:':/gui/art/emoji_200x.png'; // exceptional value for retina
emojiImgSize: 16px; // exceptional value for retina
emojiSize: 16px;
emojiPadding: 1px;
spriteFile: ':/gui/art/sprite.png' / 2:':/gui/art/sprite_125x.png' / 3:':/gui/art/sprite_150x.png' / 4:':/gui/art/sprite_200x.png';
emojisFile: ':/gui/art/emoji.png' / 2:':/gui/art/emoji_125x.png' / 3:':/gui/art/emoji_150x.png' / 4:':/gui/art/emoji_200x.png';
emojiImgSize: 18px; // exceptional value for retina
emojiSize: 18px;
emojiPadding: 0px;
counterBG: #b42f35;
counterMuteBG: #777;
counterBG: #f23c34;
counterMuteBG: #888;
counterColor: #fff;
counterMacInvColor: #ffffff01;
lineWidth: 1px;
@@ -85,6 +86,7 @@ sysUpd: sysButton {
overColor: white;
duration: 150;
}
updateBlinkDuration: 500;
sysMin: sysButton(sysUpd) {
img: sprite(207px, 1px, 19px, 19px);
}
@@ -243,9 +245,9 @@ inpDefFlat: flatInput {
}
inpDefGray: flatInput(inpDefFlat) {
bgColor: #ebebeb;
bgColor: #f2f2f2;
borderWidth: 2px;
borderColor: #ebebeb;
borderColor: #f2f2f2;
borderActive: #80cff9;
borderError: #ed8080;
phColor: #808080;
@@ -373,7 +375,7 @@ introCountry: countryInput {
width: 300px;
height: 41px;
top: 24px;
bgColor: #ebebeb;
bgColor: #f2f2f2;
ptrSize: size(15px, 8px);
textMrg: margins(16px, 5px, 16px, 15px);
font: inpDefFont;
@@ -445,7 +447,7 @@ countryList: countryList {
color: #000;
codeColor: #aaaaaa;//rgb(20, 136, 210);
bgColor: #FFF;
bgHovered: #f1f1f1;
bgHovered: #f5f5f5;
margin: 13px;
codeWidth: 60px;
@@ -483,10 +485,9 @@ setTop: 26px;
setNameLeft: 3px;
setNameTop: 1px;
setNameFont: font(22px);
setPhoneFont: font(16px);
setPhoneColor: #999;
setPhoneTop: 39px;
setPhoneLeft: 1px;
setStatusTop: 39px;
setStatusLeft: 1px;
setStatusFont: font(16px);
setPhotoSize: 120px;
setHeaderFont: font(20px);
setHeaderColor: black;
@@ -753,6 +754,7 @@ msgFont: font(fsize);
msgNameFont: font(fsize semibold);
msgServiceFont: font(fsize semibold);
msgServiceNameFont: font(fsize semibold);
msgServicePhotoWidth: 100px;
msgDateFont: font(13px);
msgMinWidth: 190px;
msgPhotoSize: 30px;
@@ -839,6 +841,10 @@ outTextStyle: textStyle(defaultTextStyle) {
selectBG: msgOutSelectBG;
selectOverlay: msgOutSelectOverlay;
}
medviewSaveAsTextStyle: textStyle(defaultTextStyle) {
lnkColor: #91d9ff;
lnkDownColor: #91d9ff;
}
dlgTextStyle: textStyle(defaultTextStyle) {
lnkColor: dlgSystemColor;
@@ -855,23 +861,29 @@ mediaMaxWidth: 250px;
mediaFont: font(fsize);
mediaPadding: margins(7px, 6px, 11px, 6px);
mediaThumbSize: 48px;
mediaNameTop: 3px;
mediaDetailsShift: 3px;
mediaDocOutImg: sprite(6px, 146px, 48px, 48px);
mediaDocInImg: sprite(56px, 146px, 48px, 48px);
mediaAudioOutImg: sprite(106px, 146px, 48px, 48px);
mediaAudioInImg: sprite(156px, 146px, 48px, 48px);
mediaPlayOutImg: sprite(122px, 341px, 48px, 48px);
mediaPlayInImg: sprite(172px, 341px, 48px, 48px);
mediaPauseOutImg: sprite(222px, 341px, 48px, 48px);
mediaPauseInImg: sprite(272px, 341px, 48px, 48px);
mediaInColor: msgInDateColor;
mediaOutColor: msgOutDateColor;
mediaInSelectColor: msgInSelectDateColor;
mediaOutSelectColor: msgOutSelectDateColor;
mediaSaveDelta: 14px; // between bubble and download
mediaSaveButton: flatButton(btnDefFlat) {
color: btnYesColor;
overColor: btnYesHover;
downColor: btnYesHover;
color: #507da2;
overColor: #507da2;
downColor: #507da2;
bgColor: white;
overBgColor: btnWhiteHover;
downBgColor: btnWhiteHover;
overBgColor: #f5f8fa;
downBgColor: #f5f8fa;
width: -28px;
height: 34px;
@@ -935,7 +947,7 @@ historyScroll: flatScroll(scrollDef) {
barOverColor: #89a0b4bc;
bgOverColor: #89a0b46b;
round: 2px;
round: 0px;
width: 12px;
deltax: 3px;
@@ -1066,7 +1078,7 @@ profileListPhotoSize: 46px;
profileListPadding: size(12px, 6px);
profileListNameTop: 8px;
profileListStatusBottom: 6px;
profileHoverBG: #f1f1f1;
profileHoverBG: #f5f5f5;
profileActiveBG: #6294b9;
profileSubFont: font(fsize);
profileCheckRect: sprite(88px, 108px, 24px, 24px);
@@ -1215,7 +1227,7 @@ contactsClose: flatButton {
overColor: btnYesHover;
downColor: btnYesHover;
bgColor: #fffe;
bgColor: white;
overBgColor: white;
downBgColor: white;
@@ -1455,48 +1467,115 @@ emojiPanDuration: 200;
emojiPanHover: #f0f0f0;
emojiPanRound: 2px;
medviewNavBarWidth: 120px;
medviewTopSkip: 66px;
medviewBottomSkip: 66px;
medviewMainWidth: 600px;
medviewLightOpacity: 0.7;
medviewDarkOpacity: 0.8;
medviewNavBarWidth: 132px;
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);
medviewHeaderFont: font(semibold 18px);
medviewNameFont: font(16px);
medviewDateFont: font(14px);
medviewNameTop: 13px;
medviewDateTop: 39px;
medviewLeft: sprite(340px, 79px, 28px, 48px);
medviewRight: sprite(368px, 79px, 28px, 48px);
medviewDeltaFromLastAction: 5px;
medviewSwipeDistance: 80px;
medviewButton: flatButton(btnDefFlat) {
color: #ffffff80;
overColor: #fff;
downColor: #fff;
medviewSaveMsgCheck: sprite(341px, 174px, 22px, 18px);
medviewSaveMsgFont: font(16px);
medviewSaveMsgPadding: margins(55px, 19px, 29px, 20px);
medviewSaveMsgCheckPos: point(23px, 21px);
medviewSaveMsgRadius: 3px;
medviewSaveMsgShowing: 200;
medviewSaveMsgShown: 2000;
medviewSaveMsgHiding: 2500;
medviewSaveMsg: #000000b2;
medviewOverview: iconedButton(btnDefIconed) {
bgColor: #0000;
overBgColor: #00000055;
downBgColor: #00000055;
width: 100px;
height: 46px;
textTop: 13px;
overTextTop: 13px;
downTextTop: 14px;
overBgColor: #00000040;
font: font(16px);
overFont: font(16px);
opacity: 0.77;
overOpacity: 1;
icon: sprite(340px, 129px, 19px, 19px);
iconPos: point(16px, 14px);
downIcon: sprite(340px, 129px, 19px, 19px);
downIconPos: point(16px, 14px);
width: -69px;
height: 47px;
color: white;
textPos: point(51px, 13px);
downTextPos: point(51px, 14px);
}
medviewForward: iconedButton(medviewOverview) {
icon: sprite(357px, 58px, 22px, 17px);
iconPos: point(16px, 15px);
downIcon: sprite(357px, 58px, 22px, 17px);
downIconPos: point(16px, 15px);
width: -69px;
}
medviewDelete: iconedButton(medviewForward) {
icon: sprite(340px, 58px, 15px, 19px);
iconPos: point(16px, 14px);
downIcon: sprite(340px, 58px, 15px, 19px);
downIconPos: point(16px, 14px);
}
medviewClose: iconedButton(medviewOverview) {
icon: sprite(340px, 0px, 56px, 56px);
iconPos: point(0px, 0px);
downIcon: sprite(340px, 0px, 56px, 56px);
downIconPos: point(0px, 0px);
opacity: 0.6;
width: 56px;
height: 56px;
}
medviewBottomBar: 87px;
medviewBG: #272727D9;
medviewBottomBG: #272727;
medviewNavOpacity: 0.6;
medviewCloseOpacity: 0.6;
medviewNavBGOpacity: 0.4;
medviewNavOverOpacity: 1;
medviewCloseOverOpacity: 1;
medviewNameColor: black;
medviewDateColor: #999;
medviewSaveAs: iconedButton(medviewOverview) {
bgColor: #38abe6;
overBgColor: #299fdc;
opacity: 1;
icon: sprite(361px, 129px, 12px, 19px);
iconPos: point(18px, 15px);
downIcon: sprite(361px, 129px, 12px, 19px);
downIconPos: point(18px, 15px);
width: -62px;
height: 47px;
textPos: point(44px, 13px);
downTextPos: point(44px, 14px);
}
medviewSaveAsDisabledOpacity: 0.8;
medviewPolaroid: margins(17px, 18px, 17px, 72px);
medviewPolaroidMin: size(480px, 360px);
medviewDocumentSprite: sprite(341px, 150px, 20px, 22px);
medviewDocumentSpritePos: point(16px, 13px);
medviewPhotoSprite: sprite(363px, 150px, 23px, 20px);
medviewPhotoSpritePos: point(14px, 14px);
overviewPhotoSkip: 10px;
overviewPhotoMinSize: 100px;
overviewPhotoCheck: sprite(245px, 308px, 32px, 32px);
overviewPhotoChecked: sprite(278px, 308px, 32px, 32px);
overviewPhotoSelectOverlay: #0a7bb03f;
// Mac specific
@@ -1507,3 +1586,61 @@ macSelectorTop: 6;
macAlwaysThisAppTop: 4;
macAppHintTop: 8;
macCautionIconSize: size(16, 16);
btnContext: iconedButton(btnDefIconed) {
bgColor: white;
overBgColor: btnWhiteHover;
font: font(14px);
opacity: 1;
overOpacity: 1;
width: 172px;
height: 36px;
color: black;
textPos: point(16px, 7px);
downTextPos: point(16px, 8px);
}
photoLoader: size(52px, 22px);
photoLoaderBg: #00000054;
photoLoaderCnt: 3;
photoLoaderPoint: size(6px, 6px);
photoLoaderSkip: 6px;
photoLoaderPeriod: 600; // ms full period
photoLoaderDelta: 150; // ms between points
photoLoaderDuration1: 150; // ms fade in
photoLoaderDuration2: 150; // ms fade out
photoLoaderAlphaMin: 0.1; // not less than that
overviewLoader: size(34px, 14px);
overviewLoaderPoint: size(4px, 4px);
overviewLoaderSkip: 4px;
mediaviewLoader: size(78px, 33px);
mediaviewLoaderPoint: size(9px, 9px);
mediaviewLoaderSkip: 9px;
minPhotoWidth: 90px;
minPhotoHeight: 90px;
maxMediaSize: 420px;
usernameFont: font(14px);
usernameColor: #777;
usernameWidth: 336px;
usernameSkip: 32px;
usernameInput: flatInput(inpAddContact) {
bgColor: transparent;
}
usernameDone: flatButton(btnSelectDone) {
width: 168px;
}
usernameCancel: flatButton(btnSelectCancel) {
width: 167px;
}
youtubeIcon: sprite(336px, 221px, 60px, 60px);
instagramIcon: sprite(336px, 283px, 60px, 60px);
locationSize: size(320, 240);

View File

@@ -2,11 +2,11 @@
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppShortName "Telegram"
#define MyAppName "Telegram Win (Unofficial)"
#define MyAppVersion "0.5.17"
#define MyAppVersionZero "0.5.17"
#define MyAppFullVersion "0.5.17.0"
#define MyAppPublisher "Telegram (Unofficial)"
#define MyAppName "Telegram Desktop"
#define MyAppVersion "0.6.10"
#define MyAppVersionZero "0.6.10"
#define MyAppFullVersion "0.6.10.0"
#define MyAppPublisher "Telegram Messenger LLP"
#define MyAppURL "https://tdesktop.com"
#define MyAppExeName "Telegram.exe"
#define MyAppId "53F49750-6209-4FBF-9CA8-7A333C87D1ED"

View File

@@ -1 +0,0 @@
codesign --force --deep --sign "Developer ID Application: John Preston" ./../Mac/Release/Telegram.app

File diff suppressed because it is too large Load Diff

View File

@@ -18,7 +18,7 @@ Copyright (c) 2014 John Preston, https://tdesktop.com
#include "memain.h"
int main(int argc, char *argv[]) {
QString emoji_in("."), emoji_out("emoji_config.cpp"), emoji_png("./SourceFiles/art/emoji");
QString emoji_in("./SourceFiles/art/emojisprite_"), emoji_out("./SourceFiles/gui/emoji_config.cpp"), emoji_png("./SourceFiles/art/emoji");
for (int i = 0; i < argc; ++i) {
if (string("-emoji_in") == argv[i]) {
if (++i < argc) emoji_in = argv[i];

View File

@@ -189,7 +189,7 @@ int main(int argc, char *argv[])
}
for (QFileInfoList::iterator i = files.begin(); i != files.end(); ++i) {
QFileInfo info(*i);
if (info.canonicalFilePath().indexOf(remove) != 0) {
if (!info.canonicalFilePath().startsWith(remove)) {
cout << "Can't find '" << remove.toUtf8().constData() << "' in file '" << info.canonicalFilePath().toUtf8().constData() << "' :(\n";
return -1;
}

View File

@@ -94,6 +94,5 @@ int main(int argc, char *argv[])
}
}
int res = prepare(f, paths);
system("PAUSE");
return res;
}

View File

@@ -271,12 +271,16 @@ void updateRegistry() {
if (GetFullPathName(L".", bufSize, exp, 0) < bufSize) {
wstring installpath = locationStr, mypath = exp;
if (installpath == mypath + L"\\" || true) { // always update reg info, if we found it
WCHAR nameStr[bufSize], dateStr[bufSize];
WCHAR nameStr[bufSize], dateStr[bufSize], publisherStr[bufSize], icongroupStr[bufSize];
SYSTEMTIME stLocalTime;
GetLocalTime(&stLocalTime);
RegSetValueEx(rkey, L"DisplayVersion", 0, REG_SZ, (BYTE*)versionStr, ((versionLen / 2) + 1) * sizeof(WCHAR));
wsprintf(nameStr, L"Telegram Win (Unofficial) version %s", versionStr);
wsprintf(nameStr, L"Telegram Desktop version %s", versionStr);
RegSetValueEx(rkey, L"DisplayName", 0, REG_SZ, (BYTE*)nameStr, (wcslen(nameStr) + 1) * sizeof(WCHAR));
wsprintf(publisherStr, L"Telegram Messenger LLP");
RegSetValueEx(rkey, L"Publisher", 0, REG_SZ, (BYTE*)publisherStr, (wcslen(publisherStr) + 1) * sizeof(WCHAR));
wsprintf(icongroupStr, L"Telegram Desktop");
RegSetValueEx(rkey, L"Inno Setup: Icon Group", 0, REG_SZ, (BYTE*)icongroupStr, (wcslen(icongroupStr) + 1) * sizeof(WCHAR));
wsprintf(dateStr, L"%04d%02d%02d", stLocalTime.wYear, stLocalTime.wMonth, stLocalTime.wDay);
RegSetValueEx(rkey, L"InstallDate", 0, REG_SZ, (BYTE*)dateStr, (wcslen(dateStr) + 1) * sizeof(WCHAR));
@@ -358,7 +362,7 @@ int APIENTRY WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR cmdParama
}
#ifdef _NEED_WIN_GENERATE_DUMP
static const WCHAR *_programName = L"Telegram Win (Unofficial)"; // folder in APPDATA, if current path is unavailable for writing
static const WCHAR *_programName = L"Telegram Desktop"; // folder in APPDATA, if current path is unavailable for writing
static const WCHAR *_exeName = L"Updater.exe";
LPTOP_LEVEL_EXCEPTION_FILTER _oldWndExceptionFilter = 0;

View File

@@ -20,10 +20,10 @@ Copyright (c) 2014 John Preston, https://tdesktop.com
#include "app.h"
#include "audio.h"
#include "application.h"
#include "fileuploader.h"
#include "mainwidget.h"
#include <QtMultimedia/QSoundEffect>
#include <libexif/exif-data.h>
namespace {
@@ -43,6 +43,9 @@ namespace {
typedef QHash<AudioId, AudioData*> AudiosData;
AudiosData audiosData;
typedef QHash<QString, ImageLinkData*> ImageLinksData;
ImageLinksData imageLinksData;
typedef QHash<DocumentId, DocumentData*> DocumentsData;
DocumentsData documentsData;
@@ -61,7 +64,6 @@ namespace {
HistoryItem *hoveredItem = 0, *pressedItem = 0, *hoveredLinkItem = 0, *pressedLinkItem = 0, *contextItem = 0, *mousedItem = 0;
QSoundEffect *newMsgSound = 0;
QPixmap *sprite = 0, *emojis = 0;
typedef QMap<uint32, QPixmap> EmojisMap;
@@ -163,6 +165,31 @@ namespace App {
return (peer_id & 0x100000000L) ? int32(peer_id & 0xFFFFFFFFL) : 0;
}
int32 onlineForSort(int32 online, int32 now) {
if (online <= 0) {
switch (online) {
case -2: {
QDate yesterday(date(now).date());
yesterday.addDays(-1);
return int32(QDateTime(yesterday).toTime_t());
} break;
case -3: {
QDate weekago(date(now).date());
weekago.addDays(-7);
return int32(QDateTime(weekago).toTime_t());
} break;
case -4: {
QDate monthago(date(now).date());
monthago.addDays(-30);
return int32(QDateTime(monthago).toTime_t());
} break;
}
}
return online;
}
int32 onlineWillChangeIn(int32 online, int32 now) {
if (online <= 0) return 86400;
if (online > now) {
@@ -181,8 +208,15 @@ namespace App {
}
QString onlineText(int32 online, int32 now, bool precise) {
if (!online) return lang(lng_status_offline);
if (online < 0) return lang(lng_status_invisible);
if (online <= 0) {
switch (online) {
case 0: return lang(lng_status_offline);
case -2: return lang(lng_status_recently);
case -3: return lang(lng_status_last_week);
case -4: return lang(lng_status_last_month);
}
return lang(lng_status_invisible);
}
if (online > now) {
return lang(lng_status_online);
}
@@ -241,7 +275,7 @@ namespace App {
data = App::user(peer);
data->input = MTP_inputPeerContact(d.vid);
data->inputUser = MTP_inputUserContact(d.vid);
data->setName(lang(lng_deleted), QString(), QString());
data->setName(lang(lng_deleted), QString(), QString(), QString());
data->setPhoto(MTP_userProfilePhotoEmpty());
data->access = 0;
wasContact = (data->contact > 0);
@@ -254,7 +288,7 @@ namespace App {
data = App::user(peer);
data->input = MTP_inputPeerContact(d.vid);
data->inputUser = MTP_inputUserContact(d.vid);
data->setName(textOneLine(qs(d.vfirst_name)), textOneLine(qs(d.vlast_name)), QString());
data->setName(textOneLine(qs(d.vfirst_name)), textOneLine(qs(d.vlast_name)), QString(), textOneLine(qs(d.vusername)));
data->setPhoto(MTP_userProfilePhotoEmpty());
data->access = 0;
wasContact = (data->contact > 0);
@@ -267,7 +301,7 @@ namespace App {
data = App::user(peer);
data->input = MTP_inputPeerSelf();
data->inputUser = MTP_inputUserSelf();
data->setName(textOneLine(qs(d.vfirst_name)), textOneLine(qs(d.vlast_name)), QString());
data->setName(textOneLine(qs(d.vfirst_name)), textOneLine(qs(d.vlast_name)), QString(), textOneLine(qs(d.vusername)));
data->setPhoto(d.vphoto);
data->setPhone(qs(d.vphone));
data->access = 0;
@@ -275,7 +309,10 @@ namespace App {
data->contact = -1;
status = &d.vstatus;
::self = data;
if (::self != data) {
::self = data;
if (App::wnd()) App::wnd()->updateGlobalMenu();
}
} break;
case mtpc_userContact: {
const MTPDuserContact &d(user.c_userContact());
@@ -284,7 +321,7 @@ namespace App {
data = App::user(peer);
data->input = MTP_inputPeerContact(d.vid);
data->inputUser = MTP_inputUserContact(d.vid);
data->setName(textOneLine(qs(d.vfirst_name)), textOneLine(qs(d.vlast_name)), QString());
data->setName(textOneLine(qs(d.vfirst_name)), textOneLine(qs(d.vlast_name)), QString(), textOneLine(qs(d.vusername)));
data->setPhoto(d.vphoto);
data->setPhone(qs(d.vphone));
data->access = d.vaccess_hash.v;
@@ -300,7 +337,7 @@ namespace App {
data->input = MTP_inputPeerForeign(d.vid, d.vaccess_hash);
data->inputUser = MTP_inputUserForeign(d.vid, d.vaccess_hash);
data->setPhone(qs(d.vphone));
data->setName(textOneLine(qs(d.vfirst_name)), textOneLine(qs(d.vlast_name)), (data->id != 333000 && !data->phone.isEmpty()) ? formatPhone(data->phone) : QString());
data->setName(textOneLine(qs(d.vfirst_name)), textOneLine(qs(d.vlast_name)), (data->id != 333000 && !data->phone.isEmpty()) ? formatPhone(data->phone) : QString(), textOneLine(qs(d.vusername)));
data->setPhoto(d.vphoto);
data->access = d.vaccess_hash.v;
wasContact = (data->contact > 0);
@@ -314,7 +351,7 @@ namespace App {
data = App::user(peer);
data->input = MTP_inputPeerForeign(d.vid, d.vaccess_hash);
data->inputUser = MTP_inputUserForeign(d.vid, d.vaccess_hash);
data->setName(textOneLine(qs(d.vfirst_name)), textOneLine(qs(d.vlast_name)), QString());
data->setName(textOneLine(qs(d.vfirst_name)), textOneLine(qs(d.vlast_name)), QString(), textOneLine(qs(d.vusername)));
data->setPhoto(d.vphoto);
data->access = d.vaccess_hash.v;
wasContact = (data->contact > 0);
@@ -327,6 +364,10 @@ namespace App {
data->loaded = true;
if (status) switch (status->type()) {
case mtpc_userStatusEmpty: data->onlineTill = 0; break;
case mtpc_userStatusRecently: data->onlineTill = -2; break;
case mtpc_userStatusLastWeek: data->onlineTill = -3; break;
case mtpc_userStatusLastMonth: data->onlineTill = -4; break;
case mtpc_userStatusOffline: data->onlineTill = status->c_userStatusOffline().vwas_online.v; break;
case mtpc_userStatusOnline: data->onlineTill = status->c_userStatusOnline().vexpires.v; break;
}
@@ -406,7 +447,7 @@ namespace App {
if (!data) continue;
data->loaded = true;
data->updateName(title.trimmed(), QString());
data->updateName(title.trimmed(), QString(), QString());
if (App::main()) App::main()->peerUpdated(data);
}
@@ -532,7 +573,7 @@ namespace App {
const MTPDphotoSize &d(size.c_photoSize());
if (d.vlocation.type() == mtpc_fileLocation) {
const MTPDfileLocation &l(d.vlocation.c_fileLocation());
return ImagePtr(d.vw.v, d.vh.v, l.vdc_id.v, l.vvolume_id.v, l.vlocal_id.v, l.vsecret.v);
return ImagePtr(d.vw.v, d.vh.v, l.vdc_id.v, l.vvolume_id.v, l.vlocal_id.v, l.vsecret.v, d.vsize.v);
}
} break;
case mtpc_photoCachedSize: {
@@ -562,20 +603,27 @@ namespace App {
}
void feedWereDeleted(const QVector<MTPint> &msgsIds) {
bool resized = false;
for (QVector<MTPint>::const_iterator i = msgsIds.cbegin(), e = msgsIds.cend(); i != e; ++i) {
MsgsData::const_iterator j = msgsData.constFind(i->v);
if (j != msgsData.cend()) {
History *h = (*j)->history();
(*j)->destroy();
if (App::main() && h->peer == App::main()->peer()) {
resized = true;
}
}
}
if (resized) {
App::main()->itemResized(0);
}
}
void feedUserLinks(const MTPVector<MTPcontacts_Link> &links) {
const QVector<MTPcontacts_Link> &v(links.c_vector().v);
for (QVector<MTPcontacts_Link>::const_iterator i = v.cbegin(), e = v.cend(); i != e; ++i) {
const MTPDcontacts_link &dv(i->c_contacts_link());
feedUsers(MTP_vector<MTPUser>(QVector<MTPUser>(1, dv.vuser)));
feedUsers(MTP_vector<MTPUser>(1, dv.vuser));
MTPint userId(MTP_int(0));
switch (dv.vuser.type()) {
case mtpc_userEmpty: userId = dv.vuser.c_userEmpty().vid; break;
@@ -635,7 +683,7 @@ namespace App {
App::main()->removeContact(user);
}
}
user->setName(textOneLine(user->firstName), textOneLine(user->lastName), (user->contact || user->id == 333000 || user->phone.isEmpty()) ? QString() : App::formatPhone(user->phone));
user->setName(textOneLine(user->firstName), textOneLine(user->lastName), (user->contact || user->id == 333000 || user->phone.isEmpty()) ? QString() : App::formatPhone(user->phone), textOneLine(user->username));
if (App::main()) App::main()->peerUpdated(user);
}
}
@@ -912,14 +960,6 @@ namespace App {
return result;
}
void forgetPhotos() {
lastPhotos.clear();
lastPhotosMap.clear();
for (PhotosData::const_iterator i = photosData.cbegin(), e = photosData.cend(); i != e; ++i) {
i.value()->forget();
}
}
VideoData *video(const VideoId &video, VideoData *convert, const uint64 &access, int32 user, int32 date, int32 duration, int32 w, int32 h, const ImagePtr &thumb, int32 dc, int32 size) {
if (convert) {
if (convert->id != video) {
@@ -968,12 +1008,6 @@ namespace App {
return result;
}
void forgetVideos() {
for (VideosData::const_iterator i = videosData.cbegin(), e = videosData.cend(); i != e; ++i) {
i.value()->forget();
}
}
AudioData *audio(const AudioId &audio, AudioData *convert, const uint64 &access, int32 user, int32 date, int32 duration, int32 dc, int32 size) {
if (convert) {
if (convert->id != audio) {
@@ -1016,12 +1050,6 @@ namespace App {
return result;
}
void forgetAudios() {
for (AudiosData::const_iterator i = audiosData.cbegin(), e = audiosData.cend(); i != e; ++i) {
i.value()->forget();
}
}
DocumentData *document(const DocumentId &document, DocumentData *convert, const uint64 &access, int32 user, int32 date, const QString &name, const QString &mime, const ImagePtr &thumb, int32 dc, int32 size) {
if (convert) {
if (convert->id != document) {
@@ -1068,10 +1096,38 @@ namespace App {
return result;
}
void forgetDocuments() {
ImageLinkData *imageLink(const QString &imageLink, ImageLinkType type, const QString &url) {
ImageLinksData::const_iterator i = imageLinksData.constFind(imageLink);
ImageLinkData *result;
if (i == imageLinksData.cend()) {
result = new ImageLinkData(imageLink);
imageLinksData.insert(imageLink, result);
result->type = type;
result->openl = TextLinkPtr(new TextLink(url));
} else {
result = i.value();
}
return result;
}
void forgetMedia() {
lastPhotos.clear();
lastPhotosMap.clear();
for (PhotosData::const_iterator i = photosData.cbegin(), e = photosData.cend(); i != e; ++i) {
i.value()->forget();
}
for (VideosData::const_iterator i = videosData.cbegin(), e = videosData.cend(); i != e; ++i) {
i.value()->forget();
}
for (AudiosData::const_iterator i = audiosData.cbegin(), e = audiosData.cend(); i != e; ++i) {
i.value()->forget();
}
for (DocumentsData::const_iterator i = documentsData.cbegin(), e = documentsData.cend(); i != e; ++i) {
i.value()->forget();
}
for (ImageLinksData::const_iterator i = imageLinksData.cbegin(), e = imageLinksData.cend(); i != e; ++i) {
i.value()->thumb->forget();
}
}
MTPPhoto photoFromUserPhoto(MTPint userId, MTPint date, const MTPUserProfilePhoto &photo) {
@@ -1117,6 +1173,17 @@ namespace App {
return 0;
}
void itemReplaced(HistoryItem *oldItem, HistoryItem *newItem) {
newItem->history()->itemReplaced(oldItem, newItem);
if (App::main()) App::main()->itemReplaced(oldItem, newItem);
if (App::hoveredItem() == oldItem) App::hoveredItem(newItem);
if (App::pressedItem() == oldItem) App::pressedItem(newItem);
if (App::hoveredLinkItem() == oldItem) App::hoveredLinkItem(newItem);
if (App::pressedLinkItem() == oldItem) App::pressedLinkItem(newItem);
if (App::contextItem() == oldItem) App::contextItem(newItem);
if (App::mousedItem() == oldItem) App::mousedItem(newItem);
}
HistoryItem *historyRegItem(HistoryItem *item) {
MsgsData::const_iterator i = msgsData.constFind(item->id);
if (i == msgsData.cend()) {
@@ -1125,10 +1192,7 @@ namespace App {
return 0;
}
if (i.value() != item && !i.value()->block() && item->block()) { // replace search item
item->history()->itemReplaced(i.value(), item);
if (App::main()) {
emit App::main()->historyItemReplaced(i.value(), item);
}
itemReplaced(i.value(), item);
delete i.value();
msgsData.insert(item->id, item);
return 0;
@@ -1168,8 +1232,8 @@ namespace App {
}
}
historyItemDetached(item);
if (App::main()) {
emit App::main()->historyItemDeleted(item);
if (App::main() && !App::quiting()) {
App::main()->itemRemoved(item);
}
}
@@ -1217,6 +1281,7 @@ namespace App {
lastPhotos.clear();
lastPhotosMap.clear();
::self = 0;
if (App::wnd()) App::wnd()->updateGlobalMenu();
}
/* // don't delete history without deleting its' peerdata
void deleteHistory(const PeerId &peer) {
@@ -1245,11 +1310,7 @@ namespace App {
void initMedia() {
deinitMedia(false);
if (!newMsgSound) {
newMsgSound = new QSoundEffect();
newMsgSound->setSource(QUrl::fromLocalFile(st::newMsgSound));
newMsgSound->setVolume(1);
}
audioInit();
if (!::sprite) {
::sprite = new QPixmap(st::spriteFile);
@@ -1266,17 +1327,10 @@ namespace App {
textlnkOver(TextLinkPtr());
textlnkDown(TextLinkPtr());
if (completely && App::main()) {
App::main()->disconnect(SIGNAL(historyItemDeleted(HistoryItem *)));
}
histories().clear();
if (completely) {
LOG(("Deleting sound.."));
delete newMsgSound;
LOG(("Sound deleted!"));
newMsgSound = 0;
audioFinish();
delete ::sprite;
::sprite = 0;
@@ -1367,7 +1421,7 @@ namespace App {
}
void playSound() {
if (cSoundNotify() && newMsgSound) newMsgSound->play();
if (cSoundNotify()) audioPlayNotify();
}
void writeConfig() {
@@ -1573,6 +1627,7 @@ namespace App {
stream << quint32(dbiNotifyView) << qint32(cNotifyView());
stream << quint32(dbiAskDownloadPath) << qint32(cAskDownloadPath());
stream << quint32(dbiDownloadPath) << (cAskDownloadPath() ? QString() : cDownloadPath());
stream << quint32(dbiCompressPastedImage) << qint32(cCompressPastedImage());
stream << quint32(dbiEmojiTab) << qint32(cEmojiTab());
RecentEmojiPreload v;
@@ -1741,7 +1796,7 @@ namespace App {
case dbinvShowName: cSetNotifyView(dbinvShowName); break;
default: cSetNotifyView(dbinvShowPreview); break;
}
}
} break;
case dbiAskDownloadPath: {
qint32 v;
@@ -1755,6 +1810,12 @@ namespace App {
cSetDownloadPath(v);
} break;
case dbiCompressPastedImage: {
qint32 v;
stream >> v;
cSetCompressPastedImage(v == 1);
} break;
case dbiEmojiTab: {
qint32 v;
stream >> v;
@@ -1851,17 +1912,14 @@ namespace App {
void checkImageCacheSize() {
int64 nowImageCacheSize = imageCacheSize();
if (nowImageCacheSize > serviceImageCacheSize + MemoryForImageCache) {
App::forgetPhotos();
App::forgetVideos();
App::forgetAudios();
App::forgetDocuments();
App::forgetMedia();
serviceImageCacheSize = imageCacheSize();
}
}
bool isValidPhone(QString phone) {
phone = phone.replace(QRegularExpression(qsl("[^\\d]")), QString());
return phone.length() >= 8 || phone == qsl("777") || phone == qsl("333") || phone == qsl("42") || phone == qsl("111");
return phone.length() >= 8 || phone == qsl("777") || phone == qsl("333") || phone == qsl("111") || (phone.startsWith(qsl("42")) && (phone.length() == 2 || phone.length() == 5 || phone == qsl("4242")));
}
void quit() {

View File

@@ -63,6 +63,7 @@ namespace App {
int32 userFromPeer(const PeerId &peer_id);
int32 chatFromPeer(const PeerId &peer_id);
int32 onlineForSort(int32 online, int32 now);
int32 onlineWillChangeIn(int32 onlineOnServer, int32 nowOnServer);
QString onlineText(int32 onlineOnServer, int32 nowOnServer, bool precise = false);
@@ -102,13 +103,11 @@ namespace App {
ChatData *chat(int32 chat);
QString peerName(const PeerData *peer, bool forDialogs = false);
PhotoData *photo(const PhotoId &photo, PhotoData *convert = 0, const uint64 &access = 0, int32 user = 0, int32 date = 0, const ImagePtr &thumb = ImagePtr(), const ImagePtr &medium = ImagePtr(), const ImagePtr &full = ImagePtr());
void forgetPhotos();
VideoData *video(const VideoId &video, VideoData *convert = 0, const uint64 &access = 0, int32 user = 0, int32 date = 0, int32 duration = 0, int32 w = 0, int32 h = 0, const ImagePtr &thumb = ImagePtr(), int32 dc = 0, int32 size = 0);
void forgetVideos();
AudioData *audio(const AudioId &audio, AudioData *convert = 0, const uint64 &access = 0, int32 user = 0, int32 date = 0, int32 duration = 0, int32 dc = 0, int32 size = 0);
void forgetAudios();
DocumentData *document(const DocumentId &document, DocumentData *convert = 0, const uint64 &access = 0, int32 user = 0, int32 date = 0, const QString &name = QString(), const QString &mime = QString(), const ImagePtr &thumb = ImagePtr(), int32 dc = 0, int32 size = 0);
void forgetDocuments();
ImageLinkData *imageLink(const QString &imageLink, ImageLinkType type = InvalidImageLink, const QString &url = QString());
void forgetMedia();
MTPPhoto photoFromUserPhoto(MTPint userId, MTPint date, const MTPUserProfilePhoto &photo);

View File

@@ -61,6 +61,13 @@ namespace {
case 3: if (ev->key() == Qt::Key_F11) _debugState = 4; else if (ev->key() != Qt::Key_F10) _debugState = 0; break;
case 4: if (ev->key() == Qt::Key_F12) offerDebug(); if (ev->key() != Qt::Key_F11) _debugState = 0; break;
}
if (cPlatform() == dbipMac && ev->key() == Qt::Key_W && (ev->modifiers() & (Qt::MetaModifier | Qt::ControlModifier))) {
if (cWorkMode() == dbiwmTrayOnly || cWorkMode() == dbiwmWindowAndTray) {
App::wnd()->minimizeToTray();
return true;
}
}
}
return QObject::eventFilter(o, e);
}
@@ -132,8 +139,6 @@ Application::Application(int &argc, char **argv) : PsApplication(argc, argv),
psInstallEventFilter();
updateCheckTimer.setSingleShot(true);
connect(&socket, SIGNAL(connected()), this, SLOT(socketConnected()));
connect(&socket, SIGNAL(disconnected()), this, SLOT(socketDisconnected()));
connect(&socket, SIGNAL(error(QLocalSocket::LocalSocketError)), this, SLOT(socketError(QLocalSocket::LocalSocketError)));
@@ -144,9 +149,12 @@ Application::Application(int &argc, char **argv) : PsApplication(argc, argv),
connect(&updateCheckTimer, SIGNAL(timeout()), this, SLOT(startUpdateCheck()));
connect(this, SIGNAL(updateFailed()), this, SLOT(onUpdateFailed()));
connect(this, SIGNAL(updateReady()), this, SLOT(onUpdateReady()));
connect(this, SIGNAL(applicationStateChanged(Qt::ApplicationState)), this, SLOT(onAppStateChanged(Qt::ApplicationState)));
connect(&writeUserConfigTimer, SIGNAL(timeout()), this, SLOT(onWriteUserConfig()));
writeUserConfigTimer.setSingleShot(true);
connect(&killDownloadSessionsTimer, SIGNAL(timeout()), this, SLOT(killDownloadSessions()));
if (cManyInstance()) {
startApp();
} else {
@@ -319,10 +327,54 @@ void Application::writeUserConfigIn(uint64 ms) {
}
}
void Application::killDownloadSessionsStart(int32 dc) {
if (killDownloadSessionTimes.constFind(dc) == killDownloadSessionTimes.cend()) {
killDownloadSessionTimes.insert(dc, getms() + MTPAckSendWaiting + MTPKillFileSessionTimeout);
}
if (!killDownloadSessionsTimer.isActive()) {
killDownloadSessionsTimer.start(MTPAckSendWaiting + MTPKillFileSessionTimeout + 5);
}
}
void Application::killDownloadSessionsStop(int32 dc) {
killDownloadSessionTimes.remove(dc);
if (killDownloadSessionTimes.isEmpty() && killDownloadSessionsTimer.isActive()) {
killDownloadSessionsTimer.stop();
}
}
void Application::checkLocalTime() {
if (App::main()) App::main()->checkLastUpdate(checkms());
}
void Application::onWriteUserConfig() {
App::writeUserConfig();
}
void Application::onAppStateChanged(Qt::ApplicationState state) {
checkLocalTime();
}
void Application::killDownloadSessions() {
uint64 ms = getms(), left = MTPAckSendWaiting + MTPKillFileSessionTimeout;
for (QMap<int32, uint64>::iterator i = killDownloadSessionTimes.begin(); i != killDownloadSessionTimes.end(); ) {
if (i.value() <= ms) {
for (int j = 1; j < MTPDownloadSessionsCount; ++j) {
MTP::killSession(MTP::dld[j] + i.key());
}
i = killDownloadSessionTimes.erase(i);
} else {
if (i.value() - ms < left) {
left = i.value() - ms;
}
++i;
}
}
if (!killDownloadSessionTimes.isEmpty()) {
killDownloadSessionsTimer.start(left);
}
}
void Application::photoUpdated(MsgId msgId, const MTPInputFile &file) {
if (!App::self()) return;
@@ -332,7 +384,8 @@ void Application::photoUpdated(MsgId msgId, const MTPInputFile &file) {
if (peer == App::self()->id) {
MTP::send(MTPphotos_UploadProfilePhoto(file, MTP_string(""), MTP_inputGeoPointEmpty(), MTP_inputPhotoCrop(MTP_double(0), MTP_double(0), MTP_double(100))), rpcDone(&Application::selfPhotoDone), rpcFail(&Application::peerPhotoFail, peer));
} else {
MTP::send(MTPmessages_EditChatPhoto(MTP_int(peer & 0xFFFFFFFF), MTP_inputChatUploadedPhoto(file, MTP_inputPhotoCrop(MTP_double(0), MTP_double(0), MTP_double(100)))), rpcDone(&Application::chatPhotoDone, peer), rpcFail(&Application::peerPhotoFail, peer));
History *hist = App::history(peer);
hist->sendRequestId = MTP::send(MTPmessages_EditChatPhoto(MTP_int(peer & 0xFFFFFFFF), MTP_inputChatUploadedPhoto(file, MTP_inputPhotoCrop(MTP_double(0), MTP_double(0), MTP_double(100)))), rpcDone(&Application::chatPhotoDone, peer), rpcFail(&Application::peerPhotoFail, peer), 0, 0, hist->sendRequestId);
}
}
}
@@ -341,6 +394,11 @@ void Application::onEnableDebugMode() {
if (!cDebug()) {
logsInitDebug();
cSetDebug(true);
QFile f(cWorkingDir() + qsl("tdata/withdebug"));
if (f.open(QIODevice::WriteOnly)) {
f.write("1");
f.close();
}
}
App::wnd()->hideLayer();
}
@@ -394,7 +452,7 @@ void Application::uploadProfilePhoto(const QImage &tosend, const PeerId &peerId)
int32 filesize = 0;
QByteArray data;
ReadyLocalMedia ready(ToPreparePhoto, file, filename, filesize, data, id, id, peerId, photo, photoThumbs, MTP_documentEmpty(MTP_long(0)), jpeg);
ReadyLocalMedia ready(ToPreparePhoto, file, filename, filesize, data, id, id, peerId, photo, photoThumbs, MTP_documentEmpty(MTP_long(0)), jpeg, false);
connect(App::uploader(), SIGNAL(photoReady(MsgId, const MTPInputFile &)), App::app(), SLOT(photoUpdated(MsgId, const MTPInputFile &)), Qt::UniqueConnection);
@@ -575,12 +633,12 @@ void Application::startApp() {
readSupportTemplates();
MTP::setLayer(mtpLayerMax);
MTP::start();
MTP::setStateChangedHandler(mtpStateChanged);
MTP::setSessionResetHandler(mtpSessionReset);
initImageLinkManager();
App::initMedia();
if (MTP::authedId()) {
@@ -589,7 +647,7 @@ void Application::startApp() {
window->setupIntro(false);
}
window->psFirstShow();
window->firstShow();
if (cStartToSettings()) {
window->showSettings();
@@ -623,11 +681,11 @@ void Application::readClients() {
int32 from = 0, l = cmds.length();
for (int32 to = cmds.indexOf(QChar(';'), from); to >= from; to = (from < l) ? cmds.indexOf(QChar(';'), from) : -1) {
QStringRef cmd(&cmds, from, to - from);
if (cmd.indexOf("CMD:") == 0) {
if (cmd.startsWith(qsl("CMD:"))) {
execExternal(cmds.mid(from + 4, to - from - 4));
QByteArray response(QString("RES:%1;").arg(QCoreApplication::applicationPid()).toUtf8());
QByteArray response(qsl("RES:%1;").arg(QCoreApplication::applicationPid()).toUtf8());
i->first->write(response.data(), response.size());
} else if (cmd.indexOf("SEND:") == 0) {
} else if (cmd.startsWith(qsl("SEND:"))) {
if (cSendPaths().isEmpty()) {
toSend.append(_escapeFrom7bit(cmds.mid(from + 5, to - from - 5)));
}
@@ -694,6 +752,7 @@ Application::~Application() {
socket.close();
closeApplication();
App::deinitMedia();
deinitImageLinkManager();
mainApp = 0;
delete updateReply;
delete ::uploader;

View File

@@ -70,6 +70,11 @@ public:
void writeUserConfigIn(uint64 ms);
void killDownloadSessionsStart(int32 dc);
void killDownloadSessionsStop(int32 dc);
void checkLocalTime();
signals:
void peerPhotoDone(PeerId peer);
@@ -100,10 +105,16 @@ public slots:
void onEnableDebugMode();
void onWriteUserConfig();
void killDownloadSessions();
void onAppStateChanged(Qt::ApplicationState state);
private:
QMap<MsgId, PeerId> photoUpdates;
QMap<int32, uint64> killDownloadSessionTimes;
SingleTimer killDownloadSessionsTimer;
void startApp();
typedef QPair<QLocalSocket*, QByteArray> ClientSocket;
@@ -123,10 +134,10 @@ private:
mtpRequestId updateRequestId;
QNetworkAccessManager updateManager;
QNetworkReply *updateReply;
QTimer updateCheckTimer;
SingleTimer updateCheckTimer;
QThread *updateThread;
PsUpdateDownloader *updateDownloader;
QTimer writeUserConfigTimer;
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 688 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 856 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 515 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 560 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Some files were not shown because too many files have changed in this diff Show More