Compare commits

...

285 Commits

Author SHA1 Message Date
John Preston
a9319bf6a3 0.8.57 stable version with confirmation for spam reports 2015-09-13 12:24:15 +03:00
John Preston
b31c997fac langs updated 2015-09-13 11:43:39 +03:00
John Preston
50ffde23d6 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-09-12 22:01:19 +03:00
John Preston
f431591bef fixed speed in os x qt, added langs for report spam confirm, fixed os x drag n drop forward 2015-09-12 22:00:56 +03:00
telegramdesktop
2e8b4644bc Merge pull request #1063 from auchri/readme
README.md update
2015-09-10 19:19:57 +03:00
John Preston
8f0606c9b6 fixed warning in os x and linux, 0.8.56 stable version 2015-09-10 16:43:46 +03:00
John Preston
1174936fb3 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-09-10 16:41:41 +03:00
John Preston
dbbf360e32 fixed report button in 0.8.56 stable version 2015-09-10 16:40:29 +03:00
John Preston
dcf1eb6321 os x and linux warning fixed in 0.8.56, win version uses prev commit 2015-09-10 16:29:37 +03:00
John Preston
825567a44f version 0.8.56 stable prepared 2015-09-10 16:20:22 +03:00
John Preston
1dfe3a60c4 langs updated 2015-09-10 16:13:53 +03:00
John Preston
cc1d46b486 Merge branch 'master' of https://bitbucket.org/johnprestonmail/telegram-desktop 2015-09-10 14:22:28 +03:00
John Preston
ee8ddd3714 langs updated 2015-09-10 14:22:18 +03:00
John Preston
00783d116a Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-09-10 14:20:50 +03:00
John Preston
96e69c091f custom links support done 2015-09-10 14:20:28 +03:00
John Preston
7bc27ba0bf fixed item resize on entities receive 2015-09-10 13:30:59 +03:00
John Preston
a42a76a4ec Merge branch 'master' of https://bitbucket.org/johnprestonmail/telegram-desktop 2015-09-09 18:36:54 +03:00
John Preston
f6740f6c9e langs updated 2015-09-09 18:17:20 +03:00
John Preston
0a80ef0006 writing report spam statuses to local storage 2015-09-09 11:19:25 +03:00
John Preston
ce678bad68 handling errors for spammers 2015-09-09 10:46:31 +03:00
John Preston
7a278729e1 report spam almost done 2015-09-08 20:22:29 +03:00
John Preston
28e09ab39e report spam panel added 2015-09-08 15:20:30 +03:00
John Preston
c45d9e9860 fixed crash in showNextNotify, started reportspam button 2015-09-07 18:53:46 +03:00
John Preston
ff39a2eacc Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-09-07 12:02:44 +03:00
John Preston
56d110efc2 fixed notifications in OS X 10.8 2015-09-07 12:02:17 +03:00
Christoph Auer
2d3cfd33cc Updated Qt license link 2015-09-06 18:51:50 +02:00
Christoph Auer
e2c7a655f1 Style updates
* List for "Projects in Telegram solution"
2015-09-06 18:17:03 +02:00
Christoph Auer
3e5dc29185 Updating README.md
Fixed style and small typos
2015-09-04 16:26:34 +02:00
Christoph Auer
46f2154eab Updated README.md
Corrected style different typos (reverted from commit 12aeef86ea)
2015-09-04 16:15:57 +02:00
Christoph Auer
12aeef86ea Updated README.md
Corrected style different typos
2015-09-04 16:13:49 +02:00
John Preston
42d297f192 finally prepared 0.8.55 version 2015-09-02 13:22:15 +03:00
John Preston
4d7e90f7e9 fixed adding contacts from shared contacts 2015-09-02 13:20:33 +03:00
John Preston
ad089cb8da fixed entities update, version 0.8.55 stable 2015-09-02 00:33:44 +03:00
John Preston
fef40bb59f changelog added to 0.8.55 2015-09-01 17:00:32 +03:00
John Preston
cc4cd486bf version 0.8.55 prepared 2015-09-01 16:53:56 +03:00
John Preston
b0c23fb875 fixed couple of crashes, webpage doc init, added tooltips to overview, fixed shared links empty url, langs updated for 0.8.55 stable version 2015-09-01 16:50:56 +03:00
John Preston
25b6740f91 version 0.8.54.dev prepared, two crash fixes 2015-08-31 18:05:57 +03:00
John Preston
a0f7a4607d Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-08-31 18:04:29 +03:00
John Preston
3fe8b28a02 langs updated 2015-08-31 18:03:25 +03:00
John Preston
d840ec37db preparing new dev version, date tooltip on timestamp hover, year marks in old day labels, new auth code / sms algo 2015-08-31 17:27:20 +03:00
John Preston
84436a34b0 gifs and pdfs attached by link, prepare for 0.8.54 stable version 2015-08-30 17:57:21 +03:00
John Preston
5226bb485b Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-08-28 19:30:47 +03:00
John Preston
77b0ca2220 fixed entities, version 0.8.53.dev 2015-08-28 19:30:32 +03:00
John Preston
9ac90115d8 fix for os x build, 0.8.53.dev 2015-08-28 18:59:43 +03:00
John Preston
9a51e2c7e3 fixed mail links in Win10, include muted chats in the unread badge setting, shared links overview and search, version 0.8.53.dev 2015-08-28 18:15:56 +03:00
John Preston
bfde1d2143 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-08-24 13:53:14 +03:00
John Preston
4afa1aace0 serverside links parsing used 2015-08-24 13:53:04 +03:00
John Preston
8dff205949 links support started 2015-08-21 14:23:44 +03:00
telegramdesktop
85a2fb1876 Merge pull request #1020 from eduardosm/disable-updater
Allow to disable the updater using a marco
2015-08-20 13:41:13 +03:00
Eduardo Sánchez Muñoz
4e65b2724d Allow to disable the updater using a marco
Adding "DEFINES += TDESKTOP_DISABLE_AUTOUPDATE" to Telegram.pro would disable the updater. This eases creating packages for Linux distributions, where updates are handled by the corresponding package manager.
2015-08-20 00:00:37 +02:00
John Preston
5a1079e367 version 0.8.52 with some fixes 2015-08-19 16:54:17 +03:00
John Preston
20f1610d60 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-08-17 12:29:32 +03:00
John Preston
6dfa9dd3b5 langs updated, version 0.8.51 stable 2015-08-17 12:29:00 +03:00
John Preston
6a05924dcf version 0.8.51 prepared, with win7 and winxp fix 2015-08-16 19:37:56 +03:00
John Preston
2039cd4660 fixed win7 start 2015-08-16 18:27:34 +03:00
John Preston
8259314721 fixed crash in notifyShowNext(), not always enum pinned icons 2015-08-16 17:42:41 +03:00
John Preston
d32e476d96 version 0.8.50.dev fixed crash in Go to FAQ 2015-08-14 19:31:29 +03:00
John Preston
856502a06a Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-08-14 18:50:03 +03:00
John Preston
48ee79ed9d langs updated for 0.8.50.dev 2015-08-14 18:49:49 +03:00
John Preston
1897dad06b Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-08-14 18:48:18 +03:00
John Preston
a95822b2ec version 0.8.50.dev - fixes in Windows toast notifications support, fixes in linux input methods 2015-08-14 18:47:56 +03:00
John Preston
4cb22530ae Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-08-14 18:30:24 +03:00
John Preston
fa501b18e4 crashfix in sending audio files 2015-08-14 18:24:40 +03:00
John Preston
9002a49fcc added patch for fcitx input in linux 2015-08-13 18:26:38 +03:00
John Preston
6621171e60 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-08-13 18:11:18 +03:00
John Preston
c16ea77c52 altering AppUserModelId in pinned shortcut in Windows 2015-08-13 18:11:07 +03:00
John Preston
efa62ece72 added fcitx inputcontext plugin for linux version 2015-08-13 18:09:04 +03:00
telegramdesktop
869194f16a Merge pull request #819 from ner0x652/patch-1
Update README.md with a new supported OS
2015-08-13 15:36:10 +03:00
telegramdesktop
b5c4c34164 Merge pull request #843 from NgoHuy/ibus
Add Ibus supported by Qt5 officially
2015-08-13 15:23:21 +03:00
John Preston
30e96a1d5e improved translation, 0.8.49.dev 2015-08-12 21:09:03 +03:00
John Preston
82dc07ee42 fixed warnings, version 0.8.49.dev 2015-08-12 21:05:25 +03:00
John Preston
6a41d307bb Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-08-12 21:02:31 +03:00
John Preston
afac237f03 improved window activation in os x 2015-08-12 21:02:20 +03:00
John Preston
8511181508 version 0.8.49.dev - block/unblock users in profile, ask question and faq link in Settings, Windows 8/8.1/10 toast notifications 2015-08-12 21:01:32 +03:00
John Preston
cf9737e762 Windows 8/8.1/10 toast notifications support added 2015-08-11 22:50:48 +03:00
John Preston
1b16064db6 0.8.48 stable version with clear history and conversation search 2015-08-08 12:28:34 +03:00
John Preston
bcd8334263 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-08-08 12:23:20 +03:00
John Preston
897699dd04 langs updated 2015-08-08 12:22:47 +03:00
John Preston
3a97bfd110 deadlock fixed in mtpConnection 2015-08-08 12:14:47 +03:00
John Preston
9792d5df76 fixed warnings, version 0.8.47.dev 2015-08-07 15:20:19 +03:00
John Preston
5dd8eab606 version 0.8.47.dev - search in conversation, clear history, delete conversation, saving cleared conversations locally, removed contacts from left column 2015-08-07 15:11:50 +03:00
John Preston
61729119c5 Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop 2015-08-05 18:27:09 +03:00
John Preston
6225bd3bcb fixed crash on sticker send, version 0.8.46 2015-08-05 16:48:27 +03:00
John Preston
aabf136690 search in conversation, clear history and delete conversation for all chats 2015-08-04 18:01:47 +03:00
John Preston
ad8e3f36ad fixed pointer, version 0.8.45 2015-08-03 13:22:05 +03:00
John Preston
0d381870a7 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-08-03 13:05:56 +03:00
John Preston
2a66ab036c Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-08-03 12:59:55 +03:00
John Preston
af948466f4 langs updated, version 0.8.45 2015-08-03 12:59:41 +03:00
John Preston
d50f3f475f fixed crash in send actions 2015-08-03 11:25:25 +03:00
John Preston
df78831592 trying appindicator first in xfce 2015-08-02 22:15:26 +03:00
John Preston
a0dc865bdc version 0.8.45 stable 2015-08-02 21:07:46 +03:00
John Preston
878604225c langs updated 2015-08-02 21:04:53 +03:00
John Preston
85d0c42d73 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-08-02 20:40:58 +03:00
John Preston
c89ee8224c gnome using custom tray icon, win10 multiple desktops shadow fix 2015-08-02 20:40:44 +03:00
John Preston
bf74d02079 Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-08-02 11:07:34 +03:00
John Preston
a9a4623c63 fixed photosendbox doc and contact display 2015-08-02 11:07:26 +03:00
John Preston
b9022ada09 Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-08-01 16:13:00 +03:00
John Preston
f290fef3a3 added XCODEold.md to git 2015-08-01 15:56:30 +03:00
John Preston
29b8596439 instructions updated 2015-08-01 15:56:10 +03:00
John Preston
14ae657073 improved deploy script 2015-08-01 11:34:56 +03:00
John Preston
637b6d9e6e Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-08-01 11:33:45 +03:00
John Preston
86325e889f 0.8.44 dev version - media typings support 2015-08-01 11:33:00 +03:00
John Preston
84a790f3cd added mac32 version for deploy 2015-07-31 17:26:37 +03:00
John Preston
ab23ef4c4f version 0.8.43 stable 2015-07-31 17:18:40 +03:00
John Preston
9aba996403 Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-07-31 16:43:42 +03:00
John Preston
c735b6655d fixed autoupdater, 0.8.42.dev version 2015-07-31 16:43:18 +03:00
John Preston
55e7ab75c9 PrepareMac fixed 2015-07-31 14:11:23 +03:00
John Preston
eab0af50e0 version 0.8.43 stable 2015-07-31 14:04:08 +03:00
John Preston
f5259b58e5 fixed bug in dev -> stable update, version 0.8.42.dev 2015-07-31 13:32:33 +03:00
John Preston
559e387d15 Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-07-30 12:48:29 +02:00
John Preston
db78095c79 0.8.43 stable version (equal to 0.8.42.dev) 2015-07-30 12:47:12 +02:00
John Preston
46ad7a31ad returned Xcode project to Qt 5.5 2015-07-28 15:58:59 +02:00
John Preston
b5d7af65f8 0.8.42.dev version ready - dev updates to stable, new mac32 update url (for old OS X versions) 2015-07-28 15:49:16 +02:00
John Preston
b0d67a65a8 temp downgrade to Qt 5.4 on OS X (Qt 5.5 does not support OS X 10.7) 2015-07-28 15:47:21 +02:00
John Preston
aaf347432b stable version 0.8.42 - new unread loading and Qt 5.5.0 2015-07-25 18:54:01 +02:00
John Preston
021fbb8ad4 fixed crash in recording 2015-07-25 01:43:11 +02:00
John Preston
5fe1b7b51f fixed two crashes, enabled not qt tray icon in pantheon env 2015-07-24 10:37:17 +02:00
John Preston
f0c580db2d fixed unity count, version 0.8.41.dev 2015-07-21 18:12:21 +02:00
John Preston
8339c51017 added pretty number formatting to Xcode and Qt Creator projects, version 0.8.41.dev 2015-07-21 17:49:14 +02:00
John Preston
af7cd9680d qt patch updated, version 0.8.41.dev 2015-07-21 17:40:51 +02:00
John Preston
20e7d9e036 fixed some issues with forwarding, Great Minds sticker pack info, windows start 2015-07-21 17:35:08 +02:00
John Preston
f1de06424e Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-07-21 16:55:43 +02:00
John Preston
ff0f8c254f new dev version 0.8.41 with pretty number formatting, Qt tray icon for all linux systems and more 2015-07-21 16:55:23 +02:00
John Preston
f0f0be9452 fixed Qt tray icon for KDE, using Qt tray icon for all graphic envs, testing 2015-07-21 15:29:38 +02:00
John Preston
c553ed6775 added flac mime type when sending files, version 0.8.40.dev 2015-07-17 22:30:24 +03:00
John Preston
c786a2bf9c new history loading (one-request loading always), fixed audio unlistened status on media send, fixed flac playing, fixed os x crashes, version 0.8.40.dev 2015-07-17 22:17:37 +03:00
John Preston
e193a86eaa fixed Qt 5.5 image scale crash, fixed empty photo in mediaview crash 2015-07-15 14:23:59 +03:00
John Preston
d5afafcdd0 Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-07-14 22:07:37 +03:00
John Preston
5b9cdbd98a dev version 0.8.39 - Qt 5.5.0, repeat button in audio play 2015-07-14 22:07:21 +03:00
John Preston
20fe4ccc55 Qt 5.5.0 added to Xcode and Qt Creator project files 2015-07-14 19:48:49 +03:00
John Preston
8bb376798e removed old warning disable for clang 2015-07-14 16:18:37 +03:00
John Preston
7d51682edd moving to Qt 5.5.0 2015-07-14 15:21:13 +03:00
John Preston
f37159911c Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-07-13 20:56:55 +03:00
John Preston
4f7f569ddd fixed double play of audio after download complete 2015-07-13 20:56:44 +03:00
John Preston
b352d38acf multimedia keys handle added 2015-07-13 20:55:59 +03:00
John Preston
5663841742 Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-07-13 14:14:19 +03:00
John Preston
8e2943fe11 filling optimized 2015-07-13 14:14:15 +03:00
John Preston
5595570dfe optimized emoji insert 2015-07-13 14:08:17 +03:00
John Preston
afa28e9754 optimized emoji insertion 2015-07-13 13:45:09 +03:00
John Preston
5a38cb4581 fixed crash 2015-07-12 18:39:56 +03:00
John Preston
cf119568a1 version 0.8.38 graphics changed 2015-07-03 21:03:47 +03:00
John Preston
8b1195df8d Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-07-03 19:20:15 +03:00
John Preston
7021156732 version 0.8.38 stable with media playback and force_reply in conversations with bots 2015-07-03 19:19:46 +03:00
John Preston
4f2ff9e343 added padding in player, bot commands description QString -> Text (emoji support) 2015-07-03 18:55:22 +03:00
John Preston
3dc7c3e776 playerwidget added to .xcodeproj and .pro files, version 0.8.37.dev 2015-07-03 14:00:11 +03:00
John Preston
e509c14ed1 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop into dev 2015-07-03 13:48:39 +03:00
John Preston
a65ef6fb00 preparing version 0.8.37.dev 2015-07-03 13:48:28 +03:00
John Preston
4c1d12fa70 langs updated 2015-07-03 13:46:48 +03:00
John Preston
1268774517 audio player done 2015-07-03 11:47:16 +03:00
John Preston
61a2a44584 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop into dev 2015-07-01 01:59:21 +03:00
John Preston
89d68cab3e version 0.8.36 prepared 2015-07-01 00:27:56 +03:00
John Preston
f7d55005c4 audio documents playback added, audio documents suppress on voice message, and both suppress on notify added 2015-07-01 00:07:05 +03:00
John Preston
387694f477 langs updated for 0.8.35.dev 2015-06-30 09:40:35 +03:00
John Preston
bc58c73fb4 improved deadlock fix 0.8.35.dev version 2015-06-30 01:22:14 +03:00
John Preston
a4223ec3e0 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-06-30 01:09:29 +03:00
John Preston
d57f6a973f version 0.8.35.dev ready with some optimizations 2015-06-30 01:09:23 +03:00
John Preston
24ffa08d6e langs updated 2015-06-30 01:06:40 +03:00
John Preston
4b2fccf762 changelog for stable version added 2015-06-29 15:47:25 +03:00
John Preston
da5887fbb5 fixed two layout bugs 2015-06-29 15:43:41 +03:00
John Preston
9926357af5 fixed one deadlock, langs change name -> username 2015-06-29 15:25:28 +03:00
John Preston
ef9aaf659c fixed drag-n-drop in OS X for 0.8.34.dev version 2015-06-28 18:41:13 +03:00
John Preston
dd797d5d46 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-06-28 16:16:30 +03:00
John Preston
9c91bc1677 QDrag exec moved to timeout for 0.8.34.dev 2015-06-28 16:16:25 +03:00
John Preston
4f3aaa3e7f fixed overview for 0.8.34.dev 2015-06-28 16:15:07 +03:00
John Preston
51451181f8 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-06-28 15:37:43 +03:00
John Preston
405dfbebae forward by drag-n-drop from media overview, fixed video overview, stickers enlarged and optimized, preparing version 0.8.34.dev 2015-06-28 15:37:10 +03:00
John Preston
8e82b8894d forward-by-drag-n-drop done for images, documents, stickers and messages-by-date 2015-06-27 16:02:00 +03:00
John Preston
b84101b12e Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-06-26 12:08:20 +03:00
John Preston
5182c58292 langs updated 2015-06-26 12:08:14 +03:00
John Preston
d81d6bbeaa drag-n-drop files to dialogs list 2015-06-26 12:07:59 +03:00
John Preston
ddac19788f fixed ipv6 edit in mac/linux for version 0.8.33.dev 2015-06-25 22:05:20 +03:00
John Preston
990c085fc5 version 0.8.33.dev changelog added 2015-06-25 21:08:20 +03:00
John Preston
2940561ee2 added IPv6 setting checkbox in Connection Type box in Settings, version 0.8.33.dev 2015-06-25 21:04:40 +03:00
John Preston
890352ef97 version 0.8.32 crashfix + ipv6 disabled because of KIS 2015-06-25 13:12:38 +03:00
John Preston
88c44caf9d 0.8.31.dev version ready 2015-06-24 23:05:14 +03:00
John Preston
3f6664c82a version 0.8.30.dev fixed commands list 2015-06-24 21:40:32 +03:00
John Preston
793a2ec90c version 0.8.30 with bots support and forward-by-dragndrop 2015-06-24 20:24:48 +03:00
John Preston
780d00bd8c langs updated 2015-06-24 14:10:05 +03:00
John Preston
607169cbda version 0.8.29.dev with some more improvements 2015-06-22 11:51:39 +03:00
John Preston
fd1cbb45f2 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-06-22 11:50:10 +03:00
John Preston
c113eafdc8 langs updated 2015-06-22 11:49:55 +03:00
Severus
0647bbba0e Add Ibus symbol to Qt5 inputmethod 2015-06-21 10:20:56 +07:00
John Preston
ea83f90e15 start button positioning fixed 2015-06-20 01:13:56 +03:00
John Preston
dfd5cb4f4e sticker set menu named Add Stickers, improved stickers panel 2015-06-20 00:58:01 +03:00
John Preston
ea4186eb0c Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-06-19 15:41:19 +03:00
John Preston
e7914ac468 improved custom keyboard 2015-06-19 15:39:33 +03:00
John Preston
052e0b827a improved sync, version 0.8.28.dev 2015-06-18 20:50:41 +03:00
John Preston
689b51e607 Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-06-18 20:27:22 +03:00
John Preston
11384743bc improved mentions dropdown, version 0.8.28.dev 2015-06-18 20:24:54 +03:00
John Preston
d8d733e24d langs updated 2015-06-18 20:22:49 +03:00
John Preston
391b370b0f changed s|sg to start|startgroup in telegram.me links, version 0.8.27.dev 2015-06-17 23:29:58 +03:00
John Preston
9b863fcf5b version 0.8.27.dev ready 2015-06-17 23:07:25 +03:00
John Preston
609868858b Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-06-17 22:43:09 +03:00
John Preston
c291bf0861 version 0.8.27.dev ready 2015-06-17 22:43:03 +03:00
John Preston
bfd5482c15 langs updated 2015-06-17 22:42:44 +03:00
John Preston
52ea153c31 langs updated 2015-06-17 22:05:05 +03:00
John Preston
287c99ed2f 0.8.26.dev version with lang updates 2015-06-17 00:11:34 +03:00
John Preston
8e60f54dac Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-06-17 00:04:22 +03:00
John Preston
1f3fae53ca removed QCoreWlanEnginePlugin, some langs updates 2015-06-17 00:04:18 +03:00
John Preston
05ac97526e 0.8.26.dev version with fixed schema 2015-06-17 00:01:43 +03:00
John Preston
5fadfed47a test markup removed, version 0.8.25.dev ready 2015-06-15 20:48:25 +03:00
John Preston
ec1d547f27 warnings fixed, 0.8.25.dev code for os x and linux 2015-06-15 20:36:16 +03:00
John Preston
9fee0ace4c styles gen tab fixed, linux nautilus changed to xdg-open, source for 0.8.25.dev version 2015-06-15 20:30:02 +03:00
John Preston
84c2a33c18 0.8.25.dev version with ipv6, bots profiles, keyboard and command autocomplete + elided text align fixed 2015-06-15 20:19:24 +03:00
Cornel Punga
8e1c10463f Update README.md with a new supported OS
It also work on Fedora 22. Tested!
2015-06-11 12:34:35 +03:00
John Preston
83744e77d1 bot description displayed in message history, bot commands are highlighted and sent by click 2015-06-10 18:54:24 +03:00
John Preston
85635dbefd 31 layer, IPv6 support, bot support started 2015-06-10 15:48:26 +03:00
telegramdesktop
11e6d04dc7 Merge pull request #671 from Streppel/patch-2
Updated build instructions for linux
2015-06-09 13:19:34 +03:00
telegramdesktop
e89e909c5e Merge pull request #613 from Streppel/patch-1
Update QTCREATOR.md
2015-06-09 13:16:49 +03:00
John Preston
7afda6dfc3 changelog added in 0.8.24 2015-06-08 15:25:23 +03:00
John Preston
3a35b6c5fd version 0.8.24 with new sticker packs buttons done 2015-06-08 15:24:21 +03:00
John Preston
c449e45def Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-06-08 15:19:42 +03:00
John Preston
6c704e3595 langs done 2015-06-08 15:19:25 +03:00
John Preston
318794692f trying to fix undefined behaviour in notifyShowNext() 2015-06-06 20:08:44 +03:00
John Preston
62a0878198 linear anim for sticker packs icons 2015-06-05 20:06:37 +03:00
John Preston
cb1c8c4aea version 0.8.23.dev with sticker packs buttons prepared 2015-06-05 18:59:58 +03:00
John Preston
1ee5c14b85 Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-06-05 18:55:58 +03:00
John Preston
01410e5d92 fixed crash in new sticker icons 2015-06-05 18:55:46 +03:00
John Preston
0e5d26a469 sticker packs buttons improved for os x 2015-06-05 18:37:11 +03:00
John Preston
95e5b7be0b stickers pan with packs buttons 2015-06-05 18:02:20 +03:00
John Preston
6d8f277904 version 0.8.22.dev prepared - new OpenAL version, new Auto-Update (no temp -> ready rename), some fixes 2015-06-04 16:04:34 +03:00
John Preston
b6325ec9d4 0.8.24.dev test (not production!) version ready, updaters improved (no tdata copying while updating) 2015-06-04 14:59:30 +03:00
John Preston
3373a2f382 skipping tdata folder when updating in linux, log file name fixed for Updater in os x 2015-06-04 14:51:52 +03:00
John Preston
9fcd878f1d Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-06-04 13:55:29 +03:00
John Preston
1c50c35abe 0.8.23.dev test (not production!) version ready, autoupdater cleaning old ready dir 2015-06-04 13:54:56 +03:00
John Preston
6a0ee57054 Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-06-04 13:52:29 +03:00
John Preston
00adfa6f3d improved logging of Updater in os x 2015-06-04 13:52:16 +03:00
John Preston
6058c8862e improved Updater in Linux (DebugLogs for Updater in working dir) 2015-06-04 13:50:53 +03:00
John Preston
e5f2f68188 fixed recording display, 0.8.22.dev test version ready (not production!) 2015-06-03 21:35:26 +03:00
John Preston
c6ee2772e2 new updater fixed for os x, 0.8.22.dev test version (not production) 2015-06-03 21:29:57 +03:00
John Preston
16caff1ca4 test dev version 0.8.22 (not production!) prepared, fixed display of group from which I left 2015-06-03 21:20:57 +03:00
John Preston
ac2ae16f47 MSVC instruction improved for OpenAL, merging autoupdate code for all OSs (not tested yet!) 2015-06-03 21:13:01 +03:00
John Preston
c40758f30d openal updated in Windows 2015-06-03 15:18:46 +03:00
John Preston
16aafe28d5 added minimum system version to Info.plist, added suspended flag to OpenAL handle 2015-06-03 14:57:14 +03:00
John Preston
db96605332 changelog added in 0.8.21 stable 2015-06-02 17:37:15 +03:00
John Preston
31954f5266 stable version 0.8.21 2015-06-02 17:31:25 +03:00
John Preston
66718de562 Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-06-02 17:01:13 +03:00
John Preston
e2d02f4e4b fixed gif animations on retina display 2015-06-02 17:00:30 +03:00
John Preston
e3d4bf192f 0.8.20.dev version linux local8bit -> utf8 2015-06-02 15:29:02 +03:00
John Preston
e7b94f3d3a version 0.8.20.dev prepared (some fixes) 2015-06-02 14:22:00 +03:00
John Preston
30be7af3e3 langs updated 2015-06-02 14:17:14 +03:00
John Preston
9069b4b269 langs updated for 0.8.19.dev 2015-06-01 23:40:09 +03:00
John Preston
040c80ae0b Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-06-01 23:29:28 +03:00
John Preston
a87c9b15d2 FixMake done for linux 32bit 2015-06-01 23:29:21 +03:00
John Preston
635cae4f94 version 0.8.19 with fixed stickerpacks and voice messages changelog 2015-06-01 23:24:09 +03:00
John Preston
67e6d12384 fixed build instructions 2015-06-01 15:56:55 +03:00
John Preston
9ccdc0e94b fixed build instructions 2015-06-01 15:52:44 +03:00
John Preston
762c0aa579 fixed build instructions 2015-06-01 15:49:53 +03:00
John Preston
5dc78932d7 instructions for building ffmpeg added 2015-06-01 15:44:10 +03:00
John Preston
e9c5f18142 fixed circle, final 0.8.18.dev-2 2015-06-01 14:21:41 +03:00
John Preston
175023b2dc Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-06-01 14:15:30 +03:00
John Preston
0a7c42c59a linux audio capture improved 2015-06-01 14:15:07 +03:00
John Preston
42122fdea0 added some stickers logging , 0.8.18 dev version ready 2015-06-01 13:58:46 +03:00
John Preston
4bfe65d8ab ffmpeg added to os x build 2015-06-01 12:42:56 +03:00
John Preston
1b06fe1220 ffmpeg audio play / capture done in os x 2015-05-30 19:30:47 +03:00
John Preston
1b11a7feae voice message recording / sending done 2015-05-29 21:52:43 +03:00
John Preston
6b60b51775 Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-05-26 11:19:52 +03:00
John Preston
981162e6b9 ffmpeg support for audio added 2015-05-26 11:19:47 +03:00
John Preston
c5dd99b1f1 added libmpg123 and libfaad to linux version 2015-05-24 21:58:42 +03:00
John Preston
53c536d76d libmpg123, libfaad and libmp4ff added to os x build 2015-05-24 21:39:07 +03:00
John Preston
e3ab8821b9 Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-05-24 20:59:04 +03:00
John Preston
6befea6a13 implemented .mp3 playing through libmpg123 and .m4a playing through libfaad2 in voice messages 2015-05-24 20:58:39 +03:00
John Preston
f24e3c6192 fixed audio mark as read after download 2015-05-23 18:57:16 +03:00
John Preston
63e593b3a8 fixed retina boxshadow 2015-05-22 14:43:47 +03:00
John Preston
7ca4ec1bed box shadows and bg changed, retina shadow draw fixed 2015-05-22 14:14:52 +03:00
John Preston
8ed1961886 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-05-21 18:09:07 +03:00
John Preston
ad44e45695 version 0.8.17 prepare fixed 2015-05-21 18:08:53 +03:00
John Preston
962ec1e454 Merge branch 'master' of https://github.com/telegramdesktop/tdesktop 2015-05-21 16:52:23 +03:00
John Preston
bcc718b5a9 QTKit.framework removed from build 2015-05-21 16:52:15 +03:00
John Preston
ac50119dd9 version 0.8.17 crash fix 2015-05-21 16:46:49 +03:00
John Preston
e953e11b7f rounding gifs in messages history 2015-05-21 15:08:05 +03:00
John Preston
18361ce144 sticker packs order now is saved, new packs added to the top, fixed emoji categories icons 2015-05-21 13:44:26 +03:00
John Preston
cfdacb09ac improved langs support, v 0.8.16 commit 2015-05-21 01:02:55 +03:00
John Preston
5bb83afc7a version 0.8.16 stable - fixed select of a sticker reply 2015-05-21 00:33:39 +03:00
John Preston
f35853c42e version 0.8.15.dev ready 2015-05-20 22:54:15 +03:00
John Preston
44492b9e2d fixed round corners for forward bubble and for retina 2015-05-20 22:50:05 +03:00
John Preston
a46bb46e54 Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-05-20 22:29:08 +03:00
John Preston
84c190c293 langs updated 2015-05-20 22:28:52 +03:00
John Preston
9da4a21f94 caption display in video, caption display in mediaview, removed Loading / Failed webpage display, rounded corners everywhere 2015-05-20 22:28:24 +03:00
John Preston
2a3a351445 Merge branch 'dev' of https://github.com/telegramdesktop/tdesktop into dev 2015-05-20 00:20:14 +03:00
John Preston
928cd0a8cb Great Minds went to langpack 2015-05-20 00:19:11 +03:00
John Preston
509d2189c1 added stickersetbox to .pro file 2015-05-19 19:02:41 +03:00
John Preston
725fa87188 removing new added stickers from custom 2015-05-19 18:58:22 +03:00
Natan Streppel
4b3b641152 Updated build instructions for linux
Qt project changed their domain to qt.io
2015-04-24 23:45:34 -03:00
Natan Streppel
14bd911879 Update QTCREATOR.md
updated correct path to patch, which is actually under /Telegram and not on /tdesktop
2015-03-29 13:36:55 -03:00
263 changed files with 69818 additions and 34096 deletions

84
MSVC.md
View File

@@ -39,7 +39,7 @@ Extract to **D:\TBuild\Libraries**
http://www.zlib.net/ > Download [**zlib source code, version 1.2.8, zipfile format**](http://zlib.net/zlib128.zip)
Extract to **D:\TBuild\Libraries\**
Extract to **D:\\TBuild\\Libraries\\**
#####Building library
@@ -66,13 +66,23 @@ or download in ZIP and extract to **D:\TBuild\Libraries\**, rename **libexif-0.6
* Build Debug configuration
* Build Release configuration
####OpenAL Soft
####OpenAL Soft, slightly patched
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**
to have **D:\TBuild\Libraries\openal-soft\CMakeLists.txt**, then in [Git Bash](http://git-scm.com/downloads) go to **/d/tbuild/libraries/openal-soft** and run
git checkout 9479ea656b
Apply patch
* OR copy (with overwrite!) everything from **D:\\TBuild\\tdesktop\\\_openal\_patch\\** to **D:\\TBuild\\Libraries\\openal-soft\\**
* OR in Git Bash go to **/d/tbuild/libraries/openal-soft/** and run
git apply ./../../tdesktop/Telegram/_openal_patch.diff
#####Building library
@@ -87,48 +97,60 @@ to have **D:\TBuild\Libraries\openal-soft\CMakeLists.txt**
* 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
####Opus codec
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
git clone https://github.com/telegramdesktop/opus.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**
* Open in VS2013 **D:\TBuild\Libraries\opus\win32\VS2010\opus.sln**
* 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
* Build Release configuration (it will be required in **FFmpeg** build!)
####Qt 5.4.0, slightly patched
####FFmpeg
http://download.qt-project.org/official_releases/qt/5.4/5.4.0/single/qt-everywhere-opensource-src-5.4.0.zip
https://www.ffmpeg.org/download.html > Download [ffmpeg-2.6.3.tar.bz2](http://ffmpeg.org/releases/ffmpeg-2.6.3.tar.bz2)
Extract to **D:\TBuild\Libraries\**, rename **qt-everywhere-opensource-src-5.4.0** to **QtStatic** to have **D:\TBuild\Libraries\QtStatic\qtbase\** folder
Extract to **D:\\TBuild\\Libraries**
http://msys2.github.io/ > Download [msys2-x86_64-20150512.exe](http://sourceforge.net/projects/msys2/files/Base/x86_64/msys2-x86_64-20150512.exe/download) and install to **D:\\msys64**
#####Building libraries
Download [yasm for Win64](http://www.tortall.net/projects/yasm/releases/yasm-1.3.0-win64.exe) from http://yasm.tortall.net/Download.html, rename **yasm-1.3.0-win64.exe** to **yasm.exe** and place it to your Visual C++ **bin** directory, like **\\Program Files (x86)\\Microsoft Visual Studio 12\\VC\\bin\\**
Open **VS2013 x86 Native Tools Command Prompt.bat** (should be in **\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\Tools\\Shortcuts\\** folder), go to **D:\\msys64\\** and launch **msys2_shell.bat**, there run
PATH="/c/Program Files (x86)/Microsoft Visual Studio 12.0/VC/BIN:$PATH"
cd /d/TBuild/Libraries/ffmpeg-2.6.3
pacman -S msys/make
pacman -S mingw64/mingw-w64-x86_64-opus
pacman -S pkg-config
PKG_CONFIG_PATH="/mingw64/lib/pkgconfig:$PKG_CONFIG_PATH"
./configure --toolchain=msvc --disable-programs --disable-everything --enable-libopus --enable-decoder=aac --enable-decoder=aac_latm --enable-decoder=aasc --enable-decoder=mp1 --enable-decoder=mp1float --enable-decoder=mp2 --enable-decoder=mp2float --enable-decoder=mp3 --enable-decoder=mp3adu --enable-decoder=mp3adufloat --enable-decoder=mp3float --enable-decoder=mp3on4 --enable-decoder=mp3on4float --enable-decoder=wavpack --enable-decoder=opus --enable-decoder=vorbis --enable-decoder=wmalossless --enable-decoder=wmapro --enable-decoder=wmav1 --enable-decoder=wmav2 --enable-decoder=wmavoice --enable-decoder=flac --enable-encoder=libopus --enable-parser=aac --enable-parser=aac_latm --enable-parser=mpegaudio --enable-parser=opus --enable-parser=vorbis --enable-parser=flac --enable-demuxer=aac --enable-demuxer=wav --enable-demuxer=mp3 --enable-demuxer=ogg --enable-demuxer=mov --enable-demuxer=flac --enable-muxer=ogg --enable-muxer=opus --extra-ldflags="-libpath:/d/TBuild/Libraries/opus/win32/VS2010/Win32/Release celt.lib silk_common.lib silk_float.lib"
make
make install
####Qt 5.5.0, slightly patched
http://download.qt-project.org/official_releases/qt/5.5/5.5.0/single/qt-everywhere-opensource-src-5.5.0.zip
Extract to **D:\TBuild\Libraries\**, rename **qt-everywhere-opensource-src-5.5.0** to **QtStatic** to have **D:\TBuild\Libraries\QtStatic\qtbase\** folder
Apply patch
* OR copy (with overwrite!) everything from **D:\TBuild\tdesktop\\\_qt\_5\_4\_0\_patch\** to **D:\TBuild\Libraries\QtStatic\**
* OR copy **D:\TBuild\tdesktop\\\_qt\_5\_4\_0\_patch.diff** to **D:\TBuild\Libraries\QtStatic\**, go there in Git Bash and run
* OR copy (with overwrite!) everything from **D:\TBuild\tdesktop\\\_qt\_5\_5\_0\_patch\** to **D:\TBuild\Libraries\QtStatic\**
* OR in Git Bash go to **/d/TBuild/Libraries/QtStatic/** and run
git apply _qt_5_4_0_patch.diff
git apply ./../../tdesktop/Telegram/_qt_5_5_0_patch.diff
#####Building library
@@ -161,8 +183,8 @@ Close all VS2013 instances and install to default location
* Launch VS2013 for configuring Qt Addin
* QT5 > Qt Options > Add
* Version name: **QtStatic.5.4.0**
* Version name: **QtStatic.5.5.0**
* Path: **D:\TBuild\Libraries\QtStatic\qtbase**
* Default Qt/Win version: **QtStatic.5.4.0** **OK**
* Default Qt/Win version: **QtStatic.5.5.0** **OK**
* File > Open > Project/Solution > **D:\TBuild\tdesktop\Telegram.sln**
* Build \ Build Solution (Debug and Release configurations)

View File

@@ -4,7 +4,7 @@
* Install git by command **sudo apt-get install git** in Terminal
* Install g++ by command **sudo apt-get install g++** in Terminal
* Install Qt Creator from [**Downloads page**](https://qt-project.org/downloads)
* Install Qt Creator from [**Downloads page**](https://www.qt.io/download/)
For 32 bit Ubuntu you need to install g++ version 4.8 manually by such commands
@@ -34,27 +34,24 @@ Install dev libraries
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
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
####FFmpeg
[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
Download sources [ffmpeg-2.6.3.tar.bz2](http://ffmpeg.org/releases/ffmpeg-2.6.3.tar.bz2) from https://www.ffmpeg.org/download.html, extract to **/home/user/TBuild/Libraries** to have **/home/user/TBuild/Libraries/ffmpeg-2.6.3**, go to **/home/user/TBuild/Libraries/ffmpeg-2.6.3** and run
sudo apt-get update
sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texi2html zlib1g-dev
sudo apt-get install yasm
./configure --prefix=/usr/local --disable-programs --disable-everything --enable-libopus --enable-decoder=aac --enable-decoder=aac_latm --enable-decoder=aasc --enable-decoder=mp1 --enable-decoder=mp1float --enable-decoder=mp2 --enable-decoder=mp2float --enable-decoder=mp3 --enable-decoder=mp3adu --enable-decoder=mp3adufloat --enable-decoder=mp3float --enable-decoder=mp3on4 --enable-decoder=mp3on4float --enable-decoder=wavpack --enable-decoder=opus --enable-decoder=vorbis --enable-decoder=wmalossless --enable-decoder=wmapro --enable-decoder=wmav1 --enable-decoder=wmav2 --enable-decoder=wmavoice --enable-decoder=flac --enable-encoder=libopus --enable-parser=aac --enable-parser=aac_latm --enable-parser=mpegaudio --enable-parser=opus --enable-parser=vorbis --enable-parser=flac --enable-demuxer=aac --enable-demuxer=wav --enable-demuxer=mp3 --enable-demuxer=ogg --enable-demuxer=mov --enable-demuxer=flac --enable-muxer=ogg --enable-muxer=opus
./configure
make
sudo make install
@@ -72,25 +69,35 @@ 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
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.4.0, slightly patched
####libxkbcommon (required for Fcitx Qt plugin)
http://download.qt-project.org/official_releases/qt/5.4/5.4.0/single/qt-everywhere-opensource-src-5.4.0.tar.gz
In Terminal go to **/home/user/TBuild/Libraries** and run
Extract to **/home/user/TBuild/Libraries**, rename **qt-everywhere-opensource-src-5.4.0** to **QtStatic** to have **/home/user/TBuild/Libraries/QtStatic/qtbase** folder
sudo apt-get install xutils-dev bison python-xcbgen
git clone https://github.com/xkbcommon/libxkbcommon.git
./autogen.sh --disable-x11
make
sudo make install
####Qt 5.5.0, slightly patched
http://download.qt-project.org/official_releases/qt/5.5/5.5.0/single/qt-everywhere-opensource-src-5.5.0.tar.gz
Extract to **/home/user/TBuild/Libraries**, rename **qt-everywhere-opensource-src-5.5.0** to **QtStatic** to have **/home/user/TBuild/Libraries/QtStatic/qtbase** folder
Apply patch:
* OR copy (with overwrite!) everything from **/home/user/TBuild/tdesktop/\_qt\_5\_4\_0\_patch/** to **/home/user/TBuild/Libraries/QtStatic/**
* OR copy **/home/user/TBuild/tdesktop/\_qt\_5\_4\_0\_patch.diff** to **/home/user/TBuild/Libraries/QtStatic/**, go there in Terminal and run
* OR copy (with overwrite!) everything from **/home/user/TBuild/tdesktop/Telegram/\_qt\_5\_5\_0\_patch/** to **/home/user/TBuild/Libraries/QtStatic/**
* OR copy **/home/user/TBuild/tdesktop/Telegram/\_qt\_5\_5\_0\_patch.diff** to **/home/user/TBuild/Libraries/QtStatic/**, go there in Terminal and run
git apply _qt_5_4_0_patch.diff
git apply _qt_5_5_0_patch.diff
#####Building library
@@ -109,8 +116,8 @@ building (**make** command) will take really long time.
###Building Telegram Desktop
* Launch Qt Creator, all projects will be taken from **/home/user/TBuild/tdesktop/Telegram**
* Tools > Options > Build & Run > Qt Versions tab > Add > File System /usr/local/Qt-5.4.0/bin/qmake > **Qt 5.4.0 (Qt-5.4.0)** > Apply
* Tools > Options > Build & Run > Kits tab > Desktop (default) > change **Qt version** to **Qt 5.4.0 (Qt-5.4.0)** > Apply
* Tools > Options > Build & Run > Qt Versions tab > Add > File System /usr/local/Qt-5.5.0/bin/qmake > **Qt 5.5.0 (Qt-5.5.0)** > Apply
* Tools > Options > Build & Run > Kits tab > Desktop (default) > change **Qt version** to **Qt 5.5.0 (Qt-5.5.0)** > Apply
* Open MetaStyle.pro, configure project with paths **/home/user/TBuild/tdesktop/Linux/DebugIntermediateStyle** and **/home/user/TBuild/tdesktop/Linux/ReleaseIntermediateStyle** and build for Debug
* Open MetaEmoji.pro, configure project with paths **/home/user/TBuild/tdesktop/Linux/DebugIntermediateEmoji** and **/home/user/TBuild/tdesktop/Linux/ReleaseIntermediateEmoji** and build for Debug
* Open MetaLang.pro, configure project with paths **/home/user/TBuild/tdesktop/Linux/DebugIntermediateLang** and **/home/user/TBuild/tdesktop/Linux/ReleaseIntermediateLang** and build for Debug

146
README.md
View File

@@ -1,106 +1,108 @@
## [Telegram Desktop](https://tdesktop.com) Official Telegram Messenger app
# [Telegram Desktop][telegram_desktop] Official Messenger
This is complete source code and build instructions for alpha version of official desktop client for [Telegram](https://telegram.org) messenger, based on [Telegram API](https://core.telegram.org/) and [MTProto](https://core.telegram.org/mtproto) secure protocol.
This is the complete source code and the build instructions for the alpha version of the official desktop client for the [Telegram][telegram] messenger, based on the [Telegram API][telegram_api] and the [MTProto][telegram_proto] secure protocol.
Source code is published under GPL v3, license is available [here](https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE).
The source code is published under GPL v3, the license is available [here][license].
###Supported systems
## Supported systems
* Windows XP
* Windows Vista
* Windows 7
* Windows 8 (**not** RT)
* Windows 8.1 (**not** RT)
* OS X 10.7
* OS X 10.8
* OS X 10.9
* Ubuntu 12.04
* Ubuntu 13.04
* Ubuntu 14.04
* Windows XP - Windows 10 (**not** RT)
* Mac OS X 10.8 - Mac OS X 10.10
* Mac OS X 10.6 - Mac OS X 10.7 (separate build)
* Ubuntu 12.04 - Ubuntu 14.04
* Fedora 22
###Third-party
## Third-party libraries
* Qt 5.4.0, slightly patched ([LGPL](http://qt-project.org/doc/qt-5/lgpl.html))
* Qt 5.3.2 and 5.5.0, slightly patched ([LGPL](http://doc.qt.io/qt-5/licensing.html))
* OpenSSL 1.0.1g ([OpenSSL License](https://www.openssl.org/source/license.html))
* zlib 1.2.8 ([zlib License](http://www.zlib.net/zlib_license.html))
* 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/))
* Opus codec ([BSD license](http://www.opus-codec.org/license/))
* FFmpeg ([LGPL](https://www.ffmpeg.org/legal.html))
* Open Sans font ([Apache License](http://www.apache.org/licenses/LICENSE-2.0.html))
###[Build instructions for Visual Studio 2013](https://github.com/telegramdesktop/tdesktop/blob/master/MSVC.md)
## Build instructions
###[Build instructions for XCode 5.1.1](https://github.com/telegramdesktop/tdesktop/blob/master/XCODE.md)
* [Visual Studio 2013][msvc]
* [XCode 6.4][xcode]
* [XCode 6.4 for OS X 10.6 and 10.7][xcode_old]
* [Qt Creator 3.2.0 Ubuntu][qtcreator]
###[Build instructions for Qt Creator 3.1.2 Ubuntu](https://github.com/telegramdesktop/tdesktop/blob/master/QTCREATOR.md)
## Projects in Telegram solution
##Projects in Telegram solution
* ### Telegram
####Telegram
[Telegram Desktop][telegram_desktop] messenger
tdesktop messenger
* ### Updater
####Updater
A little app, that is launched by Telegram when update is ready, replaces all files and launches it back.
little app, that is launched by Telegram when update is ready, replaces all files and launches it back
* ### Packer
####Packer
Compiles given files to single update file, compresses it with lzma and signs with a private key. It is not built in **Debug** and **Release** configurations of Telegram solution, because private key is inaccessible.
compiles given files to single update file, compresses it with lzma and signs with a private key, it is not built in **Debug** and **Release** configurations of Telegram solution, because private key is inaccessible
* ### Prepare
####Prepare
Prepares a release for deployment, puts all current files to deploy/{version} folder.
prepares a release for deployment, puts all files to deploy/{version} folder, for Win:
* current tsetup{version}exe installer
* current Telegram.exe
* current Telegram.pdb (debug info for crash minidumps view)
* current tupdate{updversion} binary lzma update archive
**Windows**:
* tsetup{version}.exe installer
* Telegram.exe
* Telegram.pdb (debug info for crash minidumps view)
* tupdate{updversion} binary lzma update archive
for Mac:
* current tsetup{version}dmg
* current Telegram.app
* current tmacupd{updversion} binary lzma update archive
**Mac**:
* tsetup{version}.dmg
* Telegram.app
* tmacupd{updversion} binary lzma update archive
####MetaEmoji
* ### MetaEmoji
from two folders
* SourceFiles/art/Emoji
* SourceFiles/art/Emoji_200x
Creates four sprites and text2emoji replace code
* SourceFiles/art/emoji.png
* SourceFiles/art/emoji_125x.png
* SourceFiles/art/emoji_150x.png
* SourceFiles/art/emoji_200x.png
* SourceFiles/art/emoji_250x.png
* SourceFiles/gui/emoji_config.cpp
and some inner config creates four sprites and text2emoji replace code
* SourceFiles/art/emoji.png
* SourceFiles/art/emoji_125x.png
* SourceFiles/art/emoji_150x.png
* SourceFiles/art/emoji_200x.png
* SourceFiles/gui/emoji_config.cpp
* ### MetaStyle
####MetaStyle
From two files and two sprites
* Resources/style_classes.txt
* Resources/style.txt
* SourceFiles/art/sprite.png
* SourceFiles/art/sprite_200x.png
from two files and two sprites
* Resources/style_classes.txt
* Resources/style.txt
* SourceFiles/art/sprite.png
* SourceFiles/art/sprite_200x.png
Creates two other sprites, four sprite grids and style constants code
* SourceFiles/art/sprite_125x.png
* SourceFiles/art/sprite_150x.png
* SourceFiles/art/grid.png
* SourceFiles/art/grid_125x.png
* SourceFiles/art/grid_150x.png
* SourceFiles/art/grid_200x.png
* GeneratedFiles/style_classes.h
* GeneratedFiles/style_auto.h
* GeneratedFiles/style_auto.cpp
creates two other sprites, four sprite grids and style constants code
* SourceFiles/art/sprite_125x.png
* SourceFiles/art/sprite_150x.png
* SourceFiles/art/grid.png
* SourceFiles/art/grid_125x.png
* SourceFiles/art/grid_150x.png
* SourceFiles/art/grid_200x.png
* GeneratedFiles/style_classes.h
* GeneratedFiles/style_auto.h
* GeneratedFiles/style_auto.cpp
* ### MetaLang
####MetaLang
Creates from languagepack file `Resources/lang.txt` language constants code and language file parse code:
* GeneratedFiles/lang.h
* GeneratedFiles/lang.cpp
from langpack file
* Resources/lang.txt
creates lang constants code and lang file parse code
* GeneratedFiles/lang.h
* GeneratedFiles/lang.cpp
[//]: # (LINKS)
[telegram]: https://telegram.org
[telegram_desktop]: https://desktop.telegram.org
[telegram_api]: https://core.telegram.org
[telegram_proto]: https://core.telegram.org/mtproto
[license]: LICENSE
[msvc]: MSVC.md
[xcode]: XCODE.md
[xcode_old]: XCODEold.md
[qtcreator]: qtcreator.md

View File

@@ -1,20 +1,21 @@
AppVersion=`./Version.sh | awk -F " " '{print $1}'`
AppVersionStr=`./Version.sh | awk -F " " '{print $2}'`
DevChannel=`./Version.sh | awk -F " " '{print $3}'`
AppVersionStrMajor=`./Version.sh | awk -F " " '{print $1}'`
AppVersion=`./Version.sh | awk -F " " '{print $2}'`
AppVersionStr=`./Version.sh | awk -F " " '{print $3}'`
DevChannel=`./Version.sh | awk -F " " '{print $4}'`
DevPostfix=''
if [ "$DevChannel" != "0" ]; then
DevPostfix='.dev'
fi
if [ ! -f "./../Linux/Release/deploy/$AppVersionStr$DevPostfix/tlinuxupd$AppVersion" ]; then
if [ ! -f "./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tlinuxupd$AppVersion" ]; then
echo "tlinuxupd$AppVersion not found!";
exit 1
fi
if [ ! -f "./../Linux/Release/deploy/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.tar.xz" ]; then
if [ ! -f "./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.tar.xz" ]; then
echo "tsetup.$AppVersionStr$DevPostfix.tar.xz not found!"
exit 1
fi
scp ./../Linux/Release/deploy/$AppVersionStr$DevPostfix/tlinuxupd$AppVersion tmaster:tdesktop/www/tlinux/
scp ./../Linux/Release/deploy/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.tar.xz tmaster:tdesktop/www/tlinux/
scp ./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tlinuxupd$AppVersion tmaster:tdesktop/www/tlinux/
scp ./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.tar.xz tmaster:tdesktop/www/tlinux/

View File

@@ -1,21 +1,22 @@
AppVersion=`./Version.sh | awk -F " " '{print $1}'`
AppVersionStr=`./Version.sh | awk -F " " '{print $2}'`
DevChannel=`./Version.sh | awk -F " " '{print $3}'`
AppVersionStrMajor=`./Version.sh | awk -F " " '{print $1}'`
AppVersion=`./Version.sh | awk -F " " '{print $2}'`
AppVersionStr=`./Version.sh | awk -F " " '{print $3}'`
DevChannel=`./Version.sh | awk -F " " '{print $4}'`
DevPostfix=''
if [ "$DevChannel" != "0" ]; then
DevPostfix='.dev'
fi
if [ ! -f "./../Linux/Release/deploy/$AppVersionStr$DevPostfix/tlinux32upd$AppVersion" ]; then
if [ ! -f "./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tlinux32upd$AppVersion" ]; then
echo "tlinux32upd$AppVersion not found!"
exit 1
fi
if [ ! -f "./../Linux/Release/deploy/$AppVersionStr$DevPostfix/tsetup32.$AppVersionStr$DevPostfix.tar.xz" ]; then
if [ ! -f "./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tsetup32.$AppVersionStr$DevPostfix.tar.xz" ]; then
echo "tsetup32.$AppVersionStr$DevPostfix.zip not found!"
exit 1
fi
scp ./../Linux/Release/deploy/$AppVersionStr$DevPostfix/tlinux32upd$AppVersion tmaster:tdesktop/www/tlinux32/
scp ./../Linux/Release/deploy/$AppVersionStr$DevPostfix/tsetup32.$AppVersionStr$DevPostfix.tar.xz tmaster:tdesktop/www/tlinux32/
scp ./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tlinux32upd$AppVersion tmaster:tdesktop/www/tlinux32/
scp ./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tsetup32.$AppVersionStr$DevPostfix.tar.xz tmaster:tdesktop/www/tlinux32/

View File

@@ -1,38 +1,65 @@
AppVersion=`./Version.sh | awk -F " " '{print $1}'`
AppVersionStr=`./Version.sh | awk -F " " '{print $2}'`
DevChannel=`./Version.sh | awk -F " " '{print $3}'`
AppVersionStrMajor=`./Version.sh | awk -F " " '{print $1}'`
AppVersion=`./Version.sh | awk -F " " '{print $2}'`
AppVersionStr=`./Version.sh | awk -F " " '{print $3}'`
DevChannel=`./Version.sh | awk -F " " '{print $4}'`
DevPostfix=''
if [ "$DevChannel" != "0" ]; then
DevPostfix='.dev'
fi
if [ ! -f "./../Mac/Release/deploy/$AppVersionStr$DevPostfix/tmacupd$AppVersion" ]; then
echo "tmacupd$AppVersion not found!"
exit 1
if [ ! -f "./../Mac/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tmacupd$AppVersion" ]; then
echo "tmacupd$AppVersion not found!"
exit 1
fi
if [ ! -f "./../Mac/Release/deploy/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.dmg" ]; then
echo "tsetup.$AppVersionStr$DevPostfix.dmg not found!"
exit 1
if [ ! -f "./../Mac/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.dmg" ]; then
echo "tsetup.$AppVersionStr$DevPostfix.dmg not found!"
exit 1
fi
if [ ! -f "./../../tother/tsetup/tupdate$AppVersion" ]; then
echo "tupdate$AppVersion not found!"
exit 1
if [ ! -f "./../../tother/tmac32/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tmac32upd$AppVersion" ]; then
echo "tmac32upd$AppVersion not found!"
exit 1
fi
if [ ! -f "./../../tother/tsetup/tportable.$AppVersionStr$DevPostfix.zip" ]; then
echo "tportable.$AppVersionStr$DevPostfix.zip not found!"
exit 1
if [ ! -f "./../../tother/tmac32/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tsetup32.$AppVersionStr$DevPostfix.dmg" ]; then
echo "tsetup32.$AppVersionStr$DevPostfix.dmg not found!"
exit 1
fi
if [ ! -f "./../../tother/tsetup/tsetup.$AppVersionStr$DevPostfix.exe" ]; then
echo "tsetup.$AppVersionStr$DevPostfix.exe not found!"
exit 1
if [ ! -f "./../../tother/tsetup/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tupdate$AppVersion" ]; then
echo "tupdate$AppVersion not found!"
exit 1
fi
scp ./../Mac/Release/deploy/$AppVersionStr$DevPostfix/tmacupd$AppVersion tmaster:tdesktop/www/tmac/
scp ./../Mac/Release/deploy/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.dmg tmaster:tdesktop/www/tmac/
scp ./../../tother/tsetup/tupdate$AppVersion tmaster:tdesktop/www/tsetup/
scp ./../../tother/tsetup/tportable.$AppVersionStr$DevPostfix.zip tmaster:tdesktop/www/tsetup/
scp ./../../tother/tsetup/tsetup.$AppVersionStr$DevPostfix.exe tmaster:tdesktop/www/tsetup/
if [ ! -f "./../../tother/tsetup/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tportable.$AppVersionStr$DevPostfix.zip" ]; then
echo "tportable.$AppVersionStr$DevPostfix.zip not found!"
exit 1
fi
if [ ! -f "./../../tother/tsetup/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.exe" ]; then
echo "tsetup.$AppVersionStr$DevPostfix.exe not found!"
exit 1
fi
if [ ! -d "./../../../Dropbox/Telegram/deploy/$AppVersionStrMajor" ]; then
mkdir "./../../../Dropbox/Telegram/deploy/$AppVersionStrMajor"
fi
scp ./../Mac/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tmacupd$AppVersion tmaster:tdesktop/www/tmac/
scp ./../Mac/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.dmg tmaster:tdesktop/www/tmac/
scp ./../../tother/tmac32/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tmac32upd$AppVersion tmaster:tdesktop/www/tmac32/
scp ./../../tother/tmac32/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tsetup32.$AppVersionStr$DevPostfix.dmg tmaster:tdesktop/www/tmac32/
scp ./../../tother/tsetup/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tupdate$AppVersion tmaster:tdesktop/www/tsetup/
scp ./../../tother/tsetup/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tportable.$AppVersionStr$DevPostfix.zip tmaster:tdesktop/www/tsetup/
scp ./../../tother/tsetup/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.exe tmaster:tdesktop/www/tsetup/
mv -v ./../../tother/tsetup/$AppVersionStrMajor/$AppVersionStr$DevPostfix ./../../../Dropbox/Telegram/deploy/$AppVersionStrMajor/
cp -v ./../Mac/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tmacupd$AppVersion ./../../../Dropbox/Telegram/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/
cp -v ./../Mac/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.dmg ./../../../Dropbox/Telegram/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/
cp -rv ./../Mac/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/Telegram.app.dSYM ./../../../Dropbox/Telegram/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/
cp -v ./../../tother/tmac32/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tmac32upd$AppVersion ./../../../Dropbox/Telegram/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/
cp -v ./../../tother/tmac32/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tsetup32.$AppVersionStr$DevPostfix.dmg ./../../../Dropbox/Telegram/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/
cp -rv ./../../tother/tmac32/$AppVersionStrMajor/$AppVersionStr$DevPostfix/Telegram.app.dSYM ./../../../Dropbox/Telegram/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/Telegram32.app.dSYM

View File

@@ -1,26 +1,39 @@
AppVersion=`./Version.sh | awk -F " " '{print $1}'`
AppVersionStr=`./Version.sh | awk -F " " '{print $2}'`
DevChannel=`./Version.sh | awk -F " " '{print $3}'`
AppVersionStrMajor=`./Version.sh | awk -F " " '{print $1}'`
AppVersion=`./Version.sh | awk -F " " '{print $2}'`
AppVersionStr=`./Version.sh | awk -F " " '{print $3}'`
DevChannel=`./Version.sh | awk -F " " '{print $4}'`
DevPostfix=''
if [ "$DevChannel" != "0" ]; then
DevPostfix='.dev'
fi
if [ ! -f "./../Win32/Deploy/deploy/$AppVersionStr$DevPostfix/tupdate$AppVersion" ]; then
echo "tupdate$AppVersion not found!"
exit 1
if [ ! -f "./../Win32/Deploy/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tupdate$AppVersion" ]; then
echo "tupdate$AppVersion not found!"
exit 1
fi
if [ ! -f "./../Win32/Deploy/deploy/$AppVersionStr$DevPostfix/tportable.$AppVersionStr$DevPostfix.zip" ]; then
echo "tportable.$AppVersionStr$DevPostfix.zip not found!"
exit 1
if [ ! -f "./../Win32/Deploy/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tportable.$AppVersionStr$DevPostfix.zip" ]; then
echo "tportable.$AppVersionStr$DevPostfix.zip not found!"
exit 1
fi
if [ ! -f "./../Win32/Deploy/deploy/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.exe" ]; then
echo "tsetup.$AppVersionStr$DevPostfix.exe not found!"
exit 1
if [ ! -f "./../Win32/Deploy/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.exe" ]; then
echo "tsetup.$AppVersionStr$DevPostfix.exe not found!"
exit 1
fi
cp -v ./../Win32/Deploy/deploy/$AppVersionStr$DevPostfix/tupdate$AppVersion /z/TBuild/tother/tsetup/
cp -v ./../Win32/Deploy/deploy/$AppVersionStr$DevPostfix/tportable.$AppVersionStr$DevPostfix.zip /z/TBuild/tother/tsetup/
cp -v ./../Win32/Deploy/deploy/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.exe /z/TBuild/tother/tsetup/
if [ ! -d "/z/TBuild/tother/tsetup/$AppVersionStrMajor" ]; then
mkdir "/z/TBuild/tother/tsetup/$AppVersionStrMajor"
fi
if [ ! -d "/z/TBuild/tother/tsetup/$AppVersionStrMajor/$AppVersionStr$DevPostfix" ]; then
mkdir "/z/TBuild/tother/tsetup/$AppVersionStrMajor/$AppVersionStr$DevPostfix"
fi
cp -v ./../Win32/Deploy/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tupdate$AppVersion /z/TBuild/tother/tsetup/$AppVersionStrMajor/$AppVersionStr$DevPostfix/
cp -v ./../Win32/Deploy/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tportable.$AppVersionStr$DevPostfix.zip /z/TBuild/tother/tsetup/$AppVersionStrMajor/$AppVersionStr$DevPostfix/
cp -v ./../Win32/Deploy/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.exe /z/TBuild/tother/tsetup/$AppVersionStrMajor/$AppVersionStr$DevPostfix/
cp -v ./../Win32/Deploy/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/Telegram.pdb /z/TBuild/tother/tsetup/$AppVersionStrMajor/$AppVersionStr$DevPostfix/
cp -v ./../Win32/Deploy/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/Updater.exe /z/TBuild/tother/tsetup/$AppVersionStrMajor/$AppVersionStr$DevPostfix/
cp -v ./../Win32/Deploy/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/Updater.pdb /z/TBuild/tother/tsetup/$AppVersionStrMajor/$AppVersionStr$DevPostfix/

View File

@@ -23,7 +23,9 @@ Replace '\-lfontconfig' '\/usr\/lib\/x86_64\-linux\-gnu\/libfontconfig\.a \/usr\
Replace '\-lfreetype' '\/usr\/lib\/x86_64\-linux\-gnu\/libfreetype\.a'
Replace '\-lpng' '\/usr\/lib\/x86_64\-linux\-gnu\/libpng\.a'
Replace '\-lXext' '\/usr\/lib\/x86_64\-linux\-gnu\/libXext\.a'
Replace '\-lopusfile' '\/usr\/local\/lib\/libopusfile\.a'
Replace '\-lopus' '\/usr\/local\/lib\/libopus\.a'
Replace '\-lopenal' '\/usr\/local\/lib\/libopenal\.a'
Replace '\-logg' '\/usr\/local\/lib\/libogg\.a'
Replace '\-lavformat' '\/usr\/local\/lib\/libavformat\.a'
Replace '\-lavcodec' '\/usr\/local\/lib\/libavcodec\.a'
Replace '\-lswresample' '\/usr\/local\/lib\/libswresample\.a'
Replace '\-lavutil' '\/usr\/local\/lib\/libavutil\.a'

View File

@@ -23,7 +23,9 @@ Replace '\-lfontconfig' '\/usr\/lib\/i386\-linux\-gnu\/libfontconfig\.a \/usr\/l
Replace '\-lfreetype' '\/usr\/lib\/i386\-linux\-gnu\/libfreetype\.a'
Replace '\-lpng' '\/usr\/lib\/i386\-linux\-gnu\/libpng\.a'
Replace '\-lXext' '\/usr\/lib\/i386\-linux\-gnu\/libXext\.a'
Replace '\-lopusfile' '\/usr\/local\/lib\/libopusfile\.a'
Replace '\-lopus' '\/usr\/local\/lib\/libopus\.a'
Replace '\-lopenal' '\/usr\/local\/lib\/libopenal\.a'
Replace '\-logg' '\/usr\/local\/lib\/libogg\.a'
Replace '\-lavformat' '\/usr\/local\/lib\/libavformat\.a'
Replace '\-lavcodec' '\/usr\/local\/lib\/libavcodec\.a'
Replace '\-lswresample' '\/usr\/local\/lib\/libswresample\.a'
Replace '\-lavutil' '\/usr\/local\/lib\/libavutil\.a'

View File

@@ -27,7 +27,7 @@ HEADERS += \
./SourceFiles/_other/memain.h \
./SourceFiles/_other/genemoji.h \
INCLUDEPATH += ./../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui\
./../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore\
INCLUDEPATH += ./../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui\
./../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore\
./../../Libraries/QtStatic/qtbase/include\

View File

@@ -105,7 +105,7 @@
<SubSystem>Console</SubSystem>
<OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>$(QTDIR)\lib;$(QTDIR)\plugins;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;imm32.lib;winmm.lib;qtmaind.lib;glu32.lib;opengl32.lib;Qt5Cored.lib;Qt5Guid.lib;qtharfbuzzngd.lib;Qt5PlatformSupportd.lib;platforms\qwindowsd.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;imm32.lib;winmm.lib;qtmaind.lib;glu32.lib;opengl32.lib;Qt5Cored.lib;Qt5Guid.lib;qtharfbuzzngd.lib;qtpcred.lib;qtfreetyped.lib;Qt5PlatformSupportd.lib;platforms\qwindowsd.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
<ProfileGuidedDatabase>$(IntDir)$(TargetName).pgd</ProfileGuidedDatabase>
@@ -123,7 +123,7 @@
<SubSystem>Console</SubSystem>
<OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>$(QTDIR)\lib;$(QTDIR)\plugins;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;qtmain.lib;glu32.lib;opengl32.lib;imm32.lib;winmm.lib;Qt5Core.lib;Qt5Gui.lib;qtharfbuzzng.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;qtmain.lib;glu32.lib;opengl32.lib;imm32.lib;winmm.lib;Qt5Core.lib;Qt5Gui.lib;qtharfbuzzng.lib;qtpcre.lib;qtfreetype.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>false</GenerateDebugInformation>
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
<ProfileGuidedDatabase>$(IntDir)$(TargetName).pgd</ProfileGuidedDatabase>
@@ -142,7 +142,7 @@
<SubSystem>Console</SubSystem>
<OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>$(QTDIR)\lib;$(QTDIR)\plugins;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;qtmain.lib;glu32.lib;opengl32.lib;imm32.lib;winmm.lib;Qt5Core.lib;Qt5Gui.lib;qtharfbuzzng.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;qtmain.lib;glu32.lib;opengl32.lib;imm32.lib;winmm.lib;Qt5Core.lib;Qt5Gui.lib;qtharfbuzzng.lib;qtpcre.lib;qtfreetype.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>false</GenerateDebugInformation>
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
<ProfileGuidedDatabase>$(IntDir)$(TargetName).pgd</ProfileGuidedDatabase>

View File

@@ -21,6 +21,7 @@
/* End PBXAggregateTarget section */
/* Begin PBXBuildFile section */
07D7954A1B5544B200DE9598 /* qtpcre in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 07D795491B5544B200DE9598 /* qtpcre */; };
1A681B886F50EE30FBE62B4B /* Qt5PrintSupport in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = DBF506D10449BFABD45B82DA /* Qt5PrintSupport */; };
1BB705CDB741E2B7450201A5 /* Cocoa.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */; };
328FD74542F6E2C873EE4D4B /* ApplicationServices.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = DFD7912080BC557230093752 /* ApplicationServices.framework */; };
@@ -62,160 +63,161 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
04391BE7A8B9D811E255100A /* Qt5Gui */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Gui; path = "/usr/local/Qt-5.4.0/lib/libQt5Gui$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
060A694B42A4555240009936 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtga.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtga.pri"; sourceTree = "<absolute>"; };
075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql_private.pri"; sourceTree = "<absolute>"; };
0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.4.0/mkspecs/common/unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/unix.conf"; sourceTree = "<absolute>"; };
111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdds.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdds.pri"; sourceTree = "<absolute>"; };
16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick.pri"; sourceTree = "<absolute>"; };
04391BE7A8B9D811E255100A /* Qt5Gui */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Gui; path = "/usr/local/Qt-5.5.0/lib/libQt5Gui$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
060A694B42A4555240009936 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtga.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtga.pri"; sourceTree = "<absolute>"; };
075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql_private.pri"; sourceTree = "<absolute>"; };
07D795491B5544B200DE9598 /* qtpcre */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtpcre; path = "usr/local/Qt-5.5.0/lib/libqtpcre$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<group>"; };
0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.5.0/mkspecs/common/unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/unix.conf"; sourceTree = "<absolute>"; };
111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdds.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdds.pri"; sourceTree = "<absolute>"; };
16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick.pri"; sourceTree = "<absolute>"; };
1F47C130E1F45B4A5A91DB5E /* genemoji.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = genemoji.cpp; path = SourceFiles/_other/genemoji.cpp; sourceTree = "<absolute>"; };
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfcamera.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfcamera.pri"; sourceTree = "<absolute>"; };
23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui.pri"; sourceTree = "<absolute>"; };
2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qgenericbearer.pri"; sourceTree = "<absolute>"; };
247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri"; sourceTree = "<absolute>"; };
24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri"; sourceTree = "<absolute>"; };
28BD0D10214709D95B161E24 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets.pri"; sourceTree = "<absolute>"; };
293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network.pri"; sourceTree = "<absolute>"; };
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth_private.pri"; sourceTree = "<absolute>"; };
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns.pri"; sourceTree = "<absolute>"; };
311004331A04F3D69C98643C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport_private.pri"; sourceTree = "<absolute>"; };
31120EDB269DFF13E1D49847 /* qicns */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qicns; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqicns$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras_private.pri"; sourceTree = "<absolute>"; };
346287C9E754E7C458153F03 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwbmp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwbmp.pri"; sourceTree = "<absolute>"; };
360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio.pri"; sourceTree = "<absolute>"; };
3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri"; sourceTree = "<absolute>"; };
382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network_private.pri"; sourceTree = "<absolute>"; };
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfcamera.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfcamera.pri"; sourceTree = "<absolute>"; };
23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui.pri"; sourceTree = "<absolute>"; };
2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qgenericbearer.pri"; sourceTree = "<absolute>"; };
247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri"; sourceTree = "<absolute>"; };
24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri"; sourceTree = "<absolute>"; };
28BD0D10214709D95B161E24 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets.pri"; sourceTree = "<absolute>"; };
293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network.pri"; sourceTree = "<absolute>"; };
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth_private.pri"; sourceTree = "<absolute>"; };
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns.pri"; sourceTree = "<absolute>"; };
311004331A04F3D69C98643C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport_private.pri"; sourceTree = "<absolute>"; };
31120EDB269DFF13E1D49847 /* qicns */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qicns; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqicns$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras_private.pri"; sourceTree = "<absolute>"; };
346287C9E754E7C458153F03 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwbmp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwbmp.pri"; sourceTree = "<absolute>"; };
360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio.pri"; sourceTree = "<absolute>"; };
3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri"; sourceTree = "<absolute>"; };
382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network_private.pri"; sourceTree = "<absolute>"; };
3AC2626B26B65AA88F06BFB5 /* memain.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = memain.cpp; path = SourceFiles/_other/memain.cpp; sourceTree = "<absolute>"; };
3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri"; sourceTree = "<absolute>"; };
45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.4.0/mkspecs/common/gcc-base.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/gcc-base.conf"; sourceTree = "<absolute>"; };
45DB132B756499D4DF38430E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qjp2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qjp2.pri"; sourceTree = "<absolute>"; };
4689C06178B60B84E7F3A3B7 /* Qt5Widgets */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Widgets; path = "/usr/local/Qt-5.4.0/lib/libQt5Widgets$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
4C6C71914B1926119120DACD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio_private.pri"; sourceTree = "<absolute>"; };
3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri"; sourceTree = "<absolute>"; };
45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.5.0/mkspecs/common/gcc-base.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/gcc-base.conf"; sourceTree = "<absolute>"; };
45DB132B756499D4DF38430E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qjp2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qjp2.pri"; sourceTree = "<absolute>"; };
4689C06178B60B84E7F3A3B7 /* Qt5Widgets */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Widgets; path = "/usr/local/Qt-5.5.0/lib/libQt5Widgets$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
4C6C71914B1926119120DACD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio_private.pri"; sourceTree = "<absolute>"; };
4D765E1B1EA6C757220C63E7 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmldevtools_private.pri"; sourceTree = "<absolute>"; };
5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions_private.pri"; sourceTree = "<absolute>"; };
4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmldevtools_private.pri"; sourceTree = "<absolute>"; };
5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions_private.pri"; sourceTree = "<absolute>"; };
58308B26DE991A86E8589883 /* genemoji.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = genemoji.h; path = SourceFiles/_other/genemoji.h; sourceTree = "<absolute>"; };
5A80A1907B6CFFB524C1E57D /* Qt5Core */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Core; path = "/usr/local/Qt-5.4.0/lib/libQt5Core$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri"; sourceTree = "<absolute>"; };
5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl.pri"; sourceTree = "<absolute>"; };
5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core_private.pri"; sourceTree = "<absolute>"; };
6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml_private.pri"; sourceTree = "<absolute>"; };
63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.4.0/mkspecs/macx-clang/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/macx-clang/qmake.conf"; sourceTree = "<absolute>"; };
669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.4.0/mkspecs/common/shell-unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/shell-unix.conf"; sourceTree = "<absolute>"; };
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designercomponents_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designercomponents_private.pri"; sourceTree = "<absolute>"; };
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport.pri"; sourceTree = "<absolute>"; };
6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.4.0/mkspecs/qdevice.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/qdevice.pri"; sourceTree = "<absolute>"; };
74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri"; sourceTree = "<absolute>"; };
77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent.pri"; sourceTree = "<absolute>"; };
7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative.pri"; sourceTree = "<absolute>"; };
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer_private.pri"; sourceTree = "<absolute>"; };
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent_private.pri"; sourceTree = "<absolute>"; };
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql.pri"; sourceTree = "<absolute>"; };
7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core.pri"; sourceTree = "<absolute>"; };
817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.4.0/mkspecs/common/macx.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/macx.conf"; sourceTree = "<absolute>"; };
82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickparticles_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickparticles_private.pri"; sourceTree = "<absolute>"; };
83D37373949868693FB7816D /* qmng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qmng; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqmng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
85061B1DA49D125991117950 /* /usr/local/Qt-5.4.0/mkspecs/macx-xcode/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/macx-xcode/qmake.conf"; sourceTree = "<absolute>"; };
85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors.pri"; sourceTree = "<absolute>"; };
87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri"; sourceTree = "<absolute>"; };
87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets_private.pri"; sourceTree = "<absolute>"; };
8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib_private.pri"; sourceTree = "<absolute>"; };
892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri"; sourceTree = "<absolute>"; };
89863CCAF1D29037AE95755D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative_private.pri"; sourceTree = "<absolute>"; };
8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc.pri"; sourceTree = "<absolute>"; };
8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri"; sourceTree = "<absolute>"; };
8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick_private.pri"; sourceTree = "<absolute>"; };
8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.4.0/mkspecs/common/clang.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/clang.conf"; sourceTree = "<absolute>"; };
8CF51323544B886B8F4A2232 /* qwbmp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwbmp; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqwbmp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
5A80A1907B6CFFB524C1E57D /* Qt5Core */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Core; path = "/usr/local/Qt-5.5.0/lib/libQt5Core$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri"; sourceTree = "<absolute>"; };
5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl.pri"; sourceTree = "<absolute>"; };
5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core_private.pri"; sourceTree = "<absolute>"; };
6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml_private.pri"; sourceTree = "<absolute>"; };
63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.5.0/mkspecs/macx-clang/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/macx-clang/qmake.conf"; sourceTree = "<absolute>"; };
669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.5.0/mkspecs/common/shell-unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/shell-unix.conf"; sourceTree = "<absolute>"; };
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designercomponents_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designercomponents_private.pri"; sourceTree = "<absolute>"; };
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport.pri"; sourceTree = "<absolute>"; };
6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.5.0/mkspecs/qdevice.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/qdevice.pri"; sourceTree = "<absolute>"; };
74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri"; sourceTree = "<absolute>"; };
77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent.pri"; sourceTree = "<absolute>"; };
7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative.pri"; sourceTree = "<absolute>"; };
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer_private.pri"; sourceTree = "<absolute>"; };
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent_private.pri"; sourceTree = "<absolute>"; };
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql.pri"; sourceTree = "<absolute>"; };
7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core.pri"; sourceTree = "<absolute>"; };
817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.5.0/mkspecs/common/macx.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/macx.conf"; sourceTree = "<absolute>"; };
82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickparticles_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickparticles_private.pri"; sourceTree = "<absolute>"; };
83D37373949868693FB7816D /* qmng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qmng; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqmng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
85061B1DA49D125991117950 /* /usr/local/Qt-5.5.0/mkspecs/macx-xcode/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/macx-xcode/qmake.conf"; sourceTree = "<absolute>"; };
85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors.pri"; sourceTree = "<absolute>"; };
87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri"; sourceTree = "<absolute>"; };
87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets_private.pri"; sourceTree = "<absolute>"; };
8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib_private.pri"; sourceTree = "<absolute>"; };
892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri"; sourceTree = "<absolute>"; };
89863CCAF1D29037AE95755D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative_private.pri"; sourceTree = "<absolute>"; };
8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc.pri"; sourceTree = "<absolute>"; };
8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri"; sourceTree = "<absolute>"; };
8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick_private.pri"; sourceTree = "<absolute>"; };
8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.5.0/mkspecs/common/clang.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/clang.conf"; sourceTree = "<absolute>"; };
8CF51323544B886B8F4A2232 /* qwbmp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwbmp; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqwbmp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
8D9815BDB5BD9F90D2BC05C5 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = "<absolute>"; };
8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg_private.pri"; sourceTree = "<absolute>"; };
8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets_private.pri"; sourceTree = "<absolute>"; };
8F500B5166907B6D9A7C3E3D /* qico */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qico; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqico$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_platformsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_platformsupport_private.pri"; sourceTree = "<absolute>"; };
8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets.pri"; sourceTree = "<absolute>"; };
8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg_private.pri"; sourceTree = "<absolute>"; };
8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets_private.pri"; sourceTree = "<absolute>"; };
8F500B5166907B6D9A7C3E3D /* qico */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qico; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqico$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_platformsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_platformsupport_private.pri"; sourceTree = "<absolute>"; };
8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets.pri"; sourceTree = "<absolute>"; };
93E4BE1A02365B73BAF00B73 /* moc_genemoji.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_genemoji.cpp; path = GeneratedFiles/Debug/moc_genemoji.cpp; sourceTree = "<absolute>"; };
946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmng.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmng.pri"; sourceTree = "<absolute>"; };
946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmng.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmng.pri"; sourceTree = "<absolute>"; };
9742F24EE18EA44D52824F1E /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qqt7engine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qqt7engine.pri"; sourceTree = "<absolute>"; };
9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qqt7engine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qqt7engine.pri"; sourceTree = "<absolute>"; };
9DFF62A901D70814B8A323D4 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets.pri"; sourceTree = "<absolute>"; };
A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets.pri"; sourceTree = "<absolute>"; };
A1A67BEAA744704B29168D39 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri"; sourceTree = "<absolute>"; };
A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools_private.pri"; sourceTree = "<absolute>"; };
A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras.pri"; sourceTree = "<absolute>"; };
A9E30FA27827990C5F182223 /* /usr/local/Qt-5.4.0/mkspecs/common/gcc-base-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/gcc-base-mac.conf"; sourceTree = "<absolute>"; };
AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml.pri"; sourceTree = "<absolute>"; };
AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri"; sourceTree = "<absolute>"; };
A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri"; sourceTree = "<absolute>"; };
A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools_private.pri"; sourceTree = "<absolute>"; };
A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras.pri"; sourceTree = "<absolute>"; };
A9E30FA27827990C5F182223 /* /usr/local/Qt-5.5.0/mkspecs/common/gcc-base-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/gcc-base-mac.conf"; sourceTree = "<absolute>"; };
AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml.pri"; sourceTree = "<absolute>"; };
AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri"; sourceTree = "<absolute>"; };
AB745978DF0F41D1801ABDA6 /* .qmake.stash */ = {isa = PBXFileReference; lastKnownFileType = file; path = .qmake.stash; sourceTree = "<absolute>"; };
ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest_private.pri"; sourceTree = "<absolute>"; };
ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth.pri"; sourceTree = "<absolute>"; };
ADC6308023253CEA51F86E21 /* qwebp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwebp; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqwebp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg.pri"; sourceTree = "<absolute>"; };
ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest_private.pri"; sourceTree = "<absolute>"; };
ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth.pri"; sourceTree = "<absolute>"; };
ADC6308023253CEA51F86E21 /* qwebp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwebp; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqwebp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg.pri"; sourceTree = "<absolute>"; };
AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcocoa.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcocoa.pri"; sourceTree = "<absolute>"; };
B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsqlite.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsqlite.pri"; sourceTree = "<absolute>"; };
B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets_private.pri"; sourceTree = "<absolute>"; };
B26239063A068F800A2C95F4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwebp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwebp.pri"; sourceTree = "<absolute>"; };
B382B645B34234E451AE5D94 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml.pri"; sourceTree = "<absolute>"; };
B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools_private.pri"; sourceTree = "<absolute>"; };
B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc_private.pri"; sourceTree = "<absolute>"; };
B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qminimal.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qminimal.pri"; sourceTree = "<absolute>"; };
B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri"; sourceTree = "<absolute>"; };
B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri"; sourceTree = "<absolute>"; };
BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtiff.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtiff.pri"; sourceTree = "<absolute>"; };
BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bootstrap_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bootstrap_private.pri"; sourceTree = "<absolute>"; };
BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors_private.pri"; sourceTree = "<absolute>"; };
BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport.pri"; sourceTree = "<absolute>"; };
AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcocoa.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcocoa.pri"; sourceTree = "<absolute>"; };
B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsqlite.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsqlite.pri"; sourceTree = "<absolute>"; };
B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets_private.pri"; sourceTree = "<absolute>"; };
B26239063A068F800A2C95F4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwebp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwebp.pri"; sourceTree = "<absolute>"; };
B382B645B34234E451AE5D94 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml.pri"; sourceTree = "<absolute>"; };
B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools_private.pri"; sourceTree = "<absolute>"; };
B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc_private.pri"; sourceTree = "<absolute>"; };
B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qminimal.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qminimal.pri"; sourceTree = "<absolute>"; };
B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri"; sourceTree = "<absolute>"; };
B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri"; sourceTree = "<absolute>"; };
BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtiff.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtiff.pri"; sourceTree = "<absolute>"; };
BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bootstrap_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bootstrap_private.pri"; sourceTree = "<absolute>"; };
BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors_private.pri"; sourceTree = "<absolute>"; };
BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport.pri"; sourceTree = "<absolute>"; };
C3345709A0BD182590087379 /* MetaEmoji.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MetaEmoji.app; sourceTree = BUILT_PRODUCTS_DIR; };
C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qico.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qico.pri"; sourceTree = "<absolute>"; };
C505A18319B9B63C63877858 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script_private.pri"; sourceTree = "<absolute>"; };
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri"; sourceTree = "<absolute>"; };
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qoffscreen.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qoffscreen.pri"; sourceTree = "<absolute>"; };
CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools.pri"; sourceTree = "<absolute>"; };
CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_clucene_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_clucene_private.pri"; sourceTree = "<absolute>"; };
CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script.pri"; sourceTree = "<absolute>"; };
CFFBE05DB004895080314289 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvgicon.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvgicon.pri"; sourceTree = "<absolute>"; };
D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport_private.pri"; sourceTree = "<absolute>"; };
D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri"; sourceTree = "<absolute>"; };
D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia.pri"; sourceTree = "<absolute>"; };
D3D1BE0BEA3AEE0551AD39AC /* qdds */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qdds; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqdds$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qico.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qico.pri"; sourceTree = "<absolute>"; };
C505A18319B9B63C63877858 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script_private.pri"; sourceTree = "<absolute>"; };
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri"; sourceTree = "<absolute>"; };
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qoffscreen.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qoffscreen.pri"; sourceTree = "<absolute>"; };
CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools.pri"; sourceTree = "<absolute>"; };
CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_clucene_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_clucene_private.pri"; sourceTree = "<absolute>"; };
CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script.pri"; sourceTree = "<absolute>"; };
CFFBE05DB004895080314289 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvgicon.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvgicon.pri"; sourceTree = "<absolute>"; };
D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport_private.pri"; sourceTree = "<absolute>"; };
D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri"; sourceTree = "<absolute>"; };
D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia.pri"; sourceTree = "<absolute>"; };
D3D1BE0BEA3AEE0551AD39AC /* qdds */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qdds; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqdds$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D4B32C2222F82AC56BADEB21 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.4.0/mkspecs/qconfig.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/qconfig.pri"; sourceTree = "<absolute>"; };
D5141F795670589C8CC41CBC /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri"; sourceTree = "<absolute>"; };
D53D8E6A188E05078A114294 /* qcocoa */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qcocoa; path = "/usr/local/Qt-5.4.0/plugins/platforms/libqcocoa$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D6193B79CECC9DD0142D1200 /* qtharfbuzzng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtharfbuzzng; path = "/usr/local/Qt-5.4.0/lib/libqtharfbuzzng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help_private.pri"; sourceTree = "<absolute>"; };
D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui_private.pri"; sourceTree = "<absolute>"; };
D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets.pri"; sourceTree = "<absolute>"; };
DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib.pri"; sourceTree = "<absolute>"; };
DBF506D10449BFABD45B82DA /* Qt5PrintSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PrintSupport; path = "/usr/local/Qt-5.4.0/lib/libQt5PrintSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
DCEFD9167C239650120B0145 /* qtga */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtga; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqtga$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
DF8188E30892A4654B984221 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest.pri"; sourceTree = "<absolute>"; };
D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.5.0/mkspecs/qconfig.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/qconfig.pri"; sourceTree = "<absolute>"; };
D5141F795670589C8CC41CBC /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri"; sourceTree = "<absolute>"; };
D53D8E6A188E05078A114294 /* qcocoa */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qcocoa; path = "/usr/local/Qt-5.5.0/plugins/platforms/libqcocoa$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D6193B79CECC9DD0142D1200 /* qtharfbuzzng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtharfbuzzng; path = "/usr/local/Qt-5.5.0/lib/libqtharfbuzzng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help_private.pri"; sourceTree = "<absolute>"; };
D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui_private.pri"; sourceTree = "<absolute>"; };
D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets.pri"; sourceTree = "<absolute>"; };
DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib.pri"; sourceTree = "<absolute>"; };
DBF506D10449BFABD45B82DA /* Qt5PrintSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PrintSupport; path = "/usr/local/Qt-5.5.0/lib/libQt5PrintSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
DCEFD9167C239650120B0145 /* qtga */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtga; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqtga$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
DF8188E30892A4654B984221 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest.pri"; sourceTree = "<absolute>"; };
DFD7912080BC557230093752 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl_private.pri"; sourceTree = "<absolute>"; };
E37365B4489B4918BEBB707D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml_private.pri"; sourceTree = "<absolute>"; };
E432DA897A5F027987342E8F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions.pri"; sourceTree = "<absolute>"; };
E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools.pri"; sourceTree = "<absolute>"; };
E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning_private.pri"; sourceTree = "<absolute>"; };
E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PlatformSupport; path = "/usr/local/Qt-5.4.0/lib/libQt5PlatformSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia_private.pri"; sourceTree = "<absolute>"; };
E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl_private.pri"; sourceTree = "<absolute>"; };
E37365B4489B4918BEBB707D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml_private.pri"; sourceTree = "<absolute>"; };
E432DA897A5F027987342E8F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions.pri"; sourceTree = "<absolute>"; };
E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools.pri"; sourceTree = "<absolute>"; };
E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning_private.pri"; sourceTree = "<absolute>"; };
E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PlatformSupport; path = "/usr/local/Qt-5.5.0/lib/libQt5PlatformSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia_private.pri"; sourceTree = "<absolute>"; };
E981470FA003A8DCE3C52E59 /* memain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = memain.h; path = SourceFiles/_other/memain.h; sourceTree = "<absolute>"; };
EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri"; sourceTree = "<absolute>"; };
EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qicns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qicns.pri"; sourceTree = "<absolute>"; };
EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri"; sourceTree = "<absolute>"; };
EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.4.0/mkspecs/common/mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/mac.conf"; sourceTree = "<absolute>"; };
F0681BC551FC8A2B132FC646 /* qjp2 */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qjp2; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqjp2$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
F0A58515945747E36783CC21 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri"; sourceTree = "<absolute>"; };
EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri"; sourceTree = "<absolute>"; };
EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qicns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qicns.pri"; sourceTree = "<absolute>"; };
EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri"; sourceTree = "<absolute>"; };
EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.5.0/mkspecs/common/mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/mac.conf"; sourceTree = "<absolute>"; };
F0681BC551FC8A2B132FC646 /* qjp2 */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qjp2; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqjp2$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
F0A58515945747E36783CC21 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri"; sourceTree = "<absolute>"; };
F13124A218B58585B027D96A /* MetaEmoji.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = MetaEmoji.pro; sourceTree = "<absolute>"; };
F2453BA07315EB9F34F1CD57 /* qtiff */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtiff; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqtiff$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer.pri"; sourceTree = "<absolute>"; };
F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.4.0/mkspecs/common/clang-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/clang-mac.conf"; sourceTree = "<absolute>"; };
F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri"; sourceTree = "<absolute>"; };
F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning.pri"; sourceTree = "<absolute>"; };
F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvg.pri"; sourceTree = "<absolute>"; };
F9BEAA743A908603687DA204 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri"; sourceTree = "<absolute>"; };
F2453BA07315EB9F34F1CD57 /* qtiff */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtiff; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqtiff$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer.pri"; sourceTree = "<absolute>"; };
F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.5.0/mkspecs/common/clang-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/clang-mac.conf"; sourceTree = "<absolute>"; };
F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri"; sourceTree = "<absolute>"; };
F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning.pri"; sourceTree = "<absolute>"; };
F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvg.pri"; sourceTree = "<absolute>"; };
F9BEAA743A908603687DA204 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri"; sourceTree = "<absolute>"; };
FCC237CA5AD60B9BA4447615 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help.pri"; sourceTree = "<absolute>"; };
FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help.pri"; sourceTree = "<absolute>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -247,6 +249,7 @@
F4D3747C3A03B25EDC9057BB /* qwebp in Link Binary With Libraries */,
9F33AC0693BC81B27D8F518D /* Qt5Gui in Link Binary With Libraries */,
8D33FE22B9BBADC7FA46C15B /* qtharfbuzzng in Link Binary With Libraries */,
07D7954A1B5544B200DE9598 /* qtpcre in Link Binary With Libraries */,
B9ADD90C014EA3FBE351DF03 /* Qt5Core in Link Binary With Libraries */,
);
name = "Link Binary With Libraries";
@@ -294,127 +297,127 @@
isa = PBXGroup;
children = (
F13124A218B58585B027D96A /* MetaEmoji.pro */,
6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.4.0/mkspecs/qdevice.pri */,
669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.4.0/mkspecs/common/shell-unix.conf */,
0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.4.0/mkspecs/common/unix.conf */,
EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.4.0/mkspecs/common/mac.conf */,
817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.4.0/mkspecs/common/macx.conf */,
45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.4.0/mkspecs/common/gcc-base.conf */,
A9E30FA27827990C5F182223 /* /usr/local/Qt-5.4.0/mkspecs/common/gcc-base-mac.conf */,
8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.4.0/mkspecs/common/clang.conf */,
F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.4.0/mkspecs/common/clang-mac.conf */,
D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.4.0/mkspecs/qconfig.pri */,
ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth.pri */,
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth_private.pri */,
BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bootstrap_private.pri */,
CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_clucene_private.pri */,
77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent.pri */,
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent_private.pri */,
7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core.pri */,
5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core_private.pri */,
7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative.pri */,
89863CCAF1D29037AE95755D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative_private.pri */,
F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer.pri */,
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer_private.pri */,
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designercomponents_private.pri */,
360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio.pri */,
4C6C71914B1926119120DACD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio_private.pri */,
23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui.pri */,
D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui_private.pri */,
FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help.pri */,
D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help_private.pri */,
A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras.pri */,
33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras_private.pri */,
D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia.pri */,
E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia_private.pri */,
28BD0D10214709D95B161E24 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets.pri */,
D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */,
293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network.pri */,
382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network_private.pri */,
8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc.pri */,
B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc_private.pri */,
5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl.pri */,
E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl_private.pri */,
E432DA897A5F027987342E8F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions.pri */,
5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions_private.pri */,
8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_platformsupport_private.pri */,
F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning.pri */,
E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning_private.pri */,
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport.pri */,
D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport_private.pri */,
B382B645B34234E451AE5D94 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml.pri */,
6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml_private.pri */,
4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */,
DF8188E30892A4654B984221 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest.pri */,
ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest_private.pri */,
5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */,
16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick.pri */,
8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick_private.pri */,
82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickparticles_private.pri */,
D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets.pri */,
B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */,
CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script.pri */,
C505A18319B9B63C63877858 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script_private.pri */,
CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools.pri */,
A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools_private.pri */,
85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors.pri */,
BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors_private.pri */,
BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport.pri */,
311004331A04F3D69C98643C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport_private.pri */,
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql.pri */,
075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql_private.pri */,
ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg.pri */,
8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg_private.pri */,
DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib.pri */,
8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib_private.pri */,
E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools.pri */,
B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools_private.pri */,
8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets.pri */,
87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets_private.pri */,
A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets.pri */,
8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets_private.pri */,
AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml.pri */,
E37365B4489B4918BEBB707D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml_private.pri */,
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns.pri */,
F9BEAA743A908603687DA204 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */,
D5141F795670589C8CC41CBC /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */,
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfcamera.pri */,
F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */,
AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcocoa.pri */,
EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */,
111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdds.pri */,
3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */,
2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */,
EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qicns.pri */,
C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qico.pri */,
45DB132B756499D4DF38430E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qjp2.pri */,
B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qminimal.pri */,
F0A58515945747E36783CC21 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */,
B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */,
EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */,
3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */,
946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmng.pri */,
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qoffscreen.pri */,
9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qqt7engine.pri */,
B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsqlite.pri */,
F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvg.pri */,
CFFBE05DB004895080314289 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvgicon.pri */,
247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */,
87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */,
24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */,
060A694B42A4555240009936 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtga.pri */,
BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtiff.pri */,
B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */,
74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */,
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */,
AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */,
8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */,
892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */,
A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */,
346287C9E754E7C458153F03 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwbmp.pri */,
B26239063A068F800A2C95F4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwebp.pri */,
63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.4.0/mkspecs/macx-clang/qmake.conf */,
85061B1DA49D125991117950 /* /usr/local/Qt-5.4.0/mkspecs/macx-xcode/qmake.conf */,
6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.5.0/mkspecs/qdevice.pri */,
669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.5.0/mkspecs/common/shell-unix.conf */,
0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.5.0/mkspecs/common/unix.conf */,
EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.5.0/mkspecs/common/mac.conf */,
817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.5.0/mkspecs/common/macx.conf */,
45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.5.0/mkspecs/common/gcc-base.conf */,
A9E30FA27827990C5F182223 /* /usr/local/Qt-5.5.0/mkspecs/common/gcc-base-mac.conf */,
8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.5.0/mkspecs/common/clang.conf */,
F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.5.0/mkspecs/common/clang-mac.conf */,
D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.5.0/mkspecs/qconfig.pri */,
ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth.pri */,
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth_private.pri */,
BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bootstrap_private.pri */,
CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_clucene_private.pri */,
77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent.pri */,
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent_private.pri */,
7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core.pri */,
5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core_private.pri */,
7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative.pri */,
89863CCAF1D29037AE95755D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative_private.pri */,
F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer.pri */,
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer_private.pri */,
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designercomponents_private.pri */,
360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio.pri */,
4C6C71914B1926119120DACD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio_private.pri */,
23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui.pri */,
D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui_private.pri */,
FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help.pri */,
D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help_private.pri */,
A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras.pri */,
33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras_private.pri */,
D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia.pri */,
E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia_private.pri */,
28BD0D10214709D95B161E24 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets.pri */,
D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */,
293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network.pri */,
382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network_private.pri */,
8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc.pri */,
B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc_private.pri */,
5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl.pri */,
E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl_private.pri */,
E432DA897A5F027987342E8F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions.pri */,
5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions_private.pri */,
8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_platformsupport_private.pri */,
F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning.pri */,
E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning_private.pri */,
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport.pri */,
D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport_private.pri */,
B382B645B34234E451AE5D94 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml.pri */,
6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml_private.pri */,
4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */,
DF8188E30892A4654B984221 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest.pri */,
ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest_private.pri */,
5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */,
16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick.pri */,
8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick_private.pri */,
82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickparticles_private.pri */,
D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets.pri */,
B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */,
CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script.pri */,
C505A18319B9B63C63877858 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script_private.pri */,
CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools.pri */,
A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools_private.pri */,
85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors.pri */,
BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors_private.pri */,
BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport.pri */,
311004331A04F3D69C98643C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport_private.pri */,
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql.pri */,
075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql_private.pri */,
ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg.pri */,
8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg_private.pri */,
DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib.pri */,
8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib_private.pri */,
E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools.pri */,
B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools_private.pri */,
8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets.pri */,
87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets_private.pri */,
A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets.pri */,
8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets_private.pri */,
AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml.pri */,
E37365B4489B4918BEBB707D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml_private.pri */,
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns.pri */,
F9BEAA743A908603687DA204 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */,
D5141F795670589C8CC41CBC /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */,
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfcamera.pri */,
F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */,
AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcocoa.pri */,
EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */,
111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdds.pri */,
3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */,
2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */,
EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qicns.pri */,
C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qico.pri */,
45DB132B756499D4DF38430E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qjp2.pri */,
B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qminimal.pri */,
F0A58515945747E36783CC21 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */,
B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */,
EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */,
3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */,
946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmng.pri */,
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qoffscreen.pri */,
9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qqt7engine.pri */,
B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsqlite.pri */,
F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvg.pri */,
CFFBE05DB004895080314289 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvgicon.pri */,
247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */,
87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */,
24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */,
060A694B42A4555240009936 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtga.pri */,
BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtiff.pri */,
B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */,
74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */,
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */,
AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */,
8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */,
892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */,
A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */,
346287C9E754E7C458153F03 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwbmp.pri */,
B26239063A068F800A2C95F4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwebp.pri */,
63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.5.0/mkspecs/macx-clang/qmake.conf */,
85061B1DA49D125991117950 /* /usr/local/Qt-5.5.0/mkspecs/macx-xcode/qmake.conf */,
AB745978DF0F41D1801ABDA6 /* .qmake.stash */,
);
name = "Supporting Files";
@@ -431,6 +434,7 @@
AF39DD055C3EF8226FBE929D /* Frameworks */ = {
isa = PBXGroup;
children = (
07D795491B5544B200DE9598 /* qtpcre */,
AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */,
DFD7912080BC557230093752 /* ApplicationServices.framework */,
9742F24EE18EA44D52824F1E /* CoreServices.framework */,
@@ -598,25 +602,25 @@
GCC_WARN_UNUSED_FUNCTION = NO;
GCC_WARN_UNUSED_VARIABLE = NO;
HEADER_SEARCH_PATHS = (
../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore,
../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore,
../../Libraries/QtStatic/qtbase/include,
"/usr/local/Qt-5.4.0/include",
"/usr/local/Qt-5.4.0/include/QtGui",
"/usr/local/Qt-5.4.0/include/QtCore",
"/usr/local/Qt-5.5.0/include",
"/usr/local/Qt-5.5.0/include/QtGui",
"/usr/local/Qt-5.5.0/include/QtCore",
GeneratedFiles/Debug,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers,
"/usr/local/Qt-5.4.0/mkspecs/macx-clang",
"/usr/local/Qt-5.5.0/mkspecs/macx-clang",
);
INFOPLIST_FILE = Emoji.plist;
INSTALL_DIR = ../Mac/ReleaseEmoji/;
LDPLUSPLUS = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++";
LIBRARY_SEARCH_PATHS = (
/System/Library/Frameworks/,
"/usr/local/Qt-5.4.0/lib",
"/usr/local/Qt-5.4.0/plugins/platforms",
"/usr/local/Qt-5.4.0/plugins/imageformats",
"/usr/local/Qt-5.5.0/lib",
"/usr/local/Qt-5.5.0/plugins/platforms",
"/usr/local/Qt-5.5.0/plugins/imageformats",
);
MACOSX_DEPLOYMENT_TARGET = 10.7;
OBJROOT = ./../Mac/ReleaseIntermediateEmoji/;
@@ -645,10 +649,10 @@
OTHER_LDFLAGS = (
"-headerpad_max_install_names",
"-stdlib=libc++",
"-L/usr/local/Qt-5.4.0/lib",
"-L/usr/local/Qt-5.4.0/plugins/platforms",
"-L/usr/local/Qt-5.5.0/lib",
"-L/usr/local/Qt-5.5.0/plugins/platforms",
"-lcups",
"-L/usr/local/Qt-5.4.0/plugins/imageformats",
"-L/usr/local/Qt-5.5.0/plugins/imageformats",
"-lz",
"-lm",
);
@@ -688,25 +692,25 @@
GCC_WARN_UNUSED_FUNCTION = NO;
GCC_WARN_UNUSED_VARIABLE = NO;
HEADER_SEARCH_PATHS = (
../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore,
../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore,
../../Libraries/QtStatic/qtbase/include,
"/usr/local/Qt-5.4.0/include",
"/usr/local/Qt-5.4.0/include/QtGui",
"/usr/local/Qt-5.4.0/include/QtCore",
"/usr/local/Qt-5.5.0/include",
"/usr/local/Qt-5.5.0/include/QtGui",
"/usr/local/Qt-5.5.0/include/QtCore",
GeneratedFiles/Debug,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers,
"/usr/local/Qt-5.4.0/mkspecs/macx-clang",
"/usr/local/Qt-5.5.0/mkspecs/macx-clang",
);
INFOPLIST_FILE = Emoji.plist;
INSTALL_DIR = ../Mac/DebugEmoji/;
LDPLUSPLUS = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++";
LIBRARY_SEARCH_PATHS = (
/System/Library/Frameworks/,
"/usr/local/Qt-5.4.0/lib",
"/usr/local/Qt-5.4.0/plugins/platforms",
"/usr/local/Qt-5.4.0/plugins/imageformats",
"/usr/local/Qt-5.5.0/lib",
"/usr/local/Qt-5.5.0/plugins/platforms",
"/usr/local/Qt-5.5.0/plugins/imageformats",
);
MACOSX_DEPLOYMENT_TARGET = 10.7;
OBJROOT = ./../Mac/DebugIntermediateEmoji/;
@@ -736,10 +740,10 @@
OTHER_LDFLAGS = (
"-headerpad_max_install_names",
"-stdlib=libc++",
"-L/usr/local/Qt-5.4.0/lib",
"-L/usr/local/Qt-5.4.0/plugins/platforms",
"-L/usr/local/Qt-5.5.0/lib",
"-L/usr/local/Qt-5.5.0/plugins/platforms",
"-lcups",
"-L/usr/local/Qt-5.4.0/plugins/imageformats",
"-L/usr/local/Qt-5.5.0/plugins/imageformats",
"-lz",
"-lm",
);

View File

@@ -1,25 +1,25 @@
#############################################################################
# Makefile for building: ../Mac/DebugEmoji/MetaEmoji.app/Contents/MacOS/MetaEmoji
# Generated by qmake (3.0) (Qt 5.4.0)
# Generated by qmake (3.0) (Qt 5.5.0)
# Project: MetaEmoji.pro
# Template: app
# Command: /usr/local/Qt-5.4.0/bin/qmake -spec macx-xcode -o MetaEmoji.xcodeproj/project.pbxproj MetaEmoji.pro
# Command: /usr/local/Qt-5.5.0/bin/qmake -spec macx-xcode -o MetaEmoji.xcodeproj/project.pbxproj MetaEmoji.pro
#############################################################################
MAKEFILE = project.pbxproj
MOC = /usr/local/Qt-5.4.0/bin/moc
UIC =
MOC = /usr/local/Qt-5.5.0/bin/moc
UIC =
LEX = flex
LEXFLAGS =
LEXFLAGS =
YACC = yacc
YACCFLAGS = -d
DEFINES = -D_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB
INCPATH = -I/usr/local/Qt-5.4.0/mkspecs/macx-clang -I. -I../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui -I../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore -I../../Libraries/QtStatic/qtbase/include -I/usr/local/Qt-5.4.0/include -I/usr/local/Qt-5.4.0/include/QtGui -I/usr/local/Qt-5.4.0/include/QtCore -IGeneratedFiles/Debug -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers
INCPATH = -I/usr/local/Qt-5.5.0/mkspecs/macx-clang -I. -I../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui -I../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore -I../../Libraries/QtStatic/qtbase/include -I/usr/local/Qt-5.5.0/include -I/usr/local/Qt-5.5.0/include/QtGui -I/usr/local/Qt-5.5.0/include/QtCore -IGeneratedFiles/Debug -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers
DEL_FILE = rm -f
MOVE = mv -f
IMAGES =
IMAGES =
PARSERS =
preprocess: $(PARSERS) compilers
clean preprocess_clean: parser_clean compiler_clean
@@ -54,7 +54,7 @@ GeneratedFiles/Debug/moc_genemoji.cpp: ../../Libraries/QtStatic/qtbase/include/Q
../../Libraries/QtStatic/qtbase/include/QtCore/QCoreApplication \
../../Libraries/QtStatic/qtbase/include/QtGui/QGuiApplication \
SourceFiles/_other/genemoji.h
/usr/local/Qt-5.4.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.4.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.4.0/include/QtGui/5.4.0/QtGui -I/usr/local/Qt-5.4.0/include/QtCore/5.4.0/QtCore -I/usr/local/Qt-5.4.0/include -I/usr/local/Qt-5.4.0/include/QtGui -I/usr/local/Qt-5.4.0/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/_other/genemoji.h -o GeneratedFiles/Debug/moc_genemoji.cpp
/usr/local/Qt-5.5.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.0/include/QtGui/5.5.0/QtGui -I/usr/local/Qt-5.5.0/include/QtCore/5.5.0/QtCore -I/usr/local/Qt-5.5.0/include -I/usr/local/Qt-5.5.0/include/QtGui -I/usr/local/Qt-5.5.0/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/_other/genemoji.h -o GeneratedFiles/Debug/moc_genemoji.cpp
compiler_moc_source_make_all:
compiler_moc_source_clean:
@@ -66,5 +66,5 @@ compiler_yacc_impl_make_all:
compiler_yacc_impl_clean:
compiler_lex_make_all:
compiler_lex_clean:
compiler_clean: compiler_moc_header_clean
compiler_clean: compiler_moc_header_clean

View File

@@ -27,7 +27,7 @@ HEADERS += \
./SourceFiles/_other/mlmain.h \
./SourceFiles/_other/genlang.h \
INCLUDEPATH += ./../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui\
./../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore\
INCLUDEPATH += ./../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui\
./../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore\
./../../Libraries/QtStatic/qtbase/include\

View File

@@ -105,7 +105,7 @@
<SubSystem>Console</SubSystem>
<OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>$(QTDIR)\lib;$(QTDIR)\plugins;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;imm32.lib;winmm.lib;qtmaind.lib;glu32.lib;opengl32.lib;Qt5Cored.lib;Qt5Guid.lib;qtharfbuzzngd.lib;Qt5Widgetsd.lib;Qt5Networkd.lib;Qt5PlatformSupportd.lib;platforms\qwindowsd.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;imm32.lib;winmm.lib;qtmaind.lib;glu32.lib;opengl32.lib;Qt5Cored.lib;Qt5Guid.lib;qtharfbuzzngd.lib;qtpcred.lib;qtfreetyped.lib;Qt5Widgetsd.lib;Qt5Networkd.lib;Qt5PlatformSupportd.lib;platforms\qwindowsd.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
<ProfileGuidedDatabase>$(IntDir)$(TargetName).pgd</ProfileGuidedDatabase>
@@ -123,7 +123,7 @@
<SubSystem>Console</SubSystem>
<OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>$(QTDIR)\lib;$(QTDIR)\plugins;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;qtmain.lib;opengl32.lib;imm32.lib;winmm.lib;Qt5Core.lib;Qt5Gui.lib;qtharfbuzzng.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;qtmain.lib;opengl32.lib;imm32.lib;winmm.lib;Qt5Core.lib;Qt5Gui.lib;qtharfbuzzng.lib;qtpcre.lib;qtfreetype.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
@@ -140,7 +140,7 @@
<SubSystem>Console</SubSystem>
<OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>$(QTDIR)\lib;$(QTDIR)\plugins;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;qtmain.lib;opengl32.lib;imm32.lib;winmm.lib;Qt5Core.lib;Qt5Gui.lib;qtharfbuzzng.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;qtmain.lib;opengl32.lib;imm32.lib;winmm.lib;Qt5Core.lib;Qt5Gui.lib;qtharfbuzzng.lib;qtpcre.lib;qtfreetype.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>

View File

@@ -23,6 +23,7 @@
/* Begin PBXBuildFile section */
0E4EEB1BFC9FA7662AD934C6 /* moc_genlang.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 680437016D61255E7F889A94 /* moc_genlang.cpp */; settings = {ATTRIBUTES = (); }; };
07D7954A1B5544B200DE9598 /* qtpcre in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 07D795491B5544B200DE9598 /* qtpcre */; };
1A681B886F50EE30FBE62B4B /* Qt5PrintSupport in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = DBF506D10449BFABD45B82DA /* Qt5PrintSupport */; };
1BB705CDB741E2B7450201A5 /* Cocoa.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */; };
328FD74542F6E2C873EE4D4B /* ApplicationServices.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = DFD7912080BC557230093752 /* ApplicationServices.framework */; };
@@ -63,160 +64,161 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
04391BE7A8B9D811E255100A /* Qt5Gui */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Gui; path = "/usr/local/Qt-5.4.0/lib/libQt5Gui$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
060A694B42A4555240009936 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtga.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtga.pri"; sourceTree = "<absolute>"; };
075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql_private.pri"; sourceTree = "<absolute>"; };
0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.4.0/mkspecs/common/unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/unix.conf"; sourceTree = "<absolute>"; };
111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdds.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdds.pri"; sourceTree = "<absolute>"; };
16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick.pri"; sourceTree = "<absolute>"; };
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfcamera.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfcamera.pri"; sourceTree = "<absolute>"; };
23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui.pri"; sourceTree = "<absolute>"; };
2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qgenericbearer.pri"; sourceTree = "<absolute>"; };
247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri"; sourceTree = "<absolute>"; };
24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri"; sourceTree = "<absolute>"; };
28BD0D10214709D95B161E24 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets.pri"; sourceTree = "<absolute>"; };
293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network.pri"; sourceTree = "<absolute>"; };
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth_private.pri"; sourceTree = "<absolute>"; };
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns.pri"; sourceTree = "<absolute>"; };
311004331A04F3D69C98643C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport_private.pri"; sourceTree = "<absolute>"; };
31120EDB269DFF13E1D49847 /* qicns */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qicns; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqicns$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
04391BE7A8B9D811E255100A /* Qt5Gui */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Gui; path = "/usr/local/Qt-5.5.0/lib/libQt5Gui$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
060A694B42A4555240009936 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtga.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtga.pri"; sourceTree = "<absolute>"; };
075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql_private.pri"; sourceTree = "<absolute>"; };
07D795491B5544B200DE9598 /* qtpcre */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtpcre; path = "usr/local/Qt-5.5.0/lib/libqtpcre$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<group>"; };
0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.5.0/mkspecs/common/unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/unix.conf"; sourceTree = "<absolute>"; };
111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdds.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdds.pri"; sourceTree = "<absolute>"; };
16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick.pri"; sourceTree = "<absolute>"; };
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfcamera.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfcamera.pri"; sourceTree = "<absolute>"; };
23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui.pri"; sourceTree = "<absolute>"; };
2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qgenericbearer.pri"; sourceTree = "<absolute>"; };
247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri"; sourceTree = "<absolute>"; };
24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri"; sourceTree = "<absolute>"; };
28BD0D10214709D95B161E24 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets.pri"; sourceTree = "<absolute>"; };
293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network.pri"; sourceTree = "<absolute>"; };
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth_private.pri"; sourceTree = "<absolute>"; };
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns.pri"; sourceTree = "<absolute>"; };
311004331A04F3D69C98643C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport_private.pri"; sourceTree = "<absolute>"; };
31120EDB269DFF13E1D49847 /* qicns */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qicns; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqicns$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
33A9E861B2FAD8C39E154E7C /* MetaLang.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = MetaLang.pro; sourceTree = "<absolute>"; };
33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras_private.pri"; sourceTree = "<absolute>"; };
346287C9E754E7C458153F03 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwbmp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwbmp.pri"; sourceTree = "<absolute>"; };
360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio.pri"; sourceTree = "<absolute>"; };
3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri"; sourceTree = "<absolute>"; };
382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network_private.pri"; sourceTree = "<absolute>"; };
3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri"; sourceTree = "<absolute>"; };
45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.4.0/mkspecs/common/gcc-base.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/gcc-base.conf"; sourceTree = "<absolute>"; };
45DB132B756499D4DF38430E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qjp2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qjp2.pri"; sourceTree = "<absolute>"; };
4689C06178B60B84E7F3A3B7 /* Qt5Widgets */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Widgets; path = "/usr/local/Qt-5.4.0/lib/libQt5Widgets$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
4C6C71914B1926119120DACD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio_private.pri"; sourceTree = "<absolute>"; };
33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras_private.pri"; sourceTree = "<absolute>"; };
346287C9E754E7C458153F03 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwbmp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwbmp.pri"; sourceTree = "<absolute>"; };
360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio.pri"; sourceTree = "<absolute>"; };
3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri"; sourceTree = "<absolute>"; };
382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network_private.pri"; sourceTree = "<absolute>"; };
3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri"; sourceTree = "<absolute>"; };
45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.5.0/mkspecs/common/gcc-base.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/gcc-base.conf"; sourceTree = "<absolute>"; };
45DB132B756499D4DF38430E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qjp2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qjp2.pri"; sourceTree = "<absolute>"; };
4689C06178B60B84E7F3A3B7 /* Qt5Widgets */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Widgets; path = "/usr/local/Qt-5.5.0/lib/libQt5Widgets$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
4C6C71914B1926119120DACD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio_private.pri"; sourceTree = "<absolute>"; };
4D765E1B1EA6C757220C63E7 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmldevtools_private.pri"; sourceTree = "<absolute>"; };
4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmldevtools_private.pri"; sourceTree = "<absolute>"; };
54D6D1A7260739988F6FC406 /* genlang.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = genlang.h; path = SourceFiles/_other/genlang.h; sourceTree = "<absolute>"; };
5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions_private.pri"; sourceTree = "<absolute>"; };
5A80A1907B6CFFB524C1E57D /* Qt5Core */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Core; path = "/usr/local/Qt-5.4.0/lib/libQt5Core$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri"; sourceTree = "<absolute>"; };
5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl.pri"; sourceTree = "<absolute>"; };
5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core_private.pri"; sourceTree = "<absolute>"; };
6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml_private.pri"; sourceTree = "<absolute>"; };
63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.4.0/mkspecs/macx-clang/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/macx-clang/qmake.conf"; sourceTree = "<absolute>"; };
5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions_private.pri"; sourceTree = "<absolute>"; };
5A80A1907B6CFFB524C1E57D /* Qt5Core */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Core; path = "/usr/local/Qt-5.5.0/lib/libQt5Core$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri"; sourceTree = "<absolute>"; };
5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl.pri"; sourceTree = "<absolute>"; };
5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core_private.pri"; sourceTree = "<absolute>"; };
6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml_private.pri"; sourceTree = "<absolute>"; };
63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.5.0/mkspecs/macx-clang/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/macx-clang/qmake.conf"; sourceTree = "<absolute>"; };
669AB12AE74AC219B4669D79 /* genlang.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = genlang.cpp; path = SourceFiles/_other/genlang.cpp; sourceTree = "<absolute>"; };
669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.4.0/mkspecs/common/shell-unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/shell-unix.conf"; sourceTree = "<absolute>"; };
669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.5.0/mkspecs/common/shell-unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/shell-unix.conf"; sourceTree = "<absolute>"; };
680437016D61255E7F889A94 /* moc_genlang.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_genlang.cpp; path = GeneratedFiles/Debug/moc_genlang.cpp; sourceTree = "<absolute>"; };
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designercomponents_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designercomponents_private.pri"; sourceTree = "<absolute>"; };
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport.pri"; sourceTree = "<absolute>"; };
6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.4.0/mkspecs/qdevice.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/qdevice.pri"; sourceTree = "<absolute>"; };
74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri"; sourceTree = "<absolute>"; };
77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent.pri"; sourceTree = "<absolute>"; };
7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative.pri"; sourceTree = "<absolute>"; };
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer_private.pri"; sourceTree = "<absolute>"; };
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent_private.pri"; sourceTree = "<absolute>"; };
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql.pri"; sourceTree = "<absolute>"; };
7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core.pri"; sourceTree = "<absolute>"; };
817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.4.0/mkspecs/common/macx.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/macx.conf"; sourceTree = "<absolute>"; };
82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickparticles_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickparticles_private.pri"; sourceTree = "<absolute>"; };
83D37373949868693FB7816D /* qmng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qmng; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqmng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designercomponents_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designercomponents_private.pri"; sourceTree = "<absolute>"; };
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport.pri"; sourceTree = "<absolute>"; };
6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.5.0/mkspecs/qdevice.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/qdevice.pri"; sourceTree = "<absolute>"; };
74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri"; sourceTree = "<absolute>"; };
77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent.pri"; sourceTree = "<absolute>"; };
7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative.pri"; sourceTree = "<absolute>"; };
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer_private.pri"; sourceTree = "<absolute>"; };
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent_private.pri"; sourceTree = "<absolute>"; };
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql.pri"; sourceTree = "<absolute>"; };
7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core.pri"; sourceTree = "<absolute>"; };
817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.5.0/mkspecs/common/macx.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/macx.conf"; sourceTree = "<absolute>"; };
82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickparticles_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickparticles_private.pri"; sourceTree = "<absolute>"; };
83D37373949868693FB7816D /* qmng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qmng; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqmng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
83FFCB79DDEB015B4A5CB301 /* MetaLang.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MetaLang.app; sourceTree = BUILT_PRODUCTS_DIR; };
85061B1DA49D125991117950 /* /usr/local/Qt-5.4.0/mkspecs/macx-xcode/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/macx-xcode/qmake.conf"; sourceTree = "<absolute>"; };
85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors.pri"; sourceTree = "<absolute>"; };
87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri"; sourceTree = "<absolute>"; };
87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets_private.pri"; sourceTree = "<absolute>"; };
8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib_private.pri"; sourceTree = "<absolute>"; };
892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri"; sourceTree = "<absolute>"; };
89863CCAF1D29037AE95755D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative_private.pri"; sourceTree = "<absolute>"; };
8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc.pri"; sourceTree = "<absolute>"; };
8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri"; sourceTree = "<absolute>"; };
8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick_private.pri"; sourceTree = "<absolute>"; };
8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.4.0/mkspecs/common/clang.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/clang.conf"; sourceTree = "<absolute>"; };
8CF51323544B886B8F4A2232 /* qwbmp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwbmp; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqwbmp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
85061B1DA49D125991117950 /* /usr/local/Qt-5.5.0/mkspecs/macx-xcode/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/macx-xcode/qmake.conf"; sourceTree = "<absolute>"; };
85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors.pri"; sourceTree = "<absolute>"; };
87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri"; sourceTree = "<absolute>"; };
87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets_private.pri"; sourceTree = "<absolute>"; };
8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib_private.pri"; sourceTree = "<absolute>"; };
892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri"; sourceTree = "<absolute>"; };
89863CCAF1D29037AE95755D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative_private.pri"; sourceTree = "<absolute>"; };
8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc.pri"; sourceTree = "<absolute>"; };
8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri"; sourceTree = "<absolute>"; };
8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick_private.pri"; sourceTree = "<absolute>"; };
8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.5.0/mkspecs/common/clang.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/clang.conf"; sourceTree = "<absolute>"; };
8CF51323544B886B8F4A2232 /* qwbmp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwbmp; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqwbmp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
8D9815BDB5BD9F90D2BC05C5 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = "<absolute>"; };
8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg_private.pri"; sourceTree = "<absolute>"; };
8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets_private.pri"; sourceTree = "<absolute>"; };
8F500B5166907B6D9A7C3E3D /* qico */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qico; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqico$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_platformsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_platformsupport_private.pri"; sourceTree = "<absolute>"; };
8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets.pri"; sourceTree = "<absolute>"; };
946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmng.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmng.pri"; sourceTree = "<absolute>"; };
8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg_private.pri"; sourceTree = "<absolute>"; };
8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets_private.pri"; sourceTree = "<absolute>"; };
8F500B5166907B6D9A7C3E3D /* qico */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qico; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqico$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_platformsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_platformsupport_private.pri"; sourceTree = "<absolute>"; };
8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets.pri"; sourceTree = "<absolute>"; };
946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmng.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmng.pri"; sourceTree = "<absolute>"; };
9742F24EE18EA44D52824F1E /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qqt7engine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qqt7engine.pri"; sourceTree = "<absolute>"; };
9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qqt7engine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qqt7engine.pri"; sourceTree = "<absolute>"; };
9DFF62A901D70814B8A323D4 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets.pri"; sourceTree = "<absolute>"; };
A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets.pri"; sourceTree = "<absolute>"; };
A1A67BEAA744704B29168D39 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri"; sourceTree = "<absolute>"; };
A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools_private.pri"; sourceTree = "<absolute>"; };
A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras.pri"; sourceTree = "<absolute>"; };
A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri"; sourceTree = "<absolute>"; };
A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools_private.pri"; sourceTree = "<absolute>"; };
A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras.pri"; sourceTree = "<absolute>"; };
A83296E7180A28ABB0FD85D2 /* mlmain.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = mlmain.cpp; path = SourceFiles/_other/mlmain.cpp; sourceTree = "<absolute>"; };
A9E30FA27827990C5F182223 /* /usr/local/Qt-5.4.0/mkspecs/common/gcc-base-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/gcc-base-mac.conf"; sourceTree = "<absolute>"; };
AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml.pri"; sourceTree = "<absolute>"; };
AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri"; sourceTree = "<absolute>"; };
A9E30FA27827990C5F182223 /* /usr/local/Qt-5.5.0/mkspecs/common/gcc-base-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/gcc-base-mac.conf"; sourceTree = "<absolute>"; };
AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml.pri"; sourceTree = "<absolute>"; };
AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri"; sourceTree = "<absolute>"; };
AB745978DF0F41D1801ABDA6 /* .qmake.stash */ = {isa = PBXFileReference; lastKnownFileType = file; path = .qmake.stash; sourceTree = "<absolute>"; };
ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest_private.pri"; sourceTree = "<absolute>"; };
ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth.pri"; sourceTree = "<absolute>"; };
ADC6308023253CEA51F86E21 /* qwebp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwebp; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqwebp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg.pri"; sourceTree = "<absolute>"; };
ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest_private.pri"; sourceTree = "<absolute>"; };
ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth.pri"; sourceTree = "<absolute>"; };
ADC6308023253CEA51F86E21 /* qwebp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwebp; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqwebp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg.pri"; sourceTree = "<absolute>"; };
AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcocoa.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcocoa.pri"; sourceTree = "<absolute>"; };
B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsqlite.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsqlite.pri"; sourceTree = "<absolute>"; };
B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets_private.pri"; sourceTree = "<absolute>"; };
B26239063A068F800A2C95F4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwebp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwebp.pri"; sourceTree = "<absolute>"; };
B382B645B34234E451AE5D94 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml.pri"; sourceTree = "<absolute>"; };
B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools_private.pri"; sourceTree = "<absolute>"; };
B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc_private.pri"; sourceTree = "<absolute>"; };
B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qminimal.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qminimal.pri"; sourceTree = "<absolute>"; };
B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri"; sourceTree = "<absolute>"; };
B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri"; sourceTree = "<absolute>"; };
BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtiff.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtiff.pri"; sourceTree = "<absolute>"; };
BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bootstrap_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bootstrap_private.pri"; sourceTree = "<absolute>"; };
BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors_private.pri"; sourceTree = "<absolute>"; };
BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport.pri"; sourceTree = "<absolute>"; };
C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qico.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qico.pri"; sourceTree = "<absolute>"; };
C505A18319B9B63C63877858 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script_private.pri"; sourceTree = "<absolute>"; };
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri"; sourceTree = "<absolute>"; };
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qoffscreen.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qoffscreen.pri"; sourceTree = "<absolute>"; };
CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools.pri"; sourceTree = "<absolute>"; };
CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_clucene_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_clucene_private.pri"; sourceTree = "<absolute>"; };
CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script.pri"; sourceTree = "<absolute>"; };
CFFBE05DB004895080314289 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvgicon.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvgicon.pri"; sourceTree = "<absolute>"; };
D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport_private.pri"; sourceTree = "<absolute>"; };
D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri"; sourceTree = "<absolute>"; };
D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia.pri"; sourceTree = "<absolute>"; };
D3D1BE0BEA3AEE0551AD39AC /* qdds */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qdds; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqdds$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcocoa.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcocoa.pri"; sourceTree = "<absolute>"; };
B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsqlite.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsqlite.pri"; sourceTree = "<absolute>"; };
B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets_private.pri"; sourceTree = "<absolute>"; };
B26239063A068F800A2C95F4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwebp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwebp.pri"; sourceTree = "<absolute>"; };
B382B645B34234E451AE5D94 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml.pri"; sourceTree = "<absolute>"; };
B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools_private.pri"; sourceTree = "<absolute>"; };
B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc_private.pri"; sourceTree = "<absolute>"; };
B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qminimal.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qminimal.pri"; sourceTree = "<absolute>"; };
B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri"; sourceTree = "<absolute>"; };
B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri"; sourceTree = "<absolute>"; };
BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtiff.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtiff.pri"; sourceTree = "<absolute>"; };
BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bootstrap_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bootstrap_private.pri"; sourceTree = "<absolute>"; };
BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors_private.pri"; sourceTree = "<absolute>"; };
BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport.pri"; sourceTree = "<absolute>"; };
C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qico.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qico.pri"; sourceTree = "<absolute>"; };
C505A18319B9B63C63877858 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script_private.pri"; sourceTree = "<absolute>"; };
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri"; sourceTree = "<absolute>"; };
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qoffscreen.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qoffscreen.pri"; sourceTree = "<absolute>"; };
CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools.pri"; sourceTree = "<absolute>"; };
CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_clucene_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_clucene_private.pri"; sourceTree = "<absolute>"; };
CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script.pri"; sourceTree = "<absolute>"; };
CFFBE05DB004895080314289 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvgicon.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvgicon.pri"; sourceTree = "<absolute>"; };
D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport_private.pri"; sourceTree = "<absolute>"; };
D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri"; sourceTree = "<absolute>"; };
D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia.pri"; sourceTree = "<absolute>"; };
D3D1BE0BEA3AEE0551AD39AC /* qdds */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qdds; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqdds$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D4B32C2222F82AC56BADEB21 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.4.0/mkspecs/qconfig.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/qconfig.pri"; sourceTree = "<absolute>"; };
D5141F795670589C8CC41CBC /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri"; sourceTree = "<absolute>"; };
D53D8E6A188E05078A114294 /* qcocoa */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qcocoa; path = "/usr/local/Qt-5.4.0/plugins/platforms/libqcocoa$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D6193B79CECC9DD0142D1200 /* qtharfbuzzng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtharfbuzzng; path = "/usr/local/Qt-5.4.0/lib/libqtharfbuzzng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help_private.pri"; sourceTree = "<absolute>"; };
D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.5.0/mkspecs/qconfig.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/qconfig.pri"; sourceTree = "<absolute>"; };
D5141F795670589C8CC41CBC /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri"; sourceTree = "<absolute>"; };
D53D8E6A188E05078A114294 /* qcocoa */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qcocoa; path = "/usr/local/Qt-5.5.0/plugins/platforms/libqcocoa$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D6193B79CECC9DD0142D1200 /* qtharfbuzzng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtharfbuzzng; path = "/usr/local/Qt-5.5.0/lib/libqtharfbuzzng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help_private.pri"; sourceTree = "<absolute>"; };
D7D645CBFF3B86CF39CEF3DA /* mlmain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mlmain.h; path = SourceFiles/_other/mlmain.h; sourceTree = "<absolute>"; };
D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui_private.pri"; sourceTree = "<absolute>"; };
D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets.pri"; sourceTree = "<absolute>"; };
DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib.pri"; sourceTree = "<absolute>"; };
DBF506D10449BFABD45B82DA /* Qt5PrintSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PrintSupport; path = "/usr/local/Qt-5.4.0/lib/libQt5PrintSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
DCEFD9167C239650120B0145 /* qtga */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtga; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqtga$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
DF8188E30892A4654B984221 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest.pri"; sourceTree = "<absolute>"; };
D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui_private.pri"; sourceTree = "<absolute>"; };
D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets.pri"; sourceTree = "<absolute>"; };
DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib.pri"; sourceTree = "<absolute>"; };
DBF506D10449BFABD45B82DA /* Qt5PrintSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PrintSupport; path = "/usr/local/Qt-5.5.0/lib/libQt5PrintSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
DCEFD9167C239650120B0145 /* qtga */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtga; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqtga$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
DF8188E30892A4654B984221 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest.pri"; sourceTree = "<absolute>"; };
DFD7912080BC557230093752 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl_private.pri"; sourceTree = "<absolute>"; };
E37365B4489B4918BEBB707D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml_private.pri"; sourceTree = "<absolute>"; };
E432DA897A5F027987342E8F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions.pri"; sourceTree = "<absolute>"; };
E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools.pri"; sourceTree = "<absolute>"; };
E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning_private.pri"; sourceTree = "<absolute>"; };
E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PlatformSupport; path = "/usr/local/Qt-5.4.0/lib/libQt5PlatformSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia_private.pri"; sourceTree = "<absolute>"; };
EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri"; sourceTree = "<absolute>"; };
EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qicns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qicns.pri"; sourceTree = "<absolute>"; };
EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri"; sourceTree = "<absolute>"; };
EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.4.0/mkspecs/common/mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/mac.conf"; sourceTree = "<absolute>"; };
F0681BC551FC8A2B132FC646 /* qjp2 */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qjp2; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqjp2$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
F0A58515945747E36783CC21 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri"; sourceTree = "<absolute>"; };
F2453BA07315EB9F34F1CD57 /* qtiff */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtiff; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqtiff$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer.pri"; sourceTree = "<absolute>"; };
F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.4.0/mkspecs/common/clang-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/clang-mac.conf"; sourceTree = "<absolute>"; };
F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri"; sourceTree = "<absolute>"; };
F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning.pri"; sourceTree = "<absolute>"; };
F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvg.pri"; sourceTree = "<absolute>"; };
F9BEAA743A908603687DA204 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri"; sourceTree = "<absolute>"; };
E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl_private.pri"; sourceTree = "<absolute>"; };
E37365B4489B4918BEBB707D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml_private.pri"; sourceTree = "<absolute>"; };
E432DA897A5F027987342E8F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions.pri"; sourceTree = "<absolute>"; };
E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools.pri"; sourceTree = "<absolute>"; };
E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning_private.pri"; sourceTree = "<absolute>"; };
E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PlatformSupport; path = "/usr/local/Qt-5.5.0/lib/libQt5PlatformSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia_private.pri"; sourceTree = "<absolute>"; };
EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri"; sourceTree = "<absolute>"; };
EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qicns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qicns.pri"; sourceTree = "<absolute>"; };
EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri"; sourceTree = "<absolute>"; };
EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.5.0/mkspecs/common/mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/mac.conf"; sourceTree = "<absolute>"; };
F0681BC551FC8A2B132FC646 /* qjp2 */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qjp2; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqjp2$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
F0A58515945747E36783CC21 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri"; sourceTree = "<absolute>"; };
F2453BA07315EB9F34F1CD57 /* qtiff */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtiff; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqtiff$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer.pri"; sourceTree = "<absolute>"; };
F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.5.0/mkspecs/common/clang-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/clang-mac.conf"; sourceTree = "<absolute>"; };
F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri"; sourceTree = "<absolute>"; };
F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning.pri"; sourceTree = "<absolute>"; };
F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvg.pri"; sourceTree = "<absolute>"; };
F9BEAA743A908603687DA204 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri"; sourceTree = "<absolute>"; };
FCC237CA5AD60B9BA4447615 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help.pri"; sourceTree = "<absolute>"; };
FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help.pri"; sourceTree = "<absolute>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -248,6 +250,7 @@
F4D3747C3A03B25EDC9057BB /* qwebp in Link Binary With Libraries */,
9F33AC0693BC81B27D8F518D /* Qt5Gui in Link Binary With Libraries */,
8D33FE22B9BBADC7FA46C15B /* qtharfbuzzng in Link Binary With Libraries */,
07D7954A1B5544B200DE9598 /* qtpcre in Link Binary With Libraries */,
B9ADD90C014EA3FBE351DF03 /* Qt5Core in Link Binary With Libraries */,
);
name = "Link Binary With Libraries";
@@ -295,127 +298,127 @@
isa = PBXGroup;
children = (
33A9E861B2FAD8C39E154E7C /* MetaLang.pro */,
6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.4.0/mkspecs/qdevice.pri */,
669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.4.0/mkspecs/common/shell-unix.conf */,
0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.4.0/mkspecs/common/unix.conf */,
EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.4.0/mkspecs/common/mac.conf */,
817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.4.0/mkspecs/common/macx.conf */,
45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.4.0/mkspecs/common/gcc-base.conf */,
A9E30FA27827990C5F182223 /* /usr/local/Qt-5.4.0/mkspecs/common/gcc-base-mac.conf */,
8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.4.0/mkspecs/common/clang.conf */,
F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.4.0/mkspecs/common/clang-mac.conf */,
D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.4.0/mkspecs/qconfig.pri */,
ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth.pri */,
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth_private.pri */,
BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bootstrap_private.pri */,
CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_clucene_private.pri */,
77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent.pri */,
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent_private.pri */,
7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core.pri */,
5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core_private.pri */,
7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative.pri */,
89863CCAF1D29037AE95755D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative_private.pri */,
F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer.pri */,
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer_private.pri */,
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designercomponents_private.pri */,
360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio.pri */,
4C6C71914B1926119120DACD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio_private.pri */,
23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui.pri */,
D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui_private.pri */,
FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help.pri */,
D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help_private.pri */,
A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras.pri */,
33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras_private.pri */,
D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia.pri */,
E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia_private.pri */,
28BD0D10214709D95B161E24 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets.pri */,
D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */,
293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network.pri */,
382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network_private.pri */,
8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc.pri */,
B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc_private.pri */,
5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl.pri */,
E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl_private.pri */,
E432DA897A5F027987342E8F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions.pri */,
5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions_private.pri */,
8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_platformsupport_private.pri */,
F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning.pri */,
E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning_private.pri */,
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport.pri */,
D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport_private.pri */,
B382B645B34234E451AE5D94 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml.pri */,
6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml_private.pri */,
4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */,
DF8188E30892A4654B984221 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest.pri */,
ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest_private.pri */,
5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */,
16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick.pri */,
8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick_private.pri */,
82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickparticles_private.pri */,
D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets.pri */,
B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */,
CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script.pri */,
C505A18319B9B63C63877858 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script_private.pri */,
CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools.pri */,
A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools_private.pri */,
85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors.pri */,
BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors_private.pri */,
BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport.pri */,
311004331A04F3D69C98643C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport_private.pri */,
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql.pri */,
075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql_private.pri */,
ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg.pri */,
8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg_private.pri */,
DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib.pri */,
8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib_private.pri */,
E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools.pri */,
B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools_private.pri */,
8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets.pri */,
87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets_private.pri */,
A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets.pri */,
8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets_private.pri */,
AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml.pri */,
E37365B4489B4918BEBB707D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml_private.pri */,
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns.pri */,
F9BEAA743A908603687DA204 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */,
D5141F795670589C8CC41CBC /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */,
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfcamera.pri */,
F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */,
AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcocoa.pri */,
EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */,
111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdds.pri */,
3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */,
2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */,
EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qicns.pri */,
C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qico.pri */,
45DB132B756499D4DF38430E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qjp2.pri */,
B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qminimal.pri */,
F0A58515945747E36783CC21 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */,
B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */,
EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */,
3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */,
946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmng.pri */,
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qoffscreen.pri */,
9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qqt7engine.pri */,
B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsqlite.pri */,
F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvg.pri */,
CFFBE05DB004895080314289 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvgicon.pri */,
247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */,
87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */,
24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */,
060A694B42A4555240009936 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtga.pri */,
BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtiff.pri */,
B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */,
74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */,
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */,
AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */,
8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */,
892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */,
A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */,
346287C9E754E7C458153F03 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwbmp.pri */,
B26239063A068F800A2C95F4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwebp.pri */,
63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.4.0/mkspecs/macx-clang/qmake.conf */,
85061B1DA49D125991117950 /* /usr/local/Qt-5.4.0/mkspecs/macx-xcode/qmake.conf */,
6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.5.0/mkspecs/qdevice.pri */,
669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.5.0/mkspecs/common/shell-unix.conf */,
0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.5.0/mkspecs/common/unix.conf */,
EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.5.0/mkspecs/common/mac.conf */,
817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.5.0/mkspecs/common/macx.conf */,
45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.5.0/mkspecs/common/gcc-base.conf */,
A9E30FA27827990C5F182223 /* /usr/local/Qt-5.5.0/mkspecs/common/gcc-base-mac.conf */,
8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.5.0/mkspecs/common/clang.conf */,
F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.5.0/mkspecs/common/clang-mac.conf */,
D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.5.0/mkspecs/qconfig.pri */,
ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth.pri */,
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth_private.pri */,
BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bootstrap_private.pri */,
CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_clucene_private.pri */,
77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent.pri */,
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent_private.pri */,
7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core.pri */,
5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core_private.pri */,
7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative.pri */,
89863CCAF1D29037AE95755D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative_private.pri */,
F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer.pri */,
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer_private.pri */,
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designercomponents_private.pri */,
360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio.pri */,
4C6C71914B1926119120DACD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio_private.pri */,
23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui.pri */,
D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui_private.pri */,
FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help.pri */,
D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help_private.pri */,
A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras.pri */,
33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras_private.pri */,
D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia.pri */,
E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia_private.pri */,
28BD0D10214709D95B161E24 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets.pri */,
D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */,
293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network.pri */,
382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network_private.pri */,
8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc.pri */,
B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc_private.pri */,
5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl.pri */,
E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl_private.pri */,
E432DA897A5F027987342E8F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions.pri */,
5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions_private.pri */,
8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_platformsupport_private.pri */,
F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning.pri */,
E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning_private.pri */,
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport.pri */,
D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport_private.pri */,
B382B645B34234E451AE5D94 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml.pri */,
6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml_private.pri */,
4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */,
DF8188E30892A4654B984221 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest.pri */,
ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest_private.pri */,
5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */,
16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick.pri */,
8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick_private.pri */,
82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickparticles_private.pri */,
D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets.pri */,
B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */,
CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script.pri */,
C505A18319B9B63C63877858 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script_private.pri */,
CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools.pri */,
A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools_private.pri */,
85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors.pri */,
BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors_private.pri */,
BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport.pri */,
311004331A04F3D69C98643C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport_private.pri */,
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql.pri */,
075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql_private.pri */,
ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg.pri */,
8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg_private.pri */,
DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib.pri */,
8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib_private.pri */,
E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools.pri */,
B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools_private.pri */,
8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets.pri */,
87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets_private.pri */,
A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets.pri */,
8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets_private.pri */,
AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml.pri */,
E37365B4489B4918BEBB707D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml_private.pri */,
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns.pri */,
F9BEAA743A908603687DA204 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */,
D5141F795670589C8CC41CBC /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */,
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfcamera.pri */,
F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */,
AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcocoa.pri */,
EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */,
111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdds.pri */,
3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */,
2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */,
EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qicns.pri */,
C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qico.pri */,
45DB132B756499D4DF38430E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qjp2.pri */,
B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qminimal.pri */,
F0A58515945747E36783CC21 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */,
B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */,
EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */,
3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */,
946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmng.pri */,
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qoffscreen.pri */,
9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qqt7engine.pri */,
B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsqlite.pri */,
F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvg.pri */,
CFFBE05DB004895080314289 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvgicon.pri */,
247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */,
87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */,
24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */,
060A694B42A4555240009936 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtga.pri */,
BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtiff.pri */,
B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */,
74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */,
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */,
AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */,
8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */,
892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */,
A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */,
346287C9E754E7C458153F03 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwbmp.pri */,
B26239063A068F800A2C95F4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwebp.pri */,
63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.5.0/mkspecs/macx-clang/qmake.conf */,
85061B1DA49D125991117950 /* /usr/local/Qt-5.5.0/mkspecs/macx-xcode/qmake.conf */,
AB745978DF0F41D1801ABDA6 /* .qmake.stash */,
);
name = "Supporting Files";
@@ -432,6 +435,7 @@
AF39DD055C3EF8226FBE929D /* Frameworks */ = {
isa = PBXGroup;
children = (
07D795491B5544B200DE9598 /* qtpcre */,
AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */,
DFD7912080BC557230093752 /* ApplicationServices.framework */,
9742F24EE18EA44D52824F1E /* CoreServices.framework */,
@@ -516,7 +520,7 @@
6DB9C3763D02B1415CD9D565 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0610;
LastUpgradeCheck = 0640;
};
buildConfigurationList = DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "MetaLang" */;
compatibilityVersion = "Xcode 3.2";
@@ -603,6 +607,7 @@
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = "";
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
@@ -611,25 +616,25 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = (
../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore,
../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore,
../../Libraries/QtStatic/qtbase/include,
"/usr/local/Qt-5.4.0/include",
"/usr/local/Qt-5.4.0/include/QtGui",
"/usr/local/Qt-5.4.0/include/QtCore",
"/usr/local/Qt-5.5.0/include",
"/usr/local/Qt-5.5.0/include/QtGui",
"/usr/local/Qt-5.5.0/include/QtCore",
GeneratedFiles/Debug,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers,
"/usr/local/Qt-5.4.0/mkspecs/macx-clang",
"/usr/local/Qt-5.5.0/mkspecs/macx-clang",
);
INFOPLIST_FILE = Lang.plist;
INSTALL_DIR = ../Mac/ReleaseLang/;
LDPLUSPLUS = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++";
LIBRARY_SEARCH_PATHS = (
/System/Library/Frameworks/,
"/usr/local/Qt-5.4.0/lib",
"/usr/local/Qt-5.4.0/plugins/platforms",
"/usr/local/Qt-5.4.0/plugins/imageformats",
"/usr/local/Qt-5.5.0/lib",
"/usr/local/Qt-5.5.0/plugins/platforms",
"/usr/local/Qt-5.5.0/plugins/imageformats",
);
MACOSX_DEPLOYMENT_TARGET = 10.7;
OBJROOT = ./../Mac/ReleaseIntermediateLang;
@@ -658,10 +663,10 @@
OTHER_LDFLAGS = (
"-headerpad_max_install_names",
"-stdlib=libc++",
"-L/usr/local/Qt-5.4.0/lib",
"-L/usr/local/Qt-5.4.0/plugins/platforms",
"-L/usr/local/Qt-5.5.0/lib",
"-L/usr/local/Qt-5.5.0/plugins/platforms",
"-lcups",
"-L/usr/local/Qt-5.4.0/plugins/imageformats",
"-L/usr/local/Qt-5.5.0/plugins/imageformats",
"-lz",
"-lm",
);
@@ -691,6 +696,7 @@
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = "";
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -700,25 +706,25 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = (
../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore,
../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore,
../../Libraries/QtStatic/qtbase/include,
"/usr/local/Qt-5.4.0/include",
"/usr/local/Qt-5.4.0/include/QtGui",
"/usr/local/Qt-5.4.0/include/QtCore",
"/usr/local/Qt-5.5.0/include",
"/usr/local/Qt-5.5.0/include/QtGui",
"/usr/local/Qt-5.5.0/include/QtCore",
GeneratedFiles/Debug,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers,
"/usr/local/Qt-5.4.0/mkspecs/macx-clang",
"/usr/local/Qt-5.5.0/mkspecs/macx-clang",
);
INFOPLIST_FILE = Lang.plist;
INSTALL_DIR = ../Mac/DebugLang/;
LDPLUSPLUS = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++";
LIBRARY_SEARCH_PATHS = (
/System/Library/Frameworks/,
"/usr/local/Qt-5.4.0/lib",
"/usr/local/Qt-5.4.0/plugins/platforms",
"/usr/local/Qt-5.4.0/plugins/imageformats",
"/usr/local/Qt-5.5.0/lib",
"/usr/local/Qt-5.5.0/plugins/platforms",
"/usr/local/Qt-5.5.0/plugins/imageformats",
);
MACOSX_DEPLOYMENT_TARGET = 10.7;
OBJROOT = ./../Mac/DebugIntermediateLang;
@@ -748,10 +754,10 @@
OTHER_LDFLAGS = (
"-headerpad_max_install_names",
"-stdlib=libc++",
"-L/usr/local/Qt-5.4.0/lib",
"-L/usr/local/Qt-5.4.0/plugins/platforms",
"-L/usr/local/Qt-5.5.0/lib",
"-L/usr/local/Qt-5.5.0/plugins/platforms",
"-lcups",
"-L/usr/local/Qt-5.4.0/plugins/imageformats",
"-L/usr/local/Qt-5.5.0/plugins/imageformats",
"-lz",
"-lm",
);
@@ -769,15 +775,15 @@
COPY_PHASE_STRIP = YES;
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
HEADER_SEARCH_PATHS = (
./../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui,
./../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore,
./../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui,
./../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore,
./../../Libraries/QtStatic/qtbase/include,
"/usr/local/Qt-5.4.0/include",
"/usr/local/Qt-5.4.0/include/QtGui",
"/usr/local/Qt-5.4.0/include/QtCore",
"/usr/local/Qt-5.5.0/include",
"/usr/local/Qt-5.5.0/include/QtGui",
"/usr/local/Qt-5.5.0/include/QtCore",
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers,
"/usr/local/Qt-5.4.0/mkspecs/macx-clang",
"/usr/local/Qt-5.5.0/mkspecs/macx-clang",
);
INSTALL_DIR = ../Mac/ReleaseLang/;
PRODUCT_NAME = MetaLang;
@@ -795,15 +801,15 @@
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
HEADER_SEARCH_PATHS = (
./../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui,
./../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore,
./../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui,
./../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore,
./../../Libraries/QtStatic/qtbase/include,
"/usr/local/Qt-5.4.0/include",
"/usr/local/Qt-5.4.0/include/QtGui",
"/usr/local/Qt-5.4.0/include/QtCore",
"/usr/local/Qt-5.5.0/include",
"/usr/local/Qt-5.5.0/include/QtGui",
"/usr/local/Qt-5.5.0/include/QtCore",
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers,
"/usr/local/Qt-5.4.0/mkspecs/macx-clang",
"/usr/local/Qt-5.5.0/mkspecs/macx-clang",
);
INSTALL_DIR = ../Mac/DebugLang/;
PRODUCT_NAME = MetaLang;

View File

@@ -1,25 +1,25 @@
#############################################################################
# Makefile for building: ../Mac/DebugLang/MetaLang.app/Contents/MacOS/MetaLang
# Generated by qmake (3.0) (Qt 5.4.0)
# Generated by qmake (3.0) (Qt 5.5.0)
# Project: MetaLang.pro
# Template: app
# Command: /usr/local/Qt-5.4.0/bin/qmake -spec macx-xcode -o MetaLang.xcodeproj/project.pbxproj MetaLang.pro
# Command: /usr/local/Qt-5.5.0/bin/qmake -spec macx-xcode -o MetaLang.xcodeproj/project.pbxproj MetaLang.pro
#############################################################################
MAKEFILE = project.pbxproj
MOC = /usr/local/Qt-5.4.0/bin/moc
UIC =
MOC = /usr/local/Qt-5.5.0/bin/moc
UIC =
LEX = flex
LEXFLAGS =
LEXFLAGS =
YACC = yacc
YACCFLAGS = -d
DEFINES = -D_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB
INCPATH = -I/usr/local/Qt-5.4.0/mkspecs/macx-clang -I. -I../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui -I../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore -I../../Libraries/QtStatic/qtbase/include -I/usr/local/Qt-5.4.0/include -I/usr/local/Qt-5.4.0/include/QtGui -I/usr/local/Qt-5.4.0/include/QtCore -IGeneratedFiles/Debug -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers
INCPATH = -I/usr/local/Qt-5.5.0/mkspecs/macx-clang -I. -I../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui -I../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore -I../../Libraries/QtStatic/qtbase/include -I/usr/local/Qt-5.5.0/include -I/usr/local/Qt-5.5.0/include/QtGui -I/usr/local/Qt-5.5.0/include/QtCore -IGeneratedFiles/Debug -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers
DEL_FILE = rm -f
MOVE = mv -f
IMAGES =
IMAGES =
PARSERS =
preprocess: $(PARSERS) compilers
clean preprocess_clean: parser_clean compiler_clean
@@ -52,7 +52,7 @@ GeneratedFiles/Debug/moc_genlang.cpp: ../../Libraries/QtStatic/qtbase/include/Qt
../../Libraries/QtStatic/qtbase/include/QtCore/QCoreApplication \
../../Libraries/QtStatic/qtbase/include/QtGui/QGuiApplication \
SourceFiles/_other/genlang.h
/usr/local/Qt-5.4.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.4.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.4.0/include/QtGui/5.4.0/QtGui -I/usr/local/Qt-5.4.0/include/QtCore/5.4.0/QtCore -I/usr/local/Qt-5.4.0/include -I/usr/local/Qt-5.4.0/include/QtGui -I/usr/local/Qt-5.4.0/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/_other/genlang.h -o GeneratedFiles/Debug/moc_genlang.cpp
/usr/local/Qt-5.5.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.0/include/QtGui/5.5.0/QtGui -I/usr/local/Qt-5.5.0/include/QtCore/5.5.0/QtCore -I/usr/local/Qt-5.5.0/include -I/usr/local/Qt-5.5.0/include/QtGui -I/usr/local/Qt-5.5.0/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/_other/genlang.h -o GeneratedFiles/Debug/moc_genlang.cpp
compiler_moc_source_make_all:
compiler_moc_source_clean:
@@ -64,5 +64,5 @@ compiler_yacc_impl_make_all:
compiler_yacc_impl_clean:
compiler_lex_make_all:
compiler_lex_clean:
compiler_clean: compiler_moc_header_clean
compiler_clean: compiler_moc_header_clean

View File

@@ -27,7 +27,7 @@ HEADERS += \
./SourceFiles/_other/msmain.h \
./SourceFiles/_other/genstyles.h \
INCLUDEPATH += ./../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui\
./../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore\
INCLUDEPATH += ./../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui\
./../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore\
./../../Libraries/QtStatic/qtbase/include\

View File

@@ -126,7 +126,7 @@
<SubSystem>Console</SubSystem>
<OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>$(QTDIR)\lib;$(QTDIR)\plugins;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;imm32.lib;winmm.lib;qtmaind.lib;glu32.lib;opengl32.lib;Qt5Cored.lib;Qt5Guid.lib;qtharfbuzzngd.lib;Qt5Widgetsd.lib;Qt5Networkd.lib;Qt5PlatformSupportd.lib;platforms\qwindowsd.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;imm32.lib;winmm.lib;qtmaind.lib;glu32.lib;opengl32.lib;Qt5Cored.lib;Qt5Guid.lib;qtharfbuzzngd.lib;qtpcred.lib;qtfreetyped.lib;Qt5Widgetsd.lib;Qt5Networkd.lib;Qt5PlatformSupportd.lib;platforms\qwindowsd.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(IntDir)$(TargetName).pdb</ProgramDatabaseFile>
<ProfileGuidedDatabase>$(IntDir)$(TargetName).pgd</ProfileGuidedDatabase>
@@ -145,7 +145,7 @@
<SubSystem>Console</SubSystem>
<OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>$(QTDIR)\lib;$(QTDIR)\plugins;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;qtmain.lib;opengl32.lib;imm32.lib;winmm.lib;Qt5Core.lib;Qt5Gui.lib;qtharfbuzzng.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;qtmain.lib;opengl32.lib;imm32.lib;winmm.lib;Qt5Core.lib;Qt5Gui.lib;qtharfbuzzng.lib;qtpcre.lib;qtfreetype.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
@@ -162,7 +162,7 @@
<SubSystem>Console</SubSystem>
<OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>$(QTDIR)\lib;$(QTDIR)\plugins;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;qtmain.lib;opengl32.lib;imm32.lib;winmm.lib;Qt5Core.lib;Qt5Gui.lib;qtharfbuzzng.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;qtmain.lib;opengl32.lib;imm32.lib;winmm.lib;Qt5Core.lib;Qt5Gui.lib;qtharfbuzzng.lib;qtpcre.lib;qtfreetype.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>

View File

@@ -22,6 +22,7 @@
/* End PBXAggregateTarget section */
/* Begin PBXBuildFile section */
07D7954A1B5544B200DE9598 /* qtpcre in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 07D795491B5544B200DE9598 /* qtpcre */; };
1A681B886F50EE30FBE62B4B /* Qt5PrintSupport in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = DBF506D10449BFABD45B82DA /* Qt5PrintSupport */; };
1BB705CDB741E2B7450201A5 /* Cocoa.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */; };
328FD74542F6E2C873EE4D4B /* ApplicationServices.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = DFD7912080BC557230093752 /* ApplicationServices.framework */; };
@@ -63,160 +64,161 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
04391BE7A8B9D811E255100A /* Qt5Gui */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Gui; path = "/usr/local/Qt-5.4.0/lib/libQt5Gui$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
060A694B42A4555240009936 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtga.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtga.pri"; sourceTree = "<absolute>"; };
075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql_private.pri"; sourceTree = "<absolute>"; };
0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.4.0/mkspecs/common/unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/unix.conf"; sourceTree = "<absolute>"; };
04391BE7A8B9D811E255100A /* Qt5Gui */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Gui; path = "/usr/local/Qt-5.5.0/lib/libQt5Gui$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
060A694B42A4555240009936 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtga.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtga.pri"; sourceTree = "<absolute>"; };
075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql_private.pri"; sourceTree = "<absolute>"; };
07D795491B5544B200DE9598 /* qtpcre */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtpcre; path = "usr/local/Qt-5.5.0/lib/libqtpcre$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<group>"; };
0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.5.0/mkspecs/common/unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/unix.conf"; sourceTree = "<absolute>"; };
10F719DFC6D0B05605ED1C16 /* MetaStyle.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = MetaStyle.pro; sourceTree = "<absolute>"; };
111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdds.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdds.pri"; sourceTree = "<absolute>"; };
16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick.pri"; sourceTree = "<absolute>"; };
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfcamera.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfcamera.pri"; sourceTree = "<absolute>"; };
23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui.pri"; sourceTree = "<absolute>"; };
2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qgenericbearer.pri"; sourceTree = "<absolute>"; };
247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri"; sourceTree = "<absolute>"; };
24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri"; sourceTree = "<absolute>"; };
28BD0D10214709D95B161E24 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets.pri"; sourceTree = "<absolute>"; };
293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network.pri"; sourceTree = "<absolute>"; };
111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdds.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdds.pri"; sourceTree = "<absolute>"; };
16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick.pri"; sourceTree = "<absolute>"; };
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfcamera.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfcamera.pri"; sourceTree = "<absolute>"; };
23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui.pri"; sourceTree = "<absolute>"; };
2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qgenericbearer.pri"; sourceTree = "<absolute>"; };
247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri"; sourceTree = "<absolute>"; };
24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri"; sourceTree = "<absolute>"; };
28BD0D10214709D95B161E24 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets.pri"; sourceTree = "<absolute>"; };
293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network.pri"; sourceTree = "<absolute>"; };
2CBD32689B153445ED220FAE /* MetaStyle.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MetaStyle.app; sourceTree = BUILT_PRODUCTS_DIR; };
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth_private.pri"; sourceTree = "<absolute>"; };
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns.pri"; sourceTree = "<absolute>"; };
311004331A04F3D69C98643C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport_private.pri"; sourceTree = "<absolute>"; };
31120EDB269DFF13E1D49847 /* qicns */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qicns; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqicns$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras_private.pri"; sourceTree = "<absolute>"; };
346287C9E754E7C458153F03 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwbmp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwbmp.pri"; sourceTree = "<absolute>"; };
360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio.pri"; sourceTree = "<absolute>"; };
3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri"; sourceTree = "<absolute>"; };
382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network_private.pri"; sourceTree = "<absolute>"; };
3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri"; sourceTree = "<absolute>"; };
45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.4.0/mkspecs/common/gcc-base.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/gcc-base.conf"; sourceTree = "<absolute>"; };
45DB132B756499D4DF38430E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qjp2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qjp2.pri"; sourceTree = "<absolute>"; };
4689C06178B60B84E7F3A3B7 /* Qt5Widgets */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Widgets; path = "/usr/local/Qt-5.4.0/lib/libQt5Widgets$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
4C6C71914B1926119120DACD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio_private.pri"; sourceTree = "<absolute>"; };
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth_private.pri"; sourceTree = "<absolute>"; };
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns.pri"; sourceTree = "<absolute>"; };
311004331A04F3D69C98643C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport_private.pri"; sourceTree = "<absolute>"; };
31120EDB269DFF13E1D49847 /* qicns */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qicns; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqicns$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras_private.pri"; sourceTree = "<absolute>"; };
346287C9E754E7C458153F03 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwbmp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwbmp.pri"; sourceTree = "<absolute>"; };
360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio.pri"; sourceTree = "<absolute>"; };
3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri"; sourceTree = "<absolute>"; };
382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network_private.pri"; sourceTree = "<absolute>"; };
3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri"; sourceTree = "<absolute>"; };
45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.5.0/mkspecs/common/gcc-base.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/gcc-base.conf"; sourceTree = "<absolute>"; };
45DB132B756499D4DF38430E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qjp2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qjp2.pri"; sourceTree = "<absolute>"; };
4689C06178B60B84E7F3A3B7 /* Qt5Widgets */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Widgets; path = "/usr/local/Qt-5.5.0/lib/libQt5Widgets$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
4C6C71914B1926119120DACD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio_private.pri"; sourceTree = "<absolute>"; };
4D765E1B1EA6C757220C63E7 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmldevtools_private.pri"; sourceTree = "<absolute>"; };
5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions_private.pri"; sourceTree = "<absolute>"; };
5A80A1907B6CFFB524C1E57D /* Qt5Core */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Core; path = "/usr/local/Qt-5.4.0/lib/libQt5Core$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri"; sourceTree = "<absolute>"; };
5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl.pri"; sourceTree = "<absolute>"; };
5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core_private.pri"; sourceTree = "<absolute>"; };
6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml_private.pri"; sourceTree = "<absolute>"; };
63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.4.0/mkspecs/macx-clang/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/macx-clang/qmake.conf"; sourceTree = "<absolute>"; };
669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.4.0/mkspecs/common/shell-unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/shell-unix.conf"; sourceTree = "<absolute>"; };
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designercomponents_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designercomponents_private.pri"; sourceTree = "<absolute>"; };
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport.pri"; sourceTree = "<absolute>"; };
6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.4.0/mkspecs/qdevice.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/qdevice.pri"; sourceTree = "<absolute>"; };
4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmldevtools_private.pri"; sourceTree = "<absolute>"; };
5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions_private.pri"; sourceTree = "<absolute>"; };
5A80A1907B6CFFB524C1E57D /* Qt5Core */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Core; path = "/usr/local/Qt-5.5.0/lib/libQt5Core$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri"; sourceTree = "<absolute>"; };
5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl.pri"; sourceTree = "<absolute>"; };
5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core_private.pri"; sourceTree = "<absolute>"; };
6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml_private.pri"; sourceTree = "<absolute>"; };
63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.5.0/mkspecs/macx-clang/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/macx-clang/qmake.conf"; sourceTree = "<absolute>"; };
669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.5.0/mkspecs/common/shell-unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/shell-unix.conf"; sourceTree = "<absolute>"; };
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designercomponents_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designercomponents_private.pri"; sourceTree = "<absolute>"; };
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport.pri"; sourceTree = "<absolute>"; };
6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.5.0/mkspecs/qdevice.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/qdevice.pri"; sourceTree = "<absolute>"; };
6FF81CB4A724CE1990CEE99A /* msmain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = msmain.h; path = SourceFiles/_other/msmain.h; sourceTree = "<absolute>"; };
74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri"; sourceTree = "<absolute>"; };
77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent.pri"; sourceTree = "<absolute>"; };
7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative.pri"; sourceTree = "<absolute>"; };
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer_private.pri"; sourceTree = "<absolute>"; };
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent_private.pri"; sourceTree = "<absolute>"; };
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql.pri"; sourceTree = "<absolute>"; };
7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core.pri"; sourceTree = "<absolute>"; };
817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.4.0/mkspecs/common/macx.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/macx.conf"; sourceTree = "<absolute>"; };
82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickparticles_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickparticles_private.pri"; sourceTree = "<absolute>"; };
83D37373949868693FB7816D /* qmng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qmng; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqmng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
85061B1DA49D125991117950 /* /usr/local/Qt-5.4.0/mkspecs/macx-xcode/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/macx-xcode/qmake.conf"; sourceTree = "<absolute>"; };
85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors.pri"; sourceTree = "<absolute>"; };
74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri"; sourceTree = "<absolute>"; };
77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent.pri"; sourceTree = "<absolute>"; };
7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative.pri"; sourceTree = "<absolute>"; };
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer_private.pri"; sourceTree = "<absolute>"; };
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent_private.pri"; sourceTree = "<absolute>"; };
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql.pri"; sourceTree = "<absolute>"; };
7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core.pri"; sourceTree = "<absolute>"; };
817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.5.0/mkspecs/common/macx.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/macx.conf"; sourceTree = "<absolute>"; };
82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickparticles_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickparticles_private.pri"; sourceTree = "<absolute>"; };
83D37373949868693FB7816D /* qmng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qmng; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqmng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
85061B1DA49D125991117950 /* /usr/local/Qt-5.5.0/mkspecs/macx-xcode/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/macx-xcode/qmake.conf"; sourceTree = "<absolute>"; };
85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors.pri"; sourceTree = "<absolute>"; };
861D2151FB56504EB72BDB6E /* moc_genstyles.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_genstyles.cpp; path = GeneratedFiles/Debug/moc_genstyles.cpp; sourceTree = "<absolute>"; };
87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri"; sourceTree = "<absolute>"; };
87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets_private.pri"; sourceTree = "<absolute>"; };
8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib_private.pri"; sourceTree = "<absolute>"; };
892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri"; sourceTree = "<absolute>"; };
89863CCAF1D29037AE95755D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative_private.pri"; sourceTree = "<absolute>"; };
8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc.pri"; sourceTree = "<absolute>"; };
8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri"; sourceTree = "<absolute>"; };
8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick_private.pri"; sourceTree = "<absolute>"; };
8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.4.0/mkspecs/common/clang.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/clang.conf"; sourceTree = "<absolute>"; };
8CF51323544B886B8F4A2232 /* qwbmp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwbmp; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqwbmp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri"; sourceTree = "<absolute>"; };
87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets_private.pri"; sourceTree = "<absolute>"; };
8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib_private.pri"; sourceTree = "<absolute>"; };
892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri"; sourceTree = "<absolute>"; };
89863CCAF1D29037AE95755D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative_private.pri"; sourceTree = "<absolute>"; };
8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc.pri"; sourceTree = "<absolute>"; };
8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri"; sourceTree = "<absolute>"; };
8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick_private.pri"; sourceTree = "<absolute>"; };
8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.5.0/mkspecs/common/clang.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/clang.conf"; sourceTree = "<absolute>"; };
8CF51323544B886B8F4A2232 /* qwbmp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwbmp; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqwbmp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
8D9815BDB5BD9F90D2BC05C5 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = "<absolute>"; };
8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg_private.pri"; sourceTree = "<absolute>"; };
8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets_private.pri"; sourceTree = "<absolute>"; };
8F500B5166907B6D9A7C3E3D /* qico */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qico; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqico$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_platformsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_platformsupport_private.pri"; sourceTree = "<absolute>"; };
8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets.pri"; sourceTree = "<absolute>"; };
946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmng.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmng.pri"; sourceTree = "<absolute>"; };
8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg_private.pri"; sourceTree = "<absolute>"; };
8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets_private.pri"; sourceTree = "<absolute>"; };
8F500B5166907B6D9A7C3E3D /* qico */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qico; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqico$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_platformsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_platformsupport_private.pri"; sourceTree = "<absolute>"; };
8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets.pri"; sourceTree = "<absolute>"; };
946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmng.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmng.pri"; sourceTree = "<absolute>"; };
9742F24EE18EA44D52824F1E /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qqt7engine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qqt7engine.pri"; sourceTree = "<absolute>"; };
9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qqt7engine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qqt7engine.pri"; sourceTree = "<absolute>"; };
9DFF62A901D70814B8A323D4 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets.pri"; sourceTree = "<absolute>"; };
A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets.pri"; sourceTree = "<absolute>"; };
A1A67BEAA744704B29168D39 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
A35D133D7C0EFB42FA85D194 /* genstyles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = genstyles.h; path = SourceFiles/_other/genstyles.h; sourceTree = "<absolute>"; };
A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri"; sourceTree = "<absolute>"; };
A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools_private.pri"; sourceTree = "<absolute>"; };
A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras.pri"; sourceTree = "<absolute>"; };
A9E30FA27827990C5F182223 /* /usr/local/Qt-5.4.0/mkspecs/common/gcc-base-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/gcc-base-mac.conf"; sourceTree = "<absolute>"; };
AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml.pri"; sourceTree = "<absolute>"; };
AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri"; sourceTree = "<absolute>"; };
A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri"; sourceTree = "<absolute>"; };
A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools_private.pri"; sourceTree = "<absolute>"; };
A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras.pri"; sourceTree = "<absolute>"; };
A9E30FA27827990C5F182223 /* /usr/local/Qt-5.5.0/mkspecs/common/gcc-base-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/gcc-base-mac.conf"; sourceTree = "<absolute>"; };
AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml.pri"; sourceTree = "<absolute>"; };
AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri"; sourceTree = "<absolute>"; };
AB745978DF0F41D1801ABDA6 /* .qmake.stash */ = {isa = PBXFileReference; lastKnownFileType = file; path = .qmake.stash; sourceTree = "<absolute>"; };
ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest_private.pri"; sourceTree = "<absolute>"; };
ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth.pri"; sourceTree = "<absolute>"; };
ADC6308023253CEA51F86E21 /* qwebp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwebp; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqwebp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg.pri"; sourceTree = "<absolute>"; };
ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest_private.pri"; sourceTree = "<absolute>"; };
ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth.pri"; sourceTree = "<absolute>"; };
ADC6308023253CEA51F86E21 /* qwebp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwebp; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqwebp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg.pri"; sourceTree = "<absolute>"; };
AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcocoa.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcocoa.pri"; sourceTree = "<absolute>"; };
B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsqlite.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsqlite.pri"; sourceTree = "<absolute>"; };
B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets_private.pri"; sourceTree = "<absolute>"; };
B26239063A068F800A2C95F4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwebp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwebp.pri"; sourceTree = "<absolute>"; };
B382B645B34234E451AE5D94 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml.pri"; sourceTree = "<absolute>"; };
B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools_private.pri"; sourceTree = "<absolute>"; };
B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc_private.pri"; sourceTree = "<absolute>"; };
B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qminimal.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qminimal.pri"; sourceTree = "<absolute>"; };
B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri"; sourceTree = "<absolute>"; };
B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri"; sourceTree = "<absolute>"; };
BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtiff.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtiff.pri"; sourceTree = "<absolute>"; };
BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bootstrap_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bootstrap_private.pri"; sourceTree = "<absolute>"; };
BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors_private.pri"; sourceTree = "<absolute>"; };
BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport.pri"; sourceTree = "<absolute>"; };
C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qico.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qico.pri"; sourceTree = "<absolute>"; };
C505A18319B9B63C63877858 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script_private.pri"; sourceTree = "<absolute>"; };
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri"; sourceTree = "<absolute>"; };
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qoffscreen.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qoffscreen.pri"; sourceTree = "<absolute>"; };
CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools.pri"; sourceTree = "<absolute>"; };
CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_clucene_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_clucene_private.pri"; sourceTree = "<absolute>"; };
CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script.pri"; sourceTree = "<absolute>"; };
CFFBE05DB004895080314289 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvgicon.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvgicon.pri"; sourceTree = "<absolute>"; };
D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport_private.pri"; sourceTree = "<absolute>"; };
D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri"; sourceTree = "<absolute>"; };
D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia.pri"; sourceTree = "<absolute>"; };
D3D1BE0BEA3AEE0551AD39AC /* qdds */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qdds; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqdds$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcocoa.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcocoa.pri"; sourceTree = "<absolute>"; };
B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsqlite.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsqlite.pri"; sourceTree = "<absolute>"; };
B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets_private.pri"; sourceTree = "<absolute>"; };
B26239063A068F800A2C95F4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwebp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwebp.pri"; sourceTree = "<absolute>"; };
B382B645B34234E451AE5D94 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml.pri"; sourceTree = "<absolute>"; };
B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools_private.pri"; sourceTree = "<absolute>"; };
B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc_private.pri"; sourceTree = "<absolute>"; };
B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qminimal.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qminimal.pri"; sourceTree = "<absolute>"; };
B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri"; sourceTree = "<absolute>"; };
B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri"; sourceTree = "<absolute>"; };
BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtiff.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtiff.pri"; sourceTree = "<absolute>"; };
BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bootstrap_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bootstrap_private.pri"; sourceTree = "<absolute>"; };
BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors_private.pri"; sourceTree = "<absolute>"; };
BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport.pri"; sourceTree = "<absolute>"; };
C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qico.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qico.pri"; sourceTree = "<absolute>"; };
C505A18319B9B63C63877858 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script_private.pri"; sourceTree = "<absolute>"; };
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri"; sourceTree = "<absolute>"; };
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qoffscreen.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qoffscreen.pri"; sourceTree = "<absolute>"; };
CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools.pri"; sourceTree = "<absolute>"; };
CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_clucene_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_clucene_private.pri"; sourceTree = "<absolute>"; };
CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script.pri"; sourceTree = "<absolute>"; };
CFFBE05DB004895080314289 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvgicon.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvgicon.pri"; sourceTree = "<absolute>"; };
D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport_private.pri"; sourceTree = "<absolute>"; };
D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri"; sourceTree = "<absolute>"; };
D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia.pri"; sourceTree = "<absolute>"; };
D3D1BE0BEA3AEE0551AD39AC /* qdds */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qdds; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqdds$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D4B32C2222F82AC56BADEB21 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.4.0/mkspecs/qconfig.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/qconfig.pri"; sourceTree = "<absolute>"; };
D5141F795670589C8CC41CBC /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri"; sourceTree = "<absolute>"; };
D53D8E6A188E05078A114294 /* qcocoa */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qcocoa; path = "/usr/local/Qt-5.4.0/plugins/platforms/libqcocoa$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D6193B79CECC9DD0142D1200 /* qtharfbuzzng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtharfbuzzng; path = "/usr/local/Qt-5.4.0/lib/libqtharfbuzzng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help_private.pri"; sourceTree = "<absolute>"; };
D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui_private.pri"; sourceTree = "<absolute>"; };
D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets.pri"; sourceTree = "<absolute>"; };
DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib.pri"; sourceTree = "<absolute>"; };
DBF506D10449BFABD45B82DA /* Qt5PrintSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PrintSupport; path = "/usr/local/Qt-5.4.0/lib/libQt5PrintSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
DCEFD9167C239650120B0145 /* qtga */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtga; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqtga$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
DF8188E30892A4654B984221 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest.pri"; sourceTree = "<absolute>"; };
D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.5.0/mkspecs/qconfig.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/qconfig.pri"; sourceTree = "<absolute>"; };
D5141F795670589C8CC41CBC /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri"; sourceTree = "<absolute>"; };
D53D8E6A188E05078A114294 /* qcocoa */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qcocoa; path = "/usr/local/Qt-5.5.0/plugins/platforms/libqcocoa$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D6193B79CECC9DD0142D1200 /* qtharfbuzzng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtharfbuzzng; path = "/usr/local/Qt-5.5.0/lib/libqtharfbuzzng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help_private.pri"; sourceTree = "<absolute>"; };
D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui_private.pri"; sourceTree = "<absolute>"; };
D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets.pri"; sourceTree = "<absolute>"; };
DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib.pri"; sourceTree = "<absolute>"; };
DBF506D10449BFABD45B82DA /* Qt5PrintSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PrintSupport; path = "/usr/local/Qt-5.5.0/lib/libQt5PrintSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
DCEFD9167C239650120B0145 /* qtga */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtga; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqtga$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
DF8188E30892A4654B984221 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest.pri"; sourceTree = "<absolute>"; };
DFD7912080BC557230093752 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl_private.pri"; sourceTree = "<absolute>"; };
E37365B4489B4918BEBB707D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml_private.pri"; sourceTree = "<absolute>"; };
E432DA897A5F027987342E8F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions.pri"; sourceTree = "<absolute>"; };
E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools.pri"; sourceTree = "<absolute>"; };
E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning_private.pri"; sourceTree = "<absolute>"; };
E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PlatformSupport; path = "/usr/local/Qt-5.4.0/lib/libQt5PlatformSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia_private.pri"; sourceTree = "<absolute>"; };
EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri"; sourceTree = "<absolute>"; };
EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qicns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qicns.pri"; sourceTree = "<absolute>"; };
EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri"; sourceTree = "<absolute>"; };
EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.4.0/mkspecs/common/mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/mac.conf"; sourceTree = "<absolute>"; };
E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl_private.pri"; sourceTree = "<absolute>"; };
E37365B4489B4918BEBB707D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml_private.pri"; sourceTree = "<absolute>"; };
E432DA897A5F027987342E8F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions.pri"; sourceTree = "<absolute>"; };
E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools.pri"; sourceTree = "<absolute>"; };
E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning_private.pri"; sourceTree = "<absolute>"; };
E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PlatformSupport; path = "/usr/local/Qt-5.5.0/lib/libQt5PlatformSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia_private.pri"; sourceTree = "<absolute>"; };
EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri"; sourceTree = "<absolute>"; };
EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qicns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qicns.pri"; sourceTree = "<absolute>"; };
EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri"; sourceTree = "<absolute>"; };
EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.5.0/mkspecs/common/mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/mac.conf"; sourceTree = "<absolute>"; };
EF5243ECB3132AF2796F09DF /* msmain.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = msmain.cpp; path = SourceFiles/_other/msmain.cpp; sourceTree = "<absolute>"; };
F0681BC551FC8A2B132FC646 /* qjp2 */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qjp2; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqjp2$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
F0A58515945747E36783CC21 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri"; sourceTree = "<absolute>"; };
F2453BA07315EB9F34F1CD57 /* qtiff */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtiff; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqtiff$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer.pri"; sourceTree = "<absolute>"; };
F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.4.0/mkspecs/common/clang-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/clang-mac.conf"; sourceTree = "<absolute>"; };
F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri"; sourceTree = "<absolute>"; };
F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning.pri"; sourceTree = "<absolute>"; };
F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvg.pri"; sourceTree = "<absolute>"; };
F0681BC551FC8A2B132FC646 /* qjp2 */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qjp2; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqjp2$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
F0A58515945747E36783CC21 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri"; sourceTree = "<absolute>"; };
F2453BA07315EB9F34F1CD57 /* qtiff */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtiff; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqtiff$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer.pri"; sourceTree = "<absolute>"; };
F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.5.0/mkspecs/common/clang-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/clang-mac.conf"; sourceTree = "<absolute>"; };
F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri"; sourceTree = "<absolute>"; };
F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning.pri"; sourceTree = "<absolute>"; };
F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvg.pri"; sourceTree = "<absolute>"; };
F8BC976260B6D624F23C32D6 /* genstyles.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = genstyles.cpp; path = SourceFiles/_other/genstyles.cpp; sourceTree = "<absolute>"; };
F9BEAA743A908603687DA204 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri"; sourceTree = "<absolute>"; };
F9BEAA743A908603687DA204 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri"; sourceTree = "<absolute>"; };
FCC237CA5AD60B9BA4447615 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help.pri"; sourceTree = "<absolute>"; };
FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help.pri"; sourceTree = "<absolute>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -248,6 +250,7 @@
F4D3747C3A03B25EDC9057BB /* qwebp in Link Binary With Libraries */,
9F33AC0693BC81B27D8F518D /* Qt5Gui in Link Binary With Libraries */,
8D33FE22B9BBADC7FA46C15B /* qtharfbuzzng in Link Binary With Libraries */,
07D7954A1B5544B200DE9598 /* qtpcre in Link Binary With Libraries */,
B9ADD90C014EA3FBE351DF03 /* Qt5Core in Link Binary With Libraries */,
);
name = "Link Binary With Libraries";
@@ -295,127 +298,127 @@
isa = PBXGroup;
children = (
10F719DFC6D0B05605ED1C16 /* MetaStyle.pro */,
6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.4.0/mkspecs/qdevice.pri */,
669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.4.0/mkspecs/common/shell-unix.conf */,
0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.4.0/mkspecs/common/unix.conf */,
EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.4.0/mkspecs/common/mac.conf */,
817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.4.0/mkspecs/common/macx.conf */,
45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.4.0/mkspecs/common/gcc-base.conf */,
A9E30FA27827990C5F182223 /* /usr/local/Qt-5.4.0/mkspecs/common/gcc-base-mac.conf */,
8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.4.0/mkspecs/common/clang.conf */,
F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.4.0/mkspecs/common/clang-mac.conf */,
D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.4.0/mkspecs/qconfig.pri */,
ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth.pri */,
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth_private.pri */,
BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bootstrap_private.pri */,
CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_clucene_private.pri */,
77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent.pri */,
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent_private.pri */,
7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core.pri */,
5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core_private.pri */,
7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative.pri */,
89863CCAF1D29037AE95755D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative_private.pri */,
F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer.pri */,
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer_private.pri */,
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designercomponents_private.pri */,
360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio.pri */,
4C6C71914B1926119120DACD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio_private.pri */,
23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui.pri */,
D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui_private.pri */,
FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help.pri */,
D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help_private.pri */,
A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras.pri */,
33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras_private.pri */,
D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia.pri */,
E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia_private.pri */,
28BD0D10214709D95B161E24 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets.pri */,
D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */,
293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network.pri */,
382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network_private.pri */,
8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc.pri */,
B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc_private.pri */,
5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl.pri */,
E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl_private.pri */,
E432DA897A5F027987342E8F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions.pri */,
5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions_private.pri */,
8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_platformsupport_private.pri */,
F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning.pri */,
E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning_private.pri */,
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport.pri */,
D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport_private.pri */,
B382B645B34234E451AE5D94 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml.pri */,
6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml_private.pri */,
4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */,
DF8188E30892A4654B984221 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest.pri */,
ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest_private.pri */,
5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */,
16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick.pri */,
8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick_private.pri */,
82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickparticles_private.pri */,
D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets.pri */,
B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */,
CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script.pri */,
C505A18319B9B63C63877858 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script_private.pri */,
CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools.pri */,
A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools_private.pri */,
85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors.pri */,
BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors_private.pri */,
BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport.pri */,
311004331A04F3D69C98643C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport_private.pri */,
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql.pri */,
075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql_private.pri */,
ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg.pri */,
8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg_private.pri */,
DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib.pri */,
8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib_private.pri */,
E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools.pri */,
B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools_private.pri */,
8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets.pri */,
87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets_private.pri */,
A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets.pri */,
8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets_private.pri */,
AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml.pri */,
E37365B4489B4918BEBB707D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml_private.pri */,
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns.pri */,
F9BEAA743A908603687DA204 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */,
D5141F795670589C8CC41CBC /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */,
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfcamera.pri */,
F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */,
AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcocoa.pri */,
EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */,
111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdds.pri */,
3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */,
2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */,
EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qicns.pri */,
C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qico.pri */,
45DB132B756499D4DF38430E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qjp2.pri */,
B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qminimal.pri */,
F0A58515945747E36783CC21 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */,
B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */,
EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */,
3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */,
946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmng.pri */,
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qoffscreen.pri */,
9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qqt7engine.pri */,
B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsqlite.pri */,
F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvg.pri */,
CFFBE05DB004895080314289 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvgicon.pri */,
247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */,
87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */,
24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */,
060A694B42A4555240009936 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtga.pri */,
BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtiff.pri */,
B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */,
74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */,
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */,
AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */,
8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */,
892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */,
A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */,
346287C9E754E7C458153F03 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwbmp.pri */,
B26239063A068F800A2C95F4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwebp.pri */,
63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.4.0/mkspecs/macx-clang/qmake.conf */,
85061B1DA49D125991117950 /* /usr/local/Qt-5.4.0/mkspecs/macx-xcode/qmake.conf */,
6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.5.0/mkspecs/qdevice.pri */,
669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.5.0/mkspecs/common/shell-unix.conf */,
0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.5.0/mkspecs/common/unix.conf */,
EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.5.0/mkspecs/common/mac.conf */,
817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.5.0/mkspecs/common/macx.conf */,
45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.5.0/mkspecs/common/gcc-base.conf */,
A9E30FA27827990C5F182223 /* /usr/local/Qt-5.5.0/mkspecs/common/gcc-base-mac.conf */,
8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.5.0/mkspecs/common/clang.conf */,
F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.5.0/mkspecs/common/clang-mac.conf */,
D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.5.0/mkspecs/qconfig.pri */,
ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth.pri */,
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth_private.pri */,
BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bootstrap_private.pri */,
CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_clucene_private.pri */,
77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent.pri */,
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent_private.pri */,
7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core.pri */,
5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core_private.pri */,
7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative.pri */,
89863CCAF1D29037AE95755D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative_private.pri */,
F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer.pri */,
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer_private.pri */,
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designercomponents_private.pri */,
360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio.pri */,
4C6C71914B1926119120DACD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio_private.pri */,
23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui.pri */,
D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui_private.pri */,
FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help.pri */,
D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help_private.pri */,
A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras.pri */,
33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras_private.pri */,
D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia.pri */,
E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia_private.pri */,
28BD0D10214709D95B161E24 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets.pri */,
D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */,
293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network.pri */,
382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network_private.pri */,
8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc.pri */,
B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc_private.pri */,
5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl.pri */,
E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl_private.pri */,
E432DA897A5F027987342E8F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions.pri */,
5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions_private.pri */,
8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_platformsupport_private.pri */,
F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning.pri */,
E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning_private.pri */,
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport.pri */,
D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport_private.pri */,
B382B645B34234E451AE5D94 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml.pri */,
6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml_private.pri */,
4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */,
DF8188E30892A4654B984221 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest.pri */,
ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest_private.pri */,
5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */,
16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick.pri */,
8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick_private.pri */,
82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickparticles_private.pri */,
D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets.pri */,
B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */,
CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script.pri */,
C505A18319B9B63C63877858 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script_private.pri */,
CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools.pri */,
A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools_private.pri */,
85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors.pri */,
BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors_private.pri */,
BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport.pri */,
311004331A04F3D69C98643C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport_private.pri */,
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql.pri */,
075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql_private.pri */,
ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg.pri */,
8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg_private.pri */,
DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib.pri */,
8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib_private.pri */,
E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools.pri */,
B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools_private.pri */,
8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets.pri */,
87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets_private.pri */,
A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets.pri */,
8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets_private.pri */,
AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml.pri */,
E37365B4489B4918BEBB707D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml_private.pri */,
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns.pri */,
F9BEAA743A908603687DA204 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */,
D5141F795670589C8CC41CBC /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */,
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfcamera.pri */,
F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */,
AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcocoa.pri */,
EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */,
111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdds.pri */,
3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */,
2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */,
EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qicns.pri */,
C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qico.pri */,
45DB132B756499D4DF38430E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qjp2.pri */,
B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qminimal.pri */,
F0A58515945747E36783CC21 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */,
B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */,
EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */,
3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */,
946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmng.pri */,
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qoffscreen.pri */,
9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qqt7engine.pri */,
B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsqlite.pri */,
F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvg.pri */,
CFFBE05DB004895080314289 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvgicon.pri */,
247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */,
87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */,
24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */,
060A694B42A4555240009936 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtga.pri */,
BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtiff.pri */,
B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */,
74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */,
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */,
AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */,
8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */,
892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */,
A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */,
346287C9E754E7C458153F03 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwbmp.pri */,
B26239063A068F800A2C95F4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwebp.pri */,
63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.5.0/mkspecs/macx-clang/qmake.conf */,
85061B1DA49D125991117950 /* /usr/local/Qt-5.5.0/mkspecs/macx-xcode/qmake.conf */,
AB745978DF0F41D1801ABDA6 /* .qmake.stash */,
);
name = "Supporting Files";
@@ -432,6 +435,7 @@
AF39DD055C3EF8226FBE929D /* Frameworks */ = {
isa = PBXGroup;
children = (
07D795491B5544B200DE9598 /* qtpcre */,
AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */,
DFD7912080BC557230093752 /* ApplicationServices.framework */,
9742F24EE18EA44D52824F1E /* CoreServices.framework */,
@@ -612,25 +616,25 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = (
../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore,
../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore,
../../Libraries/QtStatic/qtbase/include,
"/usr/local/Qt-5.4.0/include",
"/usr/local/Qt-5.4.0/include/QtGui",
"/usr/local/Qt-5.4.0/include/QtCore",
"/usr/local/Qt-5.5.0/include",
"/usr/local/Qt-5.5.0/include/QtGui",
"/usr/local/Qt-5.5.0/include/QtCore",
GeneratedFiles/Debug,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers,
"/usr/local/Qt-5.4.0/mkspecs/macx-clang",
"/usr/local/Qt-5.5.0/mkspecs/macx-clang",
);
INFOPLIST_FILE = Style.plist;
INSTALL_DIR = ../Mac/ReleaseStyle/;
LDPLUSPLUS = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++";
LIBRARY_SEARCH_PATHS = (
/System/Library/Frameworks/,
"/usr/local/Qt-5.4.0/lib",
"/usr/local/Qt-5.4.0/plugins/platforms",
"/usr/local/Qt-5.4.0/plugins/imageformats",
"/usr/local/Qt-5.5.0/lib",
"/usr/local/Qt-5.5.0/plugins/platforms",
"/usr/local/Qt-5.5.0/plugins/imageformats",
);
MACOSX_DEPLOYMENT_TARGET = 10.7;
OBJROOT = ./../Mac/ReleaseIntermediateStyle;
@@ -659,10 +663,10 @@
OTHER_LDFLAGS = (
"-headerpad_max_install_names",
"-stdlib=libc++",
"-L/usr/local/Qt-5.4.0/lib",
"-L/usr/local/Qt-5.4.0/plugins/platforms",
"-L/usr/local/Qt-5.5.0/lib",
"-L/usr/local/Qt-5.5.0/plugins/platforms",
"-lcups",
"-L/usr/local/Qt-5.4.0/plugins/imageformats",
"-L/usr/local/Qt-5.5.0/plugins/imageformats",
"-lz",
"-lm",
);
@@ -702,25 +706,25 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = (
../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore,
../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore,
../../Libraries/QtStatic/qtbase/include,
"/usr/local/Qt-5.4.0/include",
"/usr/local/Qt-5.4.0/include/QtGui",
"/usr/local/Qt-5.4.0/include/QtCore",
"/usr/local/Qt-5.5.0/include",
"/usr/local/Qt-5.5.0/include/QtGui",
"/usr/local/Qt-5.5.0/include/QtCore",
GeneratedFiles/Debug,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers,
"/usr/local/Qt-5.4.0/mkspecs/macx-clang",
"/usr/local/Qt-5.5.0/mkspecs/macx-clang",
);
INFOPLIST_FILE = Style.plist;
INSTALL_DIR = ../Mac/DebugStyle/;
LDPLUSPLUS = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++";
LIBRARY_SEARCH_PATHS = (
/System/Library/Frameworks/,
"/usr/local/Qt-5.4.0/lib",
"/usr/local/Qt-5.4.0/plugins/platforms",
"/usr/local/Qt-5.4.0/plugins/imageformats",
"/usr/local/Qt-5.5.0/lib",
"/usr/local/Qt-5.5.0/plugins/platforms",
"/usr/local/Qt-5.5.0/plugins/imageformats",
);
MACOSX_DEPLOYMENT_TARGET = 10.7;
OBJROOT = ./../Mac/DebugIntermediateStyle;
@@ -750,10 +754,10 @@
OTHER_LDFLAGS = (
"-headerpad_max_install_names",
"-stdlib=libc++",
"-L/usr/local/Qt-5.4.0/lib",
"-L/usr/local/Qt-5.4.0/plugins/platforms",
"-L/usr/local/Qt-5.5.0/lib",
"-L/usr/local/Qt-5.5.0/plugins/platforms",
"-lcups",
"-L/usr/local/Qt-5.4.0/plugins/imageformats",
"-L/usr/local/Qt-5.5.0/plugins/imageformats",
"-lz",
"-lm",
);
@@ -771,15 +775,15 @@
COPY_PHASE_STRIP = YES;
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
HEADER_SEARCH_PATHS = (
./../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui,
./../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore,
./../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui,
./../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore,
./../../Libraries/QtStatic/qtbase/include,
"/usr/local/Qt-5.4.0/include",
"/usr/local/Qt-5.4.0/include/QtGui",
"/usr/local/Qt-5.4.0/include/QtCore",
"/usr/local/Qt-5.5.0/include",
"/usr/local/Qt-5.5.0/include/QtGui",
"/usr/local/Qt-5.5.0/include/QtCore",
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers,
"/usr/local/Qt-5.4.0/mkspecs/macx-clang",
"/usr/local/Qt-5.5.0/mkspecs/macx-clang",
);
INSTALL_DIR = ./../Mac/ReleaseStyle/;
PRODUCT_NAME = MetaStyle;
@@ -797,15 +801,15 @@
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
HEADER_SEARCH_PATHS = (
./../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui,
./../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore,
./../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui,
./../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore,
./../../Libraries/QtStatic/qtbase/include,
"/usr/local/Qt-5.4.0/include",
"/usr/local/Qt-5.4.0/include/QtGui",
"/usr/local/Qt-5.4.0/include/QtCore",
"/usr/local/Qt-5.5.0/include",
"/usr/local/Qt-5.5.0/include/QtGui",
"/usr/local/Qt-5.5.0/include/QtCore",
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers,
"/usr/local/Qt-5.4.0/mkspecs/macx-clang",
"/usr/local/Qt-5.5.0/mkspecs/macx-clang",
);
INSTALL_DIR = ./../Mac/DebugStyle/;
PRODUCT_NAME = MetaStyle;

View File

@@ -1,25 +1,25 @@
#############################################################################
# Makefile for building: ../Mac/DebugStyle/MetaStyle.app/Contents/MacOS/MetaStyle
# Generated by qmake (3.0) (Qt 5.4.0)
# Generated by qmake (3.0) (Qt 5.5.0)
# Project: MetaStyle.pro
# Template: app
# Command: /usr/local/Qt-5.4.0/bin/qmake -spec macx-xcode -o MetaStyle.xcodeproj/project.pbxproj MetaStyle.pro
# Command: /usr/local/Qt-5.5.0/bin/qmake -spec macx-xcode -o MetaStyle.xcodeproj/project.pbxproj MetaStyle.pro
#############################################################################
MAKEFILE = project.pbxproj
MOC = /usr/local/Qt-5.4.0/bin/moc
UIC =
MOC = /usr/local/Qt-5.5.0/bin/moc
UIC =
LEX = flex
LEXFLAGS =
LEXFLAGS =
YACC = yacc
YACCFLAGS = -d
DEFINES = -D_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB
INCPATH = -I/usr/local/Qt-5.4.0/mkspecs/macx-clang -I. -I../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui -I../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore -I../../Libraries/QtStatic/qtbase/include -I/usr/local/Qt-5.4.0/include -I/usr/local/Qt-5.4.0/include/QtGui -I/usr/local/Qt-5.4.0/include/QtCore -IGeneratedFiles/Debug -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers
INCPATH = -I/usr/local/Qt-5.5.0/mkspecs/macx-clang -I. -I../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui -I../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore -I../../Libraries/QtStatic/qtbase/include -I/usr/local/Qt-5.5.0/include -I/usr/local/Qt-5.5.0/include/QtGui -I/usr/local/Qt-5.5.0/include/QtCore -IGeneratedFiles/Debug -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers
DEL_FILE = rm -f
MOVE = mv -f
IMAGES =
IMAGES =
PARSERS =
preprocess: $(PARSERS) compilers
clean preprocess_clean: parser_clean compiler_clean
@@ -51,7 +51,7 @@ GeneratedFiles/Debug/moc_genstyles.cpp: ../../Libraries/QtStatic/qtbase/include/
../../Libraries/QtStatic/qtbase/include/QtGui/QGuiApplication \
../../Libraries/QtStatic/qtbase/include/QtGui/QPainter \
SourceFiles/_other/genstyles.h
/usr/local/Qt-5.4.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.4.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.4.0/include/QtGui/5.4.0/QtGui -I/usr/local/Qt-5.4.0/include/QtCore/5.4.0/QtCore -I/usr/local/Qt-5.4.0/include -I/usr/local/Qt-5.4.0/include/QtGui -I/usr/local/Qt-5.4.0/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/_other/genstyles.h -o GeneratedFiles/Debug/moc_genstyles.cpp
/usr/local/Qt-5.5.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.5.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.5.0/include/QtGui/5.5.0/QtGui -I/usr/local/Qt-5.5.0/include/QtCore/5.5.0/QtCore -I/usr/local/Qt-5.5.0/include -I/usr/local/Qt-5.5.0/include/QtGui -I/usr/local/Qt-5.5.0/include/QtCore -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1/backward -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/5.1/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include SourceFiles/_other/genstyles.h -o GeneratedFiles/Debug/moc_genstyles.cpp
compiler_moc_source_make_all:
compiler_moc_source_clean:
@@ -63,5 +63,5 @@ compiler_yacc_impl_make_all:
compiler_yacc_impl_clean:
compiler_lex_make_all:
compiler_lex_clean:
compiler_clean: compiler_moc_header_clean
compiler_clean: compiler_moc_header_clean

View File

@@ -9,7 +9,7 @@
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.ddesktop.${PRODUCT_NAME:rfc1034identifier}</string>
<string>com.tdesktop.$(PRODUCT_NAME:rfc1034identifier)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>

View File

@@ -35,8 +35,8 @@ unix {
}
}
INCLUDEPATH += ./../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui\
./../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore\
INCLUDEPATH += ./../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui\
./../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore\
./../../Libraries/QtStatic/qtbase/include
LIBS += -lcrypto -lssl -lz -llzma

View File

@@ -113,7 +113,7 @@
<SubSystem>Console</SubSystem>
<OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>.\..\..\Libraries\lzma\C\Util\LzmaLib\Release;$(QTDIR)\lib;.\..\..\Libraries\zlib-1.2.8\contrib\vstudio\vc11\x86\ZlibStatRelease;.\..\..\Libraries\OpenSSL-Win32\lib\VC\static;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;qtmain.lib;zlibstat.lib;libeay32MT.lib;Qt5Core.lib;LzmaLib.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;qtmain.lib;zlibstat.lib;libeay32MT.lib;Qt5Core.lib;qtpcre.lib;LzmaLib.lib;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateDebugInformation>false</GenerateDebugInformation>
<ImageHasSafeExceptionHandlers>
</ImageHasSafeExceptionHandlers>

View File

@@ -21,6 +21,7 @@
/* End PBXAggregateTarget section */
/* Begin PBXBuildFile section */
07D7954A1B5544B200DE9598 /* qtpcre in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 07D795491B5544B200DE9598 /* qtpcre */; };
1A681B886F50EE30FBE62B4B /* Qt5PrintSupport in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = DBF506D10449BFABD45B82DA /* Qt5PrintSupport */; };
1BB705CDB741E2B7450201A5 /* Cocoa.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */; };
328FD74542F6E2C873EE4D4B /* ApplicationServices.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = DFD7912080BC557230093752 /* ApplicationServices.framework */; };
@@ -60,157 +61,158 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
04391BE7A8B9D811E255100A /* Qt5Gui */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Gui; path = "/usr/local/Qt-5.4.0/lib/libQt5Gui$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
060A694B42A4555240009936 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtga.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtga.pri"; sourceTree = "<absolute>"; };
075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql_private.pri"; sourceTree = "<absolute>"; };
0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.4.0/mkspecs/common/unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/unix.conf"; sourceTree = "<absolute>"; };
111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdds.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdds.pri"; sourceTree = "<absolute>"; };
16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick.pri"; sourceTree = "<absolute>"; };
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfcamera.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfcamera.pri"; sourceTree = "<absolute>"; };
23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui.pri"; sourceTree = "<absolute>"; };
2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qgenericbearer.pri"; sourceTree = "<absolute>"; };
247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri"; sourceTree = "<absolute>"; };
24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri"; sourceTree = "<absolute>"; };
28BD0D10214709D95B161E24 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets.pri"; sourceTree = "<absolute>"; };
293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network.pri"; sourceTree = "<absolute>"; };
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth_private.pri"; sourceTree = "<absolute>"; };
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns.pri"; sourceTree = "<absolute>"; };
311004331A04F3D69C98643C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport_private.pri"; sourceTree = "<absolute>"; };
31120EDB269DFF13E1D49847 /* qicns */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qicns; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqicns$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras_private.pri"; sourceTree = "<absolute>"; };
346287C9E754E7C458153F03 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwbmp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwbmp.pri"; sourceTree = "<absolute>"; };
360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio.pri"; sourceTree = "<absolute>"; };
3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri"; sourceTree = "<absolute>"; };
382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network_private.pri"; sourceTree = "<absolute>"; };
3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri"; sourceTree = "<absolute>"; };
45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.4.0/mkspecs/common/gcc-base.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/gcc-base.conf"; sourceTree = "<absolute>"; };
45DB132B756499D4DF38430E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qjp2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qjp2.pri"; sourceTree = "<absolute>"; };
4689C06178B60B84E7F3A3B7 /* Qt5Widgets */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Widgets; path = "/usr/local/Qt-5.4.0/lib/libQt5Widgets$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
4C6C71914B1926119120DACD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio_private.pri"; sourceTree = "<absolute>"; };
04391BE7A8B9D811E255100A /* Qt5Gui */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Gui; path = "/usr/local/Qt-5.5.0/lib/libQt5Gui$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
060A694B42A4555240009936 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtga.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtga.pri"; sourceTree = "<absolute>"; };
075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql_private.pri"; sourceTree = "<absolute>"; };
07D795491B5544B200DE9598 /* qtpcre */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtpcre; path = "usr/local/Qt-5.5.0/lib/libqtpcre$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<group>"; };
0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.5.0/mkspecs/common/unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/unix.conf"; sourceTree = "<absolute>"; };
111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdds.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdds.pri"; sourceTree = "<absolute>"; };
16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick.pri"; sourceTree = "<absolute>"; };
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfcamera.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfcamera.pri"; sourceTree = "<absolute>"; };
23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui.pri"; sourceTree = "<absolute>"; };
2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qgenericbearer.pri"; sourceTree = "<absolute>"; };
247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri"; sourceTree = "<absolute>"; };
24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri"; sourceTree = "<absolute>"; };
28BD0D10214709D95B161E24 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets.pri"; sourceTree = "<absolute>"; };
293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network.pri"; sourceTree = "<absolute>"; };
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth_private.pri"; sourceTree = "<absolute>"; };
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns.pri"; sourceTree = "<absolute>"; };
311004331A04F3D69C98643C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport_private.pri"; sourceTree = "<absolute>"; };
31120EDB269DFF13E1D49847 /* qicns */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qicns; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqicns$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras_private.pri"; sourceTree = "<absolute>"; };
346287C9E754E7C458153F03 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwbmp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwbmp.pri"; sourceTree = "<absolute>"; };
360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio.pri"; sourceTree = "<absolute>"; };
3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri"; sourceTree = "<absolute>"; };
382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network_private.pri"; sourceTree = "<absolute>"; };
3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri"; sourceTree = "<absolute>"; };
45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.5.0/mkspecs/common/gcc-base.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/gcc-base.conf"; sourceTree = "<absolute>"; };
45DB132B756499D4DF38430E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qjp2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qjp2.pri"; sourceTree = "<absolute>"; };
4689C06178B60B84E7F3A3B7 /* Qt5Widgets */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Widgets; path = "/usr/local/Qt-5.5.0/lib/libQt5Widgets$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
4C6C71914B1926119120DACD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio_private.pri"; sourceTree = "<absolute>"; };
4D765E1B1EA6C757220C63E7 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmldevtools_private.pri"; sourceTree = "<absolute>"; };
4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmldevtools_private.pri"; sourceTree = "<absolute>"; };
5520A59148EC5EC44EF0D3CD /* Packer.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = Packer.pro; sourceTree = "<absolute>"; };
5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions_private.pri"; sourceTree = "<absolute>"; };
5A80A1907B6CFFB524C1E57D /* Qt5Core */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Core; path = "/usr/local/Qt-5.4.0/lib/libQt5Core$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions_private.pri"; sourceTree = "<absolute>"; };
5A80A1907B6CFFB524C1E57D /* Qt5Core */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Core; path = "/usr/local/Qt-5.5.0/lib/libQt5Core$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
5AA25EFD83BC060B26945285 /* packer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = packer.h; path = SourceFiles/_other/packer.h; sourceTree = "<absolute>"; };
5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri"; sourceTree = "<absolute>"; };
5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl.pri"; sourceTree = "<absolute>"; };
5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core_private.pri"; sourceTree = "<absolute>"; };
6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml_private.pri"; sourceTree = "<absolute>"; };
63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.4.0/mkspecs/macx-clang/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/macx-clang/qmake.conf"; sourceTree = "<absolute>"; };
669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.4.0/mkspecs/common/shell-unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/shell-unix.conf"; sourceTree = "<absolute>"; };
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designercomponents_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designercomponents_private.pri"; sourceTree = "<absolute>"; };
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport.pri"; sourceTree = "<absolute>"; };
6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.4.0/mkspecs/qdevice.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/qdevice.pri"; sourceTree = "<absolute>"; };
74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri"; sourceTree = "<absolute>"; };
77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent.pri"; sourceTree = "<absolute>"; };
7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative.pri"; sourceTree = "<absolute>"; };
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer_private.pri"; sourceTree = "<absolute>"; };
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent_private.pri"; sourceTree = "<absolute>"; };
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql.pri"; sourceTree = "<absolute>"; };
7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core.pri"; sourceTree = "<absolute>"; };
817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.4.0/mkspecs/common/macx.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/macx.conf"; sourceTree = "<absolute>"; };
82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickparticles_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickparticles_private.pri"; sourceTree = "<absolute>"; };
83D37373949868693FB7816D /* qmng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qmng; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqmng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
85061B1DA49D125991117950 /* /usr/local/Qt-5.4.0/mkspecs/macx-xcode/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/macx-xcode/qmake.conf"; sourceTree = "<absolute>"; };
85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors.pri"; sourceTree = "<absolute>"; };
87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri"; sourceTree = "<absolute>"; };
87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets_private.pri"; sourceTree = "<absolute>"; };
8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib_private.pri"; sourceTree = "<absolute>"; };
892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri"; sourceTree = "<absolute>"; };
89863CCAF1D29037AE95755D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative_private.pri"; sourceTree = "<absolute>"; };
8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc.pri"; sourceTree = "<absolute>"; };
8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri"; sourceTree = "<absolute>"; };
8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick_private.pri"; sourceTree = "<absolute>"; };
8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.4.0/mkspecs/common/clang.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/clang.conf"; sourceTree = "<absolute>"; };
8CF51323544B886B8F4A2232 /* qwbmp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwbmp; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqwbmp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri"; sourceTree = "<absolute>"; };
5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl.pri"; sourceTree = "<absolute>"; };
5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core_private.pri"; sourceTree = "<absolute>"; };
6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml_private.pri"; sourceTree = "<absolute>"; };
63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.5.0/mkspecs/macx-clang/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/macx-clang/qmake.conf"; sourceTree = "<absolute>"; };
669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.5.0/mkspecs/common/shell-unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/shell-unix.conf"; sourceTree = "<absolute>"; };
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designercomponents_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designercomponents_private.pri"; sourceTree = "<absolute>"; };
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport.pri"; sourceTree = "<absolute>"; };
6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.5.0/mkspecs/qdevice.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/qdevice.pri"; sourceTree = "<absolute>"; };
74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri"; sourceTree = "<absolute>"; };
77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent.pri"; sourceTree = "<absolute>"; };
7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative.pri"; sourceTree = "<absolute>"; };
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer_private.pri"; sourceTree = "<absolute>"; };
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent_private.pri"; sourceTree = "<absolute>"; };
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql.pri"; sourceTree = "<absolute>"; };
7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core.pri"; sourceTree = "<absolute>"; };
817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.5.0/mkspecs/common/macx.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/macx.conf"; sourceTree = "<absolute>"; };
82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickparticles_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickparticles_private.pri"; sourceTree = "<absolute>"; };
83D37373949868693FB7816D /* qmng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qmng; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqmng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
85061B1DA49D125991117950 /* /usr/local/Qt-5.5.0/mkspecs/macx-xcode/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/macx-xcode/qmake.conf"; sourceTree = "<absolute>"; };
85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors.pri"; sourceTree = "<absolute>"; };
87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri"; sourceTree = "<absolute>"; };
87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets_private.pri"; sourceTree = "<absolute>"; };
8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib_private.pri"; sourceTree = "<absolute>"; };
892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri"; sourceTree = "<absolute>"; };
89863CCAF1D29037AE95755D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative_private.pri"; sourceTree = "<absolute>"; };
8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc.pri"; sourceTree = "<absolute>"; };
8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri"; sourceTree = "<absolute>"; };
8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick_private.pri"; sourceTree = "<absolute>"; };
8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.5.0/mkspecs/common/clang.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/clang.conf"; sourceTree = "<absolute>"; };
8CF51323544B886B8F4A2232 /* qwbmp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwbmp; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqwbmp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
8D9815BDB5BD9F90D2BC05C5 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = "<absolute>"; };
8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg_private.pri"; sourceTree = "<absolute>"; };
8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets_private.pri"; sourceTree = "<absolute>"; };
8F500B5166907B6D9A7C3E3D /* qico */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qico; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqico$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_platformsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_platformsupport_private.pri"; sourceTree = "<absolute>"; };
8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets.pri"; sourceTree = "<absolute>"; };
946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmng.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmng.pri"; sourceTree = "<absolute>"; };
8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg_private.pri"; sourceTree = "<absolute>"; };
8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets_private.pri"; sourceTree = "<absolute>"; };
8F500B5166907B6D9A7C3E3D /* qico */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qico; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqico$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_platformsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_platformsupport_private.pri"; sourceTree = "<absolute>"; };
8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets.pri"; sourceTree = "<absolute>"; };
946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmng.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmng.pri"; sourceTree = "<absolute>"; };
9742F24EE18EA44D52824F1E /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qqt7engine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qqt7engine.pri"; sourceTree = "<absolute>"; };
9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qqt7engine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qqt7engine.pri"; sourceTree = "<absolute>"; };
9DFF62A901D70814B8A323D4 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets.pri"; sourceTree = "<absolute>"; };
A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets.pri"; sourceTree = "<absolute>"; };
A1A67BEAA744704B29168D39 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri"; sourceTree = "<absolute>"; };
A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri"; sourceTree = "<absolute>"; };
A5588D4B50885E2A9CAA5505 /* Packer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Packer.app; sourceTree = BUILT_PRODUCTS_DIR; };
A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools_private.pri"; sourceTree = "<absolute>"; };
A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras.pri"; sourceTree = "<absolute>"; };
A9E30FA27827990C5F182223 /* /usr/local/Qt-5.4.0/mkspecs/common/gcc-base-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/gcc-base-mac.conf"; sourceTree = "<absolute>"; };
AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml.pri"; sourceTree = "<absolute>"; };
AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri"; sourceTree = "<absolute>"; };
A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools_private.pri"; sourceTree = "<absolute>"; };
A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras.pri"; sourceTree = "<absolute>"; };
A9E30FA27827990C5F182223 /* /usr/local/Qt-5.5.0/mkspecs/common/gcc-base-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/gcc-base-mac.conf"; sourceTree = "<absolute>"; };
AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml.pri"; sourceTree = "<absolute>"; };
AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri"; sourceTree = "<absolute>"; };
AB745978DF0F41D1801ABDA6 /* .qmake.stash */ = {isa = PBXFileReference; lastKnownFileType = file; path = .qmake.stash; sourceTree = "<absolute>"; };
ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest_private.pri"; sourceTree = "<absolute>"; };
ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth.pri"; sourceTree = "<absolute>"; };
ADC6308023253CEA51F86E21 /* qwebp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwebp; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqwebp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg.pri"; sourceTree = "<absolute>"; };
ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest_private.pri"; sourceTree = "<absolute>"; };
ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth.pri"; sourceTree = "<absolute>"; };
ADC6308023253CEA51F86E21 /* qwebp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwebp; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqwebp$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg.pri"; sourceTree = "<absolute>"; };
AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcocoa.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcocoa.pri"; sourceTree = "<absolute>"; };
B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsqlite.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsqlite.pri"; sourceTree = "<absolute>"; };
B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets_private.pri"; sourceTree = "<absolute>"; };
B26239063A068F800A2C95F4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwebp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwebp.pri"; sourceTree = "<absolute>"; };
B382B645B34234E451AE5D94 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml.pri"; sourceTree = "<absolute>"; };
B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools_private.pri"; sourceTree = "<absolute>"; };
B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc_private.pri"; sourceTree = "<absolute>"; };
B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qminimal.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qminimal.pri"; sourceTree = "<absolute>"; };
B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri"; sourceTree = "<absolute>"; };
B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri"; sourceTree = "<absolute>"; };
BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtiff.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtiff.pri"; sourceTree = "<absolute>"; };
BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bootstrap_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bootstrap_private.pri"; sourceTree = "<absolute>"; };
BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors_private.pri"; sourceTree = "<absolute>"; };
BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport.pri"; sourceTree = "<absolute>"; };
C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qico.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qico.pri"; sourceTree = "<absolute>"; };
C505A18319B9B63C63877858 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script_private.pri"; sourceTree = "<absolute>"; };
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri"; sourceTree = "<absolute>"; };
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qoffscreen.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qoffscreen.pri"; sourceTree = "<absolute>"; };
CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools.pri"; sourceTree = "<absolute>"; };
CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_clucene_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_clucene_private.pri"; sourceTree = "<absolute>"; };
CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script.pri"; sourceTree = "<absolute>"; };
CFFBE05DB004895080314289 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvgicon.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvgicon.pri"; sourceTree = "<absolute>"; };
D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport_private.pri"; sourceTree = "<absolute>"; };
D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri"; sourceTree = "<absolute>"; };
D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia.pri"; sourceTree = "<absolute>"; };
D3D1BE0BEA3AEE0551AD39AC /* qdds */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qdds; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqdds$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcocoa.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcocoa.pri"; sourceTree = "<absolute>"; };
B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsqlite.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsqlite.pri"; sourceTree = "<absolute>"; };
B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets_private.pri"; sourceTree = "<absolute>"; };
B26239063A068F800A2C95F4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwebp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwebp.pri"; sourceTree = "<absolute>"; };
B382B645B34234E451AE5D94 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml.pri"; sourceTree = "<absolute>"; };
B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools_private.pri"; sourceTree = "<absolute>"; };
B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc_private.pri"; sourceTree = "<absolute>"; };
B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qminimal.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qminimal.pri"; sourceTree = "<absolute>"; };
B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri"; sourceTree = "<absolute>"; };
B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri"; sourceTree = "<absolute>"; };
BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtiff.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtiff.pri"; sourceTree = "<absolute>"; };
BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bootstrap_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bootstrap_private.pri"; sourceTree = "<absolute>"; };
BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors_private.pri"; sourceTree = "<absolute>"; };
BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport.pri"; sourceTree = "<absolute>"; };
C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qico.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qico.pri"; sourceTree = "<absolute>"; };
C505A18319B9B63C63877858 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script_private.pri"; sourceTree = "<absolute>"; };
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri"; sourceTree = "<absolute>"; };
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qoffscreen.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qoffscreen.pri"; sourceTree = "<absolute>"; };
CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools.pri"; sourceTree = "<absolute>"; };
CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_clucene_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_clucene_private.pri"; sourceTree = "<absolute>"; };
CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script.pri"; sourceTree = "<absolute>"; };
CFFBE05DB004895080314289 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvgicon.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvgicon.pri"; sourceTree = "<absolute>"; };
D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport_private.pri"; sourceTree = "<absolute>"; };
D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri"; sourceTree = "<absolute>"; };
D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia.pri"; sourceTree = "<absolute>"; };
D3D1BE0BEA3AEE0551AD39AC /* qdds */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qdds; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqdds$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D4B32C2222F82AC56BADEB21 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.4.0/mkspecs/qconfig.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/qconfig.pri"; sourceTree = "<absolute>"; };
D5141F795670589C8CC41CBC /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri"; sourceTree = "<absolute>"; };
D53D8E6A188E05078A114294 /* qcocoa */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qcocoa; path = "/usr/local/Qt-5.4.0/plugins/platforms/libqcocoa$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D6193B79CECC9DD0142D1200 /* qtharfbuzzng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtharfbuzzng; path = "/usr/local/Qt-5.4.0/lib/libqtharfbuzzng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help_private.pri"; sourceTree = "<absolute>"; };
D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui_private.pri"; sourceTree = "<absolute>"; };
D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets.pri"; sourceTree = "<absolute>"; };
DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib.pri"; sourceTree = "<absolute>"; };
DBF506D10449BFABD45B82DA /* Qt5PrintSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PrintSupport; path = "/usr/local/Qt-5.4.0/lib/libQt5PrintSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
DCEFD9167C239650120B0145 /* qtga */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtga; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqtga$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
DF8188E30892A4654B984221 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest.pri"; sourceTree = "<absolute>"; };
D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.5.0/mkspecs/qconfig.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/qconfig.pri"; sourceTree = "<absolute>"; };
D5141F795670589C8CC41CBC /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri"; sourceTree = "<absolute>"; };
D53D8E6A188E05078A114294 /* qcocoa */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qcocoa; path = "/usr/local/Qt-5.5.0/plugins/platforms/libqcocoa$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D6193B79CECC9DD0142D1200 /* qtharfbuzzng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtharfbuzzng; path = "/usr/local/Qt-5.5.0/lib/libqtharfbuzzng$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help_private.pri"; sourceTree = "<absolute>"; };
D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui_private.pri"; sourceTree = "<absolute>"; };
D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets.pri"; sourceTree = "<absolute>"; };
DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib.pri"; sourceTree = "<absolute>"; };
DBF506D10449BFABD45B82DA /* Qt5PrintSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PrintSupport; path = "/usr/local/Qt-5.5.0/lib/libQt5PrintSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
DCEFD9167C239650120B0145 /* qtga */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtga; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqtga$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
DF8188E30892A4654B984221 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest.pri"; sourceTree = "<absolute>"; };
DFD7912080BC557230093752 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl_private.pri"; sourceTree = "<absolute>"; };
E37365B4489B4918BEBB707D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml_private.pri"; sourceTree = "<absolute>"; };
E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl_private.pri"; sourceTree = "<absolute>"; };
E37365B4489B4918BEBB707D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml_private.pri"; sourceTree = "<absolute>"; };
E3790AE49DBDB3F5EFA42FE1 /* packer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = packer.cpp; path = SourceFiles/_other/packer.cpp; sourceTree = "<absolute>"; };
E432DA897A5F027987342E8F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions.pri"; sourceTree = "<absolute>"; };
E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools.pri"; sourceTree = "<absolute>"; };
E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning_private.pri"; sourceTree = "<absolute>"; };
E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PlatformSupport; path = "/usr/local/Qt-5.4.0/lib/libQt5PlatformSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia_private.pri"; sourceTree = "<absolute>"; };
EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri"; sourceTree = "<absolute>"; };
EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qicns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qicns.pri"; sourceTree = "<absolute>"; };
EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri"; sourceTree = "<absolute>"; };
EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.4.0/mkspecs/common/mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/mac.conf"; sourceTree = "<absolute>"; };
F0681BC551FC8A2B132FC646 /* qjp2 */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qjp2; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqjp2$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
F0A58515945747E36783CC21 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri"; sourceTree = "<absolute>"; };
F2453BA07315EB9F34F1CD57 /* qtiff */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtiff; path = "/usr/local/Qt-5.4.0/plugins/imageformats/libqtiff$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer.pri"; sourceTree = "<absolute>"; };
F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.4.0/mkspecs/common/clang-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/common/clang-mac.conf"; sourceTree = "<absolute>"; };
F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri"; sourceTree = "<absolute>"; };
F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning.pri"; sourceTree = "<absolute>"; };
F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvg.pri"; sourceTree = "<absolute>"; };
F9BEAA743A908603687DA204 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri"; sourceTree = "<absolute>"; };
E432DA897A5F027987342E8F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions.pri"; sourceTree = "<absolute>"; };
E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools.pri"; sourceTree = "<absolute>"; };
E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning_private.pri"; sourceTree = "<absolute>"; };
E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PlatformSupport; path = "/usr/local/Qt-5.5.0/lib/libQt5PlatformSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia_private.pri"; sourceTree = "<absolute>"; };
EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri"; sourceTree = "<absolute>"; };
EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qicns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qicns.pri"; sourceTree = "<absolute>"; };
EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri"; sourceTree = "<absolute>"; };
EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.5.0/mkspecs/common/mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/mac.conf"; sourceTree = "<absolute>"; };
F0681BC551FC8A2B132FC646 /* qjp2 */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qjp2; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqjp2$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
F0A58515945747E36783CC21 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri"; sourceTree = "<absolute>"; };
F2453BA07315EB9F34F1CD57 /* qtiff */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtiff; path = "/usr/local/Qt-5.5.0/plugins/imageformats/libqtiff$(QT_LIBRARY_SUFFIX).a"; sourceTree = "<absolute>"; };
F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer.pri"; sourceTree = "<absolute>"; };
F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.5.0/mkspecs/common/clang-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/common/clang-mac.conf"; sourceTree = "<absolute>"; };
F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri"; sourceTree = "<absolute>"; };
F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning.pri"; sourceTree = "<absolute>"; };
F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvg.pri"; sourceTree = "<absolute>"; };
F9BEAA743A908603687DA204 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri"; sourceTree = "<absolute>"; };
FCC237CA5AD60B9BA4447615 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help.pri"; sourceTree = "<absolute>"; };
FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help.pri"; sourceTree = "<absolute>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -242,6 +244,7 @@
F4D3747C3A03B25EDC9057BB /* qwebp in Link Binary With Libraries */,
9F33AC0693BC81B27D8F518D /* Qt5Gui in Link Binary With Libraries */,
8D33FE22B9BBADC7FA46C15B /* qtharfbuzzng in Link Binary With Libraries */,
07D7954A1B5544B200DE9598 /* qtpcre in Link Binary With Libraries */,
B9ADD90C014EA3FBE351DF03 /* Qt5Core in Link Binary With Libraries */,
);
name = "Link Binary With Libraries";
@@ -279,127 +282,127 @@
isa = PBXGroup;
children = (
5520A59148EC5EC44EF0D3CD /* Packer.pro */,
6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.4.0/mkspecs/qdevice.pri */,
669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.4.0/mkspecs/common/shell-unix.conf */,
0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.4.0/mkspecs/common/unix.conf */,
EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.4.0/mkspecs/common/mac.conf */,
817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.4.0/mkspecs/common/macx.conf */,
45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.4.0/mkspecs/common/gcc-base.conf */,
A9E30FA27827990C5F182223 /* /usr/local/Qt-5.4.0/mkspecs/common/gcc-base-mac.conf */,
8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.4.0/mkspecs/common/clang.conf */,
F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.4.0/mkspecs/common/clang-mac.conf */,
D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.4.0/mkspecs/qconfig.pri */,
ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth.pri */,
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bluetooth_private.pri */,
BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_bootstrap_private.pri */,
CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_clucene_private.pri */,
77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent.pri */,
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_concurrent_private.pri */,
7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core.pri */,
5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_core_private.pri */,
7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative.pri */,
89863CCAF1D29037AE95755D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_declarative_private.pri */,
F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer.pri */,
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designer_private.pri */,
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_designercomponents_private.pri */,
360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio.pri */,
4C6C71914B1926119120DACD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_enginio_private.pri */,
23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui.pri */,
D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_gui_private.pri */,
FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help.pri */,
D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_help_private.pri */,
A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras.pri */,
33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_macextras_private.pri */,
D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia.pri */,
E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimedia_private.pri */,
28BD0D10214709D95B161E24 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets.pri */,
D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */,
293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network.pri */,
382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_network_private.pri */,
8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc.pri */,
B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_nfc_private.pri */,
5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl.pri */,
E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_opengl_private.pri */,
E432DA897A5F027987342E8F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions.pri */,
5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_openglextensions_private.pri */,
8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_platformsupport_private.pri */,
F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning.pri */,
E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_positioning_private.pri */,
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport.pri */,
D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_printsupport_private.pri */,
B382B645B34234E451AE5D94 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml.pri */,
6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qml_private.pri */,
4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */,
DF8188E30892A4654B984221 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest.pri */,
ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qmltest_private.pri */,
5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */,
16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick.pri */,
8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quick_private.pri */,
82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickparticles_private.pri */,
D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets.pri */,
B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */,
CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script.pri */,
C505A18319B9B63C63877858 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_script_private.pri */,
CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools.pri */,
A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_scripttools_private.pri */,
85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors.pri */,
BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sensors_private.pri */,
BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport.pri */,
311004331A04F3D69C98643C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_serialport_private.pri */,
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql.pri */,
075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_sql_private.pri */,
ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg.pri */,
8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_svg_private.pri */,
DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib.pri */,
8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_testlib_private.pri */,
E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools.pri */,
B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_uitools_private.pri */,
8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets.pri */,
87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_websockets_private.pri */,
A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets.pri */,
8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_widgets_private.pri */,
AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml.pri */,
E37365B4489B4918BEBB707D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xml_private.pri */,
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns.pri */,
F9BEAA743A908603687DA204 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */,
D5141F795670589C8CC41CBC /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */,
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfcamera.pri */,
F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */,
AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcocoa.pri */,
EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */,
111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdds.pri */,
3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */,
2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */,
EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qicns.pri */,
C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qico.pri */,
45DB132B756499D4DF38430E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qjp2.pri */,
B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qminimal.pri */,
F0A58515945747E36783CC21 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */,
B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */,
EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */,
3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */,
946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qmng.pri */,
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qoffscreen.pri */,
9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qqt7engine.pri */,
B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsqlite.pri */,
F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvg.pri */,
CFFBE05DB004895080314289 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qsvgicon.pri */,
247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */,
87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */,
24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */,
060A694B42A4555240009936 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtga.pri */,
BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtiff.pri */,
B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */,
74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */,
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */,
AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */,
8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */,
892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */,
A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */,
346287C9E754E7C458153F03 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwbmp.pri */,
B26239063A068F800A2C95F4 /* /usr/local/Qt-5.4.0/mkspecs/modules/qt_plugin_qwebp.pri */,
63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.4.0/mkspecs/macx-clang/qmake.conf */,
85061B1DA49D125991117950 /* /usr/local/Qt-5.4.0/mkspecs/macx-xcode/qmake.conf */,
6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.5.0/mkspecs/qdevice.pri */,
669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.5.0/mkspecs/common/shell-unix.conf */,
0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.5.0/mkspecs/common/unix.conf */,
EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.5.0/mkspecs/common/mac.conf */,
817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.5.0/mkspecs/common/macx.conf */,
45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.5.0/mkspecs/common/gcc-base.conf */,
A9E30FA27827990C5F182223 /* /usr/local/Qt-5.5.0/mkspecs/common/gcc-base-mac.conf */,
8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.5.0/mkspecs/common/clang.conf */,
F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.5.0/mkspecs/common/clang-mac.conf */,
D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.5.0/mkspecs/qconfig.pri */,
ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth.pri */,
2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bluetooth_private.pri */,
BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_bootstrap_private.pri */,
CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_clucene_private.pri */,
77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent.pri */,
7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_concurrent_private.pri */,
7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core.pri */,
5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_core_private.pri */,
7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative.pri */,
89863CCAF1D29037AE95755D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_declarative_private.pri */,
F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer.pri */,
7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designer_private.pri */,
69347C39E4D922E94D0860BF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_designercomponents_private.pri */,
360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio.pri */,
4C6C71914B1926119120DACD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_enginio_private.pri */,
23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui.pri */,
D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_gui_private.pri */,
FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help.pri */,
D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_help_private.pri */,
A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras.pri */,
33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_macextras_private.pri */,
D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia.pri */,
E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimedia_private.pri */,
28BD0D10214709D95B161E24 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets.pri */,
D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */,
293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network.pri */,
382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_network_private.pri */,
8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc.pri */,
B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_nfc_private.pri */,
5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl.pri */,
E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_opengl_private.pri */,
E432DA897A5F027987342E8F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions.pri */,
5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_openglextensions_private.pri */,
8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_platformsupport_private.pri */,
F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning.pri */,
E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_positioning_private.pri */,
6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport.pri */,
D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_printsupport_private.pri */,
B382B645B34234E451AE5D94 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml.pri */,
6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qml_private.pri */,
4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */,
DF8188E30892A4654B984221 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest.pri */,
ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qmltest_private.pri */,
5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */,
16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick.pri */,
8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quick_private.pri */,
82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickparticles_private.pri */,
D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets.pri */,
B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */,
CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script.pri */,
C505A18319B9B63C63877858 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_script_private.pri */,
CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools.pri */,
A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_scripttools_private.pri */,
85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors.pri */,
BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sensors_private.pri */,
BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport.pri */,
311004331A04F3D69C98643C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_serialport_private.pri */,
7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql.pri */,
075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_sql_private.pri */,
ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg.pri */,
8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_svg_private.pri */,
DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib.pri */,
8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_testlib_private.pri */,
E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools.pri */,
B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_uitools_private.pri */,
8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets.pri */,
87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_websockets_private.pri */,
A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets.pri */,
8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_widgets_private.pri */,
AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml.pri */,
E37365B4489B4918BEBB707D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xml_private.pri */,
2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns.pri */,
F9BEAA743A908603687DA204 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */,
D5141F795670589C8CC41CBC /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */,
1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfcamera.pri */,
F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */,
AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcocoa.pri */,
EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */,
111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdds.pri */,
3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */,
2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */,
EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qicns.pri */,
C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qico.pri */,
45DB132B756499D4DF38430E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qjp2.pri */,
B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qminimal.pri */,
F0A58515945747E36783CC21 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */,
B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */,
EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */,
3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */,
946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qmng.pri */,
CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qoffscreen.pri */,
9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qqt7engine.pri */,
B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsqlite.pri */,
F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvg.pri */,
CFFBE05DB004895080314289 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qsvgicon.pri */,
247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */,
87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */,
24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */,
060A694B42A4555240009936 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtga.pri */,
BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtiff.pri */,
B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */,
74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */,
C84546C18DCBB04166195DCF /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */,
AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */,
8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */,
892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */,
A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */,
346287C9E754E7C458153F03 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwbmp.pri */,
B26239063A068F800A2C95F4 /* /usr/local/Qt-5.5.0/mkspecs/modules/qt_plugin_qwebp.pri */,
63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.5.0/mkspecs/macx-clang/qmake.conf */,
85061B1DA49D125991117950 /* /usr/local/Qt-5.5.0/mkspecs/macx-xcode/qmake.conf */,
AB745978DF0F41D1801ABDA6 /* .qmake.stash */,
);
name = "Supporting Files";
@@ -408,6 +411,7 @@
AF39DD055C3EF8226FBE929D /* Frameworks */ = {
isa = PBXGroup;
children = (
07D795491B5544B200DE9598 /* qtpcre */,
AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */,
DFD7912080BC557230093752 /* ApplicationServices.framework */,
9742F24EE18EA44D52824F1E /* CoreServices.framework */,
@@ -483,7 +487,7 @@
6DB9C3763D02B1415CD9D565 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0610;
LastUpgradeCheck = 0640;
};
buildConfigurationList = DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "Packer" */;
compatibilityVersion = "Xcode 3.2";
@@ -554,6 +558,7 @@
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = "";
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
@@ -562,26 +567,26 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = (
../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore,
../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore,
../../Libraries/QtStatic/qtbase/include,
/usr/local/include,
"/usr/local/Qt-5.4.0/include",
"/usr/local/Qt-5.4.0/include/QtGui",
"/usr/local/Qt-5.4.0/include/QtCore",
"/usr/local/Qt-5.5.0/include",
"/usr/local/Qt-5.5.0/include/QtGui",
"/usr/local/Qt-5.5.0/include/QtCore",
GeneratedFiles/Debug,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers,
"/usr/local/Qt-5.4.0/mkspecs/macx-clang",
"/usr/local/Qt-5.5.0/mkspecs/macx-clang",
);
INFOPLIST_FILE = Packer.plist;
INSTALL_DIR = "../Mac/$(CONFIGURATION)";
LDPLUSPLUS = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++";
LIBRARY_SEARCH_PATHS = (
/System/Library/Frameworks/,
"/usr/local/Qt-5.4.0/lib",
"/usr/local/Qt-5.4.0/plugins/platforms",
"/usr/local/Qt-5.4.0/plugins/imageformats",
"/usr/local/Qt-5.5.0/lib",
"/usr/local/Qt-5.5.0/plugins/platforms",
"/usr/local/Qt-5.5.0/plugins/imageformats",
);
MACOSX_DEPLOYMENT_TARGET = 10.7;
OBJROOT = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)IntermediatePacker/";
@@ -612,10 +617,10 @@
"-stdlib=libc++",
"-lcrypto",
"-lssl",
"-L/usr/local/Qt-5.4.0/lib",
"-L/usr/local/Qt-5.4.0/plugins/platforms",
"-L/usr/local/Qt-5.5.0/lib",
"-L/usr/local/Qt-5.5.0/plugins/platforms",
"-lcups",
"-L/usr/local/Qt-5.4.0/plugins/imageformats",
"-L/usr/local/Qt-5.5.0/plugins/imageformats",
"-lz",
"-lm",
"-llzma",
@@ -645,6 +650,7 @@
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = "";
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -654,26 +660,26 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = (
../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore,
../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui,
../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore,
../../Libraries/QtStatic/qtbase/include,
/usr/local/include,
"/usr/local/Qt-5.4.0/include",
"/usr/local/Qt-5.4.0/include/QtGui",
"/usr/local/Qt-5.4.0/include/QtCore",
"/usr/local/Qt-5.5.0/include",
"/usr/local/Qt-5.5.0/include/QtGui",
"/usr/local/Qt-5.5.0/include/QtCore",
GeneratedFiles/Debug,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers,
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers,
"/usr/local/Qt-5.4.0/mkspecs/macx-clang",
"/usr/local/Qt-5.5.0/mkspecs/macx-clang",
);
INFOPLIST_FILE = Packer.plist;
INSTALL_DIR = "../Mac/$(CONFIGURATION)";
LDPLUSPLUS = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++";
LIBRARY_SEARCH_PATHS = (
/System/Library/Frameworks/,
"/usr/local/Qt-5.4.0/lib",
"/usr/local/Qt-5.4.0/plugins/platforms",
"/usr/local/Qt-5.4.0/plugins/imageformats",
"/usr/local/Qt-5.5.0/lib",
"/usr/local/Qt-5.5.0/plugins/platforms",
"/usr/local/Qt-5.5.0/plugins/imageformats",
);
MACOSX_DEPLOYMENT_TARGET = 10.7;
OBJROOT = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)IntermediatePacker/";
@@ -705,10 +711,10 @@
"-stdlib=libc++",
"-lcrypto",
"-lssl",
"-L/usr/local/Qt-5.4.0/lib",
"-L/usr/local/Qt-5.4.0/plugins/platforms",
"-L/usr/local/Qt-5.5.0/lib",
"-L/usr/local/Qt-5.5.0/plugins/platforms",
"-lcups",
"-L/usr/local/Qt-5.4.0/plugins/imageformats",
"-L/usr/local/Qt-5.5.0/plugins/imageformats",
"-lz",
"-lm",
"-llzma",
@@ -726,6 +732,10 @@
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = YES;
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"/usr/local/Qt-5.5.0/lib",
);
OBJROOT = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)IntermediatePacker";
OTHER_CFLAGS = (
"-pipe",
@@ -765,6 +775,10 @@
DEBUG_INFORMATION_FORMAT = dwarf;
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"/usr/local/Qt-5.5.0/lib",
);
OBJROOT = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)IntermediatePacker";
OTHER_CFLAGS = (
"-pipe",

View File

@@ -1,25 +1,25 @@
#############################################################################
# Makefile for building: ../Mac/DebugPacker/Packer.app/Contents/MacOS/Packer
# Generated by qmake (3.0) (Qt 5.4.0)
# Generated by qmake (3.0) (Qt 5.5.0)
# Project: Packer.pro
# Template: app
# Command: /usr/local/Qt-5.4.0/bin/qmake -spec macx-xcode -o Packer.xcodeproj/project.pbxproj Packer.pro
# Command: /usr/local/Qt-5.5.0/bin/qmake -spec macx-xcode -o Packer.xcodeproj/project.pbxproj Packer.pro
#############################################################################
MAKEFILE = project.pbxproj
MOC = /usr/local/Qt-5.4.0/bin/moc
UIC =
MOC = /usr/local/Qt-5.5.0/bin/moc
UIC =
LEX = flex
LEXFLAGS =
LEXFLAGS =
YACC = yacc
YACCFLAGS = -d
DEFINES = -D_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB
INCPATH = -I/usr/local/Qt-5.4.0/mkspecs/macx-clang -I. -I../../Libraries/QtStatic/qtbase/include/QtGui/5.4.0/QtGui -I../../Libraries/QtStatic/qtbase/include/QtCore/5.4.0/QtCore -I../../Libraries/QtStatic/qtbase/include -I../../Libraries/lzma/C -I/usr/local/Qt-5.4.0/include -I/usr/local/Qt-5.4.0/include/QtGui -I/usr/local/Qt-5.4.0/include/QtCore -IGeneratedFiles/Debug -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers
INCPATH = -I/usr/local/Qt-5.5.0/mkspecs/macx-clang -I. -I../../Libraries/QtStatic/qtbase/include/QtGui/5.5.0/QtGui -I../../Libraries/QtStatic/qtbase/include/QtCore/5.5.0/QtCore -I../../Libraries/QtStatic/qtbase/include -I../../Libraries/lzma/C -I/usr/local/Qt-5.5.0/include -I/usr/local/Qt-5.5.0/include/QtGui -I/usr/local/Qt-5.5.0/include/QtCore -IGeneratedFiles/Debug -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/OpenGL.framework/Versions/A/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers
DEL_FILE = rm -f
MOVE = mv -f
IMAGES =
IMAGES =
PARSERS =
preprocess: $(PARSERS) compilers
clean preprocess_clean: parser_clean compiler_clean
@@ -48,5 +48,5 @@ compiler_yacc_impl_make_all:
compiler_yacc_impl_clean:
compiler_lex_make_all:
compiler_lex_clean:
compiler_clean:
compiler_clean:

View File

@@ -1,6 +1,7 @@
AppVersion=`./Version.sh | awk -F " " '{print $1}'`
AppVersionStr=`./Version.sh | awk -F " " '{print $2}'`
DevChannel=`./Version.sh | awk -F " " '{print $3}'`
AppVersionStrMajor=`./Version.sh | awk -F " " '{print $1}'`
AppVersion=`./Version.sh | awk -F " " '{print $2}'`
AppVersionStr=`./Version.sh | awk -F " " '{print $3}'`
DevChannel=`./Version.sh | awk -F " " '{print $4}'`
DevPostfix=''
DevParam=''
if [ "$DevChannel" != "0" ]; then
@@ -8,12 +9,12 @@ if [ "$DevChannel" != "0" ]; then
DevParam='-dev'
fi
if [ -d "./../Linux/Release/deploy/$AppVersionStr.dev" ]; then
if [ -d "./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr.dev" ]; then
echo "Deploy folder for version $AppVersionStr.dev already exists!"
exit 1
fi
if [ -d "./../Linux/Release/deploy/$AppVersionStr" ]; then
if [ -d "./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr" ]; then
echo "Deploy folder for version $AppVersionStr already exists!"
exit 1
fi
@@ -40,12 +41,17 @@ echo "Packer done!"
if [ ! -d "./../Linux/Release/deploy" ]; then
mkdir "./../Linux/Release/deploy"
fi
echo "Copying Telegram, Updater and tlinuxupd$AppVersion to deploy/$AppVersionStr$DevPostfix..";
mkdir "./../Linux/Release/deploy/$AppVersionStr$DevPostfix"
mkdir "./../Linux/Release/deploy/$AppVersionStr$DevPostfix/Telegram"
mv ./../Linux/Release/Telegram ./../Linux/Release/deploy/$AppVersionStr$DevPostfix/Telegram/
mv ./../Linux/Release/Updater ./../Linux/Release/deploy/$AppVersionStr$DevPostfix/Telegram/
mv ./../Linux/Release/tlinuxupd$AppVersion ./../Linux/Release/deploy/$AppVersionStr$DevPostfix/
cd ./../Linux/Release/deploy/$AppVersionStr$DevPostfix && tar -cJvf tsetup.$AppVersionStr$DevPostfix.tar.xz Telegram/ && cd ./../../../../Telegram
if [ ! -d "./../Linux/Release/deploy/$AppVersionStrMajor" ]; then
mkdir "./../Linux/Release/deploy/$AppVersionStrMajor"
fi
echo "Copying Telegram, Updater and tlinuxupd$AppVersion to deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix..";
mkdir "./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix"
mkdir "./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/Telegram"
mv ./../Linux/Release/Telegram ./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/Telegram/
mv ./../Linux/Release/Updater ./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/Telegram/
mv ./../Linux/Release/tlinuxupd$AppVersion ./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/
cd ./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix && tar -cJvf tsetup.$AppVersionStr$DevPostfix.tar.xz Telegram/ && cd ./../../../../../Telegram
echo "Version $AppVersionStr$DevPostfix prepared!";

View File

@@ -1,6 +1,7 @@
AppVersion=`./Version.sh | awk -F " " '{print $1}'`
AppVersionStr=`./Version.sh | awk -F " " '{print $2}'`
DevChannel=`./Version.sh | awk -F " " '{print $3}'`
AppVersionStrMajor=`./Version.sh | awk -F " " '{print $1}'`
AppVersion=`./Version.sh | awk -F " " '{print $2}'`
AppVersionStr=`./Version.sh | awk -F " " '{print $3}'`
DevChannel=`./Version.sh | awk -F " " '{print $4}'`
DevPostfix=''
DevParam=''
if [ "$DevChannel" != "0" ]; then
@@ -8,12 +9,12 @@ if [ "$DevChannel" != "0" ]; then
DevParam='-dev'
fi
if [ -d "./../Linux/Release/deploy/$AppVersionStr.dev" ]; then
if [ -d "./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr.dev" ]; then
echo "Deploy folder for version $AppVersionStr.dev already exists!"
exit 1
fi
if [ -d "./../Linux/Release/deploy/$AppVersionStr" ]; then
if [ -d "./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr" ]; then
echo "Deploy folder for version $AppVersionStr already exists!"
exit 1
fi
@@ -40,12 +41,17 @@ echo "Packer done!"
if [ ! -d "./../Linux/Release/deploy" ]; then
mkdir "./../Linux/Release/deploy"
fi
echo "Copying Telegram, Updater and tlinux32upd$AppVersion to deploy/$AppVersionStr$DevPostfix..";
mkdir "./../Linux/Release/deploy/$AppVersionStr$DevPostfix"
mkdir "./../Linux/Release/deploy/$AppVersionStr$DevPostfix/Telegram"
mv ./../Linux/Release/Telegram ./../Linux/Release/deploy/$AppVersionStr$DevPostfix/Telegram/
mv ./../Linux/Release/Updater ./../Linux/Release/deploy/$AppVersionStr$DevPostfix/Telegram/
mv ./../Linux/Release/tlinux32upd$AppVersion ./../Linux/Release/deploy/$AppVersionStr$DevPostfix/
cd ./../Linux/Release/deploy/$AppVersionStr$DevPostfix && tar -cJvf tsetup32.$AppVersionStr$DevPostfix.tar.xz Telegram/ && cd ./../../../../Telegram
if [ ! -d "./../Linux/Release/deploy/$AppVersionStrMajor" ]; then
mkdir "./../Linux/Release/deploy/$AppVersionStrMajor"
fi
echo "Copying Telegram, Updater and tlinux32upd$AppVersion to deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix..";
mkdir "./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix"
mkdir "./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/Telegram"
mv ./../Linux/Release/Telegram ./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/Telegram/
mv ./../Linux/Release/Updater ./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/Telegram/
mv ./../Linux/Release/tlinux32upd$AppVersion ./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/
cd ./../Linux/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix && tar -cJvf tsetup32.$AppVersionStr$DevPostfix.tar.xz Telegram/ && cd ./../../../../../Telegram
echo "Version $AppVersionStr$DevPostfix prepared!";

View File

@@ -1,6 +1,7 @@
AppVersion=`./Version.sh | awk -F " " '{print $1}'`
AppVersionStr=`./Version.sh | awk -F " " '{print $2}'`
DevChannel=`./Version.sh | awk -F " " '{print $3}'`
AppVersionStrMajor=`./Version.sh | awk -F " " '{print $1}'`
AppVersion=`./Version.sh | awk -F " " '{print $2}'`
AppVersionStr=`./Version.sh | awk -F " " '{print $3}'`
DevChannel=`./Version.sh | awk -F " " '{print $4}'`
DevPostfix=''
DevParam=''
if [ "$DevChannel" != "0" ]; then
@@ -12,17 +13,17 @@ echo ""
echo "Preparing version $AppVersionStr$DevPostfix.."
echo ""
if [ -d "./../Mac/Release/deploy/$AppVersionStr.dev" ]; then
if [ -d "./../Mac/Release/deploy/$AppVersionStrMajor/$AppVersionStr.dev" ]; then
echo "Deploy folder for version $AppVersionStr.dev already exists!"
exit 1
fi
if [ -d "./../Mac/Release/deploy/$AppVersionStr" ]; then
if [ -d "./../Mac/Release/deploy/$AppVersionStrMajor/$AppVersionStr" ]; then
echo "Deploy folder for version $AppVersionStr already exists!"
exit 1
fi
if [ -f "./../Mac/Release/tupdate$AppVersion" ]; then
if [ -f "./../Mac/Release/tmacupd$AppVersion" ]; then
echo "Update file for version $AppVersion already exists!"
exit 1
fi
@@ -73,19 +74,24 @@ hdiutil convert tsetup.dmg -format UDZO -imagekey zlib-level=9 -ov -o tsetup.$Ap
cd ./../../Telegram
cd ./../Mac/Release && ./Packer.app/Contents/MacOS/Packer -path Telegram.app -version $AppVersion $DevParam && cd ./../../Telegram
if [ ! -d "./../Mac/Release/deploy/" ]; then
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$DevPostfix"
mkdir "./../Mac/Release/deploy/$AppVersionStr$DevPostfix/Telegram"
cp -r ./../Mac/Release/Telegram.app ./../Mac/Release/deploy/$AppVersionStr$DevPostfix/Telegram/
mv ./../Mac/Release/Telegram.app.dSYM ./../Mac/Release/deploy/$AppVersionStr$DevPostfix/
if [ ! -d "./../Mac/Release/deploy/$AppVersionStrMajor" ]; then
mkdir "./../Mac/Release/deploy/$AppVersionStrMajor"
fi
echo "Copying Telegram.app and tmacupd$AppVersion to deploy/$AppVersionStrMajor/$AppVersionStr..";
mkdir "./../Mac/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix"
mkdir "./../Mac/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/Telegram"
cp -r ./../Mac/Release/Telegram.app ./../Mac/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/Telegram/
mv ./../Mac/Release/Telegram.app.dSYM ./../Mac/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/
rm ./../Mac/Release/Telegram.app/Contents/MacOS/Telegram
rm ./../Mac/Release/Telegram.app/Contents/Frameworks/Updater
rm -rf ./../Mac/Release/Telegram.app/Contents/_CodeSignature
mv ./../Mac/Release/tmacupd$AppVersion ./../Mac/Release/deploy/$AppVersionStr$DevPostfix/
mv ./../Mac/Release/tsetup.$AppVersionStr$DevPostfix.dmg ./../Mac/Release/deploy/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.dmg
mv ./../Mac/Release/tmacupd$AppVersion ./../Mac/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/
mv ./../Mac/Release/tsetup.$AppVersionStr$DevPostfix.dmg ./../Mac/Release/deploy/$AppVersionStrMajor/$AppVersionStr$DevPostfix/tsetup.$AppVersionStr$DevPostfix.dmg
echo "Version $AppVersionStr$DevPostfix prepared!";

View File

@@ -1,10 +1,11 @@
@echo OFF
set "AppVersion=8014"
set "AppVersionStrSmall=0.8.14"
set "AppVersionStr=0.8.14"
set "AppVersionStrFull=0.8.14.0"
set "DevChannel=1"
set "AppVersionStrMajor=0.8"
set "AppVersion=8057"
set "AppVersionStrSmall=0.8.57"
set "AppVersionStr=0.8.57"
set "AppVersionStrFull=0.8.57.0"
set "DevChannel=0"
if %DevChannel% neq 0 goto preparedev
@@ -23,8 +24,8 @@ echo.
echo Preparing version %AppVersionStr%%DevPostfix%..
echo.
if exist ..\Win32\Deploy\deploy\%AppVersionStr%\ goto error_exist1
if exist ..\Win32\Deploy\deploy\%AppVersionStr%.dev\ goto error_exist2
if exist ..\Win32\Deploy\deploy\%AppVersionStrMajor%\%AppVersionStr%\ goto error_exist1
if exist ..\Win32\Deploy\deploy\%AppVersionStrMajor%\%AppVersionStr%.dev\ goto error_exist2
if exist ..\Win32\Deploy\tupdate%AppVersion% goto error_exist3
set "PATH=%PATH%;C:\Program Files\7-Zip;C:\Program Files (x86)\Inno Setup 5"
@@ -46,17 +47,18 @@ call Packer.exe -version %AppVersion% -path Telegram.exe -path Updater.exe %DevP
if %errorlevel% neq 0 goto error1
if not exist deploy mkdir deploy
mkdir deploy\%AppVersionStr%%DevPostfix%
mkdir deploy\%AppVersionStr%%DevPostfix%\Telegram
if not exist deploy\%AppVersionStrMajor% mkdir deploy\%AppVersionStrMajor%
mkdir deploy\%AppVersionStrMajor%\%AppVersionStr%%DevPostfix%
mkdir deploy\%AppVersionStrMajor%\%AppVersionStr%%DevPostfix%\Telegram
move Telegram.exe deploy\%AppVersionStr%%DevPostfix%\Telegram\
move Updater.exe deploy\%AppVersionStr%%DevPostfix%\
move Telegram.pdb deploy\%AppVersionStr%%DevPostfix%\
move Updater.pdb deploy\%AppVersionStr%%DevPostfix%\
move tsetup.%AppVersionStr%%DevPostfix%.exe deploy\%AppVersionStr%%DevPostfix%\
move tupdate%AppVersion% deploy\%AppVersionStr%%DevPostfix%\
move Telegram.exe deploy\%AppVersionStrMajor%\%AppVersionStr%%DevPostfix%\Telegram\
move Updater.exe deploy\%AppVersionStrMajor%\%AppVersionStr%%DevPostfix%\
move Telegram.pdb deploy\%AppVersionStrMajor%\%AppVersionStr%%DevPostfix%\
move Updater.pdb deploy\%AppVersionStrMajor%\%AppVersionStr%%DevPostfix%\
move tsetup.%AppVersionStr%%DevPostfix%.exe deploy\%AppVersionStrMajor%\%AppVersionStr%%DevPostfix%\
move tupdate%AppVersion% deploy\%AppVersionStrMajor%\%AppVersionStr%%DevPostfix%\
cd deploy\%AppVersionStr%%DevPostfix%
cd deploy\%AppVersionStrMajor%\%AppVersionStr%%DevPostfix%
7z a -mx9 tportable.%AppVersionStr%%DevPostfix%.zip Telegram\
if %errorlevel% neq 0 goto error2
@@ -64,11 +66,11 @@ echo .
echo Version %AppVersionStr%%DevPostfix% is ready for deploy!
echo .
cd ..\..\..\..\Telegram
cd ..\..\..\..\..\Telegram
goto eof
:error2
cd ..\..
cd ..\..\..
:error1
cd ..\..\Telegram
echo ERROR occured!

View File

@@ -28,7 +28,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"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,\nyou can change this from settings page.\n\nIf this icon disappears from tray menu,\nyou can drag it back here from hidden icons.";
"lng_tray_icon_text" = "Telegram is still running here,\nyou can change this from settings page.\nIf this icon disappears from tray menu,\nyou can drag it here from hidden icons.";
"lng_month1" = "January";
"lng_month2" = "February";
@@ -60,6 +60,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_weekday7_full" = "Sunday";
"lng_month_day" = "{month} {day}";
"lng_month_day_year" = "{month} {day}, {year}";
"lng_cancel" = "Cancel";
"lng_continue" = "Continue";
@@ -69,6 +70,10 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_reconnecting_try_now" = "Try now";
"lng_status_service_notifications" = "service notifications";
"lng_status_support" = "support";
"lng_status_bot" = "bot";
"lng_status_bot_reads_all" = "has access to messages";
"lng_status_bot_not_reads_all" = "has no access to messages";
"lng_status_offline" = "last seen a long time ago";
"lng_status_recently" = "last seen recently";
"lng_status_last_week" = "last seen within a week";
@@ -113,6 +118,8 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_code_ph" = "Your code";
"lng_code_desc" = "We have sent you a message with activation\ncode to your phone. Please enter it below.";
"lng_code_telegram" = "Please enter the code you've just\nreceived in your previous [b]Telegram[/b] app.";
"lng_code_no_telegram" = "Send code via SMS";
"lng_code_call" = "Telegram will dial your number in {minutes}:{seconds}";
"lng_code_calling" = "Requesting a call from Telegram..";
"lng_code_called" = "Telegram dialed your number";
@@ -153,8 +160,11 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_dlg_new_group_name" = "Group name";
"lng_dlg_create_group" = "Create";
"lng_no_contacts" = "You have no contacts";
"lng_no_chats" = "Your chats will be here";
"lng_contacts_loading" = "Loading..";
"lng_contacts_not_found" = "No contacts found";
"lng_dlg_search_chat" = "Search in this chat";
"lng_dlg_search_for_messages" = "Search for messages";
"lng_settings_save" = "Save";
"lng_settings_upload" = "Set Profile Photo";
@@ -163,11 +173,11 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_username_title" = "Change username";
"lng_username_about" = "You can choose a username on Telegram.\nIf you do, other people will be able to find\nyou by this username and contact you\nwithout knowing your phone number.\n\nYou can use a-z, 0-9 and underscores.\nMinimum 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_username_bad_symbols" = "This name has bad symbols.";
"lng_username_available" = "This name is available.";
"lng_username_invalid" = "This username is invalid.";
"lng_username_occupied" = "This username is already occupied.";
"lng_username_too_short" = "This username is too short.";
"lng_username_bad_symbols" = "This username has bad symbols.";
"lng_username_available" = "This username is available.";
"lng_username_not_found" = "User @{user} not found.";
"lng_settings_section_contact_info" = "Contact info";
@@ -179,7 +189,9 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_settings_desktop_notify" = "Desktop notifications";
"lng_settings_show_name" = "Show sender's name";
"lng_settings_show_preview" = "Show message preview";
"lng_settings_use_windows" = "Use Windows notifications";
"lng_settings_sound_notify" = "Play sound";
"lng_settings_include_muted" = "Include muted chats in unread count";
"lng_notification_preview" = "You have a new message";
@@ -298,13 +310,14 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_connection_type" = "Connection type:";
"lng_connection_auto_connecting" = "Default (connecting..)";
"lng_connection_auto" = "Default ({type} used)";
"lng_connection_http_proxy" = "HTTP with proxy";
"lng_connection_tcp_proxy" = "TCP with proxy";
"lng_connection_auto" = "Default ({transport} used)";
"lng_connection_proxy_connecting" = "Connecting through proxy..";
"lng_connection_proxy" = "{transport} with proxy";
"lng_connection_header" = "Connection type";
"lng_connection_auto_rb" = "Auto (TCP if available or HTTP)";
"lng_connection_http_proxy_rb" = "HTTP with custom http-proxy";
"lng_connection_tcp_proxy_rb" = "TCP with custom socks5-proxy";
"lng_connection_try_ipv6" = "Try connecting through IPv6";
"lng_connection_host_ph" = "Hostname";
"lng_connection_port_ph" = "Port";
"lng_connection_user_ph" = "Username";
@@ -316,6 +329,11 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_settings_reset_one_sure" = "Do you want to terminate this session?";
"lng_settings_reset_button" = "Terminate";
"lng_settings_reset_done" = "Other sessions terminated";
"lng_settings_ask_question" = "Ask a Question";
"lng_settings_ask_sure" = "Please note that Telegram Support is done by volunteers. We try to respond as quickly as possible, but it may take a while.\n\nPlease take a look at the Telegram FAQ: it has important troubleshooting tips and answers to most questions.";
"lng_settings_faq_button" = "Go to FAQ";
"lng_settings_ask_ok" = "Ask";
"lng_settings_faq" = "Telegram FAQ";
"lng_settings_logout" = "Log Out";
"lng_sure_logout" = "Are you sure you want to log out?";
@@ -333,7 +351,11 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_profile_chat_unaccessible" = "Group is unaccessible";
"lng_topbar_info" = "Info";
"lng_profile_about_section" = "About";
"lng_profile_settings_section" = "Settings";
"lng_profile_actions_section" = "Actions";
"lng_profile_bot_settings" = "Settings";
"lng_profile_bot_help" = "Help";
"lng_profile_participants_section" = "Members";
"lng_profile_info" = "Contact info";
"lng_profile_group_info" = "Group info";
@@ -341,8 +363,16 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_profile_edit_contact" = "Edit";
"lng_profile_enable_notifications" = "Notifications";
"lng_profile_clear_history" = "Clear history";
"lng_profile_delete_conversation" = "Delete conversation";
"lng_profile_clear_and_exit" = "Delete and exit";
"lng_profile_search_messages" = "Search for messages";
"lng_profile_block_user" = "Block user";
"lng_profile_unblock_user" = "Unblock user";
"lng_profile_block_bot" = "Stop and block bot";
"lng_profile_unblock_bot" = "Unblock bot";
"lng_profile_send_message" = "Send Message";
"lng_profile_share_contact" = "Share Contact";
"lng_profile_invite_to_group" = "Add to Group";
"lng_profile_delete_contact" = "Delete";
"lng_profile_set_group_photo" = "Set Photo";
"lng_profile_add_participant" = "Add Member";
@@ -360,6 +390,9 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_profile_files_header" = "Files overview";
"lng_profile_audios" = "{count:_not_used_|# voice message|# voice messages} »";
"lng_profile_audios_header" = "Voice messages overview";
"lng_profile_shared_links" = "{count:_not_used_|# shared link|# shared links} »";
"lng_profile_shared_links_header" = "Shared links overview";
"lng_profile_audio_files_header" = "Playlist";
"lng_profile_show_all_types" = "Show all types";
"lng_profile_copy_phone" = "Copy phone number";
@@ -370,13 +403,16 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_create_group_title" = "New Group";
"lng_failed_add_participant" = "Could not add user. Try again later.";
"lng_failed_add_not_mutual" = "Sorry, if a person left a group, only a\nmutual contact can bring them back\n(they need to have your phone\nnumber, and you need theirs).";
"lng_sure_delete_contact" = "Are you sure, you want to delete {contact} from your contact list?";
"lng_sure_delete_history" = "Are you sure, you want to delete all message history with {contact}?\n\nThis action cannot be undone.";
"lng_sure_delete_group_history" = "Are you sure, you want to delete all message history in «{group}»?\n\nThis action cannot be undone.";
"lng_sure_delete_and_exit" = "Are you sure, you want to delete all message history and leave «{group}»?\n\nThis action cannot be undone.";
"lng_message_empty" = "(empty)";
"lng_message_empty" = "Empty Message";
"lng_media_unsupported" = "Media Unsupported";
"lng_action_add_user" = "{from} added {user}";
"lng_action_kick_user" = "{from} kicked {user}";
@@ -413,6 +449,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_media_type_videos" = "Video files";
"lng_media_type_files" = "Files";
"lng_media_type_audios" = "Voice messages";
"lng_media_type_links" = "Shared links";
"lng_media_open_with" = "Open With";
"lng_media_download" = "Download";
@@ -438,6 +475,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_stickers_share_pack" = "Share Stickers";
"lng_stickers_not_found" = "Sticker pack not found.";
"lng_stickers_copied" = "Sticker pack link copied to clipboard.";
"lng_stickers_default_set" = "Great Minds";
"lng_in_dlg_photo" = "Photo";
"lng_in_dlg_video" = "Video";
@@ -447,17 +485,56 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_in_dlg_sticker" = "Sticker";
"lng_in_dlg_sticker_emoji" = "{emoji} (sticker)";
"lng_report_spam" = "Report Spam";
"lng_report_spam_hide" = "Hide";
"lng_report_spam_thanks" = "Thank you for your report!";
"lng_report_spam_sure" = "Are you sure you want\nto report spam from this user?";
"lng_report_spam_sure_group" = "Are you sure you want\nto report spam in this group?";
"lng_report_spam_ok" = "Report";
"lng_cant_send_to_not_contact" = "Sorry, you can only send messages to\nmutual contacts at the moment. {more_info}";
"lng_cant_invite_not_contact" = "Sorry, you can only add mutual contacts\nto groups at the moment. {more_info}";
"lng_cant_more_info" = "More info »";
"lng_send_button" = "Send";
"lng_message_ph" = "Write a message..";
"lng_record_cancel" = "Release outside this field to cancel";
"lng_empty_history" = "";
"lng_willbe_history" = "Please select chat to start messaging";
"lng_willbe_history" = "Please select a chat to start messaging";
"lng_message_with_from" = "[c]{from}:[/c] {message}";
"lng_from_you" = "You";
"lng_bot_description" = "What can this bot do?";
"lng_unblock_button" = "Unblock";
"lng_open_this_link" = "Open this link?";
"lng_open_link" = "Open";
"lng_bot_start" = "Start";
"lng_bot_choose_group" = "Choose Group";
"lng_bot_no_groups" = "You have no groups";
"lng_bot_groups_not_found" = "No groups found";
"lng_bot_sure_invite" = "Add the bot to «{group}»?";
"lng_bot_already_in_group" = "The bot is already a member of the group.";
"lng_typing" = "typing";
"lng_user_typing" = "{user} is typing";
"lng_users_typing" = "{user} and {second_user} are typing";
"lng_many_typing" = "{count:_not_used_|# is|# are} typing";
"lng_send_action_record_video" = "recording video";
"lng_user_action_record_video" = "{user} is recording video";
"lng_send_action_upload_video" = "sending video";
"lng_user_action_upload_video" = "{user} is sending video";
"lng_send_action_record_audio" = "recording audio";
"lng_user_action_record_audio" = "{user} is recording audio";
"lng_send_action_upload_audio" = "sending audio";
"lng_user_action_upload_audio" = "{user} is sending audio";
"lng_send_action_upload_photo" = "sending photo";
"lng_user_action_upload_photo" = "{user} is sending photo";
"lng_send_action_upload_file" = "sending file";
"lng_user_action_upload_file" = "{user} is sending file";
"lng_send_action_geo_location" = "picking location";
"lng_user_action_geo_location" = "{user} is picking location";
"lng_send_action_choose_contact" = "choosing contact";
"lng_user_action_choose_contact" = "{user} is choosing contact";
"lng_unread_bar" = "{count:_not_used_|# unread message|# unread messages}";
"lng_maps_point" = "Location";
@@ -491,6 +568,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_context_open_audio" = "Open Audio";
"lng_context_save_audio" = "Save Audio As..";
"lng_context_pack_info" = "Pack Info";
"lng_context_pack_add" = "Add Stickers";
"lng_context_open_file" = "Open File";
"lng_context_save_file" = "Save File As..";
"lng_context_forward_file" = "Forward File";
@@ -583,7 +661,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
"lng_new_version_wrap" = "Telegram Desktop was updated to version {version}\n\n{changes}\n\nFull version history is available here:\n{link}";
"lng_new_version_minor" = "— Bug fixes and other minor improvements";
"lng_new_version_text" = "— Added support for new emoji\n— Improved emoji and stickers panel";
"lng_new_version_text" = "— Spam report buttons in new chats\n— Other fixes and improvements\n— OS X 10.8 notifications fixed";
"lng_menu_insert_unicode" = "Insert Unicode control character";

View File

@@ -0,0 +1,231 @@
1876;JM;Jamaica;1876 XXX XXXX;11;
1869;KN;Saint Kitts & Nevis;1869 XXX XXXX;11;
1868;TT;Trinidad & Tobago;1868 XXX XXXX;11;
1784;VC;Saint Vincent & the Grenadines;1784 XXX XXXX;11;
1767;DM;Dominica;1767 XXX XXXX;11;
1758;LC;Saint Lucia;1758 XXX XXXX;11;
1721;SX;Sint Maarten;1721 XXX XXXX;11;
1684;AS;American Samoa;1684 XXX XXXX;11;
1671;GU;Guam;1671 XXX XXXX;11;
1670;MP;Northern Mariana Islands;1670 XXX XXXX;11;
1664;MS;Montserrat;1664 XXX XXXX;11;
1649;TC;Turks & Caicos Islands;1649 XXX XXXX;11;
1473;GD;Grenada;1473 XXX XXXX;11;
1441;BM;Bermuda;1441 XXX XXXX;11;
1345;KY;Cayman Islands;1345 XXX XXXX;11;
1340;VI;US Virgin Islands;1340 XXX XXXX;11;
1284;VG;British Virgin Islands;1284 XXX XXXX;11;
1268;AG;Antigua & Barbuda;1268 XXX XXXX;11;
1264;AI;Anguilla;1264 XXX XXXX;11;
1246;BB;Barbados;1246 XXX XXXX;11;
1242;BS;Bahamas;1242 XXX XXXX;11;
998;UZ;Uzbekistan;998 XX XXXXXXX;12;
996;KG;Kyrgyzstan
995;GE;Georgia
994;AZ;Azerbaijan;994 XX XXX XX XX;12;
993;TM;Turkmenistan;993 XX XXXXXX;11;
992;TJ;Tajikistan
977;NP;Nepal
976;MN;Mongolia
975;BT;Bhutan
974;QA;Qatar
973;BH;Bahrain;973 XXXX XXXX;11;
972;IL;Israel;972 XX XXX XXXX;12;
971;AE;United Arab Emirates;971 XX XXX XXXX;12;
970;PS;Palestine;970 XXX XX XXXX;12;
968;OM;Oman;968 XXXX XXXX;11;
967;YE;Yemen;967 XXX XXX XXX;12;
966;SA;Saudi Arabia;
965;KW;Kuwait;965 XXXX XXXX;11;
964;IQ;Iraq;964 XXX XXX XXXX;13;
963;SY;Syria
962;JO;Jordan;962 X XXXX XXXX;12;
961;LB;Lebanon
960;MV;Maldives
886;TW;Taiwan
880;BD;Bangladesh
856;LA;Laos
855;KH;Cambodia
853;MO;Macau
852;HK;Hong Kong
850;KP;North Korea
692;MH;Marshall Islands
691;FM;Micronesia
690;TK;Tokelau
689;PF;French Polynesia
688;TV;Tuvalu
687;NC;New Caledonia
686;KI;Kiribati
685;WS;Samoa
683;NU;Niue
682;CK;Cook Islands
681;WF;Wallis & Futuna
680;PW;Palau
679;FJ;Fiji
678;VU;Vanuatu
677;SB;Solomon Islands
676;TO;Tonga
675;PG;Papua New Guinea
674;NR;Nauru
673;BN;Brunei Darussalam;673 XXX XXXX;10;
672;NF;Norfolk Island
670;TL;Timor-Leste
599;BQ;Bonaire, Sint Eustatius & Saba
599;CW;Curaçao
598;UY;Uruguay;598 XXXX XXXX;11;
597;SR;Suriname;597 XXX XXXX;10;
596;MQ;Martinique
595;PY;Paraguay;595 XXX XXX XXX;12;
594;GF;French Guiana
593;EC;Ecuador
592;GY;Guyana
591;BO;Bolivia;591 X XXX XXXX;11;
590;GP;Guadeloupe
509;HT;Haiti
508;PM;Saint Pierre & Miquelon
507;PA;Panama;507 XXXX XXXX;11;
506;CR;Costa Rica
505;NI;Nicaragua;505 XXXX XXXX;11;
504;HN;Honduras;504 XXXX XXXX;11;
503;SV;El Salvador;503 XXXX XXXX;11;
502;GT;Guatemala;502 X XXX XXXX;11;
501;BZ;Belize
500;FK;Falkland Islands
423;LI;Liechtenstein
421;SK;Slovakia
420;CZ;Czech Republic
389;MK;Macedonia
387;BA;Bosnia & Herzegovina
386;SI;Slovenia
385;HR;Croatia
382;ME;Montenegro
381;RS;Serbia;381 XX XXX XXXX;12;
380;UA;Ukraine;380 XX XXX XX XX;12;
378;SM;San Marino;378 XXX XXX XXXX;13;
377;MC;Monaco;377 XXXX XXXX;11;
376;AD;Andorra;376 XX XX XX;9;
375;BY;Belarus;375 XX XXX XXXX;12;
374;AM;Armenia;374 XX XXX XXX;11;
373;MD;Moldova;373 XX XXX XXX;11;
372;EE;Estonia;
371;LV;Latvia;371 XXX XXXXX;11;
370;LT;Lithuania;370 XXX XXXXX;11;
359;BG;Bulgaria;
358;FI;Finland;
357;CY;Cyprus;357 XXXX XXXX;11;
356;MT;Malta;356 XX XX XX XX;11;
355;AL;Albania;355 XX XXX XXXX;12;
354;IS;Iceland;354 XXX XXXX;10;
353;IE;Ireland;353 XX XXX XXXX;12;
352;LU;Luxembourg
351;PT;Portugal;351 X XXXX XXXX;12;
350;GI;Gibraltar;350 XXXX XXXX;11;
299;GL;Greenland;299 XXX XXX;9;
298;FO;Faroe Islands;298 XXX XXX;9;
297;AW;Aruba;297 XXX XXXX;10;
291;ER;Eritrea;291 X XXX XXX;10;
290;SH;Saint Helena;290 XX XXX;8;
269;KM;Comoros;269 XXX XXXX;10;
268;SZ;Swaziland;268 XXXX XXXX;11;
267;BW;Botswana;267 XX XXX XXX;11;
266;LS;Lesotho;266 XX XXX XXX;11;
265;MW;Malawi
264;NA;Namibia;264 XX XXX XXXX;12;
263;ZW;Zimbabwe;263 XX XXX XXXX;12;
262;RE;Réunion;262 XXX XXX XXX;12;
261;MG;Madagascar;261 XX XX XXX XX;12;
260;ZM;Zambia;260 XX XXX XXXX;12;
258;MZ;Mozambique;258 XX XXX XXXX;12;
257;BI;Burundi;257 XX XX XXXX;11;
256;UG;Uganda;256 XX XXX XXXX;12;
255;TZ;Tanzania;255 XX XXX XXXX;12;
254;KE;Kenya;254 XXX XXX XXX;12;
253;DJ;Djibouti;253 XX XX XX XX;11;
252;SO;Somalia;252 XX XXX XXX;11;
251;ET;Ethiopia;251 XX XXX XXXX;12;
250;RW;Rwanda;250 XXX XXX XXX;12;
249;SD;Sudan;249 XX XXX XXXX;12;
248;SC;Seychelles;248 X XX XX XX;10;
247;SH;Saint Helena;247 XXXX;7;
246;IO;Diego Garcia;246 XXX XXXX;10;
245;GW;Guinea-Bissau;245 XXX XXXX;10;
244;AO;Angola;244 XXX XXX XXX;12;
243;CD;Congo (Dem. Rep.);243 XX XXX XXXX;12;
242;CG;Congo (Rep.);242 XX XXX XXXX;12;
241;GA;Gabon;241 X XX XX XX;10;
240;GQ;Equatorial Guinea;240 XXX XXX XXX;12;
239;ST;São Tomé & Príncipe;239 XX XXXXX;10;
238;CV;Cape Verde;238 XXX XXXX;10;
237;CM;Cameroon;237 XXXX XXXX;11;
236;CF;Central African Rep.;236 XX XX XX XX;11;
235;TD;Chad;235 XX XX XX XX;11;
234;NG;Nigeria
233;GH;Ghana
232;SL;Sierra Leone;232 XX XXX XXX;11;
231;LR;Liberia;
230;MU;Mauritius;
229;BJ;Benin;229 XX XXX XXX;11;
228;TG;Togo;228 XX XXX XXX;11;
227;NE;Niger;227 XX XX XX XX;11;
226;BF;Burkina Faso;226 XX XX XX XX;11;
225;CI;Côte d`Ivoire;225 XX XXX XXX;11;
224;GN;Guinea;224 XXX XXX XXX;12;
223;ML;Mali;223 XXXX XXXX;11;
222;MR;Mauritania;222 XXXX XXXX;11;
221;SN;Senegal;221 XX XXX XXXX;12;
220;GM;Gambia;220 XXX XXXX;10;
218;LY;Libya;218 XX XXX XXXX;12;
216;TN;Tunisia;216 XX XXX XXX;11;
213;DZ;Algeria;213 XXX XX XX XX;12;
212;MA;Morocco;212 XX XXX XXXX;12;
211;SS;South Sudan;211 XX XXX XXXX;12;
98;IR;Iran;98 XXX XXX XXXX;12;
95;MM;Myanmar;
94;LK;Sri Lanka;94 XX XXX XXXX;11;
93;AF;Afghanistan;93 XXX XXX XXX;11;
92;PK;Pakistan;92 XXX XXX XXXX;12;
91;IN;India;91 XXXXX XXXXX;12;
90;TR;Turkey;90 XXX XXX XXXX;12
86;CN;China;86 XXX XXXX XXXX;13;
84;VN;Vietnam;
82;KR;South Korea;
81;JP;Japan;81 XX XXXX XXXX;12;
66;TH;Thailand;66 X XXXX XXXX;11;
65;SG;Singapore;65 XXXX XXXX;10;
64;NZ;New Zealand;
63;PH;Philippines;63 XXX XXX XXXX;12;
62;ID;Indonesia;
61;AU;Australia;61 XXX XXX XXX;11;
60;MY;Malaysia;
58;VE;Venezuela;58 XXX XXX XXXX;12;
57;CO;Colombia;57 XXX XXX XXXX;12;
56;CL;Chile;56 X XXXX XXXX;11;
55;BR;Brazil;55 XX XXXXX XXXX;13;
54;AR;Argentina;
53;CU;Cuba;53 XXXX XXXX;10;
52;MX;Mexico;
51;PE;Peru;51 XXX XXX XXX;11;
49;DE;Germany;49 XXX XXXXXXXX;13;
48;PL;Poland;48 XX XXX XXXX;11;
47;NO;Norway;47 XXXX XXXX;10;
46;SE;Sweden;46 XX XXX XXXX;11;
45;DK;Denmark;45 XXXX XXXX;10;
44;GB;United Kingdom;44 XXXX XXXXXX;12;
43;AT;Austria;
41;CH;Switzerland;41 XX XXX XXXX;11;
40;RO;Romania;40 XXX XXX XXX;11;
39;IT;Italy;39 XXX XXX XXXX;12;
36;HU;Hungary;36 XX XXX XXXX;11;
34;ES;Spain;34 XXX XXX XXX;11;
33;FR;France;33 X XX XX XX XX;11;
32;BE;Belgium;32 XXX XX XX XX;11;
31;NL;Netherlands;31 X XX XX XX XX;11;
30;GR;Greece;30 XX XXXX XXXX;12;
27;ZA;South Africa;27 XX XXX XXXX;11;
20;EG;Egypt;20 XX XXX XXXX;11;
7;RU;Russian Federation;7 XXX XXX XX XX;11;
7;KZ;Kazakhstan;7 XXX XXX XX XX;11
1;US;USA;1 XXX XXX XXXX;11;
1;PR;Puerto Rico;1 XXX XXX XXXX;11;
1;DO;Dominican Rep.;1 XXX XXX XXXX;11;
1;CA;Canada;1 XXX XXX XXXX;11;

View File

@@ -54,7 +54,7 @@ wndBG: #FFF;
wndShadow: sprite(209px, 46px, 19px, 19px);
wndShadowShift: 1px;
layerAlpha: 0.3;
layerAlpha: 0.5;
layerBG: #000;
titleBG: #6389a8;
@@ -340,6 +340,10 @@ introHeaderFont: font(24px);
introHeaderSkip: 14px;
introIconSkip: 54px;
introFont: font(16px);
introLink: linkButton(btnDefLink) {
font: introFont;
overFont: font(16px underline);
}
introColor: black;
introLabel: flatLabel(labelDefFlat) {
font: introFont;
@@ -390,7 +394,8 @@ btnIntroNext: flatButton(btnDefNext, btnDefBig) {
width: 300px;
}
boxShadow: sprite(230px, 46px, 9px, 9px);
boxShadow: sprite(363px, 50px, 15px, 15px);
boxShadowShift: 2px;
introCountry: countryInput {
width: 300px;
@@ -774,7 +779,9 @@ historyToEndSkip: 10px;
activeFadeInDuration: 500;
activeFadeOutDuration: 3000;
msgMaxWidth: 550px;
msgRadius: 3px;
msgMaxWidth: 430px;
msgFont: font(fsize);
msgNameFont: font(fsize semibold);
msgServiceFont: font(fsize semibold);
@@ -788,12 +795,11 @@ msgPadding: margins(13px, 7px, 13px, 8px);
msgMargin: margins(13px, 4px, 53px, 4px);
msgLnkPadding: 2px; // for media open / save links
msgBorder: #f0f0f0;
msgOutBG: #effdde;
msgInBG: #fff;
msgOutSelectBG: #b7dbdb;
msgInSelectBG: #c2dcf2; // #358cd4 with 30% opacity
msgOutSelectOverlay: #358cd44c;
msgInSelectOverlay: #358cd44c;
msgOutBg: #effdde;
msgInBg: #fff;
msgOutSelectBg: #b7dbdb;
msgInSelectBg: #c2dcf2; // #358cd4 with 30% opacity
msgSelectOverlay: #358cd44c;
msgStickerOverlay: #358cd47f;
msgOutServiceColor: #3a8e26;
msgInServiceColor: #0e7acd;
@@ -818,10 +824,8 @@ msgInReplyBarColor: #2fa9e2;
msgOutReplyBarSelColor: #4da79f;
msgInReplyBarSelColor: #2fa9e2;
msgServiceSelectBG: #fff4;
msgServiceRadius: 2px;
msgServiceBG: #89a0b47f;
msgServiceBg: #89a0b47f;
msgServiceSelectBg: #bbc8d4a2;
msgServiceColor: #FFF;
msgServicePadding: margins(12px, 3px, 12px, 4px);
msgServiceMargin: margins(10px, 7px, 80px, 7px);
@@ -851,6 +855,7 @@ msgImgDblCheckRect: sprite(300px, 65px, 20px, 20px);
msgDateImgDelta: 4px;
msgDateImgColor: #fff;
msgDateImgBg: #00000054;
msgDateImgSelectBg: #1c4a7187;
msgDateImgPadding: point(8px, 2px);
msgDateImgCheckSpace: 4px;
@@ -862,23 +867,25 @@ defaultTextStyle: textStyle {
lnkOverFlags: font(fsize underline);
lnkColor: btnYesColor;
lnkDownColor: btnYesHover;
selectBG: msgInSelectBG;
selectOverlay: msgInSelectOverlay;
selectBg: msgInSelectBg;
selectOverlay: msgSelectOverlay;
lineHeight: 0px;
}
serviceTextStyle: textStyle(defaultTextStyle) {
lnkFlags: msgServiceFont;
lnkOverFlags: font(fsize semibold underline);
lnkColor: msgServiceColor;
lnkDownColor: msgServiceColor;
selectBG: msgServiceSelectBG;
selectOverlay: msgServiceSelectBG;
selectBg: msgServiceSelectBg;
selectOverlay: msgServiceSelectBg;
}
inTextStyle: textStyle(defaultTextStyle) {
selectBG: msgInSelectBG;
selectOverlay: msgInSelectOverlay;
selectBg: msgInSelectBg;
selectOverlay: msgSelectOverlay;
}
outTextStyle: textStyle(defaultTextStyle) {
selectBG: msgOutSelectBG;
selectOverlay: msgOutSelectOverlay;
selectBg: msgOutSelectBg;
selectOverlay: msgSelectOverlay;
}
medviewSaveAsTextStyle: textStyle(defaultTextStyle) {
lnkColor: #91d9ff;
@@ -912,6 +919,8 @@ mediaDocOutImg: sprite(6px, 146px, 48px, 48px);
mediaDocInImg: sprite(56px, 146px, 48px, 48px);
mediaAudioOutImg: sprite(106px, 146px, 48px, 48px);
mediaAudioInImg: sprite(156px, 146px, 48px, 48px);
mediaMusicOutImg: sprite(322px, 345px, 48px, 48px);
mediaMusicInImg: sprite(322px, 395px, 48px, 48px);
mediaPlayOutImg: sprite(122px, 341px, 48px, 48px);
mediaPlayInImg: sprite(172px, 341px, 48px, 48px);
mediaPauseOutImg: sprite(222px, 341px, 48px, 48px);
@@ -960,13 +969,18 @@ btnSend: flatButton(btnDefFlat) {
width: -32px;
height: 46px;
textTop: 13px;
overTextTop: 13px;
downTextTop: 14px;
textTop: 12px;
overTextTop: 12px;
downTextTop: 13px;
font: font(16px);
overFont: font(16px);
}
btnUnblock: flatButton(btnSend) {
color: #d15948;
overColor: #d15948;
downColor: #db6352;
}
btnAttachDocument: iconedButton(btnDefIconed) {
icon: sprite(218px, 68px, 24px, 24px);
@@ -984,13 +998,40 @@ btnAttachPhoto: iconedButton(btnAttachDocument) {
}
btnAttachEmoji: iconedButton(btnAttachDocument) {
overBgColor: white;
icon: sprite(363px, 344px, 21px, 22px);
iconPos: point(6px, 13px);
downIcon: sprite(363px, 344px, 21px, 22px);
downIconPos: point(6px, 13px);
icon: sprite(374px, 344px, 21px, 22px);
iconPos: point(6px, 12px);
downIcon: sprite(374px, 344px, 21px, 22px);
downIconPos: point(6px, 12px);
width: 33px;
}
btnBotKbShow: iconedButton(btnAttachEmoji) {
icon: sprite(375px, 74px, 21px, 21px);
iconPos: point(6px, 12px);
downIcon: sprite(375px, 74px, 21px, 21px);
downIconPos: point(6px, 12px);
}
btnBotCmdStart: iconedButton(btnAttachEmoji) {
icon: sprite(354px, 74px, 21px, 21px);
iconPos: point(6px, 12px);
downIcon: sprite(354px, 74px, 21px, 21px);
downIconPos: point(6px, 12px);
}
btnBotKbHide: iconedButton(btnAttachEmoji) {
icon: sprite(373px, 95px, 23px, 14px);
iconPos: point(5px, 17px);
downIcon: sprite(373px, 95px, 23px, 14px);
downIconPos: point(5px, 17px);
}
btnRecordAudio: sprite(379px, 390px, 16px, 24px);
btnRecordAudioActive: sprite(379px, 366px, 16px, 24px);
recordSignalColor: #f17077;
recordSignalMin: 5px;
recordSignalMax: 10px;
recordCancel: #aaa;
recordCancelActive: #ec6466;
recordFont: font(13px);
recordTextTop: 14px;
replySkip: 51px;
replyColor: #377aae;
@@ -1031,7 +1072,34 @@ textRectMargins: margins(-2px, -1px, -2px, -1px);
taMsgField: flatTextarea(taDefFlat) {
font: msgFont;
}
maxFieldHeight: 250px;
maxFieldHeight: 220px;
// historyMinHeight: 56px;
reportSpamHide: flatButton(topBarButton) {
height: 46px;
textTop: 15px;
overTextTop: 15px;
downTextTop: 16px;
bgColor: transparent;
overBgColor: transparent;
downBgColor: transparent;
}
reportSpamButton: flatButton(reportSpamHide) {
textTop: 6px;
overTextTop: 6px;
downTextTop: 7px;
width: -50px;
height: 30px;
bgColor: #888;
overBgColor: #7b7b7b;
downBgColor: #7b7b7b;
}
reportSpamSeparator: 30px;
reportSpamBg: #fffffff0;
newMsgSound: ':/gui/art/newmsg.wav';
@@ -1118,7 +1186,7 @@ notifyTextTop: 7px;
notifySlowHideFunc: transition(easeInCirc);
notifyWaitShortHide: 0;
notifyWaitLongHide: 20000;
notifyFastAnim: 100;
notifyFastAnim: 150;
notifyFastAnimFunc: transition(linear);
notifyWidth: 316px;
notifyHeight: 80px;
@@ -1175,12 +1243,12 @@ btnShareContact: flatButton(btnDefNext, btnDefBig) {
font: font(17px);
overFont: font(17px);
}
profileMinBtnPadding: 10px;
forwardWidth: 364px;
forwardRadius: 2px;
forwardMargins: margins(30px, 10px, 30px, 10px);
forwardFont: font(16px);
forwardBG: rgba(0, 0, 0, 76);
forwardBg: rgba(0, 0, 0, 76);
btnProfileCancel: flatButton(btnDefFlat, btnDefBig) {
color: #666d78;
overColor: #666d78;
@@ -1376,6 +1444,7 @@ dropdownDef: dropdown {
padding: margins(10px, 10px, 10px, 10px);
shadow: sprite(241px, 46px, 6px, 6px);
shadowShift: 1px;
duration: 150;
width: 0px;
@@ -1413,6 +1482,10 @@ dropdownMediaAudios: iconedButton(dropdownMediaDocuments) {
icon: sprite(62px, 348px, 24px, 24px);
downIcon: sprite(62px, 348px, 24px, 24px);
}
dropdownMediaLinks: iconedButton(dropdownMediaDocuments) {
icon: sprite(372px, 414px, 24px, 24px);
downIcon: sprite(62px, 348px, 24px, 24px);
}
dragFont: font(28px semibold);
dragSubfont: font(20px semibold);
@@ -1474,7 +1547,7 @@ newScroll: flatScroll(scrollDef) {
stickersMaxHeight: 340px;
stickersAddOrShare: 70px;
btnStickersAdd: flatButton(btnDefNext, btnDefBig) {
width: 180px;
width: 200px;
height: 42px;
textTop: 9px;
@@ -1504,30 +1577,22 @@ stickersScroll: flatScroll(newScroll) {
emojiScroll: flatScroll(newScroll) {
deltat: 48px;
}
emojiRecent: sprite(0px, 196px, 21px, 22px);
emojiRecentOver: sprite(287px, 220px, 21px, 22px);
emojiRecentActive: sprite(287px, 242px, 21px, 22px);
emojiPeople: sprite(21px, 196px, 21px, 22px);
emojiPeopleOver: sprite(308px, 220px, 21px, 22px);
emojiPeopleActive: sprite(308px, 242px, 21px, 22px);
emojiNature: sprite(42px, 196px, 21px, 22px);
emojiNatureOver: sprite(245px, 264px, 21px, 22px);
emojiRecentOver: sprite(0px, 196px, 21px, 22px);
emojiRecentActive: sprite(245px, 264px, 21px, 22px);
emojiPeopleOver: sprite(21px, 196px, 21px, 22px);
emojiPeopleActive: sprite(266px, 264px, 21px, 22px);
emojiNatureOver: sprite(42px, 196px, 21px, 22px);
emojiNatureActive: sprite(245px, 286px, 21px, 22px);
emojiFood: sprite(63px, 196px, 21px, 22px);
emojiFoodOver: sprite(266px, 264px, 21px, 22px);
emojiFoodOver: sprite(63px, 196px, 21px, 22px);
emojiFoodActive: sprite(266px, 286px, 21px, 22px);
emojiCelebration: sprite(84px, 196px, 21px, 22px);
emojiCelebrationOver: sprite(287px, 264px, 21px, 22px);
emojiCelebrationOver: sprite(84px, 196px, 21px, 22px);
emojiCelebrationActive: sprite(287px, 286px, 21px, 22px);
emojiActivity: sprite(105px, 196px, 21px, 22px);
emojiActivityOver: sprite(308px, 264px, 21px, 22px);
emojiActivityActive: sprite(308px, 286px, 21px, 22px);
emojiTravel: sprite(126px, 196px, 21px, 22px);
emojiTravelOver: sprite(321px, 344px, 21px, 22px);
emojiTravelActive: sprite(321px, 366px, 21px, 22px);
emojiObjects: sprite(147px, 196px, 21px, 22px);
emojiObjectsOver: sprite(342px, 344px, 21px, 22px);
emojiObjectsActive: sprite(342px, 366px, 21px, 22px);
emojiActivityOver: sprite(126px, 196px, 21px, 22px);
emojiActivityActive: sprite(287px, 264px, 21px, 22px);
emojiTravelOver: sprite(105px, 196px, 21px, 22px);
emojiTravelActive: sprite(308px, 286px, 21px, 22px);
emojiObjectsOver: sprite(147px, 196px, 21px, 22px);
emojiObjectsActive: sprite(308px, 264px, 21px, 22px);
emojiPanCategories: #f7f7f7;
@@ -1536,7 +1601,7 @@ rbEmoji: flatCheckbox {
bgColor: emojiPanCategories;
disColor: emojiPanCategories;
width: 36px;
width: 42px;
height: 46px;
textTop: 0px;
@@ -1547,83 +1612,83 @@ rbEmoji: flatCheckbox {
cursor: cursor(pointer);
disabledCursor: cursor(default);
imagePos: point(8px, 12px);
imagePos: point(11px, 12px);
}
rbEmojiRecent: flatCheckbox(rbEmoji) {
imageRect: emojiRecent;
imageRect: emojiRecentOver;
chkImageRect: emojiRecentActive;
overImageRect: emojiRecentOver;
chkOverImageRect: emojiRecentActive;
disImageRect: emojiRecent;
disImageRect: emojiRecentOver;
chkDisImageRect: emojiRecentActive;
}
rbEmojiPeople: flatCheckbox(rbEmoji) {
imageRect: emojiPeople;
imageRect: emojiPeopleOver;
chkImageRect: emojiPeopleActive;
overImageRect: emojiPeopleOver;
chkOverImageRect: emojiPeopleActive;
disImageRect: emojiPeople;
disImageRect: emojiPeopleOver;
chkDisImageRect: emojiPeopleActive;
}
rbEmojiNature: flatCheckbox(rbEmoji) {
imageRect: emojiNature;
imageRect: emojiNatureOver;
chkImageRect: emojiNatureActive;
overImageRect: emojiNatureOver;
chkOverImageRect: emojiNatureActive;
disImageRect: emojiNature;
disImageRect: emojiNatureOver;
chkDisImageRect: emojiNatureActive;
}
rbEmojiFood: flatCheckbox(rbEmoji) {
imageRect: emojiFood;
imageRect: emojiFoodOver;
chkImageRect: emojiFoodActive;
overImageRect: emojiFoodOver;
chkOverImageRect: emojiFoodActive;
disImageRect: emojiFood;
disImageRect: emojiFoodOver;
chkDisImageRect: emojiFoodActive;
}
rbEmojiCelebration: flatCheckbox(rbEmoji) {
imageRect: emojiCelebration;
imageRect: emojiCelebrationOver;
chkImageRect: emojiCelebrationActive;
overImageRect: emojiCelebrationOver;
chkOverImageRect: emojiCelebrationActive;
disImageRect: emojiCelebration;
disImageRect: emojiCelebrationOver;
chkDisImageRect: emojiCelebrationActive;
}
rbEmojiActivity: flatCheckbox(rbEmoji) {
imageRect: emojiActivity;
imageRect: emojiActivityOver;
chkImageRect: emojiActivityActive;
overImageRect: emojiActivityOver;
chkOverImageRect: emojiActivityActive;
disImageRect: emojiActivity;
disImageRect: emojiActivityOver;
chkDisImageRect: emojiActivityActive;
}
rbEmojiTravel: flatCheckbox(rbEmoji) {
imageRect: emojiTravel;
imageRect: emojiTravelOver;
chkImageRect: emojiTravelActive;
overImageRect: emojiTravelOver;
chkOverImageRect: emojiTravelActive;
disImageRect: emojiTravel;
disImageRect: emojiTravelOver;
chkDisImageRect: emojiTravelActive;
}
rbEmojiObjects: flatCheckbox(rbEmoji) {
imageRect: emojiObjects;
imageRect: emojiObjectsOver;
chkImageRect: emojiObjectsActive;
overImageRect: emojiObjectsOver;
chkOverImageRect: emojiObjectsActive;
disImageRect: emojiObjects;
disImageRect: emojiObjectsOver;
chkDisImageRect: emojiObjectsActive;
}
emojiPanPadding: 10px;
emojiPanSize: size(39px, 35px);
emojiPanFullSize: size(300px, 321px);
emojiPanPadding: 12px;
emojiPanSize: size(45px, 41px);
emojiPanWidth: 345px;
emojiPanMaxHeight: 366px;
emojiPanDuration: 200;
emojiPanHover: #f0f4f7;
emojiPanRound: 2px;
emojiPanHeader: 42px;
emojiPanHeaderFont: font(fsize semibold);
emojiPanHeaderColor: #999;
emojiPanHeaderLeft: 17px;
emojiPanHeaderLeft: 22px;
emojiPanHeaderTop: 12px;
emojiPanHeaderBg: #fffffff2;
@@ -1637,11 +1702,43 @@ emojiSwitchStickers: sprite(318px, 328px, 8px, 12px);
emojiSwitchEmoji: sprite(310px, 328px, 8px, 12px);
emojiSwitchColor: #42a8db;
stickerPanSize: size(55px, 55px);
stickerPanRound: 3px;
stickerPanSize: size(64px, 64px);
stickerPanPadding: 11px;
stickerPanDelete: sprite(123px, 132px, 12px, 12px);
stickerPanDeleteOpacity: 0.5;
stickerIconPadding: 3px;
stickerIconOpacity: 0.7;
stickerIconSel: 2px;
stickerIconSelColor: #58b2ed;
stickerIconRecent: sprite(342px, 50px, 21px, 22px);
stickerIconLeft: sprite(342px, 72px, 40px, 1px);
stickerIconRight: sprite(342px, 73px, 40px, 1px);
stickerIconMove: 400;
botKbDuration: 200;
botKbBg: #f7f7f7;
botKbOverBg: #e8ecef;
botKbDownBg: #dfe3e6;
botKbColor: #8a8a8f;
botKbFont: font(16px);
botKbButton: botKeyboardButton {
margin: 10px;
padding: 10px;
height: 36px;
textTop: 8px;
downTextTop: 9px;
}
botKbTinyButton: botKeyboardButton {
margin: 4px;
padding: 3px;
height: 25px;
textTop: 2px;
downTextTop: 3px;
}
botKbScroll: flatScroll(newScroll) {
deltax: 3px;
width: 10px;
}
mvBgColor: #222;
mvBgOpacity: 0.92;
@@ -1664,11 +1761,11 @@ mvControlMargin: 0px;
mvControlSize: 90px;
mvIconSize: size(60px, 56px);
mvLeft: sprite(320px, 400px, 12px, 22px);
mvRight: sprite(332px, 400px, 12px, 22px);
mvClose: sprite(344px, 400px, 18px, 18px);
mvSave: sprite(362px, 400px, 14px, 19px);
mvMore: sprite(376px, 400px, 5px, 21px);
mvLeft: sprite(320px, 445px, 12px, 22px);
mvRight: sprite(332px, 445px, 12px, 22px);
mvClose: sprite(344px, 445px, 18px, 18px);
mvSave: sprite(362px, 445px, 14px, 19px);
mvMore: sprite(376px, 445px, 5px, 21px);
mvDropdown: dropdown(dropdownDef) {
shadow: sprite(0px, 0px, 0px, 0px);
@@ -1718,9 +1815,13 @@ mvDocExtColor: white;
mvDocExtPadding: 10px;
mvDocLinksTop: 57px;
mvDocRed: sprite(0px, 400px, 80px, 80px);
mvDocRedColor: #e47272;
mvDocYellow: sprite(80px, 400px, 80px, 80px);
mvDocYellowColor: #efc274;
mvDocGreen: sprite(160px, 400px, 80px, 80px);
mvDocGreenColor: #61b96e;
mvDocBlue: sprite(240px, 400px, 80px, 80px);
mvDocBlueColor: #72b1df;
mvDocLink: linkButton(btnDefLink) {
color: #4595d3;
overColor: #4595d3;
@@ -1730,11 +1831,16 @@ mvDocLink: linkButton(btnDefLink) {
mvDeltaFromLastAction: 5px;
mvSwipeDistance: 80px;
mvCaptionPadding: margins(18px, 10px, 18px, 10px);
mvCaptionMargin: size(11px, 11px);
mvCaptionRadius: 2px;
mvCaptionBg: #11111180;
mvCaptionFont: font(fsize);
medviewSaveMsgCheck: sprite(311px, 309px, 22px, 18px);
medviewSaveMsgFont: font(16px);
medviewSaveMsgPadding: margins(55px, 19px, 29px, 20px);
medviewSaveMsgCheckPos: point(23px, 21px);
medviewSaveMsgRadius: 3px;
medviewSaveMsgShowing: 200;
medviewSaveMsgShown: 2000;
medviewSaveMsgHiding: 2500;
@@ -1794,7 +1900,7 @@ radialBgOpacity: 0.4;
radialDownload: sprite(346px, 0px, 50px, 50px);
radialDownloadOpacity: 0.8;
radialCancel: sprite(378px, 50px, 18px, 18px);
radialCancelOpacity: 0.7;
radialCancelOpacity: 1.0;
overviewLoader: size(34px, 14px);
overviewLoaderPoint: size(4px, 4px);
@@ -1863,6 +1969,11 @@ mentionPadding: margins(8px, 5px, 8px, 5px);
mentionTop: 11px;
mentionFont: linkFont;
mentionPhotoSize: msgPhotoSize;
mentionBgOver: #f5f5f5;
mentionFg: #777;
mentionFgOver: #707070;
mentionFgActive: #0080c0;
mentionFgOverActive: #0077b3;
sessionsHeight: 440px;
sessionHeight: 70px;
@@ -1891,3 +2002,50 @@ webPageDescriptionFont: font(fsize);
webPagePhotoSkip: 5px;
webPagePhotoSize: 100px;
webPagePhotoDelta: 8px;
botDescSkip: 8px;
suppressAll: 0.2;
suppressSong: 0.05;
playerHeight: 44px;
playerBg: #e4e9ef;
playerFg: #54748f;
playerTimeFg: #a4afba;
playerLineHeight: 3px;
playerMoverSize: size(2px, 7px);
playerLineActive: #6389a8;
playerLineInactive: #bac7d4;
playerSkip: 8px;
playerNameStyle: textStyle(defaultTextStyle) {
lnkColor: #6389a8;
lnkDownColor: #6389a8;
lnkFlags: font(fsize semibold);
lnkOverFlags: font(fsize semibold);
}
playerPlay: sprite(377px, 109px, 19px, 22px);
playerPause: sprite(379px, 131px, 17px, 20px);
playerNext: sprite(374px, 151px, 22px, 14px);
playerPrev: sprite(374px, 165px, 22px, 14px);
playerClose: sprite(361px, 97px, 12px, 12px);
playerFull: sprite(365px, 109px, 12px, 12px);
playerRepeat: sprite(365px, 121px, 12px, 14px);
playerVolume: sprite(352px, 179px, 44px, 12px);
playerInactiveOpacity: 0.8;
playerUnavailableOpacity: 0.3;
playerDuration: 200;
playlistHoverBg: #f2f2f2;
playlistPadding: 10px;
linksSearchMargin: margins(20px, 20px, 20px, 0px);
linksMaxWidth: 520px;
linksLetterFont: font(24px);
linksMargin: 5px;
linksBorder: 1px;
linksBorderColor: #eaeaea;
linksDateColor: #000;
linksDateMargin: 15px;
linksPhotoCheck: sprite(184px, 196px, 16px, 16px);
linksPhotoChecked: sprite(168px, 196px, 16px, 16px);

View File

@@ -20,7 +20,7 @@ textStyle {
lnkOverFlags: font;
lnkColor: color;
lnkDownColor: color;
selectBG: color;
selectBg: color;
selectOverlay: color;
lineHeight: number;
}
@@ -254,7 +254,16 @@ dropdown {
padding: margins;
shadow: sprite;
shadowShift: number;
duration: number;
width: number;
}
botKeyboardButton {
margin: number;
padding: number;
height: number;
textTop: number;
downTextTop: number;
}

View File

@@ -18,6 +18,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
#include "genstyles.h"
#include <QtCore/QtPlugin>
#include <QtCore/QRegularExpression>
#ifdef Q_OS_WIN
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)
@@ -1345,6 +1346,12 @@ bool genStyles(const QString &classes_in, const QString &classes_out, const QStr
QCoreApplication::exit(1);
return false;
}
QString numbers_cpp = QString(styles_cpp).replace("style_auto.cpp", "numbers.cpp");
if (numbers_cpp == styles_cpp) {
cout << "Bad output file name '" << numbers_cpp.toUtf8().constData() << "'!\n";
QCoreApplication::exit(1);
return false;
}
QFile f(styles_in);
if (!f.open(QIODevice::ReadOnly)) {
@@ -1353,6 +1360,20 @@ bool genStyles(const QString &classes_in, const QString &classes_out, const QStr
return false;
}
QString numbers_in = QString(styles_in).replace("style.txt", "numbers.txt");
if (numbers_in == styles_in) {
cout << "Bad input file name '" << numbers_in.toUtf8().constData() << "'!\n";
QCoreApplication::exit(1);
return false;
}
QFile fnum(numbers_in);
if (!fnum.open(QIODevice::ReadOnly)) {
cout << "Could not open numbers input file '" << numbers_in.toUtf8().constData() << "'!\n";
QCoreApplication::exit(1);
return false;
}
QImage sprites[variantsCount];
int widths[variantsCount] = { 0 };
variantSprites = sprites;
@@ -1574,7 +1595,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org\n\
tcpp << "\tFontFamilies _fontFamilies;\n";
tcpp << "\tFontDatas _fontsMap;\n";
tcpp << "\tColorDatas _colorsMap;\n";
tcpp << "int _spriteWidth = " << spriteWidths[0] << ";\n\n";
tcpp << "\tint _spriteWidth = " << spriteWidths[0] << ";\n\n";
tcpp << "\tvoid startManager() {\n";
tcpp << "\n\t\tif (cRetina()) {\n";
@@ -1854,6 +1875,137 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org\n\
if (!cpp.open(QIODevice::WriteOnly)) throw Exception("Could not open style_auto.cpp for writing!");
if (cpp.write(cppText) != cppText.size()) throw Exception("Could not open style_auto.cpp for writing!");
}
QMap<QString, QVector<int> > numberRules;
QList<QByteArray> numlines = fnum.readAll().split('\n');
for (int i = 0, l = numlines.size(); i < l; ++i) {
QList<QByteArray> strs = numlines.at(i).split(';');
if (strs.isEmpty()) continue;
QString code = QString::fromLatin1(strs.at(0)).trimmed();
if (code.isEmpty() || QRegularExpression("[^0-9]").match(code).hasMatch()) {
throw Exception("Bad string in number.txt: " + numlines.at(i));
}
if (strs.size() < 5) {
numberRules.insert(code, QVector<int>());
} else {
QString lenstr = QString::fromLatin1(strs.at(4)).trimmed(), pattern = QString::fromLatin1(strs.at(3)).trimmed();
if (QRegularExpression("[^0-9]").match(lenstr).hasMatch() || !pattern.startsWith(code + ' ')) {
throw Exception("Bad string in number.txt: " + numlines.at(i));
}
QStringList lst = pattern.mid(code.size() + 1).split(' ');
int len = lenstr.toInt(), sum = code.size();
QVector<int> result;
for (int j = 0, c = lst.size(); j < c; ++j) {
if (lst.at(j).isEmpty()) continue;
if (QRegularExpression("[^X]").match(lst.at(j)).hasMatch()) {
throw Exception("Bad string in number.txt: " + numlines.at(i));
}
result.push_back(lst.at(j).size());
sum += lst.at(j).size();
}
if (sum != len) {
throw Exception("Bad length in number.txt: " + numlines.at(i));
}
numberRules.insert(code, result);
}
}
QByteArray numText;
{
QTextStream tnum(&numText);
tnum << "\
/*\n\
Created from \'/Resources/style.txt\' by \'/MetaStyle\' project\n\
\n\
WARNING! All changes made in this file will be lost!\n\
\n\
This file is part of Telegram Desktop,\n\
the official desktop version of Telegram messaging app, see https://telegram.org\n\
\n\
Telegram Desktop is free software: you can redistribute it and/or modify\n\
it under the terms of the GNU General Public License as published by\n\
the Free Software Foundation, either version 3 of the License, or\n\
(at your option) any later version.\n\
\n\
It is distributed in the hope that it will be useful,\n\
but WITHOUT ANY WARRANTY; without even the implied warranty of\n\
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\
GNU General Public License for more details.\n\
\n\
Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE\n\
Copyright (c) 2014 John Preston, https://desktop.telegram.org\n\
*/\n";
tnum << "#include \"stdafx.h\"\n#include \"numbers.h\"\n\n";
tnum << "QVector<int> phoneNumberParse(const QString &number) {\n";
tnum << "\tQVector<int> result;\n\n";
tnum << "\tint32 len = number.size();\n";
tnum << "\tif (len > 0) switch (number.at(0).unicode()) {\n";
QString already;
for (QMap<QString, QVector<int> >::const_iterator i = numberRules.cend(), e = numberRules.cbegin(); i != e;) {
--i;
QString k = i.key();
bool onlyLastChanged = true;
while (!already.isEmpty() && (already.size() > k.size() || !already.endsWith(k.at(already.size() - 1)))) {
if (!onlyLastChanged) {
tnum << QString("\t").repeated(1 + already.size()) << "}\n";
tnum << QString("\t").repeated(1 + already.size()) << "return result;\n";
}
already = already.mid(0, already.size() - 1);
onlyLastChanged = false;
}
if (already == k) {
tnum << QString("\t").repeated(1 + already.size()) << "}\n";
} else {
bool onlyFirstCheck = true;
while (already.size() < k.size()) {
if (!onlyFirstCheck) tnum << QString("\t").repeated(1 + already.size()) << "if (len > " << already.size() << ") switch (number.at(" << already.size() << ").unicode()) {\n";
tnum << QString("\t").repeated(1 + already.size()) << "case '" << k.at(already.size()).toLatin1() << "':\n";
already.push_back(k.at(already.size()));
onlyFirstCheck = false;
}
}
if (i.value().isEmpty()) {
tnum << QString("\t").repeated(1 + already.size()) << "return QVector<int>(1, " << k.size() << ");\n";
} else {
tnum << QString("\t").repeated(1 + already.size()) << "result.reserve(" << (i.value().size() + 1) << ");\n";
tnum << QString("\t").repeated(1 + already.size()) << "result.push_back(" << k.size() << ");\n";
for (int j = 0, l = i.value().size(); j < l; ++j) {
tnum << QString("\t").repeated(1 + already.size()) << "result.push_back(" << i.value().at(j) << ");\n";
}
tnum << QString("\t").repeated(1 + already.size()) << "return result;\n";
}
}
bool onlyLastChanged = true;
while (!already.isEmpty()) {
if (!onlyLastChanged) {
tnum << QString("\t").repeated(1 + already.size()) << "}\n";
// tnum << QString("\t").repeated(1 + already.size()) << "\return result;\n";
}
already = already.mid(0, already.size() - 1);
onlyLastChanged = false;
}
tnum << "\t}\n\n";
tnum << "\treturn result;\n";
tnum << "}\n";
}
QFile num(numbers_cpp);
bool write_num = true;
if (num.open(QIODevice::ReadOnly)) {
QByteArray wasNum = num.readAll();
if (wasNum.size() == numText.size()) {
if (!memcmp(wasNum.constData(), numText.constData(), numText.size())) {
write_num = false;
}
}
num.close();
}
if (write_num) {
cout << "Numbers compiled, writing..\n";
if (!num.open(QIODevice::WriteOnly)) throw Exception("Could not open numbers.cpp for writing!");
if (num.write(numText) != numText.size()) throw Exception("Could not open numbers.cpp for writing!");
}
} catch (exception &e) {
cout << e.what() << "\n";
QCoreApplication::exit(1);

View File

@@ -23,6 +23,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
#include <QtCore/QDir>
#include <QtCore/QStringList>
#include <QtCore/QBuffer>
#include <QtCore/QDataStream>
#include <zlib.h>

View File

@@ -96,12 +96,11 @@ void writeLog(const wstring &msg) {
}
}
void delFolder() {
wstring delPath = L"tupdates\\ready", delFolder = L"tupdates";
void fullClearPath(const wstring &dir) {
WCHAR path[4096];
memcpy(path, delPath.c_str(), (delPath.size() + 1) * sizeof(WCHAR));
path[delPath.size() + 1] = 0;
writeLog(L"Fully clearing path '" + delPath + L"'..");
memcpy(path, dir.c_str(), (dir.size() + 1) * sizeof(WCHAR));
path[dir.size() + 1] = 0;
writeLog(L"Fully clearing path '" + dir + L"'..");
SHFILEOPSTRUCT file_op = {
NULL,
FO_DELETE,
@@ -116,13 +115,46 @@ void delFolder() {
};
int res = SHFileOperation(&file_op);
if (res) writeLog(L"Error: failed to clear path! :(");
}
void delFolder() {
wstring delPathOld = L"tupdates\\ready", delPath = L"tupdates\\temp", delFolder = L"tupdates";
fullClearPath(delPathOld);
fullClearPath(delPath);
RemoveDirectory(delFolder.c_str());
}
DWORD versionNum = 0, versionLen = 0, readLen = 0;
WCHAR versionStr[32] = { 0 };
bool update() {
writeLog(L"Update started..");
wstring updDir = L"tupdates\\ready";
wstring updDir = L"tupdates\\temp", readyFilePath = L"tupdates\\temp\\ready", tdataDir = L"tupdates\\temp\\tdata";
{
HANDLE readyFile = CreateFile(readyFilePath.c_str(), GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if (readyFile != INVALID_HANDLE_VALUE) {
CloseHandle(readyFile);
} else {
updDir = L"tupdates\\ready"; // old
tdataDir = L"tupdates\\ready\\tdata";
}
}
HANDLE versionFile = CreateFile((tdataDir + L"\\version").c_str(), GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if (versionFile != INVALID_HANDLE_VALUE) {
if (ReadFile(versionFile, &versionNum, sizeof(DWORD), &readLen, NULL) != TRUE || readLen != sizeof(DWORD)) {
versionNum = 0;
} else if (ReadFile(versionFile, &versionLen, sizeof(DWORD), &readLen, NULL) != TRUE || readLen != sizeof(DWORD) || versionLen > 63) {
versionNum = 0;
} else if (ReadFile(versionFile, versionStr, versionLen, &readLen, NULL) != TRUE || readLen != versionLen) {
versionNum = 0;
}
CloseHandle(versionFile);
writeLog(L"Version file read.");
} else {
writeLog(L"Could not open version file to update registry :(");
}
deque<wstring> dirs;
dirs.push_back(updDir);
@@ -154,22 +186,27 @@ bool update() {
}
do {
if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
wstring fname = dir + L"\\" + findData.cFileName;
if (fname.substr(0, tdataDir.size()) == tdataDir && (fname.size() <= tdataDir.size() || fname.at(tdataDir.size()) == '/')) {
writeLog(L"Skipped 'tdata' path '" + fname + L"'");
} else if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
if (findData.cFileName != wstring(L".") && findData.cFileName != wstring(L"..")) {
dirs.push_back(dir + L"\\" + findData.cFileName);
writeLog(L"Added dir '" + dir + L"\\" + findData.cFileName + L"' in update tree..");
dirs.push_back(fname);
writeLog(L"Added dir '" + fname + L"' in update tree..");
}
} else {
wstring fname = dir + L"\\" + findData.cFileName;
wstring tofname = updateTo + fname.substr(updDir.size() + 1);
if (equal(tofname, exeName)) { // bad update - has Updater.exe - delete all dir
writeLog(L"Error: bad update, has Updater.exe! '" + tofname + L"' equal '" + exeName + L"'");
delFolder();
return false;
} else if (equal(fname, readyFilePath)) {
writeLog(L"Skipped ready file '" + fname + L"'");
} else {
from.push_back(fname);
to.push_back(tofname);
writeLog(L"Added file '" + fname + L"' to be copied to '" + tofname + L"'");
}
from.push_back(fname);
to.push_back(tofname);
writeLog(L"Added file '" + fname + L"' to be copied to '" + tofname + L"'");
}
} while (FindNextFile(findHandle, &findData));
DWORD errorCode = GetLastError();
@@ -230,73 +267,57 @@ bool update() {
}
void updateRegistry() {
HANDLE versionFile = CreateFile((updateTo + L"tdata\\version").c_str(), GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if (versionFile != INVALID_HANDLE_VALUE) {
if (versionNum) {
writeLog(L"Updating registry..");
DWORD versionNum = 0, versionLen = 0, readLen = 0;
WCHAR versionStr[32];
if (ReadFile(versionFile, &versionNum, sizeof(DWORD), &readLen, NULL) != TRUE || readLen != sizeof(DWORD)) {
versionNum = 0;
} else if (ReadFile(versionFile, &versionLen, sizeof(DWORD), &readLen, NULL) != TRUE || readLen != sizeof(DWORD) || versionLen > 63) {
versionNum = 0;
} else if (ReadFile(versionFile, versionStr, versionLen, &readLen, NULL) != TRUE || readLen != versionLen) {
versionNum = 0;
}
CloseHandle(versionFile);
writeLog(L"Version file read.");
if (versionNum) {
versionStr[versionLen / 2] = 0;
HKEY rkey;
LSTATUS status = RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{53F49750-6209-4FBF-9CA8-7A333C87D1ED}_is1", 0, KEY_QUERY_VALUE | KEY_SET_VALUE, &rkey);
if (status == ERROR_SUCCESS) {
writeLog(L"Checking registry install location..");
static const int bufSize = 4096;
DWORD locationType, locationSize = bufSize * 2;
WCHAR locationStr[bufSize], exp[bufSize];
if (RegQueryValueEx(rkey, L"InstallLocation", 0, &locationType, (BYTE*)locationStr, &locationSize) == ERROR_SUCCESS) {
locationSize /= 2;
if (locationStr[locationSize - 1]) {
locationStr[locationSize++] = 0;
versionStr[versionLen / 2] = 0;
HKEY rkey;
LSTATUS status = RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{53F49750-6209-4FBF-9CA8-7A333C87D1ED}_is1", 0, KEY_QUERY_VALUE | KEY_SET_VALUE, &rkey);
if (status == ERROR_SUCCESS) {
writeLog(L"Checking registry install location..");
static const int bufSize = 4096;
DWORD locationType, locationSize = bufSize * 2;
WCHAR locationStr[bufSize], exp[bufSize];
if (RegQueryValueEx(rkey, L"InstallLocation", 0, &locationType, (BYTE*)locationStr, &locationSize) == ERROR_SUCCESS) {
locationSize /= 2;
if (locationStr[locationSize - 1]) {
locationStr[locationSize++] = 0;
}
if (locationType == REG_EXPAND_SZ) {
DWORD copy = ExpandEnvironmentStrings(locationStr, exp, bufSize);
if (copy <= bufSize) {
memcpy(locationStr, exp, copy * sizeof(WCHAR));
}
if (locationType == REG_EXPAND_SZ) {
DWORD copy = ExpandEnvironmentStrings(locationStr, exp, bufSize);
if (copy <= bufSize) {
memcpy(locationStr, exp, copy * sizeof(WCHAR));
}
}
if (locationType == REG_EXPAND_SZ || locationType == REG_SZ) {
if (PathCanonicalize(exp, locationStr) == TRUE) {
memcpy(locationStr, exp, bufSize * sizeof(WCHAR));
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], 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 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));
}
if (locationType == REG_EXPAND_SZ || locationType == REG_SZ) {
if (PathCanonicalize(exp, locationStr) == TRUE) {
memcpy(locationStr, exp, bufSize * sizeof(WCHAR));
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], 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 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));
WCHAR *appURL = L"https://desktop.telegram.org";
RegSetValueEx(rkey, L"HelpLink", 0, REG_SZ, (BYTE*)appURL, (wcslen(appURL) + 1) * sizeof(WCHAR));
RegSetValueEx(rkey, L"URLInfoAbout", 0, REG_SZ, (BYTE*)appURL, (wcslen(appURL) + 1) * sizeof(WCHAR));
RegSetValueEx(rkey, L"URLUpdateInfo", 0, REG_SZ, (BYTE*)appURL, (wcslen(appURL) + 1) * sizeof(WCHAR));
}
WCHAR *appURL = L"https://desktop.telegram.org";
RegSetValueEx(rkey, L"HelpLink", 0, REG_SZ, (BYTE*)appURL, (wcslen(appURL) + 1) * sizeof(WCHAR));
RegSetValueEx(rkey, L"URLInfoAbout", 0, REG_SZ, (BYTE*)appURL, (wcslen(appURL) + 1) * sizeof(WCHAR));
RegSetValueEx(rkey, L"URLUpdateInfo", 0, REG_SZ, (BYTE*)appURL, (wcslen(appURL) + 1) * sizeof(WCHAR));
}
}
}
}
RegCloseKey(rkey);
}
RegCloseKey(rkey);
}
} else {
writeLog(L"Could not open version file to update registry :(");
}
}
@@ -357,7 +378,7 @@ int APIENTRY WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR cmdParama
updateRegistry();
}
if (writeprotected) { // if we can't clear all tupdates\ready (Updater.exe is there) - clear only version
if (DeleteFile(L"tupdates\\ready\\tdata\\version")) {
if (DeleteFile(L"tupdates\\temp\\tdata\\version") || DeleteFile(L"tupdates\\ready\\tdata\\version")) {
writeLog(L"Version file deleted!");
} else {
writeLog(L"Error: could not delete version file");
@@ -386,7 +407,6 @@ int APIENTRY WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR cmdParama
HRESULT hres = CoInitialize(0);
if (SUCCEEDED(hres)) {
wstring lnk = L"tupdates\\ready\\temp.lnk";
IShellLink* psl;
HRESULT hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl);
if (SUCCEEDED(hres)) {
@@ -401,7 +421,12 @@ int APIENTRY WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR cmdParama
hres = psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf);
if (SUCCEEDED(hres)) {
wstring lnk = L"tupdates\\temp\\temp.lnk";
hres = ppf->Save(lnk.c_str(), TRUE);
if (!SUCCEEDED(hres)) {
lnk = L"tupdates\\ready\\temp.lnk"; // old
hres = ppf->Save(lnk.c_str(), TRUE);
}
ppf->Release();
if (SUCCEEDED(hres)) {

View File

@@ -49,12 +49,13 @@ bool do_mkdir(const char *path) { // from http://stackoverflow.com/questions/675
}
bool _debug = false;
string exeName, exeDir, workDir;
FILE *_logFile = 0;
void openLog() {
if (!_debug || _logFile) return;
if (!do_mkdir("DebugLogs")) {
if (!do_mkdir((workDir + "DebugLogs").c_str())) {
return;
}
@@ -65,7 +66,7 @@ void openLog() {
static const int maxFileLen = 65536;
char logName[maxFileLen];
sprintf(logName, "DebugLogs/%04d%02d%02d_%02d%02d%02d_upd.txt",
sprintf(logName, "%sDebugLogs/%04d%02d%02d_%02d%02d%02d_upd.txt", workDir.c_str(),
t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec);
_logFile = fopen(logName, "w");
}
@@ -136,7 +137,7 @@ bool remove_directory(const string &path) { // from http://stackoverflow.com/que
if (!d) {
writeLog("Could not open dir '%s'", path.c_str());
return false;
return (errno == ENOENT);
}
while (struct dirent *p = readdir(d)) {
@@ -192,8 +193,6 @@ bool mkpath(const char *path) {
return do_mkdir(path);
}
string exeName, exeDir, workDir;
bool equal(string a, string b) {
std::transform(a.begin(), a.end(), a.begin(), ::tolower);
std::transform(b.begin(), b.end(), b.begin(), ::tolower);
@@ -201,18 +200,33 @@ bool equal(string a, string b) {
}
void delFolder() {
string delPath = workDir + "tupdates/ready", delFolder = workDir + "tupdates";
writeLog("Fully clearing path '%s'..", delPath.c_str());
if (!remove_directory(delPath)) {
writeLog("Error: failed to clear path! :(");
string delPathOld = workDir + "tupdates/ready", delPath = workDir + "tupdates/temp", delFolder = workDir + "tupdates";
writeLog("Fully clearing old path '%s'..", delPathOld.c_str());
if (!remove_directory(delPathOld)) {
writeLog("Failed to clear old path! :( New path was used?..");
}
rmdir(delFolder.c_str());
writeLog("Fully clearing path '%s'..", delPath.c_str());
if (!remove_directory(delPath)) {
writeLog("Error: failed to clear path! :(");
}
rmdir(delFolder.c_str());
}
bool update() {
writeLog("Update started..");
string updDir = workDir + "tupdates/ready";
string updDir = workDir + "tupdates/temp", readyFilePath = workDir + "tupdates/temp/ready", tdataDir = workDir + "tupdates/temp/tdata";
{
FILE *readyFile = fopen(readyFilePath.c_str(), "rb");
if (readyFile) {
fclose(readyFile);
writeLog("Ready file found! Using new path '%s'..", updDir.c_str());
} else {
updDir = workDir + "tupdates/ready"; // old
tdataDir = workDir + "tupdates/ready/tdata";
writeLog("Ready file not found! Using old path '%s'..", updDir.c_str());
}
}
deque<string> dirs;
dirs.push_back(updDir);
@@ -242,7 +256,9 @@ bool update() {
string fname = dir + '/' + p->d_name;
struct stat statbuf;
if (!stat(fname.c_str(), &statbuf)) {
if (fname.substr(0, tdataDir.size()) == tdataDir && (fname.size() <= tdataDir.size() || fname.at(tdataDir.size()) == '/')) {
writeLog("Skipping 'tdata' path '%s'", fname.c_str());
} else if (!stat(fname.c_str(), &statbuf)) {
if (S_ISDIR(statbuf.st_mode)) {
dirs.push_back(fname);
writeLog("Added dir '%s' in update tree..", fname.c_str());
@@ -253,9 +269,13 @@ bool update() {
delFolder();
return false;
}
from.push_back(fname);
to.push_back(tofname);
writeLog("Added file '%s' to be copied to '%s'", fname.c_str(), tofname.c_str());
if (fname == readyFilePath) {
writeLog("Skipped ready file '%s'", fname.c_str());
} else {
from.push_back(fname);
to.push_back(tofname);
writeLog("Added file '%s' to be copied to '%s'", fname.c_str(), tofname.c_str());
}
}
} else {
writeLog("Could not get stat() for file %s", fname.c_str());
@@ -299,10 +319,6 @@ bool update() {
}
int main(int argc, char *argv[]) {
openLog();
writeLog("Updater started..");
bool needupdate = true, autostart = false, debug = false, tosettings = false, startintray = false, testmode = false;
char *key = 0;
@@ -313,7 +329,6 @@ int main(int argc, char *argv[]) {
autostart = true;
} else if (equal(argv[i], "-debug")) {
debug = _debug = true;
openLog();
} else if (equal(argv[i], "-startintray")) {
startintray = true;
} else if (equal(argv[i], "-testmode")) {
@@ -326,6 +341,12 @@ int main(int argc, char *argv[]) {
workDir = argv[i];
}
}
openLog();
writeLog("Updater started..");
for (int i = 0; i < argc; ++i) {
writeLog("Argument: '%s'", argv[i]);
}
if (needupdate) writeLog("Need to update!");
if (autostart) writeLog("From autostart!");
@@ -336,7 +357,7 @@ int main(int argc, char *argv[]) {
exeDir = exeName.substr(0, exeName.size() - 7);
writeLog("Exe dir is: %s", exeDir.c_str());
if (needupdate) {
if (workDir.empty()) { // old app launched
if (workDir.empty()) { // old app launched, update prepared in tupdates/ready (not in tupdates/temp)
writeLog("No workdir, trying to figure it out");
struct passwd *pw = getpwuid(getuid());
if (pw && pw->pw_dir && strlen(pw->pw_dir)) {

View File

@@ -35,7 +35,7 @@ void openLog() {
return;
}
NSDateFormatter *fmt = [[NSDateFormatter alloc] initWithDateFormat:@"DebugLogs/%Y%m%d %H%M%S_upd.txt" allowNaturalLanguage:NO];
NSDateFormatter *fmt = [[NSDateFormatter alloc] initWithDateFormat:@"DebugLogs/%Y%m%d_%H%M%S_upd.txt" allowNaturalLanguage:NO];
NSString *logPath = [workDir stringByAppendingString:[fmt stringFromDate:[NSDate date]]];
[[NSFileManager defaultManager] createFileAtPath:logPath contents:nil attributes:nil];
_logFile = [NSFileHandle fileHandleForWritingAtPath:logPath];
@@ -55,7 +55,14 @@ void writeLog(NSString *msg) {
}
void delFolder() {
[[NSFileManager defaultManager] removeItemAtPath:[workDir stringByAppendingString:@"tupdates/ready"] error:nil];
writeLog([@"Fully clearing old path: " stringByAppendingString:[workDir stringByAppendingString:@"tupdates/ready"]]);
if (![[NSFileManager defaultManager] removeItemAtPath:[workDir stringByAppendingString:@"tupdates/ready"] error:nil]) {
writeLog(@"Failed to clear old path! :( New path was used?..");
}
writeLog([@"Fully clearing new path: " stringByAppendingString:[workDir stringByAppendingString:@"tupdates/temp"]]);
if (![[NSFileManager defaultManager] removeItemAtPath:[workDir stringByAppendingString:@"tupdates/temp"] error:nil]) {
writeLog(@"Error: failed to clear new path! :(");
}
rmdir([[workDir stringByAppendingString:@"tupdates"] fileSystemRepresentation]);
}
@@ -132,13 +139,22 @@ int main(int argc, const char * argv[]) {
}
if (update) {
writeLog([@"Starting update files iteration, path: " stringByAppendingString: [workDir stringByAppendingString:@"tupdates/ready"]]);
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *srcDir = [workDir stringByAppendingString:@"tupdates/ready/"];
NSString *readyFilePath = [workDir stringByAppendingString:@"tupdates/temp/ready"];
NSString *srcDir = [workDir stringByAppendingString:@"tupdates/temp/"], *srcEnum = [workDir stringByAppendingString:@"tupdates/temp"];
if ([fileManager fileExistsAtPath:readyFilePath]) {
writeLog([@"Ready file found! Using new path: " stringByAppendingString: srcEnum]);
} else {
srcDir = [workDir stringByAppendingString:@"tupdates/ready/"]; // old
srcEnum = [workDir stringByAppendingString:@"tupdates/ready"];
writeLog([@"Ready file not found! Using old path: " stringByAppendingString: srcEnum]);
}
writeLog([@"Starting update files iteration, path: " stringByAppendingString: srcEnum]);
NSArray *keys = [NSArray arrayWithObject:NSURLIsDirectoryKey];
NSDirectoryEnumerator *enumerator = [fileManager
enumeratorAtURL:[NSURL fileURLWithPath:[workDir stringByAppendingString:@"tupdates/ready"]]
enumeratorAtURL:[NSURL fileURLWithPath:srcEnum]
includingPropertiesForKeys:keys
options:0
errorHandler:^(NSURL *url, NSError *error) {
@@ -163,18 +179,20 @@ int main(int argc, const char * argv[]) {
NSString *dstPath = [appDirFull stringByAppendingString:[pathPart substringFromIndex:r.length]];
NSError *error;
NSNumber *isDirectory = nil;
writeLog([[NSArray arrayWithObjects: @"Copying file ", srcPath, @" to ", dstPath, nil] componentsJoinedByString:@""]);
if (![url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:&error]) {
writeLog([@"Failed to get IsDirectory for file " stringByAppendingString:[url path]]);
delFolder();
break;
}
if ([isDirectory boolValue]) {
writeLog([[NSArray arrayWithObjects: @"Copying dir ", srcPath, @" to ", dstPath, nil] componentsJoinedByString:@""]);
if (![fileManager createDirectoryAtPath:dstPath withIntermediateDirectories:YES attributes:nil error:nil]) {
writeLog([@"Failed to force path for directory " stringByAppendingString:dstPath]);
delFolder();
break;
}
} else if ([srcPath isEqualToString:readyFilePath]) {
writeLog([[NSArray arrayWithObjects: @"Skipping ready file ", srcPath, nil] componentsJoinedByString:@""]);
} else if ([fileManager fileExistsAtPath:dstPath]) {
if (![[NSData dataWithContentsOfFile:srcPath] writeToFile:dstPath atomically:YES]) {
writeLog([@"Failed to edit file " stringByAppendingString:dstPath]);

View File

@@ -83,76 +83,6 @@ void ApiWrap::requestReplyTo(HistoryReply *reply, MsgId to) {
if (!req.req) _replyToTimer.start(1);
}
void ApiWrap::requestFullPeer(PeerData *peer) {
if (!peer || _fullRequests.contains(peer)) return;
mtpRequestId req;
if (peer->chat) {
req = MTP::send(MTPmessages_GetFullChat(MTP_int(App::chatFromPeer(peer->id))), rpcDone(&ApiWrap::gotChatFull, peer), rpcFail(&ApiWrap::gotPeerFailed, peer));
} else {
req = MTP::send(MTPusers_GetFullUser(peer->asUser()->inputUser), rpcDone(&ApiWrap::gotUserFull, peer), rpcFail(&ApiWrap::gotPeerFailed, peer));
}
_fullRequests.insert(peer, req);
}
void ApiWrap::requestWebPageDelayed(WebPageData *page) {
if (page->pendingTill <= 0) return;
_webPagesPending.insert(page, 0);
int32 left = (page->pendingTill - unixtime()) * 1000;
if (!_webPagesTimer.isActive() || left <= _webPagesTimer.remainingTime()) {
_webPagesTimer.start((left < 0 ? 0 : left) + 1);
}
}
void ApiWrap::clearWebPageRequest(WebPageData *page) {
_webPagesPending.remove(page);
if (_webPagesPending.isEmpty() && _webPagesTimer.isActive()) _webPagesTimer.stop();
}
void ApiWrap::clearWebPageRequests() {
_webPagesPending.clear();
_webPagesTimer.stop();
}
void ApiWrap::gotChatFull(PeerData *peer, const MTPmessages_ChatFull &result) {
const MTPDmessages_chatFull &d(result.c_messages_chatFull());
const MTPDchatFull &f(d.vfull_chat.c_chatFull());
App::feedUsers(d.vusers);
App::feedChats(d.vchats);
App::feedParticipants(f.vparticipants);
PhotoData *photo = App::feedPhoto(f.vchat_photo);
ChatData *chat = peer->asChat();
if (chat) {
if (photo) {
chat->photoId = photo->id;
photo->chat = chat;
}
chat->invitationUrl = (f.vexported_invite.type() == mtpc_chatInviteExported) ? qs(f.vexported_invite.c_chatInviteExported().vlink) : QString();
}
App::main()->gotNotifySetting(MTP_inputNotifyPeer(peer->input), f.vnotify_settings);
_fullRequests.remove(peer);
emit fullPeerLoaded(peer);
}
void ApiWrap::gotUserFull(PeerData *peer, const MTPUserFull &result) {
const MTPDuserFull &d(result.c_userFull());
App::feedUsers(MTP_vector<MTPUser>(1, d.vuser));
App::feedPhoto(d.vprofile_photo);
App::feedUserLink(MTP_int(App::userFromPeer(peer->id)), d.vlink.c_contacts_link().vmy_link, d.vlink.c_contacts_link().vforeign_link);
App::main()->gotNotifySetting(MTP_inputNotifyPeer(peer->input), d.vnotify_settings);
_fullRequests.remove(peer);
emit fullPeerLoaded(peer);
}
bool ApiWrap::gotPeerFailed(PeerData *peer, const RPCError &error) {
if (error.type().startsWith(qsl("FLOOD_WAIT_"))) return false;
_fullRequests.remove(peer);
return true;
}
void ApiWrap::resolveReplyTo() {
if (_replyToRequests.isEmpty()) return;
@@ -171,34 +101,6 @@ void ApiWrap::resolveReplyTo() {
}
}
void ApiWrap::resolveWebPages() {
QVector<MTPint> ids;
const WebPageItems &items(App::webPageItems());
ids.reserve(_webPagesPending.size());
int32 t = unixtime(), m = INT_MAX;
for (WebPagesPending::const_iterator i = _webPagesPending.cbegin(), e = _webPagesPending.cend(); i != e; ++i) {
if (i.value()) continue;
if (i.key()->pendingTill <= t) {
WebPageItems::const_iterator j = items.constFind(i.key());
if (j != items.cend() && !j.value().isEmpty()) {
ids.push_back(MTP_int(j.value().begin().key()->id));
}
} else {
m = qMin(m, i.key()->pendingTill - t);
}
}
if (!ids.isEmpty()) {
mtpRequestId req = MTP::send(MTPmessages_GetMessages(MTP_vector<MTPint>(ids)), rpcDone(&ApiWrap::gotWebPages));
for (WebPagesPending::iterator i = _webPagesPending.begin(); i != _webPagesPending.cend(); ++i) {
if (i.value()) continue;
if (i.key()->pendingTill <= t) {
i.value() = req;
}
}
}
if (m < INT_MAX) _webPagesTimer.start(m * 1000);
}
void ApiWrap::gotReplyTo(const MTPmessages_Messages &msgs, mtpRequestId req) {
switch (msgs.type()) {
case mtpc_messages_messages:
@@ -229,6 +131,324 @@ void ApiWrap::gotReplyTo(const MTPmessages_Messages &msgs, mtpRequestId req) {
}
}
void ApiWrap::requestFullPeer(PeerData *peer) {
if (!peer || _fullPeerRequests.contains(peer)) return;
mtpRequestId req;
if (peer->chat) {
req = MTP::send(MTPmessages_GetFullChat(MTP_int(App::chatFromPeer(peer->id))), rpcDone(&ApiWrap::gotChatFull, peer), rpcFail(&ApiWrap::gotPeerFullFailed, peer));
} else {
req = MTP::send(MTPusers_GetFullUser(peer->asUser()->inputUser), rpcDone(&ApiWrap::gotUserFull, peer), rpcFail(&ApiWrap::gotPeerFullFailed, peer));
}
_fullPeerRequests.insert(peer, req);
}
void ApiWrap::gotChatFull(PeerData *peer, const MTPmessages_ChatFull &result) {
const MTPDmessages_chatFull &d(result.c_messages_chatFull());
const MTPDchatFull &f(d.vfull_chat.c_chatFull());
const QVector<MTPChat> &vc(d.vchats.c_vector().v);
bool badVersion = (!vc.isEmpty() && vc.at(0).type() == mtpc_chat && vc.at(0).c_chat().vversion.v < peer->asChat()->version);
App::feedUsers(d.vusers, false);
App::feedChats(d.vchats, false);
App::feedParticipants(f.vparticipants, false, false);
const QVector<MTPBotInfo> &v(f.vbot_info.c_vector().v);
for (QVector<MTPBotInfo>::const_iterator i = v.cbegin(), e = v.cend(); i < e; ++i) {
switch (i->type()) {
case mtpc_botInfo: {
const MTPDbotInfo &b(i->c_botInfo());
UserData *user = App::userLoaded(b.vuser_id.v);
if (user) {
user->setBotInfo(*i);
App::clearPeerUpdated(user);
emit fullPeerUpdated(user);
}
} break;
}
}
PhotoData *photo = App::feedPhoto(f.vchat_photo);
ChatData *chat = peer->asChat();
if (chat) {
if (photo) {
chat->photoId = photo->id;
photo->chat = chat;
} else {
chat->photoId = 0;
}
chat->invitationUrl = (f.vexported_invite.type() == mtpc_chatInviteExported) ? qs(f.vexported_invite.c_chatInviteExported().vlink) : QString();
}
App::main()->gotNotifySetting(MTP_inputNotifyPeer(peer->input), f.vnotify_settings);
_fullPeerRequests.remove(peer);
if (badVersion) {
peer->asChat()->version = vc.at(0).c_chat().vversion.v;
requestPeer(peer);
}
App::clearPeerUpdated(peer);
emit fullPeerUpdated(peer);
App::emitPeerUpdated();
}
void ApiWrap::gotUserFull(PeerData *peer, const MTPUserFull &result) {
const MTPDuserFull &d(result.c_userFull());
App::feedUsers(MTP_vector<MTPUser>(1, d.vuser), false);
App::feedPhoto(d.vprofile_photo);
App::feedUserLink(MTP_int(App::userFromPeer(peer->id)), d.vlink.c_contacts_link().vmy_link, d.vlink.c_contacts_link().vforeign_link, false);
App::main()->gotNotifySetting(MTP_inputNotifyPeer(peer->input), d.vnotify_settings);
peer->asUser()->setBotInfo(d.vbot_info);
peer->asUser()->blocked = d.vblocked.v ? UserIsBlocked : UserIsNotBlocked;
_fullPeerRequests.remove(peer);
App::clearPeerUpdated(peer);
emit fullPeerUpdated(peer);
App::emitPeerUpdated();
}
bool ApiWrap::gotPeerFullFailed(PeerData *peer, const RPCError &error) {
if (error.type().startsWith(qsl("FLOOD_WAIT_"))) return false;
_fullPeerRequests.remove(peer);
return true;
}
void ApiWrap::requestPeer(PeerData *peer) {
if (!peer || _fullPeerRequests.contains(peer) || _peerRequests.contains(peer)) return;
mtpRequestId req;
if (peer->chat) {
req = MTP::send(MTPmessages_GetChats(MTP_vector<MTPint>(1, MTP_int(App::chatFromPeer(peer->id)))), rpcDone(&ApiWrap::gotChat, peer), rpcFail(&ApiWrap::gotPeerFailed, peer));
} else {
req = MTP::send(MTPusers_GetUsers(MTP_vector<MTPInputUser>(1, peer->asUser()->inputUser)), rpcDone(&ApiWrap::gotUser, peer), rpcFail(&ApiWrap::gotPeerFailed, peer));
}
_peerRequests.insert(peer, req);
}
void ApiWrap::requestPeers(const QList<PeerData*> &peers) {
QVector<MTPint> chats;
QVector<MTPInputUser> users;
chats.reserve(peers.size());
users.reserve(peers.size());
for (QList<PeerData*>::const_iterator i = peers.cbegin(), e = peers.cend(); i != e; ++i) {
if (!*i || _fullPeerRequests.contains(*i) || _peerRequests.contains(*i)) continue;
if ((*i)->chat) {
chats.push_back(MTP_int(App::chatFromPeer((*i)->id)));
} else {
users.push_back((*i)->asUser()->inputUser);
}
}
if (!chats.isEmpty()) MTP::send(MTPmessages_GetChats(MTP_vector<MTPint>(chats)), rpcDone(&ApiWrap::gotChats));
if (!users.isEmpty()) MTP::send(MTPusers_GetUsers(MTP_vector<MTPInputUser>(users)), rpcDone(&ApiWrap::gotUsers));
}
void ApiWrap::gotChat(PeerData *peer, const MTPmessages_Chats &result) {
_peerRequests.remove(peer);
if (result.type() == mtpc_messages_chats) {
const QVector<MTPChat> &v(result.c_messages_chats().vchats.c_vector().v);
bool badVersion = (!v.isEmpty() && v.at(0).type() == mtpc_chat && v.at(0).c_chat().vversion.v < peer->asChat()->version);
ChatData *chat = App::feedChats(result.c_messages_chats().vchats);
if (chat == peer) {
if (badVersion) {
peer->asChat()->version = v.at(0).c_chat().vversion.v;
requestPeer(peer);
}
}
}
}
void ApiWrap::gotUser(PeerData *peer, const MTPVector<MTPUser> &result) {
_peerRequests.remove(peer);
UserData *user = App::feedUsers(result);
if (user == peer) {
}
}
void ApiWrap::gotChats(const MTPmessages_Chats &result) {
App::feedChats(result.c_messages_chats().vchats);
}
void ApiWrap::gotUsers(const MTPVector<MTPUser> &result) {
App::feedUsers(result);
}
bool ApiWrap::gotPeerFailed(PeerData *peer, const RPCError &error) {
if (error.type().startsWith(qsl("FLOOD_WAIT_"))) return false;
_peerRequests.remove(peer);
return true;
}
void ApiWrap::scheduleStickerSetRequest(uint64 setId, uint64 access) {
if (!_stickerSetRequests.contains(setId)) {
_stickerSetRequests.insert(setId, qMakePair(access, 0));
}
}
void ApiWrap::requestStickerSets() {
for (QMap<uint64, QPair<uint64, mtpRequestId> >::iterator i = _stickerSetRequests.begin(), j = i, e = _stickerSetRequests.end(); i != e; i = j) {
if (i.value().second) continue;
++j;
int32 wait = (j == e) ? 0 : 10;
i.value().second = MTP::send(MTPmessages_GetStickerSet(MTP_inputStickerSetID(MTP_long(i.key()), MTP_long(i.value().first))), rpcDone(&ApiWrap::gotStickerSet, i.key()), rpcFail(&ApiWrap::gotStickerSetFail, i.key()), 0, wait);
}
}
void ApiWrap::gotStickerSet(uint64 setId, const MTPmessages_StickerSet &result) {
_stickerSetRequests.remove(setId);
if (result.type() != mtpc_messages_stickerSet) return;
const MTPDmessages_stickerSet &d(result.c_messages_stickerSet());
if (d.vset.type() != mtpc_stickerSet) return;
const MTPDstickerSet &s(d.vset.c_stickerSet());
StickerSets &sets(cRefStickerSets());
StickerSets::iterator it = sets.find(setId);
if (it == sets.cend()) return;
it->access = s.vaccess_hash.v;
it->hash = s.vhash.v;
it->shortName = qs(s.vshort_name);
QString title = qs(s.vtitle);
if ((it->flags & MTPDstickerSet_flag_official) && !title.compare(qstr("Great Minds"), Qt::CaseInsensitive)) {
title = lang(lng_stickers_default_set);
}
it->title = title;
it->flags = s.vflags.v;
const QVector<MTPDocument> &d_docs(d.vdocuments.c_vector().v);
StickerSets::iterator custom = sets.find(CustomStickerSetId);
QSet<DocumentData*> found;
int32 wasCount = -1;
for (int32 i = 0, l = d_docs.size(); i != l; ++i) {
DocumentData *doc = App::feedDocument(d_docs.at(i));
if (!doc || !doc->sticker()) continue;
if (wasCount < 0) wasCount = it->stickers.size();
if (it->stickers.indexOf(doc) < 0) {
it->stickers.push_back(doc);
} else {
found.insert(doc);
}
if (custom != sets.cend()) {
int32 index = custom->stickers.indexOf(doc);
if (index >= 0) {
custom->stickers.removeAt(index);
}
}
}
if (custom != sets.cend() && custom->stickers.isEmpty()) {
sets.erase(custom);
custom = sets.end();
}
bool writeRecent = false;
RecentStickerPack &recent(cGetRecentStickers());
if (wasCount < 0) { // no stickers received
for (RecentStickerPack::iterator i = recent.begin(); i != recent.cend();) {
if (it->stickers.indexOf(i->first) >= 0) {
i = recent.erase(i);
writeRecent = true;
} else {
++i;
}
}
cRefStickerSetsOrder().removeOne(setId);
sets.erase(it);
} else {
for (int32 j = 0, l = wasCount; j < l;) {
if (found.contains(it->stickers.at(j))) {
++j;
} else {
for (RecentStickerPack::iterator i = recent.begin(); i != recent.cend();) {
if (it->stickers.at(j) == i->first) {
i = recent.erase(i);
writeRecent = true;
} else {
++i;
}
}
it->stickers.removeAt(j);
--l;
}
}
if (it->stickers.isEmpty()) {
cRefStickerSetsOrder().removeOne(setId);
sets.erase(it);
}
}
if (writeRecent) {
Local::writeUserSettings();
}
Local::writeStickers();
if (App::main()) emit App::main()->stickersUpdated();
}
bool ApiWrap::gotStickerSetFail(uint64 setId, const RPCError &error) {
if (error.type().startsWith(qsl("FLOOD_WAIT_"))) return false;
_stickerSetRequests.remove(setId);
return true;
}
void ApiWrap::requestWebPageDelayed(WebPageData *page) {
if (page->pendingTill <= 0) return;
_webPagesPending.insert(page, 0);
int32 left = (page->pendingTill - unixtime()) * 1000;
if (!_webPagesTimer.isActive() || left <= _webPagesTimer.remainingTime()) {
_webPagesTimer.start((left < 0 ? 0 : left) + 1);
}
}
void ApiWrap::clearWebPageRequest(WebPageData *page) {
_webPagesPending.remove(page);
if (_webPagesPending.isEmpty() && _webPagesTimer.isActive()) _webPagesTimer.stop();
}
void ApiWrap::clearWebPageRequests() {
_webPagesPending.clear();
_webPagesTimer.stop();
}
void ApiWrap::resolveWebPages() {
QVector<MTPint> ids;
const WebPageItems &items(App::webPageItems());
ids.reserve(_webPagesPending.size());
int32 t = unixtime(), m = INT_MAX;
for (WebPagesPending::const_iterator i = _webPagesPending.cbegin(), e = _webPagesPending.cend(); i != e; ++i) {
if (i.value()) continue;
if (i.key()->pendingTill <= t) {
WebPageItems::const_iterator j = items.constFind(i.key());
if (j != items.cend() && !j.value().isEmpty()) {
ids.push_back(MTP_int(j.value().begin().key()->id));
}
} else {
m = qMin(m, i.key()->pendingTill - t);
}
}
if (!ids.isEmpty()) {
mtpRequestId req = MTP::send(MTPmessages_GetMessages(MTP_vector<MTPint>(ids)), rpcDone(&ApiWrap::gotWebPages));
for (WebPagesPending::iterator i = _webPagesPending.begin(); i != _webPagesPending.cend(); ++i) {
if (i.value()) continue;
if (i.key()->pendingTill <= t) {
i.value() = req;
}
}
}
if (m < INT_MAX) _webPagesTimer.start(m * 1000);
}
void ApiWrap::gotWebPages(const MTPmessages_Messages &msgs, mtpRequestId req) {
const QVector<MTPMessage> *v = 0;
switch (msgs.type()) {

View File

@@ -31,16 +31,21 @@ public:
void requestReplyTo(HistoryReply *reply, MsgId to);
void requestFullPeer(PeerData *peer);
void requestPeer(PeerData *peer);
void requestPeers(const QList<PeerData*> &peers);
void requestWebPageDelayed(WebPageData *page);
void clearWebPageRequest(WebPageData *page);
void clearWebPageRequests();
void scheduleStickerSetRequest(uint64 setId, uint64 access);
void requestStickerSets();
~ApiWrap();
signals:
void fullPeerLoaded(PeerData *peer);
void fullPeerUpdated(PeerData *peer);
public slots:
@@ -62,13 +67,24 @@ private:
void gotChatFull(PeerData *peer, const MTPmessages_ChatFull &result);
void gotUserFull(PeerData *peer, const MTPUserFull &result);
bool gotPeerFullFailed(PeerData *peer, const RPCError &err);
typedef QMap<PeerData*, mtpRequestId> PeerRequests;
PeerRequests _fullPeerRequests;
void gotChat(PeerData *peer, const MTPmessages_Chats &result);
void gotUser(PeerData *peer, const MTPVector<MTPUser> &result);
void gotChats(const MTPmessages_Chats &result);
void gotUsers(const MTPVector<MTPUser> &result);
bool gotPeerFailed(PeerData *peer, const RPCError &err);
typedef QMap<PeerData*, mtpRequestId> FullRequests;
FullRequests _fullRequests;
PeerRequests _peerRequests;
void gotWebPages(const MTPmessages_Messages &result, mtpRequestId req);
typedef QMap<WebPageData*, mtpRequestId> WebPagesPending;
WebPagesPending _webPagesPending;
SingleTimer _webPagesTimer;
QMap<uint64, QPair<uint64, mtpRequestId> > _stickerSetRequests;
void gotStickerSet(uint64 setId, const MTPmessages_StickerSet &result);
bool gotStickerSetFail(uint64 setId, const RPCError &error);
};

File diff suppressed because it is too large Load Diff

View File

@@ -35,6 +35,47 @@ typedef QHash<VideoData*, HistoryItemsMap> VideoItems;
typedef QHash<AudioData*, HistoryItemsMap> AudioItems;
typedef QHash<DocumentData*, HistoryItemsMap> DocumentItems;
typedef QHash<WebPageData*, HistoryItemsMap> WebPageItems;
struct ReplyMarkup {
ReplyMarkup(int32 flags = 0) : flags(flags) {
}
typedef QList<QList<QString> > Commands;
Commands commands;
int32 flags;
};
enum RoundCorners {
MaskCorners = 0x00, // for images
BlackCorners,
ServiceCorners,
ServiceSelectedCorners,
SelectedOverlayCorners,
DateCorners,
DateSelectedCorners,
ForwardCorners,
MediaviewSaveCorners,
EmojiHoverCorners,
StickerHoverCorners,
BotKeyboardCorners,
BotKeyboardOverCorners,
BotKeyboardDownCorners,
PhotoSelectOverlayCorners,
DocRedCorners,
DocYellowCorners,
DocGreenCorners,
DocBlueCorners,
InShadowCorners, // for photos without bg
InSelectedShadowCorners,
MessageInCorners, // with shadow
MessageInSelectedCorners,
MessageOutCorners,
MessageOutSelectedCorners,
ButtonHoverCorners,
RoundCornersCount
};
namespace App {
Application *app();
@@ -67,32 +108,40 @@ 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);
int32 onlineForSort(UserData *user, int32 now);
int32 onlineWillChangeIn(UserData *user, int32 nowOnServer);
QString onlineText(UserData *user, int32 nowOnServer, bool precise = false);
bool onlineColorUse(int32 online, int32 now);
bool onlineColorUse(UserData *user, int32 now);
UserData *feedUsers(const MTPVector<MTPUser> &users); // returns last user
ChatData *feedChats(const MTPVector<MTPChat> &chats); // returns last chat
void feedParticipants(const MTPChatParticipants &p);
void feedParticipantAdd(const MTPDupdateChatParticipantAdd &d);
void feedParticipantDelete(const MTPDupdateChatParticipantDelete &d);
UserData *feedUsers(const MTPVector<MTPUser> &users, bool emitPeerUpdated = true); // returns last user
ChatData *feedChats(const MTPVector<MTPChat> &chats, bool emitPeerUpdated = true); // returns last chat
void feedParticipants(const MTPChatParticipants &p, bool requestBotInfos, bool emitPeerUpdated = true);
void feedParticipantAdd(const MTPDupdateChatParticipantAdd &d, bool emitPeerUpdated = true);
void feedParticipantDelete(const MTPDupdateChatParticipantDelete &d, bool emitPeerUpdated = true);
void checkEntitiesUpdate(const MTPDmessage &m);
void feedMsgs(const MTPVector<MTPMessage> &msgs, int msgsState = 0); // 2 - new read message, 1 - new unread message, 0 - not new message, -1 - searched message
void feedWereRead(const QVector<MTPint> &msgsIds);
void feedInboxRead(const PeerId &peer, int32 upTo);
void feedOutboxRead(const PeerId &peer, int32 upTo);
void feedWereDeleted(const QVector<MTPint> &msgsIds);
void feedUserLinks(const MTPVector<MTPcontacts_Link> &links);
void feedUserLink(MTPint userId, const MTPContactLink &myLink, const MTPContactLink &foreignLink);
void feedUserLinks(const MTPVector<MTPcontacts_Link> &links, bool emitPeerUpdated = true);
void feedUserLink(MTPint userId, const MTPContactLink &myLink, const MTPContactLink &foreignLink, bool emitPeerUpdated = true);
void markPeerUpdated(PeerData *data);
void clearPeerUpdated(PeerData *data);
void emitPeerUpdated();
int32 maxMsgId();
ImagePtr image(const MTPPhotoSize &size);
StorageImageLocation imageLocation(int32 w, int32 h, const MTPFileLocation &loc);
StorageImageLocation imageLocation(const MTPPhotoSize &size);
PhotoData *feedPhoto(const MTPPhoto &photo, const PreparedPhotoThumbs &thumbs);
PhotoData *feedPhoto(const MTPPhoto &photo, PhotoData *convert = 0);
PhotoData *feedPhoto(const MTPDphoto &photo, PhotoData *convert = 0);
VideoData *feedVideo(const MTPDvideo &video, VideoData *convert = 0);
AudioData *feedAudio(const MTPaudio &audio, AudioData *convert = 0);
AudioData *feedAudio(const MTPDaudio &audio, AudioData *convert = 0);
DocumentData *feedDocument(const MTPdocument &document, const QPixmap &thumb);
DocumentData *feedDocument(const MTPdocument &document, DocumentData *convert = 0);
@@ -115,13 +164,18 @@ namespace App {
ChatData *chat(const PeerId &peer);
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());
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);
AudioData *audio(const AudioId &audio, AudioData *convert = 0, const uint64 &access = 0, int32 user = 0, int32 date = 0, const QString &mime = QString(), int32 duration = 0, int32 dc = 0, int32 size = 0);
PhotoData *photo(const PhotoId &photo);
PhotoData *photoSet(const PhotoId &photo, PhotoData *convert, const uint64 &access, int32 date, const ImagePtr &thumb, const ImagePtr &medium, const ImagePtr &full);
VideoData *video(const VideoId &video);
VideoData *videoSet(const VideoId &video, VideoData *convert, const uint64 &access, int32 date, int32 duration, int32 w, int32 h, const ImagePtr &thumb, int32 dc, int32 size);
AudioData *audio(const AudioId &audio);
AudioData *audioSet(const AudioId &audio, AudioData *convert, const uint64 &access, int32 date, const QString &mime, int32 duration, int32 dc, int32 size);
DocumentData *document(const DocumentId &document);
DocumentData *documentSet(const DocumentId &document, DocumentData *convert, const uint64 &access, int32 date, const QVector<MTPDocumentAttribute> &attributes, const QString &mime, const ImagePtr &thumb, int32 dc, int32 size, const StorageImageLocation &thumbLocation);
WebPageData *webPage(const WebPageId &webPage, WebPageData *convert = 0, const QString &type = QString(), const QString &url = QString(), const QString &displayUrl = QString(), const QString &siteName = QString(), const QString &title = QString(), const QString &description = QString(), PhotoData *photo = 0, int32 duration = 0, const QString &author = QString(), int32 pendingTill = -2);
ImageLinkData *imageLink(const QString &imageLink, ImageLinkType type = InvalidImageLink, const QString &url = QString());
WebPageData *webPage(const WebPageId &webPage);
WebPageData *webPageSet(const WebPageId &webPage, WebPageData *convert, const QString &, const QString &url, const QString &displayUrl, const QString &siteName, const QString &title, const QString &description, PhotoData *photo, DocumentData *doc, int32 duration, const QString &author, int32 pendingTill);
ImageLinkData *imageLink(const QString &imageLink);
ImageLinkData *imageLinkSet(const QString &imageLink, ImageLinkType type, const QString &url);
void forgetMedia();
MTPPhoto photoFromUserPhoto(MTPint userId, MTPint date, const MTPUserProfilePhoto &photo);
@@ -137,11 +191,13 @@ namespace App {
void historyClearItems();
void historyRegReply(HistoryReply *reply, HistoryItem *to);
void historyUnregReply(HistoryReply *reply, HistoryItem *to);
// void deleteHistory(const PeerId &peer);
void historyRegRandom(uint64 randomId, MsgId itemId);
void historyUnregRandom(uint64 randomId);
MsgId histItemByRandom(uint64 randomId);
void historyRegSentText(uint64 itemId, const QString &text);
void historyUnregSentText(uint64 itemId);
QString histSentTextByItem(uint64 itemId);
void hoveredItem(HistoryItem *item);
HistoryItem *hoveredItem();
@@ -192,27 +248,48 @@ namespace App {
void unregWebPageItem(WebPageData *data, HistoryItem *item);
const WebPageItems &webPageItems();
void regSharedContactPhone(int32 userId, const QString &phone);
QString phoneFromSharedContact(int32 userId);
void regMuted(PeerData *peer, int32 changeIn);
void unregMuted(PeerData *peer);
void updateMuted();
void feedReplyMarkup(MsgId msgId, const MTPReplyMarkup &markup);
void clearReplyMarkup(MsgId msgId);
const ReplyMarkup &replyMarkup(MsgId msgId);
void setProxySettings(QNetworkAccessManager &manager);
void setProxySettings(QTcpSocket &socket);
void sendBotCommand(const QString &cmd, MsgId replyTo = 0);
void insertBotCommand(const QString &cmd);
void searchByHashtag(const QString &tag);
void openUserByName(const QString &username, bool toProfile = false);
void openUserByName(const QString &username, bool toProfile = false, const QString &startToken = QString());
void joinGroupByHash(const QString &hash);
void stickersBox(const QString &name);
void openLocalUrl(const QString &url);
QImage **cornersMask();
QPixmap **corners(RoundCorners index);
void roundRect(QPainter &p, int32 x, int32 y, int32 w, int32 h, const style::color &bg, RoundCorners index, const style::color *sh = 0);
inline void roundRect(QPainter &p, const QRect &rect, const style::color &bg, RoundCorners index, const style::color *sh = 0) {
return roundRect(p, rect.x(), rect.y(), rect.width(), rect.height(), bg, index, sh);
}
void roundShadow(QPainter &p, int32 x, int32 y, int32 w, int32 h, const style::color &sh, RoundCorners index);
inline void roundShadow(QPainter &p, const QRect &rect, const style::color &sh, RoundCorners index) {
return roundShadow(p, rect.x(), rect.y(), rect.width(), rect.height(), sh, index);
}
void initBackground(int32 id = DefaultChatBackground, const QImage &p = QImage(), bool nowrite = false);
style::color msgServiceBG();
style::color historyScrollBarColor();
style::color historyScrollBgColor();
style::color historyScrollBarOverColor();
style::color historyScrollBgOverColor();
style::color introPointHoverColor();
const style::color &msgServiceBg();
const style::color &msgServiceSelectBg();
const style::color &historyScrollBarColor();
const style::color &historyScrollBgColor();
const style::color &historyScrollBarOverColor();
const style::color &historyScrollBgOverColor();
const style::color &introPointHoverColor();
struct WallPaper {
WallPaper(int32 id, ImagePtr thumb, ImagePtr full) : id(id), thumb(thumb), full(full) {

View File

@@ -29,6 +29,8 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
#include "localstorage.h"
#include "autoupdater.h"
namespace {
Application *mainApp = 0;
FileUploader *uploader = 0;
@@ -46,28 +48,43 @@ namespace {
}
}
class EventFilterForMac : public QObject {
class EventFilterForKeys : public QObject {
public:
EventFilterForMac(QObject *parent) : QObject(parent) {
EventFilterForKeys(QObject *parent) : QObject(parent) {
}
bool eventFilter(QObject *o, QEvent *e) {
if (e->type() == QEvent::KeyPress) {
QKeyEvent *ev = static_cast<QKeyEvent*>(e);
if (ev->key() == Qt::Key_W && (ev->modifiers() & (Qt::MetaModifier | Qt::ControlModifier))) {
if (cWorkMode() == dbiwmTrayOnly || cWorkMode() == dbiwmWindowAndTray) {
App::wnd()->minimizeToTray();
return true;
} else {
App::wnd()->hide();
App::wnd()->updateIsActive(cOfflineBlurTimeout());
App::wnd()->updateGlobalMenu();
if (cPlatform() == dbipMac) {
if (ev->key() == Qt::Key_W && (ev->modifiers() & (Qt::MetaModifier | Qt::ControlModifier))) {
if (cWorkMode() == dbiwmTrayOnly || cWorkMode() == dbiwmWindowAndTray) {
App::wnd()->minimizeToTray();
return true;
} else {
App::wnd()->hide();
App::wnd()->updateIsActive(cOfflineBlurTimeout());
App::wnd()->updateGlobalMenu();
return true;
}
} else if (ev->key() == Qt::Key_M && (ev->modifiers() & (Qt::MetaModifier | Qt::ControlModifier))) {
App::wnd()->setWindowState(Qt::WindowMinimized);
return true;
}
} else if (ev->key() == Qt::Key_M && (ev->modifiers() & (Qt::MetaModifier | Qt::ControlModifier))) {
App::wnd()->setWindowState(Qt::WindowMinimized);
return true;
}
if (ev->key() == Qt::Key_MediaPlay) {
if (App::main()) App::main()->player()->playPressed();
} else if (ev->key() == Qt::Key_MediaPause) {
if (App::main()) App::main()->player()->pausePressed();
} else if (ev->key() == Qt::Key_MediaTogglePlayPause) {
if (App::main()) App::main()->player()->playPausePressed();
} else if (ev->key() == Qt::Key_MediaStop) {
if (App::main()) App::main()->player()->stopPressed();
} else if (ev->key() == Qt::Key_MediaPrevious) {
if (App::main()) App::main()->player()->prevPressed();
} else if (ev->key() == Qt::Key_MediaNext) {
if (App::main()) App::main()->player()->nextPressed();
}
}
return QObject::eventFilter(o, e);
@@ -78,7 +95,10 @@ namespace {
Application::Application(int &argc, char **argv) : PsApplication(argc, argv),
serverName(psServerPrefix() + cGUIDStr()), closing(false),
updateRequestId(0), updateReply(0), updateThread(0), updateDownloader(0), _translator(0) {
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
updateRequestId(0), updateReply(0), updateThread(0), updateDownloader(0),
#endif
_translator(0) {
DEBUG_LOG(("Application Info: creation.."));
@@ -93,9 +113,7 @@ Application::Application(int &argc, char **argv) : PsApplication(argc, argv),
}
mainApp = this;
if (cPlatform() == dbipMac) {
installEventFilter(new EventFilterForMac(this));
}
installEventFilter(new EventFilterForKeys(this));
QFontDatabase::addApplicationFont(qsl(":/gui/art/fonts/OpenSans-Regular.ttf"));
QFontDatabase::addApplicationFont(qsl(":/gui/art/fonts/OpenSans-Bold.ttf"));
@@ -163,9 +181,11 @@ Application::Application(int &argc, char **argv) : PsApplication(argc, argv),
connect(&socket, SIGNAL(readyRead()), this, SLOT(socketReading()));
connect(&server, SIGNAL(newConnection()), this, SLOT(newInstanceConnected()));
connect(this, SIGNAL(aboutToQuit()), this, SLOT(closeApplication()));
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
connect(&updateCheckTimer, SIGNAL(timeout()), this, SLOT(startUpdateCheck()));
connect(this, SIGNAL(updateFailed()), this, SLOT(onUpdateFailed()));
connect(this, SIGNAL(updateReady()), this, SLOT(onUpdateReady()));
#endif
connect(this, SIGNAL(applicationStateChanged(Qt::ApplicationState)), this, SLOT(onAppStateChanged(Qt::ApplicationState)));
//connect(&writeUserConfigTimer, SIGNAL(timeout()), this, SLOT(onWriteUserConfig()));
//writeUserConfigTimer.setSingleShot(true);
@@ -180,29 +200,7 @@ Application::Application(int &argc, char **argv) : PsApplication(argc, argv),
}
}
void Application::onAppUpdate(const MTPhelp_AppUpdate &response) {
updateRequestId = 0;
cSetLastUpdateCheck(unixtime());
Local::writeSettings();
if (response.type() == mtpc_help_noAppUpdate) {
startUpdateCheck();
} else {
updateThread = new QThread();
connect(updateThread, SIGNAL(finished()), updateThread, SLOT(deleteLater()));
updateDownloader = new PsUpdateDownloader(updateThread, response.c_help_appUpdate());
updateThread->start();
}
}
bool Application::onAppUpdateFail() {
updateRequestId = 0;
cSetLastUpdateCheck(unixtime());
Local::writeSettings();
startUpdateCheck();
return true;
}
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
void Application::updateGotCurrent() {
if (!updateReply || updateThread) return;
@@ -213,7 +211,7 @@ void Application::updateGotCurrent() {
if (currentVersion > AppVersion) {
updateThread = new QThread();
connect(updateThread, SIGNAL(finished()), updateThread, SLOT(deleteLater()));
updateDownloader = new PsUpdateDownloader(updateThread, m.captured(2));
updateDownloader = new UpdateDownloader(updateThread, m.captured(2));
updateThread->start();
}
}
@@ -224,7 +222,7 @@ void Application::updateGotCurrent() {
if (updates.exists()) {
QFileInfoList list = updates.entryInfoList(QDir::Files);
for (QFileInfoList::iterator i = list.begin(), e = list.end(); i != e; ++i) {
if (QRegularExpression("^(tupdate|tmacupd|tlinuxupd|tlinux32upd)\\d+$", QRegularExpression::CaseInsensitiveOption).match(i->fileName()).hasMatch()) {
if (QRegularExpression("^(tupdate|tmacupd|tmac32upd|tlinuxupd|tlinux32upd)\\d+$", QRegularExpression::CaseInsensitiveOption).match(i->fileName()).hasMatch()) {
QFile(i->absoluteFilePath()).remove();
}
}
@@ -266,6 +264,7 @@ void Application::onUpdateFailed() {
cSetLastUpdateCheck(unixtime());
Local::writeSettings();
}
#endif
void Application::regPhotoUpdate(const PeerId &peer, MsgId msgId) {
photoUpdates.insert(msgId, peer);
@@ -439,11 +438,16 @@ void Application::onSwitchTestMode() {
}
Application::UpdatingState Application::updatingState() {
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
if (!updateThread) return Application::UpdatingNone;
if (!updateDownloader) return Application::UpdatingReady;
return Application::UpdatingDownload;
#else
return Application::UpdatingNone;
#endif
}
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
int32 Application::updatingSize() {
if (!updateDownloader) return 0;
return updateDownloader->size();
@@ -453,6 +457,7 @@ int32 Application::updatingReady() {
if (!updateDownloader) return 0;
return updateDownloader->ready();
}
#endif
FileUploader *Application::uploader() {
if (!::uploader) ::uploader = new FileUploader();
@@ -481,13 +486,13 @@ void Application::uploadProfilePhoto(const QImage &tosend, const PeerId &peerId)
PhotoId id = MTP::nonce<PhotoId>();
MTPPhoto photo(MTP_photo(MTP_long(id), MTP_long(0), MTP_int(MTP::authedId()), MTP_int(unixtime()), MTP_geoPointEmpty(), MTP_vector<MTPPhotoSize>(photoSizes)));
MTPPhoto photo(MTP_photo(MTP_long(id), MTP_long(0), MTP_int(unixtime()), MTP_vector<MTPPhotoSize>(photoSizes)));
QString file, filename;
int32 filesize = 0;
QByteArray data;
ReadyLocalMedia ready(ToPreparePhoto, file, filename, filesize, data, id, id, qsl("jpg"), peerId, photo, photoThumbs, MTP_documentEmpty(MTP_long(0)), jpeg, false, 0);
ReadyLocalMedia ready(ToPreparePhoto, file, filename, filesize, data, id, id, qsl("jpg"), peerId, photo, MTP_audioEmpty(MTP_long(0)), photoThumbs, MTP_documentEmpty(MTP_long(0)), jpeg, false, 0);
connect(App::uploader(), SIGNAL(photoReady(MsgId, const MTPInputFile &)), App::app(), SLOT(photoUpdated(MsgId, const MTPInputFile &)), Qt::UniqueConnection);
@@ -496,6 +501,7 @@ void Application::uploadProfilePhoto(const QImage &tosend, const PeerId &peerId)
App::uploader()->uploadMedia(newId, ready);
}
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
void Application::stopUpdate() {
if (updateReply) {
updateReply->abort();
@@ -521,7 +527,7 @@ void Application::startUpdateCheck(bool forceWait) {
if (updates.exists()) {
QFileInfoList list = updates.entryInfoList(QDir::Files);
for (QFileInfoList::iterator i = list.begin(), e = list.end(); i != e; ++i) {
if (QRegularExpression("^(tupdate|tmacupd|tlinuxupd|tlinux32upd)\\d+$", QRegularExpression::CaseInsensitiveOption).match(i->fileName()).hasMatch()) {
if (QRegularExpression("^(tupdate|tmacupd|tmac32upd|tlinuxupd|tlinux32upd)\\d+$", QRegularExpression::CaseInsensitiveOption).match(i->fileName()).hasMatch()) {
sendRequest = true;
}
}
@@ -531,7 +537,11 @@ void Application::startUpdateCheck(bool forceWait) {
if (sendRequest) {
QUrl url(cUpdateURL());
if (DevChannel) url.setQuery("dev=1");
if (cDevVersion()) {
url.setQuery(qsl("version=%1&dev=1").arg(AppVersion));
} else {
url.setQuery(qsl("version=%1").arg(AppVersion));
}
QString u = url.toString();
QNetworkRequest checkVersion(url);
if (updateReply) updateReply->deleteLater();
@@ -540,12 +550,12 @@ void Application::startUpdateCheck(bool forceWait) {
updateReply = updateManager.get(checkVersion);
connect(updateReply, SIGNAL(finished()), this, SLOT(updateGotCurrent()));
connect(updateReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(updateFailedCurrent(QNetworkReply::NetworkError)));
// updateRequestId = MTP::send(MTPhelp_GetAppUpdate(MTP_string(cApiDeviceModel()), MTP_string(cApiSystemVersion()), MTP_string(cApiAppVersion()), MTP_string(cApiLang())), rpcDone(&Application::onAppUpdate), rpcFail(&Application::onAppUpdateFail);
emit updateChecking();
} else {
updateCheckTimer.start((updateInSecs + 5) * 1000);
}
}
#endif
namespace {
QChar _toHex(ushort v) {
@@ -648,24 +658,27 @@ void Application::socketError(QLocalSocket::LocalSocketError e) {
return App::quit();
}
if (!cNoStartUpdate() && psCheckReadyUpdate()) {
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
if (!cNoStartUpdate() && checkReadyUpdate()) {
cSetRestartingUpdate(true);
DEBUG_LOG(("Application Info: installing update instead of starting app.."));
return App::quit();
}
#endif
startApp();
}
void Application::checkMapVersion() {
if (Local::oldMapVersion() < AppVersion) {
psRegisterCustomScheme();
if (Local::oldMapVersion() < AppVersion) {
if (Local::oldMapVersion()) {
QString versionFeatures;
if (DevChannel && Local::oldMapVersion() < 8014) {
versionFeatures = QString::fromUtf8("\xe2\x80\x94 Added support for sticker packs\n\xe2\x80\x94 New emoji and sticker panel").replace('@', qsl("@") + QChar(0x200D));
} else if (!DevChannel && Local::oldMapVersion() < 8013) {
if (cDevVersion() && Local::oldMapVersion() < 8054) {
versionFeatures = QString::fromUtf8("\xe2\x80\x94 Preview when sending links to GIF animations and PDF files\n\xe2\x80\x94 Full date and time shown when mouse over message timestamp");// .replace('@', qsl("@") + QChar(0x200D));
} else if (Local::oldMapVersion() < 8056) {
versionFeatures = lang(lng_new_version_text).trimmed();
} else {
versionFeatures = lang(lng_new_version_minor).trimmed();
}
if (!versionFeatures.isEmpty()) {
versionFeatures = lng_new_version_wrap(lt_version, QString::fromStdWString(AppVersionStr), lt_changes, versionFeatures, lt_link, qsl("https://desktop.telegram.org/#changelog"));
@@ -839,13 +852,15 @@ Application::~Application() {
App::deinitMedia();
deinitImageLinkManager();
mainApp = 0;
delete updateReply;
delete ::uploader;
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
delete updateReply;
updateReply = 0;
if (updateDownloader) updateDownloader->deleteLater();
updateDownloader = 0;
if (updateThread) updateThread->quit();
updateThread = 0;
#endif
delete window;

View File

@@ -27,6 +27,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
class MainWidget;
class FileUploader;
class Translator;
class UpdateDownloader;
class Application : public PsApplication, public RPCSender {
Q_OBJECT
@@ -42,17 +43,16 @@ public:
static int32 languageId();
static MainWidget *main();
void onAppUpdate(const MTPhelp_AppUpdate &response);
bool onAppUpdateFail();
enum UpdatingState {
UpdatingNone,
UpdatingDownload,
UpdatingReady,
};
UpdatingState updatingState();
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
int32 updatingSize();
int32 updatingReady();
#endif
FileUploader *uploader();
void uploadProfilePhoto(const QImage &tosend, const PeerId &peerId);
@@ -80,6 +80,14 @@ public:
signals:
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
void updateChecking();
void updateLatest();
void updateDownloading(qint64 ready, qint64 total);
void updateReady();
void updateFailed();
#endif
void peerPhotoDone(PeerId peer);
void peerPhotoFail(PeerId peer);
@@ -87,7 +95,9 @@ signals:
public slots:
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
void startUpdateCheck(bool forceWait = false);
#endif
void socketConnected();
void socketError(QLocalSocket::LocalSocketError e);
void socketDisconnected();
@@ -99,11 +109,13 @@ public slots:
void readClients();
void removeClients();
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
void updateGotCurrent();
void updateFailedCurrent(QNetworkReply::NetworkError e);
void onUpdateReady();
void onUpdateFailed();
#endif
void photoUpdated(MsgId msgId, const MTPInputFile &file);
@@ -138,12 +150,14 @@ private:
Window *window;
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
mtpRequestId updateRequestId;
QNetworkAccessManager updateManager;
QNetworkReply *updateReply;
SingleTimer updateCheckTimer;
QThread *updateThread;
PsUpdateDownloader *updateDownloader;
UpdateDownloader *updateDownloader;
#endif
QTimer writeUserConfigTimer;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 KiB

After

Width:  |  Height:  |  Size: 222 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -24,147 +24,316 @@ bool audioWorks();
void audioPlayNotify();
void audioFinish();
enum VoiceMessageState {
VoiceMessageStopped,
VoiceMessageStarting,
VoiceMessagePlaying,
VoiceMessageFinishing,
VoiceMessagePausing,
VoiceMessagePaused,
VoiceMessageResuming,
enum AudioPlayerState {
AudioPlayerStopped = 0x01,
AudioPlayerStoppedAtEnd = 0x02,
AudioPlayerStoppedAtError = 0x03,
AudioPlayerStoppedAtStart = 0x04,
AudioPlayerStoppedMask = 0x07,
AudioPlayerStarting = 0x08,
AudioPlayerPlaying = 0x10,
AudioPlayerFinishing = 0x18,
AudioPlayerPausing = 0x20,
AudioPlayerPaused = 0x28,
AudioPlayerPausedAtEnd = 0x30,
AudioPlayerResuming = 0x38,
};
class VoiceMessagesFader;
class VoiceMessagesLoader;
class AudioPlayerFader;
class AudioPlayerLoaders;
class VoiceMessages : public QObject {
class AudioPlayer : public QObject {
Q_OBJECT
public:
VoiceMessages();
AudioPlayer();
void play(AudioData *audio);
void pauseresume();
void play(const AudioMsgId &audio, int64 position = 0);
void play(const SongMsgId &song, int64 position = 0);
void pauseresume(MediaOverviewType type, bool fast = false);
void seek(int64 position); // type == OverviewDocuments
void stop(MediaOverviewType type);
void currentState(AudioData **audio, VoiceMessageState *state = 0, int64 *position = 0, int64 *duration = 0);
void processContext();
void currentState(AudioMsgId *audio, AudioPlayerState *state = 0, int64 *position = 0, int64 *duration = 0, int32 *frequency = 0);
void currentState(SongMsgId *song, AudioPlayerState *state = 0, int64 *position = 0, int64 *duration = 0, int32 *frequency = 0);
~VoiceMessages();
void clearStoppedAtStart(const AudioMsgId &audio);
void clearStoppedAtStart(const SongMsgId &song);
void resumeDevice();
~AudioPlayer();
public slots:
void onError(AudioData *audio);
void onError(const AudioMsgId &audio);
void onError(const SongMsgId &song);
void onStopped(const AudioMsgId &audio);
void onStopped(const SongMsgId &song);
signals:
void updated(AudioData *audio);
void stopped(AudioData *audio);
void updated(const AudioMsgId &audio);
void updated(const SongMsgId &song);
void stopped(const AudioMsgId &audio);
void stopped(const SongMsgId &song);
void stoppedOnError(const AudioMsgId &audio);
void stoppedOnError(const SongMsgId &song);
void loaderOnStart(const AudioMsgId &audio, qint64 position);
void loaderOnStart(const SongMsgId &song, qint64 position);
void loaderOnCancel(const AudioMsgId &audio);
void loaderOnCancel(const SongMsgId &song);
void faderOnTimer();
void loaderOnStart(AudioData *audio);
void loaderOnCancel(AudioData *audio);
void suppressSong();
void unsuppressSong();
void suppressAll();
void songVolumeChanged();
private:
bool updateCurrentStarted(int32 pos = -1);
bool fadedStop(MediaOverviewType type, bool *fadedStart = 0);
bool updateCurrentStarted(MediaOverviewType type, int32 pos = -1);
bool checkCurrentALError(MediaOverviewType type);
struct Msg {
Msg() : audio(0), position(0), duration(0), skipStart(0), skipEnd(0), loading(0), started(0),
state(VoiceMessageStopped), source(0), nextBuffer(0) {
Msg() : position(0), duration(0), frequency(AudioVoiceMsgFrequency), skipStart(0), skipEnd(0), loading(0), started(0),
state(AudioPlayerStopped), source(0), nextBuffer(0) {
memset(buffers, 0, sizeof(buffers));
memset(samplesCount, 0, sizeof(samplesCount));
}
AudioData *audio;
QString fname;
QByteArray data;
int64 position, duration;
int32 frequency;
int64 skipStart, skipEnd;
bool loading;
int64 started;
VoiceMessageState state;
AudioPlayerState state;
uint32 source;
int32 nextBuffer;
uint32 buffers[3];
int64 samplesCount[3];
};
struct AudioMsg : public Msg {
AudioMsg() {
}
AudioMsgId audio;
};
struct SongMsg : public Msg {
SongMsg() {
}
SongMsgId song;
};
int32 _current;
Msg _data[AudioVoiceMsgSimultaneously];
void currentState(Msg *current, AudioPlayerState *state, int64 *position, int64 *duration, int32 *frequency);
void setStoppedState(Msg *current, AudioPlayerState state = AudioPlayerStopped);
int32 _audioCurrent;
AudioMsg _audioData[AudioVoiceMsgSimultaneously];
int32 _songCurrent;
SongMsg _songData[AudioSongSimultaneously];
QMutex _mutex;
friend class VoiceMessagesFader;
friend class VoiceMessagesLoader;
friend class AudioPlayerFader;
friend class AudioPlayerLoaders;
QThread _faderThread;
QThread _loaderThread;
VoiceMessagesFader *_fader;
VoiceMessagesLoader *_loader;
QThread _faderThread, _loaderThread;
AudioPlayerFader *_fader;
AudioPlayerLoaders *_loader;
};
VoiceMessages *audioVoice();
class AudioCaptureInner;
class VoiceMessagesFader : public QObject {
class AudioCapture : public QObject {
Q_OBJECT
public:
VoiceMessagesFader(QThread *thread);
void processContext();
AudioCapture();
void start();
void stop(bool needResult);
bool check();
~AudioCapture();
signals:
void error(AudioData *audio);
void playPositionUpdated(AudioData *audio);
void audioStopped(AudioData *audio);
void needToPreload(AudioData *audio);
void captureOnStart();
void captureOnStop(bool needResult);
void stopSuspend();
void onDone(QByteArray data, qint32 samples);
void onUpdate(qint16 level, qint32 samples);
void onError();
private:
friend class AudioCaptureInner;
QThread _captureThread;
AudioCaptureInner *_capture;
};
AudioPlayer *audioPlayer();
AudioCapture *audioCapture();
class AudioPlayerFader : public QObject {
Q_OBJECT
public:
AudioPlayerFader(QThread *thread);
void resumeDevice();
signals:
void error(const AudioMsgId &audio);
void error(const SongMsgId &audio);
void playPositionUpdated(const AudioMsgId &audio);
void playPositionUpdated(const SongMsgId &audio);
void audioStopped(const AudioMsgId &audio);
void audioStopped(const SongMsgId &audio);
void needToPreload(const AudioMsgId &audio);
void needToPreload(const SongMsgId &audio);
void stopPauseDevice();
public slots:
void onInit();
void onTimer();
void onSuspendTimer();
void onSuspendTimerStop();
void onPauseTimer();
void onPauseTimerStop();
void onSuppressSong();
void onUnsuppressSong();
void onSuppressAll();
void onSongVolumeChanged();
private:
QTimer _timer, _suspendTimer;
QMutex _suspendMutex;
bool _suspendFlag;
enum {
EmitError = 0x01,
EmitStopped = 0x02,
EmitPositionUpdated = 0x04,
EmitNeedToPreload = 0x08,
};
int32 updateOnePlayback(AudioPlayer::Msg *m, bool &hasPlaying, bool &hasFading, float64 suppressGain, bool suppressGainChanged);
void setStoppedState(AudioPlayer::Msg *m, AudioPlayerState state = AudioPlayerStopped);
QTimer _timer, _pauseTimer;
QMutex _pauseMutex;
bool _pauseFlag, _paused;
bool _suppressAll, _suppressAllAnim, _suppressSong, _suppressSongAnim, _songVolumeChanged;
anim::fvalue _suppressAllGain, _suppressSongGain;
uint64 _suppressAllStart, _suppressSongStart;
};
class VoiceMessagesLoader : public QObject {
class AudioPlayerLoader;
class AudioPlayerLoaders : public QObject {
Q_OBJECT
public:
VoiceMessagesLoader(QThread *thread);
~VoiceMessagesLoader();
AudioPlayerLoaders(QThread *thread);
~AudioPlayerLoaders();
signals:
void error(AudioData *audio);
void error(const AudioMsgId &audio);
void error(const SongMsgId &song);
void needToCheck();
public slots:
void onInit();
void onStart(AudioData *audio);
void onLoad(AudioData *audio);
void onCancel(AudioData *audio);
void onStart(const AudioMsgId &audio, qint64 position);
void onStart(const SongMsgId &audio, qint64 position);
void onLoad(const AudioMsgId &audio);
void onLoad(const SongMsgId &audio);
void onCancel(const AudioMsgId &audio);
void onCancel(const SongMsgId &audio);
private:
struct Loader;
typedef QMap<AudioData*, Loader*> Loaders;
Loaders _loaders;
AudioMsgId _audio;
AudioPlayerLoader *_audioLoader;
void loadError(Loaders::iterator i);
SongMsgId _song;
AudioPlayerLoader *_songLoader;
void emitError(MediaOverviewType type);
void clear(MediaOverviewType type);
void setStoppedState(AudioPlayer::Msg *m, AudioPlayerState state = AudioPlayerStopped);
AudioMsgId clearAudio();
SongMsgId clearSong();
enum SetupError {
SetupErrorAtStart = 0,
SetupErrorNotPlaying = 1,
SetupErrorLoadedFull = 2,
SetupNoErrorStarted = 3,
};
void loadData(MediaOverviewType type, const void *objId, qint64 position);
AudioPlayerLoader *setupLoader(MediaOverviewType type, const void *objId, SetupError &err, qint64 position);
AudioPlayer::Msg *checkLoader(MediaOverviewType type);
};
struct AudioCapturePrivate;
class AudioCaptureInner : public QObject {
Q_OBJECT
public:
AudioCaptureInner(QThread *thread);
~AudioCaptureInner();
signals:
void error();
void update(qint16 level, qint32 samples);
void done(QByteArray data, qint32 samples);
public slots:
void onInit();
void onStart();
void onStop(bool needResult);
void onTimeout();
private:
void writeFrame(int32 offset, int32 framesize);
AudioCapturePrivate *d;
QTimer _timer;
QByteArray _captured;
};
MTPDocumentAttribute audioReadSongAttributes(const QString &fname, const QByteArray &data, QImage &cover, QByteArray &coverBytes, QByteArray &coverFormat);

View File

@@ -0,0 +1,541 @@
/*
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.
Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
Copyright (c) 2014 John Preston, https://desktop.telegram.org
*/
#include "stdafx.h"
#include "application.h"
#include "pspecific.h"
#include "autoupdater.h"
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
#ifdef Q_OS_WIN
typedef DWORD VerInt;
typedef WCHAR VerChar;
#else
typedef int VerInt;
typedef wchar_t VerChar;
#endif
UpdateDownloader::UpdateDownloader(QThread *thread, const QString &url) : reply(0), already(0), full(0) {
updateUrl = url;
moveToThread(thread);
manager.moveToThread(thread);
App::setProxySettings(manager);
connect(thread, SIGNAL(started()), this, SLOT(start()));
initOutput();
}
void UpdateDownloader::initOutput() {
QString fileName;
QRegularExpressionMatch m = QRegularExpression(qsl("/([^/\\?]+)(\\?|$)")).match(updateUrl);
if (m.hasMatch()) {
fileName = m.captured(1).replace(QRegularExpression(qsl("[^a-zA-Z0-9_\\-]")), QString());
}
if (fileName.isEmpty()) {
fileName = qsl("tupdate-%1").arg(rand());
}
QString dirStr = cWorkingDir() + qsl("tupdates/");
fileName = dirStr + fileName;
QFileInfo file(fileName);
QDir dir(dirStr);
if (dir.exists()) {
QFileInfoList all = dir.entryInfoList(QDir::Files);
for (QFileInfoList::iterator i = all.begin(), e = all.end(); i != e; ++i) {
if (i->absoluteFilePath() != file.absoluteFilePath()) {
QFile::remove(i->absoluteFilePath());
}
}
} else {
dir.mkdir(dir.absolutePath());
}
outputFile.setFileName(fileName);
if (file.exists()) {
uint64 fullSize = file.size();
if (fullSize < INT_MAX) {
int32 goodSize = (int32)fullSize;
if (goodSize % UpdateChunk) {
goodSize = goodSize - (goodSize % UpdateChunk);
if (goodSize) {
if (outputFile.open(QIODevice::ReadOnly)) {
QByteArray goodData = outputFile.readAll().mid(0, goodSize);
outputFile.close();
if (outputFile.open(QIODevice::WriteOnly)) {
outputFile.write(goodData);
outputFile.close();
QMutexLocker lock(&mutex);
already = goodSize;
}
}
}
} else {
QMutexLocker lock(&mutex);
already = goodSize;
}
}
if (!already) {
QFile::remove(fileName);
}
}
}
void UpdateDownloader::start() {
sendRequest();
}
void UpdateDownloader::sendRequest() {
QNetworkRequest req(updateUrl);
QByteArray rangeHeaderValue = "bytes=" + QByteArray::number(already) + "-";
req.setRawHeader("Range", rangeHeaderValue);
req.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, true);
if (reply) reply->deleteLater();
reply = manager.get(req);
connect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(partFinished(qint64,qint64)));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(partFailed(QNetworkReply::NetworkError)));
connect(reply, SIGNAL(metaDataChanged()), this, SLOT(partMetaGot()));
}
void UpdateDownloader::partMetaGot() {
typedef QList<QNetworkReply::RawHeaderPair> Pairs;
Pairs pairs = reply->rawHeaderPairs();
for (Pairs::iterator i = pairs.begin(), e = pairs.end(); i != e; ++i) {
if (QString::fromUtf8(i->first).toLower() == "content-range") {
QRegularExpressionMatch m = QRegularExpression(qsl("/(\\d+)([^\\d]|$)")).match(QString::fromUtf8(i->second));
if (m.hasMatch()) {
{
QMutexLocker lock(&mutex);
full = m.captured(1).toInt();
}
emit App::app()->updateDownloading(already, full);
}
}
}
}
int32 UpdateDownloader::ready() {
QMutexLocker lock(&mutex);
return already;
}
int32 UpdateDownloader::size() {
QMutexLocker lock(&mutex);
return full;
}
void UpdateDownloader::partFinished(qint64 got, qint64 total) {
if (!reply) return;
QVariant statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
if (statusCode.isValid()) {
int status = statusCode.toInt();
if (status != 200 && status != 206 && status != 416) {
LOG(("Update Error: Bad HTTP status received in partFinished(): %1").arg(status));
return fatalFail();
}
}
if (!already && !full) {
QMutexLocker lock(&mutex);
full = total;
}
DEBUG_LOG(("Update Info: part %1 of %2").arg(got).arg(total));
if (!outputFile.isOpen()) {
if (!outputFile.open(QIODevice::Append)) {
LOG(("Update Error: Could not open output file '%1' for appending").arg(outputFile.fileName()));
return fatalFail();
}
}
QByteArray r = reply->readAll();
if (!r.isEmpty()) {
outputFile.write(r);
QMutexLocker lock(&mutex);
already += r.size();
}
if (got >= total) {
reply->deleteLater();
reply = 0;
outputFile.close();
unpackUpdate();
} else {
emit App::app()->updateDownloading(already, full);
}
}
void UpdateDownloader::partFailed(QNetworkReply::NetworkError e) {
if (!reply) return;
QVariant statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
reply->deleteLater();
reply = 0;
if (statusCode.isValid()) {
int status = statusCode.toInt();
if (status == 416) { // Requested range not satisfiable
outputFile.close();
unpackUpdate();
return;
}
}
LOG(("Update Error: failed to download part starting from %1, error %2").arg(already).arg(e));
emit App::app()->updateFailed();
}
void UpdateDownloader::fatalFail() {
clearAll();
emit App::app()->updateFailed();
}
void UpdateDownloader::clearAll() {
psDeleteDir(cWorkingDir() + qsl("tupdates"));
}
//QString winapiErrorWrap() {
// WCHAR errMsg[2048];
// DWORD errorCode = GetLastError();
// LPTSTR errorText = NULL, errorTextDefault = L"(Unknown error)";
// FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, errorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&errorText, 0, 0);
// if (!errorText) {
// errorText = errorTextDefault;
// }
// StringCbPrintf(errMsg, sizeof(errMsg), L"Error code: %d, error message: %s", errorCode, errorText);
// if (errorText != errorTextDefault) {
// LocalFree(errorText);
// }
// return QString::fromWCharArray(errMsg);
//}
void UpdateDownloader::unpackUpdate() {
QByteArray packed;
if (!outputFile.open(QIODevice::ReadOnly)) {
LOG(("Update Error: cant read updates file!"));
return fatalFail();
}
#ifdef Q_OS_WIN // use Lzma SDK for win
const int32 hSigLen = 128, hShaLen = 20, hPropsLen = LZMA_PROPS_SIZE, hOriginalSizeLen = sizeof(int32), hSize = hSigLen + hShaLen + hPropsLen + hOriginalSizeLen; // header
#else
const int32 hSigLen = 128, hShaLen = 20, hPropsLen = 0, hOriginalSizeLen = sizeof(int32), hSize = hSigLen + hShaLen + hOriginalSizeLen; // header
#endif
QByteArray compressed = outputFile.readAll();
int32 compressedLen = compressed.size() - hSize;
if (compressedLen <= 0) {
LOG(("Update Error: bad compressed size: %1").arg(compressed.size()));
return fatalFail();
}
outputFile.close();
QString tempDirPath = cWorkingDir() + qsl("tupdates/temp"), readyFilePath = cWorkingDir() + qsl("tupdates/temp/ready");
psDeleteDir(tempDirPath);
QDir tempDir(tempDirPath);
if (tempDir.exists() || QFile(readyFilePath).exists()) {
LOG(("Update Error: cant clear tupdates/temp dir!"));
return fatalFail();
}
uchar sha1Buffer[20];
bool goodSha1 = !memcmp(compressed.constData() + hSigLen, hashSha1(compressed.constData() + hSigLen + hShaLen, compressedLen + hPropsLen + hOriginalSizeLen, sha1Buffer), hShaLen);
if (!goodSha1) {
LOG(("Update Error: bad SHA1 hash of update file!"));
return fatalFail();
}
RSA *pbKey = PEM_read_bio_RSAPublicKey(BIO_new_mem_buf(const_cast<char*>(DevVersion ? UpdatesPublicDevKey : UpdatesPublicKey), -1), 0, 0, 0);
if (!pbKey) {
LOG(("Update Error: cant read public rsa key!"));
return fatalFail();
}
if (RSA_verify(NID_sha1, (const uchar*)(compressed.constData() + hSigLen), hShaLen, (const uchar*)(compressed.constData()), hSigLen, pbKey) != 1) { // verify signature
RSA_free(pbKey);
if (cDevVersion()) { // try other public key, if we are in dev version
pbKey = PEM_read_bio_RSAPublicKey(BIO_new_mem_buf(const_cast<char*>(DevVersion ? UpdatesPublicKey : UpdatesPublicDevKey), -1), 0, 0, 0);
if (!pbKey) {
LOG(("Update Error: cant read public rsa key!"));
return fatalFail();
}
if (RSA_verify(NID_sha1, (const uchar*)(compressed.constData() + hSigLen), hShaLen, (const uchar*)(compressed.constData()), hSigLen, pbKey) != 1) { // verify signature
RSA_free(pbKey);
LOG(("Update Error: bad RSA signature of update file!"));
return fatalFail();
}
} else {
LOG(("Update Error: bad RSA signature of update file!"));
return fatalFail();
}
}
RSA_free(pbKey);
QByteArray uncompressed;
int32 uncompressedLen;
memcpy(&uncompressedLen, compressed.constData() + hSigLen + hShaLen + hPropsLen, hOriginalSizeLen);
uncompressed.resize(uncompressedLen);
size_t resultLen = uncompressed.size();
#ifdef Q_OS_WIN // use Lzma SDK for win
SizeT srcLen = compressedLen;
int uncompressRes = LzmaUncompress((uchar*)uncompressed.data(), &resultLen, (const uchar*)(compressed.constData() + hSize), &srcLen, (const uchar*)(compressed.constData() + hSigLen + hShaLen), LZMA_PROPS_SIZE);
if (uncompressRes != SZ_OK) {
LOG(("Update Error: could not uncompress lzma, code: %1").arg(uncompressRes));
return fatalFail();
}
#else
lzma_stream stream = LZMA_STREAM_INIT;
lzma_ret ret = lzma_stream_decoder(&stream, UINT64_MAX, LZMA_CONCATENATED);
if (ret != LZMA_OK) {
const char *msg;
switch (ret) {
case LZMA_MEM_ERROR: msg = "Memory allocation failed"; break;
case LZMA_OPTIONS_ERROR: msg = "Specified preset is not supported"; break;
case LZMA_UNSUPPORTED_CHECK: msg = "Specified integrity check is not supported"; break;
default: msg = "Unknown error, possibly a bug"; break;
}
LOG(("Error initializing the decoder: %1 (error code %2)").arg(msg).arg(ret));
return fatalFail();
}
stream.avail_in = compressedLen;
stream.next_in = (uint8_t*)(compressed.constData() + hSize);
stream.avail_out = resultLen;
stream.next_out = (uint8_t*)uncompressed.data();
lzma_ret res = lzma_code(&stream, LZMA_FINISH);
if (stream.avail_in) {
LOG(("Error in decompression, %1 bytes left in _in of %2 whole.").arg(stream.avail_in).arg(compressedLen));
return fatalFail();
} else if (stream.avail_out) {
LOG(("Error in decompression, %1 bytes free left in _out of %2 whole.").arg(stream.avail_out).arg(resultLen));
return fatalFail();
}
lzma_end(&stream);
if (res != LZMA_OK && res != LZMA_STREAM_END) {
const char *msg;
switch (res) {
case LZMA_MEM_ERROR: msg = "Memory allocation failed"; break;
case LZMA_FORMAT_ERROR: msg = "The input data is not in the .xz format"; break;
case LZMA_OPTIONS_ERROR: msg = "Unsupported compression options"; break;
case LZMA_DATA_ERROR: msg = "Compressed file is corrupt"; break;
case LZMA_BUF_ERROR: msg = "Compressed data is truncated or otherwise corrupt"; break;
default: msg = "Unknown error, possibly a bug"; break;
}
LOG(("Error in decompression: %1 (error code %2)").arg(msg).arg(res));
return fatalFail();
}
#endif
tempDir.mkdir(tempDir.absolutePath());
quint32 version;
{
QBuffer buffer(&uncompressed);
buffer.open(QIODevice::ReadOnly);
QDataStream stream(&buffer);
stream.setVersion(QDataStream::Qt_5_1);
stream >> version;
if (stream.status() != QDataStream::Ok) {
LOG(("Update Error: cant read version from downloaded stream, status: %1").arg(stream.status()));
return fatalFail();
}
if (int32(version) <= AppVersion) {
LOG(("Update Error: downloaded version %1 is not greater, than mine %2").arg(version).arg(AppVersion));
return fatalFail();
}
quint32 filesCount;
stream >> filesCount;
if (stream.status() != QDataStream::Ok) {
LOG(("Update Error: cant read files count from downloaded stream, status: %1").arg(stream.status()));
return fatalFail();
}
if (!filesCount) {
LOG(("Update Error: update is empty!"));
return fatalFail();
}
for (uint32 i = 0; i < filesCount; ++i) {
QString relativeName;
quint32 fileSize;
QByteArray fileInnerData;
bool executable = false;
stream >> relativeName >> fileSize >> fileInnerData;
#if defined Q_OS_MAC || defined Q_OS_LINUX
stream >> executable;
#endif
if (stream.status() != QDataStream::Ok) {
LOG(("Update Error: cant read file from downloaded stream, status: %1").arg(stream.status()));
return fatalFail();
}
if (fileSize != quint32(fileInnerData.size())) {
LOG(("Update Error: bad file size %1 not matching data size %2").arg(fileSize).arg(fileInnerData.size()));
return fatalFail();
}
QFile f(tempDirPath + '/' + relativeName);
if (!QDir().mkpath(QFileInfo(f).absolutePath())) {
LOG(("Update Error: cant mkpath for file '%1'").arg(tempDirPath + '/' + relativeName));
return fatalFail();
}
if (!f.open(QIODevice::WriteOnly)) {
LOG(("Update Error: cant open file '%1' for writing").arg(tempDirPath + '/' + relativeName));
return fatalFail();
}
if (f.write(fileInnerData) != fileSize) {
f.close();
LOG(("Update Error: cant write file '%1'").arg(tempDirPath + '/' + relativeName));
return fatalFail();
}
f.close();
if (executable) {
QFileDevice::Permissions p = f.permissions();
p |= QFileDevice::ExeOwner | QFileDevice::ExeUser | QFileDevice::ExeGroup | QFileDevice::ExeOther;
f.setPermissions(p);
}
}
// create tdata/version file
tempDir.mkdir(QDir(tempDirPath + qsl("/tdata")).absolutePath());
std::wstring versionString = ((version % 1000) ? QString("%1.%2.%3").arg(int(version / 1000000)).arg(int((version % 1000000) / 1000)).arg(int(version % 1000)) : QString("%1.%2").arg(int(version / 1000000)).arg(int((version % 1000000) / 1000))).toStdWString();
VerInt versionNum = VerInt(version), versionLen = VerInt(versionString.size() * sizeof(VerChar));
VerChar versionStr[32];
memcpy(versionStr, versionString.c_str(), versionLen);
QFile fVersion(tempDirPath + qsl("/tdata/version"));
if (!fVersion.open(QIODevice::WriteOnly)) {
LOG(("Update Error: cant write version file '%1'").arg(tempDirPath + qsl("/version")));
return fatalFail();
}
fVersion.write((const char*)&versionNum, sizeof(VerInt));
fVersion.write((const char*)&versionLen, sizeof(VerInt));
fVersion.write((const char*)&versionStr[0], versionLen);
fVersion.close();
}
QFile readyFile(readyFilePath);
if (readyFile.open(QIODevice::WriteOnly)) {
if (readyFile.write("1", 1)) {
readyFile.close();
} else {
LOG(("Update Error: cant write ready file '%1'").arg(readyFilePath));
return fatalFail();
}
} else {
LOG(("Update Error: cant create ready file '%1'").arg(readyFilePath));
return fatalFail();
}
outputFile.remove();
emit App::app()->updateReady();
}
UpdateDownloader::~UpdateDownloader() {
delete reply;
reply = 0;
}
bool checkReadyUpdate() {
QString readyFilePath = cWorkingDir() + qsl("tupdates/temp/ready"), readyPath = cWorkingDir() + qsl("tupdates/temp");
if (!QFile(readyFilePath).exists()) {
if (QDir(cWorkingDir() + qsl("tupdates/ready")).exists() || QDir(cWorkingDir() + qsl("tupdates/temp")).exists()) {
UpdateDownloader::clearAll();
}
return false;
}
// check ready version
QString versionPath = readyPath + qsl("/tdata/version");
{
QFile fVersion(versionPath);
if (!fVersion.open(QIODevice::ReadOnly)) {
LOG(("Update Error: cant read version file '%1'").arg(versionPath));
UpdateDownloader::clearAll();
return false;
}
VerInt versionNum;
if (fVersion.read((char*)&versionNum, sizeof(VerInt)) != sizeof(VerInt)) {
LOG(("Update Error: cant read version from file '%1'").arg(versionPath));
UpdateDownloader::clearAll();
return false;
}
fVersion.close();
if (versionNum <= AppVersion) {
LOG(("Update Error: cant install version %1 having version %2").arg(versionNum).arg(AppVersion));
UpdateDownloader::clearAll();
return false;
}
}
#ifdef Q_OS_WIN
QString curUpdater = (cExeDir() + qsl("Updater.exe"));
QFileInfo updater(cWorkingDir() + qsl("tupdates/temp/Updater.exe"));
#elif defined Q_OS_MAC
QString curUpdater = (cExeDir() + cExeName() + qsl("/Contents/Frameworks/Updater"));
QFileInfo updater(cWorkingDir() + qsl("tupdates/temp/Telegram.app/Contents/Frameworks/Updater"));
#elif defined Q_OS_LINUX
QString curUpdater = (cExeDir() + qsl("Updater"));
QFileInfo updater(cWorkingDir() + qsl("tupdates/temp/Updater"));
#endif
if (!updater.exists()) {
QFileInfo current(curUpdater);
if (!current.exists()) {
UpdateDownloader::clearAll();
return false;
}
if (!QFile(current.absoluteFilePath()).copy(updater.absoluteFilePath())) {
UpdateDownloader::clearAll();
return false;
}
}
#ifdef Q_OS_WIN
if (CopyFile(updater.absoluteFilePath().toStdWString().c_str(), curUpdater.toStdWString().c_str(), FALSE) == FALSE) {
DWORD errorCode = GetLastError();
if (errorCode == ERROR_ACCESS_DENIED) { // we are in write-protected dir, like Program Files
cSetWriteProtected(true);
return true;
} else {
UpdateDownloader::clearAll();
return false;
}
}
if (DeleteFile(updater.absoluteFilePath().toStdWString().c_str()) == FALSE) {
UpdateDownloader::clearAll();
return false;
}
#elif defined Q_OS_MAC
QDir().mkpath(QFileInfo(curUpdater).absolutePath());
DEBUG_LOG(("Update Info: moving %1 to %2..").arg(updater.absoluteFilePath()).arg(curUpdater));
if (!objc_moveFile(updater.absoluteFilePath(), curUpdater)) {
UpdateDownloader::clearAll();
return false;
}
#elif defined Q_OS_LINUX
if (!linuxMoveFile(QFile::encodeName(updater.absoluteFilePath()).constData(), QFile::encodeName(curUpdater).constData())) {
UpdateDownloader::clearAll();
return false;
}
#endif
return true;
}
#endif

View File

@@ -0,0 +1,66 @@
/*
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.
Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
Copyright (c) 2014 John Preston, https://desktop.telegram.org
*/
#pragma once
#ifndef TDESKTOP_DISABLE_AUTOUPDATE
#include <QtNetwork/QLocalSocket>
#include <QtNetwork/QLocalServer>
#include <QtNetwork/QNetworkReply>
class UpdateDownloader : public QObject {
Q_OBJECT
public:
UpdateDownloader(QThread *thread, const QString &url);
void unpackUpdate();
int32 ready();
int32 size();
static void clearAll();
~UpdateDownloader();
public slots:
void start();
void partMetaGot();
void partFinished(qint64 got, qint64 total);
void partFailed(QNetworkReply::NetworkError e);
void sendRequest();
private:
void initOutput();
void fatalFail();
QString updateUrl;
QNetworkAccessManager manager;
QNetworkReply *reply;
int32 already, full;
QFile outputFile;
QMutex mutex;
};
bool checkReadyUpdate();
#endif

View File

@@ -24,7 +24,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
AboutBox::AboutBox() :
_done(this, lang(lng_about_done), st::aboutCloseButton),
_version(this, qsl("[a href=\"https://desktop.telegram.org/#changelog\"]") + textClean(lng_about_version(lt_version, QString::fromWCharArray(AppVersionStr) + (DevChannel ? " dev" : ""))) + qsl("[/a]"), st::aboutVersion, st::defaultTextStyle),
_version(this, qsl("[a href=\"https://desktop.telegram.org/#changelog\"]") + textClean(lng_about_version(lt_version, QString::fromWCharArray(AppVersionStr) + (cDevVersion() ? " dev" : ""))) + qsl("[/a]"), st::aboutVersion, st::defaultTextStyle),
_text(this, lang(lng_about_text), st::aboutLabel, st::aboutTextStyle) {
resizeMaxHeight(st::aboutWidth, st::aboutHeight);

View File

@@ -285,7 +285,6 @@ void AddContactBox::onImportDone(const MTPcontacts_ImportedContacts &res) {
}
if (uid) {
App::main()->addNewContact(uid);
App::main()->showPeer(App::peerFromUser(uid));
App::wnd()->hideLayer();
} else {
_addButton.hide();

View File

@@ -48,27 +48,32 @@ _text(100) {
void ConfirmBox::init(const QString &text) {
_text.setText(st::boxFont, text, (_infoMsg ? _confirmBoxTextOptions : _textPlainOptions));
_textWidth = st::boxWidth - st::boxPadding.left() - st::boxPadding.right();
_textHeight = _text.countHeight(_textWidth);
_textWidth = st::boxWidth + 10 - st::boxPadding.left() - st::boxPadding.right();
_textHeight = qMin(_text.countHeight(_textWidth), 16 * st::boxFont->height);
setMaxHeight(st::boxPadding.top() + _textHeight + st::boxPadding.bottom() + (_infoMsg ? _close.height() : _confirm.height()));
if (_infoMsg) {
_confirm.hide();
_cancel.hide();
connect(&_close, SIGNAL(clicked()), this, SLOT(onClose()));
connect(&_close, SIGNAL(clicked()), this, SLOT(onCancel()));
setMouseTracking(_text.hasLinks());
} else {
_close.hide();
connect(&_confirm, SIGNAL(clicked()), this, SIGNAL(confirmed()));
connect(&_cancel, SIGNAL(clicked()), this, SLOT(onClose()));
connect(&_cancel, SIGNAL(clicked()), this, SLOT(onCancel()));
}
prepare();
}
void ConfirmBox::onCancel() {
emit cancelPressed();
onClose();
}
void ConfirmBox::mouseMoveEvent(QMouseEvent *e) {
_lastMousePos = e->globalPos();
updateHover();
@@ -166,7 +171,7 @@ void ConfirmBox::paintEvent(QPaintEvent *e) {
// draw box title / text
p.setFont(st::boxFont->f);
p.setPen(st::black->p);
_text.draw(p, st::boxPadding.left(), st::boxPadding.top(), _textWidth, (_text.maxWidth() < width()) ? style::al_center : style::al_left);
_text.drawElided(p, st::boxPadding.left(), st::boxPadding.top(), _textWidth, 16, (_text.maxWidth() < width()) ? style::al_center : style::al_left);
}
void ConfirmBox::resizeEvent(QResizeEvent *e) {
@@ -177,3 +182,16 @@ void ConfirmBox::resizeEvent(QResizeEvent *e) {
_cancel.move(0, st::boxPadding.top() + _textHeight + st::boxPadding.bottom());
}
}
ConfirmLinkBox::ConfirmLinkBox(const QString &url) : ConfirmBox(lang(lng_open_this_link) + qsl("\n\n") + url, lang(lng_open_link)), _url(url) {
connect(this, SIGNAL(confirmed()), this, SLOT(onOpenLink()));
}
void ConfirmLinkBox::onOpenLink() {
if (reMailStart().match(_url).hasMatch()) {
EmailLink(_url).onClick(Qt::LeftButton);
} else {
TextLink(_url).onClick(Qt::LeftButton);
}
App::wnd()->hideLayer();
}

View File

@@ -35,10 +35,15 @@ public:
void leaveEvent(QEvent *e);
void updateLink();
public slots:
void onCancel();
signals:
void confirmed();
void cancelled();
void cancelPressed();
protected:
@@ -62,3 +67,20 @@ private:
QPoint _lastMousePos;
TextLinkPtr _myLink;
};
class ConfirmLinkBox : public ConfirmBox {
Q_OBJECT
public:
ConfirmLinkBox(const QString &url);
public slots:
void onOpenLink();
private:
QString _url;
};

View File

@@ -33,7 +33,8 @@ ConnectionBox::ConnectionBox() :
_passwordInput(this, st::inpConnectionPassword, lang(lng_connection_password_ph), cConnectionProxy().password),
_autoRadio(this, qsl("conn_type"), dbictAuto, lang(lng_connection_auto_rb), (cConnectionType() == dbictAuto)),
_httpProxyRadio(this, qsl("conn_type"), dbictHttpProxy, lang(lng_connection_http_proxy_rb), (cConnectionType() == dbictHttpProxy)),
_tcpProxyRadio(this, qsl("conn_type"), dbictTcpProxy, lang(lng_connection_tcp_proxy_rb), (cConnectionType() == dbictTcpProxy)) {
_tcpProxyRadio(this, qsl("conn_type"), dbictTcpProxy, lang(lng_connection_tcp_proxy_rb), (cConnectionType() == dbictTcpProxy)),
_tryIPv6(this, lang(lng_connection_try_ipv6), cTryIPv6()) {
connect(&_saveButton, SIGNAL(clicked()), this, SLOT(onSave()));
connect(&_cancelButton, SIGNAL(clicked()), this, SLOT(onClose()));
@@ -51,6 +52,7 @@ void ConnectionBox::hideAll() {
_autoRadio.hide();
_httpProxyRadio.hide();
_tcpProxyRadio.hide();
_tryIPv6.hide();
_hostInput.hide();
_portInput.hide();
@@ -65,8 +67,9 @@ void ConnectionBox::showAll() {
_autoRadio.show();
_httpProxyRadio.show();
_tcpProxyRadio.show();
_tryIPv6.show();
int32 h = st::boxTitleHeight + st::connectionSkip + _autoRadio.height() + st::connectionSkip + _httpProxyRadio.height() + st::connectionSkip + _tcpProxyRadio.height() + st::connectionSkip;
int32 h = st::boxTitleHeight + st::connectionSkip + _autoRadio.height() + st::connectionSkip + _httpProxyRadio.height() + st::connectionSkip + _tcpProxyRadio.height() + st::connectionSkip + st::lineWidth + st::connectionSkip + _tryIPv6.height() + st::connectionSkip;
if (_httpProxyRadio.checked() || _tcpProxyRadio.checked()) {
h += 2 * st::boxPadding.top() + 2 * _hostInput.height();
_hostInput.show();
@@ -99,6 +102,9 @@ void ConnectionBox::paintEvent(QPaintEvent *e) {
paintTitle(p, lang(lng_connection_header), true);
// paint separator
p.fillRect(st::boxPadding.left(), _tryIPv6.y() - st::connectionSkip - st::lineWidth, width() - st::boxPadding.left() - st::boxPadding.right(), st::lineWidth, st::scrollDef.shColor->b);
// paint shadow
p.fillRect(0, height() - st::btnSelectCancel.height - st::scrollDef.bottomsh, width(), st::scrollDef.bottomsh, st::scrollDef.shColor->b);
@@ -128,10 +134,11 @@ void ConnectionBox::resizeEvent(QResizeEvent *e) {
_passwordInput.move(width() - st::boxPadding.right() - _passwordInput.width(), _userInput.y());
}
int32 buttony = (_tcpProxyRadio.checked() ? (_userInput.y() + _userInput.height()) : (_tcpProxyRadio.y() + _tcpProxyRadio.height())) + st::connectionSkip;
int32 tryipv6y = (_tcpProxyRadio.checked() ? (_userInput.y() + _userInput.height()) : (_tcpProxyRadio.y() + _tcpProxyRadio.height())) + st::connectionSkip + st::lineWidth + st::connectionSkip;
_tryIPv6.move(st::boxPadding.left(), tryipv6y);
_saveButton.move(width() - _saveButton.width(), buttony);
_cancelButton.move(0, buttony);
_saveButton.move(width() - _saveButton.width(), _tryIPv6.y() + _tryIPv6.height() + st::connectionSkip);
_cancelButton.move(0, _saveButton.y());
}
void ConnectionBox::onChange() {
@@ -172,8 +179,17 @@ void ConnectionBox::onSave() {
QNetworkProxyFactory::setUseSystemConfiguration(false);
QNetworkProxyFactory::setUseSystemConfiguration(true);
}
Local::writeSettings();
MTP::restart();
reinitImageLinkManager();
emit closed();
if (cPlatform() == dbipWindows && cTryIPv6() != _tryIPv6.checked()) {
cSetTryIPv6(_tryIPv6.checked());
Local::writeSettings();
cSetRestarting(true);
cSetRestartingToSettings(true);
App::quit();
} else {
cSetTryIPv6(_tryIPv6.checked());
Local::writeSettings();
MTP::restart();
reinitImageLinkManager();
emit closed();
}
}

View File

@@ -47,4 +47,5 @@ private:
PortInput _portInput;
FlatInput _userInput, _passwordInput;
FlatRadiobutton _autoRadio, _httpProxyRadio, _tcpProxyRadio;
FlatCheckbox _tryIPv6;
};

View File

@@ -23,7 +23,9 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
#include "mainwidget.h"
#include "window.h"
ContactsInner::ContactsInner(bool creatingChat) : _chat(0), _creatingChat(creatingChat),
#include "confirmbox.h"
ContactsInner::ContactsInner(bool creatingChat) : _chat(0), _bot(0), _creatingChat(creatingChat), _addToChat(0),
_contacts(&App::main()->contactsList()),
_sel(0),
_filteredSel(-1),
@@ -35,7 +37,7 @@ _addContactLnk(this, lang(lng_add_contact_button)) {
init();
}
ContactsInner::ContactsInner(ChatData *chat) : _chat(chat), _creatingChat(false),
ContactsInner::ContactsInner(ChatData *chat) : _chat(chat), _bot(0), _creatingChat(false), _addToChat(0),
_contacts(&App::main()->contactsList()),
_sel(0),
_filteredSel(-1),
@@ -47,6 +49,24 @@ _addContactLnk(this, lang(lng_add_contact_button)) {
init();
}
ContactsInner::ContactsInner(UserData *bot) : _chat(0), _bot(bot), _creatingChat(false), _addToChat(0),
_contacts(new DialogsIndexed(DialogsSortByAdd)),
_sel(0),
_filteredSel(-1),
_mouseSel(false),
_selCount(0),
_searching(false),
_byUsernameSel(-1),
_addContactLnk(this, lang(lng_add_contact_button)) {
DialogsIndexed &v(App::main()->dialogsList());
for (DialogRow *r = v.list.begin; r != v.list.end; r = r->next) {
if (r->history->peer->chat && !r->history->peer->asChat()->forbidden && !r->history->peer->asChat()->left) {
_contacts->addToEnd(r->history);
}
}
init();
}
void ContactsInner::init() {
connect(&_addContactLnk, SIGNAL(clicked()), App::wnd(), SLOT(onShowAddContact()));
@@ -59,13 +79,32 @@ void ContactsInner::init() {
connect(App::main(), SIGNAL(dialogRowReplaced(DialogRow *, DialogRow *)), this, SLOT(onDialogRowReplaced(DialogRow *, DialogRow *)));
connect(App::main(), SIGNAL(peerUpdated(PeerData*)), this, SLOT(peerUpdated(PeerData *)));
connect(App::main(), SIGNAL(peerNameChanged(PeerData *, const PeerData::Names &, const PeerData::NameFirstChars &)), this, SLOT(peerUpdated(PeerData *)));
connect(App::main(), SIGNAL(peerNameChanged(PeerData *, const PeerData::Names &, const PeerData::NameFirstChars &)), this, SLOT(onPeerNameChanged(PeerData *, const PeerData::Names &, const PeerData::NameFirstChars &)));
connect(App::main(), SIGNAL(peerPhotoChanged(PeerData *)), this, SLOT(peerUpdated(PeerData *)));
}
void ContactsInner::onPeerNameChanged(PeerData *peer, const PeerData::Names &oldNames, const PeerData::NameFirstChars &oldChars) {
if (bot()) {
_contacts->peerNameChanged(peer, oldNames, oldChars);
}
peerUpdated(peer);
}
void ContactsInner::onAddBot() {
if (_bot->botInfo && !_bot->botInfo->startGroupToken.isEmpty()) {
uint64 randomId = MTP::nonce<uint64>();
MTP::send(MTPmessages_StartBot(_bot->inputUser, MTP_int(App::chatFromPeer(_addToChat->id)), MTP_long(randomId), MTP_string(_bot->botInfo->startGroupToken)), App::main()->rpcDone(&MainWidget::sentUpdatesReceived), App::main()->rpcFail(&MainWidget::addParticipantFail, _bot));
App::wnd()->hideLayer();
App::main()->showPeerHistory(_addToChat->id, ShowAtUnreadMsgId);
} else {
App::main()->addParticipants(_addToChat, QVector<UserData*>(1, _bot));
}
}
void ContactsInner::peerUpdated(PeerData *peer) {
if (_chat && (!peer || peer == _chat)) {
if (_chat->forbidden) {
if (_chat->forbidden || _chat->left) {
App::wnd()->hideLayer();
} else if (!_chat->participants.isEmpty() || _chat->count <= 0) {
for (ContactsData::iterator i = _contactsData.begin(), e = _contactsData.end(); i != e; ++i) {
@@ -81,8 +120,8 @@ void ContactsInner::peerUpdated(PeerData *peer) {
}
}
}
} else if (!peer->chat) {
ContactsData::iterator i = _contactsData.find(peer->asUser());
} else {
ContactsData::iterator i = _contactsData.find(peer);
if (i != _contactsData.cend()) {
for (DialogRow *row = _contacts->list.begin; row->next; row = row->next) {
if (row->attached == i.value()) row->attached = 0;
@@ -136,14 +175,23 @@ void ContactsInner::loadProfilePhotos(int32 yFrom) {
ContactsInner::ContactData *ContactsInner::contactData(DialogRow *row) {
ContactData *data = (ContactData*)row->attached;
if (!data) {
UserData *user = row->history->peer->asUser();
ContactsData::const_iterator i = _contactsData.constFind(user);
PeerData *peer = row->history->peer;
ContactsData::const_iterator i = _contactsData.constFind(peer);
if (i == _contactsData.cend()) {
_contactsData.insert(user, data = new ContactData());
data->inchat = _chat ? _chat->participants.contains(user) : false;
data->check = false;
data->name.setText(st::profileListNameFont, user->name, _textNameOptions);
data->online = App::onlineText(user, _time);
_contactsData.insert(peer, data = new ContactData());
data->inchat = (_chat && !peer->chat) ? _chat->participants.contains(peer->asUser()) : false;
data->check = _checkedContacts.contains(peer);
data->name.setText(st::profileListNameFont, peer->name, _textNameOptions);
if (peer->chat) {
ChatData *chat = peer->asChat();
if (chat->forbidden || chat->left) {
data->online = lang(lng_chat_status_unaccessible);
} else {
data->online = lng_chat_status_members(lt_count, chat->count);
}
} else {
data->online = App::onlineText(peer->asUser(), _time);
}
} else {
data = i.value();
}
@@ -152,9 +200,11 @@ ContactsInner::ContactData *ContactsInner::contactData(DialogRow *row) {
return data;
}
void ContactsInner::paintDialog(QPainter &p, UserData *user, ContactData *data, bool sel) {
void ContactsInner::paintDialog(QPainter &p, PeerData *peer, ContactData *data, bool sel) {
int32 left = st::profileListPadding.width();
UserData *user = peer->chat ? 0 : peer->asUser();
if (data->inchat || data->check || _selCount + (_chat ? _chat->count : 0) >= cMaxGroupCount()) {
sel = false;
}
@@ -163,7 +213,7 @@ void ContactsInner::paintDialog(QPainter &p, UserData *user, ContactData *data,
p.fillRect(0, 0, width(), 2 * st::profileListPadding.height() + st::profileListPhotoSize, ((data->inchat || data->check) ? st::profileActiveBG : st::profileHoverBG)->b);
}
p.drawPixmap(left, st::profileListPadding.height(), user->photo->pix(st::profileListPhotoSize));
p.drawPixmap(left, st::profileListPadding.height(), peer->photo->pix(st::profileListPhotoSize));
if (data->inchat || data->check) {
p.setPen(st::white->p);
@@ -181,8 +231,7 @@ void ContactsInner::paintDialog(QPainter &p, UserData *user, ContactData *data,
p.drawPixmap(QPoint(width() - st::contactsImg.pxWidth() - st::profileCheckDeltaX, st::profileListPadding.height() + (st::profileListPhotoSize - st::contactsImg.pxHeight()) / 2 - st::profileCheckDeltaY), App::sprite(), st::contactsImg);
}
bool uname = (data->online.at(0) == '@');
bool uname = user && (data->online.at(0) == '@');
p.setFont(st::profileSubFont->f);
if (uname && !data->inchat && !data->check && !_lastQuery.isEmpty() && user->username.startsWith(_lastQuery, Qt::CaseInsensitive)) {
int32 availw = width() - (left + st::profileListPhotoSize + st::profileListPadding.width() * 2);
@@ -200,8 +249,10 @@ void ContactsInner::paintDialog(QPainter &p, UserData *user, ContactData *data,
} else {
if (data->inchat || data->check) {
p.setPen(st::white->p);
} else if (user && (uname || App::onlineColorUse(user, _time))) {
p.setPen(st::profileOnlineColor->p);
} else {
p.setPen(((uname || App::onlineColorUse(user->onlineTill, _time)) ? st::profileOnlineColor : st::profileOfflineColor)->p);
p.setPen(st::profileOfflineColor->p);
}
p.drawText(left + st::profileListPhotoSize + st::profileListPadding.width(), st::profileListPadding.height() + st::profileListPhotoSize - st::profileListStatusBottom, data->online);
}
@@ -224,7 +275,7 @@ void ContactsInner::paintEvent(QPaintEvent *e) {
DialogRow *drawFrom = _contacts->list.current;
p.translate(0, drawFrom->pos * rh);
while (drawFrom != _contacts->list.end && drawFrom->pos * rh < yTo) {
paintDialog(p, drawFrom->history->peer->asUser(), contactData(drawFrom), (drawFrom == _sel));
paintDialog(p, drawFrom->history->peer, contactData(drawFrom), (drawFrom == _sel));
p.translate(0, rh);
drawFrom = drawFrom->next;
}
@@ -253,13 +304,29 @@ void ContactsInner::paintEvent(QPaintEvent *e) {
} else {
p.setFont(st::noContactsFont->f);
p.setPen(st::noContactsColor->p);
p.drawText(QRect(0, 0, width(), st::noContactsHeight - ((cContactsReceived() && !_searching) ? st::noContactsFont->height : 0)), lang((cContactsReceived() && !_searching) ? lng_no_contacts : lng_contacts_loading), style::al_center);
QString text;
int32 skip = 0;
if (bot()) {
text = lang(cDialogsReceived() ? lng_bot_no_groups : lng_contacts_loading);
} else if (cContactsReceived() && !_searching) {
text = lang(lng_no_contacts);
skip = st::noContactsFont->height;
} else {
text = lang(lng_contacts_loading);
}
p.drawText(QRect(0, 0, width(), st::noContactsHeight - skip), text, style::al_center);
}
} else {
if (_filtered.isEmpty() && _byUsernameFiltered.isEmpty()) {
p.setFont(st::noContactsFont->f);
p.setPen(st::noContactsColor->p);
p.drawText(QRect(0, 0, width(), st::noContactsHeight), lang((cContactsReceived() && !_searching) ? lng_contacts_not_found : lng_contacts_loading), style::al_center);
QString text;
if (bot()) {
text = lang(cDialogsReceived() ? lng_bot_groups_not_found : lng_contacts_loading);
} else {
text = lang((cContactsReceived() && !_searching) ? lng_contacts_not_found : lng_contacts_loading);
}
p.drawText(QRect(0, 0, width(), st::noContactsHeight), text, style::al_center);
} else {
if (!_filtered.isEmpty()) {
int32 from = (yFrom >= 0) ? (yFrom / rh) : 0;
@@ -269,7 +336,7 @@ void ContactsInner::paintEvent(QPaintEvent *e) {
p.translate(0, from * rh);
for (; from < to; ++from) {
paintDialog(p, _filtered[from]->history->peer->asUser(), contactData(_filtered[from]), (_filteredSel == from));
paintDialog(p, _filtered[from]->history->peer, contactData(_filtered[from]), (_filteredSel == from));
p.translate(0, rh);
}
}
@@ -334,7 +401,7 @@ void ContactsInner::chooseParticipant() {
if (_filter.isEmpty()) {
if (_byUsernameSel >= 0 && _byUsernameSel < _byUsername.size()) {
if (d_byUsername[_byUsernameSel]->inchat) return;
changeCheckState(d_byUsername[_byUsernameSel]);
changeCheckState(d_byUsername[_byUsernameSel], _byUsername[_byUsernameSel]);
} else {
if (!_sel || contactData(_sel)->inchat) return;
changeCheckState(_sel);
@@ -342,7 +409,7 @@ void ContactsInner::chooseParticipant() {
} else {
if (_byUsernameSel >= 0 && _byUsernameSel < _byUsernameFiltered.size()) {
if (d_byUsernameFiltered[_byUsernameSel]->inchat) return;
changeCheckState(d_byUsernameFiltered[_byUsernameSel]);
changeCheckState(d_byUsernameFiltered[_byUsernameSel], _byUsernameFiltered[_byUsernameSel]);
ContactData *moving = d_byUsernameFiltered[_byUsernameSel];
int32 i = 0, l = d_byUsername.size();
@@ -371,40 +438,49 @@ void ContactsInner::chooseParticipant() {
}
} else {
int32 rh = st::profileListPhotoSize + st::profileListPadding.height() * 2, from;
PeerId peer = 0;
PeerData *peer = 0;
if (_filter.isEmpty()) {
if (_byUsernameSel >= 0 && _byUsernameSel < _byUsername.size()) {
peer = _byUsername[_byUsernameSel]->id;
} else {
peer = _sel ? _sel->history->peer->id : 0;
peer = _byUsername[_byUsernameSel];
} else if (_sel) {
peer = _sel->history->peer;
}
} else {
if (_byUsernameSel >= 0 && _byUsernameSel < _byUsernameFiltered.size()) {
peer = _byUsernameFiltered[_byUsernameSel]->id;
peer = _byUsernameFiltered[_byUsernameSel];
} else {
if (_filteredSel < 0 || _filteredSel >= _filtered.size()) return;
peer = _filtered[_filteredSel]->history->peer->id;
peer = _filtered[_filteredSel]->history->peer;
}
}
if (peer) {
App::wnd()->hideSettings(true);
App::main()->showPeer(peer, 0, false, true);
App::wnd()->hideLayer();
if (bot() && peer->chat) {
_addToChat = peer->asChat();
ConfirmBox *box = new ConfirmBox(lng_bot_sure_invite(lt_group, peer->name));
connect(box, SIGNAL(confirmed()), this, SLOT(onAddBot()));
App::wnd()->replaceLayer(box);
} else {
App::wnd()->hideSettings(true);
App::main()->choosePeer(peer->id, ShowAtUnreadMsgId);
App::wnd()->hideLayer();
}
}
}
parentWidget()->update();
}
void ContactsInner::changeCheckState(DialogRow *row) {
changeCheckState(contactData(row));
changeCheckState(contactData(row), row->history->peer);
}
void ContactsInner::changeCheckState(ContactData *data) {
void ContactsInner::changeCheckState(ContactData *data, PeerData *peer) {
if (data->check) {
data->check = false;
_checkedContacts.remove(peer);
--_selCount;
} else if (_selCount + (_chat ? _chat->count : 0) < cMaxGroupCount()) {
data->check = true;
_checkedContacts.insert(peer, true);
++_selCount;
}
}
@@ -562,8 +638,10 @@ void ContactsInner::updateFilter(QString filter) {
refresh();
_searching = true;
emit searchByUsername();
if (!bot()) {
_searching = true;
emit searchByUsername();
}
}
if (parentWidget()) parentWidget()->update();
loadProfilePhotos(0);
@@ -612,10 +690,12 @@ void ContactsInner::peopleReceived(const QString &query, const QVector<MTPContac
}
if (j == already) {
UserData *u = App::user(uid);
if (u->botInfo && u->botInfo->cantJoinGroups && (_chat || _creatingChat)) continue; // skip bot's that can't be invited to groups
ContactData *d = new ContactData();
_byUsernameDatas.push_back(d);
d->inchat = _chat ? _chat->participants.contains(u) : false;
d->check = false;
d->check = _checkedContacts.contains(u);
d->name.setText(st::profileListNameFont, u->name, _textNameOptions);
d->online = '@' + u->username;
@@ -634,7 +714,7 @@ void ContactsInner::refresh() {
if (!_addContactLnk.isHidden()) _addContactLnk.hide();
resize(width(), (_contacts->list.count * rh) + (_byUsername.isEmpty() ? 0 : (st::searchedBarHeight + _byUsername.size() * rh)));
} else {
if (cContactsReceived()) {
if (cContactsReceived() && !bot()) {
if (_addContactLnk.isHidden()) _addContactLnk.show();
} else {
if (!_addContactLnk.isHidden()) _addContactLnk.hide();
@@ -656,6 +736,10 @@ ChatData *ContactsInner::chat() const {
return _chat;
}
UserData *ContactsInner::bot() const {
return _bot;
}
bool ContactsInner::creatingChat() const {
return _creatingChat;
}
@@ -664,6 +748,10 @@ ContactsInner::~ContactsInner() {
for (ContactsData::iterator i = _contactsData.begin(), e = _contactsData.end(); i != e; ++i) {
delete *i;
}
if (_bot) {
delete _contacts;
if (_bot->botInfo) _bot->botInfo->startGroupToken = QString();
}
}
void ContactsInner::resizeEvent(QResizeEvent *e) {
@@ -794,10 +882,15 @@ void ContactsInner::selectSkipPage(int32 h, int32 dir) {
QVector<UserData*> ContactsInner::selected() {
QVector<UserData*> result;
for (DialogRow *row = _contacts->list.begin; row->next; row = row->next) {
if (_checkedContacts.contains(row->history->peer)) {
contactData(row); // fill _contactsData
}
}
result.reserve(_contactsData.size());
for (ContactsData::const_iterator i = _contactsData.cbegin(), e = _contactsData.cend(); i != e; ++i) {
if (i.value()->check) {
result.push_back(i.key());
if (i.value()->check && !i.key()->chat) {
result.push_back(i.key()->asUser());
}
}
for (int32 i = 0, l = _byUsername.size(); i < l; ++i) {
@@ -810,10 +903,15 @@ QVector<UserData*> ContactsInner::selected() {
QVector<MTPInputUser> ContactsInner::selectedInputs() {
QVector<MTPInputUser> result;
for (DialogRow *row = _contacts->list.begin; row->next; row = row->next) {
if (_checkedContacts.contains(row->history->peer)) {
contactData(row); // fill _contactsData
}
}
result.reserve(_contactsData.size());
for (ContactsData::const_iterator i = _contactsData.cbegin(), e = _contactsData.cend(); i != e; ++i) {
if (i.value()->check) {
result.push_back(i.key()->inputUser);
if (i.value()->check && !i.key()->chat) {
result.push_back(i.key()->asUser()->inputUser);
}
}
for (int32 i = 0, l = _byUsername.size(); i < l; ++i) {
@@ -825,6 +923,11 @@ QVector<MTPInputUser> ContactsInner::selectedInputs() {
}
PeerData *ContactsInner::selectedUser() {
for (DialogRow *row = _contacts->list.begin; row->next; row = row->next) {
if (_checkedContacts.contains(row->history->peer)) {
contactData(row); // fill _contactsData
}
}
for (ContactsData::const_iterator i = _contactsData.cbegin(), e = _contactsData.cend(); i != e; ++i) {
if (i.value()->check) {
return i.key();
@@ -854,6 +957,14 @@ _cancel(this, lang(lng_cancel), st::btnSelectCancel) {
init();
}
ContactsBox::ContactsBox(UserData *bot) : ItemListBox(st::boxNoTopScroll), _inner(bot),
_addContact(this, lang(lng_add_contact_button), st::contactsAdd),
_filter(this, st::contactsFilter, lang(lng_participant_filter)),
_next(this, lang(lng_create_group_next), st::btnSelectDone),
_cancel(this, lang(lng_cancel), st::contactsClose) {
init();
}
void ContactsBox::init() {
ItemListBox::init(&_inner, _cancel.height(), st::contactsAdd.height + st::newGroupNamePadding.top() + _filter.height() + st::newGroupNamePadding.bottom());
@@ -961,14 +1072,17 @@ void ContactsBox::hideAll() {
void ContactsBox::showAll() {
ItemListBox::showAll();
_addContact.show();
_filter.show();
if (_inner.chat() || _inner.creatingChat()) {
_next.show();
_addContact.hide();
} else {
_next.hide();
_addContact.show();
if (_inner.bot()) {
_addContact.hide();
} else {
_addContact.show();
}
}
_cancel.show();
}
@@ -1010,6 +1124,8 @@ void ContactsBox::paintEvent(QPaintEvent *e) {
// paint button sep
p.fillRect(st::btnSelectCancel.width, size().height() - st::btnSelectCancel.height, st::lineWidth, st::btnSelectCancel.height, st::btnSelectSep->b);
} else if (_inner.bot()) {
paintTitle(p, lang(lng_bot_choose_group), true);
} else {
paintTitle(p, lang(lng_contacts_header), true);
}
@@ -1050,7 +1166,7 @@ void ContactsBox::onNext() {
_filter.setFocus();
_filter.notaBene();
} else if (v.size() == 1) {
App::main()->showPeer(_inner.selectedUser()->id);
App::main()->showPeerHistory(_inner.selectedUser()->id, ShowAtUnreadMsgId);
} else {
App::wnd()->replaceLayer(new CreateGroupBox(users));
}
@@ -1155,16 +1271,18 @@ void CreateGroupBox::created(const MTPUpdates &updates) {
} break;
case mtpc_updateShortChatMessage: {
} break;
case mtpc_updateShortSentMessage: {
} break;
case mtpc_updatesTooLong: {
} break;
}
if (v && !v->isEmpty() && v->front().type() == mtpc_chat) {
App::main()->showPeer(App::peerFromChat(v->front().c_chat().vid.v));
App::main()->choosePeer(App::peerFromChat(v->front().c_chat().vid.v), ShowAtUnreadMsgId);
}
}
bool CreateGroupBox::failed(const RPCError &error) {
if (error.type().startsWith(qsl("FLOOD_WAIT_"))) return false;
if (mtpIsFlood(error)) return false;
_createRequestId = 0;
if (error.type() == "NO_CHAT_TITLE") {
@@ -1173,6 +1291,10 @@ bool CreateGroupBox::failed(const RPCError &error) {
} else if (error.type() == "USERS_TOO_FEW") {
emit closed();
return true;
} else if (error.type() == "PEER_FLOOD") {
emit closed();
App::wnd()->showLayer(new ConfirmBox(lng_cant_invite_not_contact(lt_more_info, textcmdLink(qsl("https://telegram.org/faq?_hash=can-39t-send-messages-to-non-contacts"), lang(lng_cant_more_info)))), true);
return true;
}
return false;
}

View File

@@ -30,6 +30,7 @@ public:
ContactsInner(bool creatingChat);
ContactsInner(ChatData *chat);
ContactsInner(UserData *bot);
void init();
void paintEvent(QPaintEvent *e);
@@ -39,7 +40,7 @@ public:
void mousePressEvent(QMouseEvent *e);
void resizeEvent(QResizeEvent *e);
void paintDialog(QPainter &p, UserData *user, ContactData *data, bool sel);
void paintDialog(QPainter &p, PeerData *peer, ContactData *data, bool sel);
void updateFilter(QString filter = QString());
void selectSkip(int32 dir);
@@ -52,13 +53,14 @@ public:
void loadProfilePhotos(int32 yFrom);
void chooseParticipant();
void changeCheckState(DialogRow *row);
void changeCheckState(ContactData *data);
void changeCheckState(ContactData *data, PeerData *peer);
void peopleReceived(const QString &query, const QVector<MTPContactFound> &people);
void refresh();
ChatData *chat() const;
UserData *bot() const;
bool creatingChat() const;
~ContactsInner();
@@ -75,11 +77,17 @@ public slots:
void updateSel();
void peerUpdated(PeerData *peer);
void onPeerNameChanged(PeerData *peer, const PeerData::Names &oldNames, const PeerData::NameFirstChars &oldChars);
void onAddBot();
private:
ChatData *_chat;
UserData *_bot;
bool _creatingChat;
ChatData *_addToChat;
int32 _time;
@@ -99,8 +107,10 @@ private:
bool inchat;
bool check;
};
typedef QMap<UserData*, ContactData*> ContactsData;
typedef QMap<PeerData*, ContactData*> ContactsData;
ContactsData _contactsData;
typedef QMap<PeerData*, bool> CheckedContacts;
CheckedContacts _checkedContacts;
ContactData *contactData(DialogRow *row);
@@ -125,6 +135,7 @@ public:
ContactsBox(bool creatingChat = false);
ContactsBox(ChatData *chat);
ContactsBox(UserData *bot);
void keyPressEvent(QKeyEvent *e);
void paintEvent(QPaintEvent *e);
void resizeEvent(QResizeEvent *e);

View File

@@ -61,7 +61,8 @@ PhotoSendBox::PhotoSendBox(const ReadyLocalMedia &img) : _img(new ReadyLocalMedi
}
resizeMaxHeight(st::boxWidth, _thumbh + st::boxPadding.top() + st::boxFont->height + st::boxPadding.bottom() + st::boxPadding.bottom() + _compressed.height() + _sendButton.height());
_thumb = QPixmap::fromImage(_thumb.toImage().scaled(_thumbw, _thumbh, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly);
_thumb = QPixmap::fromImage(_thumb.toImage().scaled(_thumbw * cIntRetinaFactor(), _thumbh * cIntRetinaFactor(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly);
_thumb.setDevicePixelRatio(cRetinaFactor());
} else {
_compressed.hide();
if (!_img->photoThumbs.isEmpty()) {
@@ -147,8 +148,7 @@ void PhotoSendBox::paintEvent(QPaintEvent *e) {
}
int32 x = (width() - w) / 2, y = st::boxPadding.top() * 2 + st::boxFont->height;
p.fillRect(QRect(x, y, w, h), st::msgOutBG->b);
p.fillRect(x, y + h, w, st::msgShadow, st::msgOutShadow->b);
App::roundRect(p, x, y, w, h, st::msgOutBg, MessageOutCorners, &st::msgOutShadow);
if (_thumbw) {
int32 rf(cIntRetinaFactor());
p.drawPixmap(QPoint(x + st::mediaPadding.left(), y + st::mediaPadding.top()), _thumb, QRect(_thumbx * rf, _thumby * rf, st::mediaThumbSize * rf, st::mediaThumbSize * rf));
@@ -190,7 +190,11 @@ void PhotoSendBox::hideAll() {
void PhotoSendBox::showAll() {
_sendButton.show();
_cancelButton.show();
_compressed.show();
if (_img && _img->type == ToPreparePhoto) {
_compressed.show();
} else {
_compressed.hide();
}
}
void PhotoSendBox::onSend(bool ctrlShiftEnter) {

View File

@@ -264,12 +264,12 @@ void SessionsBox::gotAuthorizations(const MTPaccount_Authorizations &result) {
QString appName, appVer = qs(d.vapp_version), systemVer = qs(d.vsystem_version), deviceModel = qs(d.vdevice_model);
if (d.vapi_id.v == 2040 || d.vapi_id.v == 17349) {
appName = (d.vapi_id.v == 2040) ? qsl("Telegram Desktop") : qsl("Telegram Desktop (GitHub)");
// if (systemVer == QLatin1String("windows")) {
appName = (d.vapi_id.v == 2040) ? qstr("Telegram Desktop") : qstr("Telegram Desktop (GitHub)");
// if (systemVer == qstr("windows")) {
// deviceModel = qsl("Windows");
// } else if (systemVer == QLatin1String("os x")) {
// } else if (systemVer == qstr("os x")) {
// deviceModel = qsl("OS X");
// } else if (systemVer == QLatin1String("linux")) {
// } else if (systemVer == qstr("linux")) {
// deviceModel = qsl("Linux");
// }
if (appVer == QString::number(appVer.toInt())) {
@@ -293,7 +293,7 @@ void SessionsBox::gotAuthorizations(const MTPaccount_Authorizations &result) {
MTPint active = d.vdate_active.v ? d.vdate_active : d.vdate_created;
data.activeTime = active.v;
data.info = qs(d.vdevice_model) + QLatin1String(", ") + (platform.isEmpty() ? QString() : platform + ' ') + qs(d.vsystem_version);
data.info = qs(d.vdevice_model) + qstr(", ") + (platform.isEmpty() ? QString() : platform + ' ') + qs(d.vsystem_version);
data.ip = qs(d.vip) + (country.isEmpty() ? QString() : QString::fromUtf8(" \xe2\x80\x93 ") + country);
if (!data.hash || (d.vflags.v & 1)) {
data.active = QString();

View File

@@ -27,7 +27,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
#include "localstorage.h"
StickerSetInner::StickerSetInner(const MTPInputStickerSet &set) :
_loaded(false), _setId(0), _setAccess(0), _bottom(0),
_loaded(false), _setId(0), _setAccess(0), _setCount(0), _setHash(0), _setFlags(0), _bottom(0),
_input(set), _installRequest(0) {
switch (set.type()) {
case mtpc_inputStickerSetID: _setId = set.c_inputStickerSetID().vid.v; _setAccess = set.c_inputStickerSetID().vaccess_hash.v; break;
@@ -46,7 +46,7 @@ void StickerSetInner::gotSet(const MTPmessages_StickerSet &set) {
_pack.reserve(v.size());
for (int32 i = 0, l = v.size(); i < l; ++i) {
DocumentData *doc = App::feedDocument(v.at(i));
if (!doc || !doc->sticker) continue;
if (!doc || !doc->sticker()) continue;
_pack.push_back(doc);
}
@@ -57,10 +57,13 @@ void StickerSetInner::gotSet(const MTPmessages_StickerSet &set) {
_setShortName = qs(s.vshort_name);
_setId = s.vid.v;
_setAccess = s.vaccess_hash.v;
_setCount = s.vcount.v;
_setHash = s.vhash.v;
_setFlags = s.vflags.v;
}
}
if (_pack.isEmpty() || _setShortName.isEmpty()) {
if (_pack.isEmpty()) {
App::wnd()->showLayer(new ConfirmBox(lang(lng_stickers_not_found), true), true);
} else {
int32 rows = _pack.size() / StickerPanPerRow + ((_pack.size() % StickerPanPerRow) ? 1 : 0);
@@ -83,7 +86,37 @@ bool StickerSetInner::failedSet(const RPCError &error) {
void StickerSetInner::installDone(const MTPBool &result) {
StickerSets &sets(cRefStickerSets());
sets.insert(_setId, StickerSet(_setId, _setAccess, _setTitle, _setShortName)).value().stickers = _pack;
sets.insert(_setId, StickerSet(_setId, _setAccess, _setTitle, _setShortName, _setCount, _setHash, _setFlags)).value().stickers = _pack;
int32 insertAtIndex = 0;
StickerSetsOrder &order(cRefStickerSetsOrder());
for (int32 s = order.size(); insertAtIndex < s; ++insertAtIndex) {
StickerSets::const_iterator i = sets.constFind(order.at(insertAtIndex));
if (i == sets.cend() || !(i->flags & MTPDstickerSet_flag_official)) {
break;
}
}
int32 currentIndex = cStickerSetsOrder().indexOf(_setId);
if (currentIndex != insertAtIndex) {
if (currentIndex > 0) {
order.removeAt(currentIndex);
if (currentIndex < insertAtIndex) {
--insertAtIndex;
}
}
order.insert(insertAtIndex, _setId);
}
StickerSets::iterator custom = sets.find(CustomStickerSetId);
if (custom != sets.cend()) {
for (int32 i = 0, l = _pack.size(); i < l; ++i) {
custom->stickers.removeOne(_pack.at(i));
}
if (custom->stickers.isEmpty()) {
sets.erase(custom);
}
}
cSetStickersHash(QByteArray());
Local::writeStickers();
emit installed(_setId);
@@ -123,16 +156,16 @@ void StickerSetInner::paintEvent(QPaintEvent *e) {
if (!doc->loader && doc->status != FileFailed && !already && !hasdata) {
doc->save(QString());
}
if (doc->sticker->img->isNull() && (already || hasdata)) {
if (doc->sticker()->img->isNull() && (already || hasdata)) {
if (already) {
doc->sticker->img = ImagePtr(doc->already());
doc->sticker()->img = ImagePtr(doc->already());
} else {
doc->sticker->img = ImagePtr(doc->data);
doc->sticker()->img = ImagePtr(doc->data);
}
}
}
float64 coef = qMin((st::stickersSize.width() - st::stickerPanRound * 2) / float64(doc->dimensions.width()), (st::stickersSize.height() - st::stickerPanRound * 2) / float64(doc->dimensions.height()));
float64 coef = qMin((st::stickersSize.width() - st::msgRadius * 2) / float64(doc->dimensions.width()), (st::stickersSize.height() - st::msgRadius * 2) / float64(doc->dimensions.height()));
if (coef > 1) coef = 1;
int32 w = qRound(coef * doc->dimensions.width()), h = qRound(coef * doc->dimensions.height());
if (w < 1) w = 1;
@@ -140,8 +173,8 @@ void StickerSetInner::paintEvent(QPaintEvent *e) {
QPoint ppos = pos + QPoint((st::stickersSize.width() - w) / 2, (st::stickersSize.height() - h) / 2);
if (goodThumb) {
p.drawPixmapLeft(ppos, width(), doc->thumb->pix(w, h));
} else if (!doc->sticker->img->isNull()) {
p.drawPixmapLeft(ppos, width(), doc->sticker->img->pix(w, h));
} else if (!doc->sticker()->img->isNull()) {
p.drawPixmapLeft(ppos, width(), doc->sticker()->img->pix(w, h));
}
}
}
@@ -165,6 +198,10 @@ int32 StickerSetInner::notInstalled() const {
return (_loaded && (cStickerSets().constFind(_setId) == cStickerSets().cend())) ? _pack.size() : 0;
}
bool StickerSetInner::official() const {
return _loaded && _setShortName.isEmpty();
}
QString StickerSetInner::title() const {
return _loaded ? (_pack.isEmpty() ? lang(lng_attach_failed) : _title) : lang(lng_contacts_loading);
}
@@ -175,7 +212,7 @@ QString StickerSetInner::shortName() const {
void StickerSetInner::install() {
if (_installRequest) return;
_installRequest = MTP::send(MTPmessages_InstallStickerSet(_input), rpcDone(&StickerSetInner::installDone), rpcFail(&StickerSetInner::installFailed));
_installRequest = MTP::send(MTPmessages_InstallStickerSet(_input, MTP_bool(false)), rpcDone(&StickerSetInner::installDone), rpcFail(&StickerSetInner::installFailed));
}
StickerSetInner::~StickerSetInner() {
@@ -184,7 +221,8 @@ StickerSetInner::~StickerSetInner() {
StickerSetBox::StickerSetBox(const MTPInputStickerSet &set) : ScrollableBox(st::stickersScroll), _inner(set),
_close(this, st::btnStickersClose),
_addStickers(this, lng_stickers_add_pack(lt_count, 0), st::btnStickersAdd),
_shareStickers(this, lang(lng_stickers_share_pack), st::btnStickersAdd) {
_shareStickers(this, lang(lng_stickers_share_pack), st::btnStickersAdd),
_closeStickers(this, lang(lng_close), st::btnStickersAdd) {
resize(st::stickersWidth, height());
setMaxHeight(st::stickersMaxHeight);
connect(App::main(), SIGNAL(stickersUpdated()), this, SLOT(onStickersUpdated()));
@@ -194,6 +232,7 @@ _shareStickers(this, lang(lng_stickers_share_pack), st::btnStickersAdd) {
connect(&_close, SIGNAL(clicked()), this, SLOT(onClose()));
connect(&_addStickers, SIGNAL(clicked()), this, SLOT(onAddStickers()));
connect(&_shareStickers, SIGNAL(clicked()), this, SLOT(onShareStickers()));
connect(&_closeStickers, SIGNAL(clicked()), this, SLOT(onClose()));
connect(&_inner, SIGNAL(updateButtons()), this, SLOT(onUpdateButtons()));
connect(&_scroll, SIGNAL(scrolled()), this, SLOT(onScroll()));
@@ -217,7 +256,6 @@ void StickerSetBox::onAddStickers() {
void StickerSetBox::onShareStickers() {
QString url = qsl("https://telegram.me/addstickers/") + _inner.shortName();
DEBUG_LOG(("Setting text to clipboard from stickerset box: %1").arg(url));
QApplication::clipboard()->setText(url);
App::wnd()->showLayer(new ConfirmBox(lang(lng_stickers_copied), true), true);
}
@@ -242,19 +280,26 @@ void StickerSetBox::showAll() {
_close.show();
int32 cnt = _inner.notInstalled();
if (_inner.loaded()) {
if (_inner.notInstalled()) {
if (_inner.official()) {
_addStickers.hide();
_shareStickers.hide();
_closeStickers.show();
} else if (_inner.notInstalled()) {
_addStickers.setText(lng_stickers_add_pack(lt_count, cnt));
_addStickers.show();
_addStickers.raise();
_shareStickers.hide();
_closeStickers.hide();
} else {
_shareStickers.show();
_shareStickers.raise();
_addStickers.hide();
_closeStickers.hide();
}
} else {
_addStickers.hide();
_shareStickers.hide();
_closeStickers.hide();
}
update();
}
@@ -272,4 +317,5 @@ void StickerSetBox::resizeEvent(QResizeEvent *e) {
_close.moveToRight(0, 0, width());
_addStickers.move((width() - _addStickers.width()) / 2, height() - (st::stickersAddOrShare + _addStickers.height()) / 2);
_shareStickers.move((width() - _shareStickers.width()) / 2, height() - (st::stickersAddOrShare + _shareStickers.height()) / 2);
_closeStickers.move((width() - _closeStickers.width()) / 2, height() - (st::stickersAddOrShare + _closeStickers.height()) / 2);
}

View File

@@ -32,6 +32,7 @@ public:
bool loaded() const;
int32 notInstalled() const;
bool official() const;
QString title() const;
QString shortName() const;
@@ -57,6 +58,7 @@ private:
bool _loaded;
uint64 _setId, _setAccess;
QString _title, _setTitle, _setShortName;
int32 _setCount, _setHash, _setFlags;
int32 _bottom;
MTPInputStickerSet _input;
@@ -96,5 +98,5 @@ private:
StickerSetInner _inner;
IconedButton _close;
FlatButton _addStickers, _shareStickers;
FlatButton _addStickers, _shareStickers, _closeStickers;
};

View File

@@ -17,9 +17,9 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
*/
#pragma once
static const int32 AppVersion = 8014;
static const wchar_t *AppVersionStr = L"0.8.14";
static const bool DevChannel = true;
static const int32 AppVersion = 8057;
static const wchar_t *AppVersionStr = L"0.8.57";
static const bool DevVersion = false;
static const wchar_t *AppNameOld = L"Telegram Win (Unofficial)";
static const wchar_t *AppName = L"Telegram Desktop";
@@ -40,8 +40,11 @@ enum {
MTPContainerLives = 600, // container lives 10 minutes in haveSent map
MTPMinReceiveDelay = 4000, // 4 seconds
MTPMaxReceiveDelay = 64000, // 64 seconds
MTPMinConnectDelay = 1000, // tcp connect should take less then 1 second
MTPMaxConnectDelay = 8000, // tcp connect should take 8 seconds max
MTPConnectionOldTimeout = 192000, // 192 seconds
MTPTcpConnectionWaitTimeout = 3000, // 3 seconds waiting for tcp, until we accept http
MTPTcpConnectionWaitTimeout = 2000, // 2 seconds waiting for tcp, until we accept http
MTPIPv4ConnectionWaitTimeout = 1000, // 1 seconds waiting for ipv4, until we accept ipv6
MTPMillerRabinIterCount = 30, // 30 Miller-Rabin iterations for dh_prime primality check
MTPUploadSessionsCount = 4, // max 4 upload sessions is created
@@ -78,22 +81,28 @@ enum {
AutoSearchTimeout = 900, // 0.9 secs
SearchPerPage = 50,
SearchManyPerPage = 100,
LinksOverviewPerPage = 12,
MediaOverviewStartPerPage = 5,
MediaOverviewPreloadCount = 4,
AudioVoiceMsgSimultaneously = 4,
AudioSongSimultaneously = 4,
AudioCheckPositionTimeout = 100, // 100ms per check audio pos
AudioCheckPositionDelta = 4800, // update position called each 4800 samples
AudioFadeTimeout = 10, // 10ms
AudioCheckPositionDelta = 2400, // update position called each 2400 samples
AudioFadeTimeout = 7, // 7ms
AudioFadeDuration = 500,
AudioVoiceMsgSkip = 400, // 200ms
AudioVoiceMsgFade = 300, // 300ms
AudioPreloadSamples = 5 * 48000, // preload next part if less than 5 seconds remains
AudioVoiceMsgFrequency = 48000, // 48 kHz
AudioVoiceMsgMaxLength = 100 * 60, // 100 minutes
AudioVoiceMsgUpdateView = 100, // 100ms
AudioVoiceMsgChannels = 2, // stereo
AudioVoiceMsgBufferSize = 1024 * 1024, // 1 Mb buffers
AudioVoiceMsgInMemory = 1024 * 1024, // 1 Mb audio is hold in memory and auto loaded
AudioSuspendTimeout = 3000, // suspend in 3 secs after playing is over
AudioPauseDeviceTimeout = 3000, // pause in 3 secs after playing is over
StickerInMemory = 256 * 1024, // 128 Kb stickers hold in memory, auto loaded and displayed inline
StickerInMemory = 1024 * 1024, // 1024 Kb stickers hold in memory, auto loaded and displayed inline
StickerMaxSize = 2048, // 2048x2048 is a max image size for sticker
MediaViewImageSizeLimit = 100 * 1024 * 1024, // show up to 100mb jpg/png/gif docs in app
@@ -119,7 +128,7 @@ enum {
SaveDraftTimeout = 1000, // save draft after 1 secs of not changing text
SaveDraftAnywayTimeout = 5000, // or save anyway each 5 secs
HiddenIsOnlineAfterMessage = 30, // user with hidden last seen stays online for such amount of seconds in the interface
SetOnlineAfterActivity = 30, // user with hidden last seen stays online for such amount of seconds in the interface
ServiceUserId = 777000,
WebPageUserId = 701000,
@@ -132,12 +141,18 @@ enum {
WrongPasscodeTimeout = 1500,
SessionsShortPollTimeout = 60000,
ChoosePeerByDragTimeout = 1000, // 1 second mouse not moved to choose dialog when dragging a file
};
inline bool isServiceUser(uint64 id) {
inline bool isNotificationsUser(uint64 id) {
return (id == 333000) || (id == ServiceUserId);
}
inline bool isServiceUser(uint64 id) {
return !(id % 1000);// (id == 333000) || (id == ServiceUserId);
}
#ifdef Q_OS_WIN
inline const GUID &cGUID() {
static const GUID gGuid = { 0x87a94ab0, 0xe370, 0x4cde, { 0x98, 0xd3, 0xac, 0xc1, 0x10, 0xc5, 0x96, 0x7d } };
@@ -180,10 +195,24 @@ static const BuiltInDc _builtInDcs[] = {
{ 5, "149.154.171.5", 443 }
};
static const BuiltInDc _builtInDcsIPv6[] = {
{ 1, "2001:b28:f23d:f001::a", 443 },
{ 2, "2001:67c:4e8:f002::a", 443 },
{ 3, "2001:b28:f23d:f003::a", 443 },
{ 4, "2001:67c:4e8:f004::a", 443 },
{ 5, "2001:b28:f23f:f005::a", 443 }
};
static const BuiltInDc _builtInTestDcs[] = {
{ 1, "149.154.175.10", 443 },
{ 2, "149.154.167.40", 443 },
{ 3, "174.140.142.5", 443 }
{ 3, "149.154.175.117", 443 }
};
static const BuiltInDc _builtInTestDcsIPv6[] = {
{ 1, "2001:b28:f23d:f001::e", 443 },
{ 2, "2001:67c:4e8:f002::e", 443 },
{ 3, "2001:b28:f23d:f003::e", 443 }
};
inline const BuiltInDc *builtInDcs() {
@@ -194,6 +223,14 @@ inline int builtInDcsCount() {
return (cTestMode() ? sizeof(_builtInTestDcs) : sizeof(_builtInDcs)) / sizeof(BuiltInDc);
}
inline const BuiltInDc *builtInDcsIPv6() {
return cTestMode() ? _builtInTestDcsIPv6 : _builtInDcsIPv6;
}
inline int builtInDcsCountIPv6() {
return (cTestMode() ? sizeof(_builtInTestDcsIPv6) : sizeof(_builtInDcsIPv6)) / sizeof(BuiltInDc);
}
static const char *UpdatesPublicKey = "\
-----BEGIN RSA PUBLIC KEY-----\n\
MIGJAoGBAMA4ViQrjkPZ9xj0lrer3r23JvxOnrtE8nI69XLGSr+sRERz9YnUptnU\n\
@@ -259,7 +296,7 @@ enum {
DefaultChatBackground = 21,
DialogsFirstLoad = 20, // first dialogs part size requested
DialogsPerPage = 40, // next dialogs part size
DialogsPerPage = 200, // next dialogs part size
MessagesFirstLoad = 30, // first history part size requested
MessagesPerPage = 50, // next history part size
@@ -289,6 +326,7 @@ enum {
MemoryForImageCache = 64 * 1024 * 1024, // after 64mb of unpacked images we try to clear some memory
NotifyWindowsCount = 3, // 3 desktop notifies at the same time
NotifySettingSaveTimeout = 1000, // wait 1 second before saving notify setting to server
NotifyDeletePhotoAfter = 60000, // delete notify photo after 1 minute
UpdateChunk = 100 * 1024, // 100kb parts when downloading the update
IdleMsecs = 60 * 1000, // after 60secs without user input we think we are idle
@@ -296,7 +334,7 @@ enum {
};
inline const QRegularExpression &cWordSplit() {
static QRegularExpression regexp(qsl("[\\s\\-\\+\\)\\(\\,\\.\\:\\!\\_\\;\\\"\\'\\x0]"));
static QRegularExpression regexp(qsl("[\\@\\s\\-\\+\\)\\(\\,\\.\\:\\!\\_\\;\\\"\\'\\x0]"));
return regexp;
}

View File

@@ -28,9 +28,9 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
#include "localstorage.h"
DialogsListWidget::DialogsListWidget(QWidget *parent, MainWidget *main) : QWidget(parent),
dialogs(false),
contactsNoDialogs(true),
contacts(true),
dialogs(DialogsSortByDate),
contactsNoDialogs(DialogsSortByName),
contacts(DialogsSortByName),
sel(0),
contactSel(false),
selByMouse(false),
@@ -42,12 +42,16 @@ peopleSel(-1),
_lastSearchId(0),
_state(DefaultState),
_addContactLnk(this, lang(lng_add_contact_button)),
_overDelete(false) {
_cancelSearchInPeer(this, st::btnCancelSearch),
_overDelete(false),
_searchInPeer(0) {
connect(main, SIGNAL(dialogToTop(const History::DialogLinks&)), this, SLOT(onDialogToTop(const History::DialogLinks&)));
connect(main, SIGNAL(peerNameChanged(PeerData*,const PeerData::Names&,const PeerData::NameFirstChars&)), this, SLOT(onPeerNameChanged(PeerData*,const PeerData::Names&,const PeerData::NameFirstChars&)));
connect(main, SIGNAL(peerPhotoChanged(PeerData*)), this, SLOT(onPeerPhotoChanged(PeerData*)));
connect(main, SIGNAL(dialogRowReplaced(DialogRow*,DialogRow*)), this, SLOT(onDialogRowReplaced(DialogRow*,DialogRow*)));
connect(&_addContactLnk, SIGNAL(clicked()), App::wnd(), SLOT(onShowAddContact()));
connect(&_cancelSearchInPeer, SIGNAL(clicked()), this, SIGNAL(cancelSearchInPeer()));
_cancelSearchInPeer.hide();
refresh(false);
}
@@ -60,10 +64,14 @@ int32 DialogsListWidget::peopleOffset() const {
}
int32 DialogsListWidget::searchedOffset() const {
return peopleOffset() + (peopleResults.isEmpty() ? 0 : ((peopleResults.size() * st::dlgHeight) + st::searchedBarHeight));
int32 result = peopleOffset() + (peopleResults.isEmpty() ? 0 : ((peopleResults.size() * st::dlgHeight) + st::searchedBarHeight));
if (_searchInPeer) result += st::dlgHeight;
return result;
}
void DialogsListWidget::paintEvent(QPaintEvent *e) {
if (!App::main()) return;
QRect r(e->rect());
bool trivial = (rect() == r);
@@ -78,12 +86,12 @@ void DialogsListWidget::paintEvent(QPaintEvent *e) {
if (otherStart) {
dialogs.list.paint(p, width(), r.top(), r.bottom(), active, selected);
}
if (contactsNoDialogs.list.count) {
if (contactsNoDialogs.list.count && false) {
contactsNoDialogs.list.paint(p, width(), r.top() - otherStart, r.bottom() - otherStart, active, selected);
} else if (!otherStart) {
p.setFont(st::noContactsFont->f);
p.setPen(st::noContactsColor->p);
p.drawText(QRect(0, 0, width(), st::noContactsHeight - (cContactsReceived() ? st::noContactsFont->height : 0)), lang(cContactsReceived() ? lng_no_contacts : lng_contacts_loading), style::al_center);
p.drawText(QRect(0, 0, width(), st::noContactsHeight - (cContactsReceived() ? st::noContactsFont->height : 0)), lang(cContactsReceived() ? lng_no_chats : lng_contacts_loading), style::al_center);
}
} else if (_state == FilteredState || _state == SearchedState) {
if (!hashtagResults.isEmpty()) {
@@ -95,19 +103,38 @@ void DialogsListWidget::paintEvent(QPaintEvent *e) {
}
p.translate(0, from * st::mentionHeight);
if (from < hashtagResults.size()) {
int32 to = (r.bottom() / int32(st::mentionHeight)) + 1, w = width();
int32 to = (r.bottom() / int32(st::mentionHeight)) + 1, w = width(), htagwidth = w - st::dlgPaddingHor * 2;
if (to > hashtagResults.size()) to = hashtagResults.size();
p.setFont(st::mentionFont->f);
p.setPen(st::black->p);
for (; from < to; ++from) {
bool selected = (from == hashtagSel);
if (selected) {
p.fillRect(0, 0, w, st::mentionHeight, st::dlgHoverBG->b);
p.fillRect(0, 0, w, st::mentionHeight, st::mentionBgOver->b);
int skip = (st::mentionHeight - st::notifyClose.icon.pxHeight()) / 2;
p.drawPixmap(QPoint(w - st::notifyClose.icon.pxWidth() - skip, skip), App::sprite(), st::notifyClose.icon);
}
QString tag = st::mentionFont->m.elidedText('#' + hashtagResults.at(from), Qt::ElideRight, w - st::dlgPaddingHor * 2);
p.drawText(st::dlgPaddingHor, st::mentionTop + st::mentionFont->ascent, tag);
QString first = (_hashtagFilter.size() < 2) ? QString() : ('#' + hashtagResults.at(from).mid(0, _hashtagFilter.size() - 1)), second = (_hashtagFilter.size() < 2) ? ('#' + hashtagResults.at(from)) : hashtagResults.at(from).mid(_hashtagFilter.size() - 1);
int32 firstwidth = st::mentionFont->m.width(first), secondwidth = st::mentionFont->m.width(second);
if (htagwidth < firstwidth + secondwidth) {
if (htagwidth < firstwidth + st::mentionFont->elidew) {
first = st::mentionFont->m.elidedText(first + second, Qt::ElideRight, htagwidth);
second = QString();
} else {
second = st::mentionFont->m.elidedText(second, Qt::ElideRight, htagwidth - firstwidth);
}
}
p.setFont(st::mentionFont->f);
if (!first.isEmpty()) {
p.setPen((selected ? st::mentionFgOverActive : st::mentionFgActive)->p);
p.drawText(st::dlgPaddingHor, st::mentionTop + st::mentionFont->ascent, first);
}
if (!second.isEmpty()) {
p.setPen((selected ? st::mentionFgOver : st::mentionFg)->p);
p.drawText(st::dlgPaddingHor + firstwidth, st::mentionTop + st::mentionFont->ascent, second);
}
p.translate(0, st::mentionHeight);
}
}
@@ -160,6 +187,18 @@ void DialogsListWidget::paintEvent(QPaintEvent *e) {
}
}
if (_searchInPeer) {
searchInPeerPaint(p, width());
p.translate(0, st::dlgHeight);
if (_state == FilteredState && searchResults.isEmpty()) {
p.fillRect(0, 0, width(), st::searchedBarHeight, st::searchedBarBG->b);
p.setFont(st::searchedBarFont->f);
p.setPen(st::searchedBarColor->p);
p.drawText(QRect(0, 0, width(), st::searchedBarHeight), lang(lng_dlg_search_for_messages), style::al_center);
p.translate(0, st::searchedBarHeight);
}
}
if (_state == SearchedState || !searchResults.isEmpty()) {
QString text = lng_search_found_results(lt_count, searchResults.isEmpty() ? 0 : searchedCount);
p.fillRect(0, 0, width(), st::searchedBarHeight, st::searchedBarBG->b);
@@ -231,6 +270,31 @@ void DialogsListWidget::peopleResultPaint(UserData *user, QPainter &p, int32 w,
history->nameText.drawElided(p, rectForName.left(), rectForName.top(), rectForName.width());
}
void DialogsListWidget::searchInPeerPaint(QPainter &p, int32 w) const {
QRect fullRect(0, 0, w, st::dlgHeight);
p.fillRect(fullRect, st::dlgBG->b);
p.drawPixmap(st::dlgPaddingHor, st::dlgPaddingVer, _searchInPeer->photo->pix(st::dlgPhotoSize));
int32 nameleft = st::dlgPaddingHor + st::dlgPhotoSize + st::dlgPhotoPadding;
int32 namewidth = w - nameleft - st::dlgPaddingHor * 2 - st::btnCancelSearch.width;
QRect rectForName(nameleft, st::dlgPaddingVer + st::dlgNameTop, namewidth, st::msgNameFont->height);
// draw chat icon
if (_searchInPeer->chat) {
p.drawPixmap(QPoint(rectForName.left() + st::dlgChatImgLeft, rectForName.top() + st::dlgChatImgTop), App::sprite(), st::dlgChatImg);
rectForName.setLeft(rectForName.left() + st::dlgChatImgSkip);
}
QRect tr(nameleft, st::dlgPaddingVer + st::dlgFont->height + st::dlgSep, namewidth, st::dlgFont->height);
p.setFont(st::dlgHistFont->f);
p.setPen(st::dlgTextColor->p);
p.drawText(tr.left(), tr.top() + st::dlgHistFont->ascent, st::dlgHistFont->m.elidedText(lang(lng_dlg_search_chat), Qt::ElideRight, tr.width()));
p.setPen(st::dlgNameColor->p);
App::history(_searchInPeer->id)->nameText.drawElided(p, rectForName.left(), rectForName.top(), rectForName.width());
}
void DialogsListWidget::activate() {
}
@@ -253,7 +317,7 @@ void DialogsListWidget::onUpdateSelected(bool force) {
if (newSel) {
contactSel = false;
} else {
newSel = contactsNoDialogs.list.rowAtY(mouseY - otherStart, st::dlgHeight);
newSel = 0;// contactsNoDialogs.list.rowAtY(mouseY - otherStart, st::dlgHeight);
contactSel = true;
}
if (newSel != sel) {
@@ -326,6 +390,7 @@ void DialogsListWidget::mousePressEvent(QMouseEvent *e) {
void DialogsListWidget::resizeEvent(QResizeEvent *e) {
_addContactLnk.move((width() - _addContactLnk.width()) / 2, (st::noContactsHeight + st::noContactsFont->height) / 2);
_cancelSearchInPeer.move(width() - st::dlgPaddingHor - st::btnCancelSearch.width, (st::dlgHeight - st::btnCancelSearch.height) / 2);
}
void DialogsListWidget::onDialogRowReplaced(DialogRow *oldRow, DialogRow *newRow) {
@@ -376,9 +441,8 @@ void DialogsListWidget::removePeer(PeerData *peer) {
contactsNoDialogs.addByName(App::history(peer->id));
}
}
// contactsNoDialogs.del(peer);
// contacts.del(peer);
// App::deleteHistory(peer->id);
Local::removeSavedPeer(peer);
emit App::main()->dialogsUpdated();
@@ -419,7 +483,7 @@ void DialogsListWidget::dlgUpdated(History *history) {
if (i != dialogs.list.rowByPeer.cend()) {
update(0, i.value()->pos * st::dlgHeight, width(), st::dlgHeight);
} else {
i = contactsNoDialogs.list.rowByPeer.find(history->peer->id);
i = contactsNoDialogs.list.rowByPeer.end();// find(history->peer->id);
if (i != contactsNoDialogs.list.rowByPeer.cend()) {
update(0, (dialogs.list.count + i.value()->pos) * st::dlgHeight, width(), st::dlgHeight);
}
@@ -468,6 +532,7 @@ void DialogsListWidget::leaveEvent(QEvent *e) {
if (sel || filteredSel >= 0 || hashtagSel >= 0 || searchedSel >= 0 || peopleSel >= 0) {
sel = 0;
filteredSel = searchedSel = peopleSel = hashtagSel = -1;
setCursor(style::cur_default);
parentWidget()->update();
}
}
@@ -517,7 +582,7 @@ void DialogsListWidget::onFilterUpdate(QString newFilter, bool force) {
}
if (newFilter != filter || force) {
filter = newFilter;
if (filter.isEmpty()) {
if (!_searchInPeer && filter.isEmpty()) {
_state = DefaultState;
hashtagResults.clear();
filterResults.clear();
@@ -529,7 +594,7 @@ void DialogsListWidget::onFilterUpdate(QString newFilter, bool force) {
_state = FilteredState;
filterResults.clear();
if (!f.isEmpty()) {
if (!_searchInPeer && !f.isEmpty()) {
DialogsList *dialogsToFilter = 0, *contactsNoDialogsToFilter = 0;
if (dialogs.list.count) {
for (fi = fb; fi != fe; ++fi) {
@@ -607,8 +672,9 @@ void DialogsListWidget::onFilterUpdate(QString newFilter, bool force) {
}
}
void DialogsListWidget::onHashtagFilterUpdate(QString newFilter) {
if (newFilter.isEmpty() || newFilter.at(0) != '#') {
void DialogsListWidget::onHashtagFilterUpdate(QStringRef newFilter) {
if (newFilter.isEmpty() || newFilter.at(0) != '#' || _searchInPeer) {
_hashtagFilter = QString();
if (!hashtagResults.isEmpty()) {
hashtagResults.clear();
refresh(true);
@@ -616,6 +682,7 @@ void DialogsListWidget::onHashtagFilterUpdate(QString newFilter) {
}
return;
}
_hashtagFilter = newFilter.toString();
if (cRecentSearchHashtags().isEmpty() && cRecentWriteHashtags().isEmpty()) {
Local::readRecentHashtags();
}
@@ -624,7 +691,7 @@ void DialogsListWidget::onHashtagFilterUpdate(QString newFilter) {
if (!recent.isEmpty()) {
hashtagResults.reserve(qMin(recent.size(), 5));
for (RecentHashtagPack::const_iterator i = recent.cbegin(), e = recent.cend(); i != e; ++i) {
if (i->first.startsWith(newFilter.midRef(1), Qt::CaseInsensitive) && i->first.size() + 1 != newFilter.size()) {
if (i->first.startsWith(_hashtagFilter.midRef(1), Qt::CaseInsensitive) && i->first.size() + 1 != newFilter.size()) {
hashtagResults.push_back(i->first);
if (hashtagResults.size() == 5) break;
}
@@ -657,6 +724,26 @@ void DialogsListWidget::itemReplaced(HistoryItem *oldItem, HistoryItem *newItem)
}
}
PeerData *DialogsListWidget::updateFromParentDrag(QPoint globalPos) {
lastMousePos = globalPos;
selByMouse = true;
onUpdateSelected(true);
update();
if (_state == DefaultState) {
if (sel) return sel->history->peer;
} else if (_state == FilteredState || _state == SearchedState) {
if (filteredSel >= 0 && filteredSel < filterResults.size()) {
return filterResults[filteredSel]->history->peer;
} else if (peopleSel >= 0 && peopleSel < peopleResults.size()) {
return peopleResults[peopleSel];
} else if (searchedSel >= 0 && searchedSel < searchResults.size()) {
return searchResults[searchedSel]->_item->history()->peer;
}
}
return 0;
}
void DialogsListWidget::itemRemoved(HistoryItem *item) {
int wasCount = searchResults.size();
for (int i = 0; i < searchResults.size();) {
@@ -686,6 +773,16 @@ void DialogsListWidget::dialogsReceived(const QVector<MTPDialog> &added) {
refresh();
}
void DialogsListWidget::addAllSavedPeers() {
SavedPeersByTime &saved(cRefSavedPeersByTime());
while (!saved.isEmpty()) {
History *history = App::history(saved.last()->id);
history->dialogs = dialogs.addToEnd(history);
contactsNoDialogs.del(history->peer);
saved.remove(saved.lastKey(), saved.last());
}
}
void DialogsListWidget::searchReceived(const QVector<MTPMessage> &messages, bool fromStart, int32 fullCount) {
if (fromStart) {
clearSearchResults(false);
@@ -717,7 +814,6 @@ void DialogsListWidget::peopleReceived(const QString &query, const QVector<MTPCo
}
void DialogsListWidget::contactsReceived(const QVector<MTPContact> &contacts) {
cSetContactsReceived(true);
for (QVector<MTPContact>::const_iterator i = contacts.cbegin(), e = contacts.cend(); i != e; ++i) {
int32 uid = i->c_contact().vuser_id.v;
addNewContact(uid);
@@ -725,29 +821,24 @@ void DialogsListWidget::contactsReceived(const QVector<MTPContact> &contacts) {
App::self()->contact = 1;
}
}
if (!sel && contactsNoDialogs.list.count) {
if (!sel && contactsNoDialogs.list.count && false) {
sel = contactsNoDialogs.list.begin;
contactSel = true;
}
refresh();
}
int32 DialogsListWidget::addNewContact(int32 uid, bool select) {
int32 DialogsListWidget::addNewContact(int32 uid, bool select) { // -2 - err, -1 - don't scroll, >= 0 - scroll
PeerId peer = App::peerFromUser(uid);
if (!App::peerLoaded(peer)) return -1;
if (!App::peerLoaded(peer)) return -2;
History *history = App::history(peer);
contacts.addByName(history);
DialogsList::RowByPeer::const_iterator i = dialogs.list.rowByPeer.constFind(peer);
if (i == dialogs.list.rowByPeer.cend()) {
DialogRow *added = contactsNoDialogs.addByName(history);
if (!added) return -1;
if (select) {
sel = added;
contactSel = true;
}
if (contactsNoDialogs.list.count == 1 && !dialogs.list.count) refresh();
return added ? ((dialogs.list.count + added->pos) * st::dlgHeight) : -1;
if (!added) return -2;
return -1;
}
if (select) {
sel = i.value();
@@ -759,7 +850,7 @@ int32 DialogsListWidget::addNewContact(int32 uid, bool select) {
void DialogsListWidget::refresh(bool toTop) {
int32 h = 0;
if (_state == DefaultState) {
h = (dialogs.list.count + contactsNoDialogs.list.count) * st::dlgHeight;
h = (dialogs.list.count/* + contactsNoDialogs.list.count*/) * st::dlgHeight;
if (h) {
if (!_addContactLnk.isHidden()) _addContactLnk.hide();
} else {
@@ -773,7 +864,7 @@ void DialogsListWidget::refresh(bool toTop) {
} else {
if (!_addContactLnk.isHidden()) _addContactLnk.hide();
if (_state == FilteredState) {
h = searchedOffset() + (searchResults.count() * st::dlgHeight) + (searchResults.isEmpty() ? 0 : st::searchedBarHeight);
h = searchedOffset() + (searchResults.count() * st::dlgHeight) + ((searchResults.isEmpty() && !_searchInPeer) ? 0 : st::searchedBarHeight);
} else if (_state == SearchedState) {
h = searchedOffset() + (searchResults.count() * st::dlgHeight) + st::searchedBarHeight;
}
@@ -794,6 +885,7 @@ void DialogsListWidget::setMouseSel(bool msel, bool toTop) {
contactSel = !dialogs.list.count && contactsNoDialogs.list.count;
} else if (_state == FilteredState || _state == SearchedState) { // don't select first elem in search
filteredSel = peopleSel = searchedSel = hashtagSel = -1;
setCursor(style::cur_default);
}
}
}
@@ -821,9 +913,23 @@ bool DialogsListWidget::hasFilteredResults() const {
return !filterResults.isEmpty() && hashtagResults.isEmpty();
}
void DialogsListWidget::searchInPeer(PeerData *peer) {
_searchInPeer = peer;
if (_searchInPeer) {
onHashtagFilterUpdate(QStringRef());
_cancelSearchInPeer.show();
} else {
_cancelSearchInPeer.hide();
}
}
void DialogsListWidget::clearFilter() {
if (_state == FilteredState || _state == SearchedState) {
_state = DefaultState;
if (_searchInPeer) {
_state = FilteredState;
} else {
_state = DefaultState;
}
hashtagResults.clear();
filterResults.clear();
peopleResults.clear();
@@ -836,6 +942,15 @@ void DialogsListWidget::clearFilter() {
void DialogsListWidget::addDialog(const MTPDdialog &dialog) {
History *history = App::history(App::peerFromMTP(dialog.vpeer), dialog.vunread_count.v, dialog.vread_inbox_max_id.v);
if (history->lastMsg) {
SavedPeersByTime &saved(cRefSavedPeersByTime());
while (!saved.isEmpty() && history->lastMsg->date < saved.lastKey()) {
History *history = App::history(saved.last()->id);
history->dialogs = dialogs.addToEnd(history);
contactsNoDialogs.del(history->peer);
saved.remove(saved.lastKey(), saved.last());
}
}
History::DialogLinks links = dialogs.addToEnd(history);
history->dialogs = links;
contactsNoDialogs.del(history->peer);
@@ -848,7 +963,7 @@ void DialogsListWidget::selectSkip(int32 direction) {
if (!sel) {
if (dialogs.list.count && direction > 0) {
sel = dialogs.list.begin;
} else if (contactsNoDialogs.list.count && direction > 0) {
} else if (false && contactsNoDialogs.list.count && direction > 0) {
sel = contactsNoDialogs.list.begin;
} else {
return;
@@ -856,14 +971,14 @@ void DialogsListWidget::selectSkip(int32 direction) {
} else if (direction > 0) {
if (sel->next->next) {
sel = sel->next;
} else if (sel->next == dialogs.list.end && contactsNoDialogs.list.count) {
} else if (false && sel->next == dialogs.list.end && contactsNoDialogs.list.count) {
sel = contactsNoDialogs.list.begin;
contactSel = true;
}
} else {
if (sel->prev) {
sel = sel->prev;
} else if (sel == contactsNoDialogs.list.begin && dialogs.list.count) {
} else if (false && sel == contactsNoDialogs.list.begin && dialogs.list.count) {
sel = dialogs.list.end->prev;
contactSel = false;
}
@@ -921,7 +1036,7 @@ void DialogsListWidget::scrollToPeer(const PeerId &peer, MsgId msgId) {
DialogsList::RowByPeer::const_iterator i = dialogs.list.rowByPeer.constFind(peer);
if (i != dialogs.list.rowByPeer.cend()) {
fromY = i.value()->pos * st::dlgHeight;
} else {
} else if (false) {
i = contactsNoDialogs.list.rowByPeer.constFind(peer);
if (i != contactsNoDialogs.list.rowByPeer.cend()) {
fromY = (i.value()->pos + dialogs.list.count) * st::dlgHeight;
@@ -956,7 +1071,7 @@ void DialogsListWidget::selectSkipPage(int32 pixels, int32 direction) {
if (!sel) {
if (direction > 0 && dialogs.list.count) {
sel = dialogs.list.begin;
} else if (direction > 0 && contactsNoDialogs.list.count) {
} else if (false && direction > 0 && contactsNoDialogs.list.count) {
sel = contactsNoDialogs.list.begin;
} else {
return;
@@ -966,7 +1081,7 @@ void DialogsListWidget::selectSkipPage(int32 pixels, int32 direction) {
while (toSkip-- && sel->next->next) {
sel = sel->next;
}
if (toSkip >= 0 && sel->next == dialogs.list.end && contactsNoDialogs.list.count) {
if (false && toSkip >= 0 && sel->next == dialogs.list.end && contactsNoDialogs.list.count) {
sel = contactsNoDialogs.list.begin;
while (toSkip-- && sel->next->next) {
sel = sel->next;
@@ -1051,7 +1166,7 @@ void DialogsListWidget::loadPeerPhotos(int32 yFrom) {
bool DialogsListWidget::choosePeer() {
History *history = 0;
MsgId msgId = 0;
MsgId msgId = ShowAtUnreadMsgId;
if (_state == DefaultState) {
if (sel) history = sel->history;
} else if (_state == FilteredState || _state == SearchedState) {
@@ -1090,11 +1205,11 @@ bool DialogsListWidget::choosePeer() {
}
}
if (history) {
if (msgId) {
if (msgId > 0) {
saveRecentHashtags(filter);
}
bool chosen = (!App::main()->selectingPeer(true) && (_state == FilteredState || _state == SearchedState) && filteredSel >= 0 && filteredSel < filterResults.size());
App::main()->showPeer(history->peer->id, msgId);
App::main()->choosePeer(history->peer->id, msgId);
if (chosen) {
emit searchResultChosen();
}
@@ -1161,11 +1276,11 @@ void DialogsListWidget::peerBefore(const PeerData *inPeer, MsgId inMsg, PeerData
}
if (i.value()->prev) {
outPeer = i.value()->prev->history->peer;
outMsg = 0;
outMsg = ShowAtUnreadMsgId;
return;
} else if (dialogs.list.count) {
outPeer = dialogs.list.end->prev->history->peer;
outMsg = 0;
outMsg = ShowAtUnreadMsgId;
return;
}
outPeer = 0;
@@ -1174,7 +1289,7 @@ void DialogsListWidget::peerBefore(const PeerData *inPeer, MsgId inMsg, PeerData
}
if (i.value()->prev) {
outPeer = i.value()->prev->history->peer;
outMsg = 0;
outMsg = ShowAtUnreadMsgId;
return;
}
} else if (_state == FilteredState || _state == SearchedState) {
@@ -1188,7 +1303,7 @@ void DialogsListWidget::peerBefore(const PeerData *inPeer, MsgId inMsg, PeerData
}
}
if (searchResults.at(0)->_item->history()->peer == inPeer && searchResults.at(0)->_item->id == inMsg) {
outMsg = 0;
outMsg = ShowAtUnreadMsgId;
if (peopleResults.isEmpty()) {
if (filterResults.isEmpty()) {
outPeer = 0;
@@ -1203,14 +1318,14 @@ void DialogsListWidget::peerBefore(const PeerData *inPeer, MsgId inMsg, PeerData
}
if (!peopleResults.isEmpty() && peopleResults.at(0) == inPeer) {
outPeer = filterResults.isEmpty() ? 0 : filterResults.back()->history->peer;
outMsg = 0;
outMsg = ShowAtUnreadMsgId;
return;
}
if (!peopleResults.isEmpty()) {
for (PeopleResults::const_iterator b = peopleResults.cbegin(), i = b + 1, e = peopleResults.cend(); i != e; ++i) {
if ((*i) == inPeer) {
outPeer = (*(i - 1));
outMsg = 0;
outMsg = ShowAtUnreadMsgId;
return;
}
}
@@ -1224,7 +1339,7 @@ void DialogsListWidget::peerBefore(const PeerData *inPeer, MsgId inMsg, PeerData
for (FilteredDialogs::const_iterator b = filterResults.cbegin(), i = b + 1, e = filterResults.cend(); i != e; ++i) {
if ((*i)->history->peer == inPeer) {
outPeer = (*(i - 1))->history->peer;
outMsg = 0;
outMsg = ShowAtUnreadMsgId;
return;
}
}
@@ -1237,17 +1352,17 @@ void DialogsListWidget::peerAfter(const PeerData *inPeer, MsgId inMsg, PeerData
if (_state == DefaultState) {
DialogsList::RowByPeer::const_iterator i = dialogs.list.rowByPeer.constFind(inPeer->id);
if (i == dialogs.list.rowByPeer.constEnd()) {
i = contactsNoDialogs.list.rowByPeer.constFind(inPeer->id);
if (i == contactsNoDialogs.list.rowByPeer.cend()) {
outPeer = 0;
outMsg = 0;
return;
}
if (i.value()->next != contactsNoDialogs.list.end) {
outPeer = i.value()->next->history->peer;
outMsg = 0;
return;
}
//i = contactsNoDialogs.list.rowByPeer.constFind(inPeer->id);
//if (i == contactsNoDialogs.list.rowByPeer.cend()) {
// outPeer = 0;
// outMsg = 0;
// return;
//}
//if (i.value()->next != contactsNoDialogs.list.end) {
// outPeer = i.value()->next->history->peer;
// outMsg = ShowAtUnreadMsgId;
// return;
//}
outPeer = 0;
outMsg = 0;
return;
@@ -1255,11 +1370,11 @@ void DialogsListWidget::peerAfter(const PeerData *inPeer, MsgId inMsg, PeerData
if (i.value()->next != dialogs.list.end) {
outPeer = i.value()->next->history->peer;
outMsg = 0;
outMsg = ShowAtUnreadMsgId;
return;
} else if (contactsNoDialogs.list.count) {
} else if (false && contactsNoDialogs.list.count) {
outPeer = contactsNoDialogs.list.begin->history->peer;
outMsg = 0;
outMsg = ShowAtUnreadMsgId;
return;
}
} else if (_state == FilteredState || _state == SearchedState) {
@@ -1281,7 +1396,7 @@ void DialogsListWidget::peerAfter(const PeerData *inPeer, MsgId inMsg, PeerData
outMsg = searchResults.front()->_item->id;
} else {
outPeer = (i == e) ? 0 : (*i);
outMsg = 0;
outMsg = ShowAtUnreadMsgId;
}
return;
}
@@ -1291,13 +1406,13 @@ void DialogsListWidget::peerAfter(const PeerData *inPeer, MsgId inMsg, PeerData
++i;
if (i == e && !peopleResults.isEmpty()) {
outPeer = peopleResults.front();
outMsg = 0;
outMsg = ShowAtUnreadMsgId;
} else if (i == e && !searchResults.isEmpty()) {
outPeer = searchResults.front()->_item->history()->peer;
outMsg = searchResults.front()->_item->id;
} else {
outPeer = (i == e) ? 0 : (*i)->history->peer;
outMsg = 0;
outMsg = ShowAtUnreadMsgId;
}
return;
}
@@ -1333,6 +1448,8 @@ MsgId DialogsListWidget::lastSearchId() const {
DialogsWidget::DialogsWidget(MainWidget *parent) : QWidget(parent)
, _drawShadow(true)
, _dragInScroll(false)
, _dragForward(false)
, dlgOffset(0)
, dlgCount(-1)
, dlgPreloading(0)
@@ -1343,6 +1460,7 @@ DialogsWidget::DialogsWidget(MainWidget *parent) : QWidget(parent)
, _cancelSearch(this, st::btnCancelSearch)
, scroll(this, st::dlgScroll)
, list(&scroll, parent)
, _searchInPeer(0)
, _searchFull(false)
, _peopleFull(false)
{
@@ -1354,6 +1472,7 @@ DialogsWidget::DialogsWidget(MainWidget *parent) : QWidget(parent)
connect(&list, SIGNAL(searchResultChosen()), this, SLOT(onCancel()));
connect(&list, SIGNAL(completeHashtag(QString)), this, SLOT(onCompleteHashtag(QString)));
connect(&list, SIGNAL(refreshHashtags()), this, SLOT(onFilterCursorMoved()));
connect(&list, SIGNAL(cancelSearchInPeer()), this, SLOT(onCancelSearchInPeer()));
connect(&scroll, SIGNAL(geometryChanged()), &list, SLOT(onParentGeometryChanged()));
connect(&scroll, SIGNAL(scrolled()), &list, SLOT(onUpdateSelected()));
connect(&scroll, SIGNAL(scrolled()), this, SLOT(onListScroll()));
@@ -1365,6 +1484,11 @@ DialogsWidget::DialogsWidget(MainWidget *parent) : QWidget(parent)
connect(&_newGroup, SIGNAL(clicked()), this, SLOT(onNewGroup()));
connect(&_cancelSearch, SIGNAL(clicked()), this, SLOT(onCancelSearch()));
_chooseByDragTimer.setSingleShot(true);
connect(&_chooseByDragTimer, SIGNAL(timeout()), this, SLOT(onChooseByDrag()));
setAcceptDrops(true);
_searchTimer.setSingleShot(true);
connect(&_searchTimer, SIGNAL(timeout()), this, SLOT(onSearchMessages()));
@@ -1404,10 +1528,6 @@ void DialogsWidget::dialogsToUp() {
}
}
void DialogsWidget::setInnerFocus() {
_filter.setFocus();
}
void DialogsWidget::animShow(const QPixmap &bgAnimCache) {
_bgAnimCache = bgAnimCache;
_animCache = myGrab(this, rect());
@@ -1448,7 +1568,7 @@ bool DialogsWidget::animStep(float64 ms) {
}
void DialogsWidget::onCancel() {
if (!onCancelSearch() || !App::main()->selectingPeer()) {
if (!onCancelSearch() || (!_searchInPeer && !App::main()->selectingPeer())) {
emit cancelled();
}
}
@@ -1552,10 +1672,10 @@ bool DialogsWidget::onSearchMessages(bool searchCache) {
} else if (_searchQuery != q) {
_searchQuery = q;
_searchFull = false;
_searchRequest = MTP::send(MTPmessages_Search(MTP_inputPeerEmpty(), MTP_string(_searchQuery), MTP_inputMessagesFilterEmpty(), MTP_int(0), MTP_int(0), MTP_int(0), MTP_int(0), MTP_int(SearchPerPage)), rpcDone(&DialogsWidget::searchReceived, true), rpcFail(&DialogsWidget::searchFailed));
_searchRequest = MTP::send(MTPmessages_Search(_searchInPeer ? _searchInPeer->input : MTP_inputPeerEmpty(), MTP_string(_searchQuery), MTP_inputMessagesFilterEmpty(), MTP_int(0), MTP_int(0), MTP_int(0), MTP_int(0), MTP_int(SearchPerPage)), rpcDone(&DialogsWidget::searchReceived, true), rpcFail(&DialogsWidget::searchFailed));
_searchQueries.insert(_searchRequest, _searchQuery);
}
if (q.size() >= MinUsernameLength) {
if (!_searchInPeer && q.size() >= MinUsernameLength) {
if (searchCache) {
PeopleCache::const_iterator i = _peopleCache.constFind(q);
if (i != _peopleCache.cend()) {
@@ -1574,13 +1694,16 @@ bool DialogsWidget::onSearchMessages(bool searchCache) {
return false;
}
void DialogsWidget::onNeedSearchMessages() {
if (!onSearchMessages(true)) {
_searchTimer.start(AutoSearchTimeout);
}
}
void DialogsWidget::onChooseByDrag() {
list.choosePeer();
}
void DialogsWidget::searchMessages(const QString &query) {
if (_filter.text() != query) {
_filter.setText(query);
@@ -1595,7 +1718,7 @@ void DialogsWidget::searchMessages(const QString &query) {
void DialogsWidget::onSearchMore(MsgId minMsgId) {
if (!_searchRequest && !_searchFull) {
_searchRequest = MTP::send(MTPmessages_Search(MTP_inputPeerEmpty(), MTP_string(_searchQuery), MTP_inputMessagesFilterEmpty(), MTP_int(0), MTP_int(0), MTP_int(0), MTP_int(minMsgId), MTP_int(SearchPerPage)), rpcDone(&DialogsWidget::searchReceived, !minMsgId), rpcFail(&DialogsWidget::searchFailed));
_searchRequest = MTP::send(MTPmessages_Search(_searchInPeer ? _searchInPeer->input : MTP_inputPeerEmpty(), MTP_string(_searchQuery), MTP_inputMessagesFilterEmpty(), MTP_int(0), MTP_int(0), MTP_int(0), MTP_int(minMsgId), MTP_int(SearchPerPage)), rpcDone(&DialogsWidget::searchReceived, !minMsgId), rpcFail(&DialogsWidget::searchFailed));
if (!minMsgId) {
_searchQueries.insert(_searchRequest, _searchQuery);
}
@@ -1604,18 +1727,24 @@ void DialogsWidget::onSearchMore(MsgId minMsgId) {
void DialogsWidget::loadDialogs() {
if (dlgPreloading) return;
if (dlgCount >= 0 && dlgOffset >= dlgCount) return;
if (dlgCount >= 0 && dlgOffset >= dlgCount) {
list.addAllSavedPeers();
cSetDialogsReceived(true);
return;
}
int32 loadCount = dlgOffset ? DialogsPerPage : DialogsFirstLoad;
dlgPreloading = MTP::send(MTPmessages_GetDialogs(MTP_int(dlgOffset), MTP_int(0), MTP_int(loadCount)), rpcDone(&DialogsWidget::dialogsReceived), rpcFail(&DialogsWidget::dialogsFailed));
}
void DialogsWidget::contactsReceived(const MTPcontacts_Contacts &contacts) {
cSetContactsReceived(true);
if (contacts.type() == mtpc_contacts_contacts) {
const MTPDcontacts_contacts &d(contacts.c_contacts_contacts());
App::feedUsers(d.vusers);
list.contactsReceived(d.vcontacts.c_vector().v);
}
if (App::main()) App::main()->contactsReceived();
}
bool DialogsWidget::contactsFailed(const RPCError &error) {
@@ -1709,12 +1838,84 @@ bool DialogsWidget::addNewContact(int32 uid, bool show) {
_filter.setText(QString());
onFilterUpdate();
int32 to = list.addNewContact(uid, true);
if (to < 0 || !show) return false;
if (to < -1 || !show) return false;
list.refresh();
scroll.scrollToY(to);
if (to >= 0) scroll.scrollToY(to);
return true;
}
void DialogsWidget::dragEnterEvent(QDragEnterEvent *e) {
if (App::main()->selectingPeer()) return;
_dragInScroll = false;
_dragForward = e->mimeData()->hasFormat(qsl("application/x-td-forward-selected"));
if (!_dragForward) _dragForward = e->mimeData()->hasFormat(qsl("application/x-td-forward-pressed-link"));
if (!_dragForward) _dragForward = e->mimeData()->hasFormat(qsl("application/x-td-forward-pressed"));
if (_dragForward && !cWideMode()) _dragForward = false;
if (_dragForward) {
e->setDropAction(Qt::CopyAction);
e->accept();
updateDragInScroll(scroll.geometry().contains(e->pos()));
} else if (App::main() && App::main()->getDragState(e->mimeData()) != DragStateNone) {
e->setDropAction(Qt::CopyAction);
e->accept();
}
_chooseByDragTimer.stop();
}
void DialogsWidget::dragMoveEvent(QDragMoveEvent *e) {
if (scroll.geometry().contains(e->pos())) {
if (_dragForward) {
updateDragInScroll(true);
} else {
_chooseByDragTimer.start(ChoosePeerByDragTimeout);
}
PeerData *p = list.updateFromParentDrag(mapToGlobal(e->pos()));
if (p) {
e->setDropAction(Qt::CopyAction);
} else {
e->setDropAction(Qt::IgnoreAction);
}
} else {
if (_dragForward) updateDragInScroll(false);
list.leaveEvent(0);
e->setDropAction(Qt::IgnoreAction);
}
e->accept();
}
void DialogsWidget::dragLeaveEvent(QDragLeaveEvent *e) {
if (_dragForward) {
updateDragInScroll(false);
} else {
_chooseByDragTimer.stop();
}
list.leaveEvent(0);
e->accept();
}
void DialogsWidget::updateDragInScroll(bool inScroll) {
if (_dragInScroll != inScroll) {
_dragInScroll = inScroll;
if (_dragInScroll) {
App::main()->forwardLayer(1);
} else {
App::main()->dialogsCancelled();
}
}
}
void DialogsWidget::dropEvent(QDropEvent *e) {
_chooseByDragTimer.stop();
if (scroll.geometry().contains(e->pos())) {
PeerData *p = list.updateFromParentDrag(mapToGlobal(e->pos()));
if (p) {
e->acceptProposedAction();
App::main()->onFilesOrForwardDrop(p->id, e->mimeData());
}
}
}
void DialogsWidget::onListScroll() {
// if (!App::self()) return;
@@ -1750,14 +1951,23 @@ void DialogsWidget::onFilterUpdate(bool force) {
}
}
void DialogsWidget::searchInPeer(PeerData *peer) {
onCancelSearch();
_searchInPeer = peer;
list.searchInPeer(peer);
onFilterUpdate(true);
list.onFilterUpdate(_filter.text(), true);
}
void DialogsWidget::onFilterCursorMoved(int from, int to) {
if (to < 0) to = _filter.cursorPosition();
QString t = _filter.text(), r;
QString t = _filter.text();
QStringRef r;
for (int start = to; start > 0;) {
--start;
if (t.size() <= start) break;
if (t.at(start) == '#') {
r = t.mid(start, to - start);
r = t.midRef(start, to - start);
break;
}
if (!t.at(start).isLetterOrNumber() && t.at(start) != '_') break;
@@ -1799,9 +2009,16 @@ void DialogsWidget::resizeEvent(QResizeEvent *e) {
_addContact.move(w - _addContact.width() - st::dlgPaddingHor, _filter.y());
_cancelSearch.move(w - _cancelSearch.width() - st::dlgPaddingHor, _filter.y());
scroll.move(0, _filter.height() + 2 * st::dlgFilterPadding);
int32 addToY = App::main() ? App::main()->contentScrollAddToY() : 0;
int32 newScrollY = scroll.scrollTop() + addToY;
scroll.resize(w, height() - _filter.y() - _filter.height() - st::dlgFilterPadding - st::dlgPaddingVer);
list.resize(w, list.height());
onListScroll();
if (addToY) {
scroll.scrollToY(newScrollY);
} else {
onListScroll();
}
}
void DialogsWidget::keyPressEvent(QKeyEvent *e) {
@@ -1886,6 +2103,10 @@ DialogsIndexed &DialogsWidget::contactsList() {
return list.contactsList();
}
DialogsIndexed &DialogsWidget::dialogsList() {
return list.dialogsList();
}
void DialogsWidget::onAddContact() {
App::wnd()->replaceLayer(new AddContactBox());
}
@@ -1896,6 +2117,14 @@ void DialogsWidget::onNewGroup() {
bool DialogsWidget::onCancelSearch() {
bool clearing = !_filter.text().isEmpty();
if (_searchInPeer && !clearing) {
if (!cWideMode()) {
App::main()->showPeerHistory(_searchInPeer->id, ShowAtUnreadMsgId);
}
_searchInPeer = 0;
list.searchInPeer(0);
clearing = true;
}
list.clearFilter();
_filter.clear();
_filter.updatePlaceholder();
@@ -1903,6 +2132,23 @@ bool DialogsWidget::onCancelSearch() {
return clearing;
}
void DialogsWidget::onCancelSearchInPeer() {
if (_searchInPeer) {
if (!cWideMode()) {
App::main()->showPeerHistory(_searchInPeer->id, ShowAtUnreadMsgId);
}
_searchInPeer = 0;
list.searchInPeer(0);
}
list.clearFilter();
_filter.clear();
_filter.updatePlaceholder();
onFilterUpdate();
if (cWideMode()) {
emit cancelled();
}
}
void DialogsWidget::onDialogToTopFrom(int movedFrom) {
if (scroll.scrollTop() > 0) {
if (movedFrom > scroll.scrollTop()) {

View File

@@ -27,6 +27,7 @@ public:
DialogsListWidget(QWidget *parent, MainWidget *main);
void dialogsReceived(const QVector<MTPDialog> &dialogs);
void addAllSavedPeers();
void searchReceived(const QVector<MTPMessage> &messages, bool fromStart, int32 fullCount);
void peopleReceived(const QString &query, const QVector<MTPContactFound> &people);
void showMore(int32 pixels);
@@ -34,7 +35,7 @@ public:
void activate();
void contactsReceived(const QVector<MTPContact> &contacts);
int32 addNewContact(int32 uid, bool sel = false); // return y of row or -1 if failed
int32 addNewContact(int32 uid, bool sel = false); // -2 - err, -1 - don't scroll, >= 0 - scroll
int32 filteredOffset() const;
int32 peopleOffset() const;
@@ -48,6 +49,7 @@ public:
void leaveEvent(QEvent *e);
void peopleResultPaint(UserData *user, QPainter &p, int32 w, bool act, bool sel) const;
void searchInPeerPaint(QPainter &p, int32 w) const;
void selectSkip(int32 direction);
void selectSkipPage(int32 pixels, int32 direction);
@@ -93,11 +95,15 @@ public:
State state() const;
bool hasFilteredResults() const;
void searchInPeer(PeerData *peer);
void onFilterUpdate(QString newFilter, bool force = false);
void onHashtagFilterUpdate(QString newFilter);
void onHashtagFilterUpdate(QStringRef newFilter);
void itemRemoved(HistoryItem *item);
void itemReplaced(HistoryItem *oldItem, HistoryItem *newItem);
PeerData *updateFromParentDrag(QPoint globalPos);
~DialogsListWidget();
public slots:
@@ -115,6 +121,7 @@ signals:
void dialogToTopFrom(int movedFrom);
void searchMessages();
void searchResultChosen();
void cancelSearchInPeer();
void completeHashtag(QString tag);
void refreshHashtags();
@@ -130,7 +137,7 @@ private:
bool contactSel;
bool selByMouse;
QString filter;
QString filter, _hashtagFilter;
QStringList hashtagResults;
int32 hashtagSel;
@@ -154,9 +161,12 @@ private:
void paintDialog(QPainter &p, DialogRow *dialog);
LinkButton _addContactLnk;
IconedButton _cancelSearchInPeer;
bool _overDelete;
PeerData *_searchInPeer;
};
class DialogsWidget : public QWidget, public Animated, public RPCSender {
@@ -171,10 +181,18 @@ public:
void peopleReceived(const MTPcontacts_Found &result, mtpRequestId req);
bool addNewContact(int32 uid, bool show = true);
void dragEnterEvent(QDragEnterEvent *e);
void dragMoveEvent(QDragMoveEvent *e);
void dragLeaveEvent(QDragLeaveEvent *e);
void dropEvent(QDropEvent *e);
void updateDragInScroll(bool inScroll);
void resizeEvent(QResizeEvent *e);
void keyPressEvent(QKeyEvent *e);
void paintEvent(QPaintEvent *e);
void searchInPeer(PeerData *peer);
void loadDialogs();
void createDialogAtTop(History *history, int32 unreadCount);
void dlgUpdated(DialogRow *row);
@@ -185,8 +203,6 @@ public:
void animShow(const QPixmap &bgAnimCache);
bool animStep(float64 ms);
void setInnerFocus();
void destroyData();
void peerBefore(const PeerData *inPeer, MsgId inMsg, PeerData *&outPeer, MsgId &outMsg) const;
@@ -197,6 +213,7 @@ public:
void removeContact(UserData *user);
DialogsIndexed &contactsList();
DialogsIndexed &dialogsList();
void enableShadow(bool enable = true);
@@ -219,6 +236,7 @@ public slots:
void onAddContact();
void onNewGroup();
bool onCancelSearch();
void onCancelSearchInPeer();
void onFilterCursorMoved(int from = -1, int to = -1);
void onCompleteHashtag(QString tag);
@@ -227,10 +245,15 @@ public slots:
bool onSearchMessages(bool searchCache = false);
void onNeedSearchMessages();
void onChooseByDrag();
private:
bool _drawShadow;
bool _dragInScroll, _dragForward;
QTimer _chooseByDragTimer;
void unreadCountsReceived(const QVector<MTPDialog> &dialogs);
bool dialogsFailed(const RPCError &error);
bool contactsFailed(const RPCError &error);
@@ -250,6 +273,8 @@ private:
anim::ivalue a_coord, a_bgCoord;
anim::fvalue a_alpha, a_bgAlpha;
PeerData *_searchInPeer;
QTimer _searchTimer;
QString _searchQuery, _peopleQuery;
bool _searchFull, _peopleFull;

File diff suppressed because it is too large Load Diff

View File

@@ -110,7 +110,7 @@ public:
signals:
void dropped(QDropEvent *e);
void dropped(const QMimeData *data);
public slots:
@@ -202,6 +202,7 @@ public:
EmojiPanInner(QWidget *parent = 0);
void setMaxHeight(int32 h);
void paintEvent(QPaintEvent *e);
void mousePressEvent(QMouseEvent *e);
@@ -244,6 +245,8 @@ signals:
private:
int32 _maxHeight;
int32 countHeight();
void selectEmoji(EmojiPtr emoji);
@@ -269,6 +272,16 @@ private:
int32 _stickersWidth;
};
struct StickerIcon {
StickerIcon() : setId(RecentStickerSetId), sticker(0), pixw(0), pixh(0) {
}
StickerIcon(uint64 setId, DocumentData *sticker, int32 pixw, int32 pixh) : setId(setId), sticker(sticker), pixw(pixw), pixh(pixh) {
}
uint64 setId;
DocumentData *sticker;
int32 pixw, pixh;
};
class StickerPanInner : public TWidget, public Animated {
Q_OBJECT
@@ -276,6 +289,7 @@ public:
StickerPanInner(QWidget *parent = 0);
void setMaxHeight(int32 h);
void paintEvent(QPaintEvent *e);
void mousePressEvent(QMouseEvent *e);
@@ -294,9 +308,13 @@ public:
void refreshStickers();
void refreshRecent(bool resize = true);
void fillIcons(QVector<StickerIcon> &icons);
void setScrollTop(int top);
void preloadImages();
uint64 currentSet(int yOffset) const;
public slots:
void updateSelected();
@@ -306,6 +324,8 @@ signals:
void selected(DocumentData *sticker);
void removing(uint64 setId);
void refreshIcons();
void switchToEmoji();
void scrollToY(int y);
@@ -313,7 +333,9 @@ signals:
private:
void appendSet(StickerSets::const_iterator it);
int32 _maxHeight;
void appendSet(uint64 setId);
int32 countHeight();
void selectEmoji(EmojiPtr emoji);
@@ -323,10 +345,17 @@ private:
int32 _top;
QList<QString> _titles;
QList<uint64> _setIds;
QList<StickerPack> _sets;
QList<QVector<float64> > _hovers;
struct DisplayedSet {
DisplayedSet(uint64 id, int32 flags, const QString &title, int32 hoversSize, const StickerPack &pack = StickerPack()) : id(id), flags(flags), title(title), hovers(hoversSize, 0), pack(pack) {
}
uint64 id;
int32 flags;
QString title;
QVector<float64> hovers;
StickerPack pack;
};
QList<DisplayedSet> _sets;
QList<bool> _custom;
int32 _selected, _pressedSel;
QPoint _lastMousePos;
@@ -342,6 +371,7 @@ public:
EmojiPan(QWidget *parent);
void setMaxHeight(int32 h);
void paintEvent(QPaintEvent *e);
void enterEvent(QEvent *e);
@@ -349,6 +379,12 @@ public:
void otherEnter();
void otherLeave();
void mousePressEvent(QMouseEvent *e);
void mouseMoveEvent(QMouseEvent *e);
void mouseReleaseEvent(QMouseEvent *e);
bool event(QEvent *e);
void fastHide();
bool hiding() const {
return _hiding || _hideTimer.isActive();
@@ -356,6 +392,8 @@ public:
bool animStep(float64 ms);
bool iconAnim(float64 ms);
bool eventFilter(QObject *obj, QEvent *e);
void stickersInstalled(uint64 setId);
@@ -377,6 +415,8 @@ public slots:
void onRemoveSetSure();
void onDelayedHide();
void onRefreshIcons();
signals:
void emojiSelected(EmojiPtr emoji);
@@ -385,6 +425,14 @@ signals:
private:
int32 _maxHeight;
bool _horizontal;
void leaveToChildEvent(QEvent *e);
void updateSelected();
void updateIcons();
void prepareTab(int32 &left, int32 top, int32 _width, FlatRadiobutton &tab);
void showAll();
@@ -403,6 +451,18 @@ private:
BoxShadow _shadow;
FlatRadiobutton _recent, _people, _nature, _food, _celebration, _activity, _travel, _objects;
QVector<StickerIcon> _icons;
QVector<float64> _iconHovers;
int32 _iconOver, _iconSel, _iconDown;
bool _iconsDragging;
typedef QMap<int32, uint64> Animations; // index - showing, -index - hiding
Animations _iconAnimations;
Animation _iconAnim;
QPoint _iconsMousePos, _iconsMouseDown;
int32 _iconsLeft, _iconsTop;
int32 _iconsStartX, _iconsMax;
anim::ivalue _iconsX, _iconSelX;
uint64 _iconsStartAnim;
bool _stickersShown;
QPixmap _fromCache, _toCache;
@@ -421,6 +481,7 @@ private:
typedef QList<UserData*> MentionRows;
typedef QList<QString> HashtagRows;
typedef QList<QPair<UserData*, const BotCommand*> > BotCommandRows;
class MentionsDropdown;
class MentionsInner : public QWidget {
@@ -428,7 +489,7 @@ class MentionsInner : public QWidget {
public:
MentionsInner(MentionsDropdown *parent, MentionRows *rows, HashtagRows *hrows);
MentionsInner(MentionsDropdown *parent, MentionRows *rows, HashtagRows *hrows, BotCommandRows *crows);
void paintEvent(QPaintEvent *e);
@@ -442,6 +503,8 @@ public:
bool moveSel(int direction);
bool select();
QString getSelected() const;
signals:
void chosen(QString mentionOrHashtag);
@@ -459,6 +522,7 @@ private:
MentionsDropdown *_parent;
MentionRows *_rows;
HashtagRows *_hrows;
BotCommandRows *_crows;
int32 _sel;
bool _mouseSel;
QPoint _mousePos;
@@ -477,18 +541,21 @@ public:
void fastHide();
void showFiltered(ChatData *chat, QString start);
bool clearFilteredCommands();
void showFiltered(PeerData *peer, QString start);
void updateFiltered(bool toDown = false);
void setBoundings(QRect boundings);
bool animStep(float64 ms);
const QString &filter() const;
ChatData *chat() const;
int32 innerTop();
int32 innerBottom();
bool eventFilter(QObject *obj, QEvent *e);
QString getSelected() const;
~MentionsDropdown();
@@ -510,11 +577,13 @@ private:
QPixmap _cache;
MentionRows _rows;
HashtagRows _hrows;
BotCommandRows _crows;
ScrollArea _scroll;
MentionsInner _inner;
ChatData *_chat;
UserData *_user;
QString _filter;
QRect _boundings;

View File

@@ -40,6 +40,10 @@ void FileUploader::uploadMedia(MsgId msgId, const ReadyLocalMedia &media) {
if (!media.file.isEmpty()) {
document->location = FileLocation(StorageFilePartial, media.file);
}
} else if (media.type == ToPrepareAudio) {
AudioData *audio = App::feedAudio(media.audio);
audio->status = FileUploading;
audio->data = media.data;
}
queue.insert(msgId, File(media));
sendNext();
@@ -56,6 +60,12 @@ void FileUploader::currentFailed() {
doc->status = FileFailed;
}
emit documentFailed(j.key());
} else if (j->media.type == ToPrepareAudio) {
AudioData *audio = App::audio(j->media.id);
if (audio->status == FileUploading) {
audio->status = FileFailed;
}
emit audioFailed(j.key());
}
queue.erase(j);
}
@@ -112,7 +122,7 @@ void FileUploader::sendNext() {
emit photoReady(uploading, MTP_inputFile(MTP_long(i->media.id), MTP_int(i->partsCount), MTP_string(i->media.filename), MTP_string(i->media.jpeg_md5)));
} else if (i->media.type == ToPrepareDocument) {
QByteArray docMd5(32, Qt::Uninitialized);
hashMd5Hex(i->docHash.result(), docMd5.data());
hashMd5Hex(i->md5Hash.result(), docMd5.data());
MTPInputFile doc = (i->docSize > UseBigFilesFrom) ? MTP_inputFileBig(MTP_long(i->media.id), MTP_int(i->docPartsCount), MTP_string(i->media.filename)) : MTP_inputFile(MTP_long(i->media.id), MTP_int(i->docPartsCount), MTP_string(i->media.filename), MTP_string(docMd5));
if (i->partsCount) {
@@ -120,6 +130,12 @@ void FileUploader::sendNext() {
} else {
emit documentReady(uploading, doc);
}
} else if (i->media.type == ToPrepareAudio) {
QByteArray audioMd5(32, Qt::Uninitialized);
hashMd5Hex(i->md5Hash.result(), audioMd5.data());
MTPInputFile audio = (i->docSize > UseBigFilesFrom) ? MTP_inputFileBig(MTP_long(i->media.id), MTP_int(i->docPartsCount), MTP_string(i->media.filename)) : MTP_inputFile(MTP_long(i->media.id), MTP_int(i->docPartsCount), MTP_string(i->media.filename), MTP_string(audioMd5));
emit audioReady(uploading, audio);
}
queue.remove(uploading);
uploading = 0;
@@ -139,12 +155,12 @@ void FileUploader::sendNext() {
}
toSend = i->docFile->read(i->docPartSize);
if (i->docSize <= UseBigFilesFrom) {
i->docHash.feed(toSend.constData(), toSend.size());
i->md5Hash.feed(toSend.constData(), toSend.size());
}
} else {
toSend = i->media.data.mid(i->docSentParts * i->docPartSize, i->docPartSize);
if (i->media.type == ToPrepareDocument && i->docSentParts <= UseBigFilesFrom) {
i->docHash.feed(toSend.constData(), toSend.size());
if ((i->media.type == ToPrepareDocument || i->media.type == ToPrepareAudio) && i->docSentParts <= UseBigFilesFrom) {
i->md5Hash.feed(toSend.constData(), toSend.size());
}
}
if (toSend.size() > i->docPartSize || (toSend.size() < i->docPartSize && i->docSentParts + 1 != i->docPartsCount)) {
@@ -249,6 +265,15 @@ void FileUploader::partLoaded(const MTPBool &result, mtpRequestId requestId) {
}
}
emit documentProgress(k.key());
} else if (k->media.type == ToPrepareAudio) {
AudioData *audio = App::audio(k->media.id);
if (audio->status == FileUploading) {
audio->uploadOffset = (k->docSentParts - docRequestsSent.size()) * k->docPartSize;
if (audio->uploadOffset > audio->size) {
audio->uploadOffset = audio->size;
}
}
emit audioProgress(k.key());
}
}
}

View File

@@ -45,19 +45,22 @@ signals:
void photoReady(MsgId msgId, const MTPInputFile &file);
void documentReady(MsgId msgId, const MTPInputFile &file);
void thumbDocumentReady(MsgId msgId, const MTPInputFile &file, const MTPInputFile &thumb);
void audioReady(MsgId msgId, const MTPInputFile &file);
void photoProgress(MsgId msgId);
void documentProgress(MsgId msgId);
void audioProgress(MsgId msgId);
void photoFailed(MsgId msgId);
void documentFailed(MsgId msgId);
void audioFailed(MsgId msgId);
private:
struct File {
File(const ReadyLocalMedia &media) : media(media), docSentParts(0) {
partsCount = media.parts.size();
if (media.type == ToPrepareDocument) {
if (media.type == ToPrepareDocument || media.type == ToPrepareAudio) {
docSize = media.file.isEmpty() ? media.data.size() : media.filesize;
if (docSize >= 1024 * 1024 || !setPartSize(DocumentUploadPartSize0)) {
if (docSize > 32 * 1024 * 1024 || !setPartSize(DocumentUploadPartSize1)) {
@@ -83,12 +86,13 @@ private:
ReadyLocalMedia media;
int32 partsCount;
HashMd5 md5Hash;
QSharedPointer<QFile> docFile;
int32 docSentParts;
int32 docSize;
int32 docPartSize;
int32 docPartsCount;
HashMd5 docHash;
};
typedef QMap<MsgId, File> Queue;

View File

@@ -104,26 +104,29 @@ namespace anim {
bool AnimatedGif::animStep(float64 ms) {
int32 f = frame;
while (f < frames.size() && ms > delays[f]) {
while (f < images.size() && ms > delays[f]) {
++f;
if (f == frames.size() && frames.size() < framesCount) {
if (f == images.size() && images.size() < framesCount) {
if (reader->read(&img)) {
int64 d = reader->nextImageDelay(), delay = delays[f - 1];
if (!d) d = 1;
delay += d;
frames.push_back(QPixmap::fromImage(img.size() == QSize(w, h) ? img : img.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly));
if (img.size() != QSize(w, h)) img = img.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
images.push_back(img);
frames.push_back(QPixmap());
delays.push_back(delay);
for (int32 i = 0; i < frames.size(); ++i) {
if (!frames[i].isNull()) {
for (int32 i = 0; i < images.size(); ++i) {
if (!images[i].isNull() || !frames[i].isNull()) {
images[i] = QImage();
frames[i] = QPixmap();
break;
}
}
} else {
framesCount = frames.size();
framesCount = images.size();
}
}
if (f == frames.size()) {
if (f == images.size()) {
if (!duration) {
duration = delays.isEmpty() ? 1 : delays.back();
}
@@ -132,14 +135,16 @@ bool AnimatedGif::animStep(float64 ms) {
for (int32 i = 0, s = delays.size() - 1; i <= s; ++i) {
delays[i] += duration;
}
if (frames[f].isNull()) {
if (images[f].isNull()) {
QString fname = reader->fileName();
delete reader;
reader = new QImageReader(fname);
}
}
if (frames[f].isNull() && reader->read(&img)) {
frames[f] = QPixmap::fromImage(img.size() == QSize(w, h) ? img : img.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly);
if (images[f].isNull() && reader->read(&img)) {
if (img.size() != QSize(w, h)) img = img.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
images[f] = img;
frames[f] = QPixmap();
}
}
if (frame != f) {
@@ -172,12 +177,15 @@ void AnimatedGif::start(HistoryItem *row, const QString &file) {
}
frames.reserve(framesCount);
images.reserve(framesCount);
delays.reserve(framesCount);
int32 sizeLeft = MediaViewImageSizeLimit, delay = 0;
for (bool read = reader->read(&img); read; read = reader->read(&img)) {
sizeLeft -= w * h * 4;
frames.push_back(QPixmap::fromImage(img.size() == s ? img : img.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly));
if (img.size() != s) img = img.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
images.push_back(img);
frames.push_back(QPixmap());
int32 d = reader->nextImageDelay();
if (!d) d = 1;
delay += d;
@@ -202,6 +210,7 @@ void AnimatedGif::stop(bool onItemRemoved) {
HistoryItem *row = msg;
msg = 0;
frames.clear();
images.clear();
delays.clear();
w = h = frame = framesCount = duration = 0;
@@ -211,3 +220,16 @@ void AnimatedGif::stop(bool onItemRemoved) {
if (App::main()) App::main()->itemResized(row, true);
}
}
const QPixmap &AnimatedGif::current(int32 width, int32 height, bool rounded) {
if (!width) width = w;
if (!height) height = h;
if ((frames[frame].isNull() || frames[frame].width() != width || frames[frame].height() != height) && !images[frame].isNull()) {
QImage img = images[frame];
if (img.width() != width || img.height() != height) img = img.scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
if (rounded) imageRound(img);
frames[frame] = QPixmap::fromImage(img, Qt::ColorOnly);
frames[frame].setDevicePixelRatio(cRetinaFactor());
}
return frames[frame];
}

View File

@@ -223,6 +223,63 @@ private:
};
class AnimationFunc {
public:
virtual bool animStep(float64 ms) = 0;
virtual ~AnimationFunc() {
}
};
template <typename Type>
class AnimationFuncOwned : public AnimationFunc {
public:
typedef bool (Type::*Method)(float64);
AnimationFuncOwned(Type *obj, Method method) : _obj(obj), _method(method) {
}
bool animStep(float64 ms) {
return (_obj->*_method)(ms);
}
private:
Type *_obj;
Method _method;
};
template <typename Type>
AnimationFunc *animFunc(Type *obj, typename AnimationFuncOwned<Type>::Method method) {
return new AnimationFuncOwned<Type>(obj, method);
}
class Animation : public Animated {
public:
Animation(AnimationFunc *func) : _func(func) {
}
void start() {
anim::start(this);
}
void stop() {
anim::stop(this);
}
//Animation
bool animStep(float64 ms) {
return _func->animStep(ms);
}
~Animation() {
delete _func;
}
private:
AnimationFunc *_func;
};
class AnimationManager : public QObject {
Q_OBJECT
@@ -348,6 +405,8 @@ public:
stop(true);
}
const QPixmap &current(int32 width = 0, int32 height = 0, bool rounded = false);
signals:
void updated();
@@ -357,7 +416,12 @@ public:
HistoryItem *msg;
QImage img;
QImageReader *reader;
int32 w, h, frame;
private:
QVector<QPixmap> frames;
QVector<QImage> images;
QVector<int64> delays;
int32 w, h, frame, framesCount, duration;
int32 framesCount, duration;
};

View File

@@ -19,10 +19,11 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
#include "boxshadow.h"
BoxShadow::BoxShadow(const style::rect &topLeft) : _size(topLeft.width() / cIntRetinaFactor()) {
BoxShadow::BoxShadow(const style::sprite &topLeft) : _size(topLeft.pxWidth()), _pixsize(_size * cIntRetinaFactor()) {
if (!_size) return;
QImage cornersImage(_size * 2, _size * 2, QImage::Format_ARGB32_Premultiplied);
QImage cornersImage(_pixsize * 2, _pixsize * 2, QImage::Format_ARGB32_Premultiplied);
cornersImage.setDevicePixelRatio(cRetinaFactor());
{
QPainter p(&cornersImage);
p.drawPixmap(QPoint(rtl() ? _size : 0, 0), App::sprite(), topLeft);
@@ -41,39 +42,65 @@ BoxShadow::BoxShadow(const style::rect &topLeft) : _size(topLeft.width() / cIntR
{
QPainter p(&cornersImage);
p.setCompositionMode(QPainter::CompositionMode_Source);
p.drawImage(0, _size, cornersImage.mirrored(), 0, _size, _size, _size);
QImage m = cornersImage.mirrored();
m.setDevicePixelRatio(cRetinaFactor());
p.drawImage(0, _size, m, 0, _pixsize, _pixsize, _pixsize);
}
{
QPainter p(&cornersImage);
p.setCompositionMode(QPainter::CompositionMode_Source);
p.drawImage(_size, 0, cornersImage.mirrored(true, false), _size, 0, _size, _size * 2);
QImage m = cornersImage.mirrored(true, false);
m.setDevicePixelRatio(cRetinaFactor());
p.drawImage(_size, 0, m, _pixsize, 0, _pixsize, _pixsize * 2);
}
_corners = QPixmap::fromImage(cornersImage, Qt::ColorOnly);
_colors.reserve(_size);
_corners.setDevicePixelRatio(cRetinaFactor());
_colors.reserve(_pixsize);
uchar prev = 0;
for (int32 i = 0; i < _size; ++i) {
uchar a = (cornersImage.pixel(QPoint(i, _size - 1)) >> 24);
for (int32 i = 0; i < _pixsize; ++i) {
uchar a = (cornersImage.pixel(QPoint(i, _pixsize - 1)) >> 24);
if (a < prev) break;
_colors.push_back(style::color(0, 0, 0, a));
prev = a;
}
}
void BoxShadow::paint(QPainter &p, const QRect &box, const QPoint &shift, int32 flags) {
if (!_size) return;
int32 count = _colors.size(), minus = _size - count + 1;
bool left = (flags & Left), top = (flags & Top), right = (flags & Right), bottom = (flags & Bottom);
if (left && top) p.drawPixmap(box.left() - _size + minus + shift.x(), box.top() - _size + minus + shift.y(), _corners, 0, 0, _size, _size);
if (right && top) p.drawPixmap(box.right() - minus + 1 + shift.x(), box.top() - _size + minus + shift.y(), _corners, _size, 0, _size, _size);
if (right && bottom) p.drawPixmap(box.right() - minus + 1 + shift.x(), box.bottom() - minus + 1 + shift.y(), _corners, _size, _size, _size, _size);
if (left && bottom) p.drawPixmap(box.left() - _size + minus + shift.x(), box.bottom() - minus + 1 + shift.y(), _corners, 0, _size, _size, _size);
for (int32 i = 1; i <= count; ++i) {
p.setPen(_colors[i - 1]->p);
if (top) p.fillRect(box.left() + (left ? minus : 0) + shift.x(), box.top() - count + i + shift.y(), box.width() - (right ? minus : 0) - (left ? minus : 0), cIntRetinaFactor(), _colors[i - 1]->b);
if (right) p.fillRect(box.right() + count - i + shift.x(), box.top() + (top ? minus : 0) + shift.y(), cIntRetinaFactor(), box.height() - (bottom ? minus : 0) - (top ? minus : 0), _colors[i - 1]->b);
if (bottom) p.fillRect(box.left() + (left ? minus : 0) + shift.x(), box.bottom() + count - i + shift.y(), box.width() - (right ? minus : 0) - (left ? minus : 0), cIntRetinaFactor(), _colors[i - 1]->b);
if (left) p.fillRect(box.left() - count + i + shift.x(), box.top() + (top ? minus : 0) + shift.y(), cIntRetinaFactor(), box.height() - (bottom ? minus : 0) - (top ? minus : 0), _colors[i - 1]->b);
if (cRetina()) {
_left = QPixmap::fromImage(cornersImage.copy(0, _pixsize - 1, _colors.size(), 1), Qt::ColorOnly);
_left.setDevicePixelRatio(cRetinaFactor());
_top = QPixmap::fromImage(cornersImage.copy(_pixsize - 1, 0, 1, _colors.size()), Qt::ColorOnly);
_top.setDevicePixelRatio(cRetinaFactor());
_right = QPixmap::fromImage(cornersImage.copy(_pixsize * 2 - _colors.size(), _pixsize, _colors.size(), 1), Qt::ColorOnly);
_right.setDevicePixelRatio(cRetinaFactor());
_bottom = QPixmap::fromImage(cornersImage.copy(_pixsize, _pixsize * 2 - _colors.size(), 1, _colors.size()), Qt::ColorOnly);
_bottom.setDevicePixelRatio(cRetinaFactor());
}
}
void BoxShadow::paint(QPainter &p, const QRect &box, int32 shifty, int32 flags) {
if (!_size) return;
int32 rshifty = shifty * cIntRetinaFactor();
int32 count = _colors.size(), countsize = count / cIntRetinaFactor(), minus = _size - countsize + shifty;
bool left = (flags & Left), top = (flags & Top), right = (flags & Right), bottom = (flags & Bottom);
if (left && top) p.drawPixmap(box.left() - _size + minus, box.top() - _size + minus + shifty, _corners, 0, 0, _pixsize, _pixsize);
if (right && top) p.drawPixmap(box.left() + box.width() - minus, box.top() - _size + minus + shifty, _corners, _pixsize, 0, _pixsize, _pixsize);
if (right && bottom) p.drawPixmap(box.left() + box.width() - minus, box.top() + box.height() - minus + shifty, _corners, _pixsize, _pixsize, _pixsize, _pixsize);
if (left && bottom) p.drawPixmap(box.left() - _size + minus, box.top() + box.height() - minus + shifty, _corners, 0, _pixsize, _pixsize, _pixsize);
if (cRetina()) {
bool wasSmooth = p.renderHints().testFlag(QPainter::SmoothPixmapTransform);
if (wasSmooth) p.setRenderHint(QPainter::SmoothPixmapTransform, false);
if (left) p.drawPixmap(box.left() - countsize + shifty, box.top() + (top ? minus : 0) + shifty, countsize - shifty, box.height() - (bottom ? minus : 0) - (top ? minus : 0), _left, 0, 0, count - rshifty, 1);
if (top) p.drawPixmap(box.left() + (left ? minus : 0), box.top() - countsize + 2 * shifty, box.width() - (right ? minus : 0) - (left ? minus : 0), countsize - 2 * shifty, _top, 0, 0, 1, count - 2 * rshifty);
if (right) p.drawPixmap(box.left() + box.width(), box.top() + (top ? minus : 0) + shifty, countsize - shifty, box.height() - (bottom ? minus : 0) - (top ? minus : 0), _right, rshifty, 0, count - rshifty, 1);
if (bottom) p.drawPixmap(box.left() + (left ? minus : 0), box.top() + box.height(), box.width() - (right ? minus : 0) - (left ? minus : 0), countsize, _bottom, 0, 0, 1, count);
if (wasSmooth) p.setRenderHint(QPainter::SmoothPixmapTransform);
} else {
p.setPen(Qt::NoPen);
for (int32 i = 0; i < count; ++i) {
if (left && i + shifty < count) p.fillRect(box.left() - count + i + shifty, box.top() + (top ? minus : 0) + shifty, 1, box.height() - (bottom ? minus : 0) - (top ? minus : 0), _colors[i]->b);
if (top && i + 2 * shifty < count) p.fillRect(box.left() + (left ? minus : 0), box.top() - count + i + 2 * shifty, box.width() - (right ? minus : 0) - (left ? minus : 0), 1, _colors[i]->b);
if (right && i + shifty < count) p.fillRect(box.left() + box.width() + count - i - shifty - 1, box.top() + (top ? minus : 0) + shifty, 1, box.height() - (bottom ? minus : 0) - (top ? minus : 0), _colors[i]->b);
if (bottom) p.fillRect(box.left() + (left ? minus : 0), box.top() + box.height() + count - i - 1, box.width() - (right ? minus : 0) - (left ? minus : 0), 1, _colors[i]->b);
}
}
}

View File

@@ -27,14 +27,14 @@ public:
Bottom = 8
};
BoxShadow(const style::rect &topLeft);
BoxShadow(const style::sprite &topLeft);
void paint(QPainter &p, const QRect &box, const QPoint &shift = QPoint(0, 1), int32 flags = Left | Top | Right | Bottom);
void paint(QPainter &p, const QRect &box, int32 shifty, int32 flags = Left | Top | Right | Bottom);
private:
int32 _size;
QPixmap _corners;
int32 _size, _pixsize;
QPixmap _corners, _left, _top, _right, _bottom;
QVector<style::color> _colors;
};

View File

@@ -144,7 +144,7 @@ void ContextMenu::paintEvent(QPaintEvent *e) {
QRect r(_st.padding.left(), _st.padding.top(), _width - _st.padding.left() - _st.padding.right(), _height - _st.padding.top() - _st.padding.bottom());
// draw shadow
_shadow.paint(p, r);
_shadow.paint(p, r, _st.shadowShift);
}
void ContextMenu::keyPressEvent(QKeyEvent *e) {

View File

@@ -485,7 +485,7 @@ void CountrySelect::paintEvent(QPaintEvent *e) {
p.setOpacity(1);
QRect inner(_innerLeft, _innerTop, _innerWidth, _innerHeight);
_shadow.paint(p, inner);
_shadow.paint(p, inner, st::boxShadowShift);
if (trivial || e->rect().intersects(inner)) {
// fill bg
p.fillRect(inner, st::white->b);

View File

@@ -81,9 +81,6 @@ inline EmojiPtr emojiFromUrl(const QString &url) {
}
inline EmojiPtr emojiFromText(const QChar *ch, const QChar *e, int &len) {
QString tmp(ch, e - ch);
QByteArray tmp2 = tmp.toUtf8();
const char *tmp3 = tmp2.constData();
EmojiPtr emoji = 0;
if (ch + 1 < e && ((ch->isHighSurrogate() && (ch + 1)->isLowSurrogate()) || (((ch->unicode() >= 48 && ch->unicode() < 58) || ch->unicode() == 35) && (ch + 1)->unicode() == 0x20E3))) {
uint32 code = (ch->unicode() << 16) | (ch + 1)->unicode();
@@ -149,8 +146,8 @@ inline bool emojiEdge(const QChar *ch) {
inline QString replaceEmojis(const QString &text) {
QString result;
LinkRanges lnkRanges = textParseLinks(text, TextParseLinks | TextParseMentions | TextParseHashtags);
int32 currentLink = 0, lnkCount = lnkRanges.size();
LinksInText links = textParseLinks(text, TextParseLinks | TextParseMentions | TextParseHashtags);
int32 currentLink = 0, lnkCount = links.size();
const QChar *emojiStart = text.unicode(), *emojiEnd = emojiStart, *e = text.cend();
bool canFindEmoji = true, consumePrevious = false;
for (const QChar *ch = emojiEnd; ch != e;) {
@@ -160,14 +157,14 @@ inline QString replaceEmojis(const QString &text) {
emojiFind(ch, e, newEmojiEnd, emojiCode);
}
while (currentLink < lnkCount && ch >= lnkRanges[currentLink].from + lnkRanges[currentLink].len) {
while (currentLink < lnkCount && ch >= emojiStart + links[currentLink].offset + links[currentLink].length) {
++currentLink;
}
EmojiPtr emoji = emojiCode ? emojiGet(emojiCode) : 0;
if (emoji && emoji != TwoSymbolEmoji &&
(ch == emojiStart || !ch->isLetterOrNumber() || !(ch - 1)->isLetterOrNumber()) &&
(newEmojiEnd == e || !newEmojiEnd->isLetterOrNumber() || newEmojiEnd == emojiStart || !(newEmojiEnd - 1)->isLetterOrNumber()) &&
(currentLink >= lnkCount || (ch < lnkRanges[currentLink].from && newEmojiEnd <= lnkRanges[currentLink].from) || (ch >= lnkRanges[currentLink].from + lnkRanges[currentLink].len && newEmojiEnd > lnkRanges[currentLink].from + lnkRanges[currentLink].len))
(currentLink >= lnkCount || (ch < emojiStart + links[currentLink].offset && newEmojiEnd <= emojiStart + links[currentLink].offset) || (ch >= emojiStart + links[currentLink].offset + links[currentLink].length && newEmojiEnd > emojiStart + links[currentLink].offset + links[currentLink].length))
) {
// if (newEmojiEnd < e && newEmojiEnd->unicode() == ' ') ++newEmojiEnd;
if (result.isEmpty()) result.reserve(text.size());

View File

@@ -25,9 +25,9 @@ void filedialogInit() {
if (cDialogLastPath().isEmpty()) {
#ifdef Q_OS_WIN
// hack to restore previous dir without hurting performance
QSettings settings(QSettings::UserScope, QLatin1String("QtProject"));
settings.beginGroup(QLatin1String("Qt"));
QByteArray sd = settings.value(QLatin1String("filedialog")).toByteArray();
QSettings settings(QSettings::UserScope, qstr("QtProject"));
settings.beginGroup(qstr("Qt"));
QByteArray sd = settings.value(qstr("filedialog")).toByteArray();
QDataStream stream(&sd, QIODevice::ReadOnly);
if (!stream.atEnd()) {
int version = 3, _QFileDialogMagic = 190;

View File

@@ -20,7 +20,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
FlatButton::FlatButton(QWidget *parent, const QString &text, const style::flatButton &st) : Button(parent),
_text(text),
_st(st),
_st(st), _autoFontPadding(0),
a_bg(st.bgColor->c), a_text(st.color->c), _opacity(1) {
if (_st.width < 0) {
_st.width = textWidth() - _st.width;
@@ -52,10 +52,35 @@ void FlatButton::setWidth(int32 w) {
resize(_st.width, height());
}
void FlatButton::setAutoFontSize(int32 padding, const QString &txt) {
_autoFontPadding = padding;
if (_autoFontPadding) {
_textForAutoSize = txt;
resizeEvent(0);
} else {
_textForAutoSize = QString();
_autoFont = style::font();
}
update();
}
int32 FlatButton::textWidth() const {
return _st.font->m.width(_text);
}
void FlatButton::resizeEvent(QResizeEvent *e) {
if (_autoFontPadding) {
_autoFont = _st.font;
for (int32 s = _st.font->f.pixelSize(); s >= st::fsize; --s) {
_autoFont = style::font(s, _st.font->flags(), _st.font->family());
if (2 * _autoFontPadding + _autoFont->m.width(_textForAutoSize) <= width()) {
break;
}
}
}
return Button::resizeEvent(e);
}
bool FlatButton::animStep(float64 ms) {
float64 dt = ms / _st.duration;
bool res = true;
@@ -95,12 +120,15 @@ void FlatButton::paintEvent(QPaintEvent *e) {
p.setOpacity(_opacity);
p.fillRect(r, a_bg.current());
p.setFont(((_state & StateOver) ? _st.overFont : _st.font)->f);
p.setFont((_autoFont ? _autoFont : ((_state & StateOver) ? _st.overFont : _st.font))->f);
p.setRenderHint(QPainter::TextAntialiasing);
p.setPen(a_text.current());
r.setTop((_state & StateOver) ? ((_state & StateDown) ? _st.downTextTop : _st.overTextTop) : _st.textTop);
p.drawText(r, _text, QTextOption(Qt::AlignHCenter));
int32 top = (_state & StateOver) ? ((_state & StateDown) ? _st.downTextTop : _st.overTextTop) : _st.textTop;
if (_autoFont) top += (_st.font->height - _autoFont->height) / 2;
r.setTop(top);
p.drawText(r, _text, style::al_top);
}
BottomButton::BottomButton(QWidget *w, const QString &t, const style::flatButton &s) : FlatButton(w, t, s) {

View File

@@ -29,12 +29,15 @@ public:
FlatButton(QWidget *parent, const QString &text, const style::flatButton &st);
void resizeEvent(QResizeEvent *e);
bool animStep(float64 ms);
void paintEvent(QPaintEvent *e);
void setOpacity(float64 o);
void setText(const QString &text);
void setWidth(int32 w);
void setAutoFontSize(int32 padding, const QString &txt);
int32 textWidth() const;
@@ -47,12 +50,15 @@ public slots:
private:
QString _text;
QString _text, _textForAutoSize;
int32 _textWidth;
style::flatButton _st;
anim::cvalue a_bg, a_text;
int32 _autoFontPadding;
style::font _autoFont;
anim::cvalue a_bg, a_text;
float64 _opacity;
};

View File

@@ -42,7 +42,8 @@ namespace {
FlatInputStyle _flatInputStyle;
}
FlatInput::FlatInput(QWidget *parent, const style::flatInput &st, const QString &pholder, const QString &v) : QLineEdit(v, parent), _fullph(pholder), _oldtext(v), _kev(0), _customUpDown(false), _phVisible(!v.length()),
FlatInput::FlatInput(QWidget *parent, const style::flatInput &st, const QString &pholder, const QString &v) : QLineEdit(v, parent),
_fullph(pholder), _oldtext(v), _fastph(false), _kev(0), _customUpDown(false), _phVisible(!v.length()),
a_phLeft(_phVisible ? 0 : st.phShift), a_phAlpha(_phVisible ? 1 : 0), a_phColor(st.phColor->c),
a_borderColor(st.borderColor->c), a_bgColor(st.bgColor->c), _notingBene(0), _st(st) {
resize(_st.width, _st.height);
@@ -130,7 +131,7 @@ QRect FlatInput::getTextRect() const {
}
void FlatInput::paintEvent(QPaintEvent *e) {
QPainter p(this);
Painter p(this);
p.fillRect(rect(), a_bgColor.current());
if (_st.borderWidth) {
QBrush b(a_borderColor.current());
@@ -151,9 +152,9 @@ void FlatInput::paintEvent(QPaintEvent *e) {
if (phDraw) {
p.save();
p.setClipRect(rect());
QRect phRect(_st.textMrg.left() + _st.phPos.x() + a_phLeft.current(), _st.textMrg.top() + _st.phPos.y(), width() - _st.textMrg.left() - _st.textMrg.right(), height() - _st.textMrg.top() - _st.textMrg.bottom());
p.setFont(_st.font->f);
p.setPen(a_phColor.current());
QRect phRect(placeholderRect());
phRect.moveLeft(phRect.left() + a_phLeft.current());
phPrepare(p);
p.drawText(phRect, _ph, QTextOption(_st.phAlign));
p.restore();
}
@@ -228,20 +229,53 @@ bool FlatInput::animStep(float64 ms) {
return res;
}
void FlatInput::setPlaceholder(const QString &ph) {
_fullph = ph;
resizeEvent(0);
update();
}
void FlatInput::setPlaceholderFast(bool fast) {
_fastph = fast;
if (_fastph) {
a_phLeft = anim::ivalue(_phVisible ? 0 : _st.phShift, _phVisible ? 0 : _st.phShift);
a_phAlpha = anim::fvalue(_phVisible ? 1 : 0, _phVisible ? 1 : 0);
update();
}
}
void FlatInput::updatePlaceholder() {
bool vis = !text().length();
if (vis == _phVisible) return;
a_phLeft.start(vis ? 0 : _st.phShift);
a_phAlpha.start(vis ? 1 : 0);
anim::start(this);
if (_fastph) {
a_phLeft = anim::ivalue(vis ? 0 : _st.phShift, vis ? 0 : _st.phShift);
a_phAlpha = anim::fvalue(vis ? 1 : 0, vis ? 1 : 0);
update();
} else {
a_phLeft.start(vis ? 0 : _st.phShift);
a_phAlpha.start(vis ? 1 : 0);
anim::start(this);
}
_phVisible = vis;
}
const QString &FlatInput::placeholder() const {
return _fullph;
}
QRect FlatInput::placeholderRect() const {
return QRect(_st.textMrg.left() + _st.phPos.x(), _st.textMrg.top() + _st.phPos.y(), width() - _st.textMrg.left() - _st.textMrg.right(), height() - _st.textMrg.top() - _st.textMrg.bottom());
}
void FlatInput::correctValue(QKeyEvent *e, const QString &was) {
}
void FlatInput::phPrepare(Painter &p) {
p.setFont(_st.font->f);
p.setPen(a_phColor.current());
}
void FlatInput::keyPressEvent(QKeyEvent *e) {
QString was(text());
_kev = e;

View File

@@ -38,7 +38,11 @@ public:
void notaBene();
void setPlaceholder(const QString &ph);
void setPlaceholderFast(bool fast);
void updatePlaceholder();
const QString &placeholder() const;
QRect placeholderRect() const;
QRect getTextRect() const;
@@ -68,9 +72,16 @@ protected:
virtual void correctValue(QKeyEvent *e, const QString &was);
style::font phFont() {
return _st.font;
}
void phPrepare(Painter &p);
private:
QString _ph, _fullph, _oldtext;
bool _fastph;
QKeyEvent *_kev;
bool _customUpDown;

View File

@@ -24,7 +24,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
FlatTextarea::FlatTextarea(QWidget *parent, const style::flatTextarea &st, const QString &pholder, const QString &v) : QTextEdit(v, parent),
_ph(pholder), _oldtext(v), _phVisible(!v.length()),
a_phLeft(_phVisible ? 0 : st.phShift), a_phAlpha(_phVisible ? 1 : 0), a_phColor(st.phColor->c),
_st(st), _undoAvailable(false), _redoAvailable(false), _fakeMargin(0),
_st(st), _undoAvailable(false), _redoAvailable(false), _inDrop(false), _fakeMargin(0),
_touchPress(false), _touchRightButton(false), _touchMove(false), _replacingEmojis(false) {
setAcceptRichText(false);
resize(_st.width, _st.font->height);
@@ -128,7 +128,8 @@ int32 FlatTextarea::fakeMargin() const {
void FlatTextarea::paintEvent(QPaintEvent *e) {
QPainter p(viewport());
p.fillRect(rect(), _st.bgColor->b);
QRect r(rect().intersected(e->rect()));
p.fillRect(r, _st.bgColor->b);
bool phDraw = _phVisible;
if (animating()) {
p.setOpacity(a_phAlpha.current());
@@ -136,7 +137,7 @@ void FlatTextarea::paintEvent(QPaintEvent *e) {
}
if (phDraw) {
p.save();
p.setClipRect(rect());
p.setClipRect(r);
QRect phRect(_st.textMrg.left() - _fakeMargin + _st.phPos.x() + a_phLeft.current(), _st.textMrg.top() - _fakeMargin + _st.phPos.y(), width() - _st.textMrg.left() - _st.textMrg.right(), height() - _st.textMrg.top() - _st.textMrg.bottom());
p.setFont(_st.font->f);
p.setPen(a_phColor.current());
@@ -174,12 +175,15 @@ EmojiPtr FlatTextarea::getSingleEmoji() const {
if (!text.isEmpty()) {
QTextCharFormat format = fragment.charFormat();
return emojiFromUrl(static_cast<const QTextImageFormat*>(&format)->name());
QString imageName = static_cast<QTextImageFormat*>(&format)->name();
if (imageName.startsWith(qstr("emoji://e."))) {
return emojiFromUrl(imageName);
}
}
return 0;
}
void FlatTextarea::getMentionHashtagStart(QString &start) const {
void FlatTextarea::getMentionHashtagBotCommandStart(QString &start) const {
int32 pos = textCursor().position();
if (textCursor().anchor() != pos) return;
@@ -195,11 +199,16 @@ void FlatTextarea::getMentionHashtagStart(QString &start) const {
QTextCharFormat f = fr.charFormat();
if (f.isImageFormat()) continue;
bool mentionInCommand = false;
QString t(fr.text());
for (int i = pos - p; i > 0; --i) {
if (t.at(i - 1) == '@') {
if ((pos - p - i < 1 || t.at(i).isLetter()) && (i < 2 || !(t.at(i - 2).isLetterOrNumber() || t.at(i - 2) == '_'))) {
start = t.mid(i - 1, pos - p - i + 1);
} else if ((pos - p - i < 1 || t.at(i).isLetter()) && i > 2 && (t.at(i - 2).isLetterOrNumber() || t.at(i - 2) == '_') && !mentionInCommand) {
mentionInCommand = true;
--i;
continue;
}
return;
} else if (t.at(i - 1) == '#') {
@@ -207,15 +216,20 @@ void FlatTextarea::getMentionHashtagStart(QString &start) const {
start = t.mid(i - 1, pos - p - i + 1);
}
return;
} else if (t.at(i - 1) == '/') {
if (i < 2) {
start = t.mid(i - 1, pos - p - i + 1);
}
return;
}
if (pos - p - i > 63) break;
if (pos - p - i > 127 || (!mentionInCommand && (pos - p - i > 63))) break;
if (!t.at(i - 1).isLetterOrNumber() && t.at(i - 1) != '_') break;
}
return;
}
}
void FlatTextarea::onMentionOrHashtagInsert(QString mentionOrHashtag) {
void FlatTextarea::onMentionHashtagOrBotCommandInsert(QString str) {
QTextCursor c(textCursor());
int32 pos = c.position();
@@ -231,31 +245,37 @@ void FlatTextarea::onMentionOrHashtagInsert(QString mentionOrHashtag) {
QTextCharFormat f = fr.charFormat();
if (f.isImageFormat()) continue;
bool mentionInCommand = false;
QString t(fr.text());
for (int i = pos - p; i > 0; --i) {
if (t.at(i - 1) == '@' || t.at(i - 1) == '#') {
if (t.at(i - 1) == '@' || t.at(i - 1) == '#' || t.at(i - 1) == '/') {
if ((i == pos - p || t.at(i).isLetter() || t.at(i - 1) == '#') && (i < 2 || !(t.at(i - 2).isLetterOrNumber() || t.at(i - 2) == '_'))) {
c.setPosition(p + i - 1, QTextCursor::MoveAnchor);
int till = p + i;
for (; (till < e) && (till - p - i + 1 < mentionOrHashtag.size()); ++till) {
if (t.at(till - p).toLower() != mentionOrHashtag.at(till - p - i + 1).toLower()) {
for (; (till < e) && (till - p - i + 1 < str.size()); ++till) {
if (t.at(till - p).toLower() != str.at(till - p - i + 1).toLower()) {
break;
}
}
if (till - p - i + 1 == mentionOrHashtag.size() && till < e && t.at(till - p) == ' ') {
if (till - p - i + 1 == str.size() && till < e && t.at(till - p) == ' ') {
++till;
}
c.setPosition(till, QTextCursor::KeepAnchor);
c.insertText(mentionOrHashtag + ' ');
c.insertText(str + ' ');
return;
} else if ((i == pos - p || t.at(i).isLetter()) && t.at(i - 1) == '@' && i > 2 && (t.at(i - 2).isLetterOrNumber() || t.at(i - 2) == '_') && !mentionInCommand) {
mentionInCommand = true;
--i;
continue;
}
break;
}
if (pos - p - i > 63) break;
if (pos - p - i > 127 || (!mentionInCommand && (pos - p - i > 63))) break;
if (!t.at(i - 1).isLetterOrNumber() && t.at(i - 1) != '_') break;
}
break;
}
c.insertText(mentionOrHashtag + ' ');
c.insertText(str + ' ');
}
void FlatTextarea::getSingleEmojiFragment(QString &text, QTextFragment &fragment) const {
@@ -287,7 +307,7 @@ void FlatTextarea::getSingleEmojiFragment(QString &text, QTextFragment &fragment
}
if (f.isImageFormat() && !t.isEmpty() && t.at(0).unicode() == QChar::ObjectReplacementCharacter) {
QString imageName = static_cast<QTextImageFormat*>(&f)->name();
if (imageName.startsWith(QLatin1String("emoji://e."))) {
if (imageName.startsWith(qstr("emoji://e."))) {
fragment = fr;
text = t;
return;
@@ -371,7 +391,7 @@ QString FlatTextarea::getText(int32 start, int32 end) const {
case QChar::ObjectReplacementCharacter:
if (emojiText.isEmpty() && f.isImageFormat()) {
QString imageName = static_cast<QTextImageFormat*>(&f)->name();
if (imageName.startsWith(QLatin1String("emoji://e."))) {
if (imageName.startsWith(qstr("emoji://e."))) {
if (EmojiPtr emoji = emojiFromUrl(imageName)) {
emojiText = emojiString(emoji);
}
@@ -510,21 +530,29 @@ QStringList FlatTextarea::linksList() const {
void FlatTextarea::insertFromMimeData(const QMimeData *source) {
QTextEdit::insertFromMimeData(source);
emit spacedReturnedPasted();
if (!_inDrop) emit spacedReturnedPasted();
}
void FlatTextarea::insertEmoji(EmojiPtr emoji, QTextCursor c) {
c.removeSelectedText();
QPixmap img(App::emojiSingle(emoji, _st.font->height));
QString url = qsl("emoji://e.") + QString::number(emojiKey(emoji), 16);
document()->addResource(QTextDocument::ImageResource, QUrl(url), QVariant(img));
QTextImageFormat imageFormat;
imageFormat.setWidth(img.width() / cIntRetinaFactor());
imageFormat.setHeight(img.height() / cIntRetinaFactor());
imageFormat.setName(url);
int32 ew = ESize + st::emojiPadding * cIntRetinaFactor() * 2, eh = _st.font->height * cIntRetinaFactor();
imageFormat.setWidth(ew / cIntRetinaFactor());
imageFormat.setHeight(eh / cIntRetinaFactor());
imageFormat.setName(qsl("emoji://e.") + QString::number(emojiKey(emoji), 16));
imageFormat.setVerticalAlignment(QTextCharFormat::AlignBaseline);
c.insertImage(imageFormat);
static QString objectReplacement(QChar::ObjectReplacementCharacter);
c.insertText(objectReplacement, imageFormat);
}
QVariant FlatTextarea::loadResource(int type, const QUrl &name) {
QString imageName = name.toDisplayString();
if (imageName.startsWith(qstr("emoji://e."))) {
if (EmojiPtr emoji = emojiFromUrl(imageName)) {
return QVariant(App::emojiSingle(emoji, _st.font->height));
}
}
return QVariant();
}
void FlatTextarea::processDocumentContentsChange(int position, int charsAdded) {
@@ -563,6 +591,10 @@ void FlatTextarea::processDocumentContentsChange(int position, int charsAdded) {
if (emoji) break;
}
if (emoji) {
if (!document()->pageSize().isNull()) {
document()->setPageSize(QSizeF(0, 0));
}
QTextCursor c(doc->docHandle(), emojiPosition);
c.setPosition(emojiPosition + emojiLen, QTextCursor::KeepAnchor);
int32 removedUpto = c.position();
@@ -592,6 +624,8 @@ void FlatTextarea::processDocumentContentsChange(int position, int charsAdded) {
}
void FlatTextarea::onDocumentContentsChange(int position, int charsRemoved, int charsAdded) {
if (_replacingEmojis) return;
if (!_links.isEmpty()) {
bool changed = false;
for (LinkRanges::iterator i = _links.begin(); i != _links.end();) {
@@ -608,7 +642,7 @@ void FlatTextarea::onDocumentContentsChange(int position, int charsRemoved, int
if (changed) emit linksChanged();
}
if (_replacingEmojis || document()->availableRedoSteps() > 0) return;
if (document()->availableRedoSteps() > 0) return;
const int takeBack = 3;
@@ -620,7 +654,14 @@ void FlatTextarea::onDocumentContentsChange(int position, int charsRemoved, int
}
if (charsAdded <= 0) return;
_insertions.push_back(Insertion(position, charsAdded));
// _insertions.push_back(Insertion(position, charsAdded));
_replacingEmojis = true;
QSizeF s = document()->pageSize();
processDocumentContentsChange(position, charsAdded);
if (document()->pageSize() != s) {
document()->setPageSize(s);
}
_replacingEmojis = false;
}
void FlatTextarea::onDocumentContentsChanged() {
@@ -631,6 +672,8 @@ void FlatTextarea::onDocumentContentsChanged() {
_insertions.clear();
} else {
_replacingEmojis = true;
QSizeF s = document()->pageSize();
do {
Insertion i = _insertions.front();
_insertions.pop_front();
@@ -638,6 +681,10 @@ void FlatTextarea::onDocumentContentsChanged() {
processDocumentContentsChange(i.first, i.second);
}
} while (!_insertions.isEmpty());
if (document()->pageSize() != s) {
document()->setPageSize(s);
}
_replacingEmojis = false;
}
}
@@ -681,8 +728,12 @@ bool FlatTextarea::animStep(float64 ms) {
return res;
}
const QString &FlatTextarea::getLastText() const {
return _oldtext;
}
void FlatTextarea::updatePlaceholder() {
bool vis = !hasText();
bool vis = getLastText().isEmpty();
if (vis == _phVisible) return;
a_phLeft.start(vis ? 0 : _st.phShift);
@@ -723,6 +774,8 @@ void FlatTextarea::keyPressEvent(QKeyEvent *e) {
} else {
emit tabbed();
}
} else if (e->key() == Qt::Key_Search || e == QKeySequence::Find) {
e->ignore();
} else {
QTextCursor tc(textCursor());
if (enter && ctrl) {
@@ -765,3 +818,10 @@ void FlatTextarea::resizeEvent(QResizeEvent *e) {
void FlatTextarea::mousePressEvent(QMouseEvent *e) {
QTextEdit::mousePressEvent(e);
}
void FlatTextarea::dropEvent(QDropEvent *e) {
_inDrop = true;
QTextEdit::dropEvent(e);
_inDrop = false;
emit spacedReturnedPasted();
}

View File

@@ -36,7 +36,9 @@ public:
void keyPressEvent(QKeyEvent *e);
void resizeEvent(QResizeEvent *e);
void mousePressEvent(QMouseEvent *e);
void dropEvent(QDropEvent *e);
const QString &getLastText() const;
void updatePlaceholder();
QRect getTextRect() const;
@@ -48,7 +50,7 @@ public:
QSize minimumSizeHint() const;
EmojiPtr getSingleEmoji() const;
void getMentionHashtagStart(QString &start) const;
void getMentionHashtagBotCommandStart(QString &start) const;
void removeSingleEmoji();
QString getText(int32 start = 0, int32 end = -1) const;
bool hasText() const;
@@ -71,7 +73,7 @@ public slots:
void onUndoAvailable(bool avail);
void onRedoAvailable(bool avail);
void onMentionOrHashtagInsert(QString mentionOrHashtag);
void onMentionHashtagOrBotCommandInsert(QString str);
signals:
@@ -85,6 +87,24 @@ signals:
protected:
void insertEmoji(EmojiPtr emoji, QTextCursor c);
TWidget *tparent() {
return qobject_cast<TWidget*>(parentWidget());
}
const TWidget *tparent() const {
return qobject_cast<const TWidget*>(parentWidget());
}
void enterEvent(QEvent *e) {
TWidget *p(tparent());
if (p) p->leaveToChildEvent(e);
return QTextEdit::enterEvent(e);
}
void leaveEvent(QEvent *e) {
TWidget *p(tparent());
if (p) p->enterFromChildEvent(e);
return QTextEdit::leaveEvent(e);
}
QVariant loadResource(int type, const QUrl &name);
private:
@@ -100,7 +120,7 @@ private:
anim::cvalue a_phColor;
style::flatTextarea _st;
bool _undoAvailable, _redoAvailable;
bool _undoAvailable, _redoAvailable, _inDrop;
int32 _fakeMargin;

View File

@@ -34,6 +34,11 @@ namespace {
StorageImages storageImages;
int64 globalAquiredSize = 0;
static const uint64 BlurredCacheSkip = 0x1000000000000000LLU;
static const uint64 ColoredCacheSkip = 0x2000000000000000LLU;
static const uint64 BlurredColoredCacheSkip = 0x3000000000000000LLU;
static const uint64 RoundedCacheSkip = 0x4000000000000000LLU;
}
bool Image::isNull() const {
@@ -70,6 +75,29 @@ const QPixmap &Image::pix(int32 w, int32 h) const {
return i.value();
}
const QPixmap &Image::pixRounded(int32 w, int32 h) const {
restore();
checkload();
if (w <= 0 || !width() || !height()) {
w = width();
} else if (cRetina()) {
w *= cIntRetinaFactor();
h *= cIntRetinaFactor();
}
uint64 k = RoundedCacheSkip | (uint64(w) << 32) | uint64(h);
Sizes::const_iterator i = _sizesCache.constFind(k);
if (i == _sizesCache.cend()) {
QPixmap p(pixNoCache(w, h, true, false, true));
if (cRetina()) p.setDevicePixelRatio(cRetinaFactor());
i = _sizesCache.insert(k, p);
if (!p.isNull()) {
globalAquiredSize += int64(p.width()) * p.height() * 4;
}
}
return i.value();
}
const QPixmap &Image::pixBlurred(int32 w, int32 h) const {
restore();
checkload();
@@ -80,10 +108,10 @@ const QPixmap &Image::pixBlurred(int32 w, int32 h) const {
w *= cIntRetinaFactor();
h *= cIntRetinaFactor();
}
uint64 k = 0x1000000000000000LL | (uint64(w) << 32) | uint64(h);
uint64 k = BlurredCacheSkip | (uint64(w) << 32) | uint64(h);
Sizes::const_iterator i = _sizesCache.constFind(k);
if (i == _sizesCache.cend()) {
QPixmap p(pixBlurredNoCache(w, h));
QPixmap p(pixNoCache(w, h, true, true));
if (cRetina()) p.setDevicePixelRatio(cRetinaFactor());
i = _sizesCache.insert(k, p);
if (!p.isNull()) {
@@ -103,7 +131,7 @@ const QPixmap &Image::pixColored(const style::color &add, int32 w, int32 h) cons
w *= cIntRetinaFactor();
h *= cIntRetinaFactor();
}
uint64 k = 0x2000000000000000LL | (uint64(w) << 32) | uint64(h);
uint64 k = ColoredCacheSkip | (uint64(w) << 32) | uint64(h);
Sizes::const_iterator i = _sizesCache.constFind(k);
if (i == _sizesCache.cend()) {
QPixmap p(pixColoredNoCache(add, w, h, true));
@@ -126,7 +154,7 @@ const QPixmap &Image::pixBlurredColored(const style::color &add, int32 w, int32
w *= cIntRetinaFactor();
h *= cIntRetinaFactor();
}
uint64 k = 0x3000000000000000LL | (uint64(w) << 32) | uint64(h);
uint64 k = BlurredColoredCacheSkip | (uint64(w) << 32) | uint64(h);
Sizes::const_iterator i = _sizesCache.constFind(k);
if (i == _sizesCache.cend()) {
QPixmap p(pixBlurredColoredNoCache(add, w, h));
@@ -139,7 +167,7 @@ const QPixmap &Image::pixBlurredColored(const style::color &add, int32 w, int32
return i.value();
}
const QPixmap &Image::pixSingle(int32 w, int32 h) const {
const QPixmap &Image::pixSingle(int32 w, int32 h, int32 outerw, int32 outerh) const {
restore();
checkload();
@@ -155,7 +183,7 @@ const QPixmap &Image::pixSingle(int32 w, int32 h) const {
if (i != _sizesCache.cend()) {
globalAquiredSize -= int64(i->width()) * i->height() * 4;
}
QPixmap p(pixNoCache(w, h, true));
QPixmap p(pixNoCache(w, h, true, false, true, outerw, outerh));
if (cRetina()) p.setDevicePixelRatio(cRetinaFactor());
i = _sizesCache.insert(k, p);
if (!p.isNull()) {
@@ -165,7 +193,7 @@ const QPixmap &Image::pixSingle(int32 w, int32 h) const {
return i.value();
}
const QPixmap &Image::pixBlurredSingle(int32 w, int32 h) const {
const QPixmap &Image::pixBlurredSingle(int32 w, int32 h, int32 outerw, int32 outerh) const {
restore();
checkload();
@@ -175,13 +203,13 @@ const QPixmap &Image::pixBlurredSingle(int32 w, int32 h) const {
w *= cIntRetinaFactor();
h *= cIntRetinaFactor();
}
uint64 k = 0x1000000000000000LL | 0LL;
uint64 k = BlurredCacheSkip | 0LL;
Sizes::const_iterator i = _sizesCache.constFind(k);
if (i == _sizesCache.cend() || i->width() != w || (h && i->height() != h)) {
if (i != _sizesCache.cend()) {
globalAquiredSize -= int64(i->width()) * i->height() * 4;
}
QPixmap p(pixBlurredNoCache(w, h));
QPixmap p(pixNoCache(w, h, true, true, true, outerw, outerh));
if (cRetina()) p.setDevicePixelRatio(cRetinaFactor());
i = _sizesCache.insert(k, p);
if (!p.isNull()) {
@@ -309,6 +337,39 @@ yi += stride;
return img;
}
void imageRound(QImage &img) {
img.setDevicePixelRatio(cRetinaFactor());
img = img.convertToFormat(QImage::Format_ARGB32_Premultiplied);
QImage **masks = App::cornersMask();
int32 w = masks[0]->width(), h = masks[0]->height();
int32 tw = img.width(), th = img.height();
uchar *bits = img.bits();
const uchar *c0 = masks[0]->constBits(), *c1 = masks[1]->constBits(), *c2 = masks[2]->constBits(), *c3 = masks[3]->constBits();
int32 s0 = 0, s1 = (tw - w) * 4, s2 = (th - h) * tw * 4, s3 = ((th - h + 1) * tw - w) * 4;
for (int32 i = 0; i < w; ++i) {
for (int32 j = 0; j < h; ++j) {
#define update(s, c) \
{ \
uint64 color = _blurGetColors(bits + s + (j * tw + i) * 4); \
color *= (c[(j * w + i) * 4 + 3] + 1); \
color = (color >> 8); \
bits[s + (j * tw + i) * 4] = color & 0xFF; \
bits[s + (j * tw + i) * 4 + 1] = (color >> 16) & 0xFF; \
bits[s + (j * tw + i) * 4 + 2] = (color >> 32) & 0xFF; \
bits[s + (j * tw + i) * 4 + 3] = (color >> 48) & 0xFF; \
}
update(s0, c0);
update(s1, c1);
update(s2, c2);
update(s3, c3);
#undef update
}
}
}
QImage imageColored(const style::color &add, QImage img) {
QImage::Format fmt = img.format();
if (fmt != QImage::Format_RGB32 && fmt != QImage::Format_ARGB32_Premultiplied) {
@@ -330,35 +391,39 @@ QImage imageColored(const style::color &add, QImage img) {
return img;
}
QPixmap Image::pixNoCache(int32 w, int32 h, bool smooth) const {
restore();
loaded();
const QPixmap &p(pixData());
if (p.isNull()) {
return blank()->pix();
}
if (w <= 0 || !width() || !height() || (w == width() && (h <= 0 || h == height()))) return p;
if (h <= 0) {
return QPixmap::fromImage(p.toImage().scaledToWidth(w, smooth ? Qt::SmoothTransformation : Qt::FastTransformation), Qt::ColorOnly);
}
return QPixmap::fromImage(p.toImage().scaled(w, h, Qt::IgnoreAspectRatio, smooth ? Qt::SmoothTransformation : Qt::FastTransformation), Qt::ColorOnly);
}
QPixmap Image::pixBlurredNoCache(int32 w, int32 h) const {
QPixmap Image::pixNoCache(int32 w, int32 h, bool smooth, bool blurred, bool rounded, int32 outerw, int32 outerh) const {
restore();
loaded();
const QPixmap &p(pixData());
if (p.isNull()) return blank()->pix();
QImage img = imageBlur(p.toImage());
if (h <= 0) {
img = img.scaledToWidth(w, Qt::SmoothTransformation);
QImage img = p.toImage();
if (blurred) img = imageBlur(img);
if (w <= 0 || !width() || !height() || (w == width() && (h <= 0 || h == height()))) {
} else if (h <= 0) {
img = img.scaledToWidth(w, smooth ? Qt::SmoothTransformation : Qt::FastTransformation);
} else {
img = img.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
img = img.scaled(w, h, Qt::IgnoreAspectRatio, smooth ? Qt::SmoothTransformation : Qt::FastTransformation);
}
if (outerw > 0 && outerh > 0) {
outerw *= cIntRetinaFactor();
outerh *= cIntRetinaFactor();
if (outerw != w || outerh != h) {
img.setDevicePixelRatio(cRetinaFactor());
QImage result(outerw, outerh, QImage::Format_ARGB32_Premultiplied);
result.setDevicePixelRatio(cRetinaFactor());
{
QPainter p(&result);
if (w < outerw || h < outerh) {
p.fillRect(0, 0, result.width(), result.height(), st::black->b);
}
p.drawImage((result.width() - img.width()) / (2 * cIntRetinaFactor()), (result.height() - img.height()) / (2 * cIntRetinaFactor()), img);
}
img = result;
}
}
if (rounded) imageRound(img);
return QPixmap::fromImage(img, Qt::ColorOnly);
}

View File

@@ -20,6 +20,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
#include <QtGui/QPixmap>
QImage imageBlur(QImage img);
void imageRound(QImage &img);
struct StorageImageLocation {
StorageImageLocation() : width(0), height(0), dc(0), volume(0), local(0), secret(0) {
@@ -28,6 +29,9 @@ struct StorageImageLocation {
}
StorageImageLocation(int32 width, int32 height, const MTPDfileLocation &location) : width(width), height(height), dc(location.vdc_id.v), volume(location.vvolume_id.v), local(location.vlocal_id.v), secret(location.vsecret.v) {
}
bool isNull() const {
return !dc;
}
int32 width, height;
int32 dc;
uint64 volume;
@@ -35,6 +39,13 @@ struct StorageImageLocation {
uint64 secret;
};
inline bool operator==(const StorageImageLocation &a, const StorageImageLocation &b) {
return !memcmp(&a, &b, sizeof(StorageImageLocation));
}
inline bool operator!=(const StorageImageLocation &a, const StorageImageLocation &b) {
return !(a == b);
}
class Image {
public:
@@ -47,13 +58,13 @@ public:
return false;
}
const QPixmap &pix(int32 w = 0, int32 h = 0) const;
const QPixmap &pixRounded(int32 w = 0, int32 h = 0) const;
const QPixmap &pixBlurred(int32 w = 0, int32 h = 0) const;
const QPixmap &pixColored(const style::color &add, int32 w = 0, int32 h = 0) const;
const QPixmap &pixBlurredColored(const style::color &add, int32 w = 0, int32 h = 0) const;
const QPixmap &pixSingle(int32 w = 0, int32 h = 0) const;
const QPixmap &pixBlurredSingle(int32 w = 0, int32 h = 0) const;
QPixmap pixNoCache(int32 w = 0, int32 h = 0, bool smooth = false) const;
QPixmap pixBlurredNoCache(int32 w, int32 h = 0) const;
const QPixmap &pixSingle(int32 w, int32 y, int32 outerw, int32 outerh) const;
const QPixmap &pixBlurredSingle(int32 w, int32 h, int32 outerw, int32 outerh) const;
QPixmap pixNoCache(int32 w = 0, int32 h = 0, bool smooth = false, bool blurred = false, bool rounded = false, int32 outerw = -1, int32 outerh = -1) const;
QPixmap pixColoredNoCache(const style::color &add, int32 w = 0, int32 h = 0, bool smooth = false) const;
QPixmap pixBlurredColoredNoCache(const style::color &add, int32 w, int32 h = 0) const;
@@ -143,6 +154,10 @@ inline StorageKey storageKey(int32 dc, const uint64 &volume, int32 local) {
inline StorageKey storageKey(const MTPDfileLocation &location) {
return storageKey(location.vdc_id.v, location.vvolume_id.v, location.vlocal_id.v);
}
inline StorageKey storageKey(const StorageImageLocation &location) {
return storageKey(location.dc, location.volume, location.local);
}
enum StorageFileType {
StorageFileUnknown = 0xaa963b05, // mtpc_storage_fileUnknown
StorageFileJpeg = 0x7efe0e, // mtpc_storage_fileJpeg

View File

@@ -19,8 +19,30 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
#include "style.h"
#include "gui/phoneinput.h"
#include "numbers.h"
#include "lang.h"
PhoneInput::PhoneInput(QWidget *parent, const style::flatInput &st, const QString &ph) : FlatInput(parent, st, ph) {
PhoneInput::PhoneInput(QWidget *parent, const style::flatInput &st) : FlatInput(parent, st, lang(lng_phone_ph)) {
}
void PhoneInput::paintEvent(QPaintEvent *e) {
FlatInput::paintEvent(e);
Painter p(this);
QString t(text());
if (!pattern.isEmpty() && !t.isEmpty()) {
QString ph = placeholder().mid(t.size());
if (!ph.isEmpty()) {
p.setClipRect(rect());
QRect phRect(placeholderRect());
int tw = phFont()->m.width(t);
if (tw < phRect.width()) {
phRect.setLeft(phRect.left() + tw);
phPrepare(p);
p.drawText(phRect, ph, style::al_left);
}
}
}
}
void PhoneInput::correctValue(QKeyEvent *e, const QString &was) {
@@ -36,34 +58,58 @@ void PhoneInput::correctValue(QKeyEvent *e, const QString &was) {
}
}
if (digitCount > MaxPhoneTailLength) digitCount = MaxPhoneTailLength;
bool strict = (digitCount == MaxPhoneTailLength);
bool inPart = !pattern.isEmpty();
int curPart = -1, leftInPart = 0;
newText.reserve(oldLen);
for (int i = 0; i < oldLen; ++i) {
if (i == oldPos && newPos < 0) {
newPos = newText.length();
}
QChar ch(oldText[i]);
if (ch.isDigit()) {
if (!digitCount--) {
break;
}
newText += ch;
if (strict && !digitCount) {
break;
if (inPart) {
if (leftInPart) {
--leftInPart;
} else {
newText += ' ';
++curPart;
inPart = curPart < pattern.size();
leftInPart = inPart ? (pattern.at(curPart) - 1) : 0;
++oldPos;
}
}
} else if (ch == ' ' || ch == '-' || ch == '(' || ch == ')') {
newText += ch;
}
if (i == oldPos) {
newPos = newText.length();
} else if (ch == ' ' || ch == '-' || ch == '(' || ch == ')') {
if (inPart) {
if (leftInPart) {
} else {
newText += ch;
++curPart;
inPart = curPart < pattern.size();
leftInPart = inPart ? pattern.at(curPart) : 0;
}
} else {
newText += ch;
}
}
}
int32 newlen = newText.size();
while (newlen > 0 && newText.at(newlen - 1).isSpace()) {
--newlen;
}
if (newlen < newText.size()) newText = newText.mid(0, newlen);
if (newPos < 0) {
newPos = newText.length();
}
if (newText != oldText) {
setText(newText);
if (newPos != oldPos) {
setCursorPosition(newPos);
}
setCursorPosition(newPos);
}
}
@@ -76,6 +122,29 @@ void PhoneInput::addedToNumber(const QString &added) {
updatePlaceholder();
}
void PhoneInput::onChooseCode(const QString &code) {
pattern = phoneNumberParse(code);
if (!pattern.isEmpty() && pattern.at(0) == code.size()) {
pattern.pop_front();
} else {
pattern.clear();
}
if (pattern.isEmpty()) {
setPlaceholder(lang(lng_phone_ph));
} else {
QString ph;
ph.reserve(20);
for (int i = 0, l = pattern.size(); i < l; ++i) {
ph.append(' ');
ph.append(QString(QChar(0x2212)).repeated(pattern.at(i)));
}
setPlaceholder(ph);
}
correctValue(0, text());
setPlaceholderFast(!pattern.isEmpty());
updatePlaceholder();
}
PortInput::PortInput(QWidget *parent, const style::flatInput &st, const QString &ph, const QString &val) : FlatInput(parent, st, ph, val) {
correctValue(0, QString());
}

View File

@@ -24,11 +24,14 @@ class PhoneInput : public FlatInput {
public:
PhoneInput(QWidget *parent, const style::flatInput &st, const QString &ph);
PhoneInput(QWidget *parent, const style::flatInput &st);
void paintEvent(QPaintEvent *e);
public slots:
void addedToNumber(const QString &added);
void onChooseCode(const QString &code);
signals:
@@ -38,6 +41,10 @@ protected:
void correctValue(QKeyEvent *e, const QString &was);
private:
QVector<int> pattern;
};
class PortInput : public FlatInput {

View File

@@ -47,7 +47,7 @@ ScrollBar::ScrollBar(ScrollArea *parent, bool vert, const style::flatScroll *st)
_hideTimer.setSingleShot(true);
connect(&_hideTimer, SIGNAL(timeout()), this, SLOT(onHideTimer()));
connect(_connected, SIGNAL(valueChanged(int)), this, SLOT(updateBar()));
connect(_connected, SIGNAL(valueChanged(int)), this, SLOT(onValueChanged()));
connect(_connected, SIGNAL(rangeChanged(int, int)), this, SLOT(updateBar()));
updateBar();
@@ -57,6 +57,11 @@ void ScrollBar::recountSize() {
setGeometry(_vertical ? QRect(rtl() ? 0 : (_area->width() - _st->width), _st->deltat, _st->width, _area->height() - _st->deltat - _st->deltab) : QRect(_st->deltat, _area->height() - _st->width, _area->width() - _st->deltat - _st->deltab, _st->width));
}
void ScrollBar::onValueChanged() {
_area->onScrolled();
updateBar();
}
void ScrollBar::updateBar(bool force) {
QRect newBar;
if (_connected->maximum() != _scrollMax) {
@@ -266,8 +271,6 @@ _touchScrollState(TouchScrollManual), _touchPrevPosValid(false), _touchWaitingAc
_touchSpeedTime(0), _touchAccelerationTime(0), _touchTime(0), _widgetAcceptsTouch(false) {
setLayoutDirection(cLangDir());
connect(horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(onScrolled()));
connect(verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(onScrolled()));
connect(&vert, SIGNAL(topShadowVisibility(bool)), &topSh, SLOT(changeVisibility(bool)));
connect(&vert, SIGNAL(bottomShadowVisibility(bool)), &bottomSh, SLOT(changeVisibility(bool)));
vert.updateBar(true);
@@ -297,6 +300,8 @@ void ScrollArea::touchDeaccelerate(int32 elapsed) {
}
void ScrollArea::onScrolled() {
myEnsureResized(widget());
bool em = false;
int32 horValue = horizontalScrollBar()->value(), vertValue = verticalScrollBar()->value();
if (_horValue != horValue) {
@@ -325,27 +330,29 @@ void ScrollArea::onScrolled() {
}
int ScrollArea::scrollWidth() const {
return scrollLeftMax() + width();
QWidget *w(widget());
return w ? qMax(w->width(), width()) : width();
}
int ScrollArea::scrollHeight() const {
return scrollTopMax() + height();
QWidget *w(widget());
return w ? qMax(w->height(), height()) : height();
}
int ScrollArea::scrollLeftMax() const {
return horizontalScrollBar()->maximum();
return scrollWidth() - width();
}
int ScrollArea::scrollTopMax() const {
return verticalScrollBar()->maximum();
return scrollHeight() - height();
}
int ScrollArea::scrollLeft() const {
return horizontalScrollBar()->value();
return _horValue;
}
int ScrollArea::scrollTop() const {
return verticalScrollBar()->value();
return _vertValue;
}
void ScrollArea::onTouchTimer() {
@@ -596,6 +603,9 @@ void ScrollArea::enterEvent(QEvent *e) {
hor.hideTimeout(_st.hiding);
vert.hideTimeout(_st.hiding);
}
TWidget *p(tparent());
if (p) p->leaveToChildEvent(e);
return QScrollArea::enterEvent(e);
}
void ScrollArea::leaveEvent(QEvent *e) {
@@ -603,9 +613,14 @@ void ScrollArea::leaveEvent(QEvent *e) {
hor.hideTimeout(0);
vert.hideTimeout(0);
}
TWidget *p(tparent());
if (p) p->enterFromChildEvent(e);
return QScrollArea::leaveEvent(e);
}
void ScrollArea::scrollToY(int toTop, int toBottom) {
myEnsureResized(widget());
int toMin = 0, toMax = scrollTopMax();
if (toTop < toMin) {
toTop = toMin;
@@ -655,3 +670,7 @@ void ScrollArea::updateColors(const style::color &bar, const style::color &bg, c
hor.update();
vert.update();
}
ScrollArea::~ScrollArea() {
takeWidget();
}

View File

@@ -70,6 +70,7 @@ public:
public slots:
void onValueChanged();
void updateBar(bool force = false);
void onHideTimer();
@@ -131,6 +132,8 @@ public:
void updateColors(const style::color &bar, const style::color &bg, const style::color &barOver, const style::color &bgOver);
~ScrollArea();
public slots:
void scrollToY(int toTop, int toBottom = -1);
@@ -150,6 +153,12 @@ signals:
protected:
void scrollContentsBy(int dx, int dy);
TWidget *tparent() {
return qobject_cast<TWidget*>(parentWidget());
}
const TWidget *tparent() const {
return qobject_cast<const TWidget*>(parentWidget());
}
private:

View File

@@ -61,6 +61,10 @@ namespace style {
return _flags;
}
uint32 FontData::family() const {
return _family;
}
Font FontData::otherFlagsFont(uint32 flag, bool set) const {
int32 newFlags = set ? (_flags | flag) : (_flags & ~flag);
if (!modified[newFlags].v()) {

View File

@@ -26,8 +26,17 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
#include <QtGui/QCursor>
#include <QtGui/QFont>
inline QPoint rtlpoint(int x, int y, int outerw) {
return QPoint(rtl() ? (outerw - x) : x, y);
}
inline QPoint rtlpoint(const QPoint &p, int outerw) {
return rtl() ? QPoint(outerw - p.x(), p.y()) : p;
}
inline QRect rtlrect(int x, int y, int w, int h, int outerw) {
return rtl() ? QRect(outerw - x - w, y, w, h) : QRect(x, y, w, h);
return QRect(rtl() ? (outerw - x - w) : x, y, w, h);
}
inline QRect rtlrect(const QRect &r, int outerw) {
return rtl() ? QRect(outerw - r.x() - r.width(), r.y(), r.width(), r.height()) : r;
}
inline QRect centerrect(const QRect &inRect, const QRect &rect) {
return QRect(inRect.x() + (inRect.width() - rect.width()) / 2, inRect.y() + (inRect.height() - rect.height()) / 2, rect.width(), rect.height());
@@ -104,6 +113,7 @@ namespace style {
Font underline(bool set = true) const;
uint32 flags() const;
uint32 family() const;
QFont f;
QFontMetrics m;

View File

@@ -20,16 +20,21 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
#include "lang.h"
#include "pspecific.h"
#include "boxes/confirmbox.h"
#include "window.h"
#include <private/qharfbuzz_p.h>
namespace {
const QRegularExpression _reDomain(QString::fromUtf8("(?<![\\w\\$\\-\\_%=\\.])(?:([a-zA-Z]+)://)?((?:[A-Za-zА-яА-ЯёЁ0-9\\-\\_]+\\.){1,5}([A-Za-zрф\\-\\d]{2,22})(\\:\\d+)?)"), QRegularExpression::UseUnicodePropertiesOption);
const QRegularExpression _reDomain(QString::fromUtf8("(?<![\\w\\$\\-\\_%=\\.])(?:([a-zA-Z]+)://)?((?:[A-Za-zА-яА-ЯёЁ0-9\\-\\_]+\\.){1,10}([A-Za-zрф\\-\\d]{2,22})(\\:\\d+)?)"), QRegularExpression::UseUnicodePropertiesOption);
const QRegularExpression _reExplicitDomain(QString::fromUtf8("(?<![\\w\\$\\-\\_%=\\.])(?:([a-zA-Z]+)://)((?:[A-Za-zА-яА-ЯёЁ0-9\\-\\_]+\\.){0,5}([A-Za-zрф\\-\\d]{2,22})(\\:\\d+)?)"), QRegularExpression::UseUnicodePropertiesOption);
const QRegularExpression _reMailName(qsl("[a-zA-Z\\-_\\.0-9]{1,256}$"));
const QRegularExpression _reMailStart(qsl("^[a-zA-Z\\-_\\.0-9]{1,256}\\@"));
const QRegularExpression _reHashtag(qsl("(^|[\\s\\.,:;<>|'\"\\[\\]\\{\\}`\\~\\!\\%\\^\\*\\(\\)\\-\\+=\\x10])#[\\w]{2,64}([\\W]|$)"), QRegularExpression::UseUnicodePropertiesOption);
const QRegularExpression _reMention(qsl("(^|[\\s\\.,:;<>|'\"\\[\\]\\{\\}`\\~\\!\\%\\^\\*\\(\\)\\-\\+=\\x10])@[A-Za-z_0-9]{5,32}([\\W]|$)"), QRegularExpression::UseUnicodePropertiesOption);
const QRegularExpression _reBotCommand(qsl("(^|[\\s\\.,:;<>|'\"\\[\\]\\{\\}`\\~\\!\\%\\^\\*\\(\\)\\-\\+=\\x10])/[A-Za-z_0-9]{1,64}(@[A-Za-z_0-9]{5,32})?([\\W]|$)"));
QSet<int32> _validProtocols, _validTopDomains;
const style::textStyle *_textStyle = 0;
@@ -57,10 +62,18 @@ const QRegularExpression &reMailName() {
return _reMailName;
}
const QRegularExpression &reMailStart() {
return _reMailStart;
}
const QRegularExpression &reHashtag() {
return _reHashtag;
}
const QRegularExpression &reBotCommand() {
return _reBotCommand;
}
const style::textStyle *textstyleCurrent() {
return _textStyle;
}
@@ -302,7 +315,10 @@ public:
}
void getLinkData(const QString &original, QString &result, int32 &fullDisplayed) {
if (!original.isEmpty() && original.at(0) == '@') {
if (!original.isEmpty() && original.at(0) == '/') {
result = original;
fullDisplayed = -4; // bot command
} else if (!original.isEmpty() && original.at(0) == '@') {
result = original;
fullDisplayed = -3; // mention
} else if (!original.isEmpty() && original.at(0) == '#') {
@@ -320,21 +336,28 @@ public:
}
bool checkWaitedLink() {
if (waitingLink == linksEnd || ptr < waitingLink->from || links.size() >= 0x7FFF) {
if (waitingLink == linksEnd || ptr < start + waitingLink->offset || links.size() >= 0x7FFF) {
return true;
}
createBlock();
QString lnkUrl = QString(waitingLink->from, waitingLink->len), lnkText;
int32 fullDisplayed;
getLinkData(lnkUrl, lnkText, fullDisplayed);
QString lnkUrl, lnkText;
if (waitingLink->type == LinkInTextCustomUrl) {
lnkUrl = waitingLink->text;
lnkText = QString(start + waitingLink->offset, waitingLink->length);
fullDisplayed = -5;
} else {
lnkUrl = QString(start + waitingLink->offset, waitingLink->length);
getLinkData(lnkUrl, lnkText, fullDisplayed);
}
links.push_back(TextLinkData(lnkUrl, fullDisplayed));
lnkIndex = 0x8000 + links.size();
_t->_text += lnkText;
ptr = waitingLink->from + waitingLink->len;
ptr = start + waitingLink->offset + waitingLink->length;
createBlock();
++waitingLink;
@@ -511,8 +534,51 @@ public:
emoji = e;
}
TextParser(Text *t, const QString &text, const TextParseOptions &options) : _t(t), src(text),
rich(options.flags & TextParseRichText), multiline(options.flags & TextParseMultiline), maxLnkIndex(0), flags(0), lnkIndex(0), stopAfterWidth(QFIXED_MAX) {
TextParser(Text *t, const QString &text, const TextParseOptions &options) : _t(t),
src(text),
rich(options.flags & TextParseRichText),
multiline(options.flags & TextParseMultiline),
maxLnkIndex(0),
flags(0),
lnkIndex(0),
stopAfterWidth(QFIXED_MAX) {
if (options.flags & TextParseLinks) {
lnkRanges = textParseLinks(src, options.flags, rich);
}
parse(options);
}
TextParser(Text *t, const QString &text, const LinksInText &links, const TextParseOptions &options) : _t(t),
src(text),
rich(options.flags & TextParseRichText),
multiline(options.flags & TextParseMultiline),
maxLnkIndex(0),
flags(0),
lnkIndex(0),
stopAfterWidth(QFIXED_MAX) {
if ((options.flags & TextParseLinks) && !links.isEmpty()) {
bool parseMentions = (options.flags & TextParseMentions);
bool parseHashtags = (options.flags & TextParseHashtags);
bool parseBotCommands = (options.flags & TextParseBotCommands);
if (parseMentions && parseHashtags && parseBotCommands) {
lnkRanges = links;
} else {
int32 i = 0, l = links.size();
lnkRanges.reserve(l);
const QChar *p = text.constData(), s = text.size();
for (; i < l; ++i) {
LinkInTextType t = links.at(i).type;
if ((t == LinkInTextMention && !parseMentions) ||
(t == LinkInTextHashtag && !parseHashtags) ||
(t == LinkInTextBotCommand && !parseBotCommands)) {
continue;
}
lnkRanges.push_back(links.at(i));
}
}
}
parse(options);
}
void parse(const TextParseOptions &options) {
int flags = options.flags;
if (options.maxw > 0 && options.maxh > 0) {
stopAfterWidth = ((options.maxh / _t->_font->height) + 1) * options.maxw;
@@ -521,19 +587,16 @@ public:
start = src.constData();
end = start + src.size();
if (options.flags & TextParseLinks) {
lnkRanges = textParseLinks(src, options.flags, rich);
ptr = start;
while (ptr != end && chIsTrimmed(*ptr, rich)) {
++ptr;
}
while (start != end && chIsTrimmed(*start, rich)) {
++start;
}
while (start != end && chIsTrimmed(*(end - 1), rich)) {
while (ptr != end && chIsTrimmed(*(end - 1), rich)) {
--end;
}
_t->_text.resize(0);
_t->_text.reserve(end - start);
_t->_text.reserve(end - ptr);
diacs = 0;
sumWidth = 0;
@@ -544,9 +607,9 @@ public:
ch = chInt = 0;
lastSkipped = false;
lastSpace = true;
waitingLink = lnkRanges.isEmpty() ? 0 : lnkRanges.constData();
linksEnd = lnkRanges.isEmpty() ? 0 : waitingLink + lnkRanges.size();
for (ptr = start; ptr <= end; ++ptr) {
waitingLink = lnkRanges.cbegin();
linksEnd = lnkRanges.cend();
for (; ptr <= end; ++ptr) {
if (!checkWaitedLink()) {
break;
}
@@ -567,7 +630,11 @@ public:
_t->_links.resize(lnkIndex);
const TextLinkData &data(links[lnkIndex - maxLnkIndex - 1]);
TextLinkPtr lnk;
if (data.fullDisplayed < -2) { // mention
if (data.fullDisplayed < -4) { // hidden link
lnk = TextLinkPtr(new CustomTextLink(data.url));
} else if (data.fullDisplayed < -3) { // bot command
lnk = TextLinkPtr(new BotCommandLink(data.url));
} else if (data.fullDisplayed < -2) { // mention
if (options.flags & TextTwitterMentions) {
lnk = TextLinkPtr(new TextLink(qsl("https://twitter.com/") + data.url.mid(1), true));
} else if (options.flags & TextInstagramMentions) {
@@ -605,14 +672,14 @@ private:
const QChar *start, *end, *ptr;
bool rich, multiline;
LinkRanges lnkRanges;
const LinkRange *waitingLink, *linksEnd;
LinksInText lnkRanges;
LinksInText::const_iterator waitingLink, linksEnd;
struct TextLinkData {
TextLinkData(const QString &url = QString(), int32 fullDisplayed = 1) : url(url), fullDisplayed(fullDisplayed) {
}
QString url;
int32 fullDisplayed; // -3 - mention, -2 - hashtag, -1 - email
int32 fullDisplayed; // -5 - custom text link, -4 - bot command, -3 - mention, -2 - hashtag, -1 - email
};
typedef QVector<TextLinkData> TextLinks;
TextLinks links;
@@ -734,11 +801,19 @@ namespace {
void TextLink::onClick(Qt::MouseButton button) const {
if (button == Qt::LeftButton || button == Qt::MiddleButton) {
QString url = TextLink::encoded();
QRegularExpressionMatch telegramMeUser = QRegularExpression(qsl("^https?://telegram\\.me/([a-zA-Z0-9\\.\\_]+)(\\?|$)"), QRegularExpression::CaseInsensitiveOption).match(url);
QRegularExpressionMatch telegramMeUser = QRegularExpression(qsl("^https?://telegram\\.me/([a-zA-Z0-9\\.\\_]+)/?(\\?|$)"), QRegularExpression::CaseInsensitiveOption).match(url);
QRegularExpressionMatch telegramMeGroup = QRegularExpression(qsl("^https?://telegram\\.me/joinchat/([a-zA-Z0-9\\.\\_\\-]+)(\\?|$)"), QRegularExpression::CaseInsensitiveOption).match(url);
QRegularExpressionMatch telegramMeStickers = QRegularExpression(qsl("^https?://telegram\\.me/addstickers/([a-zA-Z0-9\\.\\_]+)(\\?|$)"), QRegularExpression::CaseInsensitiveOption).match(url);
if (telegramMeUser.hasMatch()) {
App::openUserByName(telegramMeUser.captured(1));
QString params = url.mid(telegramMeUser.captured(0).size()), start, startToken;
if (!params.isEmpty()) {
QRegularExpressionMatch startParams = QRegularExpression(qsl("(^|&)(start|startgroup)=([a-zA-Z0-9\\.\\_\\-]+)(&|$)"), QRegularExpression::CaseInsensitiveOption).match(params);
if (startParams.hasMatch()) {
start = startParams.captured(2);
startToken = startParams.captured(3);
}
}
App::openUserByName(telegramMeUser.captured(1), start == qsl("startgroup"), startToken);
} else if (telegramMeGroup.hasMatch()) {
App::joinGroupByHash(telegramMeGroup.captured(1));
} else if (telegramMeStickers.hasMatch()) {
@@ -751,6 +826,19 @@ void TextLink::onClick(Qt::MouseButton button) const {
}
}
void EmailLink::onClick(Qt::MouseButton button) const {
if (button == Qt::LeftButton || button == Qt::MiddleButton) {
QUrl url(qstr("mailto:") + _email);
if (!QDesktopServices::openUrl(url)) {
psOpenFile(url.toString(QUrl::FullyEncoded), true);
}
}
}
void CustomTextLink::onClick(Qt::MouseButton button) const {
App::wnd()->showLayer(new ConfirmLinkBox(text()));
}
void MentionLink::onClick(Qt::MouseButton button) const {
if (button == Qt::LeftButton || button == Qt::MiddleButton) {
App::openUserByName(_tag.mid(1), true);
@@ -763,6 +851,13 @@ void HashtagLink::onClick(Qt::MouseButton button) const {
}
}
void BotCommandLink::onClick(Qt::MouseButton button) const {
if (button == Qt::LeftButton || button == Qt::MiddleButton) {
// App::insertBotCommand(_cmd);
App::sendBotCommand(_cmd);
}
}
class TextPainter {
public:
@@ -838,7 +933,7 @@ public:
}
void draw(int32 left, int32 top, int32 w, style::align align, int32 yFrom, int32 yTo, uint16 selectedFrom = 0, uint16 selectedTo = 0) {
if (_t->_blocks.isEmpty()) return;
if (_t->isEmpty()) return;
_blocksSize = _t->_blocks.size();
if (!_textStyle) _initDefault();
@@ -1018,7 +1113,7 @@ public:
}
void drawElided(int32 left, int32 top, int32 w, style::align align, int32 lines, int32 yFrom, int32 yTo, int32 removeFromEnd) {
if (lines <= 0) return;
if (lines <= 0 || _t->isNull()) return;
if (yTo < 0 || (lines - 1) * _t->_font->height < yTo) {
yTo = lines * _t->_font->height;
@@ -1032,7 +1127,7 @@ public:
_lnkX = x;
_lnkY = y;
_lnkResult = &_zeroLnk;
if (_lnkX >= 0 && _lnkX < w && _lnkY >= 0) {
if (!_t->isNull() && _lnkX >= 0 && _lnkX < w && _lnkY >= 0) {
draw(0, 0, w, align, _lnkY, _lnkY + 1);
}
return *_lnkResult;
@@ -1042,7 +1137,7 @@ public:
lnk = TextLinkPtr();
inText = false;
if (x >= 0 && x < w && y >= 0) {
if (!_t->isNull() && x >= 0 && x < w && y >= 0) {
_lnkX = x;
_lnkY = y;
_lnkResult = &lnk;
@@ -1056,8 +1151,7 @@ public:
symbol = 0;
after = false;
upon = false;
if (y >= 0) {
if (!_t->isNull() && y >= 0) {
_lnkX = x;
_lnkY = y;
_getSymbol = &symbol;
@@ -1088,9 +1182,33 @@ public:
if (_yTo >= 0 && _y + _yDelta >= _yTo) return false;
if (_y + _yDelta + _fontHeight <= _yFrom) return true;
uint16 trimmedLineEnd = _lineEnd;
for (; trimmedLineEnd > _lineStart; --trimmedLineEnd) {
QChar ch = _t->_text.at(trimmedLineEnd - 1);
if ((ch != QChar::Space || trimmedLineEnd == _lineStart + 1) && ch != QChar::LineFeed) {
break;
}
}
ITextBlock *_endBlock = (_endBlockIter == _end) ? 0 : (*_endBlockIter);
bool elidedLine = _elideLast && _endBlock && (_y + _lineHeight >= _yTo);
int blockIndex = _lineStartBlock;
ITextBlock *currentBlock = _t->_blocks[blockIndex];
ITextBlock *nextBlock = (++blockIndex < _blocksSize) ? _t->_blocks[blockIndex] : 0;
int32 delta = (currentBlock->from() < _lineStart ? qMin(_lineStart - currentBlock->from(), 2) : 0);
_localFrom = _lineStart - delta;
int32 lineEnd = (_endBlock && _endBlock->from() < trimmedLineEnd && !elidedLine) ? qMin(uint16(trimmedLineEnd + 2), _blockEnd(_t, _endBlockIter, _end)) : trimmedLineEnd;
QString lineText = _t->_text.mid(_localFrom, lineEnd - _localFrom);
int32 lineStart = delta, lineLength = trimmedLineEnd - _lineStart;
if (elidedLine) {
initParagraphBidi();
prepareElidedLine(lineText, lineStart, lineLength, _endBlock);
}
QFixed x = _x;
if (_align & Qt::AlignHCenter) {
x += (_wLeft / 2).toInt();
@@ -1129,43 +1247,18 @@ public:
if ((selectFromStart && _parDirection == Qt::LeftToRight) || (selectTillEnd && _parDirection == Qt::RightToLeft)) {
if (x > _x) {
_p->fillRect(QRectF(_x.toReal(), _y + _yDelta, (x - _x).toReal(), _fontHeight), _textStyle->selectBG->b);
_p->fillRect(QRectF(_x.toReal(), _y + _yDelta, (x - _x).toReal(), _fontHeight), _textStyle->selectBg->b);
}
}
if ((selectTillEnd && _parDirection == Qt::LeftToRight) || (selectFromStart && _parDirection == Qt::RightToLeft)) {
if (x < _x + _wLeft) {
_p->fillRect(QRectF((x + _w - _wLeft).toReal(), _y + _yDelta, (_x + _wLeft - x).toReal(), _fontHeight), _textStyle->selectBG->b);
_p->fillRect(QRectF((x + _w - _wLeft).toReal(), _y + _yDelta, (_x + _wLeft - x).toReal(), _fontHeight), _textStyle->selectBg->b);
}
}
/* // lpadding is counted to _wLeft
for (; _lineStart < _lineEnd; ++_lineStart) {
if (_t->_text.at(_lineStart) != QChar::Space) {
break;
}
}/**/
for (; _lineEnd > _lineStart; --_lineEnd) {
QChar ch = _t->_text.at(_lineEnd - 1);
if ((ch != QChar::Space || _lineEnd == _lineStart + 1) && ch != QChar::LineFeed) {
break;
}
}/**/
if (_lineEnd == _lineStart && !elidedLine) return true;
if (trimmedLineEnd == _lineStart && !elidedLine) return true;
initParagraphBidi(); // if was not inited
int blockIndex = _lineStartBlock;
ITextBlock *currentBlock = _t->_blocks[blockIndex];
ITextBlock *nextBlock = (++blockIndex < _blocksSize) ? _t->_blocks[blockIndex] : 0;
int32 delta = (currentBlock->from() < _lineStart ? qMin(_lineStart - currentBlock->from(), 2) : 0);
_localFrom = _lineStart - delta;
int32 lineEnd = (_endBlock && _endBlock->from() < _lineEnd && !elidedLine) ? qMin(uint16(_lineEnd + 2), _blockEnd(_t, _endBlockIter, _end)) : _lineEnd;
QString lineText = _t->_text.mid(_localFrom, lineEnd - _localFrom);
int32 lineStart = delta, lineLength = _lineEnd - _lineStart;
if (elidedLine) prepareElidedLine(lineText, lineStart, lineLength, _endBlock);
if (!elidedLine) initParagraphBidi(); // if was not inited
_f = _t->_font;
QStackTextEngine engine(lineText, _f->f);
@@ -1202,7 +1295,7 @@ public:
}
if (si.analysis.flags == QScriptAnalysis::Object) {
if (_type == TextBlockEmoji || _type == TextBlockSkip) {
si.width = currentBlock->f_width() + (nextBlock == _endBlock && (!nextBlock || nextBlock->from() >= _lineEnd) ? 0 : currentBlock->f_rpadding());
si.width = currentBlock->f_width() + (nextBlock == _endBlock && (!nextBlock || nextBlock->from() >= trimmedLineEnd) ? 0 : currentBlock->f_rpadding());
}
}
}
@@ -1250,8 +1343,8 @@ public:
*_getSymbolAfter = false;
*_getSymbolUpon = false;
} else {
*_getSymbol = (_lineEnd > _lineStart) ? (_lineEnd - 1) : _lineStart;
*_getSymbolAfter = (_lineEnd > _lineStart) ? true : false;
*_getSymbol = (trimmedLineEnd > _lineStart) ? (trimmedLineEnd - 1) : _lineStart;
*_getSymbolAfter = (trimmedLineEnd > _lineStart) ? true : false;
*_getSymbolUpon = false;
}
return false;
@@ -1292,15 +1385,15 @@ public:
const QChar *chFrom = _str + currentBlock->from(), *chTo = chFrom + ((nextBlock ? nextBlock->from() : _t->_text.size()) - currentBlock->from());
if (_localFrom + si.position >= _selectedFrom) { // could be without space
if (chTo == chFrom || (chTo - 1)->unicode() != QChar::Space || _selectedTo >= (chTo - _str)) {
_p->fillRect(QRectF(x.toReal(), _y + _yDelta, si.width.toReal(), _fontHeight), _textStyle->selectBG->b);
_p->fillRect(QRectF(x.toReal(), _y + _yDelta, si.width.toReal(), _fontHeight), _textStyle->selectBg->b);
} else { // or with space
_p->fillRect(QRectF(glyphX.toReal(), _y + _yDelta, currentBlock->f_width().toReal(), _fontHeight), _textStyle->selectBG->b);
_p->fillRect(QRectF(glyphX.toReal(), _y + _yDelta, currentBlock->f_width().toReal(), _fontHeight), _textStyle->selectBg->b);
}
} else if (chTo > chFrom && (chTo - 1)->unicode() == QChar::Space && (chTo - 1 - _str) >= _selectedFrom) {
if (rtl) { // rtl space only
_p->fillRect(QRectF(x.toReal(), _y + _yDelta, (glyphX - x).toReal(), _fontHeight), _textStyle->selectBG->b);
_p->fillRect(QRectF(x.toReal(), _y + _yDelta, (glyphX - x).toReal(), _fontHeight), _textStyle->selectBg->b);
} else { // ltr space only
_p->fillRect(QRectF((x + currentBlock->f_width()).toReal(), _y + _yDelta, (si.width - currentBlock->f_width()).toReal(), _fontHeight), _textStyle->selectBG->b);
_p->fillRect(QRectF((x + currentBlock->f_width()).toReal(), _y + _yDelta, (si.width - currentBlock->f_width()).toReal(), _fontHeight), _textStyle->selectBg->b);
}
}
}
@@ -1426,7 +1519,7 @@ public:
}
}
if (rtl) selX = x + itemWidth - (selX - x) - selWidth;
_p->fillRect(QRectF(selX.toReal(), _y + _yDelta, selWidth.toReal(), _fontHeight), _textStyle->selectBG->b);
_p->fillRect(QRectF(selX.toReal(), _y + _yDelta, selWidth.toReal(), _fontHeight), _textStyle->selectBg->b);
}
_p->drawTextItem(QPointF(x.toReal(), textY), gf);
@@ -1591,25 +1684,36 @@ public:
}
}
style::font applyFlags(int32 flags, const style::font &f) {
style::font result = f;
if (flags & TextBlockBold) result = result->bold();
if (flags & TextBlockItalic) result = result->italic();
if (flags & TextBlockUnderline) result = result->underline();
return result;
}
void eSetFont(ITextBlock *block) {
style::font newFont = _t->_font;
int flags = block->flags();
if (!flags && block->lnkIndex()) {
if (flags) {
newFont = applyFlags(flags, _t->_font);
}
if (block->lnkIndex()) {
const TextLinkPtr &l(_t->_links.at(block->lnkIndex() - 1));
if (l == _overLnk) {
if (l == _downLnk || !_downLnk) {
flags = _textStyle->lnkOverFlags->flags();
if (_t->_font != _textStyle->lnkOverFlags) newFont = _textStyle->lnkOverFlags;
} else {
flags = _textStyle->lnkFlags->flags();
if (_t->_font != _textStyle->lnkFlags) newFont = _textStyle->lnkFlags;
}
} else {
flags = _textStyle->lnkFlags->flags();
if (_t->_font != _textStyle->lnkFlags) newFont = _textStyle->lnkFlags;
}
}
if (flags & TextBlockBold) newFont = newFont->bold();
if (flags & TextBlockItalic) newFont = newFont->italic();
if (flags & TextBlockUnderline) newFont = newFont->underline();
if (newFont != _f) {
if (newFont->family() == _t->_font->family()) {
newFont = applyFlags(flags | newFont->flags(), _t->_font);
}
_f = newFont;
_e->fnt = _f->f;
_e->resetFontEngineCache();
@@ -2243,6 +2347,21 @@ _startDir(other._startDir)
}
}
Text &Text::operator=(const Text &other) {
_minResizeWidth = other._minResizeWidth;
_maxWidth = other._maxWidth;
_minHeight = other._minHeight;
_text = other._text;
_font = other._font;
_blocks = TextBlocks(other._blocks.size());
_links = other._links;
_startDir = other._startDir;
for (int32 i = 0, l = _blocks.size(); i < l; ++i) {
_blocks[i] = other._blocks.at(i)->clone();
}
return *this;
}
void Text::setText(style::font font, const QString &text, const TextParseOptions &options) {
if (!_textStyle) _initDefault();
_font = font;
@@ -2250,9 +2369,13 @@ void Text::setText(style::font font, const QString &text, const TextParseOptions
{
TextParser parser(this, text, options);
}
recountNaturalSize(true, options.dir);
}
void Text::recountNaturalSize(bool initial, Qt::LayoutDirection optionsDir) {
NewlineBlock *lastNewline = 0;
_maxWidth = _minHeight = 0;
int32 lineHeight = 0;
int32 result = 0, lastNewlineStart = 0;
QFixed _width = 0, last_rBearing = 0, last_rPadding = 0;
@@ -2264,14 +2387,16 @@ void Text::setText(style::font font, const QString &text, const TextParseOptions
if (_btype == TextBlockNewline) {
if (!lineHeight) lineHeight = blockHeight;
Qt::LayoutDirection dir = options.dir;
if (dir == Qt::LayoutDirectionAuto) {
dir = TextParser::stringDirection(_text, lastNewlineStart, b->from());
}
if (lastNewline) {
lastNewline->_nextDir = dir;
} else {
_startDir = dir;
if (initial) {
Qt::LayoutDirection dir = optionsDir;
if (dir == Qt::LayoutDirectionAuto) {
dir = TextParser::stringDirection(_text, lastNewlineStart, b->from());
}
if (lastNewline) {
lastNewline->_nextDir = dir;
} else {
_startDir = dir;
}
}
lastNewlineStart = b->from();
lastNewline = static_cast<NewlineBlock*>(b);
@@ -2295,14 +2420,16 @@ void Text::setText(style::font font, const QString &text, const TextParseOptions
last_rPadding = b->f_rpadding();
continue;
}
Qt::LayoutDirection dir = options.dir;
if (dir == Qt::LayoutDirectionAuto) {
dir = TextParser::stringDirection(_text, lastNewlineStart, _text.size());
}
if (lastNewline) {
lastNewline->_nextDir = dir;
} else {
_startDir = dir;
if (initial) {
Qt::LayoutDirection dir = optionsDir;
if (dir == Qt::LayoutDirectionAuto) {
dir = TextParser::stringDirection(_text, lastNewlineStart, _text.size());
}
if (lastNewline) {
lastNewline->_nextDir = dir;
} else {
_startDir = dir;
}
}
if (_width > 0) {
if (!lineHeight) lineHeight = _blockHeight(_blocks.back(), _font);
@@ -2313,6 +2440,16 @@ void Text::setText(style::font font, const QString &text, const TextParseOptions
}
}
void Text::setMarkedText(style::font font, const QString &text, const LinksInText &links, const TextParseOptions &options) {
if (!_textStyle) _initDefault();
_font = font;
clean();
{
TextParser parser(this, text, links, options);
}
recountNaturalSize(true, options.dir);
}
void Text::setRichText(style::font font, const QString &text, TextParseOptions options, const TextCustomTagsMap &custom) {
QString parsed;
parsed.reserve(text.size());
@@ -2400,6 +2537,82 @@ bool Text::hasLinks() const {
return !_links.isEmpty();
}
void Text::setSkipBlock(int32 width, int32 height) {
if (!_blocks.isEmpty() && _blocks.back()->type() == TextBlockSkip) {
SkipBlock *block = static_cast<SkipBlock*>(_blocks.back());
if (block->width() == width && block->height() == height) return;
_text.resize(block->from());
_blocks.pop_back();
}
_text.push_back('_');
_blocks.push_back(new SkipBlock(_font, _text, _text.size() - 1, width, height, 0));
recountNaturalSize(false);
}
void Text::removeSkipBlock() {
if (!_blocks.isEmpty() && _blocks.back()->type() == TextBlockSkip) {
_text.resize(_blocks.back()->from());
_blocks.pop_back();
recountNaturalSize(false);
}
}
LinksInText Text::calcLinksInText() const {
LinksInText result;
int32 lnkFrom = 0, lnkIndex = 0, offset = 0;
for (TextBlocks::const_iterator i = _blocks.cbegin(), e = _blocks.cend(); true; ++i) {
int32 blockLnkIndex = (i == e) ? 0 : (*i)->lnkIndex();
int32 blockFrom = (i == e) ? _text.size() : (*i)->from();
if (blockLnkIndex != lnkIndex) {
if (lnkIndex) { // write link
const TextLinkPtr &lnk(_links.at(lnkIndex - 1));
const QString &url(lnk ? lnk->text() : QString());
int32 rangeFrom = lnkFrom, rangeTo = blockFrom;
if (rangeTo > rangeFrom) {
QStringRef r = _text.midRef(rangeFrom, rangeTo - rangeFrom);
if (url.isEmpty()) {
offset += r.size();
} else {
QUrl u(url);
if (r.size() <= 3 || _text.midRef(lnkFrom, r.size() - 3) == (u.isValid() ? u.toDisplayString() : url).midRef(0, r.size() - 3)) { // same link
if (url.at(0) == '@') {
result.push_back(LinkInText(LinkInTextMention, offset, url.size()));
} else if (url.at(0) == '#') {
result.push_back(LinkInText(LinkInTextHashtag, offset, url.size()));
} else if (url.at(0) == '/') {
result.push_back(LinkInText(LinkInTextBotCommand, offset, url.size()));
} else if (url.indexOf('@') > 0 && url.indexOf('/') <= 0) {
result.push_back(LinkInText(LinkInTextEmail, offset, url.size()));
} else {
result.push_back(LinkInText(LinkInTextUrl, offset, url.size()));
}
offset += url.size();
} else {
result.push_back(LinkInText(LinkInTextCustomUrl, offset, r.size(), url));
offset += r.size();
}
}
}
}
lnkIndex = blockLnkIndex;
lnkFrom = blockFrom;
}
if (i == e) break;
TextBlockType type = (*i)->type();
if (type == TextBlockSkip) continue;
if (!blockLnkIndex) {
int32 rangeFrom = (*i)->from(), rangeTo = uint16((*i)->from() + TextPainter::_blockLength(this, i, e));
if (rangeTo > rangeFrom) {
offset += rangeTo - rangeFrom;
}
}
}
return result;
}
int32 Text::countHeight(int32 w) const {
QFixed width = w;
if (width < _minResizeWidth) width = _minResizeWidth;
@@ -3986,16 +4199,16 @@ QString textSearchKey(const QString &text) {
bool textSplit(QString &sendingText, QString &leftText, int32 limit) {
if (leftText.isEmpty() || !limit) return false;
LinkRanges lnkRanges = textParseLinks(leftText, TextParseLinks | TextParseMentions | TextParseHashtags);
int32 currentLink = 0, lnkCount = lnkRanges.size();
LinksInText links = textParseLinks(leftText, TextParseLinks | TextParseMentions | TextParseHashtags);
int32 currentLink = 0, lnkCount = links.size();
int32 s = 0, half = limit / 2, goodLevel = 0;
for (const QChar *start = leftText.constData(), *ch = start, *end = leftText.constEnd(), *good = ch; ch != end; ++ch, ++s) {
while (currentLink < lnkCount && ch >= lnkRanges[currentLink].from + lnkRanges[currentLink].len) {
while (currentLink < lnkCount && ch >= start + links[currentLink].offset + links[currentLink].length) {
++currentLink;
}
bool inLink = (currentLink < lnkCount) && (ch > lnkRanges[currentLink].from) && (ch < lnkRanges[currentLink].from + lnkRanges[currentLink].len);
bool inLink = (currentLink < lnkCount) && (ch > start + links[currentLink].offset) && (ch < start + links[currentLink].offset + links[currentLink].length);
if (s > half) {
if (inLink) {
if (!goodLevel) good = ch;
@@ -4053,10 +4266,12 @@ bool textSplit(QString &sendingText, QString &leftText, int32 limit) {
return true;
}
LinkRanges textParseLinks(const QString &text, int32 flags, bool rich) { // some code is duplicated in flattextarea.cpp!
LinkRanges lnkRanges;
LinksInText textParseLinks(const QString &text, int32 flags, bool rich) { // some code is duplicated in flattextarea.cpp!
LinksInText result;
bool withHashtags = (flags & TextParseHashtags), withMentions = (flags & TextParseMentions);
bool withHashtags = (flags & TextParseHashtags);
bool withMentions = (flags & TextParseMentions);
bool withBotCommands = (flags & TextParseBotCommands);
initLinkSets();
int32 len = text.size(), nextCmd = rich ? 0 : len;
@@ -4073,8 +4288,10 @@ LinkRanges textParseLinks(const QString &text, int32 flags, bool rich) { // some
QRegularExpressionMatch mExplicitDomain = _reExplicitDomain.match(text, matchOffset);
QRegularExpressionMatch mHashtag = withHashtags ? _reHashtag.match(text, matchOffset) : QRegularExpressionMatch();
QRegularExpressionMatch mMention = withMentions ? _reMention.match(text, qMax(mentionSkip, matchOffset)) : QRegularExpressionMatch();
QRegularExpressionMatch mBotCommand = withBotCommands ? _reBotCommand.match(text, matchOffset) : QRegularExpressionMatch();
LinkRange link;
LinkInTextType lnkType = LinkInTextUrl;
int32 lnkOffset = 0, lnkLength = 0;
int32 domainOffset = mDomain.hasMatch() ? mDomain.capturedStart() : INT_MAX,
domainEnd = mDomain.hasMatch() ? mDomain.capturedEnd() : INT_MAX,
explicitDomainOffset = mExplicitDomain.hasMatch() ? mExplicitDomain.capturedStart() : INT_MAX,
@@ -4082,7 +4299,9 @@ LinkRanges textParseLinks(const QString &text, int32 flags, bool rich) { // some
hashtagOffset = mHashtag.hasMatch() ? mHashtag.capturedStart() : INT_MAX,
hashtagEnd = mHashtag.hasMatch() ? mHashtag.capturedEnd() : INT_MAX,
mentionOffset = mMention.hasMatch() ? mMention.capturedStart() : INT_MAX,
mentionEnd = mMention.hasMatch() ? mMention.capturedEnd() : INT_MAX;
mentionEnd = mMention.hasMatch() ? mMention.capturedEnd() : INT_MAX,
botCommandOffset = mBotCommand.hasMatch() ? mBotCommand.capturedStart() : INT_MAX,
botCommandEnd = mBotCommand.hasMatch() ? mBotCommand.capturedEnd() : INT_MAX;
if (mHashtag.hasMatch()) {
if (!mHashtag.capturedRef(1).isEmpty()) {
++hashtagOffset;
@@ -4112,14 +4331,24 @@ LinkRanges textParseLinks(const QString &text, int32 flags, bool rich) { // some
break;
}
}
if (!mMention.hasMatch() && !mDomain.hasMatch() && !mExplicitDomain.hasMatch() && !mHashtag.hasMatch()) break;
if (mBotCommand.hasMatch()) {
if (!mBotCommand.capturedRef(1).isEmpty()) {
++botCommandOffset;
}
if (!mBotCommand.capturedRef(3).isEmpty()) {
--botCommandEnd;
}
}
if (!mDomain.hasMatch() && !mExplicitDomain.hasMatch() && !mHashtag.hasMatch() && !mMention.hasMatch() && !mBotCommand.hasMatch()) {
break;
}
if (explicitDomainOffset < domainOffset) {
domainOffset = explicitDomainOffset;
domainEnd = explicitDomainEnd;
mDomain = mExplicitDomain;
}
if (mentionOffset < hashtagOffset && mentionOffset < domainOffset) {
if (mentionOffset < hashtagOffset && mentionOffset < domainOffset && mentionOffset < botCommandOffset) {
if (mentionOffset > nextCmd) {
const QChar *after = textSkipCommand(start + nextCmd, start + len);
if (after > start + nextCmd && mentionOffset < (after - start)) {
@@ -4127,10 +4356,10 @@ LinkRanges textParseLinks(const QString &text, int32 flags, bool rich) { // some
continue;
}
}
link.from = start + mentionOffset;
link.len = start + mentionEnd - link.from;
} else if (hashtagOffset < domainOffset) {
lnkType = LinkInTextMention;
lnkOffset = mentionOffset;
lnkLength = mentionEnd - mentionOffset;
} else if (hashtagOffset < domainOffset && hashtagOffset < botCommandOffset) {
if (hashtagOffset > nextCmd) {
const QChar *after = textSkipCommand(start + nextCmd, start + len);
if (after > start + nextCmd && hashtagOffset < (after - start)) {
@@ -4139,8 +4368,21 @@ LinkRanges textParseLinks(const QString &text, int32 flags, bool rich) { // some
}
}
link.from = start + hashtagOffset;
link.len = start + hashtagEnd - link.from;
lnkType = LinkInTextHashtag;
lnkOffset = hashtagOffset;
lnkLength = hashtagEnd - hashtagOffset;
} else if (botCommandOffset < domainOffset) {
if (botCommandOffset > nextCmd) {
const QChar *after = textSkipCommand(start + nextCmd, start + len);
if (after > start + nextCmd && botCommandOffset < (after - start)) {
nextCmd = offset = matchOffset = after - start;
continue;
}
}
lnkType = LinkInTextBotCommand;
lnkOffset = botCommandOffset;
lnkLength = botCommandEnd - botCommandOffset;
} else {
if (domainOffset > nextCmd) {
const QChar *after = textSkipCommand(start + nextCmd, start + len);
@@ -4164,16 +4406,17 @@ LinkRanges textParseLinks(const QString &text, int32 flags, bool rich) { // some
if (mailOffset < offset) {
mailOffset = offset;
}
link.from = start + mailOffset;
link.len = domainEnd - mailOffset;
lnkType = LinkInTextEmail;
lnkOffset = mailOffset;
lnkLength = domainEnd - mailOffset;
}
}
if (!link.from || !link.len) {
if (lnkType == LinkInTextUrl && !lnkLength) {
if (!isProtocolValid || !isTopDomainValid) {
matchOffset = domainEnd;
continue;
}
link.from = start + domainOffset;
lnkOffset = domainOffset;
QStack<const QChar*> parenth;
const QChar *domainEnd = start + mDomain.capturedEnd(), *p = domainEnd;
@@ -4208,15 +4451,15 @@ LinkRanges textParseLinks(const QString &text, int32 flags, bool rich) { // some
continue;
}
}
link.len = p - link.from;
lnkLength = (p - start) - lnkOffset;
}
}
lnkRanges.push_back(link);
result.push_back(LinkInText(lnkType, lnkOffset, lnkLength));
offset = matchOffset = (link.from - start) + link.len;
offset = matchOffset = lnkOffset + lnkLength;
}
return lnkRanges;
return result;
}
void emojiDraw(QPainter &p, EmojiPtr e, int x, int y) {

View File

@@ -31,21 +31,65 @@ enum {
TextParseRichText = 0x004,
TextParseMentions = 0x008,
TextParseHashtags = 0x010,
TextParseBotCommands = 0x020,
TextTwitterMentions = 0x020,
TextTwitterHashtags = 0x040,
TextInstagramMentions = 0x080,
TextInstagramHashtags = 0x100,
TextTwitterMentions = 0x040,
TextTwitterHashtags = 0x080,
TextInstagramMentions = 0x100,
TextInstagramHashtags = 0x200,
};
struct LinkRange {
LinkRange() : from(0), len(0) {
enum LinkInTextType {
LinkInTextUrl,
LinkInTextCustomUrl,
LinkInTextEmail,
LinkInTextHashtag,
LinkInTextMention,
LinkInTextBotCommand,
};
struct LinkInText {
LinkInText(LinkInTextType type, int32 offset, int32 length, const QString &text = QString()) : type(type), offset(offset), length(length), text(text) {
}
const QChar *from;
int32 len;
LinkInTextType type;
int32 offset, length;
QString text;
};
typedef QVector<LinkRange> LinkRanges;
LinkRanges textParseLinks(const QString &text, int32 flags, bool rich = false);
typedef QList<LinkInText> LinksInText;
inline LinksInText linksFromMTP(const QVector<MTPMessageEntity> &entities) {
LinksInText result;
if (!entities.isEmpty()) {
result.reserve(entities.size());
for (int32 i = 0, l = entities.size(); i != l; ++i) {
const MTPMessageEntity &e(entities.at(i));
switch (e.type()) {
case mtpc_messageEntityUrl: { const MTPDmessageEntityUrl &d(e.c_messageEntityUrl()); result.push_back(LinkInText(LinkInTextUrl, d.voffset.v, d.vlength.v)); } break;
case mtpc_messageEntityTextUrl: { const MTPDmessageEntityTextUrl &d(e.c_messageEntityTextUrl()); result.push_back(LinkInText(LinkInTextCustomUrl, d.voffset.v, d.vlength.v, textClean(qs(d.vurl)))); } break;
case mtpc_messageEntityEmail: { const MTPDmessageEntityEmail &d(e.c_messageEntityEmail()); result.push_back(LinkInText(LinkInTextEmail, d.voffset.v, d.vlength.v)); } break;
case mtpc_messageEntityHashtag: { const MTPDmessageEntityHashtag &d(e.c_messageEntityHashtag()); result.push_back(LinkInText(LinkInTextHashtag, d.voffset.v, d.vlength.v)); } break;
case mtpc_messageEntityMention: { const MTPDmessageEntityMention &d(e.c_messageEntityMention()); result.push_back(LinkInText(LinkInTextMention, d.voffset.v, d.vlength.v)); } break;
case mtpc_messageEntityBotCommand: { const MTPDmessageEntityBotCommand &d(e.c_messageEntityBotCommand()); result.push_back(LinkInText(LinkInTextBotCommand, d.voffset.v, d.vlength.v)); } break;
}
}
}
return result;
}
inline MTPVector<MTPMessageEntity> linksToMTP(const LinksInText &links) {
MTPVector<MTPMessageEntity> result(MTP_vector<MTPMessageEntity>(0));
QVector<MTPMessageEntity> &v(result._vector().v);
for (int32 i = 0, s = links.size(); i != s; ++i) {
const LinkInText &l(links.at(i));
switch (l.type) {
case LinkInTextUrl: v.push_back(MTP_messageEntityUrl(MTP_int(l.offset), MTP_int(l.length))); break;
case LinkInTextCustomUrl: v.push_back(MTP_messageEntityTextUrl(MTP_int(l.offset), MTP_int(l.length), MTP_string(l.text))); break;
case LinkInTextEmail: v.push_back(MTP_messageEntityEmail(MTP_int(l.offset), MTP_int(l.length))); break;
case LinkInTextHashtag: v.push_back(MTP_messageEntityHashtag(MTP_int(l.offset), MTP_int(l.length))); break;
case LinkInTextMention: v.push_back(MTP_messageEntityMention(MTP_int(l.offset), MTP_int(l.length))); break;
case LinkInTextBotCommand: v.push_back(MTP_messageEntityBotCommand(MTP_int(l.offset), MTP_int(l.length))); break;
}
}
return result;
}
LinksInText textParseLinks(const QString &text, int32 flags, bool rich = false);
#include "gui/emoji_config.h"
@@ -258,13 +302,23 @@ public:
virtual QString encoded() const {
return QString();
}
virtual const QLatin1String &type() const = 0;
virtual ~ITextLink() {
}
};
#define TEXT_LINK_CLASS(ClassName) public: \
const QLatin1String &type() const { \
static const QLatin1String _type(qstr(#ClassName)); \
return _type; \
}
typedef QSharedPointer<ITextLink> TextLinkPtr;
class TextLink : public ITextLink {
TEXT_LINK_CLASS(TextLink)
public:
TextLink(const QString &url, bool fullDisplayed = true) : _url(url), _fullDisplayed(fullDisplayed) {
@@ -288,7 +342,7 @@ public:
QString encoded() const {
QUrl u(_url), good(u.isValid() ? u.toEncoded() : QString());
QString result(good.isValid() ? good.toEncoded() : _url);
QString result(good.isValid() ? QString::fromUtf8(good.toEncoded()) : _url);
if (!QRegularExpression(qsl("^[a-zA-Z]+://")).match(result).hasMatch()) { // no protocol
return qsl("http://") + result;
@@ -303,7 +357,17 @@ private:
};
class CustomTextLink : public TextLink {
public:
CustomTextLink(const QString &url) : TextLink(url, false) {
}
void onClick(Qt::MouseButton button) const;
};
class EmailLink : public ITextLink {
TEXT_LINK_CLASS(EmailLink)
public:
EmailLink(const QString &email) : _email(email) {
@@ -313,11 +377,7 @@ public:
return _email;
}
void onClick(Qt::MouseButton button) const {
if (button == Qt::LeftButton || button == Qt::MiddleButton) {
QDesktopServices::openUrl(qsl("mailto:") + _email);
}
}
void onClick(Qt::MouseButton button) const;
const QString &readable() const {
return _email;
@@ -334,6 +394,8 @@ private:
};
class MentionLink : public ITextLink {
TEXT_LINK_CLASS(MentionLink)
public:
MentionLink(const QString &tag) : _tag(tag) {
@@ -360,6 +422,8 @@ private:
};
class HashtagLink : public ITextLink {
TEXT_LINK_CLASS(HashtagLink)
public:
HashtagLink(const QString &tag) : _tag(tag) {
@@ -385,6 +449,34 @@ private:
};
class BotCommandLink : public ITextLink {
TEXT_LINK_CLASS(BotCommandLink)
public:
BotCommandLink(const QString &cmd) : _cmd(cmd) {
}
const QString &text() const {
return _cmd;
}
void onClick(Qt::MouseButton button) const;
const QString &readable() const {
return _cmd;
}
QString encoded() const {
return _cmd;
}
private:
QString _cmd;
};
static const QChar TextCommand(0x0010);
enum TextCommands {
TextCommandBold = 0x01,
@@ -408,8 +500,7 @@ struct TextParseOptions {
int32 maxh;
Qt::LayoutDirection dir;
};
extern const TextParseOptions _defaultOptions;
extern const TextParseOptions _textPlainOptions;
extern const TextParseOptions _defaultOptions, _textPlainOptions;
enum TextSelectType {
TextSelectLetters = 0x01,
@@ -426,14 +517,23 @@ public:
Text(int32 minResizeWidth = QFIXED_MAX);
Text(style::font font, const QString &text, const TextParseOptions &options = _defaultOptions, int32 minResizeWidth = QFIXED_MAX, bool richText = false);
Text(const Text &other);
Text &operator=(const Text &other);
int32 countHeight(int32 width) const;
void setText(style::font font, const QString &text, const TextParseOptions &options = _defaultOptions);
void setRichText(style::font font, const QString &text, TextParseOptions options = _defaultOptions, const TextCustomTagsMap &custom = TextCustomTagsMap());
void setMarkedText(style::font font, const QString &text, const LinksInText &links, const TextParseOptions &options = _defaultOptions);
void setLink(uint16 lnkIndex, const TextLinkPtr &lnk);
bool hasLinks() const;
bool hasSkipBlock() const {
return _blocks.isEmpty() ? false : _blocks.back()->type() == TextBlockSkip;
}
void setSkipBlock(int32 width, int32 height);
void removeSkipBlock();
LinksInText calcLinksInText() const;
int32 maxWidth() const {
return _maxWidth.ceil().toInt();
}
@@ -454,6 +554,9 @@ public:
bool isEmpty() const {
return _text.isEmpty();
}
bool isNull() const {
return !_font;
}
QString original(uint16 selectedFrom = 0, uint16 selectedTo = 0xFFFF, bool expandLinks = true) const;
bool lastDots(int32 dots, int32 maxdots = 3) { // hack for typing animation
@@ -482,6 +585,8 @@ public:
private:
void recountNaturalSize(bool initial, Qt::LayoutDirection optionsDir = Qt::LayoutDirectionAuto);
QFixed _minResizeWidth, _maxWidth;
int32 _minHeight;
@@ -506,7 +611,9 @@ const QSet<int32> &validProtocols();
const QSet<int32> &validTopDomains();
const QRegularExpression &reDomain();
const QRegularExpression &reMailName();
const QRegularExpression &reMailStart();
const QRegularExpression &reHashtag();
const QRegularExpression &reBotCommand();
// text style
const style::textStyle *textstyleCurrent();
@@ -538,7 +645,7 @@ inline bool chIsSpace(QChar ch, bool rich = false) {
return ch.isSpace() || (ch < 32 && !(rich && ch == TextCommand)) || (ch == QChar::ParagraphSeparator) || (ch == QChar::LineSeparator) || (ch == QChar::ObjectReplacementCharacter) || (ch == QChar::SoftHyphen) || (ch == QChar::CarriageReturn) || (ch == QChar::Tabulation);
}
inline bool chIsBad(QChar ch) {
return (ch == 0) || (ch >= 8232 && ch < 8239) || (ch >= 65024 && ch < 65040 && ch != 65039) || (ch >= 127 && ch < 160 && ch != 156);
return (ch == 0) || (ch >= 8232 && ch < 8237) || (ch >= 65024 && ch < 65040 && ch != 65039) || (ch >= 127 && ch < 160 && ch != 156);
}
inline bool chIsTrimmed(QChar ch, bool rich = false) {
return (!rich || ch != TextCommand) && (chIsSpace(ch) || chIsBad(ch));

View File

@@ -34,12 +34,16 @@ namespace {
}
}
void myEnsureResized(QWidget *target) {
if (target && (target->testAttribute(Qt::WA_PendingResizeEvent) || !target->testAttribute(Qt::WA_WState_Created))) {
_sendResizeEvents(target);
}
}
QPixmap myGrab(QWidget *target, const QRect &rect) {
if (!cRetina()) return target->grab(rect);
if (target->testAttribute(Qt::WA_PendingResizeEvent) || !target->testAttribute(Qt::WA_WState_Created)) {
_sendResizeEvents(target);
}
myEnsureResized(target);
qreal dpr = App::app()->devicePixelRatio();
QPixmap result(rect.size() * dpr);

View File

@@ -17,20 +17,6 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org
*/
#pragma once
class Widget : public QWidget {
public:
Widget(QWidget *parent = 0) : QWidget(parent) {
}
void moveToLeft(int x, int y, int outerw) {
move(rtl() ? (outerw - x - width()) : x, y);
}
void moveToRight(int x, int y, int outerw) {
move(rtl() ? x : (outerw - x - width()), y);
}
};
namespace App {
const QPixmap &sprite();
}
@@ -56,6 +42,12 @@ public:
void drawPixmapLeft(const QPoint &p, int outerw, const QPixmap &pix, const QRect &from) {
return drawPixmapLeft(p.x(), p.y(), outerw, pix, from);
}
void drawPixmapLeft(int x, int y, int w, int h, int outerw, const QPixmap &pix, const QRect &from) {
drawPixmap(QRect(rtl() ? (outerw - x - w) : x, y, w, h), pix, from);
}
void drawPixmapLeft(const QRect &r, int outerw, const QPixmap &pix, const QRect &from) {
return drawPixmapLeft(r.x(), r.y(), r.width(), r.height(), outerw, pix, from);
}
void drawPixmapLeft(int x, int y, int outerw, const QPixmap &pix) {
drawPixmap(QPoint(rtl() ? (outerw - x - (pix.width() / pix.devicePixelRatio())) : x, y), pix);
}
@@ -68,6 +60,12 @@ public:
void drawPixmapRight(const QPoint &p, int outerw, const QPixmap &pix, const QRect &from) {
return drawPixmapRight(p.x(), p.y(), outerw, pix, from);
}
void drawPixmapRight(int x, int y, int w, int h, int outerw, const QPixmap &pix, const QRect &from) {
drawPixmap(QRect(rtl() ? x : (outerw - x - w), y, w, h), pix, from);
}
void drawPixmapRight(const QRect &r, int outerw, const QPixmap &pix, const QRect &from) {
return drawPixmapRight(r.x(), r.y(), r.width(), r.height(), outerw, pix, from);
}
void drawPixmapRight(int x, int y, int outerw, const QPixmap &pix) {
drawPixmap(QPoint(rtl() ? x : (outerw - x - (pix.width() / pix.devicePixelRatio())), y), pix);
}
@@ -86,23 +84,41 @@ public:
void drawSpriteLeft(const QPoint &p, int outerw, const style::sprite &sprite) {
return drawPixmapLeft(p, outerw, App::sprite(), sprite);
}
void drawSpriteLeft(int x, int y, int w, int h, int outerw, const style::sprite &sprite) {
return drawPixmapLeft(x, y, w, h, outerw, App::sprite(), sprite);
}
void drawSpriteLeft(const QRect &r, int outerw, const style::sprite &sprite) {
return drawPixmapLeft(r, outerw, App::sprite(), sprite);
}
void drawSpriteRight(int x, int y, int outerw, const style::sprite &sprite) {
return drawPixmapRight(x, y, outerw, App::sprite(), sprite);
}
void drawSpriteRight(const QPoint &p, int outerw, const style::sprite &sprite) {
return drawPixmapRight(p, outerw, App::sprite(), sprite);
}
void drawSpriteRight(int x, int y, int w, int h, int outerw, const style::sprite &sprite) {
return drawPixmapRight(x, y, w, h, outerw, App::sprite(), sprite);
}
void drawSpriteRight(const QRect &r, int outerw, const style::sprite &sprite) {
return drawPixmapRight(r, outerw, App::sprite(), sprite);
}
void drawSpriteCenter(const QRect &in, const style::sprite &sprite) {
return drawPixmap(QPoint(in.x() + (in.width() - sprite.pxWidth()) / 2, in.y() + (in.height() - sprite.pxHeight()) / 2), App::sprite(), sprite);
}
void drawSpriteCenterLeft(const QRect &in, int outerw, const style::sprite &sprite) {
return drawPixmapLeft(QPoint(in.x() + (in.width() - sprite.pxWidth()) / 2, in.y() + (in.height() - sprite.pxHeight()) / 2), outerw, App::sprite(), sprite);
}
void drawSpriteCenterRight(const QRect &in, int outerw, const style::sprite &sprite) {
return drawPixmapRight(QPoint(in.x() + (in.width() - sprite.pxWidth()) / 2, in.y() + (in.height() - sprite.pxHeight()) / 2), outerw, App::sprite(), sprite);
}
};
class TWidget : public Widget {
class TWidget : public QWidget {
Q_OBJECT
public:
TWidget(QWidget *parent = 0) : Widget(parent) {
TWidget(QWidget *parent = 0) : QWidget(parent) {
}
TWidget *tparent() {
return qobject_cast<TWidget*>(parentWidget());
@@ -116,6 +132,27 @@ public:
virtual void enterFromChildEvent(QEvent *e) { // e -- from leaveEvent() of child TWidget
}
void moveToLeft(int x, int y, int outerw) {
move(rtl() ? (outerw - x - width()) : x, y);
}
void moveToRight(int x, int y, int outerw) {
move(rtl() ? x : (outerw - x - width()), y);
}
QPoint myrtlpoint(int x, int y) const {
return rtlpoint(x, y, width());
}
QPoint myrtlpoint(const QPoint p) const {
return rtlpoint(p, width());
}
QRect myrtlrect(int x, int y, int w, int h) const {
return rtlrect(x, y, w, h, width());
}
QRect myrtlrect(const QRect &r) {
return rtlrect(r, width());
}
void rtlupdate(const QRect &r) {
update(myrtlrect(r));
}
bool event(QEvent *e) {
return QWidget::event(e);
}
@@ -125,16 +162,17 @@ protected:
void enterEvent(QEvent *e) {
TWidget *p(tparent());
if (p) p->leaveToChildEvent(e);
return Widget::enterEvent(e);
return QWidget::enterEvent(e);
}
void leaveEvent(QEvent *e) {
TWidget *p(tparent());
if (p) p->enterFromChildEvent(e);
return Widget::leaveEvent(e);
return QWidget::leaveEvent(e);
}
private:
};
void myEnsureResized(QWidget *target);
QPixmap myGrab(QWidget *target, const QRect &rect);

File diff suppressed because it is too large Load Diff

View File

@@ -30,11 +30,10 @@ static const uint32 FullItemSel = 0xFFFFFFFF;
typedef QMap<int32, HistoryItem*> SelectedItemSet;
extern TextParseOptions _textNameOptions, _textDlgOptions;
extern TextParseOptions _textNameOptions, _textDlgOptions, _historyTextOptions, _historyBotOptions;
#include "structs.h"
struct History;
struct Histories : public QHash<PeerId, History*>, public Animated {
typedef QHash<PeerId, History*> Parent;
@@ -42,7 +41,7 @@ struct Histories : public QHash<PeerId, History*>, public Animated {
Histories() : unreadFull(0), unreadMuted(0) {
}
void regTyping(History *history, UserData *user);
void regSendAction(History *history, UserData *user, const MTPSendMessageAction &action);
bool animStep(float64 ms);
void clear();
@@ -107,6 +106,8 @@ enum MediaOverviewType {
OverviewVideos,
OverviewDocuments,
OverviewAudios,
OverviewAudioDocuments,
OverviewLinks,
OverviewCount
};
@@ -116,7 +117,7 @@ inline MediaOverviewType mediaToOverviewType(HistoryMediaType t) {
case MediaTypePhoto: return OverviewPhotos;
case MediaTypeVideo: return OverviewVideos;
case MediaTypeDocument: return OverviewDocuments;
// case MediaTypeSticker: return OverviewDocuments;
// case MediaTypeSticker: return OverviewDocuments;
case MediaTypeAudio: return OverviewAudios;
}
return OverviewCount;
@@ -128,11 +129,32 @@ inline MTPMessagesFilter typeToMediaFilter(MediaOverviewType &type) {
case OverviewVideos: return MTP_inputMessagesFilterVideo();
case OverviewDocuments: return MTP_inputMessagesFilterDocument();
case OverviewAudios: return MTP_inputMessagesFilterAudio();
case OverviewAudioDocuments: return MTP_inputMessagesFilterAudioDocuments();
case OverviewLinks: return MTP_inputMessagesFilterUrl();
default: type = OverviewCount; break;
}
return MTPMessagesFilter();
}
enum SendActionType {
SendActionTyping,
SendActionRecordVideo,
SendActionUploadVideo,
SendActionRecordAudio,
SendActionUploadAudio,
SendActionUploadPhoto,
SendActionUploadFile,
SendActionChooseLocation,
SendActionChooseContact,
};
struct SendAction {
SendAction(SendActionType type, uint64 until, int32 progress = 0) : type(type), until(until), progress(progress) {
}
SendActionType type;
uint64 until;
int32 progress;
};
class HistoryMedia;
class HistoryMessage;
class HistoryUnreadBar;
@@ -163,6 +185,8 @@ struct History : public QList<HistoryBlock*> {
void addToBack(const QVector<MTPMessage> &slice);
void createInitialDateBlock(const QDateTime &date);
HistoryItem *doAddToBack(HistoryBlock *to, bool newBlock, HistoryItem *adding, bool newMsg);
void addToOverview(HistoryItem *item, MediaOverviewType type);
bool addToOverviewFront(HistoryItem *item, MediaOverviewType type);
void newItemAdded(HistoryItem *item);
void unregTyping(UserData *from);
@@ -179,19 +203,18 @@ struct History : public QList<HistoryBlock*> {
void addUnreadBar();
void clearNotifications();
bool readyForWork() const; // all unread loaded or loaded around activeMsgId
bool loadedAtBottom() const; // last message is in the list
bool loadedAtTop() const; // nothing was added after loading history back
bool isReadyFor(MsgId msgId, bool check = false) const; // has messages for showing history at msgId
void getReadyFor(MsgId msgId);
void setLastMessage(HistoryItem *msg);
void fixLastMessage(bool wasAtBottom);
void loadAround(MsgId msgId);
bool canShowAround(MsgId msgId) const;
MsgId minMsgId() const;
MsgId maxMsgId() const;
int32 geomResize(int32 newWidth, int32 *ytransform = 0, bool dontRecountText = false); // return new size
int32 geomResize(int32 newWidth, int32 *ytransform = 0, HistoryItem *resizedItem = 0); // return new size
int32 width, height, msgCount, unreadCount;
int32 inboxReadTill, outboxReadTill;
HistoryItem *showFrom;
@@ -199,8 +222,8 @@ struct History : public QList<HistoryBlock*> {
PeerData *peer;
bool oldLoaded, newLoaded;
HistoryItem *last;
MsgId activeMsgId;
HistoryItem *lastMsg;
QDateTime lastMsgDate;
typedef QList<HistoryItem*> NotifyQueue;
NotifyQueue notifies;
@@ -239,8 +262,8 @@ struct History : public QList<HistoryBlock*> {
}
}
}
if (last == old) {
last = item;
if (lastMsg == old) {
lastMsg = item;
}
// showFrom can't be detached
}
@@ -250,8 +273,14 @@ struct History : public QList<HistoryBlock*> {
MessageCursor draftCursor;
bool draftPreviewCancelled;
int32 lastWidth, lastScrollTop;
MsgId lastShowAtMsgId;
bool mute;
bool lastKeyboardInited, lastKeyboardUsed;
MsgId lastKeyboardId;
PeerId lastKeyboardFrom;
void clearLastKeyboard();
mtpRequestId sendRequestId;
// for dialog drawing
@@ -269,11 +298,13 @@ struct History : public QList<HistoryBlock*> {
typedef QMap<UserData*, uint64> TypingUsers;
TypingUsers typing;
typedef QMap<UserData*, SendAction> SendActionUsers;
SendActionUsers sendActions;
QString typingStr;
Text typingText;
uint32 typingFrame;
bool updateTyping(uint64 ms = 0, uint32 dots = 0, bool force = false);
uint64 myTyping;
QMap<SendActionType, uint64> mySendActions;
typedef QList<MsgId> MediaOverview;
typedef QMap<MsgId, NullType> MediaOverviewIds;
@@ -282,11 +313,19 @@ struct History : public QList<HistoryBlock*> {
MediaOverviewIds _overviewIds[OverviewCount];
int32 _overviewCount[OverviewCount]; // -1 - not loaded, 0 - all loaded, > 0 - count, but not all loaded
void eraseFromOverview(MediaOverviewType type, MsgId msgId);
static const int32 ScrollMax = INT_MAX;
};
enum DialogsSortMode {
DialogsSortByDate,
DialogsSortByName,
DialogsSortByAdd
};
struct DialogsList {
DialogsList(bool sortByName) : begin(&last), end(&last), byName(sortByName), count(0), current(&last) {
DialogsList(DialogsSortMode sortMode) : begin(&last), end(&last), sortMode(sortMode), count(0), current(&last) {
}
void adjustCurrent(int32 y, int32 h) const {
@@ -324,10 +363,10 @@ struct DialogsList {
end->pos++;
if (begin == end) {
begin = current = result;
if (!byName && updatePos) history->posInDialogs = 0;
if (sortMode == DialogsSortByDate && updatePos) history->posInDialogs = 0;
} else {
end->prev->next = result;
if (!byName && updatePos) history->posInDialogs = end->prev->history->posInDialogs + 1;
if (sortMode == DialogsSortByDate && updatePos) history->posInDialogs = end->prev->history->posInDialogs + 1;
}
rowByPeer.insert(history->peer->id, result);
++count;
@@ -335,7 +374,7 @@ struct DialogsList {
}
void bringToTop(DialogRow *row, bool updatePos = true) {
if (!byName && updatePos && row != begin) {
if (sortMode == DialogsSortByDate && updatePos && row != begin) {
row->history->posInDialogs = begin->history->posInDialogs - 1;
}
insertBefore(row, begin);
@@ -390,7 +429,7 @@ struct DialogsList {
}
DialogRow *adjustByName(const PeerData *peer) {
if (!byName) return 0;
if (sortMode != DialogsSortByName) return 0;
RowByPeer::iterator i = rowByPeer.find(peer->id);
if (i == rowByPeer.cend()) return 0;
@@ -409,15 +448,15 @@ struct DialogsList {
}
DialogRow *addByName(History *history) {
if (!byName) return 0;
if (sortMode != DialogsSortByName) return 0;
DialogRow *row = addToEnd(history), *change = row;
const QString &peerName(history->peer->name);
while (change->prev && change->prev->history->peer->name > peerName) {
while (change->prev && change->prev->history->peer->name.compare(peerName, Qt::CaseInsensitive) > 0) {
change = change->prev;
}
if (!insertBefore(row, change)) {
while (change->next != end && change->next->history->peer->name < peerName) {
while (change->next != end && change->next->history->peer->name.compare(peerName, Qt::CaseInsensitive) < 0) {
change = change->next;
}
insertAfter(row, change);
@@ -426,7 +465,7 @@ struct DialogsList {
}
void adjustByPos(DialogRow *row) {
if (byName) return;
if (sortMode != DialogsSortByDate) return;
DialogRow *change = row;
while (change->prev && change->prev->history->posInDialogs > row->history->posInDialogs) {
@@ -441,7 +480,7 @@ struct DialogsList {
}
DialogRow *addByPos(History *history) {
if (byName) return 0;
if (sortMode != DialogsSortByDate) return 0;
DialogRow *row = addToEnd(history, false);
adjustByPos(row);
@@ -476,7 +515,7 @@ struct DialogsList {
DialogRow last;
DialogRow *begin, *end;
bool byName;
DialogsSortMode sortMode;
int32 count;
typedef QHash<PeerId, DialogRow*> RowByPeer;
@@ -486,7 +525,7 @@ struct DialogsList {
};
struct DialogsIndexed {
DialogsIndexed(bool sortByName) : byName(sortByName), list(byName) {
DialogsIndexed(DialogsSortMode sortMode) : sortMode(sortMode), list(sortMode) {
}
History::DialogLinks addToEnd(History *history) {
@@ -500,7 +539,7 @@ struct DialogsIndexed {
for (PeerData::NameFirstChars::const_iterator i = history->peer->chars.cbegin(), e = history->peer->chars.cend(); i != e; ++i) {
DialogsIndex::iterator j = index.find(*i);
if (j == index.cend()) {
j = index.insert(*i, new DialogsList(byName));
j = index.insert(*i, new DialogsList(sortMode));
}
result.insert(*i, j.value()->addToEnd(history));
}
@@ -518,7 +557,7 @@ struct DialogsIndexed {
for (PeerData::NameFirstChars::const_iterator i = history->peer->chars.cbegin(), e = history->peer->chars.cend(); i != e; ++i) {
DialogsIndex::iterator j = index.find(*i);
if (j == index.cend()) {
j = index.insert(*i, new DialogsList(byName));
j = index.insert(*i, new DialogsList(sortMode));
}
j.value()->addByName(history);
}
@@ -557,7 +596,7 @@ struct DialogsIndexed {
void clear();
bool byName;
DialogsSortMode sortMode;
DialogsList list;
typedef QMap<QChar, DialogsList*> DialogsIndex;
DialogsIndex index;
@@ -575,7 +614,7 @@ struct HistoryBlock : public QVector<HistoryItem*> {
}
void removeItem(HistoryItem *item);
int32 geomResize(int32 newWidth, int32 *ytransform, bool dontRecountText); // return new size
int32 geomResize(int32 newWidth, int32 *ytransform, HistoryItem *resizedItem); // return new size
int32 y, height;
History *history;
};
@@ -586,9 +625,6 @@ public:
HistoryElem() : _height(0), _maxw(0) {
}
virtual void initDimensions(const HistoryItem *parent = 0) = 0;
virtual int32 resize(int32 width, bool dontRecountText = false, const HistoryItem *parent = 0) = 0; // return new height
int32 height() const {
return _height;
}
@@ -626,6 +662,12 @@ class HistoryReply; // dynamic_cast optimize
class HistoryMessage; // dynamic_cast optimize
class HistoryForwarded; // dynamic_cast optimize
enum HistoryCursorState {
HistoryDefaultCursorState,
HistoryInTextCursorState,
HistoryInDateCursorState
};
class HistoryMedia;
class HistoryItem : public HistoryElem {
public:
@@ -638,7 +680,10 @@ public:
UnreadBarType
};
virtual void initDimensions() = 0;
virtual int32 resize(int32 width) = 0; // return new height
virtual void draw(QPainter &p, uint32 selection) const = 0;
History *history() {
return _history;
}
@@ -679,15 +724,21 @@ public:
void markMediaRead() {
_flags &= ~MTPDmessage_flag_media_unread;
}
bool hasReplyMarkup() const {
return _flags & MTPDmessage::flag_reply_markup;
}
bool hasTextLinks() const {
return _flags & MTPDmessage_flag_HAS_TEXT_LINKS;
}
virtual bool needCheck() const {
return true;
}
virtual bool hasPoint(int32 x, int32 y) const {
return false;
}
virtual void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y) const {
virtual void getState(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y) const {
lnk = TextLinkPtr();
inText = false;
state = HistoryDefaultCursorState;
}
virtual void getSymbol(uint16 &symbol, bool &after, bool &upon, int32 x, int32 y) const { // from text
upon = hasPoint(x, y);
@@ -705,8 +756,6 @@ public:
}
virtual void updateMedia(const MTPMessageMedia &media) {
}
virtual void updateStickerEmoji() {
}
virtual QString selectedText(uint32 selection) const {
return qsl("[-]");
@@ -731,7 +780,14 @@ public:
virtual HistoryMedia *getMedia(bool inOverview = false) const {
return 0;
}
virtual void setMedia(const MTPmessageMedia &media) {
virtual void setMedia(const MTPMessageMedia *media) {
}
virtual void setText(const QString &text, const LinksInText &links) {
}
virtual void getTextWithLinks(QString &text, LinksInText &links) {
}
virtual bool textHasLinks() {
return false;
}
virtual QString time() const {
return QString();
@@ -775,6 +831,8 @@ protected:
};
class MessageLink : public ITextLink {
TEXT_LINK_CLASS(MessageLink)
public:
MessageLink(PeerId peer, MsgId msgid) : _peer(peer), _msgid(msgid) {
}
@@ -805,14 +863,18 @@ public:
virtual const QString inDialogsText() const = 0;
virtual const QString inHistoryText() const = 0;
virtual bool hasPoint(int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const = 0;
virtual bool isDisplayed() const {
return true;
}
virtual int32 countHeight(const HistoryItem *parent, int32 width = -1) const {
return height();
}
virtual int32 resize(int32 width, bool dontRecountText = false, const HistoryItem *parent = 0) {
virtual void initDimensions(const HistoryItem *parent) = 0;
virtual int32 resize(int32 width, const HistoryItem *parent) { // return new height
w = qMin(width, _maxw);
return _height;
}
virtual void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const = 0;
virtual void getState(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const = 0;
virtual void draw(QPainter &p, const HistoryItem *parent, bool selected, int32 width = -1) const = 0;
virtual bool uploading() const {
return false;
@@ -832,10 +894,6 @@ public:
return false;
}
virtual bool updateStickerEmoji() {
return false;
}
virtual bool animating() const {
return false;
}
@@ -867,14 +925,15 @@ public:
void initDimensions(const HistoryItem *parent);
void draw(QPainter &p, const HistoryItem *parent, bool selected, int32 width = -1) const;
int32 resize(int32 width, bool dontRecountText = false, const HistoryItem *parent = 0);
int32 resize(int32 width, const HistoryItem *parent);
HistoryMediaType type() const {
return MediaTypePhoto;
}
const QString inDialogsText() const;
const QString inHistoryText() const;
const Text &captionForClone() const;
bool hasPoint(int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
void getState(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
HistoryMedia *clone() const;
PhotoData *photo() const {
@@ -906,6 +965,8 @@ private:
};
QString formatSizeText(qint64 size);
QString formatDownloadText(qint64 ready, qint64 total);
QString formatDurationText(qint64 duration);
class HistoryVideo : public HistoryMedia {
public:
@@ -914,13 +975,15 @@ public:
void initDimensions(const HistoryItem *parent);
void draw(QPainter &p, const HistoryItem *parent, bool selected, int32 width = -1) const;
int32 resize(int32 width, const HistoryItem *parent);
HistoryMediaType type() const {
return MediaTypeVideo;
}
const QString inDialogsText() const;
const QString inHistoryText() const;
bool hasPoint(int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
int32 countHeight(const HistoryItem *parent, int32 width = -1) const;
void getState(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
bool uploading() const {
return (data->status == FileUploading);
}
@@ -941,7 +1004,7 @@ private:
Text _caption;
QString _size;
int32 _thumbw, _thumbx, _thumby;
int32 _thumbw;
mutable QString _dldTextCache, _uplTextCache;
mutable int32 _dldDone, _uplDone;
@@ -960,15 +1023,21 @@ public:
const QString inDialogsText() const;
const QString inHistoryText() const;
bool hasPoint(int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
void getState(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
bool uploading() const {
return (data->status == FileUploading);
}
HistoryMedia *clone() const;
AudioData *audio() {
return data;
}
void regItem(HistoryItem *item);
void unregItem(HistoryItem *item);
void updateFrom(const MTPMessageMedia &media);
private:
AudioData *data;
TextLinkPtr _openl, _savel, _cancell;
@@ -986,7 +1055,7 @@ public:
void initDimensions(const HistoryItem *parent);
void draw(QPainter &p, const HistoryItem *parent, bool selected, int32 width = -1) const;
int32 resize(int32 width, bool dontRecountText = false, const HistoryItem *parent = 0);
int32 resize(int32 width, const HistoryItem *parent);
HistoryMediaType type() const {
return MediaTypeDocument;
}
@@ -997,7 +1066,7 @@ public:
bool uploading() const {
return (data->status == FileUploading);
}
void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
void getState(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
HistoryMedia *clone() const;
DocumentData *document() {
@@ -1014,6 +1083,9 @@ public:
}
ImagePtr replyPreview();
void drawInPlaylist(QPainter &p, const HistoryItem *parent, bool selected, bool over, int32 width) const;
TextLinkPtr linkInPlaylist();
private:
DocumentData *data;
@@ -1034,7 +1106,7 @@ public:
void initDimensions(const HistoryItem *parent);
void draw(QPainter &p, const HistoryItem *parent, bool selected, int32 width = -1) const;
int32 resize(int32 width, bool dontRecountText = false, const HistoryItem *parent = 0);
int32 resize(int32 width, const HistoryItem *parent);
HistoryMediaType type() const {
return MediaTypeSticker;
}
@@ -1042,7 +1114,7 @@ public:
const QString inHistoryText() const;
bool hasPoint(int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
int32 countHeight(const HistoryItem *parent, int32 width = -1) const;
void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
void getState(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
HistoryMedia *clone() const;
DocumentData *document() {
@@ -1053,7 +1125,6 @@ public:
void unregItem(HistoryItem *item);
void updateFrom(const MTPMessageMedia &media);
bool updateStickerEmoji();
private:
@@ -1077,7 +1148,7 @@ public:
const QString inDialogsText() const;
const QString inHistoryText() const;
bool hasPoint(int32 x, int32 y, const HistoryItem *parent, int32 width) const;
void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const HistoryItem *parent, int32 width) const;
void getState(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y, const HistoryItem *parent, int32 width) const;
HistoryMedia *clone() const;
void updateFrom(const MTPMessageMedia &media);
@@ -1097,34 +1168,43 @@ public:
void initDimensions(const HistoryItem *parent);
void draw(QPainter &p, const HistoryItem *parent, bool selected, int32 width = -1) const;
int32 resize(int32 width, bool dontRecountText = false, const HistoryItem *parent = 0);
bool isDisplayed() const {
return !data->pendingTill;
}
int32 resize(int32 width, const HistoryItem *parent);
HistoryMediaType type() const {
return MediaTypeWebPage;
}
const QString inDialogsText() const;
const QString inHistoryText() const;
bool hasPoint(int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
void getState(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
HistoryMedia *clone() const;
void regItem(HistoryItem *item);
void unregItem(HistoryItem *item);
bool hasReplyPreview() const {
return data->photo && !data->photo->thumb->isNull();
return (data->photo && !data->photo->thumb->isNull()) || (data->doc && !data->doc->thumb->isNull());
}
ImagePtr replyPreview();
WebPageData *webpage() {
return data;
}
private:
WebPageData *data;
TextLinkPtr _openl, _photol;
TextLinkPtr _openl, _attachl;
bool _asArticle;
Text _title, _description;
int32 _siteNameWidth;
QString _duration;
int32 _durationWidth;
QString _duration, _docName, _docSize;
int32 _durationWidth, _docNameWidth, _docThumbWidth;
mutable QString _docDownloadTextCache;
mutable int32 _docDownloadDone;
int16 _pixw, _pixh;
};
@@ -1190,14 +1270,14 @@ public:
void initDimensions(const HistoryItem *parent);
void draw(QPainter &p, const HistoryItem *parent, bool selected, int32 width = -1) const;
int32 resize(int32 width, bool dontRecountText = false, const HistoryItem *parent = 0);
int32 resize(int32 width, const HistoryItem *parent);
HistoryMediaType type() const {
return MediaTypeImageLink;
}
const QString inDialogsText() const;
const QString inHistoryText() const;
bool hasPoint(int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
void getState(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const;
HistoryMedia *clone() const;
bool isImageLink() const {
@@ -1215,16 +1295,15 @@ class HistoryMessage : public HistoryItem {
public:
HistoryMessage(History *history, HistoryBlock *block, const MTPDmessage &msg);
HistoryMessage(History *history, HistoryBlock *block, MsgId msgId, int32 flags, QDateTime date, int32 from, const QString &msg, const MTPMessageMedia &media);
HistoryMessage(History *history, HistoryBlock *block, MsgId msgId, int32 flags, QDateTime date, int32 from, const QString &msg, HistoryMedia *media);
HistoryMessage(History *history, HistoryBlock *block, MsgId msgId, int32 flags, QDateTime date, int32 from, const QString &msg, const LinksInText &links, const MTPMessageMedia *media);
HistoryMessage(History *history, HistoryBlock *block, MsgId msgId, int32 flags, QDateTime date, int32 from, const QString &msg, const LinksInText &links, HistoryMedia *media);
HistoryMessage(History *history, HistoryBlock *block, MsgId msgId, int32 flags, QDateTime date, int32 from, DocumentData *doc);
void initTime();
void initMedia(const MTPMessageMedia &media, QString &currentText);
void initMedia(const MTPMessageMedia *media, QString &currentText);
void initMediaFromText(QString &currentText);
void initMediaFromDocument(DocumentData *doc);
void initDimensions(const HistoryItem *parent = 0);
void initDimensions(const QString &text);
void initDimensions();
void fromNameUpdated() const;
bool justMedia() const {
@@ -1236,11 +1315,11 @@ public:
void draw(QPainter &p, uint32 selection) const;
virtual void drawMessageText(QPainter &p, const QRect &trect, uint32 selection) const;
int32 resize(int32 width, bool dontRecountText = false, const HistoryItem *parent = 0);
int32 resize(int32 width);
bool hasPoint(int32 x, int32 y) const;
void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y) const;
virtual void getStateFromMessageText(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const QRect &r) const;
void getState(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y) const;
virtual void getStateFromMessageText(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y, const QRect &r) const;
void getSymbol(uint16 &symbol, bool &after, bool &upon, int32 x, int32 y) const;
uint32 adjustSelection(uint16 from, uint16 to, TextSelectType type) const {
@@ -1252,14 +1331,19 @@ public:
QString notificationText() const;
void updateMedia(const MTPMessageMedia &media) {
if (_media) _media->updateFrom(media);
if (_media) {
_media->updateFrom(media);
}
}
void updateStickerEmoji();
QString selectedText(uint32 selection) const;
LinksInText textLinks() const;
QString inDialogsText() const;
HistoryMedia *getMedia(bool inOverview = false) const;
void setMedia(const MTPmessageMedia &media);
void setMedia(const MTPMessageMedia *media);
void setText(const QString &text, const LinksInText &links);
void getTextWithLinks(QString &text, LinksInText &links);
bool textHasLinks();
QString time() const {
return _time;
@@ -1305,17 +1389,17 @@ public:
HistoryForwarded(History *history, HistoryBlock *block, const MTPDmessage &msg);
HistoryForwarded(History *history, HistoryBlock *block, MsgId id, HistoryMessage *msg);
void initDimensions(const HistoryItem *parent = 0);
void initDimensions();
void fwdNameUpdated() const;
void draw(QPainter &p, uint32 selection) const;
void drawForwardedFrom(QPainter &p, int32 x, int32 y, int32 w, bool selected) const;
void drawMessageText(QPainter &p, const QRect &trect, uint32 selection) const;
int32 resize(int32 width, bool dontRecountText = false, const HistoryItem *parent = 0);
int32 resize(int32 width);
bool hasPoint(int32 x, int32 y) const;
void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y) const;
void getStateFromMessageText(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const QRect &r) const;
void getForwardedState(TextLinkPtr &lnk, bool &inText, int32 x, int32 w) const;
void getState(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y) const;
void getStateFromMessageText(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y, const QRect &r) const;
void getForwardedState(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 w) const;
void getSymbol(uint16 &symbol, bool &after, bool &upon, int32 x, int32 y) const;
QDateTime dateForwarded() const {
@@ -1349,7 +1433,7 @@ public:
HistoryReply(History *history, HistoryBlock *block, const MTPDmessage &msg);
HistoryReply(History *history, HistoryBlock *block, MsgId msgId, int32 flags, MsgId replyTo, QDateTime date, int32 from, DocumentData *doc);
void initDimensions(const HistoryItem *parent = 0);
void initDimensions();
bool updateReplyTo(bool force = false);
void replyToNameUpdated() const;
@@ -1364,10 +1448,10 @@ public:
void draw(QPainter &p, uint32 selection) const;
void drawReplyTo(QPainter &p, int32 x, int32 y, int32 w, bool selected, bool likeService = false) const;
void drawMessageText(QPainter &p, const QRect &trect, uint32 selection) const;
int32 resize(int32 width, bool dontRecountText = false, const HistoryItem *parent = 0);
int32 resize(int32 width);
bool hasPoint(int32 x, int32 y) const;
void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y) const;
void getStateFromMessageText(TextLinkPtr &lnk, bool &inText, int32 x, int32 y, const QRect &r) const;
void getState(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y) const;
void getStateFromMessageText(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y, const QRect &r) const;
void getSymbol(uint16 &symbol, bool &after, bool &upon, int32 x, int32 y) const;
UserData *replyTo() const {
@@ -1400,14 +1484,14 @@ class HistoryServiceMsg : public HistoryItem {
public:
HistoryServiceMsg(History *history, HistoryBlock *block, const MTPDmessageService &msg);
HistoryServiceMsg(History *history, HistoryBlock *block, MsgId msgId, QDateTime date, const QString &msg, int32 flags = 0, HistoryMedia *media = 0);
HistoryServiceMsg(History *history, HistoryBlock *block, MsgId msgId, QDateTime date, const QString &msg, int32 flags = 0, HistoryMedia *media = 0, int32 from = 0);
void initDimensions(const HistoryItem *parent = 0);
void initDimensions();
void draw(QPainter &p, uint32 selection) const;
int32 resize(int32 width, bool dontRecountText = false, const HistoryItem *parent = 0);
int32 resize(int32 width);
bool hasPoint(int32 x, int32 y) const;
void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y) const;
void getState(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y) const;
void getSymbol(uint16 &symbol, bool &after, bool &upon, int32 x, int32 y) const;
uint32 adjustSelection(uint16 from, uint16 to, TextSelectType type) const {
return _text.adjustSelection(from, to, type);
@@ -1448,9 +1532,9 @@ class HistoryDateMsg : public HistoryServiceMsg {
public:
HistoryDateMsg(History *history, HistoryBlock *block, const QDate &date);
void getState(TextLinkPtr &lnk, bool &inText, int32 x, int32 y) const {
void getState(TextLinkPtr &lnk, HistoryCursorState &state, int32 x, int32 y) const {
lnk = TextLinkPtr();
inText = false;
state = HistoryDefaultCursorState;
}
void getSymbol(uint16 &symbol, bool &after, bool &upon, int32 x, int32 y) const {
symbol = 0xFFFF;
@@ -1472,12 +1556,12 @@ public:
HistoryUnreadBar(History *history, HistoryBlock *block, int32 count, const QDateTime &date);
void initDimensions(const HistoryItem *parent = 0);
void initDimensions();
void setCount(int32 count);
void draw(QPainter &p, uint32 selection) const;
int32 resize(int32 width, bool dontRecountText = false, const HistoryItem *parent = 0);
int32 resize(int32 width);
void drawInDialog(QPainter &p, const QRect &r, bool act, const HistoryItem *&cacheFor, Text &cache) const;
QString notificationText() const;
@@ -1494,3 +1578,5 @@ protected:
QString text;
bool freezed;
};
const TextParseOptions &itemTextParseOptions(History *h, UserData *f);

File diff suppressed because it is too large Load Diff

View File

@@ -63,7 +63,7 @@ public:
void touchScrollUpdated(const QPoint &screenPos);
QPoint mapMouseToItem(QPoint p, HistoryItem *item);
int32 recountHeight(bool dontRecountText);
int32 recountHeight(HistoryItem *resizedItem);
void updateSize();
void updateMsg(const HistoryItem *msg);
@@ -79,6 +79,11 @@ public:
void itemRemoved(HistoryItem *item);
void itemReplaced(HistoryItem *oldItem, HistoryItem *newItem);
void updateBotInfo(bool recount = true);
bool wasSelectedText() const;
void setFirstLoading(bool loading);
~HistoryList();
public slots:
@@ -102,6 +107,7 @@ public slots:
void onMenuDestroy(QObject *obj);
void onTouchSelect();
void onTouchScrollTimer();
void onDragExec();
private:
@@ -113,18 +119,28 @@ private:
HistoryItem *prevItem(HistoryItem *item);
HistoryItem *nextItem(HistoryItem *item);
void updateDragSelection(HistoryItem *dragSelFrom, HistoryItem *dragSelTo, bool dragSelecting, bool force = false);
void applyDragSelection();
History *hist;
int32 ySkip;
BotInfo *botInfo;
int32 botDescWidth, botDescHeight;
QRect botDescRect;
HistoryWidget *historyWidget;
ScrollArea *scrollArea;
int32 currentBlock, currentItem;
bool _firstLoading;
QTimer linkTipTimer;
Qt::CursorShape _cursor;
typedef QMap<HistoryItem*, uint32> SelectedItems;
SelectedItems _selected;
void applyDragSelection();
void applyDragSelection(SelectedItems *toItems) const;
enum DragAction {
NoDrag = 0x00,
PrepareDrag = 0x01,
@@ -136,6 +152,7 @@ private:
TextSelectType _dragSelType;
QPoint _dragStartPos, _dragPos;
HistoryItem *_dragItem;
HistoryCursorState _dragCursorState;
uint16 _dragSymbol;
bool _dragWasInactive;
@@ -146,6 +163,7 @@ private:
HistoryItem *_dragSelFrom, *_dragSelTo;
bool _dragSelecting;
bool _wasSelectedText; // was some text selected in current drag action
bool _touchScroll, _touchSelect, _touchInProgress;
QPoint _touchStart, _touchPrevPos, _touchPos;
@@ -172,6 +190,7 @@ public:
void insertFromMimeData(const QMimeData *source);
void focusInEvent(QFocusEvent *e);
void setMaxHeight(int32 maxHeight);
public slots:
@@ -185,6 +204,99 @@ signals:
private:
HistoryWidget *history;
int32 _maxHeight;
};
class HistoryWidget;
class ReportSpamPanel : public TWidget {
Q_OBJECT
public:
ReportSpamPanel(HistoryWidget *parent);
void resizeEvent(QResizeEvent *e);
void paintEvent(QPaintEvent *e);
void setReported(bool reported);
signals:
void hideClicked();
void reportClicked();
void clearClicked();
private:
FlatButton _report, _hide;
LinkButton _clear;
};
class BotKeyboard : public QWidget {
Q_OBJECT
public:
BotKeyboard();
void paintEvent(QPaintEvent *e);
void resizeEvent(QResizeEvent *e);
void mousePressEvent(QMouseEvent *e);
void mouseMoveEvent(QMouseEvent *e);
void mouseReleaseEvent(QMouseEvent *e);
void leaveEvent(QEvent *e);
bool updateMarkup(HistoryItem *last);
bool hasMarkup() const;
bool forceReply() const;
bool hoverStep(float64 ms);
void resizeToWidth(int32 width, int32 maxOuterHeight);
bool maximizeSize() const;
bool singleUse() const;
MsgId forMsgId() const {
return _wasForMsgId;
}
public slots:
void showCommandTip();
void updateSelected();
private:
void updateStyle(int32 w = -1);
void clearSelection();
MsgId _wasForMsgId;
int32 _height, _maxOuterHeight;
bool _maximizeSize, _singleUse, _forceReply;
QTimer _cmdTipTimer;
QPoint _lastMousePos;
struct Button {
Button(const QString &str = QString()) : cmd(str), text(1), cwidth(0), hover(0), full(true) {
}
QRect rect;
QString cmd;
Text text;
int32 cwidth;
float64 hover;
bool full;
};
int32 _sel, _down;
QList<QList<Button> > _btns;
typedef QMap<int32, uint64> Animations;
Animations _animations;
Animation _hoverAnim;
const style::botKeyboardButton *_st;
};
class HistoryHider : public QWidget, public Animated {
@@ -250,7 +362,7 @@ private:
};
class HistoryWidget : public QWidget, public RPCSender, public Animated {
class HistoryWidget : public TWidget, public RPCSender {
Q_OBJECT
public:
@@ -260,6 +372,7 @@ public:
void start();
void messagesReceived(const MTPmessages_Messages &messages, mtpRequestId requestId);
void historyLoaded();
void windowShown();
bool isActive() const;
@@ -273,6 +386,8 @@ public:
void leaveEvent(QEvent *e);
void dropEvent(QDropEvent *e);
void mouseReleaseEvent(QMouseEvent *e);
void mouseMoveEvent(QMouseEvent *e);
void leaveToChildEvent(QEvent *e);
void contextMenuEvent(QContextMenuEvent *e);
void updateTopBarSelection();
@@ -284,7 +399,8 @@ public:
void loadMessages();
void loadMessagesDown();
void loadMessagesAround();
void firstLoadMessages();
void delayedShowAt(MsgId showAtMsgId);
void peerMessagesUpdated(PeerId peer);
void peerMessagesUpdated();
@@ -292,14 +408,16 @@ public:
void newUnreadMsg(History *history, HistoryItem *item);
void historyToDown(History *history);
void historyWasRead(bool force = true);
void historyCleared(History *history);
QRect historyRect() const;
void updateTyping(bool typing = true);
// void updateStickerPan();
void updateSendAction(History *history, SendActionType type, int32 progress = 0);
void cancelSendAction(History *history, SendActionType type);
void updateRecentStickers();
void stickersInstalled(uint64 setId);
void typingDone(const MTPBool &result, mtpRequestId req);
void sendActionDone(const MTPBool &result, mtpRequestId req);
void destroyData();
void uploadImage(const QImage &img, bool withText = false, const QString &source = QString());
@@ -312,26 +430,22 @@ public:
void confirmSendImage(const ReadyLocalMedia &img);
void cancelSendImage();
void checkUnreadLoaded(bool checkOnlyShow = false);
void updateControlsVisibility();
void updateOnlineDisplay(int32 x, int32 w);
void updateOnlineDisplayTimer();
// mtpRequestId onForward(const PeerId &peer, SelectedItemSet toForward);
void onShareContact(const PeerId &peer, UserData *contact);
void onSendPaths(const PeerId &peer);
void shareContact(const PeerId &peer, const QString &phone, const QString &fname, const QString &lname, MsgId replyTo, int32 userId = 0);
PeerData *peer() const;
PeerData *activePeer() const;
MsgId activeMsgId() const;
int32 lastWidth() const;
int32 lastScrollTop() const;
MsgId msgId() const;
void animShow(const QPixmap &bgAnimCache, const QPixmap &bgAnimTopBarCache, bool back = false);
bool animStep(float64 ms);
bool showStep(float64 ms);
void animStop();
void doneShow();
QPoint clampMousePosition(QPoint point);
@@ -342,7 +456,7 @@ public:
QString prepareMessage(QString text);
uint64 animActiveTime() const;
uint64 animActiveTime(MsgId id) const;
void stopAnimActive();
void fillSelectedItems(SelectedItemSet &sel, bool forDelete = true);
@@ -354,7 +468,8 @@ public:
MsgId replyToId() const;
void updateReplyTo(bool force = false);
void cancelReply();
bool lastForceReplyReplied(MsgId replyTo = -1) const;
void cancelReply(bool lastKeyboardUsed = false);
void updateForwarding(bool force = false);
void cancelForwarding(); // called by MainWidget
@@ -364,9 +479,35 @@ public:
void setReplyReturns(PeerId peer, const QList<MsgId> &replyReturns);
void calcNextReplyReturn();
bool kbWasHidden();
void setKbWasHidden();
void updatePreview();
void previewCancel();
bool recordStep(float64 ms);
bool recordingStep(float64 ms);
void stopRecording(bool send);
void onListEscapePressed();
void sendBotCommand(const QString &cmd, MsgId replyTo);
void insertBotCommand(const QString &cmd);
bool eventFilter(QObject *obj, QEvent *e);
void updateBotKeyboard();
DragState getDragState(const QMimeData *d);
void fastShowAtEnd(History *h);
void showPeerHistory(const PeerId &peer, MsgId showAtMsgId);
void clearDelayedShowAt();
void clearAllLoadRequests();
void contactsReceived();
void updateAfterDrag();
~HistoryWidget();
signals:
@@ -380,6 +521,8 @@ public slots:
void onReplyToMessage();
void onReplyForwardPreviewCancel();
void onCancelSendAction();
void onStickerPackInfo();
void onPreviewParse();
@@ -387,36 +530,52 @@ public slots:
void onPreviewTimeout();
void peerUpdated(PeerData *data);
void onPeerLoaded(PeerData *data);
void cancelTyping();
void onFullPeerUpdated(PeerData *data);
void onPhotoUploaded(MsgId msgId, const MTPInputFile &file);
void onDocumentUploaded(MsgId msgId, const MTPInputFile &file);
void onThumbDocumentUploaded(MsgId msgId, const MTPInputFile &file, const MTPInputFile &thumb);
void onAudioUploaded(MsgId msgId, const MTPInputFile &file);
void onPhotoProgress(MsgId msgId);
void onDocumentProgress(MsgId msgId);
void onAudioProgress(MsgId msgId);
void onPhotoFailed(MsgId msgId);
void onDocumentFailed(MsgId msgId);
void onAudioFailed(MsgId msgId);
void onReportSpamClicked();
void onReportSpamSure();
void onReportSpamHide();
void onReportSpamClear();
void onReportSpamClearSure();
void onListScroll();
void onHistoryToEnd();
void onSend(bool ctrlShiftEnter = false, MsgId replyTo = -1);
void onUnblock();
void onBotStart();
void onPhotoSelect();
void onDocumentSelect();
void onPhotoDrop(QDropEvent *e);
void onDocumentDrop(QDropEvent *e);
void onPhotoDrop(const QMimeData *data);
void onDocumentDrop(const QMimeData *data);
void onFilesDrop(const QMimeData *data);
void onKbToggle(bool manual = true);
void onCmdStart();
void onPhotoReady();
void onSendConfirmed();
void onSendCancelled();
void onPhotoFailed(quint64 id);
void showPeer(const PeerId &peer, MsgId msgId = 0, bool force = false, bool leaveActive = false);
void clearLoadingAround();
void activate();
void onMentionHashtagOrBotCommandInsert(QString str);
void onTextChange();
void onFieldTabbed();
void onStickerSend(DocumentData *sticker);
void onVisibleChanged();
@@ -442,6 +601,11 @@ public slots:
void onDraftSave(bool delayed = false);
void updateStickers();
void botCommandsChanged(UserData *user);
void onRecordError();
void onRecordDone(QByteArray result, qint32 samples);
void onRecordUpdate(qint16 level, qint32 samples);
private:
@@ -451,7 +615,14 @@ private:
int32 _replyToNameVersion;
IconedButton _replyForwardPreviewCancel;
void updateReplyToName();
void drawFieldBackground(QPainter &p);
void drawField(Painter &p);
void drawRecordButton(Painter &p);
void drawRecording(Painter &p);
void updateField();
DBIPeerReportSpamStatus _reportSpamStatus;
void updateReportSpamStatus();
QString _previewLinks;
WebPageData *_previewData;
@@ -473,6 +644,17 @@ private:
void addMessagesToFront(const QVector<MTPMessage> &messages);
void addMessagesToBack(const QVector<MTPMessage> &messages);
void reportSpamDone(PeerData *peer, const MTPBool &result, mtpRequestId request);
bool reportSpamFail(const RPCError &error, mtpRequestId request);
void unblockDone(PeerData *peer, const MTPBool &result);
bool unblockFail(const RPCError &error);
void blockDone(PeerData *peer, const MTPBool &result);
void countHistoryShowFrom();
void updateToEndVisibility();
void stickersGot(const MTPmessages_AllStickers &stickers);
bool stickersFailed(const RPCError &error);
@@ -482,56 +664,72 @@ private:
void setFieldText(const QString &text);
QStringList getMediasFromMime(const QMimeData *d);
DragState getDragState(const QMimeData *d);
void updateDragAreas();
bool _loadingMessages;
int32 histRequestsCount;
PeerData *histPeer;
History *_activeHist;
MTPinputPeer histInputPeer;
mtpRequestId histPreloading, histPreloadingDown;
QVector<MTPMessage> histPreload, histPreloadDown;
PeerData *_peer, *_clearPeer; // cache _peer in _clearPeer when showing clear history box
MsgId _showAtMsgId;
int32 _loadingAroundId;
mtpRequestId _loadingAroundRequest;
mtpRequestId _firstLoadRequest, _preloadRequest, _preloadDownRequest;
MsgId _delayedShowAtMsgId;
mtpRequestId _delayedShowAtRequest;
MsgId _activeAnimMsgId;
ScrollArea _scroll;
HistoryList *_list;
History *hist;
History *_history;
bool _histInited; // initial updateListSize() called
IconedButton _toHistoryEnd;
MentionsDropdown _attachMention;
FlatButton _send;
IconedButton _attachDocument, _attachPhoto, _attachEmoji;
bool isBotStart() const;
bool isBlocked() const;
bool updateCmdStartShown();
ReportSpamPanel _reportSpamPanel;
FlatButton _send, _unblock, _botStart;
mtpRequestId _unblockRequest, _reportSpamRequest;
IconedButton _attachDocument, _attachPhoto, _attachEmoji, _kbShow, _kbHide, _cmdStart;
bool _cmdStartShown;
MessageField _field;
Animation _recordAnim, _recordingAnim;
bool _recording, _inRecord, _inField, _inReply;
anim::ivalue a_recordingLevel;
int32 _recordingSamples;
anim::fvalue a_recordOver, a_recordDown;
anim::cvalue a_recordCancel;
int32 _recordCancelWidth;
bool _kbShown, _kbWasHidden;
HistoryItem *_kbReplyTo;
ScrollArea _kbScroll;
BotKeyboard _keyboard;
Dropdown _attachType;
EmojiPan _emojiPan;
// StickerPan _stickerPan;
DragState _attachDrag;
DragArea _attachDragDocument, _attachDragPhoto;
int32 _selCount; // < 0 - text selected, focus list, not _field
LocalImageLoader imageLoader;
LocalImageLoader _imageLoader;
bool _synthedTextUpdate;
int64 serviceImageCacheSize;
QImage confirmImage;
PhotoId confirmImageId;
bool confirmWithText;
QString confirmSource;
int64 _serviceImageCacheSize;
QImage _confirmImage;
PhotoId _confirmImageId;
bool _confirmWithText;
QString _confirmSource;
QString titlePeerText;
int32 titlePeerTextWidth;
bool hiderOffered;
QString _titlePeerText;
int32 _titlePeerTextWidth;
Animation _showAnim;
QPixmap _animCache, _bgAnimCache, _animTopBarCache, _bgAnimTopBarCache;
anim::ivalue a_coord, a_bgCoord;
anim::fvalue a_alpha, a_bgAlpha;
@@ -542,8 +740,8 @@ private:
QTimer _animActiveTimer;
float64 _animActiveStart;
mtpRequestId _typingRequest;
QTimer _typingStopTimer;
QMap<QPair<History*, SendActionType>, mtpRequestId> _sendActionRequests;
QTimer _sendActionStopTimer;
uint64 _saveDraftStart;
bool _saveDraftText;

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