diff --git a/.gitignore b/.gitignore index 874a80ce0..d1c2f1f14 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,27 @@ -Telegram/GeneratedFiles/ -Telegram/*.user -Telegram.*.suo -Telegram.sdf -Telegram.opensdf -Telegram/*.aps -Win32/ +/Telegram/GeneratedFiles/ +/Telegram/SourceFiles/art/grid.png +/Telegram/SourceFiles/art/grid_125x.png +/Telegram/SourceFiles/art/grid_150x.png +/Telegram/SourceFiles/art/grid_200x.png +/Telegram/SourceFiles/art/sprite_125x.png +/Telegram/SourceFiles/art/sprite_150x.png +/Telegram/*.user +*.suo +*.sdf +*.opensdf +/Telegram/*.aps +/Win32/ ipch/ -Telegram/log.txt -Telegram/data -Telegram/data_config -Telegram/DebugLogs/ -Telegram/tdata/ -Telegram/tdumps/ +/Telegram/log.txt +/Telegram/data +/Telegram/data_config +/Telegram/DebugLogs/ +/Telegram/tdata/ +/Telegram/tdumps/ + +.DS_Store +.qmake.stash +/Mac/ +/Telegram/*.xcodeproj/xcuserdata/ +/Telegram/*.xcodeproj/project.xcworkspace/ diff --git a/Telegram/Lang.plist b/Telegram/Lang.plist new file mode 100644 index 000000000..f8eeabf74 --- /dev/null +++ b/Telegram/Lang.plist @@ -0,0 +1,18 @@ + + + + + CFBundleExecutable + MetaLang + CFBundleGetInfoString + MetaLang compiler + CFBundleIdentifier + com.tdesktop.${PRODUCT_NAME:rfc1034identifier} + CFBundlePackageType + APPL + CFBundleSignature + ???? + NSPrincipalClass + NSApplication + + diff --git a/Telegram/MetaLang.pro b/Telegram/MetaLang.pro new file mode 100644 index 000000000..cee803ce7 --- /dev/null +++ b/Telegram/MetaLang.pro @@ -0,0 +1,31 @@ +T += core + +CONFIG(debug, debug|release) { + DEFINES += _DEBUG + OBJECTS_DIR = ./../Mac/DebugIntermediateLang + MOC_DIR = ./GeneratedFiles/Debug + DESTDIR = ./../Mac/DebugLang +} +CONFIG(release, debug|release) { + OBJECTS_DIR = ./../Mac/ReleaseIntermediateLang + MOC_DIR = ./GeneratedFiles/Release + DESTDIR = ./../Mac/ReleaseLang +} + +macx { + QMAKE_INFO_PLIST = ./SourceFiles/_other/Lang.plist + QMAKE_LFLAGS += -framework Cocoa +} + +SOURCES += \ + ./SourceFiles/_other/mlmain.cpp \ + ./SourceFiles/_other/genlang.cpp \ + +HEADERS += \ + ./SourceFiles/_other/mlmain.h \ + ./SourceFiles/_other/genlang.h \ + +INCLUDEPATH += ./../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui\ + ./../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore\ + ./../../Libraries/QtStatic/qtbase/include\ + diff --git a/Telegram/MetaLang.xcodeproj/project.pbxproj b/Telegram/MetaLang.xcodeproj/project.pbxproj new file mode 100644 index 000000000..9fc24cce8 --- /dev/null +++ b/Telegram/MetaLang.xcodeproj/project.pbxproj @@ -0,0 +1,843 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXAggregateTarget section */ + 9BBFDCA776106924C40572AD /* Preprocess */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 6CC3B5D2136C7CD6A5CF5A59 /* Build configuration list for PBXNativeTarget "MetaLang" */; + buildPhases = ( + 7EF0942E79C014DCEC8976BC /* Qt Preprocessors */, + 07C3AF44194CCD360016CFF1 /* ShellScript */, + ); + dependencies = ( + ); + name = Preprocess; + productName = "Qt Preprocess"; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 0E4EEB1BFC9FA7662AD934C6 /* moc_genlang.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 680437016D61255E7F889A94 /* moc_genlang.cpp */; settings = {ATTRIBUTES = (); }; }; + 1677F0186F1CAD0E8B91FFF7 /* metalang_plugin_import.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 98B4CE8F50ACDC930E6A1148 /* metalang_plugin_import.cpp */; settings = {ATTRIBUTES = (); }; }; + 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 */; }; + 34D95ABDC12C1841CEF3B2E3 /* genlang.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 669AB12AE74AC219B4669D79 /* genlang.cpp */; settings = {ATTRIBUTES = (); }; }; + 496FD9CEEB508016AFB9F928 /* qico in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 8F500B5166907B6D9A7C3E3D /* qico */; }; + 59789101736112A570B8EFE6 /* qjp2 in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = F0681BC551FC8A2B132FC646 /* qjp2 */; }; + 668DDDA0C55405E7FCFD6CA5 /* CoreServices.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 9742F24EE18EA44D52824F1E /* CoreServices.framework */; }; + 7CA5405B8503BFFC60932D2B /* qicns in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 31120EDB269DFF13E1D49847 /* qicns */; }; + 7F76437B577F737145996DC3 /* qtga in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = DCEFD9167C239650120B0145 /* qtga */; }; + 8771A8C96E9C391044035D99 /* OpenGL.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = D4B32C2222F82AC56BADEB21 /* OpenGL.framework */; }; + 8D267F2E4776F0ECA2F49DC8 /* IOKit.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = A1A67BEAA744704B29168D39 /* IOKit.framework */; }; + 8D33FE22B9BBADC7FA46C15B /* qtharfbuzzng in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = D6193B79CECC9DD0142D1200 /* qtharfbuzzng */; }; + 9F33AC0693BC81B27D8F518D /* Qt5Gui in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 04391BE7A8B9D811E255100A /* Qt5Gui */; }; + A3F8F2284013928A02AE5C38 /* qwbmp in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 8CF51323544B886B8F4A2232 /* qwbmp */; }; + A9563D9C9FD0D76FAAF1CA96 /* qdds in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = D3D1BE0BEA3AEE0551AD39AC /* qdds */; }; + B89F16FD30F4E782CC231D7B /* mlmain.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = A83296E7180A28ABB0FD85D2 /* mlmain.cpp */; settings = {ATTRIBUTES = (); }; }; + B9ADD90C014EA3FBE351DF03 /* Qt5Core in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 5A80A1907B6CFFB524C1E57D /* Qt5Core */; }; + BE6AB9DF1C4880624131C669 /* Qt5Widgets in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 4689C06178B60B84E7F3A3B7 /* Qt5Widgets */; }; + C06DDE378A7AC1FA9E6FF69A /* qtiff in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = F2453BA07315EB9F34F1CD57 /* qtiff */; }; + D1FA8AF31837B51C762A9D4D /* qcocoa in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = D53D8E6A188E05078A114294 /* qcocoa */; }; + D22929A2B8C5281567FCACDC /* Qt5PlatformSupport in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */; }; + E45E51A644D5FC9F942ECE55 /* AGL.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 8D9815BDB5BD9F90D2BC05C5 /* AGL.framework */; }; + F26454630C80841CBDCFE1CA /* Foundation.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = FCC237CA5AD60B9BA4447615 /* Foundation.framework */; }; + F4D3747C3A03B25EDC9057BB /* qwebp in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = ADC6308023253CEA51F86E21 /* qwebp */; }; + F8B465CE34D8DF87AAE95913 /* CoreFoundation.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 4D765E1B1EA6C757220C63E7 /* CoreFoundation.framework */; }; + F8ED42CF8679BF83227DAFC4 /* Carbon.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 9DFF62A901D70814B8A323D4 /* Carbon.framework */; }; + FBD56E2AC34F76BFFDB68619 /* qmng in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 83D37373949868693FB7816D /* qmng */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 0746FEA1193CD5E500F5C3FD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6DB9C3763D02B1415CD9D565 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9BBFDCA776106924C40572AD; + remoteInfo = "Qt Preprocess"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 04391BE7A8B9D811E255100A /* Qt5Gui */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Gui; path = "/usr/local/Qt-5.3.0/lib/libQt5Gui$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 060A694B42A4555240009936 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtga.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtga.pri"; sourceTree = ""; }; + 075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql_private.pri"; sourceTree = ""; }; + 0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.3.0/mkspecs/common/unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/unix.conf"; sourceTree = ""; }; + 111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdds.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdds.pri"; sourceTree = ""; }; + 16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick.pri"; sourceTree = ""; }; + 1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfcamera.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfcamera.pri"; sourceTree = ""; }; + 23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui.pri"; sourceTree = ""; }; + 2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qgenericbearer.pri"; sourceTree = ""; }; + 247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri"; sourceTree = ""; }; + 24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri"; sourceTree = ""; }; + 28BD0D10214709D95B161E24 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets.pri"; sourceTree = ""; }; + 293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network.pri"; sourceTree = ""; }; + 2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth_private.pri"; sourceTree = ""; }; + 2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns.pri"; sourceTree = ""; }; + 311004331A04F3D69C98643C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport_private.pri"; sourceTree = ""; }; + 31120EDB269DFF13E1D49847 /* qicns */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qicns; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqicns$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 33A9E861B2FAD8C39E154E7C /* MetaLang.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = MetaLang.pro; sourceTree = ""; }; + 33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras_private.pri"; sourceTree = ""; }; + 346287C9E754E7C458153F03 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwbmp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwbmp.pri"; sourceTree = ""; }; + 360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio.pri"; sourceTree = ""; }; + 3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri"; sourceTree = ""; }; + 382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network_private.pri"; sourceTree = ""; }; + 3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri"; sourceTree = ""; }; + 45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.3.0/mkspecs/common/gcc-base.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/gcc-base.conf"; sourceTree = ""; }; + 45DB132B756499D4DF38430E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qjp2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qjp2.pri"; sourceTree = ""; }; + 4689C06178B60B84E7F3A3B7 /* Qt5Widgets */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Widgets; path = "/usr/local/Qt-5.3.0/lib/libQt5Widgets$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 4C6C71914B1926119120DACD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio_private.pri"; sourceTree = ""; }; + 4D765E1B1EA6C757220C63E7 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; + 4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmldevtools_private.pri"; sourceTree = ""; }; + 54D6D1A7260739988F6FC406 /* genlang.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = genlang.h; path = SourceFiles/_other/genlang.h; sourceTree = ""; }; + 5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions_private.pri"; sourceTree = ""; }; + 5A80A1907B6CFFB524C1E57D /* Qt5Core */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Core; path = "/usr/local/Qt-5.3.0/lib/libQt5Core$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri"; sourceTree = ""; }; + 5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl.pri"; sourceTree = ""; }; + 5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core_private.pri"; sourceTree = ""; }; + 6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml_private.pri"; sourceTree = ""; }; + 63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.3.0/mkspecs/macx-clang/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/macx-clang/qmake.conf"; sourceTree = ""; }; + 669AB12AE74AC219B4669D79 /* genlang.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = genlang.cpp; path = SourceFiles/_other/genlang.cpp; sourceTree = ""; }; + 669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.3.0/mkspecs/common/shell-unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/shell-unix.conf"; sourceTree = ""; }; + 680437016D61255E7F889A94 /* moc_genlang.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_genlang.cpp; path = GeneratedFiles/Debug/moc_genlang.cpp; sourceTree = ""; }; + 69347C39E4D922E94D0860BF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designercomponents_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designercomponents_private.pri"; sourceTree = ""; }; + 6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport.pri"; sourceTree = ""; }; + 6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.3.0/mkspecs/qdevice.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/qdevice.pri"; sourceTree = ""; }; + 74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri"; sourceTree = ""; }; + 77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent.pri"; sourceTree = ""; }; + 7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative.pri"; sourceTree = ""; }; + 7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer_private.pri"; sourceTree = ""; }; + 7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent_private.pri"; sourceTree = ""; }; + 7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql.pri"; sourceTree = ""; }; + 7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core.pri"; sourceTree = ""; }; + 817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.3.0/mkspecs/common/macx.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/macx.conf"; sourceTree = ""; }; + 82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickparticles_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickparticles_private.pri"; sourceTree = ""; }; + 83D37373949868693FB7816D /* qmng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qmng; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqmng$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 83FFCB79DDEB015B4A5CB301 /* MetaLang.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MetaLang.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 85061B1DA49D125991117950 /* /usr/local/Qt-5.3.0/mkspecs/macx-xcode/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/macx-xcode/qmake.conf"; sourceTree = ""; }; + 85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors.pri"; sourceTree = ""; }; + 87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri"; sourceTree = ""; }; + 87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets_private.pri"; sourceTree = ""; }; + 8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib_private.pri"; sourceTree = ""; }; + 892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri"; sourceTree = ""; }; + 89863CCAF1D29037AE95755D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative_private.pri"; sourceTree = ""; }; + 8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc.pri"; sourceTree = ""; }; + 8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri"; sourceTree = ""; }; + 8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick_private.pri"; sourceTree = ""; }; + 8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.3.0/mkspecs/common/clang.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/clang.conf"; sourceTree = ""; }; + 8CF51323544B886B8F4A2232 /* qwbmp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwbmp; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqwbmp$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 8D9815BDB5BD9F90D2BC05C5 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = ""; }; + 8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg_private.pri"; sourceTree = ""; }; + 8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets_private.pri"; sourceTree = ""; }; + 8F500B5166907B6D9A7C3E3D /* qico */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qico; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqico$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_platformsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_platformsupport_private.pri"; sourceTree = ""; }; + 8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets.pri"; sourceTree = ""; }; + 946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmng.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmng.pri"; sourceTree = ""; }; + 9742F24EE18EA44D52824F1E /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; + 98B4CE8F50ACDC930E6A1148 /* metalang_plugin_import.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = metalang_plugin_import.cpp; sourceTree = ""; }; + 9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qqt7engine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qqt7engine.pri"; sourceTree = ""; }; + 9DFF62A901D70814B8A323D4 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; + A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets.pri"; sourceTree = ""; }; + A1A67BEAA744704B29168D39 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; + A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri"; sourceTree = ""; }; + A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools_private.pri"; sourceTree = ""; }; + A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras.pri"; sourceTree = ""; }; + A83296E7180A28ABB0FD85D2 /* mlmain.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = mlmain.cpp; path = SourceFiles/_other/mlmain.cpp; sourceTree = ""; }; + A9E30FA27827990C5F182223 /* /usr/local/Qt-5.3.0/mkspecs/common/gcc-base-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/gcc-base-mac.conf"; sourceTree = ""; }; + AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml.pri"; sourceTree = ""; }; + AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri"; sourceTree = ""; }; + AB745978DF0F41D1801ABDA6 /* .qmake.stash */ = {isa = PBXFileReference; lastKnownFileType = file; path = .qmake.stash; sourceTree = ""; }; + ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest_private.pri"; sourceTree = ""; }; + ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth.pri"; sourceTree = ""; }; + ADC6308023253CEA51F86E21 /* qwebp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwebp; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqwebp$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg.pri"; sourceTree = ""; }; + AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcocoa.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcocoa.pri"; sourceTree = ""; }; + B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsqlite.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsqlite.pri"; sourceTree = ""; }; + B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets_private.pri"; sourceTree = ""; }; + B26239063A068F800A2C95F4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwebp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwebp.pri"; sourceTree = ""; }; + B382B645B34234E451AE5D94 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml.pri"; sourceTree = ""; }; + B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools_private.pri"; sourceTree = ""; }; + B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc_private.pri"; sourceTree = ""; }; + B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qminimal.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qminimal.pri"; sourceTree = ""; }; + B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri"; sourceTree = ""; }; + B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri"; sourceTree = ""; }; + BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtiff.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtiff.pri"; sourceTree = ""; }; + BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bootstrap_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bootstrap_private.pri"; sourceTree = ""; }; + BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors_private.pri"; sourceTree = ""; }; + BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport.pri"; sourceTree = ""; }; + C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qico.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qico.pri"; sourceTree = ""; }; + C505A18319B9B63C63877858 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script_private.pri"; sourceTree = ""; }; + C84546C18DCBB04166195DCF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri"; sourceTree = ""; }; + CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qoffscreen.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qoffscreen.pri"; sourceTree = ""; }; + CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools.pri"; sourceTree = ""; }; + CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_clucene_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_clucene_private.pri"; sourceTree = ""; }; + CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script.pri"; sourceTree = ""; }; + CFFBE05DB004895080314289 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvgicon.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvgicon.pri"; sourceTree = ""; }; + D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport_private.pri"; sourceTree = ""; }; + D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri"; sourceTree = ""; }; + D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia.pri"; sourceTree = ""; }; + D3D1BE0BEA3AEE0551AD39AC /* qdds */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qdds; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqdds$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + D4B32C2222F82AC56BADEB21 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; + D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.3.0/mkspecs/qconfig.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/qconfig.pri"; sourceTree = ""; }; + D5141F795670589C8CC41CBC /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri"; sourceTree = ""; }; + D53D8E6A188E05078A114294 /* qcocoa */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qcocoa; path = "/usr/local/Qt-5.3.0/plugins/platforms/libqcocoa$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + D6193B79CECC9DD0142D1200 /* qtharfbuzzng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtharfbuzzng; path = "/usr/local/Qt-5.3.0/lib/libqtharfbuzzng$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help_private.pri"; sourceTree = ""; }; + D7D645CBFF3B86CF39CEF3DA /* mlmain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mlmain.h; path = SourceFiles/_other/mlmain.h; sourceTree = ""; }; + D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui_private.pri"; sourceTree = ""; }; + D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets.pri"; sourceTree = ""; }; + DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib.pri"; sourceTree = ""; }; + DBF506D10449BFABD45B82DA /* Qt5PrintSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PrintSupport; path = "/usr/local/Qt-5.3.0/lib/libQt5PrintSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + DCEFD9167C239650120B0145 /* qtga */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtga; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqtga$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + DF8188E30892A4654B984221 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest.pri"; sourceTree = ""; }; + DFD7912080BC557230093752 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; + E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl_private.pri"; sourceTree = ""; }; + E37365B4489B4918BEBB707D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml_private.pri"; sourceTree = ""; }; + E432DA897A5F027987342E8F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions.pri"; sourceTree = ""; }; + E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools.pri"; sourceTree = ""; }; + E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning_private.pri"; sourceTree = ""; }; + E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PlatformSupport; path = "/usr/local/Qt-5.3.0/lib/libQt5PlatformSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia_private.pri"; sourceTree = ""; }; + EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri"; sourceTree = ""; }; + EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qicns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qicns.pri"; sourceTree = ""; }; + EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri"; sourceTree = ""; }; + EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.3.0/mkspecs/common/mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/mac.conf"; sourceTree = ""; }; + F0681BC551FC8A2B132FC646 /* qjp2 */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qjp2; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqjp2$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + F0A58515945747E36783CC21 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri"; sourceTree = ""; }; + F2453BA07315EB9F34F1CD57 /* qtiff */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtiff; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqtiff$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer.pri"; sourceTree = ""; }; + F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.3.0/mkspecs/common/clang-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/clang-mac.conf"; sourceTree = ""; }; + F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri"; sourceTree = ""; }; + F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning.pri"; sourceTree = ""; }; + F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvg.pri"; sourceTree = ""; }; + F9BEAA743A908603687DA204 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri"; sourceTree = ""; }; + FCC237CA5AD60B9BA4447615 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help.pri"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D1C883685E82D5676953459A /* Link Binary With Libraries */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1BB705CDB741E2B7450201A5 /* Cocoa.framework in Link Binary With Libraries */, + 328FD74542F6E2C873EE4D4B /* ApplicationServices.framework in Link Binary With Libraries */, + 668DDDA0C55405E7FCFD6CA5 /* CoreServices.framework in Link Binary With Libraries */, + F8B465CE34D8DF87AAE95913 /* CoreFoundation.framework in Link Binary With Libraries */, + F26454630C80841CBDCFE1CA /* Foundation.framework in Link Binary With Libraries */, + 8771A8C96E9C391044035D99 /* OpenGL.framework in Link Binary With Libraries */, + E45E51A644D5FC9F942ECE55 /* AGL.framework in Link Binary With Libraries */, + D1FA8AF31837B51C762A9D4D /* qcocoa in Link Binary With Libraries */, + F8ED42CF8679BF83227DAFC4 /* Carbon.framework in Link Binary With Libraries */, + 8D267F2E4776F0ECA2F49DC8 /* IOKit.framework in Link Binary With Libraries */, + 1A681B886F50EE30FBE62B4B /* Qt5PrintSupport in Link Binary With Libraries */, + D22929A2B8C5281567FCACDC /* Qt5PlatformSupport in Link Binary With Libraries */, + BE6AB9DF1C4880624131C669 /* Qt5Widgets in Link Binary With Libraries */, + A9563D9C9FD0D76FAAF1CA96 /* qdds in Link Binary With Libraries */, + 7CA5405B8503BFFC60932D2B /* qicns in Link Binary With Libraries */, + 496FD9CEEB508016AFB9F928 /* qico in Link Binary With Libraries */, + 59789101736112A570B8EFE6 /* qjp2 in Link Binary With Libraries */, + FBD56E2AC34F76BFFDB68619 /* qmng in Link Binary With Libraries */, + 7F76437B577F737145996DC3 /* qtga in Link Binary With Libraries */, + C06DDE378A7AC1FA9E6FF69A /* qtiff in Link Binary With Libraries */, + A3F8F2284013928A02AE5C38 /* qwbmp in Link Binary With Libraries */, + F4D3747C3A03B25EDC9057BB /* qwebp in Link Binary With Libraries */, + 9F33AC0693BC81B27D8F518D /* Qt5Gui in Link Binary With Libraries */, + 8D33FE22B9BBADC7FA46C15B /* qtharfbuzzng in Link Binary With Libraries */, + B9ADD90C014EA3FBE351DF03 /* Qt5Core in Link Binary With Libraries */, + ); + name = "Link Binary With Libraries"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 25B08E2869634E9BCBA333A2 /* Generated Sources */ = { + isa = PBXGroup; + children = ( + D0B536A85E53302E4F66CE23 /* GeneratedFiles */, + ); + name = "Generated Sources"; + sourceTree = ""; + }; + 2EB56BE3C2D93CDAB0C52E67 /* Sources */ = { + isa = PBXGroup; + children = ( + 73F2E45FDEB381A085D37A49 /* SourceFiles */, + 98B4CE8F50ACDC930E6A1148 /* metalang_plugin_import.cpp */, + ); + name = Sources; + sourceTree = ""; + }; + 31562E815E3DF5B1A777D3EF /* _other */ = { + isa = PBXGroup; + children = ( + A83296E7180A28ABB0FD85D2 /* mlmain.cpp */, + 669AB12AE74AC219B4669D79 /* genlang.cpp */, + D7D645CBFF3B86CF39CEF3DA /* mlmain.h */, + 54D6D1A7260739988F6FC406 /* genlang.h */, + ); + name = _other; + sourceTree = ""; + }; + 73F2E45FDEB381A085D37A49 /* SourceFiles */ = { + isa = PBXGroup; + children = ( + 31562E815E3DF5B1A777D3EF /* _other */, + ); + name = SourceFiles; + sourceTree = ""; + }; + 74B182DB50CB5611B5C1C297 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 33A9E861B2FAD8C39E154E7C /* MetaLang.pro */, + 6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.3.0/mkspecs/qdevice.pri */, + 669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.3.0/mkspecs/common/shell-unix.conf */, + 0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.3.0/mkspecs/common/unix.conf */, + EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.3.0/mkspecs/common/mac.conf */, + 817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.3.0/mkspecs/common/macx.conf */, + 45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.3.0/mkspecs/common/gcc-base.conf */, + A9E30FA27827990C5F182223 /* /usr/local/Qt-5.3.0/mkspecs/common/gcc-base-mac.conf */, + 8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.3.0/mkspecs/common/clang.conf */, + F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.3.0/mkspecs/common/clang-mac.conf */, + D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.3.0/mkspecs/qconfig.pri */, + ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth.pri */, + 2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth_private.pri */, + BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bootstrap_private.pri */, + CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_clucene_private.pri */, + 77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent.pri */, + 7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent_private.pri */, + 7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core.pri */, + 5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core_private.pri */, + 7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative.pri */, + 89863CCAF1D29037AE95755D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative_private.pri */, + F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer.pri */, + 7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer_private.pri */, + 69347C39E4D922E94D0860BF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designercomponents_private.pri */, + 360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio.pri */, + 4C6C71914B1926119120DACD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio_private.pri */, + 23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui.pri */, + D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui_private.pri */, + FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help.pri */, + D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help_private.pri */, + A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras.pri */, + 33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras_private.pri */, + D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia.pri */, + E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia_private.pri */, + 28BD0D10214709D95B161E24 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets.pri */, + D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */, + 293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network.pri */, + 382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network_private.pri */, + 8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc.pri */, + B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc_private.pri */, + 5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl.pri */, + E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl_private.pri */, + E432DA897A5F027987342E8F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions.pri */, + 5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions_private.pri */, + 8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_platformsupport_private.pri */, + F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning.pri */, + E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning_private.pri */, + 6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport.pri */, + D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport_private.pri */, + B382B645B34234E451AE5D94 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml.pri */, + 6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml_private.pri */, + 4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */, + DF8188E30892A4654B984221 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest.pri */, + ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest_private.pri */, + 5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */, + 16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick.pri */, + 8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick_private.pri */, + 82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickparticles_private.pri */, + D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets.pri */, + B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */, + CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script.pri */, + C505A18319B9B63C63877858 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script_private.pri */, + CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools.pri */, + A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools_private.pri */, + 85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors.pri */, + BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors_private.pri */, + BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport.pri */, + 311004331A04F3D69C98643C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport_private.pri */, + 7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql.pri */, + 075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql_private.pri */, + ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg.pri */, + 8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg_private.pri */, + DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib.pri */, + 8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib_private.pri */, + E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools.pri */, + B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools_private.pri */, + 8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets.pri */, + 87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets_private.pri */, + A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets.pri */, + 8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets_private.pri */, + AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml.pri */, + E37365B4489B4918BEBB707D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml_private.pri */, + 2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns.pri */, + F9BEAA743A908603687DA204 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */, + D5141F795670589C8CC41CBC /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */, + 1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfcamera.pri */, + F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */, + AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcocoa.pri */, + EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */, + 111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdds.pri */, + 3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */, + 2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */, + EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qicns.pri */, + C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qico.pri */, + 45DB132B756499D4DF38430E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qjp2.pri */, + B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qminimal.pri */, + F0A58515945747E36783CC21 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */, + B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */, + EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */, + 3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */, + 946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmng.pri */, + CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qoffscreen.pri */, + 9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qqt7engine.pri */, + B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsqlite.pri */, + F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvg.pri */, + CFFBE05DB004895080314289 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvgicon.pri */, + 247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */, + 87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */, + 24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */, + 060A694B42A4555240009936 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtga.pri */, + BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtiff.pri */, + B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */, + 74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */, + C84546C18DCBB04166195DCF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */, + AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */, + 8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */, + 892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */, + A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */, + 346287C9E754E7C458153F03 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwbmp.pri */, + B26239063A068F800A2C95F4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwebp.pri */, + 63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.3.0/mkspecs/macx-clang/qmake.conf */, + 85061B1DA49D125991117950 /* /usr/local/Qt-5.3.0/mkspecs/macx-xcode/qmake.conf */, + AB745978DF0F41D1801ABDA6 /* .qmake.stash */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 801973D3334D0FCA849CF485 /* Debug */ = { + isa = PBXGroup; + children = ( + 680437016D61255E7F889A94 /* moc_genlang.cpp */, + ); + name = Debug; + sourceTree = ""; + }; + AF39DD055C3EF8226FBE929D /* Frameworks */ = { + isa = PBXGroup; + children = ( + AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */, + DFD7912080BC557230093752 /* ApplicationServices.framework */, + 9742F24EE18EA44D52824F1E /* CoreServices.framework */, + 4D765E1B1EA6C757220C63E7 /* CoreFoundation.framework */, + FCC237CA5AD60B9BA4447615 /* Foundation.framework */, + D4B32C2222F82AC56BADEB21 /* OpenGL.framework */, + 8D9815BDB5BD9F90D2BC05C5 /* AGL.framework */, + D53D8E6A188E05078A114294 /* qcocoa */, + 9DFF62A901D70814B8A323D4 /* Carbon.framework */, + A1A67BEAA744704B29168D39 /* IOKit.framework */, + DBF506D10449BFABD45B82DA /* Qt5PrintSupport */, + E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */, + 4689C06178B60B84E7F3A3B7 /* Qt5Widgets */, + D3D1BE0BEA3AEE0551AD39AC /* qdds */, + 31120EDB269DFF13E1D49847 /* qicns */, + 8F500B5166907B6D9A7C3E3D /* qico */, + F0681BC551FC8A2B132FC646 /* qjp2 */, + 83D37373949868693FB7816D /* qmng */, + DCEFD9167C239650120B0145 /* qtga */, + F2453BA07315EB9F34F1CD57 /* qtiff */, + 8CF51323544B886B8F4A2232 /* qwbmp */, + ADC6308023253CEA51F86E21 /* qwebp */, + 04391BE7A8B9D811E255100A /* Qt5Gui */, + D6193B79CECC9DD0142D1200 /* qtharfbuzzng */, + 5A80A1907B6CFFB524C1E57D /* Qt5Core */, + ); + name = Frameworks; + sourceTree = ""; + }; + D0B536A85E53302E4F66CE23 /* GeneratedFiles */ = { + isa = PBXGroup; + children = ( + 801973D3334D0FCA849CF485 /* Debug */, + ); + name = GeneratedFiles; + sourceTree = ""; + }; + E8C543AB96796ECAA2E65C57 /* MetaLang */ = { + isa = PBXGroup; + children = ( + 2EB56BE3C2D93CDAB0C52E67 /* Sources */, + 25B08E2869634E9BCBA333A2 /* Generated Sources */, + 74B182DB50CB5611B5C1C297 /* Supporting Files */, + AF39DD055C3EF8226FBE929D /* Frameworks */, + FE0A091FDBFB3E9C31B7A1BD /* Products */, + ); + name = MetaLang; + sourceTree = ""; + }; + FE0A091FDBFB3E9C31B7A1BD /* Products */ = { + isa = PBXGroup; + children = ( + 83FFCB79DDEB015B4A5CB301 /* MetaLang.app */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 6FFA5F0FB08CCD004808E1F3 /* MetaLang */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6CC3B5D2136C7CD6A5CF5A59 /* Build configuration list for PBXNativeTarget "MetaLang" */; + buildPhases = ( + F7E50F631C51CD5B5DC0BC43 /* Compile Sources */, + D1C883685E82D5676953459A /* Link Binary With Libraries */, + ); + buildRules = ( + ); + dependencies = ( + 076DA1F6C10E47842EC316F3 /* PBXTargetDependency */, + ); + name = MetaLang; + productInstallPath = ../Mac/DebugLang/; + productName = MetaLang; + productReference = 83FFCB79DDEB015B4A5CB301 /* MetaLang.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 6DB9C3763D02B1415CD9D565 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0510; + }; + buildConfigurationList = DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "MetaLang" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = E8C543AB96796ECAA2E65C57 /* MetaLang */; + productRefGroup = FE0A091FDBFB3E9C31B7A1BD /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 6FFA5F0FB08CCD004808E1F3 /* MetaLang */, + 9BBFDCA776106924C40572AD /* Preprocess */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXShellScriptBuildPhase section */ + 07C3AF44194CCD360016CFF1 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "mkdir -p ./GeneratedFiles/Debug"; + }; + 7EF0942E79C014DCEC8976BC /* Qt Preprocessors */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + name = "Qt Preprocessors"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "make -C . -f MetaLang.xcodeproj/qt_preprocess.mak"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + F7E50F631C51CD5B5DC0BC43 /* Compile Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B89F16FD30F4E782CC231D7B /* mlmain.cpp in Compile Sources */, + 34D95ABDC12C1841CEF3B2E3 /* genlang.cpp in Compile Sources */, + 1677F0186F1CAD0E8B91FFF7 /* metalang_plugin_import.cpp in Compile Sources */, + 0E4EEB1BFC9FA7662AD934C6 /* moc_genlang.cpp in Compile Sources */, + ); + name = "Compile Sources"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 076DA1F6C10E47842EC316F3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9BBFDCA776106924C40572AD /* Preprocess */; + targetProxy = 0746FEA1193CD5E500F5C3FD /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 339EE1B2CC4FC24589A0EA95 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DYLIB_COMPATIBILITY_VERSION = 1.0; + DYLIB_CURRENT_VERSION = 1.0.0; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + ../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui, + ../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore, + ../../Libraries/QtStatic/qtbase/include, + "/usr/local/Qt-5.3.0/include", + "/usr/local/Qt-5.3.0/include/QtGui", + "/usr/local/Qt-5.3.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.3.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.3.0/lib", + "/usr/local/Qt-5.3.0/plugins/platforms", + "/usr/local/Qt-5.3.0/plugins/imageformats", + ); + MACOSX_DEPLOYMENT_TARGET = 10.7; + OBJROOT = ../Mac/DebugIntermediateLang/; + OTHER_CFLAGS = ( + "-pipe", + "-g", + "-Wall", + "-W", + "-fPIE", + "-D_DEBUG", + "-DQT_GUI_LIB", + "-DQT_CORE_LIB", + ); + OTHER_CPLUSPLUSFLAGS = ( + "-pipe", + "-g", + "-std=c++11", + "-stdlib=libc++", + "-Wall", + "-W", + "-fPIE", + "-D_DEBUG", + "-DQT_GUI_LIB", + "-DQT_CORE_LIB", + ); + OTHER_LDFLAGS = ( + "-headerpad_max_install_names", + "-stdlib=libc++", + "-L/usr/local/Qt-5.3.0/lib", + "-L/usr/local/Qt-5.3.0/plugins/platforms", + "-lcups", + "-L/usr/local/Qt-5.3.0/plugins/imageformats", + "-lz", + "-lm", + ); + PRODUCT_NAME = MetaLang; + QT_LIBRARY_SUFFIX = ""; + SDKROOT = macosx; + SYMROOT = ../Mac/ReleaseLang; + }; + name = Release; + }; + 3AA6C32AC930069E80220CF1 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + DYLIB_COMPATIBILITY_VERSION = 1.0; + DYLIB_CURRENT_VERSION = 1.0.0; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + ../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui, + ../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore, + ../../Libraries/QtStatic/qtbase/include, + "/usr/local/Qt-5.3.0/include", + "/usr/local/Qt-5.3.0/include/QtGui", + "/usr/local/Qt-5.3.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.3.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.3.0/lib", + "/usr/local/Qt-5.3.0/plugins/platforms", + "/usr/local/Qt-5.3.0/plugins/imageformats", + ); + MACOSX_DEPLOYMENT_TARGET = 10.7; + OBJROOT = ../Mac/DebugIntermediateLang/; + ONLY_ACTIVE_ARCH = YES; + OTHER_CFLAGS = ( + "-pipe", + "-g", + "-Wall", + "-W", + "-fPIE", + "-D_DEBUG", + "-DQT_GUI_LIB", + "-DQT_CORE_LIB", + ); + OTHER_CPLUSPLUSFLAGS = ( + "-pipe", + "-g", + "-std=c++11", + "-stdlib=libc++", + "-Wall", + "-W", + "-fPIE", + "-D_DEBUG", + "-DQT_GUI_LIB", + "-DQT_CORE_LIB", + ); + OTHER_LDFLAGS = ( + "-headerpad_max_install_names", + "-stdlib=libc++", + "-L/usr/local/Qt-5.3.0/lib", + "-L/usr/local/Qt-5.3.0/plugins/platforms", + "-lcups", + "-L/usr/local/Qt-5.3.0/plugins/imageformats", + "-lz", + "-lm", + ); + PRODUCT_NAME = MetaLang; + QT_LIBRARY_SUFFIX = _debug; + SDKROOT = macosx; + SYMROOT = ../Mac/DebugLang; + }; + name = Debug; + }; + 6666AA5E688052234F6758D8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Lang$(EFFECTIVE_PLATFORM_NAME)"; + COPY_PHASE_STRIP = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + HEADER_SEARCH_PATHS = ( + ./../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui, + ./../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore, + ./../../Libraries/QtStatic/qtbase/include, + "/usr/local/Qt-5.3.0/include", + "/usr/local/Qt-5.3.0/include/QtGui", + "/usr/local/Qt-5.3.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.3.0/mkspecs/macx-clang", + ); + INSTALL_DIR = ../Mac/ReleaseLang/; + OBJROOT = ../Mac/ReleaseIntermediateLang; + PRODUCT_NAME = MetaLang; + QT_LIBRARY_SUFFIX = ""; + SDKROOT = macosx; + SYMROOT = ./../Mac; + }; + name = Release; + }; + 77418F46922677BB04ED38DD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Lang$(EFFECTIVE_PLATFORM_NAME)"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + HEADER_SEARCH_PATHS = ( + ./../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui, + ./../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore, + ./../../Libraries/QtStatic/qtbase/include, + "/usr/local/Qt-5.3.0/include", + "/usr/local/Qt-5.3.0/include/QtGui", + "/usr/local/Qt-5.3.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.3.0/mkspecs/macx-clang", + ); + INSTALL_DIR = ../Mac/DebugLang/; + OBJROOT = ../Mac/DebugIntermediateLang; + PRODUCT_NAME = MetaLang; + QT_LIBRARY_SUFFIX = _debug; + SDKROOT = macosx; + SYMROOT = ./../Mac; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6CC3B5D2136C7CD6A5CF5A59 /* Build configuration list for PBXNativeTarget "MetaLang" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 77418F46922677BB04ED38DD /* Debug */, + 6666AA5E688052234F6758D8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "MetaLang" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3AA6C32AC930069E80220CF1 /* Debug */, + 339EE1B2CC4FC24589A0EA95 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = 6DB9C3763D02B1415CD9D565 /* Project object */; +} diff --git a/Telegram/MetaLang.xcodeproj/qt_preprocess.mak b/Telegram/MetaLang.xcodeproj/qt_preprocess.mak new file mode 100644 index 000000000..a4f40835a --- /dev/null +++ b/Telegram/MetaLang.xcodeproj/qt_preprocess.mak @@ -0,0 +1,68 @@ +############################################################################# +# Makefile for building: ../Mac/DebugLang/MetaLang.app/Contents/MacOS/MetaLang +# Generated by qmake (3.0) (Qt 5.3.0) +# Project: MetaLang.pro +# Template: app +# Command: /usr/local/Qt-5.3.0/bin/qmake -spec macx-xcode -o MetaLang.xcodeproj/project.pbxproj MetaLang.pro +############################################################################# + +MAKEFILE = project.pbxproj + +MOC = /usr/local/Qt-5.3.0/bin/moc +UIC = +LEX = flex +LEXFLAGS = +YACC = yacc +YACCFLAGS = -d +DEFINES = -D_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB +INCPATH = -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui -I../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore -I../../Libraries/QtStatic/qtbase/include -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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 = +PARSERS = +preprocess: $(PARSERS) compilers +clean preprocess_clean: parser_clean compiler_clean + +parser_clean: +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +check: first + +compilers: GeneratedFiles/Debug/moc_genlang.cpp +compiler_objective_c_make_all: +compiler_objective_c_clean: +compiler_rcc_make_all: +compiler_rcc_clean: +compiler_moc_header_make_all: GeneratedFiles/Debug/moc_genlang.cpp +compiler_moc_header_clean: + -$(DEL_FILE) GeneratedFiles/Debug/moc_genlang.cpp +GeneratedFiles/Debug/moc_genlang.cpp: ../../Libraries/QtStatic/qtbase/include/QtCore/QMap \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QVector \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QFile \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QDir \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QRegularExpression \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QImage \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QPixmap \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QPainter \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTextStream \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QString \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QCoreApplication \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QGuiApplication \ + SourceFiles/_other/genlang.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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: +compiler_rez_source_make_all: +compiler_rez_source_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: compiler_moc_header_clean + diff --git a/Telegram/MetaStyle.pro b/Telegram/MetaStyle.pro new file mode 100644 index 000000000..f5ff0f7e5 --- /dev/null +++ b/Telegram/MetaStyle.pro @@ -0,0 +1,31 @@ +QT += core + +CONFIG(debug, debug|release) { + DEFINES += _DEBUG + OBJECTS_DIR = ./../Mac/DebugIntermediateStyle + MOC_DIR = ./GeneratedFiles/Debug + DESTDIR = ./../Mac/DebugStyle +} +CONFIG(release, debug|release) { + OBJECTS_DIR = ./../Mac/ReleaseIntermediateStyle + MOC_DIR = ./GeneratedFiles/Release + DESTDIR = ./../Mac/ReleaseStyle +} + +macx { + QMAKE_INFO_PLIST = ./SourceFiles/_other/Style.plist + QMAKE_LFLAGS += -framework Cocoa +} + +SOURCES += \ + ./SourceFiles/_other/msmain.cpp \ + ./SourceFiles/_other/genstyles.cpp \ + +HEADERS += \ + ./SourceFiles/_other/msmain.h \ + ./SourceFiles/_other/genstyles.h \ + +INCLUDEPATH += ./../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui\ + ./../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore\ + ./../../Libraries/QtStatic/qtbase/include\ + diff --git a/Telegram/MetaStyle.xcodeproj/project.pbxproj b/Telegram/MetaStyle.xcodeproj/project.pbxproj new file mode 100644 index 000000000..71438b9d9 --- /dev/null +++ b/Telegram/MetaStyle.xcodeproj/project.pbxproj @@ -0,0 +1,817 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXAggregateTarget section */ + 5E275BA59C8BA5B561E14CF4 /* Preprocess */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 6CC3B5D2136C7CD6A5CF5A59 /* Build configuration list for PBXNativeTarget "MetaStyle" */; + buildPhases = ( + 07C3AF43194CCD0F0016CFF1 /* ShellScript */, + 7EF0942E79C014DCEC8976BC /* Qt Preprocessors */, + ); + dependencies = ( + ); + name = Preprocess; + productName = "Qt Preprocess"; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 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 */; }; + 3D6772E35214B81E50791089 /* genstyles.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = F8BC976260B6D624F23C32D6 /* genstyles.cpp */; settings = {ATTRIBUTES = (); }; }; + 496FD9CEEB508016AFB9F928 /* qico in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 8F500B5166907B6D9A7C3E3D /* qico */; }; + 59789101736112A570B8EFE6 /* qjp2 in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = F0681BC551FC8A2B132FC646 /* qjp2 */; }; + 668DDDA0C55405E7FCFD6CA5 /* CoreServices.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 9742F24EE18EA44D52824F1E /* CoreServices.framework */; }; + 728CDDB7D7F2B9FF141651AD /* msmain.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = EF5243ECB3132AF2796F09DF /* msmain.cpp */; settings = {ATTRIBUTES = (); }; }; + 7CA5405B8503BFFC60932D2B /* qicns in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 31120EDB269DFF13E1D49847 /* qicns */; }; + 7F76437B577F737145996DC3 /* qtga in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = DCEFD9167C239650120B0145 /* qtga */; }; + 8771A8C96E9C391044035D99 /* OpenGL.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = D4B32C2222F82AC56BADEB21 /* OpenGL.framework */; }; + 8D267F2E4776F0ECA2F49DC8 /* IOKit.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = A1A67BEAA744704B29168D39 /* IOKit.framework */; }; + 8D33FE22B9BBADC7FA46C15B /* qtharfbuzzng in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = D6193B79CECC9DD0142D1200 /* qtharfbuzzng */; }; + 9F33AC0693BC81B27D8F518D /* Qt5Gui in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 04391BE7A8B9D811E255100A /* Qt5Gui */; }; + A3F8F2284013928A02AE5C38 /* qwbmp in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 8CF51323544B886B8F4A2232 /* qwbmp */; }; + A9563D9C9FD0D76FAAF1CA96 /* qdds in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = D3D1BE0BEA3AEE0551AD39AC /* qdds */; }; + B9ADD90C014EA3FBE351DF03 /* Qt5Core in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 5A80A1907B6CFFB524C1E57D /* Qt5Core */; }; + BE6AB9DF1C4880624131C669 /* Qt5Widgets in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 4689C06178B60B84E7F3A3B7 /* Qt5Widgets */; }; + C06DDE378A7AC1FA9E6FF69A /* qtiff in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = F2453BA07315EB9F34F1CD57 /* qtiff */; }; + CBF24309A148222794F28401 /* moc_genstyles.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 861D2151FB56504EB72BDB6E /* moc_genstyles.cpp */; settings = {ATTRIBUTES = (); }; }; + D1FA8AF31837B51C762A9D4D /* qcocoa in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = D53D8E6A188E05078A114294 /* qcocoa */; }; + D22929A2B8C5281567FCACDC /* Qt5PlatformSupport in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */; }; + E45E51A644D5FC9F942ECE55 /* AGL.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 8D9815BDB5BD9F90D2BC05C5 /* AGL.framework */; }; + E5189462121C76398D36DFDC /* metastyle_plugin_import.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 6C95BA41C0AD8CEBCDD59F5B /* metastyle_plugin_import.cpp */; settings = {ATTRIBUTES = (); }; }; + F26454630C80841CBDCFE1CA /* Foundation.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = FCC237CA5AD60B9BA4447615 /* Foundation.framework */; }; + F4D3747C3A03B25EDC9057BB /* qwebp in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = ADC6308023253CEA51F86E21 /* qwebp */; }; + F8B465CE34D8DF87AAE95913 /* CoreFoundation.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 4D765E1B1EA6C757220C63E7 /* CoreFoundation.framework */; }; + F8ED42CF8679BF83227DAFC4 /* Carbon.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 9DFF62A901D70814B8A323D4 /* Carbon.framework */; }; + FBD56E2AC34F76BFFDB68619 /* qmng in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 83D37373949868693FB7816D /* qmng */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 0746FEAC193D006900F5C3FD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6DB9C3763D02B1415CD9D565 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5E275BA59C8BA5B561E14CF4; + remoteInfo = "Qt Preprocess"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 04391BE7A8B9D811E255100A /* Qt5Gui */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Gui; path = "/usr/local/Qt-5.3.0/lib/libQt5Gui$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 060A694B42A4555240009936 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtga.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtga.pri"; sourceTree = ""; }; + 075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql_private.pri"; sourceTree = ""; }; + 0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.3.0/mkspecs/common/unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/unix.conf"; sourceTree = ""; }; + 10F719DFC6D0B05605ED1C16 /* MetaStyle.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = MetaStyle.pro; sourceTree = ""; }; + 111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdds.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdds.pri"; sourceTree = ""; }; + 16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick.pri"; sourceTree = ""; }; + 1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfcamera.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfcamera.pri"; sourceTree = ""; }; + 23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui.pri"; sourceTree = ""; }; + 2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qgenericbearer.pri"; sourceTree = ""; }; + 247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri"; sourceTree = ""; }; + 24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri"; sourceTree = ""; }; + 28BD0D10214709D95B161E24 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets.pri"; sourceTree = ""; }; + 293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network.pri"; sourceTree = ""; }; + 2CBD32689B153445ED220FAE /* MetaStyle.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MetaStyle.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth_private.pri"; sourceTree = ""; }; + 2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns.pri"; sourceTree = ""; }; + 311004331A04F3D69C98643C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport_private.pri"; sourceTree = ""; }; + 31120EDB269DFF13E1D49847 /* qicns */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qicns; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqicns$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras_private.pri"; sourceTree = ""; }; + 346287C9E754E7C458153F03 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwbmp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwbmp.pri"; sourceTree = ""; }; + 360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio.pri"; sourceTree = ""; }; + 3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri"; sourceTree = ""; }; + 382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network_private.pri"; sourceTree = ""; }; + 3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri"; sourceTree = ""; }; + 45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.3.0/mkspecs/common/gcc-base.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/gcc-base.conf"; sourceTree = ""; }; + 45DB132B756499D4DF38430E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qjp2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qjp2.pri"; sourceTree = ""; }; + 4689C06178B60B84E7F3A3B7 /* Qt5Widgets */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Widgets; path = "/usr/local/Qt-5.3.0/lib/libQt5Widgets$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 4C6C71914B1926119120DACD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio_private.pri"; sourceTree = ""; }; + 4D765E1B1EA6C757220C63E7 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; + 4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmldevtools_private.pri"; sourceTree = ""; }; + 5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions_private.pri"; sourceTree = ""; }; + 5A80A1907B6CFFB524C1E57D /* Qt5Core */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Core; path = "/usr/local/Qt-5.3.0/lib/libQt5Core$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri"; sourceTree = ""; }; + 5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl.pri"; sourceTree = ""; }; + 5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core_private.pri"; sourceTree = ""; }; + 6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml_private.pri"; sourceTree = ""; }; + 63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.3.0/mkspecs/macx-clang/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/macx-clang/qmake.conf"; sourceTree = ""; }; + 669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.3.0/mkspecs/common/shell-unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/shell-unix.conf"; sourceTree = ""; }; + 69347C39E4D922E94D0860BF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designercomponents_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designercomponents_private.pri"; sourceTree = ""; }; + 6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport.pri"; sourceTree = ""; }; + 6C95BA41C0AD8CEBCDD59F5B /* metastyle_plugin_import.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = metastyle_plugin_import.cpp; sourceTree = ""; }; + 6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.3.0/mkspecs/qdevice.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/qdevice.pri"; sourceTree = ""; }; + 6FF81CB4A724CE1990CEE99A /* msmain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = msmain.h; path = SourceFiles/_other/msmain.h; sourceTree = ""; }; + 74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri"; sourceTree = ""; }; + 77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent.pri"; sourceTree = ""; }; + 7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative.pri"; sourceTree = ""; }; + 7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer_private.pri"; sourceTree = ""; }; + 7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent_private.pri"; sourceTree = ""; }; + 7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql.pri"; sourceTree = ""; }; + 7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core.pri"; sourceTree = ""; }; + 817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.3.0/mkspecs/common/macx.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/macx.conf"; sourceTree = ""; }; + 82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickparticles_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickparticles_private.pri"; sourceTree = ""; }; + 83D37373949868693FB7816D /* qmng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qmng; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqmng$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 85061B1DA49D125991117950 /* /usr/local/Qt-5.3.0/mkspecs/macx-xcode/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/macx-xcode/qmake.conf"; sourceTree = ""; }; + 85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors.pri"; sourceTree = ""; }; + 861D2151FB56504EB72BDB6E /* moc_genstyles.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_genstyles.cpp; path = GeneratedFiles/Debug/moc_genstyles.cpp; sourceTree = ""; }; + 87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri"; sourceTree = ""; }; + 87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets_private.pri"; sourceTree = ""; }; + 8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib_private.pri"; sourceTree = ""; }; + 892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri"; sourceTree = ""; }; + 89863CCAF1D29037AE95755D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative_private.pri"; sourceTree = ""; }; + 8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc.pri"; sourceTree = ""; }; + 8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri"; sourceTree = ""; }; + 8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick_private.pri"; sourceTree = ""; }; + 8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.3.0/mkspecs/common/clang.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/clang.conf"; sourceTree = ""; }; + 8CF51323544B886B8F4A2232 /* qwbmp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwbmp; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqwbmp$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 8D9815BDB5BD9F90D2BC05C5 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = ""; }; + 8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg_private.pri"; sourceTree = ""; }; + 8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets_private.pri"; sourceTree = ""; }; + 8F500B5166907B6D9A7C3E3D /* qico */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qico; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqico$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_platformsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_platformsupport_private.pri"; sourceTree = ""; }; + 8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets.pri"; sourceTree = ""; }; + 946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmng.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmng.pri"; sourceTree = ""; }; + 9742F24EE18EA44D52824F1E /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; + 9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qqt7engine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qqt7engine.pri"; sourceTree = ""; }; + 9DFF62A901D70814B8A323D4 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; + A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets.pri"; sourceTree = ""; }; + A1A67BEAA744704B29168D39 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; + A35D133D7C0EFB42FA85D194 /* genstyles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = genstyles.h; path = SourceFiles/_other/genstyles.h; sourceTree = ""; }; + A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri"; sourceTree = ""; }; + A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools_private.pri"; sourceTree = ""; }; + A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras.pri"; sourceTree = ""; }; + A9E30FA27827990C5F182223 /* /usr/local/Qt-5.3.0/mkspecs/common/gcc-base-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/gcc-base-mac.conf"; sourceTree = ""; }; + AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml.pri"; sourceTree = ""; }; + AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri"; sourceTree = ""; }; + AB745978DF0F41D1801ABDA6 /* .qmake.stash */ = {isa = PBXFileReference; lastKnownFileType = file; path = .qmake.stash; sourceTree = ""; }; + ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest_private.pri"; sourceTree = ""; }; + ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth.pri"; sourceTree = ""; }; + ADC6308023253CEA51F86E21 /* qwebp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwebp; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqwebp$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg.pri"; sourceTree = ""; }; + AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcocoa.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcocoa.pri"; sourceTree = ""; }; + B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsqlite.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsqlite.pri"; sourceTree = ""; }; + B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets_private.pri"; sourceTree = ""; }; + B26239063A068F800A2C95F4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwebp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwebp.pri"; sourceTree = ""; }; + B382B645B34234E451AE5D94 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml.pri"; sourceTree = ""; }; + B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools_private.pri"; sourceTree = ""; }; + B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc_private.pri"; sourceTree = ""; }; + B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qminimal.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qminimal.pri"; sourceTree = ""; }; + B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri"; sourceTree = ""; }; + B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri"; sourceTree = ""; }; + BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtiff.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtiff.pri"; sourceTree = ""; }; + BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bootstrap_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bootstrap_private.pri"; sourceTree = ""; }; + BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors_private.pri"; sourceTree = ""; }; + BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport.pri"; sourceTree = ""; }; + C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qico.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qico.pri"; sourceTree = ""; }; + C505A18319B9B63C63877858 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script_private.pri"; sourceTree = ""; }; + C84546C18DCBB04166195DCF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri"; sourceTree = ""; }; + CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qoffscreen.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qoffscreen.pri"; sourceTree = ""; }; + CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools.pri"; sourceTree = ""; }; + CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_clucene_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_clucene_private.pri"; sourceTree = ""; }; + CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script.pri"; sourceTree = ""; }; + CFFBE05DB004895080314289 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvgicon.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvgicon.pri"; sourceTree = ""; }; + D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport_private.pri"; sourceTree = ""; }; + D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri"; sourceTree = ""; }; + D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia.pri"; sourceTree = ""; }; + D3D1BE0BEA3AEE0551AD39AC /* qdds */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qdds; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqdds$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + D4B32C2222F82AC56BADEB21 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; + D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.3.0/mkspecs/qconfig.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/qconfig.pri"; sourceTree = ""; }; + D5141F795670589C8CC41CBC /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri"; sourceTree = ""; }; + D53D8E6A188E05078A114294 /* qcocoa */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qcocoa; path = "/usr/local/Qt-5.3.0/plugins/platforms/libqcocoa$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + D6193B79CECC9DD0142D1200 /* qtharfbuzzng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtharfbuzzng; path = "/usr/local/Qt-5.3.0/lib/libqtharfbuzzng$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help_private.pri"; sourceTree = ""; }; + D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui_private.pri"; sourceTree = ""; }; + D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets.pri"; sourceTree = ""; }; + DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib.pri"; sourceTree = ""; }; + DBF506D10449BFABD45B82DA /* Qt5PrintSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PrintSupport; path = "/usr/local/Qt-5.3.0/lib/libQt5PrintSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + DCEFD9167C239650120B0145 /* qtga */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtga; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqtga$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + DF8188E30892A4654B984221 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest.pri"; sourceTree = ""; }; + DFD7912080BC557230093752 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; + E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl_private.pri"; sourceTree = ""; }; + E37365B4489B4918BEBB707D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml_private.pri"; sourceTree = ""; }; + E432DA897A5F027987342E8F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions.pri"; sourceTree = ""; }; + E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools.pri"; sourceTree = ""; }; + E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning_private.pri"; sourceTree = ""; }; + E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PlatformSupport; path = "/usr/local/Qt-5.3.0/lib/libQt5PlatformSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia_private.pri"; sourceTree = ""; }; + EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri"; sourceTree = ""; }; + EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qicns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qicns.pri"; sourceTree = ""; }; + EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri"; sourceTree = ""; }; + EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.3.0/mkspecs/common/mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/mac.conf"; sourceTree = ""; }; + EF5243ECB3132AF2796F09DF /* msmain.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = msmain.cpp; path = SourceFiles/_other/msmain.cpp; sourceTree = ""; }; + F0681BC551FC8A2B132FC646 /* qjp2 */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qjp2; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqjp2$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + F0A58515945747E36783CC21 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri"; sourceTree = ""; }; + F2453BA07315EB9F34F1CD57 /* qtiff */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtiff; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqtiff$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer.pri"; sourceTree = ""; }; + F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.3.0/mkspecs/common/clang-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/clang-mac.conf"; sourceTree = ""; }; + F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri"; sourceTree = ""; }; + F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning.pri"; sourceTree = ""; }; + F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvg.pri"; sourceTree = ""; }; + F8BC976260B6D624F23C32D6 /* genstyles.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = genstyles.cpp; path = SourceFiles/_other/genstyles.cpp; sourceTree = ""; }; + F9BEAA743A908603687DA204 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri"; sourceTree = ""; }; + FCC237CA5AD60B9BA4447615 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help.pri"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D1C883685E82D5676953459A /* Link Binary With Libraries */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1BB705CDB741E2B7450201A5 /* Cocoa.framework in Link Binary With Libraries */, + 328FD74542F6E2C873EE4D4B /* ApplicationServices.framework in Link Binary With Libraries */, + 668DDDA0C55405E7FCFD6CA5 /* CoreServices.framework in Link Binary With Libraries */, + F8B465CE34D8DF87AAE95913 /* CoreFoundation.framework in Link Binary With Libraries */, + F26454630C80841CBDCFE1CA /* Foundation.framework in Link Binary With Libraries */, + 8771A8C96E9C391044035D99 /* OpenGL.framework in Link Binary With Libraries */, + E45E51A644D5FC9F942ECE55 /* AGL.framework in Link Binary With Libraries */, + D1FA8AF31837B51C762A9D4D /* qcocoa in Link Binary With Libraries */, + F8ED42CF8679BF83227DAFC4 /* Carbon.framework in Link Binary With Libraries */, + 8D267F2E4776F0ECA2F49DC8 /* IOKit.framework in Link Binary With Libraries */, + 1A681B886F50EE30FBE62B4B /* Qt5PrintSupport in Link Binary With Libraries */, + D22929A2B8C5281567FCACDC /* Qt5PlatformSupport in Link Binary With Libraries */, + BE6AB9DF1C4880624131C669 /* Qt5Widgets in Link Binary With Libraries */, + A9563D9C9FD0D76FAAF1CA96 /* qdds in Link Binary With Libraries */, + 7CA5405B8503BFFC60932D2B /* qicns in Link Binary With Libraries */, + 496FD9CEEB508016AFB9F928 /* qico in Link Binary With Libraries */, + 59789101736112A570B8EFE6 /* qjp2 in Link Binary With Libraries */, + FBD56E2AC34F76BFFDB68619 /* qmng in Link Binary With Libraries */, + 7F76437B577F737145996DC3 /* qtga in Link Binary With Libraries */, + C06DDE378A7AC1FA9E6FF69A /* qtiff in Link Binary With Libraries */, + A3F8F2284013928A02AE5C38 /* qwbmp in Link Binary With Libraries */, + F4D3747C3A03B25EDC9057BB /* qwebp in Link Binary With Libraries */, + 9F33AC0693BC81B27D8F518D /* Qt5Gui in Link Binary With Libraries */, + 8D33FE22B9BBADC7FA46C15B /* qtharfbuzzng in Link Binary With Libraries */, + B9ADD90C014EA3FBE351DF03 /* Qt5Core in Link Binary With Libraries */, + ); + name = "Link Binary With Libraries"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 25B08E2869634E9BCBA333A2 /* Generated Sources */ = { + isa = PBXGroup; + children = ( + D0B536A85E53302E4F66CE23 /* GeneratedFiles */, + ); + name = "Generated Sources"; + sourceTree = ""; + }; + 2EB56BE3C2D93CDAB0C52E67 /* Sources */ = { + isa = PBXGroup; + children = ( + 73F2E45FDEB381A085D37A49 /* SourceFiles */, + 6C95BA41C0AD8CEBCDD59F5B /* metastyle_plugin_import.cpp */, + ); + name = Sources; + sourceTree = ""; + }; + 31562E815E3DF5B1A777D3EF /* _other */ = { + isa = PBXGroup; + children = ( + EF5243ECB3132AF2796F09DF /* msmain.cpp */, + F8BC976260B6D624F23C32D6 /* genstyles.cpp */, + 6FF81CB4A724CE1990CEE99A /* msmain.h */, + A35D133D7C0EFB42FA85D194 /* genstyles.h */, + ); + name = _other; + sourceTree = ""; + }; + 73F2E45FDEB381A085D37A49 /* SourceFiles */ = { + isa = PBXGroup; + children = ( + 31562E815E3DF5B1A777D3EF /* _other */, + ); + name = SourceFiles; + sourceTree = ""; + }; + 74B182DB50CB5611B5C1C297 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 10F719DFC6D0B05605ED1C16 /* MetaStyle.pro */, + 6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.3.0/mkspecs/qdevice.pri */, + 669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.3.0/mkspecs/common/shell-unix.conf */, + 0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.3.0/mkspecs/common/unix.conf */, + EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.3.0/mkspecs/common/mac.conf */, + 817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.3.0/mkspecs/common/macx.conf */, + 45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.3.0/mkspecs/common/gcc-base.conf */, + A9E30FA27827990C5F182223 /* /usr/local/Qt-5.3.0/mkspecs/common/gcc-base-mac.conf */, + 8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.3.0/mkspecs/common/clang.conf */, + F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.3.0/mkspecs/common/clang-mac.conf */, + D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.3.0/mkspecs/qconfig.pri */, + ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth.pri */, + 2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth_private.pri */, + BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bootstrap_private.pri */, + CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_clucene_private.pri */, + 77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent.pri */, + 7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent_private.pri */, + 7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core.pri */, + 5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core_private.pri */, + 7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative.pri */, + 89863CCAF1D29037AE95755D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative_private.pri */, + F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer.pri */, + 7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer_private.pri */, + 69347C39E4D922E94D0860BF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designercomponents_private.pri */, + 360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio.pri */, + 4C6C71914B1926119120DACD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio_private.pri */, + 23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui.pri */, + D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui_private.pri */, + FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help.pri */, + D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help_private.pri */, + A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras.pri */, + 33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras_private.pri */, + D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia.pri */, + E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia_private.pri */, + 28BD0D10214709D95B161E24 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets.pri */, + D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */, + 293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network.pri */, + 382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network_private.pri */, + 8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc.pri */, + B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc_private.pri */, + 5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl.pri */, + E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl_private.pri */, + E432DA897A5F027987342E8F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions.pri */, + 5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions_private.pri */, + 8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_platformsupport_private.pri */, + F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning.pri */, + E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning_private.pri */, + 6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport.pri */, + D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport_private.pri */, + B382B645B34234E451AE5D94 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml.pri */, + 6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml_private.pri */, + 4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */, + DF8188E30892A4654B984221 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest.pri */, + ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest_private.pri */, + 5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */, + 16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick.pri */, + 8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick_private.pri */, + 82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickparticles_private.pri */, + D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets.pri */, + B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */, + CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script.pri */, + C505A18319B9B63C63877858 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script_private.pri */, + CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools.pri */, + A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools_private.pri */, + 85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors.pri */, + BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors_private.pri */, + BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport.pri */, + 311004331A04F3D69C98643C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport_private.pri */, + 7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql.pri */, + 075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql_private.pri */, + ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg.pri */, + 8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg_private.pri */, + DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib.pri */, + 8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib_private.pri */, + E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools.pri */, + B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools_private.pri */, + 8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets.pri */, + 87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets_private.pri */, + A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets.pri */, + 8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets_private.pri */, + AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml.pri */, + E37365B4489B4918BEBB707D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml_private.pri */, + 2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns.pri */, + F9BEAA743A908603687DA204 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */, + D5141F795670589C8CC41CBC /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */, + 1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfcamera.pri */, + F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */, + AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcocoa.pri */, + EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */, + 111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdds.pri */, + 3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */, + 2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */, + EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qicns.pri */, + C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qico.pri */, + 45DB132B756499D4DF38430E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qjp2.pri */, + B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qminimal.pri */, + F0A58515945747E36783CC21 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */, + B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */, + EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */, + 3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */, + 946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmng.pri */, + CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qoffscreen.pri */, + 9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qqt7engine.pri */, + B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsqlite.pri */, + F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvg.pri */, + CFFBE05DB004895080314289 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvgicon.pri */, + 247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */, + 87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */, + 24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */, + 060A694B42A4555240009936 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtga.pri */, + BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtiff.pri */, + B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */, + 74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */, + C84546C18DCBB04166195DCF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */, + AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */, + 8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */, + 892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */, + A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */, + 346287C9E754E7C458153F03 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwbmp.pri */, + B26239063A068F800A2C95F4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwebp.pri */, + 63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.3.0/mkspecs/macx-clang/qmake.conf */, + 85061B1DA49D125991117950 /* /usr/local/Qt-5.3.0/mkspecs/macx-xcode/qmake.conf */, + AB745978DF0F41D1801ABDA6 /* .qmake.stash */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 801973D3334D0FCA849CF485 /* Debug */ = { + isa = PBXGroup; + children = ( + 861D2151FB56504EB72BDB6E /* moc_genstyles.cpp */, + ); + name = Debug; + sourceTree = ""; + }; + AF39DD055C3EF8226FBE929D /* Frameworks */ = { + isa = PBXGroup; + children = ( + AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */, + DFD7912080BC557230093752 /* ApplicationServices.framework */, + 9742F24EE18EA44D52824F1E /* CoreServices.framework */, + 4D765E1B1EA6C757220C63E7 /* CoreFoundation.framework */, + FCC237CA5AD60B9BA4447615 /* Foundation.framework */, + D4B32C2222F82AC56BADEB21 /* OpenGL.framework */, + 8D9815BDB5BD9F90D2BC05C5 /* AGL.framework */, + D53D8E6A188E05078A114294 /* qcocoa */, + 9DFF62A901D70814B8A323D4 /* Carbon.framework */, + A1A67BEAA744704B29168D39 /* IOKit.framework */, + DBF506D10449BFABD45B82DA /* Qt5PrintSupport */, + E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */, + 4689C06178B60B84E7F3A3B7 /* Qt5Widgets */, + D3D1BE0BEA3AEE0551AD39AC /* qdds */, + 31120EDB269DFF13E1D49847 /* qicns */, + 8F500B5166907B6D9A7C3E3D /* qico */, + F0681BC551FC8A2B132FC646 /* qjp2 */, + 83D37373949868693FB7816D /* qmng */, + DCEFD9167C239650120B0145 /* qtga */, + F2453BA07315EB9F34F1CD57 /* qtiff */, + 8CF51323544B886B8F4A2232 /* qwbmp */, + ADC6308023253CEA51F86E21 /* qwebp */, + 04391BE7A8B9D811E255100A /* Qt5Gui */, + D6193B79CECC9DD0142D1200 /* qtharfbuzzng */, + 5A80A1907B6CFFB524C1E57D /* Qt5Core */, + ); + name = Frameworks; + sourceTree = ""; + }; + D0B536A85E53302E4F66CE23 /* GeneratedFiles */ = { + isa = PBXGroup; + children = ( + 801973D3334D0FCA849CF485 /* Debug */, + ); + name = GeneratedFiles; + sourceTree = ""; + }; + E8C543AB96796ECAA2E65C57 /* MetaStyle */ = { + isa = PBXGroup; + children = ( + 2EB56BE3C2D93CDAB0C52E67 /* Sources */, + 25B08E2869634E9BCBA333A2 /* Generated Sources */, + 74B182DB50CB5611B5C1C297 /* Supporting Files */, + AF39DD055C3EF8226FBE929D /* Frameworks */, + FE0A091FDBFB3E9C31B7A1BD /* Products */, + ); + name = MetaStyle; + sourceTree = ""; + }; + FE0A091FDBFB3E9C31B7A1BD /* Products */ = { + isa = PBXGroup; + children = ( + 2CBD32689B153445ED220FAE /* MetaStyle.app */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4F0CF954E7A00B07204FA0B2 /* MetaStyle */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6CC3B5D2136C7CD6A5CF5A59 /* Build configuration list for PBXNativeTarget "MetaStyle" */; + buildPhases = ( + F7E50F631C51CD5B5DC0BC43 /* Compile Sources */, + D1C883685E82D5676953459A /* Link Binary With Libraries */, + ); + buildRules = ( + ); + dependencies = ( + CCEE60BFA9DEFDFF202AFD47 /* PBXTargetDependency */, + ); + name = MetaStyle; + productInstallPath = ../Mac/DebugStyle/; + productName = MetaStyle; + productReference = 2CBD32689B153445ED220FAE /* MetaStyle.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 6DB9C3763D02B1415CD9D565 /* Project object */ = { + isa = PBXProject; + attributes = { + }; + buildConfigurationList = DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "MetaStyle" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = E8C543AB96796ECAA2E65C57 /* MetaStyle */; + productRefGroup = FE0A091FDBFB3E9C31B7A1BD /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 4F0CF954E7A00B07204FA0B2 /* MetaStyle */, + 5E275BA59C8BA5B561E14CF4 /* Preprocess */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXShellScriptBuildPhase section */ + 07C3AF43194CCD0F0016CFF1 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "mkdir -p ./GeneratedFiles/Debug"; + }; + 7EF0942E79C014DCEC8976BC /* Qt Preprocessors */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + name = "Qt Preprocessors"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "make -C . -f MetaStyle.xcodeproj/qt_preprocess.mak"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + F7E50F631C51CD5B5DC0BC43 /* Compile Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 728CDDB7D7F2B9FF141651AD /* msmain.cpp in Compile Sources */, + 3D6772E35214B81E50791089 /* genstyles.cpp in Compile Sources */, + E5189462121C76398D36DFDC /* metastyle_plugin_import.cpp in Compile Sources */, + CBF24309A148222794F28401 /* moc_genstyles.cpp in Compile Sources */, + ); + name = "Compile Sources"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + CCEE60BFA9DEFDFF202AFD47 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 5E275BA59C8BA5B561E14CF4 /* Preprocess */; + targetProxy = 0746FEAC193D006900F5C3FD /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 339EE1B2CC4FC24589A0EA95 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = x86_64; + CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang; + COPY_PHASE_STRIP = YES; + DYLIB_COMPATIBILITY_VERSION = 1.0; + DYLIB_CURRENT_VERSION = 1.0.0; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ( + ../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui, + ../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore, + ../../Libraries/QtStatic/qtbase/include, + "/usr/local/Qt-5.3.0/include", + "/usr/local/Qt-5.3.0/include/QtGui", + "/usr/local/Qt-5.3.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.3.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.3.0/lib", + "/usr/local/Qt-5.3.0/plugins/platforms", + "/usr/local/Qt-5.3.0/plugins/imageformats", + ); + MACOSX_DEPLOYMENT_TARGET = 10.7; + OBJROOT = ../Mac/DebugIntermediateStyle/; + OTHER_CFLAGS = ( + "-pipe", + "-g", + "-Wall", + "-W", + "-fPIE", + "-D_DEBUG", + "-DQT_GUI_LIB", + "-DQT_CORE_LIB", + ); + OTHER_CPLUSPLUSFLAGS = ( + "-pipe", + "-g", + "-std=c++11", + "-stdlib=libc++", + "-Wall", + "-W", + "-fPIE", + "-D_DEBUG", + "-DQT_GUI_LIB", + "-DQT_CORE_LIB", + ); + OTHER_LDFLAGS = ( + "-headerpad_max_install_names", + "-stdlib=libc++", + "-L/usr/local/Qt-5.3.0/lib", + "-L/usr/local/Qt-5.3.0/plugins/platforms", + "-lcups", + "-L/usr/local/Qt-5.3.0/plugins/imageformats", + "-lz", + "-lm", + ); + PRODUCT_NAME = MetaStyle; + QT_LIBRARY_SUFFIX = ""; + SDKROOT = macosx; + SYMROOT = ../Mac/ReleaseStyle; + }; + name = Release; + }; + 3AA6C32AC930069E80220CF1 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = x86_64; + CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + DYLIB_COMPATIBILITY_VERSION = 1.0; + DYLIB_CURRENT_VERSION = 1.0.0; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ( + ../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui, + ../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore, + ../../Libraries/QtStatic/qtbase/include, + "/usr/local/Qt-5.3.0/include", + "/usr/local/Qt-5.3.0/include/QtGui", + "/usr/local/Qt-5.3.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.3.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.3.0/lib", + "/usr/local/Qt-5.3.0/plugins/platforms", + "/usr/local/Qt-5.3.0/plugins/imageformats", + ); + MACOSX_DEPLOYMENT_TARGET = 10.7; + OBJROOT = ../Mac/DebugIntermediateStyle/; + OTHER_CFLAGS = ( + "-pipe", + "-g", + "-Wall", + "-W", + "-fPIE", + "-D_DEBUG", + "-DQT_GUI_LIB", + "-DQT_CORE_LIB", + ); + OTHER_CPLUSPLUSFLAGS = ( + "-pipe", + "-g", + "-std=c++11", + "-stdlib=libc++", + "-Wall", + "-W", + "-fPIE", + "-D_DEBUG", + "-DQT_GUI_LIB", + "-DQT_CORE_LIB", + ); + OTHER_LDFLAGS = ( + "-headerpad_max_install_names", + "-stdlib=libc++", + "-L/usr/local/Qt-5.3.0/lib", + "-L/usr/local/Qt-5.3.0/plugins/platforms", + "-lcups", + "-L/usr/local/Qt-5.3.0/plugins/imageformats", + "-lz", + "-lm", + ); + PRODUCT_NAME = MetaStyle; + QT_LIBRARY_SUFFIX = _debug; + SDKROOT = macosx; + SYMROOT = ../Mac/DebugStyle; + }; + name = Debug; + }; + 6666AA5E688052234F6758D8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Style$(EFFECTIVE_PLATFORM_NAME)"; + COPY_PHASE_STRIP = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + HEADER_SEARCH_PATHS = ( + ./../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui, + ./../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore, + ./../../Libraries/QtStatic/qtbase/include, + "/usr/local/Qt-5.3.0/include", + "/usr/local/Qt-5.3.0/include/QtGui", + "/usr/local/Qt-5.3.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.3.0/mkspecs/macx-clang", + ); + INSTALL_DIR = ./../Mac/ReleaseStyle/; + OBJROOT = ./../Mac/ReleaseIntermediateStyle; + PRODUCT_NAME = MetaStyle; + QT_LIBRARY_SUFFIX = ""; + SDKROOT = macosx; + SYMROOT = ./../Mac; + }; + name = Release; + }; + 77418F46922677BB04ED38DD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)Style$(EFFECTIVE_PLATFORM_NAME)"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + HEADER_SEARCH_PATHS = ( + ./../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui, + ./../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore, + ./../../Libraries/QtStatic/qtbase/include, + "/usr/local/Qt-5.3.0/include", + "/usr/local/Qt-5.3.0/include/QtGui", + "/usr/local/Qt-5.3.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.3.0/mkspecs/macx-clang", + ); + INSTALL_DIR = ./../Mac/DebugStyle/; + OBJROOT = ./../Mac/DebugIntermediateStyle; + PRODUCT_NAME = MetaStyle; + QT_LIBRARY_SUFFIX = _debug; + SDKROOT = macosx; + SYMROOT = ./../Mac; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6CC3B5D2136C7CD6A5CF5A59 /* Build configuration list for PBXNativeTarget "MetaStyle" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 77418F46922677BB04ED38DD /* Debug */, + 6666AA5E688052234F6758D8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "MetaStyle" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3AA6C32AC930069E80220CF1 /* Debug */, + 339EE1B2CC4FC24589A0EA95 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = 6DB9C3763D02B1415CD9D565 /* Project object */; +} diff --git a/Telegram/MetaStyle.xcodeproj/qt_preprocess.mak b/Telegram/MetaStyle.xcodeproj/qt_preprocess.mak new file mode 100644 index 000000000..611aed8c6 --- /dev/null +++ b/Telegram/MetaStyle.xcodeproj/qt_preprocess.mak @@ -0,0 +1,67 @@ +############################################################################# +# Makefile for building: ../Mac/DebugStyle/MetaStyle.app/Contents/MacOS/MetaStyle +# Generated by qmake (3.0) (Qt 5.3.0) +# Project: MetaStyle.pro +# Template: app +# Command: /usr/local/Qt-5.3.0/bin/qmake -spec macx-xcode -o MetaStyle.xcodeproj/project.pbxproj MetaStyle.pro +############################################################################# + +MAKEFILE = project.pbxproj + +MOC = /usr/local/Qt-5.3.0/bin/moc +UIC = +LEX = flex +LEXFLAGS = +YACC = yacc +YACCFLAGS = -d +DEFINES = -D_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB +INCPATH = -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui -I../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore -I../../Libraries/QtStatic/qtbase/include -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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 = +PARSERS = +preprocess: $(PARSERS) compilers +clean preprocess_clean: parser_clean compiler_clean + +parser_clean: +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +check: first + +compilers: GeneratedFiles/Debug/moc_genstyles.cpp +compiler_objective_c_make_all: +compiler_objective_c_clean: +compiler_rcc_make_all: +compiler_rcc_clean: +compiler_moc_header_make_all: GeneratedFiles/Debug/moc_genstyles.cpp +compiler_moc_header_clean: + -$(DEL_FILE) GeneratedFiles/Debug/moc_genstyles.cpp +GeneratedFiles/Debug/moc_genstyles.cpp: ../../Libraries/QtStatic/qtbase/include/QtCore/QMap \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QVector \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QBitmap \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QBuffer \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QFileInfo \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QFile \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTextStream \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QString \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QCoreApplication \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QGuiApplication \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QPainter \ + SourceFiles/_other/genstyles.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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: +compiler_rez_source_make_all: +compiler_rez_source_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: compiler_moc_header_clean + diff --git a/Telegram/Preprocess copy-Info.plist b/Telegram/Preprocess copy-Info.plist new file mode 100644 index 000000000..053296071 --- /dev/null +++ b/Telegram/Preprocess copy-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleExecutable + Telegram + CFBundleGetInfoString + Telegram Desktop messaging app + CFBundleIdentifier + com.tdesktop.${PRODUCT_NAME:rfc1034identifier} + CFBundlePackageType + APPL + CFBundleShortVersionString + 0.5.1 + CFBundleSignature + ???? + NOTE + + NSPrincipalClass + NSApplication + + diff --git a/Telegram/SourceFiles/Telegram.plist b/Telegram/SourceFiles/Telegram.plist new file mode 100644 index 000000000..d8286c37a --- /dev/null +++ b/Telegram/SourceFiles/Telegram.plist @@ -0,0 +1,22 @@ + + + + + NSPrincipalClass + NSApplication + CFBundleIconFile + + CFBundlePackageType + APPL + CFBundleGetInfoString + Created by Qt/QMake + CFBundleSignature + ???? + CFBundleExecutable + Telegram + CFBundleIdentifier + com.yourcompany.${PRODUCT_NAME:rfc1034identifier} + NOTE + This file was generated by Qt/QMake. + + diff --git a/Telegram/SourceFiles/_other/Lang.plist b/Telegram/SourceFiles/_other/Lang.plist new file mode 100644 index 000000000..2a5b32ce2 --- /dev/null +++ b/Telegram/SourceFiles/_other/Lang.plist @@ -0,0 +1,22 @@ + + + + + NSPrincipalClass + NSApplication + CFBundleIconFile + + CFBundlePackageType + APPL + CFBundleGetInfoString + Created by Qt/QMake + CFBundleSignature + ???? + CFBundleExecutable + MetaLang + CFBundleIdentifier + com.yourcompany.${PRODUCT_NAME:rfc1034identifier} + NOTE + This file was generated by Qt/QMake. + + diff --git a/Telegram/SourceFiles/_other/Style.plist b/Telegram/SourceFiles/_other/Style.plist new file mode 100644 index 000000000..2df9c0113 --- /dev/null +++ b/Telegram/SourceFiles/_other/Style.plist @@ -0,0 +1,22 @@ + + + + + NSPrincipalClass + NSApplication + CFBundleIconFile + + CFBundlePackageType + APPL + CFBundleGetInfoString + Created by Qt/QMake + CFBundleSignature + ???? + CFBundleExecutable + MetaStyle + CFBundleIdentifier + com.yourcompany.${PRODUCT_NAME:rfc1034identifier} + NOTE + This file was generated by Qt/QMake. + + diff --git a/Telegram/SourceFiles/_other/genlang.cpp b/Telegram/SourceFiles/_other/genlang.cpp index c92b48309..ce3cee61b 100644 --- a/Telegram/SourceFiles/_other/genlang.cpp +++ b/Telegram/SourceFiles/_other/genlang.cpp @@ -17,8 +17,10 @@ Copyright (c) 2014 John Preston, https://tdesktop.com */ #include "genlang.h" +#ifdef Q_OS_WIN #include Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin) +#endif typedef unsigned int uint32; @@ -65,7 +67,7 @@ bool skipJunk(const char *&from, const char *end) { do { start = from; if (!skipWhitespaces(from, end)) return false; - if (!skipComment(from, end)) throw exception("Unexpected end of comment!"); + if (!skipComment(from, end)) throw Exception("Unexpected end of comment!"); } while (start != from); return true; } @@ -74,35 +76,35 @@ void readKeyValue(const char *&from, const char *end) { if (!skipJunk(from, end)) return; const char *nameStart = from; - while (from < end && (*from >= 'a' && *from <= 'z' || *from >= 'A' && *from <= 'Z' || *from == '_' || *from >= '0' && *from <= '9')) { + while (from < end && ((*from >= 'a' && *from <= 'z') || (*from >= 'A' && *from <= 'Z') || *from == '_' || (*from >= '0' && *from <= '9'))) { ++from; } - QString varName = QString::fromUtf8(nameStart, from - nameStart); + QString varName = QString::fromUtf8(nameStart, int(from - nameStart)); - if (!skipJunk(from, end)) throw exception("Unexpected end of file!"); - if (*from != ':') throw exception(QString("':' expected after '%1'").arg(varName).toUtf8().constData()); + if (!skipJunk(from, end)) throw Exception("Unexpected end of file!"); + if (*from != ':') throw Exception(QString("':' expected after '%1'").arg(varName)); - if (!skipJunk(++from, end)) throw exception("Unexpected end of file!"); - if (*from != '"') throw exception(QString("Expected string after '%1:'").arg(varName).toUtf8().constData()); + if (!skipJunk(++from, end)) throw Exception("Unexpected end of file!"); + if (*from != '"') throw Exception(QString("Expected string after '%1:'").arg(varName)); QByteArray varValue; const char *start = ++from; while (from < end && *from != '"') { if (*from == '\\') { - if (from + 1 >= end) throw exception("Unexpected end of file!"); + if (from + 1 >= end) throw Exception("Unexpected end of file!"); if (*(from + 1) == '"' || *(from + 1) == '\\') { - if (from > start) varValue.append(start, from - start); + if (from > start) varValue.append(start, int(from - start)); start = ++from; } } ++from; } - if (from >= end) throw exception("Unexpected end of file!"); - if (from > start) varValue.append(start, from - start); + if (from >= end) throw Exception("Unexpected end of file!"); + if (from > start) varValue.append(start, int(from - start)); - if (!skipJunk(++from, end)) throw exception("Unexpected end of file!"); - if (*from != ';') throw exception(QString("';' expected after '%1: \"value\"'").arg(varName).toUtf8().constData()); + if (!skipJunk(++from, end)) throw Exception("Unexpected end of file!"); + if (*from != ';') throw Exception(QString("';' expected after '%1: \"value\"'").arg(varName)); skipJunk(++from, end); @@ -110,12 +112,12 @@ void readKeyValue(const char *&from, const char *end) { if (varValue == "LTR" || varValue == "RTL") { layoutDirection = QString::fromUtf8(varValue); } else { - throw exception(QString("Unexpected value for 'direction' key: '%1'").arg(QString::fromUtf8(varValue)).toUtf8().constData()); + throw Exception(QString("Unexpected value for 'direction' key: '%1'").arg(QString::fromUtf8(varValue))); } } else if (varName.midRef(0, 4) != "lng_") { - throw exception(QString("Bad key '%1'").arg(varName).toUtf8().constData()); + throw Exception(QString("Bad key '%1'").arg(varName)); } else if (keys.constFind(varName) != keys.cend()) { - throw exception(QString("Key doubled '%1'").arg(varName).toUtf8().constData()); + throw Exception(QString("Key doubled '%1'").arg(varName)); } else { keys.insert(varName, QString::fromUtf8(varValue)); keysOrder.push_back(varName); @@ -130,7 +132,7 @@ QString escapeCpp(const QString &key, QString value, bool wideChar) { bool instr = false; for (const QChar *ch = value.constData(), *e = value.constData() + value.size(); ch != e; ++ch) { if (ch->unicode() < 32) { - throw exception(QString("Bad value for key '%1'").arg(key).toUtf8().constData()); + throw Exception(QString("Bad value for key '%1'").arg(key)); } else if (ch->unicode() > 127) { if (instr) { res.append('"'); @@ -428,8 +430,8 @@ Copyright (c) 2014 John Preston, https://tdesktop.com\n\ } if (write_cpp) { cout << "lang.cpp updated, writing " << keysOrder.size() << " rows.\n"; - if (!cpp.open(QIODevice::WriteOnly)) throw exception("Could not open lang.cpp for writing!"); - if (cpp.write(cppText) != cppText.size()) throw exception("Could not open lang.cpp for writing!"); + if (!cpp.open(QIODevice::WriteOnly)) throw Exception("Could not open lang.cpp for writing!"); + if (cpp.write(cppText) != cppText.size()) throw Exception("Could not open lang.cpp for writing!"); } if (h.open(QIODevice::ReadOnly)) { QByteArray wasH = h.readAll(); @@ -442,8 +444,8 @@ Copyright (c) 2014 John Preston, https://tdesktop.com\n\ } if (write_h) { cout << "lang.h updated, writing " << keysOrder.size() << " rows.\n"; - if (!h.open(QIODevice::WriteOnly)) throw exception("Could not open lang.h for writing!"); - if (h.write(hText) != hText.size()) throw exception("Could not open lang.h for writing!"); + if (!h.open(QIODevice::WriteOnly)) throw Exception("Could not open lang.h for writing!"); + if (h.write(hText) != hText.size()) throw Exception("Could not open lang.h for writing!"); } } catch (exception &e) { cout << e.what() << "\n"; diff --git a/Telegram/SourceFiles/_other/genlang.h b/Telegram/SourceFiles/_other/genlang.h index 31f8b4609..e4bc246dd 100644 --- a/Telegram/SourceFiles/_other/genlang.h +++ b/Telegram/SourceFiles/_other/genlang.h @@ -35,6 +35,22 @@ using std::cout; using std::cerr; using std::exception; +class Exception : public exception { +public: + + Exception(const QString &msg) : _msg(msg) { + } + + virtual const char *what() const throw() { + return _msg.toUtf8().constData(); + } + virtual ~Exception() throw() { + } + +private: + QString _msg; +}; + bool genLang(const QString &lang_in, const QString &lang_out); class GenLang : public QObject { diff --git a/Telegram/SourceFiles/_other/genstyles.cpp b/Telegram/SourceFiles/_other/genstyles.cpp index 23b2cf3f6..b2dddf68b 100644 --- a/Telegram/SourceFiles/_other/genstyles.cpp +++ b/Telegram/SourceFiles/_other/genstyles.cpp @@ -17,8 +17,10 @@ Copyright (c) 2014 John Preston, https://tdesktop.com */ #include "genstyles.h" +#ifdef Q_OS_WIN #include Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin) +#endif enum ScalarType { scNumber, @@ -108,12 +110,12 @@ bool skipComment(const char *&from, const char *end) { } void readName(const char *&from, const char *end, string &token) { - if (from >= end) throw exception("Unexpected end of file!"); + if (from >= end) throw Exception("Unexpected end of file!"); const char *start = from; char ch = *from; if (!((ch >= 'a' && ch <= 'z') || ((ch >= 'A') && (ch <= 'Z')))) { - throw exception("Unknown error :("); + throw Exception("Unknown error :("); } while (++from < end) { ch = *from; @@ -123,12 +125,12 @@ void readName(const char *&from, const char *end, string &token) { } void readString(const char *&from, const char *end, string &token) { - if (from + 1 >= end) throw exception("Unexpected end of file!"); + if (from + 1 >= end) throw Exception("Unexpected end of file!"); token = ""; char border = *from; if (border != '"' && border != '\'') { - throw exception("Unknown error :("); + throw Exception("Unknown error :("); } bool spec = false; @@ -143,13 +145,13 @@ void readString(const char *&from, const char *end, string &token) { } else if (*from == '\\' || *from == '"' || *from == '\'') { token += *from; } else { - throw exception(QString("Unexpected escaped character in string: %1").arg(*from).toUtf8().constData()); + throw Exception(QString("Unexpected escaped character in string: %1").arg(*from)); } spec = false; } else { token += *from; } - if (++from >= end) throw exception("Unexpected end of file!"); + if (++from >= end) throw Exception("Unexpected end of file!"); } ++from; } @@ -162,20 +164,20 @@ char hexChar(char ch) { } void readColor(const char *&from, const char *end, string &token) { - if (from + 3 >= end) throw exception("Unexpected end of file!"); + if (from + 3 >= end) throw Exception("Unexpected end of file!"); token.resize(8); int len = 0; for (const char *ch = from + 1; ch < end; ++ch) { - if (*ch >= '0' && *ch <= '9' || *ch >= 'A' && *ch <= 'F' || *ch >= 'a' && *ch <= 'f') { + if ((*ch >= '0' && *ch <= '9') || (*ch >= 'A' && *ch <= 'F') || (*ch >= 'a' && *ch <= 'f')) { ++len; } else { break; } } if (len != 3 && len != 4 && len != 6 && len != 8) { - throw exception("Bad color token"); + throw Exception("Bad color token"); } if (len == 3 || len == 4) { token[0] = token[1] = hexChar(*(++from)); @@ -204,21 +206,20 @@ void readColor(const char *&from, const char *end, string &token) { } void readNumber(const char *&from, const char *end, string &token) { - if (from >= end) throw exception("Unexpected end of file!"); + if (from >= end) throw Exception("Unexpected end of file!"); bool neg = false; if (*from == '-') { neg = true; - if (++from >= end) throw exception("Unexpected end of file!"); + if (++from >= end) throw Exception("Unexpected end of file!"); } - if (*from == '0' && from < end && *(from + 1) >= '0' && *(from + 1) <= '9') throw exception("Bad number token!"); + if (*from == '0' && from < end && *(from + 1) >= '0' && *(from + 1) <= '9') throw Exception("Bad number token!"); - bool wasDot = false; token = neg ? "-" : ""; for (bool wasDot = false; from < end; ++from) { if (*from == '.') { - if (wasDot) throw exception("Unexpected dot in number!"); + if (wasDot) throw Exception("Unexpected dot in number!"); wasDot = true; } else if (*from < '0' || *from > '9') { break; @@ -231,8 +232,8 @@ void readClassGenToken(const char *&from, const char *end, ClassGenTokenType &to const char *start; do { start = from; - if (!skipWhitespaces(from, end)) throw exception("Unexpected end of file!"); - if (!skipComment(from, end)) throw exception("Unexpected end of comment!"); + if (!skipWhitespaces(from, end)) throw Exception("Unexpected end of file!"); + if (!skipComment(from, end)) throw Exception("Unexpected end of comment!"); } while (start != from); if ((*from >= 'a' && *from <= 'z') || ((*from >= 'A') && (*from <= 'Z'))) { @@ -247,7 +248,7 @@ void readClassGenToken(const char *&from, const char *end, ClassGenTokenType &to } else if (*from == '}') { tokenType = csClassFinish; } else { - throw exception("Could not parse token!"); + throw Exception("Could not parse token!"); } ++from; return; @@ -289,7 +290,7 @@ bool genClasses(const QString &classes_in, const QString &classes_out) { break; } if (type != csName) { - throw exception(QString("Unexpected token, type %1: %2").arg(type).arg(token.c_str()).toUtf8().constData()); + throw Exception(QString("Unexpected token, type %1: %2").arg(type).arg(token.c_str())); } byIndex.push_back(ClassData()); @@ -298,14 +299,14 @@ bool genClasses(const QString &classes_in, const QString &classes_out) { readClassGenToken(text, end, type, token); if (type == csDelimeter) { readClassGenToken(text, end, type, token); - if (type != csName) throw exception(QString("Unexpected token after '%1:', type %2").arg(cls.name.c_str()).arg(type).toUtf8().constData()); + if (type != csName) throw Exception(QString("Unexpected token after '%1:', type %2").arg(cls.name.c_str()).arg(type)); QMap::const_iterator i = byName.constFind(token); - if (i == byName.cend()) throw exception(QString("Parent class '%1' not found for class '%2'").arg(token.c_str()).arg(cls.name.c_str()).toUtf8().constData()); + if (i == byName.cend()) throw Exception(QString("Parent class '%1' not found for class '%2'").arg(token.c_str()).arg(cls.name.c_str())); cls.fields = byIndex[i.value()].fields; readClassGenToken(text, end, type, token); } - if (type != csClassStart) throw exception(QString("Unexpected token after '%1:%2', type %3").arg(cls.name.c_str()).arg(token.c_str()).arg(type).toUtf8().constData()); + if (type != csClassStart) throw Exception(QString("Unexpected token after '%1:%2', type %3").arg(cls.name.c_str()).arg(token.c_str()).arg(type)); do { string fname, ftype; @@ -314,13 +315,13 @@ bool genClasses(const QString &classes_in, const QString &classes_out) { byName.insert(cls.name, byIndex.size() - 1); break; } - if (type != csName) throw exception(QString("Unexpected token %1 while reading class '%2'").arg(type).arg(cls.name.c_str()).toUtf8().constData()); + if (type != csName) throw Exception(QString("Unexpected token %1 while reading class '%2'").arg(type).arg(cls.name.c_str())); readClassGenToken(text, end, type, token); - if (type != csDelimeter) throw exception(QString("Unexpected token %1 while reading field '%2' in class '%3'").arg(type).arg(fname.c_str()).arg(cls.name.c_str()).toUtf8().constData()); + if (type != csDelimeter) throw Exception(QString("Unexpected token %1 while reading field '%2' in class '%3'").arg(type).arg(fname.c_str()).arg(cls.name.c_str())); readClassGenToken(text, end, type, ftype); - if (type != csName) throw exception(QString("Unexpected token %1 while reading field '%2' in class '%3'").arg(type).arg(fname.c_str()).arg(cls.name.c_str()).toUtf8().constData()); + if (type != csName) throw Exception(QString("Unexpected token %1 while reading field '%2' in class '%3'").arg(type).arg(fname.c_str()).arg(cls.name.c_str())); readClassGenToken(text, end, type, token); - if (type != csFieldFinish) throw exception(QString("Unexpected token %1 while reading field '%2:%3' in class '%4'").arg(type).arg(fname.c_str()).arg(ftype.c_str()).arg(cls.name.c_str()).toUtf8().constData()); + if (type != csFieldFinish) throw Exception(QString("Unexpected token %1 while reading field '%2:%3' in class '%4'").arg(type).arg(fname.c_str()).arg(ftype.c_str()).arg(cls.name.c_str())); ScalarType typeIndex = scTypesCount; for (int t = 0; t < scTypesCount; ++t) { @@ -329,9 +330,9 @@ bool genClasses(const QString &classes_in, const QString &classes_out) { break; } } - if (typeIndex == scTypesCount) throw exception(QString("Unknown field type %1 while reading field '%2' in class '%3'").arg(ftype.c_str()).arg(fname.c_str()).arg(cls.name.c_str()).toUtf8().constData()); + if (typeIndex == scTypesCount) throw Exception(QString("Unknown field type %1 while reading field '%2' in class '%3'").arg(ftype.c_str()).arg(fname.c_str()).arg(cls.name.c_str())); FieldTypesMap::const_iterator alr = cls.fields.find(fname); - if (alr != cls.fields.cend()) throw exception(QString("Redeclaration of field '%1' in class '%2'").arg(fname.c_str()).arg(cls.name.c_str()).toUtf8().constData()); + if (alr != cls.fields.cend()) throw Exception(QString("Redeclaration of field '%1' in class '%2'").arg(fname.c_str()).arg(cls.name.c_str())); cls.fields.insert(fname, typeIndex); } while(true); } @@ -402,8 +403,8 @@ Copyright (c) 2014 John Preston, https://tdesktop.com\n\ out.close(); } cout << "Style classes compiled, writing " << byIndex.size() << " classes.\n"; - if (!out.open(QIODevice::WriteOnly)) throw exception("Could not open style_classes.h for writing!"); - if (out.write(outText) != outText.size()) throw exception("Could not open style_classes.h for writing!"); + if (!out.open(QIODevice::WriteOnly)) throw Exception("Could not open style_classes.h for writing!"); + if (out.write(outText) != outText.size()) throw Exception("Could not open style_classes.h for writing!"); } catch (exception &e) { cout << e.what() << "\n"; QCoreApplication::exit(1); @@ -439,8 +440,8 @@ void readStyleGenToken(const char *&from, const char *end, StyleGenTokenType &to const char *start; do { start = from; - if (!skipWhitespaces(from, end)) throw exception("Unexpected end of file!"); - if (!skipComment(from, end)) throw exception("Unexpected end of comment!"); + if (!skipWhitespaces(from, end)) throw Exception("Unexpected end of file!"); + if (!skipComment(from, end)) throw Exception("Unexpected end of comment!"); } while (start != from); if ((*from >= 'a' && *from <= 'z') || ((*from >= 'A') && (*from <= 'Z'))) { @@ -452,7 +453,7 @@ void readStyleGenToken(const char *&from, const char *end, StyleGenTokenType &to } else if (*from == '#') { tokenType = stColor; return readColor(from, end, token); - } else if (*from == '.' || *from >= '0' && *from <= '9' || *from == '-') { + } else if (*from == '.' || (*from >= '0' && *from <= '9') || *from == '-') { tokenType = stNumber; return readNumber(from, end, token); } else if (*from == ':') { @@ -472,7 +473,7 @@ void readStyleGenToken(const char *&from, const char *end, StyleGenTokenType &to } else if (*from == '/') { tokenType = stVariant; } else { - throw exception("Could not parse token!"); + throw Exception("Could not parse token!"); } ++from; return; @@ -547,7 +548,7 @@ ScalarValue prepareString(int variant, const string &token) { string result; result.reserve(token.length() * 2); result += "(qsl(\""; - for (int i = 0, l = token.length(); i < l; ++i) { + for (quint64 i = 0, l = token.length(); i < l; ++i) { if (token[i] == '\n') { result += "\\n"; } else if (token[i] == '\r') { @@ -626,28 +627,28 @@ ScalarValue prepareColorRGB(int variant, const string &name, const char *&text, string token; readStyleGenToken(text, end, type, token); - if (type != stConsStart) throw exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type).toUtf8().constData()); + if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type)); string r = token; readStyleGenToken(text, end, type, token); - if (type != stComma) throw exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type)); string g = token; readStyleGenToken(text, end, type, token); - if (type != stComma) throw exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type)); string b = token; readStyleGenToken(text, end, type, token); - if (type != stConsFinish) throw exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type).toUtf8().constData()); + if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading rgb() cons!").arg(type)); Color c; c.color = QString("%1, %2, %3, 255").arg(r.c_str()).arg(g.c_str()).arg(b.c_str()).toUtf8().constData(); @@ -665,35 +666,35 @@ ScalarValue prepareColorRGBA(int variant, const string &name, const char *&text, string token; readStyleGenToken(text, end, type, token); - if (type != stConsStart) throw exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type).toUtf8().constData()); + if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type)); string r = token; readStyleGenToken(text, end, type, token); - if (type != stComma) throw exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type)); string g = token; readStyleGenToken(text, end, type, token); - if (type != stComma) throw exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type)); string b = token; readStyleGenToken(text, end, type, token); - if (type != stComma) throw exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type)); string a = token; readStyleGenToken(text, end, type, token); - if (type != stConsFinish) throw exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type).toUtf8().constData()); + if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading rgba() cons!").arg(type)); Color c; c.color = QString("%1, %2, %3, %4").arg(r.c_str()).arg(g.c_str()).arg(b.c_str()).arg(a.c_str()).toUtf8().constData(); @@ -711,39 +712,39 @@ ScalarValue prepareRect(int variant, const char *&text, const char *end) { string token; readStyleGenToken(text, end, type, token); - if (type != stConsStart) throw exception(QString("Unexpected token %1 while reading rect() cons!").arg(type).toUtf8().constData()); + if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading rect() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type)); string x = token; bool xpx = readPxAfterNumber(text, end); readStyleGenToken(text, end, type, token); - if (type != stComma) throw exception(QString("Unexpected token %1 while reading rect() cons!").arg(type).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading rect() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type)); string y = token; bool ypx = readPxAfterNumber(text, end); readStyleGenToken(text, end, type, token); - if (type != stComma) throw exception(QString("Unexpected token %1 while reading rect() cons!").arg(type).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading rect() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type)); string w = token; bool wpx = readPxAfterNumber(text, end); readStyleGenToken(text, end, type, token); - if (type != stComma) throw exception(QString("Unexpected token %1 while reading rect() cons!").arg(type).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading rect() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type)); string h = token; bool hpx = readPxAfterNumber(text, end); readStyleGenToken(text, end, type, token); - if (type != stConsFinish) throw exception(QString("Unexpected token %1 while reading rect() cons!").arg(type).toUtf8().constData()); + if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading rect() cons!").arg(type)); ScalarValue r; r[variant] = QString("(%1, %2, %3, %4)").arg(x.c_str()).arg(y.c_str()).arg(w.c_str()).arg(h.c_str()).toUtf8().constData(); @@ -762,42 +763,42 @@ ScalarValue prepareSprite(int variant, const char *&text, const char *end) { StyleGenTokenType type; string token; - if (variant) throw exception(QString("Unexpected variant in sprite rectangle!").toUtf8().constData()); + if (variant) throw Exception(QString("Unexpected variant in sprite rectangle!")); readStyleGenToken(text, end, type, token); - if (type != stConsStart) throw exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type).toUtf8().constData()); + if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type)); string x = token; - if (!readPxAfterNumber(text, end)) throw exception(QString("All number in sprite() cons must be in px!").toUtf8().constData()); + if (!readPxAfterNumber(text, end)) throw Exception(QString("All number in sprite() cons must be in px!")); readStyleGenToken(text, end, type, token); - if (type != stComma) throw exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type)); string y = token; - if (!readPxAfterNumber(text, end)) throw exception(QString("All number in sprite() cons must be in px!").toUtf8().constData()); + if (!readPxAfterNumber(text, end)) throw Exception(QString("All number in sprite() cons must be in px!")); readStyleGenToken(text, end, type, token); - if (type != stComma) throw exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type)); string w = token; - if (!readPxAfterNumber(text, end)) throw exception(QString("All number in sprite() cons must be in px!").toUtf8().constData()); + if (!readPxAfterNumber(text, end)) throw Exception(QString("All number in sprite() cons must be in px!")); readStyleGenToken(text, end, type, token); - if (type != stComma) throw exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type)); string h = token; - if (!readPxAfterNumber(text, end)) throw exception(QString("All number in sprite() cons must be in px!").toUtf8().constData()); + if (!readPxAfterNumber(text, end)) throw Exception(QString("All number in sprite() cons must be in px!")); readStyleGenToken(text, end, type, token); - if (type != stConsFinish) throw exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type).toUtf8().constData()); + if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading sprite() cons!").arg(type)); ScalarValue r; r[variant] = QString("(%1, %2, %3, %4)").arg(x.c_str()).arg(y.c_str()).arg(w.c_str()).arg(h.c_str()).toUtf8().constData(); @@ -816,14 +817,14 @@ ScalarValue prepareSprite(int variant, const char *&text, const char *end) { } if (i->first.intersects(sprite)) { cout << QString("Sprites intersection, %1 intersects with %2").arg(i->second).arg(r[variant].c_str()).toUtf8().constData() << "\n"; -// throw exception(QString("Sprites intersection, %1 intersects with %2").arg(i->second).arg(r[variant].c_str()).toUtf8().constData()); +// throw Exception(QString("Sprites intersection, %1 intersects with %2").arg(i->second).arg(r[variant].c_str())); } } if (!found) { sprites.push_back(QPair(sprite, QString(r[variant].c_str()))); if (sprite.x() < 0 || sprite.y() < 0 || sprite.x() + sprite.width() > variantSprites[0].width() || sprite.y() + sprite.height() > variantSprites[0].height()) { - throw exception(QString("Bad sprite size %1").arg(r[variant].c_str()).toUtf8().constData()); + throw Exception(QString("Bad sprite size %1").arg(r[variant].c_str())); } int varLast = variants[variantsCount - 1]; @@ -850,23 +851,23 @@ ScalarValue preparePoint(int variant, const char *&text, const char *end) { string token; readStyleGenToken(text, end, type, token); - if (type != stConsStart) throw exception(QString("Unexpected token %1 while reading point() cons!").arg(type).toUtf8().constData()); + if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading point() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading point() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading point() cons!").arg(type)); string x = token; bool xpx = readPxAfterNumber(text, end); readStyleGenToken(text, end, type, token); - if (type != stComma) throw exception(QString("Unexpected token %1 while reading point() cons!").arg(type).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1 while reading point() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading point() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading point() cons!").arg(type)); string y = token; bool ypx = readPxAfterNumber(text, end); readStyleGenToken(text, end, type, token); - if (type != stConsFinish) throw exception(QString("Unexpected token %1 while reading point() cons!").arg(type).toUtf8().constData()); + if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading point() cons!").arg(type)); ScalarValue r; r[variant] = QString("(%1, %2)").arg(x.c_str()).arg(y.c_str()).toUtf8().constData(); @@ -883,23 +884,23 @@ ScalarValue prepareSize(int variant, const char *&text, const char *end) { string token; readStyleGenToken(text, end, type, token); - if (type != stConsStart) throw exception(QString("Unexpected token %1 while reading size() cons!").arg(type).toUtf8().constData()); + if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading size() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading size() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading size() cons!").arg(type)); string x = token; bool xpx = readPxAfterNumber(text, end); readStyleGenToken(text, end, type, token); - if (type != stComma) throw exception(QString("Unexpected token %1 while reading size() cons!").arg(type).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1 while reading size() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading size() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading size() cons!").arg(type)); string y = token; bool ypx = readPxAfterNumber(text, end); readStyleGenToken(text, end, type, token); - if (type != stConsFinish) throw exception(QString("Unexpected token %1 while reading size() cons!").arg(type).toUtf8().constData()); + if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading size() cons!").arg(type)); ScalarValue r; r[variant] = QString("(%1, %2)").arg(x.c_str()).arg(y.c_str()).toUtf8().constData(); @@ -916,14 +917,14 @@ ScalarValue prepareTransition(int variant, const char *&text, const char *end) { string token; readStyleGenToken(text, end, type, token); - if (type != stConsStart) throw exception(QString("Unexpected token %1 while reading transition() cons!").arg(type).toUtf8().constData()); + if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading transition() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stName) throw exception(QString("Unexpected token %1 while reading transition() cons!").arg(type).toUtf8().constData()); + if (type != stName) throw Exception(QString("Unexpected token %1 while reading transition() cons!").arg(type)); string func = token; readStyleGenToken(text, end, type, token); - if (type != stConsFinish) throw exception(QString("Unexpected token %1 while reading transition() cons!").arg(type).toUtf8().constData()); + if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading transition() cons!").arg(type)); return fillPrepareResult(variant, QString("(anim::%1)").arg(func.c_str()).toUtf8().constData()); } @@ -933,14 +934,14 @@ ScalarValue prepareCursor(int variant, const char *&text, const char *end) { string token; readStyleGenToken(text, end, type, token); - if (type != stConsStart) throw exception(QString("Unexpected token %1 while reading cursor() cons!").arg(type).toUtf8().constData()); + if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading cursor() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stName) throw exception(QString("Unexpected token %1 while reading cursor() cons!").arg(type).toUtf8().constData()); + if (type != stName) throw Exception(QString("Unexpected token %1 while reading cursor() cons!").arg(type)); string func = token; readStyleGenToken(text, end, type, token); - if (type != stConsFinish) throw exception(QString("Unexpected token %1 while reading cursor() cons!").arg(type).toUtf8().constData()); + if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading cursor() cons!").arg(type)); return fillPrepareResult(variant, QString("(style::cur_%1)").arg(func.c_str()).toUtf8().constData()); } @@ -950,14 +951,14 @@ ScalarValue prepareAlign(int variant, const char *&text, const char *end) { string token; readStyleGenToken(text, end, type, token); - if (type != stConsStart) throw exception(QString("Unexpected token %1 while reading align() cons!").arg(type).toUtf8().constData()); + if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading align() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stName) throw exception(QString("Unexpected token %1 while reading align() cons!").arg(type).toUtf8().constData()); + if (type != stName) throw Exception(QString("Unexpected token %1 while reading align() cons!").arg(type)); string func = token; readStyleGenToken(text, end, type, token); - if (type != stConsFinish) throw exception(QString("Unexpected token %1 while reading align() cons!").arg(type).toUtf8().constData()); + if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading align() cons!").arg(type)); return fillPrepareResult(variant, QString("(style::al_%1)").arg(func.c_str()).toUtf8().constData()); } @@ -967,39 +968,39 @@ ScalarValue prepareMargins(int variant, const char *&text, const char *end) { string token; readStyleGenToken(text, end, type, token); - if (type != stConsStart) throw exception(QString("Unexpected token %1 while reading margins() cons!").arg(type).toUtf8().constData()); + if (type != stConsStart) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading margins() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type)); string x = token; bool xpx = readPxAfterNumber(text, end); readStyleGenToken(text, end, type, token); - if (type != stComma) throw exception(QString("Unexpected token %1 while reading margins() cons!").arg(type).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading margins() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type)); string y = token; bool ypx = readPxAfterNumber(text, end); readStyleGenToken(text, end, type, token); - if (type != stComma) throw exception(QString("Unexpected token %1 while reading margins() cons!").arg(type).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading margins() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type)); string w = token; bool wpx = readPxAfterNumber(text, end); readStyleGenToken(text, end, type, token); - if (type != stComma) throw exception(QString("Unexpected token %1 while reading margins() cons!").arg(type).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type)); readStyleGenToken(text, end, type, token); - if (type != stNumber) throw exception(QString("Unexpected token %1 while reading margins() cons!").arg(type).toUtf8().constData()); + if (type != stNumber) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type)); string h = token; bool hpx = readPxAfterNumber(text, end); readStyleGenToken(text, end, type, token); - if (type != stConsFinish) throw exception(QString("Unexpected token %1 while reading margins() cons!").arg(type).toUtf8().constData()); + if (type != stConsFinish) throw Exception(QString("Unexpected token %1 while reading margins() cons!").arg(type)); ScalarValue r; r[variant] = QString("(%1, %2, %3, %4)").arg(x.c_str()).arg(y.c_str()).arg(w.c_str()).arg(h.c_str()).toUtf8().constData(); @@ -1046,7 +1047,7 @@ ScalarValue prepareFont(int variant, const string &name, const char *&text, cons bool sizepx; readStyleGenToken(text, end, type, token); - if (type != stConsStart) throw exception(QString("Unexpected token %1 (%2) while reading font() cons!").arg(type).arg(token.c_str()).toUtf8().constData()); + if (type != stConsStart) throw Exception(QString("Unexpected token %1 (%2) while reading font() cons!").arg(type).arg(token.c_str())); do { readStyleGenToken(text, end, type, token); @@ -1055,7 +1056,7 @@ ScalarValue prepareFont(int variant, const string &name, const char *&text, cons size = token; sizepx = readPxAfterNumber(text, end); } else { - throw exception(QString("Unexpected second number %1 while reading font() cons!").arg(token.c_str()).toUtf8().constData()); + throw Exception(QString("Unexpected second number %1 while reading font() cons!").arg(token.c_str())); } } else if (type == stName) { int bit = 0; @@ -1073,38 +1074,38 @@ ScalarValue prepareFont(int variant, const string &name, const char *&text, cons sizeScalar = scalars[j.value()].second.second; // size = findScalarVariant(scalars[j.value()].second.second, variant); } else { - throw exception(QString("Unexpected second number %1 while reading font() cons!").arg(token.c_str()).toUtf8().constData()); + throw Exception(QString("Unexpected second number %1 while reading font() cons!").arg(token.c_str())); } } else if (scalars[j.value()].second.first == scString) { if (scalars[j.value()].second.second.empty()) { - throw exception(QString("Unexpected empty string %1 while reading font() cons!").arg(token.c_str()).toUtf8().constData()); + throw Exception(QString("Unexpected empty string %1 while reading font() cons!").arg(token.c_str())); } else if (!family.empty() || !familyScalar.empty()) { - throw exception(QString("Unexpected second string %1 while reading font() cons!").arg(token.c_str()).toUtf8().constData()); + throw Exception(QString("Unexpected second string %1 while reading font() cons!").arg(token.c_str())); } familyScalar = scalars[j.value()].second.second; // family = findScalarVariant(scalars[j.value()].second.second, variant); } else { - throw exception(QString("Unexpected name token %1 type %2 while reading font() cons!").arg(token.c_str()).arg(scalars[j.value()].second.first).toUtf8().constData()); + throw Exception(QString("Unexpected name token %1 type %2 while reading font() cons!").arg(token.c_str()).arg(scalars[j.value()].second.first)); } } else { - throw exception(QString("Unexpected name token %1 while reading font() cons!").arg(token.c_str()).toUtf8().constData()); + throw Exception(QString("Unexpected name token %1 while reading font() cons!").arg(token.c_str())); } } if (flags & bit) { - throw exception(QString("Unexpected second time token %1 while reading font() cons!").arg(token.c_str()).toUtf8().constData()); + throw Exception(QString("Unexpected second time token %1 while reading font() cons!").arg(token.c_str())); } flags |= bit; } else if (type == stString) { if (token.empty()) { - throw exception(QString("Unexpected empty string while reading font() cons!").toUtf8().constData()); + throw Exception(QString("Unexpected empty string while reading font() cons!")); } else if (!family.empty() || !familyScalar.empty()) { - throw exception(QString("Unexpected second string %1 while reading font() cons!").arg(token.c_str()).toUtf8().constData()); + throw Exception(QString("Unexpected second string %1 while reading font() cons!").arg(token.c_str())); } family = token; } else if (type == stConsFinish) { break; } else { - throw exception(QString("Unexpected token %1 while reading font() cons!").arg(type).toUtf8().constData()); + throw Exception(QString("Unexpected token %1 while reading font() cons!").arg(type)); } } while (true); @@ -1113,20 +1114,20 @@ ScalarValue prepareFont(int variant, const string &name, const char *&text, cons if (j != scalarsMap.cend()) { if (scalars[j.value()].second.first == scString) { if (scalars[j.value()].second.second.empty()) { - throw exception(QString("Unexpected empty string %1 while reading font() cons!").arg(token.c_str()).toUtf8().constData()); + throw Exception(QString("Unexpected empty string %1 while reading font() cons!").arg(token.c_str())); } else if (!family.empty() || !familyScalar.isEmpty()) { - throw exception(QString("Unexpected second string %1 while reading font() cons!").arg(token.c_str()).toUtf8().constData()); + throw Exception(QString("Unexpected second string %1 while reading font() cons!").arg(token.c_str())); } // family = findScalarVariant(scalars[j.value()].second.second, variant); familyScalar = scalars[j.value()].second.second; } else { - throw exception(QString("Font family not found while reading font() cons!").toUtf8().constData()); + throw Exception(QString("Font family not found while reading font() cons!")); } } else { - throw exception(QString("Font family not found while reading font() cons!").toUtf8().constData()); + throw Exception(QString("Font family not found while reading font() cons!")); } } - if (size.empty() && sizeScalar.isEmpty()) throw exception(QString("Font size not found while reading font() cons!").toUtf8().constData()); + if (size.empty() && sizeScalar.isEmpty()) throw Exception(QString("Font size not found while reading font() cons!")); Font font; font.family = familyScalar.empty() ? family : findScalarVariant(familyScalar, variant); @@ -1232,7 +1233,7 @@ ScalarData readScalarElement(string name, const char *&text, const char *end, st } } } else { - throw exception(QString("Unexpected token after '%1:', type %2").arg(name.c_str()).arg(type).toUtf8().constData()); + throw Exception(QString("Unexpected token after '%1:', type %2").arg(name.c_str()).arg(type)); } return result; } @@ -1240,21 +1241,21 @@ ScalarData readScalarElement(string name, const char *&text, const char *end, st Scalar readScalarData(StyleGenTokenType &type, string &token, const char *&text, const char *end, string objName = string(), const Fields *objFields = 0) { if (type != stName) { - throw exception(QString("Unexpected token, type %1: %2").arg(type).arg(token.c_str()).toUtf8().constData()); + throw Exception(QString("Unexpected token, type %1: %2").arg(type).arg(token.c_str())); } string name = token; if (!objFields) { ByName::const_iterator i = objectsMap.constFind(name); - if (i != objectsMap.cend()) throw exception(QString("Redefinition of style object %1").arg(name.c_str()).toUtf8().constData()); + if (i != objectsMap.cend()) throw Exception(QString("Redefinition of style object %1").arg(name.c_str())); ByName::const_iterator j = scalarsMap.constFind(name); - if (j != scalarsMap.cend()) throw exception(QString("Redefinition of style scalar %1").arg(name.c_str()).toUtf8().constData()); + if (j != scalarsMap.cend()) throw Exception(QString("Redefinition of style scalar %1").arg(name.c_str())); } readStyleGenToken(text, end, type, token); if (type != stDelimeter) { - throw exception(QString("Unexpected token, type %1: %2").arg(type).arg(token.c_str()).toUtf8().constData()); + throw Exception(QString("Unexpected token, type %1: %2").arg(type).arg(token.c_str())); } string fullName = objFields ? (objName + '.' + name) : name; @@ -1266,19 +1267,19 @@ Scalar readScalarData(StyleGenTokenType &type, string &token, const char *&text, while (type == stVariant) { readStyleGenToken(text, end, type, token); if (type != stNumber) { - throw exception(QString("Unexpected token '%1' reading variants of '%2' scalar").arg(token.c_str()).arg(name.c_str()).toUtf8().constData()); + throw Exception(QString("Unexpected token '%1' reading variants of '%2' scalar").arg(token.c_str()).arg(name.c_str())); } int variant = QString(token.c_str()).toInt(); if (variant != 2 && variant != 3 && variant != 4) { - throw exception(QString("Unexpected variant index '%1' in '%2' scalar").arg(token.c_str()).arg(name.c_str()).toUtf8().constData()); + throw Exception(QString("Unexpected variant index '%1' in '%2' scalar").arg(token.c_str()).arg(name.c_str())); } readStyleGenToken(text, end, type, token); if (type != stDelimeter) { - throw exception(QString("Unexpected token '%1' reading variants of '%2' scalar, expected delimeter").arg(token.c_str()).arg(name.c_str()).toUtf8().constData()); + throw Exception(QString("Unexpected token '%1' reading variants of '%2' scalar, expected delimeter").arg(token.c_str()).arg(name.c_str())); } ScalarData el = readScalarElement(name, text, end, objName, objFields, variant); if (el.first != result.second.first) { - throw exception(QString("Type changed in variant for '%1'").arg(name.c_str()).toUtf8().constData()); + throw Exception(QString("Type changed in variant for '%1'").arg(name.c_str())); } result.second.second.insert(variant, el.second[variant]); @@ -1290,7 +1291,7 @@ Scalar readScalarData(StyleGenTokenType &type, string &token, const char *&text, string prepareObject(const string &cls, Fields fields, const string &obj, int variant) { string result = "("; Classes::const_iterator i = classes.constFind(cls); - if (i == classes.cend()) throw exception("Unknown error :("); + if (i == classes.cend()) throw Exception("Unknown error :("); for (FieldTypesMap::const_iterator j = i.value().fields.cbegin(), e = i.value().fields.cend(); j != e;) { result += "style::" + outputTypeNames[j.value()]; @@ -1299,7 +1300,7 @@ string prepareObject(const string &cls, Fields fields, const string &obj, int va if (f == fields.end()) { result += "()"; } else if (f.value().first != j.value()) { - throw exception(QString("Bad type of field %1 while parsing %2").arg(j.key().c_str()).arg(obj.c_str()).toUtf8().constData()); + throw Exception(QString("Bad type of field %1 while parsing %2").arg(j.key().c_str()).arg(obj.c_str())); } else { result += findScalarVariant(f.value().second, variant); } @@ -1310,13 +1311,13 @@ string prepareObject(const string &cls, Fields fields, const string &obj, int va } if (fields.size()) { - throw exception(QString("Unknown fields found in %1, for example %2").arg(obj.c_str()).arg(fields.begin().key().c_str()).toUtf8().constData()); + throw Exception(QString("Unknown fields found in %1, for example %2").arg(obj.c_str()).arg(fields.begin().key().c_str())); } return result + ", Qt::Uninitialized)"; } -bool genStyles(const QString &classes_in, const QString &classes_out, const QString &styles_in, const QString &styles_out) { +bool genStyles(const QString &classes_in, const QString &classes_out, const QString &styles_in, const QString &styles_out, const QString &path_to_sprites) { if (!genClasses(classes_in, classes_out)) return false; QString styles_cpp = QString(styles_out).replace(".h", ".cpp"); @@ -1336,7 +1337,7 @@ bool genStyles(const QString &classes_in, const QString &classes_out, const QStr QImage sprites[variantsCount]; variantSprites = sprites; - QString sprite0("./SourceFiles/art/sprite" + QString(variantPostfixes[0]) + ".png"), spriteLast("./SourceFiles/art/sprite" + QString(variantPostfixes[variantsCount - 1]) + ".png"); + QString sprite0(path_to_sprites + "sprite" + QString(variantPostfixes[0]) + ".png"), spriteLast(path_to_sprites + "sprite" + QString(variantPostfixes[variantsCount - 1]) + ".png"); variantSprites[0] = QImage(sprite0); for (int i = 1; i < variantsCount - 1; ++i) { variantSprites[i] = QImage(adjustPx(variants[i], variantSprites[0].width(), true), adjustPx(variants[i], variantSprites[0].height(), true), QImage::Format_ARGB32_Premultiplied); @@ -1400,7 +1401,7 @@ bool genStyles(const QString &classes_in, const QString &classes_out, const QStr if (scalar.second.first != scTypesCount) { scalarsMap.insert(scalar.first, scalars.size()); scalars.push_back(scalar); - if (type != stFieldFinish) throw exception(QString("Unexpected token after scalar %1, type %2").arg(name.c_str()).arg(type).toUtf8().constData()); + if (type != stFieldFinish) throw Exception(QString("Unexpected token after scalar %1, type %2").arg(name.c_str()).arg(type)); continue; } @@ -1411,19 +1412,19 @@ bool genStyles(const QString &classes_in, const QString &classes_out, const QStr obj.second.first = objType; Classes::const_iterator c = classes.constFind(objType); - if (c == classes.cend()) throw exception(QString("Unknown type %1 used for object %2").arg(objType.c_str()).arg(name.c_str()).toUtf8().constData()); + if (c == classes.cend()) throw Exception(QString("Unknown type %1 used for object %2").arg(objType.c_str()).arg(name.c_str())); if (type == stConsStart) { do { readStyleGenToken(text, end, type, token); string parent = token; - if (type != stName) throw exception(QString("Unexpected token %1 while parsing object %2").arg(type).arg(name.c_str()).toUtf8().constData()); + if (type != stName) throw Exception(QString("Unexpected token %1 while parsing object %2").arg(type).arg(name.c_str())); ByName::const_iterator p = objectsMap.constFind(parent); - if (p == objectsMap.cend()) throw exception(QString("Parent object %1 not found, while parsing object %2").arg(parent.c_str()).arg(name.c_str()).toUtf8().constData()); + if (p == objectsMap.cend()) throw Exception(QString("Parent object %1 not found, while parsing object %2").arg(parent.c_str()).arg(name.c_str())); const ObjectData &alr(objects[p.value()].second); for (Fields::const_iterator f = alr.second.cbegin(), e = alr.second.cend(); f != e; ++f) { - Fields::const_iterator a = obj.second.second.constFind(f.key()); +// Fields::const_iterator a = obj.second.second.constFind(f.key()); // if (a == obj.second.second.cend()) { obj.second.second.insert(f.key(), f.value()); if (f.value().first == scFont) { @@ -1440,11 +1441,11 @@ bool genStyles(const QString &classes_in, const QString &classes_out, const QStr readStyleGenToken(text, end, type, token); if (type == stConsFinish) break; - if (type != stComma) throw exception(QString("Unexpected token %1, expected , or ) while parsing object %2").arg(type).arg(name.c_str()).toUtf8().constData()); + if (type != stComma) throw Exception(QString("Unexpected token %1, expected , or ) while parsing object %2").arg(type).arg(name.c_str())); } while (true); readStyleGenToken(text, end, type, token); } - if (type != stObjectStart) throw exception(QString("Unexpected token %1, expected { while parsing object %2").arg(type).arg(name.c_str()).toUtf8().constData()); + if (type != stObjectStart) throw Exception(QString("Unexpected token %1, expected { while parsing object %2").arg(type).arg(name.c_str())); while (true) { readStyleGenToken(text, end, type, token); @@ -1459,11 +1460,11 @@ bool genStyles(const QString &classes_in, const QString &classes_out, const QStr } Scalar scalar = readScalarData(type, token, text, end, name, &obj.second.second); - if (scalar.second.first == scTypesCount) throw exception(QString("Unexpected type name %1 while parsing object %2").arg(scalar.second.second[0].c_str()).arg(name.c_str()).toUtf8().constData()); + if (scalar.second.first == scTypesCount) throw Exception(QString("Unexpected type name %1 while parsing object %2").arg(scalar.second.second[0].c_str()).arg(name.c_str())); obj.second.second.insert(scalar.first, scalar.second); - if (type != stFieldFinish) throw exception(QString("Unexpected token after scalar %1 in object %2, type %3").arg(scalar.first.c_str()).arg(name.c_str()).arg(type).toUtf8().constData()); + if (type != stFieldFinish) throw Exception(QString("Unexpected token after scalar %1 in object %2, type %3").arg(scalar.first.c_str()).arg(name.c_str()).arg(type)); } } @@ -1559,7 +1560,6 @@ Copyright (c) 2014 John Preston, https://tdesktop.com\n\ typedef QMap FontFamilies; FontFamilies fontFamilies; - int familyIndex = 0; for (int i = 0, l = scalars.size(); i < l; ++i) { Scalar &sc(scalars[i]); @@ -1603,7 +1603,7 @@ Copyright (c) 2014 John Preston, https://tdesktop.com\n\ bool found = false; for (Named::iterator i = nmd.begin(), e = nmd.end(); i != e; ++i) { if (i.key() == i.value().second) { - throw exception(QString("Object '%1' is equal to itself!").arg(i.key().c_str()).toUtf8().constData()); + throw Exception(QString("Object '%1' is equal to itself!").arg(i.key().c_str())); } Named::const_iterator j = nmd.constFind(i.value().second); if (j != nmd.cend()) { @@ -1629,16 +1629,16 @@ Copyright (c) 2014 John Preston, https://tdesktop.com\n\ if (j != scalarsMap.cend()) { if (scalars[j.value()].second.first == scString) { if (scalars[j.value()].second.second.empty()) { - throw exception(QString("Unexpected empty string in defaultFontFamily!").arg(token.c_str()).toUtf8().constData()); + throw Exception(QString("Unexpected empty string in defaultFontFamily!").arg(token.c_str())); } string v = findScalarVariant(scalars[j.value()].second.second, variant); tcpp << "\t\t\t_fontFamilies.push_back" << v.c_str() << ";\n"; fontFamilies.insert(v, familyIndex++); } else { - throw exception(QString("defaultFontFamily has bad type!").toUtf8().constData()); + throw Exception(QString("defaultFontFamily has bad type!")); } } else { - throw exception(QString("defaultFontFamily not found!").toUtf8().constData()); + throw Exception(QString("defaultFontFamily not found!")); } Fonts &fnts(fonts[variant]); @@ -1713,12 +1713,12 @@ Copyright (c) 2014 John Preston, https://tdesktop.com\n\ } for (int i = 1; i < variantsCount - 1; ++i) { - QString spritei("./SourceFiles/art/sprite" + QString(variantPostfixes[i]) + ".png"), spriteLast("./SourceFiles/art/sprite" + QString(variantPostfixes[i]) + ".png"); + QString spritei(path_to_sprites + "sprite" + QString(variantPostfixes[i]) + ".png"), spriteLast(path_to_sprites + "sprite" + QString(variantPostfixes[i]) + ".png"); QByteArray sprite; { QBuffer sbuf(&sprite); if (!variantSprites[i].save(&sbuf, "PNG")) { - throw exception(("Could not write intermediate sprite '" + spritei + "'!").toUtf8().constData()); + throw Exception(("Could not write intermediate sprite '" + spritei + "'!")); } } bool needResave = !QFileInfo(spritei).exists(); @@ -1736,21 +1736,21 @@ Copyright (c) 2014 John Preston, https://tdesktop.com\n\ if (needResave) { QFile sf(spritei); if (!sf.open(QIODevice::WriteOnly)) { - throw exception(("Could not write intermediate sprite '" + spritei + "'!").toUtf8().constData()); + throw Exception(("Could not write intermediate sprite '" + spritei + "'!")); } else { if (sf.write(sprite) != sprite.size()) { - throw exception(("Could not write intermediate sprite '" + spritei + "'!").toUtf8().constData()); + throw Exception(("Could not write intermediate sprite '" + spritei + "'!")); } } } } for (int i = 0; i < variantsCount; ++i) { - QString spritei("./SourceFiles/art/grid" + QString(variantPostfixes[i]) + ".png"), spriteLast("./SourceFiles/art/sprite" + QString(variantPostfixes[i]) + ".png"); + QString spritei(path_to_sprites + "grid" + QString(variantPostfixes[i]) + ".png"), spriteLast(path_to_sprites + "sprite" + QString(variantPostfixes[i]) + ".png"); QByteArray grid; { QBuffer gbuf(&grid); if (!variantGrids[i].save(&gbuf, "PNG")) { - throw exception(("Could not write intermediate grid '" + spritei + "'!").toUtf8().constData()); + throw Exception(("Could not write intermediate grid '" + spritei + "'!")); } } bool needResave = !QFileInfo(spritei).exists(); @@ -1768,10 +1768,10 @@ Copyright (c) 2014 John Preston, https://tdesktop.com\n\ if (needResave) { QFile gf(spritei); if (!gf.open(QIODevice::WriteOnly)) { - throw exception(("Could not write intermediate grid '" + spritei + "'!").toUtf8().constData()); + throw Exception(("Could not write intermediate grid '" + spritei + "'!")); } else { if (gf.write(grid) != grid.size()) { - throw exception(("Could not write intermediate grid '" + spritei + "'!").toUtf8().constData()); + throw Exception(("Could not write intermediate grid '" + spritei + "'!")); } } } @@ -1790,8 +1790,8 @@ Copyright (c) 2014 John Preston, https://tdesktop.com\n\ } if (write_out) { cout << "Style compiled, writing " << scalars.size() << " scalars and " << objects.size() << " objects.\n"; - if (!out.open(QIODevice::WriteOnly)) throw exception("Could not open style_auto.h for writing!"); - if (out.write(outText) != outText.size()) throw exception("Could not open style_auto.h for writing!"); + if (!out.open(QIODevice::WriteOnly)) throw Exception("Could not open style_auto.h for writing!"); + if (out.write(outText) != outText.size()) throw Exception("Could not open style_auto.h for writing!"); } bool write_cpp = true; if (cpp.open(QIODevice::ReadOnly)) { @@ -1805,8 +1805,8 @@ Copyright (c) 2014 John Preston, https://tdesktop.com\n\ } if (write_cpp) { if (!write_out) cout << "Style updated, writing " << scalars.size() << " scalars and " << objects.size() << " objects.\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!"); + 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!"); } } catch (exception &e) { cout << e.what() << "\n"; diff --git a/Telegram/SourceFiles/_other/genstyles.h b/Telegram/SourceFiles/_other/genstyles.h index a6f398b58..855ce8668 100644 --- a/Telegram/SourceFiles/_other/genstyles.h +++ b/Telegram/SourceFiles/_other/genstyles.h @@ -34,19 +34,35 @@ using std::cout; using std::cerr; using std::exception; -bool genStyles(const QString &classes_in, const QString &classes_out, const QString &styles_in, const QString &styles_out); +class Exception : public exception { +public: + + Exception(const QString &msg) : _msg(msg) { + } + + virtual const char *what() const throw() { + return _msg.toUtf8().constData(); + } + virtual ~Exception() throw() { + } + +private: + QString _msg; +}; + +bool genStyles(const QString &classes_in, const QString &classes_out, const QString &styles_in, const QString &styles_out, const QString &path_to_sprites); class GenStyles : public QObject { Q_OBJECT public: - GenStyles(const QString &classes_in, const QString &classes_out, const QString &styles_in, const QString styles_out) : QObject(0), - _classes_in(classes_in), _classes_out(classes_out), _styles_in(styles_in), _styles_out(styles_out) { + GenStyles(const QString &classes_in, const QString &classes_out, const QString &styles_in, const QString &styles_out, const QString &path_to_sprites) : QObject(0), + _classes_in(classes_in), _classes_out(classes_out), _styles_in(styles_in), _styles_out(styles_out), _path_to_sprites(path_to_sprites) { } public slots: void run() { - if (genStyles(_classes_in, _classes_out, _styles_in, _styles_out)) { + if (genStyles(_classes_in, _classes_out, _styles_in, _styles_out, _path_to_sprites)) { emit finished(); } } @@ -56,5 +72,5 @@ signals: private: - QString _classes_in, _classes_out, _styles_in, _styles_out; + QString _classes_in, _classes_out, _styles_in, _styles_out, _path_to_sprites; }; diff --git a/Telegram/SourceFiles/_other/mlmain.cpp b/Telegram/SourceFiles/_other/mlmain.cpp index 3f789dd32..10a7357cc 100644 --- a/Telegram/SourceFiles/_other/mlmain.cpp +++ b/Telegram/SourceFiles/_other/mlmain.cpp @@ -26,6 +26,20 @@ int main(int argc, char *argv[]) { if (++i < argc) lang_out = argv[i]; } } +#ifdef Q_OS_MAC + if (QDir(QString()).absolutePath() == "/") { + QString first = argc ? QString::fromLocal8Bit(argv[0]) : QString(); + if (!first.isEmpty()) { + QFileInfo info(first); + if (info.exists()) { + QDir result(info.absolutePath() + "/../../.."); + QString basePath = result.absolutePath() + '/'; + lang_in = basePath + lang_in; + lang_out = basePath + lang_out; + } + } + } +#endif QObject *taskImpl = new GenLang(lang_in, lang_out); QCoreApplication a(argc, argv); diff --git a/Telegram/SourceFiles/_other/msmain.cpp b/Telegram/SourceFiles/_other/msmain.cpp index de901708a..e03aa07e6 100644 --- a/Telegram/SourceFiles/_other/msmain.cpp +++ b/Telegram/SourceFiles/_other/msmain.cpp @@ -16,9 +16,10 @@ Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE Copyright (c) 2014 John Preston, https://tdesktop.com */ #include "msmain.h" +#include int main(int argc, char *argv[]) { - QString classes_in("style_classes.txt"), classes_out("style_classes.h"), styles_in("style.txt"), styles_out("style_auto.h"); + QString classes_in("style_classes.txt"), classes_out("style_classes.h"), styles_in("style.txt"), styles_out("style_auto.h"), path_to_sprites("./SourceFiles/art/"); for (int i = 0; i < argc; ++i) { if (string("-classes_in") == argv[i]) { if (++i < argc) classes_in = argv[i]; @@ -28,9 +29,28 @@ int main(int argc, char *argv[]) { if (++i < argc) styles_in = argv[i]; } else if (string("-styles_out") == argv[i]) { if (++i < argc) styles_out = argv[i]; - } + } else if (string("-path_to_sprites") == argv[i]) { + if (++i < argc) path_to_sprites = argv[i]; + } } - QObject *taskImpl = new GenStyles(classes_in, classes_out, styles_in, styles_out); +#ifdef Q_OS_MAC + if (QDir(QString()).absolutePath() == "/") { + QString first = argc ? QString::fromLocal8Bit(argv[0]) : QString(); + if (!first.isEmpty()) { + QFileInfo info(first); + if (info.exists()) { + QDir result(info.absolutePath() + "/../../.."); + QString basePath = result.absolutePath() + '/'; + classes_in = basePath + classes_in; + classes_out = basePath + classes_out; + styles_in = basePath + styles_in; + styles_out = basePath + styles_out; + path_to_sprites = basePath + path_to_sprites; + } + } + } +#endif + QObject *taskImpl = new GenStyles(classes_in, classes_out, styles_in, styles_out, path_to_sprites); QGuiApplication a(argc, argv); diff --git a/Telegram/SourceFiles/application.cpp b/Telegram/SourceFiles/application.cpp index df7b9d773..60309b673 100644 --- a/Telegram/SourceFiles/application.cpp +++ b/Telegram/SourceFiles/application.cpp @@ -70,9 +70,9 @@ namespace { }; } -Application::Application(int argc, char *argv[]) : PsApplication(argc, argv), +Application::Application(int &argc, char **argv) : PsApplication(argc, argv), serverName(psServerPrefix() + cGUIDStr()), closing(false), - updateRequestId(0), updateThread(0), updateDownloader(0), updateReply(0) { + updateRequestId(0), updateReply(0), updateThread(0), updateDownloader(0) { if (mainApp) { DEBUG_LOG(("Application Error: another Application was created, terminating..")); exit(0); @@ -410,7 +410,7 @@ void Application::startUpdateCheck(bool forceWait) { } } } - if (cManyInstance() && !cDebug()) return; // only main instance is updating + if (cManyInstance() && !cDebug() || cPlatform() == dbipMac) return; // only main instance is updating if (sendRequest) { QNetworkRequest checkVersion(QUrl(qsl("http://tdesktop.com/win/tupdates/current"))); @@ -498,6 +498,10 @@ void Application::startApp() { App::writeUserConfig(); cSetNeedConfigResave(false); } + if (devicePixelRatio() > 1) { + cSetRetina(true); + cSetRetinaFactor(devicePixelRatio()); + } window->createWinId(); window->init(); diff --git a/Telegram/SourceFiles/application.h b/Telegram/SourceFiles/application.h index 2c229fe19..67dbb3818 100644 --- a/Telegram/SourceFiles/application.h +++ b/Telegram/SourceFiles/application.h @@ -32,7 +32,7 @@ class Application : public PsApplication, public RPCSender { public: - Application(int argc, char *argv[]); + Application(int &argc, char **argv); ~Application(); static Application *app(); diff --git a/Telegram/SourceFiles/boxes/aboutbox.cpp b/Telegram/SourceFiles/boxes/aboutbox.cpp index d254f9b65..81e107af3 100644 --- a/Telegram/SourceFiles/boxes/aboutbox.cpp +++ b/Telegram/SourceFiles/boxes/aboutbox.cpp @@ -45,7 +45,7 @@ a_opacity(0, 1) { resize(_width, _height); showAll(); - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } @@ -120,7 +120,7 @@ void AboutBox::onClose() { void AboutBox::startHide() { _hiding = true; if (_cache.isNull()) { - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } a_opacity.start(0); diff --git a/Telegram/SourceFiles/boxes/addcontactbox.cpp b/Telegram/SourceFiles/boxes/addcontactbox.cpp index 0e32e0a69..566b7428e 100644 --- a/Telegram/SourceFiles/boxes/addcontactbox.cpp +++ b/Telegram/SourceFiles/boxes/addcontactbox.cpp @@ -85,7 +85,7 @@ void AddContactBox::initBox() { resize(_width, _height); showAll(); - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } @@ -365,7 +365,7 @@ void AddContactBox::onRetry() { void AddContactBox::startHide() { _hiding = true; if (_cache.isNull()) { - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } a_opacity.start(0); diff --git a/Telegram/SourceFiles/boxes/addparticipantbox.cpp b/Telegram/SourceFiles/boxes/addparticipantbox.cpp index c755907fc..9a6cf34c4 100644 --- a/Telegram/SourceFiles/boxes/addparticipantbox.cpp +++ b/Telegram/SourceFiles/boxes/addparticipantbox.cpp @@ -532,7 +532,7 @@ AddParticipantBox::AddParticipantBox(ChatData *chat) : _inner(chat), _hiding(fal connect(&_inner, SIGNAL(mustScrollTo(int,int)), &_scroll, SLOT(scrollToY(int,int))); showAll(); - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } @@ -628,7 +628,7 @@ void AddParticipantBox::animStep(float64 dt) { void AddParticipantBox::startHide() { _hiding = true; if (_cache.isNull()) { - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } a_opacity.start(0); diff --git a/Telegram/SourceFiles/boxes/confirmbox.cpp b/Telegram/SourceFiles/boxes/confirmbox.cpp index 49db880a7..0c6f86fcf 100644 --- a/Telegram/SourceFiles/boxes/confirmbox.cpp +++ b/Telegram/SourceFiles/boxes/confirmbox.cpp @@ -43,7 +43,7 @@ ConfirmBox::ConfirmBox(QString text, QString doneText, QString cancelText) : _hi resize(_width, _height); showAll(); - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } @@ -118,7 +118,7 @@ void ConfirmBox::onCancel() { void ConfirmBox::startHide() { _hiding = true; if (_cache.isNull()) { - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } a_opacity.start(0); diff --git a/Telegram/SourceFiles/boxes/connectionbox.cpp b/Telegram/SourceFiles/boxes/connectionbox.cpp index 2b7f9bdf2..e975e2678 100644 --- a/Telegram/SourceFiles/boxes/connectionbox.cpp +++ b/Telegram/SourceFiles/boxes/connectionbox.cpp @@ -46,7 +46,7 @@ ConnectionBox::ConnectionBox() : _hiding(false), _passwordInput.setEchoMode(QLineEdit::Password); showAll(); - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } @@ -216,7 +216,7 @@ void ConnectionBox::onCancel() { void ConnectionBox::startHide() { _hiding = true; if (_cache.isNull()) { - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } a_opacity.start(0); diff --git a/Telegram/SourceFiles/boxes/contactsbox.cpp b/Telegram/SourceFiles/boxes/contactsbox.cpp index ec76e77af..871583cd2 100644 --- a/Telegram/SourceFiles/boxes/contactsbox.cpp +++ b/Telegram/SourceFiles/boxes/contactsbox.cpp @@ -419,7 +419,7 @@ ContactsBox::ContactsBox() : _inner(), _hiding(false), _scroll(this, st::newGrou connect(&_inner, SIGNAL(mustScrollTo(int,int)), &_scroll, SLOT(scrollToY(int,int))); showAll(); - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } @@ -521,7 +521,7 @@ void ContactsBox::animStep(float64 dt) { void ContactsBox::startHide() { _hiding = true; if (_cache.isNull()) { - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } a_opacity.start(0); diff --git a/Telegram/SourceFiles/boxes/downloadpathbox.cpp b/Telegram/SourceFiles/boxes/downloadpathbox.cpp index 4833a1193..0283d4e41 100644 --- a/Telegram/SourceFiles/boxes/downloadpathbox.cpp +++ b/Telegram/SourceFiles/boxes/downloadpathbox.cpp @@ -42,7 +42,7 @@ DownloadPathBox::DownloadPathBox() : _hiding(false), _dirInput.setCursorPosition(0); showAll(); - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } @@ -182,7 +182,7 @@ void DownloadPathBox::onCancel() { void DownloadPathBox::startHide() { _hiding = true; if (_cache.isNull()) { - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } a_opacity.start(0); diff --git a/Telegram/SourceFiles/boxes/emojibox.cpp b/Telegram/SourceFiles/boxes/emojibox.cpp index f435711b8..6f5312d2a 100644 --- a/Telegram/SourceFiles/boxes/emojibox.cpp +++ b/Telegram/SourceFiles/boxes/emojibox.cpp @@ -89,7 +89,7 @@ EmojiBox::EmojiBox() : _hiding(false), resize(_width, _height); showAll(); - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } @@ -186,7 +186,7 @@ void EmojiBox::onClose() { void EmojiBox::startHide() { _hiding = true; if (_cache.isNull()) { - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } a_opacity.start(0); diff --git a/Telegram/SourceFiles/boxes/newgroupbox.cpp b/Telegram/SourceFiles/boxes/newgroupbox.cpp index b4b66feb2..bc664fd8b 100644 --- a/Telegram/SourceFiles/boxes/newgroupbox.cpp +++ b/Telegram/SourceFiles/boxes/newgroupbox.cpp @@ -462,7 +462,7 @@ NewGroupBox::NewGroupBox() : _inner(), _hiding(false), _scroll(this, st::newGrou connect(&_inner, SIGNAL(mustScrollTo(int,int)), &_scroll, SLOT(scrollToY(int,int))); showAll(); - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } @@ -562,7 +562,7 @@ void NewGroupBox::animStep(float64 dt) { void NewGroupBox::startHide() { _hiding = true; if (_cache.isNull()) { - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } a_opacity.start(0); @@ -617,7 +617,7 @@ CreateGroupBox::CreateGroupBox(const MTPVector &users) : _users(us resize(_width, _height); showAll(); - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } @@ -754,7 +754,7 @@ void CreateGroupBox::onCancel() { void CreateGroupBox::startHide() { _hiding = true; if (_cache.isNull()) { - _cache = grab(rect()); + _cache = myGrab(this, rect()); hideAll(); } a_opacity.start(0); diff --git a/Telegram/SourceFiles/dialogswidget.cpp b/Telegram/SourceFiles/dialogswidget.cpp index 7652f1850..46e45ab3d 100644 --- a/Telegram/SourceFiles/dialogswidget.cpp +++ b/Telegram/SourceFiles/dialogswidget.cpp @@ -25,7 +25,8 @@ Copyright (c) 2014 John Preston, https://tdesktop.com #include "boxes/addcontactbox.h" #include "boxes/newgroupbox.h" -DialogsListWidget::DialogsListWidget(QWidget *parent, MainWidget *main) : QWidget(parent), dialogs(false), contactsNoDialogs(true), contacts(true), contactSel(false), sel(0), filteredSel(-1), selByMouse(false) { +DialogsListWidget::DialogsListWidget(QWidget *parent, MainWidget *main) : QWidget(parent), +dialogs(false), contactsNoDialogs(true), contacts(true), sel(0), contactSel(false), selByMouse(false), filteredSel(-1) { 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 *))); @@ -84,6 +85,7 @@ void DialogsListWidget::mouseMoveEvent(QMouseEvent *e) { lastMousePos = mapToGlobal(e->pos()); selByMouse = true; onUpdateSelected(true); + repaint(); } void DialogsListWidget::onUpdateSelected(bool force) { diff --git a/Telegram/SourceFiles/dropdown.cpp b/Telegram/SourceFiles/dropdown.cpp index 691fb7204..039d01620 100644 --- a/Telegram/SourceFiles/dropdown.cpp +++ b/Telegram/SourceFiles/dropdown.cpp @@ -602,7 +602,7 @@ bool EmojiPan::animStep(float64 ms) { void EmojiPan::hideStart() { if (_cache.isNull()) { showAll(); - _cache = grab(rect().marginsRemoved(st::dropdownPadding)); + _cache = myGrab(this, rect().marginsRemoved(st::dropdownPadding)); } hideAll(); _hiding = true; @@ -621,7 +621,7 @@ void EmojiPan::showStart() { } if (_cache.isNull()) { showAll(); - _cache = grab(rect().marginsRemoved(st::dropdownPadding)); + _cache = myGrab(this, rect().marginsRemoved(st::dropdownPadding)); } hideAll(); _hiding = false; diff --git a/Telegram/SourceFiles/gui/animation.h b/Telegram/SourceFiles/gui/animation.h index 7cd59b704..a86ae4636 100644 --- a/Telegram/SourceFiles/gui/animation.h +++ b/Telegram/SourceFiles/gui/animation.h @@ -178,7 +178,7 @@ namespace anim { class Animated { public: - Animated() : animInProcess(false), animStarted(0) { + Animated() : animStarted(0), animInProcess(false) { } virtual bool animStep(float64 ms) = 0; diff --git a/Telegram/SourceFiles/gui/countryinput.cpp b/Telegram/SourceFiles/gui/countryinput.cpp index 477c7ed85..04f7212da 100644 --- a/Telegram/SourceFiles/gui/countryinput.cpp +++ b/Telegram/SourceFiles/gui/countryinput.cpp @@ -459,7 +459,7 @@ void CountrySelect::prepareAnimation(int to) { a_coord.start(0); af_coord = st::countriesShowFunc; } - _cache = grab(QRect(_innerLeft, _innerTop, _innerWidth, _innerHeight)); + _cache = myGrab(this, QRect(_innerLeft, _innerTop, _innerWidth, _innerHeight)); _scroll.hide(); _doneButton.hide(); _cancelButton.hide(); diff --git a/Telegram/SourceFiles/gui/flatcheckbox.cpp b/Telegram/SourceFiles/gui/flatcheckbox.cpp index e55077a14..bf3a538b8 100644 --- a/Telegram/SourceFiles/gui/flatcheckbox.cpp +++ b/Telegram/SourceFiles/gui/flatcheckbox.cpp @@ -27,7 +27,7 @@ FlatCheckbox::FlatCheckbox(QWidget *parent, const QString &text, bool checked, c connect(this, SIGNAL(stateChanged(int, ButtonStateChangeSource)), this, SLOT(onStateChange(int, ButtonStateChangeSource))); setCursor(_st.cursor); int32 w = _st.width, h = _st.height; - if (w <= 0) w = _st.textLeft + _st.font->m.width(_text); + if (w <= 0) w = _st.textLeft + _st.font->m.width(_text) + 1; if (h <= 0) h = qMax(_st.font->height, _st.imageRect.height()); resize(QSize(w, h)); } @@ -86,6 +86,7 @@ void FlatCheckbox::paintEvent(QPaintEvent *e) { QRect tRect(rect()); tRect.setTop(_st.textTop); tRect.setLeft(_st.textLeft); +// p.drawText(_st.textLeft, _st.textTop + _st.font->ascent, _text); p.drawText(tRect, _text, QTextOption(style::al_topleft)); if (_state & StateDisabled) { diff --git a/Telegram/SourceFiles/gui/flatlabel.cpp b/Telegram/SourceFiles/gui/flatlabel.cpp index 9f6d92097..ca95c4040 100644 --- a/Telegram/SourceFiles/gui/flatlabel.cpp +++ b/Telegram/SourceFiles/gui/flatlabel.cpp @@ -43,6 +43,7 @@ void FlatLabel::setText(const QString &text) { void FlatLabel::setRichText(const QString &text) { textstyleSet(&_tst); + const char *t = text.toUtf8().constData(); _text.setRichText(_st.font, text, _labelOptions); textstyleRestore(); int32 w = _st.width ? _st.width : _text.maxWidth(), h = _text.countHeight(w); diff --git a/Telegram/SourceFiles/gui/images.cpp b/Telegram/SourceFiles/gui/images.cpp index c523f7ee4..b9e807cad 100644 --- a/Telegram/SourceFiles/gui/images.cpp +++ b/Telegram/SourceFiles/gui/images.cpp @@ -59,11 +59,19 @@ const QPixmap &Image::pix(int32 w, int32 h) const { restore(); checkload(); - if (w <= 0 || !width() || !height()) w = width(); + if (w <= 0 || !width() || !height()) { + w = width() * cRetinaFactor(); + } else if (cRetina()) { + w *= cRetinaFactor(); + h *= cRetinaFactor(); + } uint64 k = (uint64(w) << 32) | uint64(h); Sizes::const_iterator i = _sizesCache.constFind(k); if (i == _sizesCache.cend()) { QPixmap p(pixNoCache(w, h, true)); + if (cRetina()) { + p.setDevicePixelRatio(cRetinaFactor()); + } i = _sizesCache.insert(k, p); if (!p.isNull()) { globalAquiredSize += int64(p.width()) * p.height() * 4; diff --git a/Telegram/SourceFiles/gui/images.h b/Telegram/SourceFiles/gui/images.h index 00dbce459..db99a71a1 100644 --- a/Telegram/SourceFiles/gui/images.h +++ b/Telegram/SourceFiles/gui/images.h @@ -22,7 +22,7 @@ Copyright (c) 2014 John Preston, https://tdesktop.com class Image { public: - Image(QByteArray format = "PNG") : forgot(false), format(format) { + Image(QByteArray format = "PNG") : format(format), forgot(false) { } virtual bool loaded() const { return true; @@ -33,7 +33,7 @@ public: virtual int32 width() const = 0; virtual int32 height() const = 0; - virtual void load(bool loadFirst = false, bool prior = true) { + virtual void load(bool /*loadFirst*/ = false, bool /*prior*/ = true) { } virtual void checkload() const { diff --git a/Telegram/SourceFiles/gui/text.cpp b/Telegram/SourceFiles/gui/text.cpp index 1571d46c6..c68154e0a 100644 --- a/Telegram/SourceFiles/gui/text.cpp +++ b/Telegram/SourceFiles/gui/text.cpp @@ -389,7 +389,7 @@ public: void blockCreated() { sumWidth += _t->_blocks.back()->f_width(); - if (sumWidth.toInt() > stopAfterWidth) { + if (sumWidth.floor().toInt() > stopAfterWidth) { sumFinished = true; } } @@ -1187,8 +1187,8 @@ public: QFixed x = _x; if (_align & Qt::AlignHCenter) { - x += _wLeft.toInt() / 2; - } else if ((_align & Qt::AlignLeft) && _parDirection == Qt::RightToLeft || (_align & Qt::AlignRight) && _parDirection == Qt::LeftToRight) { + x += (_wLeft / 2).toInt(); + } else if (((_align & Qt::AlignLeft) && _parDirection == Qt::RightToLeft) || ((_align & Qt::AlignRight) && _parDirection == Qt::LeftToRight)) { x += _wLeft; } @@ -1475,16 +1475,13 @@ public: return false; } else if (_p) { QTextCharFormat format; -#ifdef Q_OS_WIN QTextItemInt gf(glyphs.mid(glyphsStart, glyphsEnd - glyphsStart), &_e->fnt, engine.layoutData->string.unicode() + itemStart, itemEnd - itemStart, engine.fontEngine(si), format); gf.logClusters = logClusters + itemStart - si.position; gf.width = itemWidth; gf.justified = false; - //TODO gf.initWithScriptItem(si); -#endif if (_localFrom + itemStart < _selectedTo && _localFrom + itemEnd > _selectedFrom) { QFixed selX = x, selWidth = itemWidth; @@ -1526,10 +1523,7 @@ public: _p->fillRect(QRectF(selX.toReal(), _y + _yDelta, selWidth.toReal(), _fontHeight), _textStyle->selectBG->b); } -#ifdef Q_OS_WIN - //TODO _p->drawTextItem(QPointF(x.toReal(), textY), gf); -#endif } x += itemWidth; diff --git a/Telegram/SourceFiles/gui/text.h b/Telegram/SourceFiles/gui/text.h index 5e3bcb1a6..d547dfef9 100644 --- a/Telegram/SourceFiles/gui/text.h +++ b/Telegram/SourceFiles/gui/text.h @@ -126,8 +126,8 @@ private: struct TextWord { TextWord() { } - TextWord(uint16 from, QFixed width, QFixed rbearing, QFixed rpadding = 0) : from(from), width(width), rpadding(rpadding), - _rbearing(rbearing.value() > 0xFFFF ? 0xFFFF : (rbearing.value() < -0xFFFF ? -0xFFFF : rbearing.value())) { + TextWord(uint16 from, QFixed width, QFixed rbearing, QFixed rpadding = 0) : from(from), width(width), + _rbearing(rbearing.value() > 0x7FFF ? 0x7FFF : (rbearing.value() < -0x7FFF ? -0x7FFF : rbearing.value())), rpadding(rpadding) { } QFixed f_rbearing() const { return QFixed::fromFixed(_rbearing); @@ -342,7 +342,7 @@ public: bool hasLinks() const; int32 maxWidth() const { - return _maxWidth.toInt(); + return _maxWidth.ceil().toInt(); } int32 minHeight() const { return _minHeight; @@ -358,7 +358,7 @@ public: QString original(uint16 selectedFrom = 0, uint16 selectedTo = 0xFFFF, bool expandLinks = true) const; - bool lastDots(uint32 dots, uint32 maxdots = 3) { // hack for typing animation + bool lastDots(uint32 dots, int32 maxdots = 3) { // hack for typing animation if (_text.size() < maxdots) return false; int32 nowDots = 0, from = _text.size() - maxdots, to = _text.size(); diff --git a/Telegram/SourceFiles/gui/twidget.cpp b/Telegram/SourceFiles/gui/twidget.cpp index 4dfff59f2..f9ee535a5 100644 --- a/Telegram/SourceFiles/gui/twidget.cpp +++ b/Telegram/SourceFiles/gui/twidget.cpp @@ -16,3 +16,35 @@ Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE Copyright (c) 2014 John Preston, https://tdesktop.com */ #include "stdafx.h" + +#include "application.h" + +namespace { + void _sendResizeEvents(QWidget *target) { + QResizeEvent e(target->size(), QSize()); + QApplication::sendEvent(target, &e); + + const QObjectList children = target->children(); + for (int i = 0; i < children.size(); ++i) { + QWidget *child = static_cast(children.at(i)); + if (child->isWidgetType() && !child->isWindow() && child->testAttribute(Qt::WA_PendingResizeEvent)) { + _sendResizeEvents(child); + } + } + } +} + +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); + } + + qreal dpr = App::app()->devicePixelRatio(); + QPixmap result(rect.size() * dpr); + result.setDevicePixelRatio(dpr); + result.fill(Qt::transparent); + target->render(&result, QPoint(), QRegion(rect), QWidget::DrawWindowBackground | QWidget::DrawChildren | QWidget::IgnoreMask); + return result; +} diff --git a/Telegram/SourceFiles/gui/twidget.h b/Telegram/SourceFiles/gui/twidget.h index f98dd8c46..559b9e2f9 100644 --- a/Telegram/SourceFiles/gui/twidget.h +++ b/Telegram/SourceFiles/gui/twidget.h @@ -31,7 +31,7 @@ public: return dynamic_cast(parentWidget()); } - virtual void leaveToChildEvent(QEvent *e) { // e -- from enterEvent() of child TWidget + virtual void leaveToChildEvent(QEvent */*e*/) { // e -- from enterEvent() of child TWidget } protected: @@ -44,3 +44,5 @@ protected: private: }; + +QPixmap myGrab(QWidget *target, const QRect &rect); diff --git a/Telegram/SourceFiles/history.cpp b/Telegram/SourceFiles/history.cpp index c89588aa8..2f176661e 100644 --- a/Telegram/SourceFiles/history.cpp +++ b/Telegram/SourceFiles/history.cpp @@ -2693,6 +2693,20 @@ void HistoryMessage::drawInDialog(QPainter &p, const QRect &r, bool act, const H } } +QString HistoryMessage::notificationHeader() const { + return _history->peer->chat ? from()->name : QString(); +} + +QString HistoryMessage::notificationText() const { + QString msg(media ? media->inDialogsText() : _text.original(0, 0xFFFF, false)); + if (msg.size() > 0xFF) msg = msg.mid(0, 0xFF) + qsl(".."); +// subtitle used +// if (_history->peer->chat || out()) { +// msg = lang(lng_message_with_from).replace(qsl("[c]"), QString()).replace(qsl("[/c]"), QString()).replace(qsl("{from}"), textRichPrepare((_from == App::self()) ? lang(lng_from_you) : _from->firstName)).replace(qsl("{message}"), textRichPrepare(msg)); +// } + return msg; +} + HistoryMessage::~HistoryMessage() { if (media) media->unregItem(this); delete media; @@ -3103,6 +3117,12 @@ void HistoryServiceMsg::drawInDialog(QPainter &p, const QRect &r, bool act, cons cache.drawElided(p, tr.left(), tr.top(), tr.width(), tr.height() / st::dlgHistFont->height); } +QString HistoryServiceMsg::notificationText() const { + QString msg = _text.original(0, 0xFFFF); + if (msg.size() > 0xFF) msg = msg.mid(0, 0xFF) + qsl(".."); + return msg; +} + HistoryServiceMsg::~HistoryServiceMsg() { delete media; } @@ -3142,3 +3162,8 @@ int32 HistoryUnreadBar::resize(int32 width) { void HistoryUnreadBar::drawInDialog(QPainter &p, const QRect &r, bool act, const HistoryItem *&cacheFor, Text &cache) const { } + +QString HistoryUnreadBar::notificationText() const { + return QString(); +} + diff --git a/Telegram/SourceFiles/history.h b/Telegram/SourceFiles/history.h index 1286c84ae..bb965cc35 100644 --- a/Telegram/SourceFiles/history.h +++ b/Telegram/SourceFiles/history.h @@ -1026,6 +1026,10 @@ public: } virtual void drawInDialog(QPainter &p, const QRect &r, bool act, const HistoryItem *&cacheFor, Text &cache) const = 0; + virtual QString notificationHeader() const { + return QString(); + } + virtual QString notificationText() const = 0; void markRead(); int32 y, id; @@ -1275,7 +1279,9 @@ public: bool getVideoCoords(VideoData *video, int32 &x, int32 &y, int32 &w) const; void drawInDialog(QPainter &p, const QRect &r, bool act, const HistoryItem *&cacheFor, Text &cache) const; - + QString notificationHeader() const; + QString notificationText() const; + void updateMedia(const MTPMessageMedia &media) { if (this->media) this->media->updateFrom(media); } @@ -1348,6 +1354,8 @@ public: bool getPhotoCoords(PhotoData *photo, int32 &x, int32 &y, int32 &w) const; void drawInDialog(QPainter &p, const QRect &r, bool act, const HistoryItem *&cacheFor, Text &cache) const; + QString notificationText() const; + bool needCheck() const { return false; } @@ -1402,6 +1410,8 @@ public: int32 resize(int32 width); void drawInDialog(QPainter &p, const QRect &r, bool act, const HistoryItem *&cacheFor, Text &cache) const; + QString notificationText() const; + QString selectedText(uint32 selection) const { return QString(); } diff --git a/Telegram/SourceFiles/historywidget.cpp b/Telegram/SourceFiles/historywidget.cpp index eeb286ba9..647484984 100644 --- a/Telegram/SourceFiles/historywidget.cpp +++ b/Telegram/SourceFiles/historywidget.cpp @@ -1335,7 +1335,7 @@ void HistoryHider::mousePressEvent(QMouseEvent *e) { void HistoryHider::startHide() { if (hiding) return; hiding = true; - if (offered) cacheForAnim = grab(box); + if (offered) cacheForAnim = myGrab(this, box); if (_forwardRequest) MTP::cancel(_forwardRequest); aOpacity.start(0); anim::start(this); @@ -2028,10 +2028,10 @@ PeerData *HistoryWidget::activePeer() const { void HistoryWidget::animShow(const QPixmap &bgAnimCache, const QPixmap &bgAnimTopBarCache, bool back) { _bgAnimCache = bgAnimCache; _bgAnimTopBarCache = bgAnimTopBarCache; - _animCache = grab(rect()); - App::main()->topBar()->showAll(); - _animTopBarCache = App::main()->topBar()->grab(QRect(0, 0, width(), st::topBarHeight)); - App::main()->topBar()->hideAll(); + _animCache = myGrab(this, rect()); + App::main()->topBar()->stopAnim(); + _animTopBarCache = myGrab(App::main()->topBar(), QRect(0, 0, width(), st::topBarHeight)); + App::main()->topBar()->startAnim(); _scroll.hide(); _attachDocument.hide(); _attachPhoto.hide(); @@ -2057,7 +2057,7 @@ bool HistoryWidget::animStep(float64 ms) { a_coord.finish(); a_alpha.finish(); _bgAnimCache = _animCache = _animTopBarCache = _bgAnimTopBarCache = QPixmap(); - App::main()->topBar()->showAll(); + App::main()->topBar()->stopAnim(); updateControlsVisibility(); if (hist && hist->unreadLoaded) { _scroll.show(); diff --git a/Telegram/SourceFiles/intro/intro.cpp b/Telegram/SourceFiles/intro/intro.cpp index c6b8b9a7b..6b1eed49a 100644 --- a/Telegram/SourceFiles/intro/intro.cpp +++ b/Telegram/SourceFiles/intro/intro.cpp @@ -122,14 +122,14 @@ void IntroWidget::onDoneStateChanged(int oldState, ButtonStateChangeSource sourc void IntroWidget::makeHideCache(int stage) { if (stage < 0) stage = current; int w = st::introSize.width(), h = st::introSize.height(); - cacheForHide = stages[stage]->grab(QRect(st::introSlideShift, 0, w, h)); + cacheForHide = myGrab(stages[stage], QRect(st::introSlideShift, 0, w, h)); cacheForHideInd = stage; } void IntroWidget::makeShowCache(int stage) { if (stage < 0) stage = current + moving; int w = st::introSize.width(), h = st::introSize.height(); - cacheForShow = stages[stage]->grab(QRect(st::introSlideShift, 0, w, h)); + cacheForShow = myGrab(stages[stage], QRect(st::introSlideShift, 0, w, h)); cacheForShowInd = stage; } @@ -138,7 +138,7 @@ void IntroWidget::animShow(const QPixmap &bgAnimCache, bool back) { anim::stop(this); stages[current]->show(); - _animCache = grab(rect()); + _animCache = myGrab(this, rect()); visibilityChanging = 1; a_coord = back ? anim::ivalue(-st::introSlideShift, 0) : anim::ivalue(st::introSlideShift, 0); @@ -213,9 +213,9 @@ void IntroWidget::paintEvent(QPaintEvent *e) { p.drawPixmap(a_coord.current(), 0, _animCache); } else { p.setOpacity(cAlphaHide.current()); - p.drawPixmap(stages[current]->x() + st::introSlideShift + xCoordHide.current(), stages[current]->y(), cacheForHide.width(), cacheForHide.height(), cacheForHide); + p.drawPixmap(stages[current]->x() + st::introSlideShift + xCoordHide.current(), stages[current]->y(), cacheForHide); p.setOpacity(cAlphaShow.current()); - p.drawPixmap(stages[current + moving]->x() + st::introSlideShift + xCoordShow.current(), stages[current + moving]->y(), cacheForShow.width(), cacheForShow.height(), cacheForShow); + p.drawPixmap(stages[current + moving]->x() + st::introSlideShift + xCoordShow.current(), stages[current + moving]->y(), cacheForShow); } } } diff --git a/Telegram/SourceFiles/intro/introphone.cpp b/Telegram/SourceFiles/intro/introphone.cpp index ae03ddef4..4ee34782f 100644 --- a/Telegram/SourceFiles/intro/introphone.cpp +++ b/Telegram/SourceFiles/intro/introphone.cpp @@ -62,7 +62,7 @@ IntroPhone::IntroPhone(IntroWidget *parent) : IntroStage(parent), changed(false) _signup.setLink(1, TextLinkPtr(new SignUpLink(this))); _signup.hide(); - _signupCache = _signup.grab(_signup.rect()); + _signupCache = myGrab(&_signup, _signup.rect()); if (!country.onChooseCountry(intro()->currentCountry())) { country.onChooseCountry(qsl("US")); diff --git a/Telegram/SourceFiles/logs.cpp b/Telegram/SourceFiles/logs.cpp index 4c81c504d..8d281b13d 100644 --- a/Telegram/SourceFiles/logs.cpp +++ b/Telegram/SourceFiles/logs.cpp @@ -69,6 +69,9 @@ void debugLogWrite(const char *file, int32 line, const QString &v) { debugLogStream->flush(); #ifdef Q_OS_WIN OutputDebugString(reinterpret_cast(msg.utf16())); +#endif +#ifdef Q_OS_MAC + _outputDebugString(msg.toUtf8().constData()); #endif } } @@ -113,6 +116,12 @@ void logWrite(const QString &v) { void logsInit() { static _StreamCreator streamCreator; if (mainLogStream) return; + +#ifdef Q_OS_MAC + if (QDir(cWorkingDir()).absolutePath() == qsl("/")) { + cSetWorkingDir(cExeDir()); + } +#endif QString oldDir = cWorkingDir(); mainLog.setFileName(cWorkingDir() + "log.txt"); diff --git a/Telegram/SourceFiles/main.cpp b/Telegram/SourceFiles/main.cpp index d6ecc5058..8174807e2 100644 --- a/Telegram/SourceFiles/main.cpp +++ b/Telegram/SourceFiles/main.cpp @@ -25,7 +25,7 @@ int main(int argc, char *argv[]) { #endif settingsParseArgs(argc, argv); - for (uint32 i = 0; i < argc; ++i) { + for (int32 i = 0; i < argc; ++i) { if (string("-fixprevious") == argv[i]) { return psFixPrevious(); } else if (string("-cleanup") == argv[i]) { diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index d373f283b..51177d996 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -1,4 +1,4 @@ -/* + /* This file is part of Telegram Desktop, an unofficial desktop messaging app, see https://telegram.org @@ -26,7 +26,8 @@ Copyright (c) 2014 John Preston, https://tdesktop.com #include "mainwidget.h" #include "boxes/confirmbox.h" -TopBarWidget::TopBarWidget(MainWidget *w) : QWidget(w), a_over(0), _drawShadow(true), _selCount(0), _selStrWidth(0), +TopBarWidget::TopBarWidget(MainWidget *w) : QWidget(w), + a_over(0), _drawShadow(true), _selCount(0), _selStrWidth(0), _animating(false), _clearSelection(this, lang(lng_selected_clear), st::topBarButton), _forward(this, lang(lng_selected_forward), st::topBarActionButton), _delete(this, lang(lng_selected_delete), st::topBarActionButton), @@ -182,14 +183,27 @@ void TopBarWidget::resizeEvent(QResizeEvent *e) { if (!_addContact.isHidden()) _addContact.move(r -= _addContact.width(), 0); } -void TopBarWidget::hideAll() { +void TopBarWidget::startAnim() { _edit.hide(); _leaveGroup.hide(); _addContact.hide(); _deleteContact.hide(); + _clearSelection.hide(); + _delete.hide(); + _forward.hide(); + _animating = true; +} + +void TopBarWidget::stopAnim() { + _animating = false; + showAll(); } void TopBarWidget::showAll() { + if (_animating) { + resizeEvent(0); + return; + } PeerData *p = App::main() ? App::main()->profilePeer() : 0; if (p && (p->chat || p->asUser()->contact >= 0)) { if (p->chat) { @@ -679,11 +693,11 @@ void MainWidget::showPeer(const PeerId &peerId, bool back, bool force) { dialogs.enableShadow(false); if (peerId) { _topBar.enableShadow(false); - animCache = grab(history.geometry()); + animCache = myGrab(this, history.geometry()); } else { - animCache = grab(QRect(_dialogsWidth, 0, width() - _dialogsWidth, height())); + animCache = myGrab(this, QRect(_dialogsWidth, 0, width() - _dialogsWidth, height())); } - animTopBarCache = grab(QRect(_topBar.x(), _topBar.y(), _topBar.width(), st::topBarHeight)); + animTopBarCache = myGrab(this, QRect(_topBar.x(), _topBar.y(), _topBar.width(), st::topBarHeight)); dialogs.enableShadow(); _topBar.enableShadow(); history.show(); @@ -733,7 +747,7 @@ PeerData *MainWidget::profilePeer() { void MainWidget::showPeerProfile(const PeerData *peer, bool back) { dialogs.enableShadow(false); _topBar.enableShadow(false); - QPixmap animCache = grab(history.geometry()), animTopBarCache = grab(QRect(_topBar.x(), _topBar.y(), _topBar.width(), st::topBarHeight)); + QPixmap animCache = myGrab(this, history.geometry()), animTopBarCache = myGrab(this, QRect(_topBar.x(), _topBar.y(), _topBar.width(), st::topBarHeight)); dialogs.enableShadow(); _topBar.enableShadow(); if (!back) { @@ -958,7 +972,7 @@ void MainWidget::animShow(const QPixmap &bgAnimCache, bool back) { anim::stop(this); showAll(); - _animCache = grab(rect()); + _animCache = myGrab(this, rect()); a_coord = back ? anim::ivalue(-st::introSlideShift, 0) : anim::ivalue(st::introSlideShift, 0); a_alpha = anim::fvalue(0, 1); @@ -1368,6 +1382,7 @@ void MainWidget::setOnline(int windowState) { bool isOnline = App::wnd()->psIsOnline(windowState); if (isOnline || windowState >= 0) { onlineRequest = MTP::send(MTPaccount_UpdateStatus(MTP_bool(!isOnline))); + LOG(("App Info: Updating Online!")); } if (App::self()) App::self()->onlineTill = unixtime() + (isOnline ? 60 : -1); if (profile) { @@ -1385,7 +1400,7 @@ void MainWidget::mainStateChanged(Qt::WindowState state) { void MainWidget::updateReceived(const mtpPrime *from, const mtpPrime *end) { if (end <= from || !MTP::authedId()) return; - if (*from == mtpc_new_session_created) { + if (mtpTypeId(*from) == mtpc_new_session_created) { MTPNewSession newSession(from, end); updSeq = 0; return getDifference(); diff --git a/Telegram/SourceFiles/mainwidget.h b/Telegram/SourceFiles/mainwidget.h index 801bafd5d..5a2b80a27 100644 --- a/Telegram/SourceFiles/mainwidget.h +++ b/Telegram/SourceFiles/mainwidget.h @@ -44,7 +44,8 @@ public: bool animStep(float64 ms); void enableShadow(bool enable = true); - void hideAll(); + void startAnim(); + void stopAnim(); void showAll(); void showSelected(uint32 selCount); @@ -73,6 +74,8 @@ private: uint32 _selCount; QString _selStr; int32 _selStrWidth; + + bool _animating; FlatButton _clearSelection; FlatButton _forward, _delete; diff --git a/Telegram/SourceFiles/mtproto/generate.py b/Telegram/SourceFiles/mtproto/generate.py index 3ce26816c..3cab29832 100644 --- a/Telegram/SourceFiles/mtproto/generate.py +++ b/Telegram/SourceFiles/mtproto/generate.py @@ -189,13 +189,19 @@ with open('scheme.tl') as f: funcsText += '\tmtpTypeId type() const {\n\t\treturn mtpc_' + name + ';\n\t}\n'; # type id - funcsText += '\tvoid read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_' + name + ') {\n'; # read method + if (len(prmsList)): + funcsText += '\tvoid read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_' + name + ') {\n'; # read method + else: + funcsText += '\tvoid read(const mtpPrime *&/*from*/, const mtpPrime */*end*/, mtpTypeId /*cons*/ = mtpc_' + name + ') {\n'; # read method for k in prmsList: v = prms[k]; funcsText += '\t\tv' + k + '.read(from, end);\n'; funcsText += '\t}\n'; - funcsText += '\tvoid write(mtpBuffer &to) const {\n'; # write method + if (len(prmsList)): + funcsText += '\tvoid write(mtpBuffer &to) const {\n'; # write method + else: + funcsText += '\tvoid write(mtpBuffer &/*to*/) const {\n'; # write method for k in prmsList: v = prms[k]; funcsText += '\t\tv' + k + '.write(to);\n'; @@ -365,10 +371,10 @@ for restype in typesList: getters += '\t}\n'; constructsText += '\texplicit MTP' + restype + '(MTPD' + name + ' *_data);\n'; # by-data type constructor - constructsInline += 'inline MTP' + restype + '::MTP' + restype + '(MTPD' + name + ' *_data) : '; + constructsInline += 'inline MTP' + restype + '::MTP' + restype + '(MTPD' + name + ' *_data) : mtpDataOwner(_data)'; if (withType): - constructsInline += '_type(mtpc_' + name + '), '; - constructsInline += 'mtpDataOwner(_data) {\n}\n'; + constructsInline += ', _type(mtpc_' + name + ')'; + constructsInline += ' {\n}\n'; dataText += '\tMTPD' + name + '('; # params constructor prmsStr = []; @@ -532,7 +538,10 @@ for restype in typesList: inlineMethods += '}\n'; typesText += '\tvoid write(mtpBuffer &to) const;\n'; # write method - inlineMethods += 'inline void MTP' + restype + '::write(mtpBuffer &to) const {\n' + if (len(writer)): + inlineMethods += 'inline void MTP' + restype + '::write(mtpBuffer &to) const {\n'; + else: + inlineMethods += 'inline void MTP' + restype + '::write(mtpBuffer &/*to*/) const {\n'; if (withType): inlineMethods += '\tswitch (_type) {\n'; inlineMethods += writer; @@ -546,9 +555,10 @@ for restype in typesList: typesText += '\nprivate:\n'; # private constructors if (withType): # by-type-id constructor typesText += '\texplicit MTP' + restype + '(mtpTypeId type);\n'; - inlineMethods += 'inline MTP' + restype + '::MTP' + restype + '(mtpTypeId type) : _type(type)'; + inlineMethods += 'inline MTP' + restype + '::MTP' + restype + '(mtpTypeId type) : '; if (withData): - inlineMethods += ', mtpDataOwner(0)'; + inlineMethods += 'mtpDataOwner(0), '; + inlineMethods += '_type(type)'; inlineMethods += ' {\n'; inlineMethods += '\tswitch (type) {\n'; # type id check inlineMethods += switchLines; @@ -583,7 +593,7 @@ textSerializeFull += '\t\t\t++from;\n'; textSerializeFull += '\t\t\t++start;\n'; textSerializeFull += '\t\t}\n\n'; textSerializeFull += '\t\tQString result;\n'; -textSerializeFull += '\t\tswitch (cons) {\n' + textSerialize + '\t\t}\n\n'; +textSerializeFull += '\t\tswitch (mtpTypeId(cons)) {\n' + textSerialize + '\t\t}\n\n'; textSerializeFull += '\t\treturn mtpTextSerializeCore(from, end, cons, level, vcons);\n'; textSerializeFull += '\t} catch (Exception &e) {\n'; textSerializeFull += '\t\tQString result = "(" + QString(e.what()) + QString("), cons: %1").arg(cons);\n'; diff --git a/Telegram/SourceFiles/mtproto/mtp.cpp b/Telegram/SourceFiles/mtproto/mtp.cpp index 5a5516a96..8e875c965 100644 --- a/Telegram/SourceFiles/mtproto/mtp.cpp +++ b/Telegram/SourceFiles/mtproto/mtp.cpp @@ -31,7 +31,6 @@ namespace { AuthExportRequests authExportRequests; bool started = false; - bool loadingConfig = false; uint32 layer; @@ -440,7 +439,9 @@ namespace MTP { _localKey.setKey(key); } - void start() { + void start() { + unixtimeInit(); + if (!localKey().created()) { LOG(("App Error: trying to start MTP without local key!")); return; diff --git a/Telegram/SourceFiles/mtproto/mtpConnection.cpp b/Telegram/SourceFiles/mtproto/mtpConnection.cpp index 29fccb131..c11fac3a0 100644 --- a/Telegram/SourceFiles/mtproto/mtpConnection.cpp +++ b/Telegram/SourceFiles/mtproto/mtpConnection.cpp @@ -686,6 +686,7 @@ void MTPautoConnection::httpSend(mtpBuffer &buffer) { QNetworkRequest request(address); request.setHeader(QNetworkRequest::ContentLengthHeader, QVariant(requestSize)); + request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(qsl("application/x-www-form-urlencoded"))); TCP_LOG(("HTTP Info: sending %1 len request %2").arg(requestSize).arg(mb(&buffer[2], requestSize).str())); requests.insert(manager.post(request, QByteArray((const char*)(&buffer[2]), requestSize))); @@ -945,6 +946,7 @@ void MTPhttpConnection::sendData(mtpBuffer &buffer) { QNetworkRequest request(address); request.setHeader(QNetworkRequest::ContentLengthHeader, QVariant(requestSize)); + request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(qsl("application/x-www-form-urlencoded"))); TCP_LOG(("HTTP Info: sending %1 len request %2").arg(requestSize).arg(mb(&buffer[2], requestSize).str())); requests.insert(manager.post(request, QByteArray((const char*)(&buffer[2]), requestSize))); diff --git a/Telegram/SourceFiles/mtproto/mtpConnection.h b/Telegram/SourceFiles/mtproto/mtpConnection.h index de781ae48..0714c1823 100644 --- a/Telegram/SourceFiles/mtproto/mtpConnection.h +++ b/Telegram/SourceFiles/mtproto/mtpConnection.h @@ -28,7 +28,7 @@ inline bool mtpRequestData::isSentContainer(const mtpRequest &request) { // "req } inline bool mtpRequestData::isStateRequest(const mtpRequest &request) { if (request->size() < 9) return false; - return ((*request)[8] == mtpc_msgs_state_req); + return (mtpTypeId((*request)[8]) == mtpc_msgs_state_req); } inline bool mtpRequestData::needAck(const mtpRequest &request) { if (request->size() < 9) return false; @@ -392,10 +392,10 @@ private: // Auth key creation fields and methods struct AuthKeyCreateData { AuthKeyCreateData() - : retries(0) - , g(0) - , new_nonce(*(MTPint256*)((uchar*)new_nonce_buf)) + : new_nonce(*(MTPint256*)((uchar*)new_nonce_buf)) , auth_key_aux_hash(*(MTPlong*)((uchar*)new_nonce_buf + 33)) + , retries(0) + , g(0) , req_num(0) , msgs_sent(0) { memset(new_nonce_buf, 0, sizeof(new_nonce_buf)); diff --git a/Telegram/SourceFiles/mtproto/mtpCoreTypes.h b/Telegram/SourceFiles/mtproto/mtpCoreTypes.h index 595d6b713..c19477c7c 100644 --- a/Telegram/SourceFiles/mtproto/mtpCoreTypes.h +++ b/Telegram/SourceFiles/mtproto/mtpCoreTypes.h @@ -51,7 +51,7 @@ typedef uint64 mtpMsgId; typedef uint64 mtpPingId; typedef QVector mtpBuffer; -typedef int32 mtpTypeId; +typedef uint32 mtpTypeId; class mtpRequestData; class mtpRequest : public QSharedPointer { @@ -335,9 +335,9 @@ enum { // mtpc_msg_copy = 0xe06046b2, mtpc_gzip_packed = 0x3072cfa1 }; -static const int32 mtpc_bytes = mtpc_string; -static const int32 mtpc_core_message = -1; // undefined type, but is used -static const uint32 mtpLayers[] = { +static const mtpTypeId mtpc_bytes = mtpc_string; +static const mtpTypeId mtpc_core_message = -1; // undefined type, but is used +static const mtpTypeId mtpLayers[] = { mtpc_invokeWithLayer1, mtpc_invokeWithLayer2, mtpc_invokeWithLayer3, @@ -999,10 +999,10 @@ typedef MTPBoxed MTPNull; QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpPrime cons = 0, uint32 level = 0, mtpPrime vcons = 0); -inline QString mtpTextSerializeCore(const mtpPrime *&from, const mtpPrime *end, mtpPrime cons, uint32 level, mtpPrime vcons = 0) { +inline QString mtpTextSerializeCore(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons, uint32 level, mtpPrime vcons = 0) { QString add = QString(" ").repeated(level * 2); - switch (cons) { + switch (mtpTypeId(cons)) { case mtpc_int: { MTPint value(from, end, cons); return QString("%1 [INT]").arg(value.v); } @@ -1047,7 +1047,7 @@ inline QString mtpTextSerializeCore(const mtpPrime *&from, const mtpPrime *end, QString result; if (cnt) { result += "\n" + add; - for (uint32 i = 0; i < cnt; ++i) { + for (int32 i = 0; i < cnt; ++i) { result += " " + mtpTextSerialize(from, end, vcons, level + 1) + ",\n" + add; } } else { @@ -1091,7 +1091,7 @@ inline QString mtpTextSerializeCore(const mtpPrime *&from, const mtpPrime *end, case mtpc_gzip_packed: { MTPstring packed(from, end); // read packed string as serialized mtp string type - uint32 packedLen = packed.c_string().v.size(), unpackedChunk = packedLen, unpackedLen = 0; + uint32 packedLen = packed.c_string().v.size(), unpackedChunk = packedLen; mtpBuffer result; // * 4 because of mtpPrime type result.resize(0); @@ -1132,7 +1132,7 @@ inline QString mtpTextSerializeCore(const mtpPrime *&from, const mtpPrime *end, return "[GZIPPED] " + mtpTextSerialize(newFrom, newEnd, 0, level); } default: { - for (int i = 1; i < mtpLayerMax; ++i) { + for (uint32 i = 1; i < mtpLayerMax; ++i) { if (cons == mtpLayers[i]) { return QString("[LAYER%1] ").arg(i + 1) + mtpTextSerialize(from, end, 0, level); } diff --git a/Telegram/SourceFiles/mtproto/mtpPublicRSA.h b/Telegram/SourceFiles/mtproto/mtpPublicRSA.h index e6342b0a7..9c28aa940 100644 --- a/Telegram/SourceFiles/mtproto/mtpPublicRSA.h +++ b/Telegram/SourceFiles/mtproto/mtpPublicRSA.h @@ -69,7 +69,7 @@ private: } struct mtpPublicRSAInner { - mtpPublicRSAInner(RSA *_prsa, uint64 _fp) : prsa(_prsa), fp(_fp), cnt(1) { + mtpPublicRSAInner(RSA *_prsa, uint64 _fp) : prsa(_prsa), cnt(1), fp(_fp) { } ~mtpPublicRSAInner() { RSA_free(prsa); diff --git a/Telegram/SourceFiles/mtproto/mtpScheme.h b/Telegram/SourceFiles/mtproto/mtpScheme.h index 53c1c5fca..15a4d4bef 100644 --- a/Telegram/SourceFiles/mtproto/mtpScheme.h +++ b/Telegram/SourceFiles/mtproto/mtpScheme.h @@ -9829,7 +9829,7 @@ public: mtpTypeId type() const { return mtpc_req_pq; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_req_pq) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_req_pq) { vnonce.read(from, end); } void write(mtpBuffer &to) const { @@ -9873,7 +9873,7 @@ public: mtpTypeId type() const { return mtpc_req_DH_params; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_req_DH_params) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_req_DH_params) { vnonce.read(from, end); vserver_nonce.read(from, end); vp.read(from, end); @@ -9924,7 +9924,7 @@ public: mtpTypeId type() const { return mtpc_set_client_DH_params; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_set_client_DH_params) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_set_client_DH_params) { vnonce.read(from, end); vserver_nonce.read(from, end); vencrypted_data.read(from, end); @@ -9967,7 +9967,7 @@ public: mtpTypeId type() const { return mtpc_rpc_drop_answer; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_rpc_drop_answer) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_rpc_drop_answer) { vreq_msg_id.read(from, end); } void write(mtpBuffer &to) const { @@ -10006,7 +10006,7 @@ public: mtpTypeId type() const { return mtpc_get_future_salts; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_get_future_salts) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_get_future_salts) { vnum.read(from, end); } void write(mtpBuffer &to) const { @@ -10045,7 +10045,7 @@ public: mtpTypeId type() const { return mtpc_ping; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_ping) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_ping) { vping_id.read(from, end); } void write(mtpBuffer &to) const { @@ -10085,7 +10085,7 @@ public: mtpTypeId type() const { return mtpc_ping_delay_disconnect; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_ping_delay_disconnect) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_ping_delay_disconnect) { vping_id.read(from, end); vdisconnect_delay.read(from, end); } @@ -10126,7 +10126,7 @@ public: mtpTypeId type() const { return mtpc_destroy_session; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_destroy_session) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_destroy_session) { vsession_id.read(from, end); } void write(mtpBuffer &to) const { @@ -10169,7 +10169,7 @@ public: mtpTypeId type() const { return mtpc_register_saveDeveloperInfo; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_register_saveDeveloperInfo) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_register_saveDeveloperInfo) { vname.read(from, end); vemail.read(from, end); vphone_number.read(from, end); @@ -10218,7 +10218,7 @@ public: mtpTypeId type() const { return mtpc_invokeAfterMsg; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_invokeAfterMsg) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_invokeAfterMsg) { vmsg_id.read(from, end); vquery.read(from, end); } @@ -10260,7 +10260,7 @@ public: mtpTypeId type() const { return mtpc_invokeAfterMsgs; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_invokeAfterMsgs) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_invokeAfterMsgs) { vmsg_ids.read(from, end); vquery.read(from, end); } @@ -10300,7 +10300,7 @@ public: mtpTypeId type() const { return mtpc_auth_checkPhone; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_auth_checkPhone) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_auth_checkPhone) { vphone_number.read(from, end); } void write(mtpBuffer &to) const { @@ -10343,7 +10343,7 @@ public: mtpTypeId type() const { return mtpc_auth_sendCode; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_auth_sendCode) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_auth_sendCode) { vphone_number.read(from, end); vsms_type.read(from, end); vapi_id.read(from, end); @@ -10391,7 +10391,7 @@ public: mtpTypeId type() const { return mtpc_auth_sendCall; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_auth_sendCall) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_auth_sendCall) { vphone_number.read(from, end); vphone_code_hash.read(from, end); } @@ -10436,7 +10436,7 @@ public: mtpTypeId type() const { return mtpc_auth_signUp; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_auth_signUp) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_auth_signUp) { vphone_number.read(from, end); vphone_code_hash.read(from, end); vphone_code.read(from, end); @@ -10485,7 +10485,7 @@ public: mtpTypeId type() const { return mtpc_auth_signIn; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_auth_signIn) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_auth_signIn) { vphone_number.read(from, end); vphone_code_hash.read(from, end); vphone_code.read(from, end); @@ -10524,9 +10524,9 @@ public: mtpTypeId type() const { return mtpc_auth_logOut; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_auth_logOut) { + void read(const mtpPrime *&/*from*/, const mtpPrime */*end*/, mtpTypeId /*cons*/ = mtpc_auth_logOut) { } - void write(mtpBuffer &to) const { + void write(mtpBuffer &/*to*/) const { } typedef MTPBool ResponseType; @@ -10555,9 +10555,9 @@ public: mtpTypeId type() const { return mtpc_auth_resetAuthorizations; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_auth_resetAuthorizations) { + void read(const mtpPrime *&/*from*/, const mtpPrime */*end*/, mtpTypeId /*cons*/ = mtpc_auth_resetAuthorizations) { } - void write(mtpBuffer &to) const { + void write(mtpBuffer &/*to*/) const { } typedef MTPBool ResponseType; @@ -10591,7 +10591,7 @@ public: mtpTypeId type() const { return mtpc_auth_sendInvites; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_auth_sendInvites) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_auth_sendInvites) { vphone_numbers.read(from, end); vmessage.read(from, end); } @@ -10632,7 +10632,7 @@ public: mtpTypeId type() const { return mtpc_auth_exportAuthorization; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_auth_exportAuthorization) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_auth_exportAuthorization) { vdc_id.read(from, end); } void write(mtpBuffer &to) const { @@ -10672,7 +10672,7 @@ public: mtpTypeId type() const { return mtpc_auth_importAuthorization; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_auth_importAuthorization) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_auth_importAuthorization) { vid.read(from, end); vbytes.read(from, end); } @@ -10719,7 +10719,7 @@ public: mtpTypeId type() const { return mtpc_account_registerDevice; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_registerDevice) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_account_registerDevice) { vtoken_type.read(from, end); vtoken.read(from, end); vdevice_model.read(from, end); @@ -10771,7 +10771,7 @@ public: mtpTypeId type() const { return mtpc_account_unregisterDevice; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_unregisterDevice) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_account_unregisterDevice) { vtoken_type.read(from, end); vtoken.read(from, end); } @@ -10813,7 +10813,7 @@ public: mtpTypeId type() const { return mtpc_account_updateNotifySettings; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_updateNotifySettings) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_account_updateNotifySettings) { vpeer.read(from, end); vsettings.read(from, end); } @@ -10854,7 +10854,7 @@ public: mtpTypeId type() const { return mtpc_account_getNotifySettings; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_getNotifySettings) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_account_getNotifySettings) { vpeer.read(from, end); } void write(mtpBuffer &to) const { @@ -10889,9 +10889,9 @@ public: mtpTypeId type() const { return mtpc_account_resetNotifySettings; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_resetNotifySettings) { + void read(const mtpPrime *&/*from*/, const mtpPrime */*end*/, mtpTypeId /*cons*/ = mtpc_account_resetNotifySettings) { } - void write(mtpBuffer &to) const { + void write(mtpBuffer &/*to*/) const { } typedef MTPBool ResponseType; @@ -10925,7 +10925,7 @@ public: mtpTypeId type() const { return mtpc_account_updateProfile; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_updateProfile) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_account_updateProfile) { vfirst_name.read(from, end); vlast_name.read(from, end); } @@ -10966,7 +10966,7 @@ public: mtpTypeId type() const { return mtpc_account_updateStatus; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_updateStatus) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_account_updateStatus) { voffline.read(from, end); } void write(mtpBuffer &to) const { @@ -11001,9 +11001,9 @@ public: mtpTypeId type() const { return mtpc_account_getWallPapers; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_account_getWallPapers) { + void read(const mtpPrime *&/*from*/, const mtpPrime */*end*/, mtpTypeId /*cons*/ = mtpc_account_getWallPapers) { } - void write(mtpBuffer &to) const { + void write(mtpBuffer &/*to*/) const { } typedef MTPVector ResponseType; @@ -11036,7 +11036,7 @@ public: mtpTypeId type() const { return mtpc_users_getUsers; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_users_getUsers) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_users_getUsers) { vid.read(from, end); } void write(mtpBuffer &to) const { @@ -11075,7 +11075,7 @@ public: mtpTypeId type() const { return mtpc_users_getFullUser; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_users_getFullUser) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_users_getFullUser) { vid.read(from, end); } void write(mtpBuffer &to) const { @@ -11110,9 +11110,9 @@ public: mtpTypeId type() const { return mtpc_contacts_getStatuses; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contacts_getStatuses) { + void read(const mtpPrime *&/*from*/, const mtpPrime */*end*/, mtpTypeId /*cons*/ = mtpc_contacts_getStatuses) { } - void write(mtpBuffer &to) const { + void write(mtpBuffer &/*to*/) const { } typedef MTPVector ResponseType; @@ -11145,7 +11145,7 @@ public: mtpTypeId type() const { return mtpc_contacts_getContacts; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contacts_getContacts) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_contacts_getContacts) { vhash.read(from, end); } void write(mtpBuffer &to) const { @@ -11185,7 +11185,7 @@ public: mtpTypeId type() const { return mtpc_contacts_importContacts; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contacts_importContacts) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_contacts_importContacts) { vcontacts.read(from, end); vreplace.read(from, end); } @@ -11227,7 +11227,7 @@ public: mtpTypeId type() const { return mtpc_contacts_search; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contacts_search) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_contacts_search) { vq.read(from, end); vlimit.read(from, end); } @@ -11268,7 +11268,7 @@ public: mtpTypeId type() const { return mtpc_contacts_getSuggested; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contacts_getSuggested) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_contacts_getSuggested) { vlimit.read(from, end); } void write(mtpBuffer &to) const { @@ -11307,7 +11307,7 @@ public: mtpTypeId type() const { return mtpc_contacts_deleteContact; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contacts_deleteContact) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_contacts_deleteContact) { vid.read(from, end); } void write(mtpBuffer &to) const { @@ -11346,7 +11346,7 @@ public: mtpTypeId type() const { return mtpc_contacts_deleteContacts; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contacts_deleteContacts) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_contacts_deleteContacts) { vid.read(from, end); } void write(mtpBuffer &to) const { @@ -11385,7 +11385,7 @@ public: mtpTypeId type() const { return mtpc_contacts_block; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contacts_block) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_contacts_block) { vid.read(from, end); } void write(mtpBuffer &to) const { @@ -11424,7 +11424,7 @@ public: mtpTypeId type() const { return mtpc_contacts_unblock; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contacts_unblock) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_contacts_unblock) { vid.read(from, end); } void write(mtpBuffer &to) const { @@ -11464,7 +11464,7 @@ public: mtpTypeId type() const { return mtpc_contacts_getBlocked; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_contacts_getBlocked) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_contacts_getBlocked) { voffset.read(from, end); vlimit.read(from, end); } @@ -11505,7 +11505,7 @@ public: mtpTypeId type() const { return mtpc_messages_getMessages; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_getMessages) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_getMessages) { vid.read(from, end); } void write(mtpBuffer &to) const { @@ -11546,7 +11546,7 @@ public: mtpTypeId type() const { return mtpc_messages_getDialogs; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_getDialogs) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_getDialogs) { voffset.read(from, end); vmax_id.read(from, end); vlimit.read(from, end); @@ -11592,7 +11592,7 @@ public: mtpTypeId type() const { return mtpc_messages_getHistory; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_getHistory) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_getHistory) { vpeer.read(from, end); voffset.read(from, end); vmax_id.read(from, end); @@ -11644,7 +11644,7 @@ public: mtpTypeId type() const { return mtpc_messages_search; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_search) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_search) { vpeer.read(from, end); vq.read(from, end); vfilter.read(from, end); @@ -11699,7 +11699,7 @@ public: mtpTypeId type() const { return mtpc_messages_readHistory; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_readHistory) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_readHistory) { vpeer.read(from, end); vmax_id.read(from, end); voffset.read(from, end); @@ -11743,7 +11743,7 @@ public: mtpTypeId type() const { return mtpc_messages_deleteHistory; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_deleteHistory) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_deleteHistory) { vpeer.read(from, end); voffset.read(from, end); } @@ -11784,7 +11784,7 @@ public: mtpTypeId type() const { return mtpc_messages_deleteMessages; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_deleteMessages) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_deleteMessages) { vid.read(from, end); } void write(mtpBuffer &to) const { @@ -11823,7 +11823,7 @@ public: mtpTypeId type() const { return mtpc_messages_restoreMessages; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_restoreMessages) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_restoreMessages) { vid.read(from, end); } void write(mtpBuffer &to) const { @@ -11862,7 +11862,7 @@ public: mtpTypeId type() const { return mtpc_messages_receivedMessages; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_receivedMessages) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_receivedMessages) { vmax_id.read(from, end); } void write(mtpBuffer &to) const { @@ -11902,7 +11902,7 @@ public: mtpTypeId type() const { return mtpc_messages_setTyping; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_setTyping) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_setTyping) { vpeer.read(from, end); vtyping.read(from, end); } @@ -11945,7 +11945,7 @@ public: mtpTypeId type() const { return mtpc_messages_sendMessage; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_sendMessage) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_sendMessage) { vpeer.read(from, end); vmessage.read(from, end); vrandom_id.read(from, end); @@ -11990,7 +11990,7 @@ public: mtpTypeId type() const { return mtpc_messages_sendMedia; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_sendMedia) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_sendMedia) { vpeer.read(from, end); vmedia.read(from, end); vrandom_id.read(from, end); @@ -12034,7 +12034,7 @@ public: mtpTypeId type() const { return mtpc_messages_forwardMessages; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_forwardMessages) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_forwardMessages) { vpeer.read(from, end); vid.read(from, end); } @@ -12075,7 +12075,7 @@ public: mtpTypeId type() const { return mtpc_messages_getChats; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_getChats) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_getChats) { vid.read(from, end); } void write(mtpBuffer &to) const { @@ -12114,7 +12114,7 @@ public: mtpTypeId type() const { return mtpc_messages_getFullChat; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_getFullChat) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_getFullChat) { vchat_id.read(from, end); } void write(mtpBuffer &to) const { @@ -12154,7 +12154,7 @@ public: mtpTypeId type() const { return mtpc_messages_editChatTitle; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_editChatTitle) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_editChatTitle) { vchat_id.read(from, end); vtitle.read(from, end); } @@ -12196,7 +12196,7 @@ public: mtpTypeId type() const { return mtpc_messages_editChatPhoto; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_editChatPhoto) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_editChatPhoto) { vchat_id.read(from, end); vphoto.read(from, end); } @@ -12239,7 +12239,7 @@ public: mtpTypeId type() const { return mtpc_messages_addChatUser; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_addChatUser) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_addChatUser) { vchat_id.read(from, end); vuser_id.read(from, end); vfwd_limit.read(from, end); @@ -12283,7 +12283,7 @@ public: mtpTypeId type() const { return mtpc_messages_deleteChatUser; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_deleteChatUser) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_deleteChatUser) { vchat_id.read(from, end); vuser_id.read(from, end); } @@ -12325,7 +12325,7 @@ public: mtpTypeId type() const { return mtpc_messages_createChat; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_createChat) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_createChat) { vusers.read(from, end); vtitle.read(from, end); } @@ -12362,9 +12362,9 @@ public: mtpTypeId type() const { return mtpc_updates_getState; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_updates_getState) { + void read(const mtpPrime *&/*from*/, const mtpPrime */*end*/, mtpTypeId /*cons*/ = mtpc_updates_getState) { } - void write(mtpBuffer &to) const { + void write(mtpBuffer &/*to*/) const { } typedef MTPupdates_State ResponseType; @@ -12399,7 +12399,7 @@ public: mtpTypeId type() const { return mtpc_updates_getDifference; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_updates_getDifference) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_updates_getDifference) { vpts.read(from, end); vdate.read(from, end); vqts.read(from, end); @@ -12443,7 +12443,7 @@ public: mtpTypeId type() const { return mtpc_photos_updateProfilePhoto; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_photos_updateProfilePhoto) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_photos_updateProfilePhoto) { vid.read(from, end); vcrop.read(from, end); } @@ -12487,7 +12487,7 @@ public: mtpTypeId type() const { return mtpc_photos_uploadProfilePhoto; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_photos_uploadProfilePhoto) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_photos_uploadProfilePhoto) { vfile.read(from, end); vcaption.read(from, end); vgeo_point.read(from, end); @@ -12534,7 +12534,7 @@ public: mtpTypeId type() const { return mtpc_upload_saveFilePart; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_upload_saveFilePart) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_upload_saveFilePart) { vfile_id.read(from, end); vfile_part.read(from, end); vbytes.read(from, end); @@ -12579,7 +12579,7 @@ public: mtpTypeId type() const { return mtpc_upload_getFile; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_upload_getFile) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_upload_getFile) { vlocation.read(from, end); voffset.read(from, end); vlimit.read(from, end); @@ -12618,9 +12618,9 @@ public: mtpTypeId type() const { return mtpc_help_getConfig; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_help_getConfig) { + void read(const mtpPrime *&/*from*/, const mtpPrime */*end*/, mtpTypeId /*cons*/ = mtpc_help_getConfig) { } - void write(mtpBuffer &to) const { + void write(mtpBuffer &/*to*/) const { } typedef MTPConfig ResponseType; @@ -12649,9 +12649,9 @@ public: mtpTypeId type() const { return mtpc_help_getNearestDc; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_help_getNearestDc) { + void read(const mtpPrime *&/*from*/, const mtpPrime */*end*/, mtpTypeId /*cons*/ = mtpc_help_getNearestDc) { } - void write(mtpBuffer &to) const { + void write(mtpBuffer &/*to*/) const { } typedef MTPNearestDc ResponseType; @@ -12687,7 +12687,7 @@ public: mtpTypeId type() const { return mtpc_help_getAppUpdate; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_help_getAppUpdate) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_help_getAppUpdate) { vdevice_model.read(from, end); vsystem_version.read(from, end); vapp_version.read(from, end); @@ -12732,7 +12732,7 @@ public: mtpTypeId type() const { return mtpc_help_saveAppLog; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_help_saveAppLog) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_help_saveAppLog) { vevents.read(from, end); } void write(mtpBuffer &to) const { @@ -12771,7 +12771,7 @@ public: mtpTypeId type() const { return mtpc_help_getInviteText; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_help_getInviteText) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_help_getInviteText) { vlang_code.read(from, end); } void write(mtpBuffer &to) const { @@ -12813,7 +12813,7 @@ public: mtpTypeId type() const { return mtpc_photos_getUserPhotos; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_photos_getUserPhotos) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_photos_getUserPhotos) { vuser_id.read(from, end); voffset.read(from, end); vmax_id.read(from, end); @@ -12860,7 +12860,7 @@ public: mtpTypeId type() const { return mtpc_messages_forwardMessage; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_forwardMessage) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_forwardMessage) { vpeer.read(from, end); vid.read(from, end); vrandom_id.read(from, end); @@ -12905,7 +12905,7 @@ public: mtpTypeId type() const { return mtpc_messages_sendBroadcast; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_sendBroadcast) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_sendBroadcast) { vcontacts.read(from, end); vmessage.read(from, end); vmedia.read(from, end); @@ -12950,7 +12950,7 @@ public: mtpTypeId type() const { return mtpc_geochats_getLocated; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_geochats_getLocated) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_geochats_getLocated) { vgeo_point.read(from, end); vradius.read(from, end); vlimit.read(from, end); @@ -12994,7 +12994,7 @@ public: mtpTypeId type() const { return mtpc_geochats_getRecents; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_geochats_getRecents) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_geochats_getRecents) { voffset.read(from, end); vlimit.read(from, end); } @@ -13035,7 +13035,7 @@ public: mtpTypeId type() const { return mtpc_geochats_checkin; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_geochats_checkin) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_geochats_checkin) { vpeer.read(from, end); } void write(mtpBuffer &to) const { @@ -13074,7 +13074,7 @@ public: mtpTypeId type() const { return mtpc_geochats_getFullChat; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_geochats_getFullChat) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_geochats_getFullChat) { vpeer.read(from, end); } void write(mtpBuffer &to) const { @@ -13115,7 +13115,7 @@ public: mtpTypeId type() const { return mtpc_geochats_editChatTitle; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_geochats_editChatTitle) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_geochats_editChatTitle) { vpeer.read(from, end); vtitle.read(from, end); vaddress.read(from, end); @@ -13159,7 +13159,7 @@ public: mtpTypeId type() const { return mtpc_geochats_editChatPhoto; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_geochats_editChatPhoto) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_geochats_editChatPhoto) { vpeer.read(from, end); vphoto.read(from, end); } @@ -13207,7 +13207,7 @@ public: mtpTypeId type() const { return mtpc_geochats_search; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_geochats_search) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_geochats_search) { vpeer.read(from, end); vq.read(from, end); vfilter.read(from, end); @@ -13263,7 +13263,7 @@ public: mtpTypeId type() const { return mtpc_geochats_getHistory; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_geochats_getHistory) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_geochats_getHistory) { vpeer.read(from, end); voffset.read(from, end); vmax_id.read(from, end); @@ -13309,7 +13309,7 @@ public: mtpTypeId type() const { return mtpc_geochats_setTyping; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_geochats_setTyping) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_geochats_setTyping) { vpeer.read(from, end); vtyping.read(from, end); } @@ -13352,7 +13352,7 @@ public: mtpTypeId type() const { return mtpc_geochats_sendMessage; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_geochats_sendMessage) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_geochats_sendMessage) { vpeer.read(from, end); vmessage.read(from, end); vrandom_id.read(from, end); @@ -13397,7 +13397,7 @@ public: mtpTypeId type() const { return mtpc_geochats_sendMedia; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_geochats_sendMedia) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_geochats_sendMedia) { vpeer.read(from, end); vmedia.read(from, end); vrandom_id.read(from, end); @@ -13443,7 +13443,7 @@ public: mtpTypeId type() const { return mtpc_geochats_createGeoChat; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_geochats_createGeoChat) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_geochats_createGeoChat) { vtitle.read(from, end); vgeo_point.read(from, end); vaddress.read(from, end); @@ -13489,7 +13489,7 @@ public: mtpTypeId type() const { return mtpc_messages_getDhConfig; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_getDhConfig) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_getDhConfig) { vversion.read(from, end); vrandom_length.read(from, end); } @@ -13532,7 +13532,7 @@ public: mtpTypeId type() const { return mtpc_messages_requestEncryption; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_requestEncryption) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_requestEncryption) { vuser_id.read(from, end); vrandom_id.read(from, end); vg_a.read(from, end); @@ -13577,7 +13577,7 @@ public: mtpTypeId type() const { return mtpc_messages_acceptEncryption; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_acceptEncryption) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_acceptEncryption) { vpeer.read(from, end); vg_b.read(from, end); vkey_fingerprint.read(from, end); @@ -13620,7 +13620,7 @@ public: mtpTypeId type() const { return mtpc_messages_discardEncryption; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_discardEncryption) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_discardEncryption) { vchat_id.read(from, end); } void write(mtpBuffer &to) const { @@ -13660,7 +13660,7 @@ public: mtpTypeId type() const { return mtpc_messages_setEncryptedTyping; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_setEncryptedTyping) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_setEncryptedTyping) { vpeer.read(from, end); vtyping.read(from, end); } @@ -13702,7 +13702,7 @@ public: mtpTypeId type() const { return mtpc_messages_readEncryptedHistory; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_readEncryptedHistory) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_readEncryptedHistory) { vpeer.read(from, end); vmax_date.read(from, end); } @@ -13745,7 +13745,7 @@ public: mtpTypeId type() const { return mtpc_messages_sendEncrypted; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_sendEncrypted) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_sendEncrypted) { vpeer.read(from, end); vrandom_id.read(from, end); vdata.read(from, end); @@ -13791,7 +13791,7 @@ public: mtpTypeId type() const { return mtpc_messages_sendEncryptedFile; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_sendEncryptedFile) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_sendEncryptedFile) { vpeer.read(from, end); vrandom_id.read(from, end); vdata.read(from, end); @@ -13838,7 +13838,7 @@ public: mtpTypeId type() const { return mtpc_messages_sendEncryptedService; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_sendEncryptedService) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_sendEncryptedService) { vpeer.read(from, end); vrandom_id.read(from, end); vdata.read(from, end); @@ -13881,7 +13881,7 @@ public: mtpTypeId type() const { return mtpc_messages_receivedQueue; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_receivedQueue) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_messages_receivedQueue) { vmax_qts.read(from, end); } void write(mtpBuffer &to) const { @@ -13923,7 +13923,7 @@ public: mtpTypeId type() const { return mtpc_upload_saveBigFilePart; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_upload_saveBigFilePart) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_upload_saveBigFilePart) { vfile_id.read(from, end); vfile_part.read(from, end); vfile_total_parts.read(from, end); @@ -13974,7 +13974,7 @@ public: mtpTypeId type() const { return mtpc_initConnection; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_initConnection) { + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId /*cons*/ = mtpc_initConnection) { vapi_id.read(from, end); vdevice_model.read(from, end); vsystem_version.read(from, end); @@ -14018,9 +14018,9 @@ public: mtpTypeId type() const { return mtpc_help_getSupport; } - void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_help_getSupport) { + void read(const mtpPrime *&/*from*/, const mtpPrime */*end*/, mtpTypeId /*cons*/ = mtpc_help_getSupport) { } - void write(mtpBuffer &to) const { + void write(mtpBuffer &/*to*/) const { } typedef MTPhelp_Support ResponseType; @@ -14160,16 +14160,16 @@ inline void MTPserver_DH_Params::write(mtpBuffer &to) const { } break; } } -inline MTPserver_DH_Params::MTPserver_DH_Params(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPserver_DH_Params::MTPserver_DH_Params(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_server_DH_params_fail: setData(new MTPDserver_DH_params_fail()); break; case mtpc_server_DH_params_ok: setData(new MTPDserver_DH_params_ok()); break; default: throw mtpErrorBadTypeId(type, "MTPserver_DH_Params"); } } -inline MTPserver_DH_Params::MTPserver_DH_Params(MTPDserver_DH_params_fail *_data) : _type(mtpc_server_DH_params_fail), mtpDataOwner(_data) { +inline MTPserver_DH_Params::MTPserver_DH_Params(MTPDserver_DH_params_fail *_data) : mtpDataOwner(_data), _type(mtpc_server_DH_params_fail) { } -inline MTPserver_DH_Params::MTPserver_DH_Params(MTPDserver_DH_params_ok *_data) : _type(mtpc_server_DH_params_ok), mtpDataOwner(_data) { +inline MTPserver_DH_Params::MTPserver_DH_Params(MTPDserver_DH_params_ok *_data) : mtpDataOwner(_data), _type(mtpc_server_DH_params_ok) { } inline MTPserver_DH_Params MTP_server_DH_params_fail(const MTPint128 &_nonce, const MTPint128 &_server_nonce, const MTPint128 &_new_nonce_hash) { return MTPserver_DH_Params(new MTPDserver_DH_params_fail(_nonce, _server_nonce, _new_nonce_hash)); @@ -14318,7 +14318,7 @@ inline void MTPset_client_DH_params_answer::write(mtpBuffer &to) const { } break; } } -inline MTPset_client_DH_params_answer::MTPset_client_DH_params_answer(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPset_client_DH_params_answer::MTPset_client_DH_params_answer(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_dh_gen_ok: setData(new MTPDdh_gen_ok()); break; case mtpc_dh_gen_retry: setData(new MTPDdh_gen_retry()); break; @@ -14326,11 +14326,11 @@ inline MTPset_client_DH_params_answer::MTPset_client_DH_params_answer(mtpTypeId default: throw mtpErrorBadTypeId(type, "MTPset_client_DH_params_answer"); } } -inline MTPset_client_DH_params_answer::MTPset_client_DH_params_answer(MTPDdh_gen_ok *_data) : _type(mtpc_dh_gen_ok), mtpDataOwner(_data) { +inline MTPset_client_DH_params_answer::MTPset_client_DH_params_answer(MTPDdh_gen_ok *_data) : mtpDataOwner(_data), _type(mtpc_dh_gen_ok) { } -inline MTPset_client_DH_params_answer::MTPset_client_DH_params_answer(MTPDdh_gen_retry *_data) : _type(mtpc_dh_gen_retry), mtpDataOwner(_data) { +inline MTPset_client_DH_params_answer::MTPset_client_DH_params_answer(MTPDdh_gen_retry *_data) : mtpDataOwner(_data), _type(mtpc_dh_gen_retry) { } -inline MTPset_client_DH_params_answer::MTPset_client_DH_params_answer(MTPDdh_gen_fail *_data) : _type(mtpc_dh_gen_fail), mtpDataOwner(_data) { +inline MTPset_client_DH_params_answer::MTPset_client_DH_params_answer(MTPDdh_gen_fail *_data) : mtpDataOwner(_data), _type(mtpc_dh_gen_fail) { } inline MTPset_client_DH_params_answer MTP_dh_gen_ok(const MTPint128 &_nonce, const MTPint128 &_server_nonce, const MTPint128 &_new_nonce_hash1) { return MTPset_client_DH_params_answer(new MTPDdh_gen_ok(_nonce, _server_nonce, _new_nonce_hash1)); @@ -14424,16 +14424,16 @@ inline void MTPbadMsgNotification::write(mtpBuffer &to) const { } break; } } -inline MTPbadMsgNotification::MTPbadMsgNotification(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPbadMsgNotification::MTPbadMsgNotification(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_bad_msg_notification: setData(new MTPDbad_msg_notification()); break; case mtpc_bad_server_salt: setData(new MTPDbad_server_salt()); break; default: throw mtpErrorBadTypeId(type, "MTPbadMsgNotification"); } } -inline MTPbadMsgNotification::MTPbadMsgNotification(MTPDbad_msg_notification *_data) : _type(mtpc_bad_msg_notification), mtpDataOwner(_data) { +inline MTPbadMsgNotification::MTPbadMsgNotification(MTPDbad_msg_notification *_data) : mtpDataOwner(_data), _type(mtpc_bad_msg_notification) { } -inline MTPbadMsgNotification::MTPbadMsgNotification(MTPDbad_server_salt *_data) : _type(mtpc_bad_server_salt), mtpDataOwner(_data) { +inline MTPbadMsgNotification::MTPbadMsgNotification(MTPDbad_server_salt *_data) : mtpDataOwner(_data), _type(mtpc_bad_server_salt) { } inline MTPbadMsgNotification MTP_bad_msg_notification(const MTPlong &_bad_msg_id, MTPint _bad_msg_seqno, MTPint _error_code) { return MTPbadMsgNotification(new MTPDbad_msg_notification(_bad_msg_id, _bad_msg_seqno, _error_code)); @@ -14582,16 +14582,16 @@ inline void MTPmsgDetailedInfo::write(mtpBuffer &to) const { } break; } } -inline MTPmsgDetailedInfo::MTPmsgDetailedInfo(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPmsgDetailedInfo::MTPmsgDetailedInfo(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_msg_detailed_info: setData(new MTPDmsg_detailed_info()); break; case mtpc_msg_new_detailed_info: setData(new MTPDmsg_new_detailed_info()); break; default: throw mtpErrorBadTypeId(type, "MTPmsgDetailedInfo"); } } -inline MTPmsgDetailedInfo::MTPmsgDetailedInfo(MTPDmsg_detailed_info *_data) : _type(mtpc_msg_detailed_info), mtpDataOwner(_data) { +inline MTPmsgDetailedInfo::MTPmsgDetailedInfo(MTPDmsg_detailed_info *_data) : mtpDataOwner(_data), _type(mtpc_msg_detailed_info) { } -inline MTPmsgDetailedInfo::MTPmsgDetailedInfo(MTPDmsg_new_detailed_info *_data) : _type(mtpc_msg_new_detailed_info), mtpDataOwner(_data) { +inline MTPmsgDetailedInfo::MTPmsgDetailedInfo(MTPDmsg_new_detailed_info *_data) : mtpDataOwner(_data), _type(mtpc_msg_new_detailed_info) { } inline MTPmsgDetailedInfo MTP_msg_detailed_info(const MTPlong &_msg_id, const MTPlong &_answer_msg_id, MTPint _bytes, MTPint _status) { return MTPmsgDetailedInfo(new MTPDmsg_detailed_info(_msg_id, _answer_msg_id, _bytes, _status)); @@ -14694,7 +14694,7 @@ inline void MTPrpcDropAnswer::write(mtpBuffer &to) const { } break; } } -inline MTPrpcDropAnswer::MTPrpcDropAnswer(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPrpcDropAnswer::MTPrpcDropAnswer(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_rpc_answer_unknown: break; case mtpc_rpc_answer_dropped_running: break; @@ -14702,7 +14702,7 @@ inline MTPrpcDropAnswer::MTPrpcDropAnswer(mtpTypeId type) : _type(type), mtpData default: throw mtpErrorBadTypeId(type, "MTPrpcDropAnswer"); } } -inline MTPrpcDropAnswer::MTPrpcDropAnswer(MTPDrpc_answer_dropped *_data) : _type(mtpc_rpc_answer_dropped), mtpDataOwner(_data) { +inline MTPrpcDropAnswer::MTPrpcDropAnswer(MTPDrpc_answer_dropped *_data) : mtpDataOwner(_data), _type(mtpc_rpc_answer_dropped) { } inline MTPrpcDropAnswer MTP_rpc_answer_unknown() { return MTPrpcDropAnswer(mtpc_rpc_answer_unknown); @@ -14850,16 +14850,16 @@ inline void MTPdestroySessionRes::write(mtpBuffer &to) const { } break; } } -inline MTPdestroySessionRes::MTPdestroySessionRes(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPdestroySessionRes::MTPdestroySessionRes(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_destroy_session_ok: setData(new MTPDdestroy_session_ok()); break; case mtpc_destroy_session_none: setData(new MTPDdestroy_session_none()); break; default: throw mtpErrorBadTypeId(type, "MTPdestroySessionRes"); } } -inline MTPdestroySessionRes::MTPdestroySessionRes(MTPDdestroy_session_ok *_data) : _type(mtpc_destroy_session_ok), mtpDataOwner(_data) { +inline MTPdestroySessionRes::MTPdestroySessionRes(MTPDdestroy_session_ok *_data) : mtpDataOwner(_data), _type(mtpc_destroy_session_ok) { } -inline MTPdestroySessionRes::MTPdestroySessionRes(MTPDdestroy_session_none *_data) : _type(mtpc_destroy_session_none), mtpDataOwner(_data) { +inline MTPdestroySessionRes::MTPdestroySessionRes(MTPDdestroy_session_none *_data) : mtpDataOwner(_data), _type(mtpc_destroy_session_none) { } inline MTPdestroySessionRes MTP_destroy_session_ok(const MTPlong &_session_id) { return MTPdestroySessionRes(new MTPDdestroy_session_ok(_session_id)); @@ -14992,7 +14992,7 @@ inline void MTPinputPeer::write(mtpBuffer &to) const { } break; } } -inline MTPinputPeer::MTPinputPeer(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPinputPeer::MTPinputPeer(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_inputPeerEmpty: break; case mtpc_inputPeerSelf: break; @@ -15002,11 +15002,11 @@ inline MTPinputPeer::MTPinputPeer(mtpTypeId type) : _type(type), mtpDataOwner(0) default: throw mtpErrorBadTypeId(type, "MTPinputPeer"); } } -inline MTPinputPeer::MTPinputPeer(MTPDinputPeerContact *_data) : _type(mtpc_inputPeerContact), mtpDataOwner(_data) { +inline MTPinputPeer::MTPinputPeer(MTPDinputPeerContact *_data) : mtpDataOwner(_data), _type(mtpc_inputPeerContact) { } -inline MTPinputPeer::MTPinputPeer(MTPDinputPeerForeign *_data) : _type(mtpc_inputPeerForeign), mtpDataOwner(_data) { +inline MTPinputPeer::MTPinputPeer(MTPDinputPeerForeign *_data) : mtpDataOwner(_data), _type(mtpc_inputPeerForeign) { } -inline MTPinputPeer::MTPinputPeer(MTPDinputPeerChat *_data) : _type(mtpc_inputPeerChat), mtpDataOwner(_data) { +inline MTPinputPeer::MTPinputPeer(MTPDinputPeerChat *_data) : mtpDataOwner(_data), _type(mtpc_inputPeerChat) { } inline MTPinputPeer MTP_inputPeerEmpty() { return MTPinputPeer(mtpc_inputPeerEmpty); @@ -15073,7 +15073,7 @@ inline void MTPinputUser::write(mtpBuffer &to) const { } break; } } -inline MTPinputUser::MTPinputUser(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPinputUser::MTPinputUser(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_inputUserEmpty: break; case mtpc_inputUserSelf: break; @@ -15082,9 +15082,9 @@ inline MTPinputUser::MTPinputUser(mtpTypeId type) : _type(type), mtpDataOwner(0) default: throw mtpErrorBadTypeId(type, "MTPinputUser"); } } -inline MTPinputUser::MTPinputUser(MTPDinputUserContact *_data) : _type(mtpc_inputUserContact), mtpDataOwner(_data) { +inline MTPinputUser::MTPinputUser(MTPDinputUserContact *_data) : mtpDataOwner(_data), _type(mtpc_inputUserContact) { } -inline MTPinputUser::MTPinputUser(MTPDinputUserForeign *_data) : _type(mtpc_inputUserForeign), mtpDataOwner(_data) { +inline MTPinputUser::MTPinputUser(MTPDinputUserForeign *_data) : mtpDataOwner(_data), _type(mtpc_inputUserForeign) { } inline MTPinputUser MTP_inputUserEmpty() { return MTPinputUser(mtpc_inputUserEmpty); @@ -15187,16 +15187,16 @@ inline void MTPinputFile::write(mtpBuffer &to) const { } break; } } -inline MTPinputFile::MTPinputFile(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPinputFile::MTPinputFile(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_inputFile: setData(new MTPDinputFile()); break; case mtpc_inputFileBig: setData(new MTPDinputFileBig()); break; default: throw mtpErrorBadTypeId(type, "MTPinputFile"); } } -inline MTPinputFile::MTPinputFile(MTPDinputFile *_data) : _type(mtpc_inputFile), mtpDataOwner(_data) { +inline MTPinputFile::MTPinputFile(MTPDinputFile *_data) : mtpDataOwner(_data), _type(mtpc_inputFile) { } -inline MTPinputFile::MTPinputFile(MTPDinputFileBig *_data) : _type(mtpc_inputFileBig), mtpDataOwner(_data) { +inline MTPinputFile::MTPinputFile(MTPDinputFileBig *_data) : mtpDataOwner(_data), _type(mtpc_inputFileBig) { } inline MTPinputFile MTP_inputFile(const MTPlong &_id, MTPint _parts, const MTPstring &_name, const MTPstring &_md5_checksum) { return MTPinputFile(new MTPDinputFile(_id, _parts, _name, _md5_checksum)); @@ -15417,7 +15417,7 @@ inline void MTPinputMedia::write(mtpBuffer &to) const { } break; } } -inline MTPinputMedia::MTPinputMedia(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPinputMedia::MTPinputMedia(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_inputMediaEmpty: break; case mtpc_inputMediaUploadedPhoto: setData(new MTPDinputMediaUploadedPhoto()); break; @@ -15435,29 +15435,29 @@ inline MTPinputMedia::MTPinputMedia(mtpTypeId type) : _type(type), mtpDataOwner( default: throw mtpErrorBadTypeId(type, "MTPinputMedia"); } } -inline MTPinputMedia::MTPinputMedia(MTPDinputMediaUploadedPhoto *_data) : _type(mtpc_inputMediaUploadedPhoto), mtpDataOwner(_data) { +inline MTPinputMedia::MTPinputMedia(MTPDinputMediaUploadedPhoto *_data) : mtpDataOwner(_data), _type(mtpc_inputMediaUploadedPhoto) { } -inline MTPinputMedia::MTPinputMedia(MTPDinputMediaPhoto *_data) : _type(mtpc_inputMediaPhoto), mtpDataOwner(_data) { +inline MTPinputMedia::MTPinputMedia(MTPDinputMediaPhoto *_data) : mtpDataOwner(_data), _type(mtpc_inputMediaPhoto) { } -inline MTPinputMedia::MTPinputMedia(MTPDinputMediaGeoPoint *_data) : _type(mtpc_inputMediaGeoPoint), mtpDataOwner(_data) { +inline MTPinputMedia::MTPinputMedia(MTPDinputMediaGeoPoint *_data) : mtpDataOwner(_data), _type(mtpc_inputMediaGeoPoint) { } -inline MTPinputMedia::MTPinputMedia(MTPDinputMediaContact *_data) : _type(mtpc_inputMediaContact), mtpDataOwner(_data) { +inline MTPinputMedia::MTPinputMedia(MTPDinputMediaContact *_data) : mtpDataOwner(_data), _type(mtpc_inputMediaContact) { } -inline MTPinputMedia::MTPinputMedia(MTPDinputMediaUploadedVideo *_data) : _type(mtpc_inputMediaUploadedVideo), mtpDataOwner(_data) { +inline MTPinputMedia::MTPinputMedia(MTPDinputMediaUploadedVideo *_data) : mtpDataOwner(_data), _type(mtpc_inputMediaUploadedVideo) { } -inline MTPinputMedia::MTPinputMedia(MTPDinputMediaUploadedThumbVideo *_data) : _type(mtpc_inputMediaUploadedThumbVideo), mtpDataOwner(_data) { +inline MTPinputMedia::MTPinputMedia(MTPDinputMediaUploadedThumbVideo *_data) : mtpDataOwner(_data), _type(mtpc_inputMediaUploadedThumbVideo) { } -inline MTPinputMedia::MTPinputMedia(MTPDinputMediaVideo *_data) : _type(mtpc_inputMediaVideo), mtpDataOwner(_data) { +inline MTPinputMedia::MTPinputMedia(MTPDinputMediaVideo *_data) : mtpDataOwner(_data), _type(mtpc_inputMediaVideo) { } -inline MTPinputMedia::MTPinputMedia(MTPDinputMediaUploadedAudio *_data) : _type(mtpc_inputMediaUploadedAudio), mtpDataOwner(_data) { +inline MTPinputMedia::MTPinputMedia(MTPDinputMediaUploadedAudio *_data) : mtpDataOwner(_data), _type(mtpc_inputMediaUploadedAudio) { } -inline MTPinputMedia::MTPinputMedia(MTPDinputMediaAudio *_data) : _type(mtpc_inputMediaAudio), mtpDataOwner(_data) { +inline MTPinputMedia::MTPinputMedia(MTPDinputMediaAudio *_data) : mtpDataOwner(_data), _type(mtpc_inputMediaAudio) { } -inline MTPinputMedia::MTPinputMedia(MTPDinputMediaUploadedDocument *_data) : _type(mtpc_inputMediaUploadedDocument), mtpDataOwner(_data) { +inline MTPinputMedia::MTPinputMedia(MTPDinputMediaUploadedDocument *_data) : mtpDataOwner(_data), _type(mtpc_inputMediaUploadedDocument) { } -inline MTPinputMedia::MTPinputMedia(MTPDinputMediaUploadedThumbDocument *_data) : _type(mtpc_inputMediaUploadedThumbDocument), mtpDataOwner(_data) { +inline MTPinputMedia::MTPinputMedia(MTPDinputMediaUploadedThumbDocument *_data) : mtpDataOwner(_data), _type(mtpc_inputMediaUploadedThumbDocument) { } -inline MTPinputMedia::MTPinputMedia(MTPDinputMediaDocument *_data) : _type(mtpc_inputMediaDocument), mtpDataOwner(_data) { +inline MTPinputMedia::MTPinputMedia(MTPDinputMediaDocument *_data) : mtpDataOwner(_data), _type(mtpc_inputMediaDocument) { } inline MTPinputMedia MTP_inputMediaEmpty() { return MTPinputMedia(mtpc_inputMediaEmpty); @@ -15549,7 +15549,7 @@ inline void MTPinputChatPhoto::write(mtpBuffer &to) const { } break; } } -inline MTPinputChatPhoto::MTPinputChatPhoto(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPinputChatPhoto::MTPinputChatPhoto(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_inputChatPhotoEmpty: break; case mtpc_inputChatUploadedPhoto: setData(new MTPDinputChatUploadedPhoto()); break; @@ -15557,9 +15557,9 @@ inline MTPinputChatPhoto::MTPinputChatPhoto(mtpTypeId type) : _type(type), mtpDa default: throw mtpErrorBadTypeId(type, "MTPinputChatPhoto"); } } -inline MTPinputChatPhoto::MTPinputChatPhoto(MTPDinputChatUploadedPhoto *_data) : _type(mtpc_inputChatUploadedPhoto), mtpDataOwner(_data) { +inline MTPinputChatPhoto::MTPinputChatPhoto(MTPDinputChatUploadedPhoto *_data) : mtpDataOwner(_data), _type(mtpc_inputChatUploadedPhoto) { } -inline MTPinputChatPhoto::MTPinputChatPhoto(MTPDinputChatPhoto *_data) : _type(mtpc_inputChatPhoto), mtpDataOwner(_data) { +inline MTPinputChatPhoto::MTPinputChatPhoto(MTPDinputChatPhoto *_data) : mtpDataOwner(_data), _type(mtpc_inputChatPhoto) { } inline MTPinputChatPhoto MTP_inputChatPhotoEmpty() { return MTPinputChatPhoto(mtpc_inputChatPhotoEmpty); @@ -15606,14 +15606,14 @@ inline void MTPinputGeoPoint::write(mtpBuffer &to) const { } break; } } -inline MTPinputGeoPoint::MTPinputGeoPoint(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPinputGeoPoint::MTPinputGeoPoint(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_inputGeoPointEmpty: break; case mtpc_inputGeoPoint: setData(new MTPDinputGeoPoint()); break; default: throw mtpErrorBadTypeId(type, "MTPinputGeoPoint"); } } -inline MTPinputGeoPoint::MTPinputGeoPoint(MTPDinputGeoPoint *_data) : _type(mtpc_inputGeoPoint), mtpDataOwner(_data) { +inline MTPinputGeoPoint::MTPinputGeoPoint(MTPDinputGeoPoint *_data) : mtpDataOwner(_data), _type(mtpc_inputGeoPoint) { } inline MTPinputGeoPoint MTP_inputGeoPointEmpty() { return MTPinputGeoPoint(mtpc_inputGeoPointEmpty); @@ -15657,14 +15657,14 @@ inline void MTPinputPhoto::write(mtpBuffer &to) const { } break; } } -inline MTPinputPhoto::MTPinputPhoto(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPinputPhoto::MTPinputPhoto(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_inputPhotoEmpty: break; case mtpc_inputPhoto: setData(new MTPDinputPhoto()); break; default: throw mtpErrorBadTypeId(type, "MTPinputPhoto"); } } -inline MTPinputPhoto::MTPinputPhoto(MTPDinputPhoto *_data) : _type(mtpc_inputPhoto), mtpDataOwner(_data) { +inline MTPinputPhoto::MTPinputPhoto(MTPDinputPhoto *_data) : mtpDataOwner(_data), _type(mtpc_inputPhoto) { } inline MTPinputPhoto MTP_inputPhotoEmpty() { return MTPinputPhoto(mtpc_inputPhotoEmpty); @@ -15708,14 +15708,14 @@ inline void MTPinputVideo::write(mtpBuffer &to) const { } break; } } -inline MTPinputVideo::MTPinputVideo(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPinputVideo::MTPinputVideo(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_inputVideoEmpty: break; case mtpc_inputVideo: setData(new MTPDinputVideo()); break; default: throw mtpErrorBadTypeId(type, "MTPinputVideo"); } } -inline MTPinputVideo::MTPinputVideo(MTPDinputVideo *_data) : _type(mtpc_inputVideo), mtpDataOwner(_data) { +inline MTPinputVideo::MTPinputVideo(MTPDinputVideo *_data) : mtpDataOwner(_data), _type(mtpc_inputVideo) { } inline MTPinputVideo MTP_inputVideoEmpty() { return MTPinputVideo(mtpc_inputVideoEmpty); @@ -15820,7 +15820,7 @@ inline void MTPinputFileLocation::write(mtpBuffer &to) const { } break; } } -inline MTPinputFileLocation::MTPinputFileLocation(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPinputFileLocation::MTPinputFileLocation(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_inputFileLocation: setData(new MTPDinputFileLocation()); break; case mtpc_inputVideoFileLocation: setData(new MTPDinputVideoFileLocation()); break; @@ -15830,15 +15830,15 @@ inline MTPinputFileLocation::MTPinputFileLocation(mtpTypeId type) : _type(type), default: throw mtpErrorBadTypeId(type, "MTPinputFileLocation"); } } -inline MTPinputFileLocation::MTPinputFileLocation(MTPDinputFileLocation *_data) : _type(mtpc_inputFileLocation), mtpDataOwner(_data) { +inline MTPinputFileLocation::MTPinputFileLocation(MTPDinputFileLocation *_data) : mtpDataOwner(_data), _type(mtpc_inputFileLocation) { } -inline MTPinputFileLocation::MTPinputFileLocation(MTPDinputVideoFileLocation *_data) : _type(mtpc_inputVideoFileLocation), mtpDataOwner(_data) { +inline MTPinputFileLocation::MTPinputFileLocation(MTPDinputVideoFileLocation *_data) : mtpDataOwner(_data), _type(mtpc_inputVideoFileLocation) { } -inline MTPinputFileLocation::MTPinputFileLocation(MTPDinputEncryptedFileLocation *_data) : _type(mtpc_inputEncryptedFileLocation), mtpDataOwner(_data) { +inline MTPinputFileLocation::MTPinputFileLocation(MTPDinputEncryptedFileLocation *_data) : mtpDataOwner(_data), _type(mtpc_inputEncryptedFileLocation) { } -inline MTPinputFileLocation::MTPinputFileLocation(MTPDinputAudioFileLocation *_data) : _type(mtpc_inputAudioFileLocation), mtpDataOwner(_data) { +inline MTPinputFileLocation::MTPinputFileLocation(MTPDinputAudioFileLocation *_data) : mtpDataOwner(_data), _type(mtpc_inputAudioFileLocation) { } -inline MTPinputFileLocation::MTPinputFileLocation(MTPDinputDocumentFileLocation *_data) : _type(mtpc_inputDocumentFileLocation), mtpDataOwner(_data) { +inline MTPinputFileLocation::MTPinputFileLocation(MTPDinputDocumentFileLocation *_data) : mtpDataOwner(_data), _type(mtpc_inputDocumentFileLocation) { } inline MTPinputFileLocation MTP_inputFileLocation(const MTPlong &_volume_id, MTPint _local_id, const MTPlong &_secret) { return MTPinputFileLocation(new MTPDinputFileLocation(_volume_id, _local_id, _secret)); @@ -15893,14 +15893,14 @@ inline void MTPinputPhotoCrop::write(mtpBuffer &to) const { } break; } } -inline MTPinputPhotoCrop::MTPinputPhotoCrop(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPinputPhotoCrop::MTPinputPhotoCrop(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_inputPhotoCropAuto: break; case mtpc_inputPhotoCrop: setData(new MTPDinputPhotoCrop()); break; default: throw mtpErrorBadTypeId(type, "MTPinputPhotoCrop"); } } -inline MTPinputPhotoCrop::MTPinputPhotoCrop(MTPDinputPhotoCrop *_data) : _type(mtpc_inputPhotoCrop), mtpDataOwner(_data) { +inline MTPinputPhotoCrop::MTPinputPhotoCrop(MTPDinputPhotoCrop *_data) : mtpDataOwner(_data), _type(mtpc_inputPhotoCrop) { } inline MTPinputPhotoCrop MTP_inputPhotoCropAuto() { return MTPinputPhotoCrop(mtpc_inputPhotoCropAuto); @@ -15987,16 +15987,16 @@ inline void MTPpeer::write(mtpBuffer &to) const { } break; } } -inline MTPpeer::MTPpeer(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPpeer::MTPpeer(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_peerUser: setData(new MTPDpeerUser()); break; case mtpc_peerChat: setData(new MTPDpeerChat()); break; default: throw mtpErrorBadTypeId(type, "MTPpeer"); } } -inline MTPpeer::MTPpeer(MTPDpeerUser *_data) : _type(mtpc_peerUser), mtpDataOwner(_data) { +inline MTPpeer::MTPpeer(MTPDpeerUser *_data) : mtpDataOwner(_data), _type(mtpc_peerUser) { } -inline MTPpeer::MTPpeer(MTPDpeerChat *_data) : _type(mtpc_peerChat), mtpDataOwner(_data) { +inline MTPpeer::MTPpeer(MTPDpeerChat *_data) : mtpDataOwner(_data), _type(mtpc_peerChat) { } inline MTPpeer MTP_peerUser(MTPint _user_id) { return MTPpeer(new MTPDpeerUser(_user_id)); @@ -16027,7 +16027,7 @@ inline void MTPstorage_fileType::read(const mtpPrime *&from, const mtpPrime *end default: throw mtpErrorUnexpected(cons, "MTPstorage_fileType"); } } -inline void MTPstorage_fileType::write(mtpBuffer &to) const { +inline void MTPstorage_fileType::write(mtpBuffer &/*to*/) const { switch (_type) { } } @@ -16132,16 +16132,16 @@ inline void MTPfileLocation::write(mtpBuffer &to) const { } break; } } -inline MTPfileLocation::MTPfileLocation(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPfileLocation::MTPfileLocation(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_fileLocationUnavailable: setData(new MTPDfileLocationUnavailable()); break; case mtpc_fileLocation: setData(new MTPDfileLocation()); break; default: throw mtpErrorBadTypeId(type, "MTPfileLocation"); } } -inline MTPfileLocation::MTPfileLocation(MTPDfileLocationUnavailable *_data) : _type(mtpc_fileLocationUnavailable), mtpDataOwner(_data) { +inline MTPfileLocation::MTPfileLocation(MTPDfileLocationUnavailable *_data) : mtpDataOwner(_data), _type(mtpc_fileLocationUnavailable) { } -inline MTPfileLocation::MTPfileLocation(MTPDfileLocation *_data) : _type(mtpc_fileLocation), mtpDataOwner(_data) { +inline MTPfileLocation::MTPfileLocation(MTPDfileLocation *_data) : mtpDataOwner(_data), _type(mtpc_fileLocation) { } inline MTPfileLocation MTP_fileLocationUnavailable(const MTPlong &_volume_id, MTPint _local_id, const MTPlong &_secret) { return MTPfileLocation(new MTPDfileLocationUnavailable(_volume_id, _local_id, _secret)); @@ -16297,7 +16297,7 @@ inline void MTPuser::write(mtpBuffer &to) const { } break; } } -inline MTPuser::MTPuser(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPuser::MTPuser(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_userEmpty: setData(new MTPDuserEmpty()); break; case mtpc_userSelf: setData(new MTPDuserSelf()); break; @@ -16308,17 +16308,17 @@ inline MTPuser::MTPuser(mtpTypeId type) : _type(type), mtpDataOwner(0) { default: throw mtpErrorBadTypeId(type, "MTPuser"); } } -inline MTPuser::MTPuser(MTPDuserEmpty *_data) : _type(mtpc_userEmpty), mtpDataOwner(_data) { +inline MTPuser::MTPuser(MTPDuserEmpty *_data) : mtpDataOwner(_data), _type(mtpc_userEmpty) { } -inline MTPuser::MTPuser(MTPDuserSelf *_data) : _type(mtpc_userSelf), mtpDataOwner(_data) { +inline MTPuser::MTPuser(MTPDuserSelf *_data) : mtpDataOwner(_data), _type(mtpc_userSelf) { } -inline MTPuser::MTPuser(MTPDuserContact *_data) : _type(mtpc_userContact), mtpDataOwner(_data) { +inline MTPuser::MTPuser(MTPDuserContact *_data) : mtpDataOwner(_data), _type(mtpc_userContact) { } -inline MTPuser::MTPuser(MTPDuserRequest *_data) : _type(mtpc_userRequest), mtpDataOwner(_data) { +inline MTPuser::MTPuser(MTPDuserRequest *_data) : mtpDataOwner(_data), _type(mtpc_userRequest) { } -inline MTPuser::MTPuser(MTPDuserForeign *_data) : _type(mtpc_userForeign), mtpDataOwner(_data) { +inline MTPuser::MTPuser(MTPDuserForeign *_data) : mtpDataOwner(_data), _type(mtpc_userForeign) { } -inline MTPuser::MTPuser(MTPDuserDeleted *_data) : _type(mtpc_userDeleted), mtpDataOwner(_data) { +inline MTPuser::MTPuser(MTPDuserDeleted *_data) : mtpDataOwner(_data), _type(mtpc_userDeleted) { } inline MTPuser MTP_userEmpty(MTPint _id) { return MTPuser(new MTPDuserEmpty(_id)); @@ -16376,14 +16376,14 @@ inline void MTPuserProfilePhoto::write(mtpBuffer &to) const { } break; } } -inline MTPuserProfilePhoto::MTPuserProfilePhoto(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPuserProfilePhoto::MTPuserProfilePhoto(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_userProfilePhotoEmpty: break; case mtpc_userProfilePhoto: setData(new MTPDuserProfilePhoto()); break; default: throw mtpErrorBadTypeId(type, "MTPuserProfilePhoto"); } } -inline MTPuserProfilePhoto::MTPuserProfilePhoto(MTPDuserProfilePhoto *_data) : _type(mtpc_userProfilePhoto), mtpDataOwner(_data) { +inline MTPuserProfilePhoto::MTPuserProfilePhoto(MTPDuserProfilePhoto *_data) : mtpDataOwner(_data), _type(mtpc_userProfilePhoto) { } inline MTPuserProfilePhoto MTP_userProfilePhotoEmpty() { return MTPuserProfilePhoto(mtpc_userProfilePhotoEmpty); @@ -16438,7 +16438,7 @@ inline void MTPuserStatus::write(mtpBuffer &to) const { } break; } } -inline MTPuserStatus::MTPuserStatus(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPuserStatus::MTPuserStatus(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_userStatusEmpty: break; case mtpc_userStatusOnline: setData(new MTPDuserStatusOnline()); break; @@ -16446,9 +16446,9 @@ inline MTPuserStatus::MTPuserStatus(mtpTypeId type) : _type(type), mtpDataOwner( default: throw mtpErrorBadTypeId(type, "MTPuserStatus"); } } -inline MTPuserStatus::MTPuserStatus(MTPDuserStatusOnline *_data) : _type(mtpc_userStatusOnline), mtpDataOwner(_data) { +inline MTPuserStatus::MTPuserStatus(MTPDuserStatusOnline *_data) : mtpDataOwner(_data), _type(mtpc_userStatusOnline) { } -inline MTPuserStatus::MTPuserStatus(MTPDuserStatusOffline *_data) : _type(mtpc_userStatusOffline), mtpDataOwner(_data) { +inline MTPuserStatus::MTPuserStatus(MTPDuserStatusOffline *_data) : mtpDataOwner(_data), _type(mtpc_userStatusOffline) { } inline MTPuserStatus MTP_userStatusEmpty() { return MTPuserStatus(mtpc_userStatusEmpty); @@ -16567,7 +16567,7 @@ inline void MTPchat::write(mtpBuffer &to) const { } break; } } -inline MTPchat::MTPchat(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPchat::MTPchat(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_chatEmpty: setData(new MTPDchatEmpty()); break; case mtpc_chat: setData(new MTPDchat()); break; @@ -16576,13 +16576,13 @@ inline MTPchat::MTPchat(mtpTypeId type) : _type(type), mtpDataOwner(0) { default: throw mtpErrorBadTypeId(type, "MTPchat"); } } -inline MTPchat::MTPchat(MTPDchatEmpty *_data) : _type(mtpc_chatEmpty), mtpDataOwner(_data) { +inline MTPchat::MTPchat(MTPDchatEmpty *_data) : mtpDataOwner(_data), _type(mtpc_chatEmpty) { } -inline MTPchat::MTPchat(MTPDchat *_data) : _type(mtpc_chat), mtpDataOwner(_data) { +inline MTPchat::MTPchat(MTPDchat *_data) : mtpDataOwner(_data), _type(mtpc_chat) { } -inline MTPchat::MTPchat(MTPDchatForbidden *_data) : _type(mtpc_chatForbidden), mtpDataOwner(_data) { +inline MTPchat::MTPchat(MTPDchatForbidden *_data) : mtpDataOwner(_data), _type(mtpc_chatForbidden) { } -inline MTPchat::MTPchat(MTPDgeoChat *_data) : _type(mtpc_geoChat), mtpDataOwner(_data) { +inline MTPchat::MTPchat(MTPDgeoChat *_data) : mtpDataOwner(_data), _type(mtpc_geoChat) { } inline MTPchat MTP_chatEmpty(MTPint _id) { return MTPchat(new MTPDchatEmpty(_id)); @@ -16712,16 +16712,16 @@ inline void MTPchatParticipants::write(mtpBuffer &to) const { } break; } } -inline MTPchatParticipants::MTPchatParticipants(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPchatParticipants::MTPchatParticipants(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_chatParticipantsForbidden: setData(new MTPDchatParticipantsForbidden()); break; case mtpc_chatParticipants: setData(new MTPDchatParticipants()); break; default: throw mtpErrorBadTypeId(type, "MTPchatParticipants"); } } -inline MTPchatParticipants::MTPchatParticipants(MTPDchatParticipantsForbidden *_data) : _type(mtpc_chatParticipantsForbidden), mtpDataOwner(_data) { +inline MTPchatParticipants::MTPchatParticipants(MTPDchatParticipantsForbidden *_data) : mtpDataOwner(_data), _type(mtpc_chatParticipantsForbidden) { } -inline MTPchatParticipants::MTPchatParticipants(MTPDchatParticipants *_data) : _type(mtpc_chatParticipants), mtpDataOwner(_data) { +inline MTPchatParticipants::MTPchatParticipants(MTPDchatParticipants *_data) : mtpDataOwner(_data), _type(mtpc_chatParticipants) { } inline MTPchatParticipants MTP_chatParticipantsForbidden(MTPint _chat_id) { return MTPchatParticipants(new MTPDchatParticipantsForbidden(_chat_id)); @@ -16765,14 +16765,14 @@ inline void MTPchatPhoto::write(mtpBuffer &to) const { } break; } } -inline MTPchatPhoto::MTPchatPhoto(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPchatPhoto::MTPchatPhoto(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_chatPhotoEmpty: break; case mtpc_chatPhoto: setData(new MTPDchatPhoto()); break; default: throw mtpErrorBadTypeId(type, "MTPchatPhoto"); } } -inline MTPchatPhoto::MTPchatPhoto(MTPDchatPhoto *_data) : _type(mtpc_chatPhoto), mtpDataOwner(_data) { +inline MTPchatPhoto::MTPchatPhoto(MTPDchatPhoto *_data) : mtpDataOwner(_data), _type(mtpc_chatPhoto) { } inline MTPchatPhoto MTP_chatPhotoEmpty() { return MTPchatPhoto(mtpc_chatPhotoEmpty); @@ -16896,7 +16896,7 @@ inline void MTPmessage::write(mtpBuffer &to) const { } break; } } -inline MTPmessage::MTPmessage(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPmessage::MTPmessage(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_messageEmpty: setData(new MTPDmessageEmpty()); break; case mtpc_message: setData(new MTPDmessage()); break; @@ -16905,13 +16905,13 @@ inline MTPmessage::MTPmessage(mtpTypeId type) : _type(type), mtpDataOwner(0) { default: throw mtpErrorBadTypeId(type, "MTPmessage"); } } -inline MTPmessage::MTPmessage(MTPDmessageEmpty *_data) : _type(mtpc_messageEmpty), mtpDataOwner(_data) { +inline MTPmessage::MTPmessage(MTPDmessageEmpty *_data) : mtpDataOwner(_data), _type(mtpc_messageEmpty) { } -inline MTPmessage::MTPmessage(MTPDmessage *_data) : _type(mtpc_message), mtpDataOwner(_data) { +inline MTPmessage::MTPmessage(MTPDmessage *_data) : mtpDataOwner(_data), _type(mtpc_message) { } -inline MTPmessage::MTPmessage(MTPDmessageForwarded *_data) : _type(mtpc_messageForwarded), mtpDataOwner(_data) { +inline MTPmessage::MTPmessage(MTPDmessageForwarded *_data) : mtpDataOwner(_data), _type(mtpc_messageForwarded) { } -inline MTPmessage::MTPmessage(MTPDmessageService *_data) : _type(mtpc_messageService), mtpDataOwner(_data) { +inline MTPmessage::MTPmessage(MTPDmessageService *_data) : mtpDataOwner(_data), _type(mtpc_messageService) { } inline MTPmessage MTP_messageEmpty(MTPint _id) { return MTPmessage(new MTPDmessageEmpty(_id)); @@ -17043,7 +17043,7 @@ inline void MTPmessageMedia::write(mtpBuffer &to) const { } break; } } -inline MTPmessageMedia::MTPmessageMedia(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPmessageMedia::MTPmessageMedia(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_messageMediaEmpty: break; case mtpc_messageMediaPhoto: setData(new MTPDmessageMediaPhoto()); break; @@ -17056,19 +17056,19 @@ inline MTPmessageMedia::MTPmessageMedia(mtpTypeId type) : _type(type), mtpDataOw default: throw mtpErrorBadTypeId(type, "MTPmessageMedia"); } } -inline MTPmessageMedia::MTPmessageMedia(MTPDmessageMediaPhoto *_data) : _type(mtpc_messageMediaPhoto), mtpDataOwner(_data) { +inline MTPmessageMedia::MTPmessageMedia(MTPDmessageMediaPhoto *_data) : mtpDataOwner(_data), _type(mtpc_messageMediaPhoto) { } -inline MTPmessageMedia::MTPmessageMedia(MTPDmessageMediaVideo *_data) : _type(mtpc_messageMediaVideo), mtpDataOwner(_data) { +inline MTPmessageMedia::MTPmessageMedia(MTPDmessageMediaVideo *_data) : mtpDataOwner(_data), _type(mtpc_messageMediaVideo) { } -inline MTPmessageMedia::MTPmessageMedia(MTPDmessageMediaGeo *_data) : _type(mtpc_messageMediaGeo), mtpDataOwner(_data) { +inline MTPmessageMedia::MTPmessageMedia(MTPDmessageMediaGeo *_data) : mtpDataOwner(_data), _type(mtpc_messageMediaGeo) { } -inline MTPmessageMedia::MTPmessageMedia(MTPDmessageMediaContact *_data) : _type(mtpc_messageMediaContact), mtpDataOwner(_data) { +inline MTPmessageMedia::MTPmessageMedia(MTPDmessageMediaContact *_data) : mtpDataOwner(_data), _type(mtpc_messageMediaContact) { } -inline MTPmessageMedia::MTPmessageMedia(MTPDmessageMediaUnsupported *_data) : _type(mtpc_messageMediaUnsupported), mtpDataOwner(_data) { +inline MTPmessageMedia::MTPmessageMedia(MTPDmessageMediaUnsupported *_data) : mtpDataOwner(_data), _type(mtpc_messageMediaUnsupported) { } -inline MTPmessageMedia::MTPmessageMedia(MTPDmessageMediaDocument *_data) : _type(mtpc_messageMediaDocument), mtpDataOwner(_data) { +inline MTPmessageMedia::MTPmessageMedia(MTPDmessageMediaDocument *_data) : mtpDataOwner(_data), _type(mtpc_messageMediaDocument) { } -inline MTPmessageMedia::MTPmessageMedia(MTPDmessageMediaAudio *_data) : _type(mtpc_messageMediaAudio), mtpDataOwner(_data) { +inline MTPmessageMedia::MTPmessageMedia(MTPDmessageMediaAudio *_data) : mtpDataOwner(_data), _type(mtpc_messageMediaAudio) { } inline MTPmessageMedia MTP_messageMediaEmpty() { return MTPmessageMedia(mtpc_messageMediaEmpty); @@ -17199,7 +17199,7 @@ inline void MTPmessageAction::write(mtpBuffer &to) const { } break; } } -inline MTPmessageAction::MTPmessageAction(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPmessageAction::MTPmessageAction(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_messageActionEmpty: break; case mtpc_messageActionChatCreate: setData(new MTPDmessageActionChatCreate()); break; @@ -17213,17 +17213,17 @@ inline MTPmessageAction::MTPmessageAction(mtpTypeId type) : _type(type), mtpData default: throw mtpErrorBadTypeId(type, "MTPmessageAction"); } } -inline MTPmessageAction::MTPmessageAction(MTPDmessageActionChatCreate *_data) : _type(mtpc_messageActionChatCreate), mtpDataOwner(_data) { +inline MTPmessageAction::MTPmessageAction(MTPDmessageActionChatCreate *_data) : mtpDataOwner(_data), _type(mtpc_messageActionChatCreate) { } -inline MTPmessageAction::MTPmessageAction(MTPDmessageActionChatEditTitle *_data) : _type(mtpc_messageActionChatEditTitle), mtpDataOwner(_data) { +inline MTPmessageAction::MTPmessageAction(MTPDmessageActionChatEditTitle *_data) : mtpDataOwner(_data), _type(mtpc_messageActionChatEditTitle) { } -inline MTPmessageAction::MTPmessageAction(MTPDmessageActionChatEditPhoto *_data) : _type(mtpc_messageActionChatEditPhoto), mtpDataOwner(_data) { +inline MTPmessageAction::MTPmessageAction(MTPDmessageActionChatEditPhoto *_data) : mtpDataOwner(_data), _type(mtpc_messageActionChatEditPhoto) { } -inline MTPmessageAction::MTPmessageAction(MTPDmessageActionChatAddUser *_data) : _type(mtpc_messageActionChatAddUser), mtpDataOwner(_data) { +inline MTPmessageAction::MTPmessageAction(MTPDmessageActionChatAddUser *_data) : mtpDataOwner(_data), _type(mtpc_messageActionChatAddUser) { } -inline MTPmessageAction::MTPmessageAction(MTPDmessageActionChatDeleteUser *_data) : _type(mtpc_messageActionChatDeleteUser), mtpDataOwner(_data) { +inline MTPmessageAction::MTPmessageAction(MTPDmessageActionChatDeleteUser *_data) : mtpDataOwner(_data), _type(mtpc_messageActionChatDeleteUser) { } -inline MTPmessageAction::MTPmessageAction(MTPDmessageActionGeoChatCreate *_data) : _type(mtpc_messageActionGeoChatCreate), mtpDataOwner(_data) { +inline MTPmessageAction::MTPmessageAction(MTPDmessageActionGeoChatCreate *_data) : mtpDataOwner(_data), _type(mtpc_messageActionGeoChatCreate) { } inline MTPmessageAction MTP_messageActionEmpty() { return MTPmessageAction(mtpc_messageActionEmpty); @@ -17343,16 +17343,16 @@ inline void MTPphoto::write(mtpBuffer &to) const { } break; } } -inline MTPphoto::MTPphoto(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPphoto::MTPphoto(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_photoEmpty: setData(new MTPDphotoEmpty()); break; case mtpc_photo: setData(new MTPDphoto()); break; default: throw mtpErrorBadTypeId(type, "MTPphoto"); } } -inline MTPphoto::MTPphoto(MTPDphotoEmpty *_data) : _type(mtpc_photoEmpty), mtpDataOwner(_data) { +inline MTPphoto::MTPphoto(MTPDphotoEmpty *_data) : mtpDataOwner(_data), _type(mtpc_photoEmpty) { } -inline MTPphoto::MTPphoto(MTPDphoto *_data) : _type(mtpc_photo), mtpDataOwner(_data) { +inline MTPphoto::MTPphoto(MTPDphoto *_data) : mtpDataOwner(_data), _type(mtpc_photo) { } inline MTPphoto MTP_photoEmpty(const MTPlong &_id) { return MTPphoto(new MTPDphotoEmpty(_id)); @@ -17435,7 +17435,7 @@ inline void MTPphotoSize::write(mtpBuffer &to) const { } break; } } -inline MTPphotoSize::MTPphotoSize(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPphotoSize::MTPphotoSize(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_photoSizeEmpty: setData(new MTPDphotoSizeEmpty()); break; case mtpc_photoSize: setData(new MTPDphotoSize()); break; @@ -17443,11 +17443,11 @@ inline MTPphotoSize::MTPphotoSize(mtpTypeId type) : _type(type), mtpDataOwner(0) default: throw mtpErrorBadTypeId(type, "MTPphotoSize"); } } -inline MTPphotoSize::MTPphotoSize(MTPDphotoSizeEmpty *_data) : _type(mtpc_photoSizeEmpty), mtpDataOwner(_data) { +inline MTPphotoSize::MTPphotoSize(MTPDphotoSizeEmpty *_data) : mtpDataOwner(_data), _type(mtpc_photoSizeEmpty) { } -inline MTPphotoSize::MTPphotoSize(MTPDphotoSize *_data) : _type(mtpc_photoSize), mtpDataOwner(_data) { +inline MTPphotoSize::MTPphotoSize(MTPDphotoSize *_data) : mtpDataOwner(_data), _type(mtpc_photoSize) { } -inline MTPphotoSize::MTPphotoSize(MTPDphotoCachedSize *_data) : _type(mtpc_photoCachedSize), mtpDataOwner(_data) { +inline MTPphotoSize::MTPphotoSize(MTPDphotoCachedSize *_data) : mtpDataOwner(_data), _type(mtpc_photoCachedSize) { } inline MTPphotoSize MTP_photoSizeEmpty(const MTPstring &_type) { return MTPphotoSize(new MTPDphotoSizeEmpty(_type)); @@ -17526,16 +17526,16 @@ inline void MTPvideo::write(mtpBuffer &to) const { } break; } } -inline MTPvideo::MTPvideo(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPvideo::MTPvideo(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_videoEmpty: setData(new MTPDvideoEmpty()); break; case mtpc_video: setData(new MTPDvideo()); break; default: throw mtpErrorBadTypeId(type, "MTPvideo"); } } -inline MTPvideo::MTPvideo(MTPDvideoEmpty *_data) : _type(mtpc_videoEmpty), mtpDataOwner(_data) { +inline MTPvideo::MTPvideo(MTPDvideoEmpty *_data) : mtpDataOwner(_data), _type(mtpc_videoEmpty) { } -inline MTPvideo::MTPvideo(MTPDvideo *_data) : _type(mtpc_video), mtpDataOwner(_data) { +inline MTPvideo::MTPvideo(MTPDvideo *_data) : mtpDataOwner(_data), _type(mtpc_video) { } inline MTPvideo MTP_videoEmpty(const MTPlong &_id) { return MTPvideo(new MTPDvideoEmpty(_id)); @@ -17579,14 +17579,14 @@ inline void MTPgeoPoint::write(mtpBuffer &to) const { } break; } } -inline MTPgeoPoint::MTPgeoPoint(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPgeoPoint::MTPgeoPoint(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_geoPointEmpty: break; case mtpc_geoPoint: setData(new MTPDgeoPoint()); break; default: throw mtpErrorBadTypeId(type, "MTPgeoPoint"); } } -inline MTPgeoPoint::MTPgeoPoint(MTPDgeoPoint *_data) : _type(mtpc_geoPoint), mtpDataOwner(_data) { +inline MTPgeoPoint::MTPgeoPoint(MTPDgeoPoint *_data) : mtpDataOwner(_data), _type(mtpc_geoPoint) { } inline MTPgeoPoint MTP_geoPointEmpty() { return MTPgeoPoint(mtpc_geoPointEmpty); @@ -17763,7 +17763,7 @@ inline void MTPinputNotifyPeer::write(mtpBuffer &to) const { } break; } } -inline MTPinputNotifyPeer::MTPinputNotifyPeer(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPinputNotifyPeer::MTPinputNotifyPeer(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_inputNotifyPeer: setData(new MTPDinputNotifyPeer()); break; case mtpc_inputNotifyUsers: break; @@ -17773,9 +17773,9 @@ inline MTPinputNotifyPeer::MTPinputNotifyPeer(mtpTypeId type) : _type(type), mtp default: throw mtpErrorBadTypeId(type, "MTPinputNotifyPeer"); } } -inline MTPinputNotifyPeer::MTPinputNotifyPeer(MTPDinputNotifyPeer *_data) : _type(mtpc_inputNotifyPeer), mtpDataOwner(_data) { +inline MTPinputNotifyPeer::MTPinputNotifyPeer(MTPDinputNotifyPeer *_data) : mtpDataOwner(_data), _type(mtpc_inputNotifyPeer) { } -inline MTPinputNotifyPeer::MTPinputNotifyPeer(MTPDinputNotifyGeoChatPeer *_data) : _type(mtpc_inputNotifyGeoChatPeer), mtpDataOwner(_data) { +inline MTPinputNotifyPeer::MTPinputNotifyPeer(MTPDinputNotifyGeoChatPeer *_data) : mtpDataOwner(_data), _type(mtpc_inputNotifyGeoChatPeer) { } inline MTPinputNotifyPeer MTP_inputNotifyPeer(const MTPInputPeer &_peer) { return MTPinputNotifyPeer(new MTPDinputNotifyPeer(_peer)); @@ -17807,7 +17807,7 @@ inline void MTPinputPeerNotifyEvents::read(const mtpPrime *&from, const mtpPrime default: throw mtpErrorUnexpected(cons, "MTPinputPeerNotifyEvents"); } } -inline void MTPinputPeerNotifyEvents::write(mtpBuffer &to) const { +inline void MTPinputPeerNotifyEvents::write(mtpBuffer &/*to*/) const { switch (_type) { } } @@ -17872,7 +17872,7 @@ inline void MTPpeerNotifyEvents::read(const mtpPrime *&from, const mtpPrime *end default: throw mtpErrorUnexpected(cons, "MTPpeerNotifyEvents"); } } -inline void MTPpeerNotifyEvents::write(mtpBuffer &to) const { +inline void MTPpeerNotifyEvents::write(mtpBuffer &/*to*/) const { switch (_type) { } } @@ -17929,14 +17929,14 @@ inline void MTPpeerNotifySettings::write(mtpBuffer &to) const { } break; } } -inline MTPpeerNotifySettings::MTPpeerNotifySettings(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPpeerNotifySettings::MTPpeerNotifySettings(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_peerNotifySettingsEmpty: break; case mtpc_peerNotifySettings: setData(new MTPDpeerNotifySettings()); break; default: throw mtpErrorBadTypeId(type, "MTPpeerNotifySettings"); } } -inline MTPpeerNotifySettings::MTPpeerNotifySettings(MTPDpeerNotifySettings *_data) : _type(mtpc_peerNotifySettings), mtpDataOwner(_data) { +inline MTPpeerNotifySettings::MTPpeerNotifySettings(MTPDpeerNotifySettings *_data) : mtpDataOwner(_data), _type(mtpc_peerNotifySettings) { } inline MTPpeerNotifySettings MTP_peerNotifySettingsEmpty() { return MTPpeerNotifySettings(mtpc_peerNotifySettingsEmpty); @@ -18002,16 +18002,16 @@ inline void MTPwallPaper::write(mtpBuffer &to) const { } break; } } -inline MTPwallPaper::MTPwallPaper(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPwallPaper::MTPwallPaper(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_wallPaper: setData(new MTPDwallPaper()); break; case mtpc_wallPaperSolid: setData(new MTPDwallPaperSolid()); break; default: throw mtpErrorBadTypeId(type, "MTPwallPaper"); } } -inline MTPwallPaper::MTPwallPaper(MTPDwallPaper *_data) : _type(mtpc_wallPaper), mtpDataOwner(_data) { +inline MTPwallPaper::MTPwallPaper(MTPDwallPaper *_data) : mtpDataOwner(_data), _type(mtpc_wallPaper) { } -inline MTPwallPaper::MTPwallPaper(MTPDwallPaperSolid *_data) : _type(mtpc_wallPaperSolid), mtpDataOwner(_data) { +inline MTPwallPaper::MTPwallPaper(MTPDwallPaperSolid *_data) : mtpDataOwner(_data), _type(mtpc_wallPaperSolid) { } inline MTPwallPaper MTP_wallPaper(MTPint _id, const MTPstring &_title, const MTPVector &_sizes, MTPint _color) { return MTPwallPaper(new MTPDwallPaper(_id, _title, _sizes, _color)); @@ -18294,7 +18294,7 @@ inline void MTPcontacts_foreignLink::write(mtpBuffer &to) const { } break; } } -inline MTPcontacts_foreignLink::MTPcontacts_foreignLink(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPcontacts_foreignLink::MTPcontacts_foreignLink(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_contacts_foreignLinkUnknown: break; case mtpc_contacts_foreignLinkRequested: setData(new MTPDcontacts_foreignLinkRequested()); break; @@ -18302,7 +18302,7 @@ inline MTPcontacts_foreignLink::MTPcontacts_foreignLink(mtpTypeId type) : _type( default: throw mtpErrorBadTypeId(type, "MTPcontacts_foreignLink"); } } -inline MTPcontacts_foreignLink::MTPcontacts_foreignLink(MTPDcontacts_foreignLinkRequested *_data) : _type(mtpc_contacts_foreignLinkRequested), mtpDataOwner(_data) { +inline MTPcontacts_foreignLink::MTPcontacts_foreignLink(MTPDcontacts_foreignLinkRequested *_data) : mtpDataOwner(_data), _type(mtpc_contacts_foreignLinkRequested) { } inline MTPcontacts_foreignLink MTP_contacts_foreignLinkUnknown() { return MTPcontacts_foreignLink(mtpc_contacts_foreignLinkUnknown); @@ -18348,7 +18348,7 @@ inline void MTPcontacts_myLink::write(mtpBuffer &to) const { } break; } } -inline MTPcontacts_myLink::MTPcontacts_myLink(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPcontacts_myLink::MTPcontacts_myLink(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_contacts_myLinkEmpty: break; case mtpc_contacts_myLinkRequested: setData(new MTPDcontacts_myLinkRequested()); break; @@ -18356,7 +18356,7 @@ inline MTPcontacts_myLink::MTPcontacts_myLink(mtpTypeId type) : _type(type), mtp default: throw mtpErrorBadTypeId(type, "MTPcontacts_myLink"); } } -inline MTPcontacts_myLink::MTPcontacts_myLink(MTPDcontacts_myLinkRequested *_data) : _type(mtpc_contacts_myLinkRequested), mtpDataOwner(_data) { +inline MTPcontacts_myLink::MTPcontacts_myLink(MTPDcontacts_myLinkRequested *_data) : mtpDataOwner(_data), _type(mtpc_contacts_myLinkRequested) { } inline MTPcontacts_myLink MTP_contacts_myLinkEmpty() { return MTPcontacts_myLink(mtpc_contacts_myLinkEmpty); @@ -18434,14 +18434,14 @@ inline void MTPcontacts_contacts::write(mtpBuffer &to) const { } break; } } -inline MTPcontacts_contacts::MTPcontacts_contacts(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPcontacts_contacts::MTPcontacts_contacts(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_contacts_contacts: setData(new MTPDcontacts_contacts()); break; case mtpc_contacts_contactsNotModified: break; default: throw mtpErrorBadTypeId(type, "MTPcontacts_contacts"); } } -inline MTPcontacts_contacts::MTPcontacts_contacts(MTPDcontacts_contacts *_data) : _type(mtpc_contacts_contacts), mtpDataOwner(_data) { +inline MTPcontacts_contacts::MTPcontacts_contacts(MTPDcontacts_contacts *_data) : mtpDataOwner(_data), _type(mtpc_contacts_contacts) { } inline MTPcontacts_contacts MTP_contacts_contacts(const MTPVector &_contacts, const MTPVector &_users) { return MTPcontacts_contacts(new MTPDcontacts_contacts(_contacts, _users)); @@ -18532,16 +18532,16 @@ inline void MTPcontacts_blocked::write(mtpBuffer &to) const { } break; } } -inline MTPcontacts_blocked::MTPcontacts_blocked(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPcontacts_blocked::MTPcontacts_blocked(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_contacts_blocked: setData(new MTPDcontacts_blocked()); break; case mtpc_contacts_blockedSlice: setData(new MTPDcontacts_blockedSlice()); break; default: throw mtpErrorBadTypeId(type, "MTPcontacts_blocked"); } } -inline MTPcontacts_blocked::MTPcontacts_blocked(MTPDcontacts_blocked *_data) : _type(mtpc_contacts_blocked), mtpDataOwner(_data) { +inline MTPcontacts_blocked::MTPcontacts_blocked(MTPDcontacts_blocked *_data) : mtpDataOwner(_data), _type(mtpc_contacts_blocked) { } -inline MTPcontacts_blocked::MTPcontacts_blocked(MTPDcontacts_blockedSlice *_data) : _type(mtpc_contacts_blockedSlice), mtpDataOwner(_data) { +inline MTPcontacts_blocked::MTPcontacts_blocked(MTPDcontacts_blockedSlice *_data) : mtpDataOwner(_data), _type(mtpc_contacts_blockedSlice) { } inline MTPcontacts_blocked MTP_contacts_blocked(const MTPVector &_blocked, const MTPVector &_users) { return MTPcontacts_blocked(new MTPDcontacts_blocked(_blocked, _users)); @@ -18667,16 +18667,16 @@ inline void MTPmessages_dialogs::write(mtpBuffer &to) const { } break; } } -inline MTPmessages_dialogs::MTPmessages_dialogs(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPmessages_dialogs::MTPmessages_dialogs(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_messages_dialogs: setData(new MTPDmessages_dialogs()); break; case mtpc_messages_dialogsSlice: setData(new MTPDmessages_dialogsSlice()); break; default: throw mtpErrorBadTypeId(type, "MTPmessages_dialogs"); } } -inline MTPmessages_dialogs::MTPmessages_dialogs(MTPDmessages_dialogs *_data) : _type(mtpc_messages_dialogs), mtpDataOwner(_data) { +inline MTPmessages_dialogs::MTPmessages_dialogs(MTPDmessages_dialogs *_data) : mtpDataOwner(_data), _type(mtpc_messages_dialogs) { } -inline MTPmessages_dialogs::MTPmessages_dialogs(MTPDmessages_dialogsSlice *_data) : _type(mtpc_messages_dialogsSlice), mtpDataOwner(_data) { +inline MTPmessages_dialogs::MTPmessages_dialogs(MTPDmessages_dialogsSlice *_data) : mtpDataOwner(_data), _type(mtpc_messages_dialogsSlice) { } inline MTPmessages_dialogs MTP_messages_dialogs(const MTPVector &_dialogs, const MTPVector &_messages, const MTPVector &_chats, const MTPVector &_users) { return MTPmessages_dialogs(new MTPDmessages_dialogs(_dialogs, _messages, _chats, _users)); @@ -18740,16 +18740,16 @@ inline void MTPmessages_messages::write(mtpBuffer &to) const { } break; } } -inline MTPmessages_messages::MTPmessages_messages(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPmessages_messages::MTPmessages_messages(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_messages_messages: setData(new MTPDmessages_messages()); break; case mtpc_messages_messagesSlice: setData(new MTPDmessages_messagesSlice()); break; default: throw mtpErrorBadTypeId(type, "MTPmessages_messages"); } } -inline MTPmessages_messages::MTPmessages_messages(MTPDmessages_messages *_data) : _type(mtpc_messages_messages), mtpDataOwner(_data) { +inline MTPmessages_messages::MTPmessages_messages(MTPDmessages_messages *_data) : mtpDataOwner(_data), _type(mtpc_messages_messages) { } -inline MTPmessages_messages::MTPmessages_messages(MTPDmessages_messagesSlice *_data) : _type(mtpc_messages_messagesSlice), mtpDataOwner(_data) { +inline MTPmessages_messages::MTPmessages_messages(MTPDmessages_messagesSlice *_data) : mtpDataOwner(_data), _type(mtpc_messages_messagesSlice) { } inline MTPmessages_messages MTP_messages_messages(const MTPVector &_messages, const MTPVector &_chats, const MTPVector &_users) { return MTPmessages_messages(new MTPDmessages_messages(_messages, _chats, _users)); @@ -18795,14 +18795,14 @@ inline void MTPmessages_message::write(mtpBuffer &to) const { } break; } } -inline MTPmessages_message::MTPmessages_message(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPmessages_message::MTPmessages_message(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_messages_messageEmpty: break; case mtpc_messages_message: setData(new MTPDmessages_message()); break; default: throw mtpErrorBadTypeId(type, "MTPmessages_message"); } } -inline MTPmessages_message::MTPmessages_message(MTPDmessages_message *_data) : _type(mtpc_messages_message), mtpDataOwner(_data) { +inline MTPmessages_message::MTPmessages_message(MTPDmessages_message *_data) : mtpDataOwner(_data), _type(mtpc_messages_message) { } inline MTPmessages_message MTP_messages_messageEmpty() { return MTPmessages_message(mtpc_messages_messageEmpty); @@ -18874,16 +18874,16 @@ inline void MTPmessages_statedMessages::write(mtpBuffer &to) const { } break; } } -inline MTPmessages_statedMessages::MTPmessages_statedMessages(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPmessages_statedMessages::MTPmessages_statedMessages(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_messages_statedMessages: setData(new MTPDmessages_statedMessages()); break; case mtpc_messages_statedMessagesLinks: setData(new MTPDmessages_statedMessagesLinks()); break; default: throw mtpErrorBadTypeId(type, "MTPmessages_statedMessages"); } } -inline MTPmessages_statedMessages::MTPmessages_statedMessages(MTPDmessages_statedMessages *_data) : _type(mtpc_messages_statedMessages), mtpDataOwner(_data) { +inline MTPmessages_statedMessages::MTPmessages_statedMessages(MTPDmessages_statedMessages *_data) : mtpDataOwner(_data), _type(mtpc_messages_statedMessages) { } -inline MTPmessages_statedMessages::MTPmessages_statedMessages(MTPDmessages_statedMessagesLinks *_data) : _type(mtpc_messages_statedMessagesLinks), mtpDataOwner(_data) { +inline MTPmessages_statedMessages::MTPmessages_statedMessages(MTPDmessages_statedMessagesLinks *_data) : mtpDataOwner(_data), _type(mtpc_messages_statedMessagesLinks) { } inline MTPmessages_statedMessages MTP_messages_statedMessages(const MTPVector &_messages, const MTPVector &_chats, const MTPVector &_users, MTPint _pts, MTPint _seq) { return MTPmessages_statedMessages(new MTPDmessages_statedMessages(_messages, _chats, _users, _pts, _seq)); @@ -18955,16 +18955,16 @@ inline void MTPmessages_statedMessage::write(mtpBuffer &to) const { } break; } } -inline MTPmessages_statedMessage::MTPmessages_statedMessage(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPmessages_statedMessage::MTPmessages_statedMessage(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_messages_statedMessage: setData(new MTPDmessages_statedMessage()); break; case mtpc_messages_statedMessageLink: setData(new MTPDmessages_statedMessageLink()); break; default: throw mtpErrorBadTypeId(type, "MTPmessages_statedMessage"); } } -inline MTPmessages_statedMessage::MTPmessages_statedMessage(MTPDmessages_statedMessage *_data) : _type(mtpc_messages_statedMessage), mtpDataOwner(_data) { +inline MTPmessages_statedMessage::MTPmessages_statedMessage(MTPDmessages_statedMessage *_data) : mtpDataOwner(_data), _type(mtpc_messages_statedMessage) { } -inline MTPmessages_statedMessage::MTPmessages_statedMessage(MTPDmessages_statedMessageLink *_data) : _type(mtpc_messages_statedMessageLink), mtpDataOwner(_data) { +inline MTPmessages_statedMessage::MTPmessages_statedMessage(MTPDmessages_statedMessageLink *_data) : mtpDataOwner(_data), _type(mtpc_messages_statedMessageLink) { } inline MTPmessages_statedMessage MTP_messages_statedMessage(const MTPMessage &_message, const MTPVector &_chats, const MTPVector &_users, MTPint _pts, MTPint _seq) { return MTPmessages_statedMessage(new MTPDmessages_statedMessage(_message, _chats, _users, _pts, _seq)); @@ -19032,16 +19032,16 @@ inline void MTPmessages_sentMessage::write(mtpBuffer &to) const { } break; } } -inline MTPmessages_sentMessage::MTPmessages_sentMessage(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPmessages_sentMessage::MTPmessages_sentMessage(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_messages_sentMessage: setData(new MTPDmessages_sentMessage()); break; case mtpc_messages_sentMessageLink: setData(new MTPDmessages_sentMessageLink()); break; default: throw mtpErrorBadTypeId(type, "MTPmessages_sentMessage"); } } -inline MTPmessages_sentMessage::MTPmessages_sentMessage(MTPDmessages_sentMessage *_data) : _type(mtpc_messages_sentMessage), mtpDataOwner(_data) { +inline MTPmessages_sentMessage::MTPmessages_sentMessage(MTPDmessages_sentMessage *_data) : mtpDataOwner(_data), _type(mtpc_messages_sentMessage) { } -inline MTPmessages_sentMessage::MTPmessages_sentMessage(MTPDmessages_sentMessageLink *_data) : _type(mtpc_messages_sentMessageLink), mtpDataOwner(_data) { +inline MTPmessages_sentMessage::MTPmessages_sentMessage(MTPDmessages_sentMessageLink *_data) : mtpDataOwner(_data), _type(mtpc_messages_sentMessageLink) { } inline MTPmessages_sentMessage MTP_messages_sentMessage(MTPint _id, MTPint _date, MTPint _pts, MTPint _seq) { return MTPmessages_sentMessage(new MTPDmessages_sentMessage(_id, _date, _pts, _seq)); @@ -19187,7 +19187,7 @@ inline void MTPmessagesFilter::read(const mtpPrime *&from, const mtpPrime *end, default: throw mtpErrorUnexpected(cons, "MTPmessagesFilter"); } } -inline void MTPmessagesFilter::write(mtpBuffer &to) const { +inline void MTPmessagesFilter::write(mtpBuffer &/*to*/) const { switch (_type) { } } @@ -19619,7 +19619,7 @@ inline void MTPupdate::write(mtpBuffer &to) const { } break; } } -inline MTPupdate::MTPupdate(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPupdate::MTPupdate(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_updateNewMessage: setData(new MTPDupdateNewMessage()); break; case mtpc_updateMessageID: setData(new MTPDupdateMessageID()); break; @@ -19649,55 +19649,55 @@ inline MTPupdate::MTPupdate(mtpTypeId type) : _type(type), mtpDataOwner(0) { default: throw mtpErrorBadTypeId(type, "MTPupdate"); } } -inline MTPupdate::MTPupdate(MTPDupdateNewMessage *_data) : _type(mtpc_updateNewMessage), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateNewMessage *_data) : mtpDataOwner(_data), _type(mtpc_updateNewMessage) { } -inline MTPupdate::MTPupdate(MTPDupdateMessageID *_data) : _type(mtpc_updateMessageID), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateMessageID *_data) : mtpDataOwner(_data), _type(mtpc_updateMessageID) { } -inline MTPupdate::MTPupdate(MTPDupdateReadMessages *_data) : _type(mtpc_updateReadMessages), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateReadMessages *_data) : mtpDataOwner(_data), _type(mtpc_updateReadMessages) { } -inline MTPupdate::MTPupdate(MTPDupdateDeleteMessages *_data) : _type(mtpc_updateDeleteMessages), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateDeleteMessages *_data) : mtpDataOwner(_data), _type(mtpc_updateDeleteMessages) { } -inline MTPupdate::MTPupdate(MTPDupdateRestoreMessages *_data) : _type(mtpc_updateRestoreMessages), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateRestoreMessages *_data) : mtpDataOwner(_data), _type(mtpc_updateRestoreMessages) { } -inline MTPupdate::MTPupdate(MTPDupdateUserTyping *_data) : _type(mtpc_updateUserTyping), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateUserTyping *_data) : mtpDataOwner(_data), _type(mtpc_updateUserTyping) { } -inline MTPupdate::MTPupdate(MTPDupdateChatUserTyping *_data) : _type(mtpc_updateChatUserTyping), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateChatUserTyping *_data) : mtpDataOwner(_data), _type(mtpc_updateChatUserTyping) { } -inline MTPupdate::MTPupdate(MTPDupdateChatParticipants *_data) : _type(mtpc_updateChatParticipants), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateChatParticipants *_data) : mtpDataOwner(_data), _type(mtpc_updateChatParticipants) { } -inline MTPupdate::MTPupdate(MTPDupdateUserStatus *_data) : _type(mtpc_updateUserStatus), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateUserStatus *_data) : mtpDataOwner(_data), _type(mtpc_updateUserStatus) { } -inline MTPupdate::MTPupdate(MTPDupdateUserName *_data) : _type(mtpc_updateUserName), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateUserName *_data) : mtpDataOwner(_data), _type(mtpc_updateUserName) { } -inline MTPupdate::MTPupdate(MTPDupdateUserPhoto *_data) : _type(mtpc_updateUserPhoto), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateUserPhoto *_data) : mtpDataOwner(_data), _type(mtpc_updateUserPhoto) { } -inline MTPupdate::MTPupdate(MTPDupdateContactRegistered *_data) : _type(mtpc_updateContactRegistered), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateContactRegistered *_data) : mtpDataOwner(_data), _type(mtpc_updateContactRegistered) { } -inline MTPupdate::MTPupdate(MTPDupdateContactLink *_data) : _type(mtpc_updateContactLink), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateContactLink *_data) : mtpDataOwner(_data), _type(mtpc_updateContactLink) { } -inline MTPupdate::MTPupdate(MTPDupdateActivation *_data) : _type(mtpc_updateActivation), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateActivation *_data) : mtpDataOwner(_data), _type(mtpc_updateActivation) { } -inline MTPupdate::MTPupdate(MTPDupdateNewAuthorization *_data) : _type(mtpc_updateNewAuthorization), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateNewAuthorization *_data) : mtpDataOwner(_data), _type(mtpc_updateNewAuthorization) { } -inline MTPupdate::MTPupdate(MTPDupdateNewGeoChatMessage *_data) : _type(mtpc_updateNewGeoChatMessage), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateNewGeoChatMessage *_data) : mtpDataOwner(_data), _type(mtpc_updateNewGeoChatMessage) { } -inline MTPupdate::MTPupdate(MTPDupdateNewEncryptedMessage *_data) : _type(mtpc_updateNewEncryptedMessage), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateNewEncryptedMessage *_data) : mtpDataOwner(_data), _type(mtpc_updateNewEncryptedMessage) { } -inline MTPupdate::MTPupdate(MTPDupdateEncryptedChatTyping *_data) : _type(mtpc_updateEncryptedChatTyping), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateEncryptedChatTyping *_data) : mtpDataOwner(_data), _type(mtpc_updateEncryptedChatTyping) { } -inline MTPupdate::MTPupdate(MTPDupdateEncryption *_data) : _type(mtpc_updateEncryption), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateEncryption *_data) : mtpDataOwner(_data), _type(mtpc_updateEncryption) { } -inline MTPupdate::MTPupdate(MTPDupdateEncryptedMessagesRead *_data) : _type(mtpc_updateEncryptedMessagesRead), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateEncryptedMessagesRead *_data) : mtpDataOwner(_data), _type(mtpc_updateEncryptedMessagesRead) { } -inline MTPupdate::MTPupdate(MTPDupdateChatParticipantAdd *_data) : _type(mtpc_updateChatParticipantAdd), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateChatParticipantAdd *_data) : mtpDataOwner(_data), _type(mtpc_updateChatParticipantAdd) { } -inline MTPupdate::MTPupdate(MTPDupdateChatParticipantDelete *_data) : _type(mtpc_updateChatParticipantDelete), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateChatParticipantDelete *_data) : mtpDataOwner(_data), _type(mtpc_updateChatParticipantDelete) { } -inline MTPupdate::MTPupdate(MTPDupdateDcOptions *_data) : _type(mtpc_updateDcOptions), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateDcOptions *_data) : mtpDataOwner(_data), _type(mtpc_updateDcOptions) { } -inline MTPupdate::MTPupdate(MTPDupdateUserBlocked *_data) : _type(mtpc_updateUserBlocked), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateUserBlocked *_data) : mtpDataOwner(_data), _type(mtpc_updateUserBlocked) { } -inline MTPupdate::MTPupdate(MTPDupdateNotifySettings *_data) : _type(mtpc_updateNotifySettings), mtpDataOwner(_data) { +inline MTPupdate::MTPupdate(MTPDupdateNotifySettings *_data) : mtpDataOwner(_data), _type(mtpc_updateNotifySettings) { } inline MTPupdate MTP_updateNewMessage(const MTPMessage &_message, MTPint _pts) { return MTPupdate(new MTPDupdateNewMessage(_message, _pts)); @@ -19890,7 +19890,7 @@ inline void MTPupdates_difference::write(mtpBuffer &to) const { } break; } } -inline MTPupdates_difference::MTPupdates_difference(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPupdates_difference::MTPupdates_difference(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_updates_differenceEmpty: setData(new MTPDupdates_differenceEmpty()); break; case mtpc_updates_difference: setData(new MTPDupdates_difference()); break; @@ -19898,11 +19898,11 @@ inline MTPupdates_difference::MTPupdates_difference(mtpTypeId type) : _type(type default: throw mtpErrorBadTypeId(type, "MTPupdates_difference"); } } -inline MTPupdates_difference::MTPupdates_difference(MTPDupdates_differenceEmpty *_data) : _type(mtpc_updates_differenceEmpty), mtpDataOwner(_data) { +inline MTPupdates_difference::MTPupdates_difference(MTPDupdates_differenceEmpty *_data) : mtpDataOwner(_data), _type(mtpc_updates_differenceEmpty) { } -inline MTPupdates_difference::MTPupdates_difference(MTPDupdates_difference *_data) : _type(mtpc_updates_difference), mtpDataOwner(_data) { +inline MTPupdates_difference::MTPupdates_difference(MTPDupdates_difference *_data) : mtpDataOwner(_data), _type(mtpc_updates_difference) { } -inline MTPupdates_difference::MTPupdates_difference(MTPDupdates_differenceSlice *_data) : _type(mtpc_updates_differenceSlice), mtpDataOwner(_data) { +inline MTPupdates_difference::MTPupdates_difference(MTPDupdates_differenceSlice *_data) : mtpDataOwner(_data), _type(mtpc_updates_differenceSlice) { } inline MTPupdates_difference MTP_updates_differenceEmpty(MTPint _date, MTPint _seq) { return MTPupdates_difference(new MTPDupdates_differenceEmpty(_date, _seq)); @@ -20041,7 +20041,7 @@ inline void MTPupdates::write(mtpBuffer &to) const { } break; } } -inline MTPupdates::MTPupdates(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPupdates::MTPupdates(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_updatesTooLong: break; case mtpc_updateShortMessage: setData(new MTPDupdateShortMessage()); break; @@ -20052,15 +20052,15 @@ inline MTPupdates::MTPupdates(mtpTypeId type) : _type(type), mtpDataOwner(0) { default: throw mtpErrorBadTypeId(type, "MTPupdates"); } } -inline MTPupdates::MTPupdates(MTPDupdateShortMessage *_data) : _type(mtpc_updateShortMessage), mtpDataOwner(_data) { +inline MTPupdates::MTPupdates(MTPDupdateShortMessage *_data) : mtpDataOwner(_data), _type(mtpc_updateShortMessage) { } -inline MTPupdates::MTPupdates(MTPDupdateShortChatMessage *_data) : _type(mtpc_updateShortChatMessage), mtpDataOwner(_data) { +inline MTPupdates::MTPupdates(MTPDupdateShortChatMessage *_data) : mtpDataOwner(_data), _type(mtpc_updateShortChatMessage) { } -inline MTPupdates::MTPupdates(MTPDupdateShort *_data) : _type(mtpc_updateShort), mtpDataOwner(_data) { +inline MTPupdates::MTPupdates(MTPDupdateShort *_data) : mtpDataOwner(_data), _type(mtpc_updateShort) { } -inline MTPupdates::MTPupdates(MTPDupdatesCombined *_data) : _type(mtpc_updatesCombined), mtpDataOwner(_data) { +inline MTPupdates::MTPupdates(MTPDupdatesCombined *_data) : mtpDataOwner(_data), _type(mtpc_updatesCombined) { } -inline MTPupdates::MTPupdates(MTPDupdates *_data) : _type(mtpc_updates), mtpDataOwner(_data) { +inline MTPupdates::MTPupdates(MTPDupdates *_data) : mtpDataOwner(_data), _type(mtpc_updates) { } inline MTPupdates MTP_updatesTooLong() { return MTPupdates(mtpc_updatesTooLong); @@ -20132,16 +20132,16 @@ inline void MTPphotos_photos::write(mtpBuffer &to) const { } break; } } -inline MTPphotos_photos::MTPphotos_photos(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPphotos_photos::MTPphotos_photos(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_photos_photos: setData(new MTPDphotos_photos()); break; case mtpc_photos_photosSlice: setData(new MTPDphotos_photosSlice()); break; default: throw mtpErrorBadTypeId(type, "MTPphotos_photos"); } } -inline MTPphotos_photos::MTPphotos_photos(MTPDphotos_photos *_data) : _type(mtpc_photos_photos), mtpDataOwner(_data) { +inline MTPphotos_photos::MTPphotos_photos(MTPDphotos_photos *_data) : mtpDataOwner(_data), _type(mtpc_photos_photos) { } -inline MTPphotos_photos::MTPphotos_photos(MTPDphotos_photosSlice *_data) : _type(mtpc_photos_photosSlice), mtpDataOwner(_data) { +inline MTPphotos_photos::MTPphotos_photos(MTPDphotos_photosSlice *_data) : mtpDataOwner(_data), _type(mtpc_photos_photosSlice) { } inline MTPphotos_photos MTP_photos_photos(const MTPVector &_photos, const MTPVector &_users) { return MTPphotos_photos(new MTPDphotos_photos(_photos, _users)); @@ -20350,14 +20350,14 @@ inline void MTPhelp_appUpdate::write(mtpBuffer &to) const { } break; } } -inline MTPhelp_appUpdate::MTPhelp_appUpdate(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPhelp_appUpdate::MTPhelp_appUpdate(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_help_appUpdate: setData(new MTPDhelp_appUpdate()); break; case mtpc_help_noAppUpdate: break; default: throw mtpErrorBadTypeId(type, "MTPhelp_appUpdate"); } } -inline MTPhelp_appUpdate::MTPhelp_appUpdate(MTPDhelp_appUpdate *_data) : _type(mtpc_help_appUpdate), mtpDataOwner(_data) { +inline MTPhelp_appUpdate::MTPhelp_appUpdate(MTPDhelp_appUpdate *_data) : mtpDataOwner(_data), _type(mtpc_help_appUpdate) { } inline MTPhelp_appUpdate MTP_help_appUpdate(MTPint _id, MTPBool _critical, const MTPstring &_url, const MTPstring &_text) { return MTPhelp_appUpdate(new MTPDhelp_appUpdate(_id, _critical, _url, _text)); @@ -20500,7 +20500,7 @@ inline void MTPgeoChatMessage::write(mtpBuffer &to) const { } break; } } -inline MTPgeoChatMessage::MTPgeoChatMessage(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPgeoChatMessage::MTPgeoChatMessage(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_geoChatMessageEmpty: setData(new MTPDgeoChatMessageEmpty()); break; case mtpc_geoChatMessage: setData(new MTPDgeoChatMessage()); break; @@ -20508,11 +20508,11 @@ inline MTPgeoChatMessage::MTPgeoChatMessage(mtpTypeId type) : _type(type), mtpDa default: throw mtpErrorBadTypeId(type, "MTPgeoChatMessage"); } } -inline MTPgeoChatMessage::MTPgeoChatMessage(MTPDgeoChatMessageEmpty *_data) : _type(mtpc_geoChatMessageEmpty), mtpDataOwner(_data) { +inline MTPgeoChatMessage::MTPgeoChatMessage(MTPDgeoChatMessageEmpty *_data) : mtpDataOwner(_data), _type(mtpc_geoChatMessageEmpty) { } -inline MTPgeoChatMessage::MTPgeoChatMessage(MTPDgeoChatMessage *_data) : _type(mtpc_geoChatMessage), mtpDataOwner(_data) { +inline MTPgeoChatMessage::MTPgeoChatMessage(MTPDgeoChatMessage *_data) : mtpDataOwner(_data), _type(mtpc_geoChatMessage) { } -inline MTPgeoChatMessage::MTPgeoChatMessage(MTPDgeoChatMessageService *_data) : _type(mtpc_geoChatMessageService), mtpDataOwner(_data) { +inline MTPgeoChatMessage::MTPgeoChatMessage(MTPDgeoChatMessageService *_data) : mtpDataOwner(_data), _type(mtpc_geoChatMessageService) { } inline MTPgeoChatMessage MTP_geoChatMessageEmpty(MTPint _chat_id, MTPint _id) { return MTPgeoChatMessage(new MTPDgeoChatMessageEmpty(_chat_id, _id)); @@ -20645,16 +20645,16 @@ inline void MTPgeochats_messages::write(mtpBuffer &to) const { } break; } } -inline MTPgeochats_messages::MTPgeochats_messages(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPgeochats_messages::MTPgeochats_messages(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_geochats_messages: setData(new MTPDgeochats_messages()); break; case mtpc_geochats_messagesSlice: setData(new MTPDgeochats_messagesSlice()); break; default: throw mtpErrorBadTypeId(type, "MTPgeochats_messages"); } } -inline MTPgeochats_messages::MTPgeochats_messages(MTPDgeochats_messages *_data) : _type(mtpc_geochats_messages), mtpDataOwner(_data) { +inline MTPgeochats_messages::MTPgeochats_messages(MTPDgeochats_messages *_data) : mtpDataOwner(_data), _type(mtpc_geochats_messages) { } -inline MTPgeochats_messages::MTPgeochats_messages(MTPDgeochats_messagesSlice *_data) : _type(mtpc_geochats_messagesSlice), mtpDataOwner(_data) { +inline MTPgeochats_messages::MTPgeochats_messages(MTPDgeochats_messagesSlice *_data) : mtpDataOwner(_data), _type(mtpc_geochats_messagesSlice) { } inline MTPgeochats_messages MTP_geochats_messages(const MTPVector &_messages, const MTPVector &_chats, const MTPVector &_users) { return MTPgeochats_messages(new MTPDgeochats_messages(_messages, _chats, _users)); @@ -20777,7 +20777,7 @@ inline void MTPencryptedChat::write(mtpBuffer &to) const { } break; } } -inline MTPencryptedChat::MTPencryptedChat(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPencryptedChat::MTPencryptedChat(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_encryptedChatEmpty: setData(new MTPDencryptedChatEmpty()); break; case mtpc_encryptedChatWaiting: setData(new MTPDencryptedChatWaiting()); break; @@ -20787,15 +20787,15 @@ inline MTPencryptedChat::MTPencryptedChat(mtpTypeId type) : _type(type), mtpData default: throw mtpErrorBadTypeId(type, "MTPencryptedChat"); } } -inline MTPencryptedChat::MTPencryptedChat(MTPDencryptedChatEmpty *_data) : _type(mtpc_encryptedChatEmpty), mtpDataOwner(_data) { +inline MTPencryptedChat::MTPencryptedChat(MTPDencryptedChatEmpty *_data) : mtpDataOwner(_data), _type(mtpc_encryptedChatEmpty) { } -inline MTPencryptedChat::MTPencryptedChat(MTPDencryptedChatWaiting *_data) : _type(mtpc_encryptedChatWaiting), mtpDataOwner(_data) { +inline MTPencryptedChat::MTPencryptedChat(MTPDencryptedChatWaiting *_data) : mtpDataOwner(_data), _type(mtpc_encryptedChatWaiting) { } -inline MTPencryptedChat::MTPencryptedChat(MTPDencryptedChatRequested *_data) : _type(mtpc_encryptedChatRequested), mtpDataOwner(_data) { +inline MTPencryptedChat::MTPencryptedChat(MTPDencryptedChatRequested *_data) : mtpDataOwner(_data), _type(mtpc_encryptedChatRequested) { } -inline MTPencryptedChat::MTPencryptedChat(MTPDencryptedChat *_data) : _type(mtpc_encryptedChat), mtpDataOwner(_data) { +inline MTPencryptedChat::MTPencryptedChat(MTPDencryptedChat *_data) : mtpDataOwner(_data), _type(mtpc_encryptedChat) { } -inline MTPencryptedChat::MTPencryptedChat(MTPDencryptedChatDiscarded *_data) : _type(mtpc_encryptedChatDiscarded), mtpDataOwner(_data) { +inline MTPencryptedChat::MTPencryptedChat(MTPDencryptedChatDiscarded *_data) : mtpDataOwner(_data), _type(mtpc_encryptedChatDiscarded) { } inline MTPencryptedChat MTP_encryptedChatEmpty(MTPint _id) { return MTPencryptedChat(new MTPDencryptedChatEmpty(_id)); @@ -20883,14 +20883,14 @@ inline void MTPencryptedFile::write(mtpBuffer &to) const { } break; } } -inline MTPencryptedFile::MTPencryptedFile(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPencryptedFile::MTPencryptedFile(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_encryptedFileEmpty: break; case mtpc_encryptedFile: setData(new MTPDencryptedFile()); break; default: throw mtpErrorBadTypeId(type, "MTPencryptedFile"); } } -inline MTPencryptedFile::MTPencryptedFile(MTPDencryptedFile *_data) : _type(mtpc_encryptedFile), mtpDataOwner(_data) { +inline MTPencryptedFile::MTPencryptedFile(MTPDencryptedFile *_data) : mtpDataOwner(_data), _type(mtpc_encryptedFile) { } inline MTPencryptedFile MTP_encryptedFileEmpty() { return MTPencryptedFile(mtpc_encryptedFileEmpty); @@ -20970,7 +20970,7 @@ inline void MTPinputEncryptedFile::write(mtpBuffer &to) const { } break; } } -inline MTPinputEncryptedFile::MTPinputEncryptedFile(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPinputEncryptedFile::MTPinputEncryptedFile(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_inputEncryptedFileEmpty: break; case mtpc_inputEncryptedFileUploaded: setData(new MTPDinputEncryptedFileUploaded()); break; @@ -20979,11 +20979,11 @@ inline MTPinputEncryptedFile::MTPinputEncryptedFile(mtpTypeId type) : _type(type default: throw mtpErrorBadTypeId(type, "MTPinputEncryptedFile"); } } -inline MTPinputEncryptedFile::MTPinputEncryptedFile(MTPDinputEncryptedFileUploaded *_data) : _type(mtpc_inputEncryptedFileUploaded), mtpDataOwner(_data) { +inline MTPinputEncryptedFile::MTPinputEncryptedFile(MTPDinputEncryptedFileUploaded *_data) : mtpDataOwner(_data), _type(mtpc_inputEncryptedFileUploaded) { } -inline MTPinputEncryptedFile::MTPinputEncryptedFile(MTPDinputEncryptedFile *_data) : _type(mtpc_inputEncryptedFile), mtpDataOwner(_data) { +inline MTPinputEncryptedFile::MTPinputEncryptedFile(MTPDinputEncryptedFile *_data) : mtpDataOwner(_data), _type(mtpc_inputEncryptedFile) { } -inline MTPinputEncryptedFile::MTPinputEncryptedFile(MTPDinputEncryptedFileBigUploaded *_data) : _type(mtpc_inputEncryptedFileBigUploaded), mtpDataOwner(_data) { +inline MTPinputEncryptedFile::MTPinputEncryptedFile(MTPDinputEncryptedFileBigUploaded *_data) : mtpDataOwner(_data), _type(mtpc_inputEncryptedFileBigUploaded) { } inline MTPinputEncryptedFile MTP_inputEncryptedFileEmpty() { return MTPinputEncryptedFile(mtpc_inputEncryptedFileEmpty); @@ -21057,16 +21057,16 @@ inline void MTPencryptedMessage::write(mtpBuffer &to) const { } break; } } -inline MTPencryptedMessage::MTPencryptedMessage(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPencryptedMessage::MTPencryptedMessage(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_encryptedMessage: setData(new MTPDencryptedMessage()); break; case mtpc_encryptedMessageService: setData(new MTPDencryptedMessageService()); break; default: throw mtpErrorBadTypeId(type, "MTPencryptedMessage"); } } -inline MTPencryptedMessage::MTPencryptedMessage(MTPDencryptedMessage *_data) : _type(mtpc_encryptedMessage), mtpDataOwner(_data) { +inline MTPencryptedMessage::MTPencryptedMessage(MTPDencryptedMessage *_data) : mtpDataOwner(_data), _type(mtpc_encryptedMessage) { } -inline MTPencryptedMessage::MTPencryptedMessage(MTPDencryptedMessageService *_data) : _type(mtpc_encryptedMessageService), mtpDataOwner(_data) { +inline MTPencryptedMessage::MTPencryptedMessage(MTPDencryptedMessageService *_data) : mtpDataOwner(_data), _type(mtpc_encryptedMessageService) { } inline MTPencryptedMessage MTP_encryptedMessage(const MTPlong &_random_id, MTPint _chat_id, MTPint _date, const MTPbytes &_bytes, const MTPEncryptedFile &_file) { return MTPencryptedMessage(new MTPDencryptedMessage(_random_id, _chat_id, _date, _bytes, _file)); @@ -21159,16 +21159,16 @@ inline void MTPdecryptedMessage::write(mtpBuffer &to) const { } break; } } -inline MTPdecryptedMessage::MTPdecryptedMessage(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPdecryptedMessage::MTPdecryptedMessage(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_decryptedMessage: setData(new MTPDdecryptedMessage()); break; case mtpc_decryptedMessageService: setData(new MTPDdecryptedMessageService()); break; default: throw mtpErrorBadTypeId(type, "MTPdecryptedMessage"); } } -inline MTPdecryptedMessage::MTPdecryptedMessage(MTPDdecryptedMessage *_data) : _type(mtpc_decryptedMessage), mtpDataOwner(_data) { +inline MTPdecryptedMessage::MTPdecryptedMessage(MTPDdecryptedMessage *_data) : mtpDataOwner(_data), _type(mtpc_decryptedMessage) { } -inline MTPdecryptedMessage::MTPdecryptedMessage(MTPDdecryptedMessageService *_data) : _type(mtpc_decryptedMessageService), mtpDataOwner(_data) { +inline MTPdecryptedMessage::MTPdecryptedMessage(MTPDdecryptedMessageService *_data) : mtpDataOwner(_data), _type(mtpc_decryptedMessageService) { } inline MTPdecryptedMessage MTP_decryptedMessage(const MTPlong &_random_id, const MTPbytes &_random_bytes, const MTPstring &_message, const MTPDecryptedMessageMedia &_media) { return MTPdecryptedMessage(new MTPDdecryptedMessage(_random_id, _random_bytes, _message, _media)); @@ -21337,7 +21337,7 @@ inline void MTPdecryptedMessageMedia::write(mtpBuffer &to) const { } break; } } -inline MTPdecryptedMessageMedia::MTPdecryptedMessageMedia(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPdecryptedMessageMedia::MTPdecryptedMessageMedia(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_decryptedMessageMediaEmpty: break; case mtpc_decryptedMessageMediaPhoto: setData(new MTPDdecryptedMessageMediaPhoto()); break; @@ -21349,17 +21349,17 @@ inline MTPdecryptedMessageMedia::MTPdecryptedMessageMedia(mtpTypeId type) : _typ default: throw mtpErrorBadTypeId(type, "MTPdecryptedMessageMedia"); } } -inline MTPdecryptedMessageMedia::MTPdecryptedMessageMedia(MTPDdecryptedMessageMediaPhoto *_data) : _type(mtpc_decryptedMessageMediaPhoto), mtpDataOwner(_data) { +inline MTPdecryptedMessageMedia::MTPdecryptedMessageMedia(MTPDdecryptedMessageMediaPhoto *_data) : mtpDataOwner(_data), _type(mtpc_decryptedMessageMediaPhoto) { } -inline MTPdecryptedMessageMedia::MTPdecryptedMessageMedia(MTPDdecryptedMessageMediaVideo *_data) : _type(mtpc_decryptedMessageMediaVideo), mtpDataOwner(_data) { +inline MTPdecryptedMessageMedia::MTPdecryptedMessageMedia(MTPDdecryptedMessageMediaVideo *_data) : mtpDataOwner(_data), _type(mtpc_decryptedMessageMediaVideo) { } -inline MTPdecryptedMessageMedia::MTPdecryptedMessageMedia(MTPDdecryptedMessageMediaGeoPoint *_data) : _type(mtpc_decryptedMessageMediaGeoPoint), mtpDataOwner(_data) { +inline MTPdecryptedMessageMedia::MTPdecryptedMessageMedia(MTPDdecryptedMessageMediaGeoPoint *_data) : mtpDataOwner(_data), _type(mtpc_decryptedMessageMediaGeoPoint) { } -inline MTPdecryptedMessageMedia::MTPdecryptedMessageMedia(MTPDdecryptedMessageMediaContact *_data) : _type(mtpc_decryptedMessageMediaContact), mtpDataOwner(_data) { +inline MTPdecryptedMessageMedia::MTPdecryptedMessageMedia(MTPDdecryptedMessageMediaContact *_data) : mtpDataOwner(_data), _type(mtpc_decryptedMessageMediaContact) { } -inline MTPdecryptedMessageMedia::MTPdecryptedMessageMedia(MTPDdecryptedMessageMediaDocument *_data) : _type(mtpc_decryptedMessageMediaDocument), mtpDataOwner(_data) { +inline MTPdecryptedMessageMedia::MTPdecryptedMessageMedia(MTPDdecryptedMessageMediaDocument *_data) : mtpDataOwner(_data), _type(mtpc_decryptedMessageMediaDocument) { } -inline MTPdecryptedMessageMedia::MTPdecryptedMessageMedia(MTPDdecryptedMessageMediaAudio *_data) : _type(mtpc_decryptedMessageMediaAudio), mtpDataOwner(_data) { +inline MTPdecryptedMessageMedia::MTPdecryptedMessageMedia(MTPDdecryptedMessageMediaAudio *_data) : mtpDataOwner(_data), _type(mtpc_decryptedMessageMediaAudio) { } inline MTPdecryptedMessageMedia MTP_decryptedMessageMediaEmpty() { return MTPdecryptedMessageMedia(mtpc_decryptedMessageMediaEmpty); @@ -21468,7 +21468,7 @@ inline void MTPdecryptedMessageAction::write(mtpBuffer &to) const { } break; } } -inline MTPdecryptedMessageAction::MTPdecryptedMessageAction(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPdecryptedMessageAction::MTPdecryptedMessageAction(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_decryptedMessageActionSetMessageTTL: setData(new MTPDdecryptedMessageActionSetMessageTTL()); break; case mtpc_decryptedMessageActionReadMessages: setData(new MTPDdecryptedMessageActionReadMessages()); break; @@ -21479,15 +21479,15 @@ inline MTPdecryptedMessageAction::MTPdecryptedMessageAction(mtpTypeId type) : _t default: throw mtpErrorBadTypeId(type, "MTPdecryptedMessageAction"); } } -inline MTPdecryptedMessageAction::MTPdecryptedMessageAction(MTPDdecryptedMessageActionSetMessageTTL *_data) : _type(mtpc_decryptedMessageActionSetMessageTTL), mtpDataOwner(_data) { +inline MTPdecryptedMessageAction::MTPdecryptedMessageAction(MTPDdecryptedMessageActionSetMessageTTL *_data) : mtpDataOwner(_data), _type(mtpc_decryptedMessageActionSetMessageTTL) { } -inline MTPdecryptedMessageAction::MTPdecryptedMessageAction(MTPDdecryptedMessageActionReadMessages *_data) : _type(mtpc_decryptedMessageActionReadMessages), mtpDataOwner(_data) { +inline MTPdecryptedMessageAction::MTPdecryptedMessageAction(MTPDdecryptedMessageActionReadMessages *_data) : mtpDataOwner(_data), _type(mtpc_decryptedMessageActionReadMessages) { } -inline MTPdecryptedMessageAction::MTPdecryptedMessageAction(MTPDdecryptedMessageActionDeleteMessages *_data) : _type(mtpc_decryptedMessageActionDeleteMessages), mtpDataOwner(_data) { +inline MTPdecryptedMessageAction::MTPdecryptedMessageAction(MTPDdecryptedMessageActionDeleteMessages *_data) : mtpDataOwner(_data), _type(mtpc_decryptedMessageActionDeleteMessages) { } -inline MTPdecryptedMessageAction::MTPdecryptedMessageAction(MTPDdecryptedMessageActionScreenshotMessages *_data) : _type(mtpc_decryptedMessageActionScreenshotMessages), mtpDataOwner(_data) { +inline MTPdecryptedMessageAction::MTPdecryptedMessageAction(MTPDdecryptedMessageActionScreenshotMessages *_data) : mtpDataOwner(_data), _type(mtpc_decryptedMessageActionScreenshotMessages) { } -inline MTPdecryptedMessageAction::MTPdecryptedMessageAction(MTPDdecryptedMessageActionNotifyLayer *_data) : _type(mtpc_decryptedMessageActionNotifyLayer), mtpDataOwner(_data) { +inline MTPdecryptedMessageAction::MTPdecryptedMessageAction(MTPDdecryptedMessageActionNotifyLayer *_data) : mtpDataOwner(_data), _type(mtpc_decryptedMessageActionNotifyLayer) { } inline MTPdecryptedMessageAction MTP_decryptedMessageActionSetMessageTTL(MTPint _ttl_seconds) { return MTPdecryptedMessageAction(new MTPDdecryptedMessageActionSetMessageTTL(_ttl_seconds)); @@ -21559,16 +21559,16 @@ inline void MTPmessages_dhConfig::write(mtpBuffer &to) const { } break; } } -inline MTPmessages_dhConfig::MTPmessages_dhConfig(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPmessages_dhConfig::MTPmessages_dhConfig(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_messages_dhConfigNotModified: setData(new MTPDmessages_dhConfigNotModified()); break; case mtpc_messages_dhConfig: setData(new MTPDmessages_dhConfig()); break; default: throw mtpErrorBadTypeId(type, "MTPmessages_dhConfig"); } } -inline MTPmessages_dhConfig::MTPmessages_dhConfig(MTPDmessages_dhConfigNotModified *_data) : _type(mtpc_messages_dhConfigNotModified), mtpDataOwner(_data) { +inline MTPmessages_dhConfig::MTPmessages_dhConfig(MTPDmessages_dhConfigNotModified *_data) : mtpDataOwner(_data), _type(mtpc_messages_dhConfigNotModified) { } -inline MTPmessages_dhConfig::MTPmessages_dhConfig(MTPDmessages_dhConfig *_data) : _type(mtpc_messages_dhConfig), mtpDataOwner(_data) { +inline MTPmessages_dhConfig::MTPmessages_dhConfig(MTPDmessages_dhConfig *_data) : mtpDataOwner(_data), _type(mtpc_messages_dhConfig) { } inline MTPmessages_dhConfig MTP_messages_dhConfigNotModified(const MTPbytes &_random) { return MTPmessages_dhConfig(new MTPDmessages_dhConfigNotModified(_random)); @@ -21624,16 +21624,16 @@ inline void MTPmessages_sentEncryptedMessage::write(mtpBuffer &to) const { } break; } } -inline MTPmessages_sentEncryptedMessage::MTPmessages_sentEncryptedMessage(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPmessages_sentEncryptedMessage::MTPmessages_sentEncryptedMessage(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_messages_sentEncryptedMessage: setData(new MTPDmessages_sentEncryptedMessage()); break; case mtpc_messages_sentEncryptedFile: setData(new MTPDmessages_sentEncryptedFile()); break; default: throw mtpErrorBadTypeId(type, "MTPmessages_sentEncryptedMessage"); } } -inline MTPmessages_sentEncryptedMessage::MTPmessages_sentEncryptedMessage(MTPDmessages_sentEncryptedMessage *_data) : _type(mtpc_messages_sentEncryptedMessage), mtpDataOwner(_data) { +inline MTPmessages_sentEncryptedMessage::MTPmessages_sentEncryptedMessage(MTPDmessages_sentEncryptedMessage *_data) : mtpDataOwner(_data), _type(mtpc_messages_sentEncryptedMessage) { } -inline MTPmessages_sentEncryptedMessage::MTPmessages_sentEncryptedMessage(MTPDmessages_sentEncryptedFile *_data) : _type(mtpc_messages_sentEncryptedFile), mtpDataOwner(_data) { +inline MTPmessages_sentEncryptedMessage::MTPmessages_sentEncryptedMessage(MTPDmessages_sentEncryptedFile *_data) : mtpDataOwner(_data), _type(mtpc_messages_sentEncryptedFile) { } inline MTPmessages_sentEncryptedMessage MTP_messages_sentEncryptedMessage(MTPint _date) { return MTPmessages_sentEncryptedMessage(new MTPDmessages_sentEncryptedMessage(_date)); @@ -21677,14 +21677,14 @@ inline void MTPinputAudio::write(mtpBuffer &to) const { } break; } } -inline MTPinputAudio::MTPinputAudio(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPinputAudio::MTPinputAudio(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_inputAudioEmpty: break; case mtpc_inputAudio: setData(new MTPDinputAudio()); break; default: throw mtpErrorBadTypeId(type, "MTPinputAudio"); } } -inline MTPinputAudio::MTPinputAudio(MTPDinputAudio *_data) : _type(mtpc_inputAudio), mtpDataOwner(_data) { +inline MTPinputAudio::MTPinputAudio(MTPDinputAudio *_data) : mtpDataOwner(_data), _type(mtpc_inputAudio) { } inline MTPinputAudio MTP_inputAudioEmpty() { return MTPinputAudio(mtpc_inputAudioEmpty); @@ -21728,14 +21728,14 @@ inline void MTPinputDocument::write(mtpBuffer &to) const { } break; } } -inline MTPinputDocument::MTPinputDocument(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPinputDocument::MTPinputDocument(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_inputDocumentEmpty: break; case mtpc_inputDocument: setData(new MTPDinputDocument()); break; default: throw mtpErrorBadTypeId(type, "MTPinputDocument"); } } -inline MTPinputDocument::MTPinputDocument(MTPDinputDocument *_data) : _type(mtpc_inputDocument), mtpDataOwner(_data) { +inline MTPinputDocument::MTPinputDocument(MTPDinputDocument *_data) : mtpDataOwner(_data), _type(mtpc_inputDocument) { } inline MTPinputDocument MTP_inputDocumentEmpty() { return MTPinputDocument(mtpc_inputDocumentEmpty); @@ -21803,16 +21803,16 @@ inline void MTPaudio::write(mtpBuffer &to) const { } break; } } -inline MTPaudio::MTPaudio(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPaudio::MTPaudio(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_audioEmpty: setData(new MTPDaudioEmpty()); break; case mtpc_audio: setData(new MTPDaudio()); break; default: throw mtpErrorBadTypeId(type, "MTPaudio"); } } -inline MTPaudio::MTPaudio(MTPDaudioEmpty *_data) : _type(mtpc_audioEmpty), mtpDataOwner(_data) { +inline MTPaudio::MTPaudio(MTPDaudioEmpty *_data) : mtpDataOwner(_data), _type(mtpc_audioEmpty) { } -inline MTPaudio::MTPaudio(MTPDaudio *_data) : _type(mtpc_audio), mtpDataOwner(_data) { +inline MTPaudio::MTPaudio(MTPDaudio *_data) : mtpDataOwner(_data), _type(mtpc_audio) { } inline MTPaudio MTP_audioEmpty(const MTPlong &_id) { return MTPaudio(new MTPDaudioEmpty(_id)); @@ -21882,16 +21882,16 @@ inline void MTPdocument::write(mtpBuffer &to) const { } break; } } -inline MTPdocument::MTPdocument(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPdocument::MTPdocument(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_documentEmpty: setData(new MTPDdocumentEmpty()); break; case mtpc_document: setData(new MTPDdocument()); break; default: throw mtpErrorBadTypeId(type, "MTPdocument"); } } -inline MTPdocument::MTPdocument(MTPDdocumentEmpty *_data) : _type(mtpc_documentEmpty), mtpDataOwner(_data) { +inline MTPdocument::MTPdocument(MTPDdocumentEmpty *_data) : mtpDataOwner(_data), _type(mtpc_documentEmpty) { } -inline MTPdocument::MTPdocument(MTPDdocument *_data) : _type(mtpc_document), mtpDataOwner(_data) { +inline MTPdocument::MTPdocument(MTPDdocument *_data) : mtpDataOwner(_data), _type(mtpc_document) { } inline MTPdocument MTP_documentEmpty(const MTPlong &_id) { return MTPdocument(new MTPDdocumentEmpty(_id)); @@ -21964,7 +21964,7 @@ inline void MTPnotifyPeer::write(mtpBuffer &to) const { } break; } } -inline MTPnotifyPeer::MTPnotifyPeer(mtpTypeId type) : _type(type), mtpDataOwner(0) { +inline MTPnotifyPeer::MTPnotifyPeer(mtpTypeId type) : mtpDataOwner(0), _type(type) { switch (type) { case mtpc_notifyPeer: setData(new MTPDnotifyPeer()); break; case mtpc_notifyUsers: break; @@ -21973,7 +21973,7 @@ inline MTPnotifyPeer::MTPnotifyPeer(mtpTypeId type) : _type(type), mtpDataOwner( default: throw mtpErrorBadTypeId(type, "MTPnotifyPeer"); } } -inline MTPnotifyPeer::MTPnotifyPeer(MTPDnotifyPeer *_data) : _type(mtpc_notifyPeer), mtpDataOwner(_data) { +inline MTPnotifyPeer::MTPnotifyPeer(MTPDnotifyPeer *_data) : mtpDataOwner(_data), _type(mtpc_notifyPeer) { } inline MTPnotifyPeer MTP_notifyPeer(const MTPPeer &_peer) { return MTPnotifyPeer(new MTPDnotifyPeer(_peer)); @@ -22006,51 +22006,23 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP } QString result; - switch (cons) { - case mtpc_messages_chatFull: - result += "\n" + add; - result += " full_chat: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ messages_chatFull" + result + "}"; + switch (mtpTypeId(cons)) { + case mtpc_userProfilePhotoEmpty: + result = " "; + return "{ userProfilePhotoEmpty" + result + "}"; - case mtpc_messages_affectedHistory: + case mtpc_userProfilePhoto: result += "\n" + add; - result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ messages_affectedHistory" + result + "}"; + result += " photo_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " photo_small: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " photo_big: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ userProfilePhoto" + result + "}"; - case mtpc_inputFileLocation: + case mtpc_rpc_error: result += "\n" + add; - result += " volume_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " local_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " secret: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ inputFileLocation" + result + "}"; - - case mtpc_inputVideoFileLocation: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ inputVideoFileLocation" + result + "}"; - - case mtpc_inputEncryptedFileLocation: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ inputEncryptedFileLocation" + result + "}"; - - case mtpc_inputAudioFileLocation: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ inputAudioFileLocation" + result + "}"; - - case mtpc_inputDocumentFileLocation: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ inputDocumentFileLocation" + result + "}"; + result += " error_code: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " error_message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ rpc_error" + result + "}"; case mtpc_dh_gen_ok: result += "\n" + add; @@ -22073,72 +22045,297 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " new_nonce_hash3: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; return "{ dh_gen_fail" + result + "}"; - case mtpc_chatEmpty: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ chatEmpty" + result + "}"; - - case mtpc_chat: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " participants_count: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " left: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " version: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ chat" + result + "}"; - - case mtpc_chatForbidden: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ chatForbidden" + result + "}"; - - case mtpc_geoChat: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " address: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " venue: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " geo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " participants_count: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " checked_in: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " version: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ geoChat" + result + "}"; - - case mtpc_inputDocumentEmpty: + case mtpc_inputPeerEmpty: result = " "; - return "{ inputDocumentEmpty" + result + "}"; + return "{ inputPeerEmpty" + result + "}"; - case mtpc_inputDocument: + case mtpc_inputPeerSelf: + result = " "; + return "{ inputPeerSelf" + result + "}"; + + case mtpc_inputPeerContact: + result += "\n" + add; + result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ inputPeerContact" + result + "}"; + + case mtpc_inputPeerForeign: + result += "\n" + add; + result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ inputPeerForeign" + result + "}"; + + case mtpc_inputPeerChat: + result += "\n" + add; + result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ inputPeerChat" + result + "}"; + + case mtpc_photoEmpty: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ photoEmpty" + result + "}"; + + case mtpc_photo: result += "\n" + add; result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ inputDocument" + result + "}"; + result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " caption: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " geo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " sizes: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ photo" + result + "}"; - case mtpc_messages_statedMessage: + case mtpc_p_q_inner_data: result += "\n" + add; - result += " message: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " pq: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " p: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " q: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; + result += " server_nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; + result += " new_nonce: " + mtpTextSerialize(from, end, mtpc_int256, level + 1) + ",\n" + add; + return "{ p_q_inner_data" + result + "}"; + + case mtpc_client_DH_inner_data: + result += "\n" + add; + result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; + result += " server_nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; + result += " retry_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " g_b: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ client_DH_inner_data" + result + "}"; + + case mtpc_contacts_link: + result += "\n" + add; + result += " my_link: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " foreign_link: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " user: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ contacts_link" + result + "}"; + + case mtpc_inputPhotoCropAuto: + result = " "; + return "{ inputPhotoCropAuto" + result + "}"; + + case mtpc_inputPhotoCrop: + result += "\n" + add; + result += " crop_left: " + mtpTextSerialize(from, end, mtpc_double, level + 1) + ",\n" + add; + result += " crop_top: " + mtpTextSerialize(from, end, mtpc_double, level + 1) + ",\n" + add; + result += " crop_width: " + mtpTextSerialize(from, end, mtpc_double, level + 1) + ",\n" + add; + return "{ inputPhotoCrop" + result + "}"; + + case mtpc_inputFile: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " parts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " md5_checksum: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ inputFile" + result + "}"; + + case mtpc_inputFileBig: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " parts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ inputFileBig" + result + "}"; + + case mtpc_messageActionEmpty: + result = " "; + return "{ messageActionEmpty" + result + "}"; + + case mtpc_messageActionChatCreate: + result += "\n" + add; + result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_int) + ",\n" + add; + return "{ messageActionChatCreate" + result + "}"; + + case mtpc_messageActionChatEditTitle: + result += "\n" + add; + result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ messageActionChatEditTitle" + result + "}"; + + case mtpc_messageActionChatEditPhoto: + result += "\n" + add; + result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ messageActionChatEditPhoto" + result + "}"; + + case mtpc_messageActionChatDeletePhoto: + result = " "; + return "{ messageActionChatDeletePhoto" + result + "}"; + + case mtpc_messageActionChatAddUser: + result += "\n" + add; + result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ messageActionChatAddUser" + result + "}"; + + case mtpc_messageActionChatDeleteUser: + result += "\n" + add; + result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ messageActionChatDeleteUser" + result + "}"; + + case mtpc_messageActionGeoChatCreate: + result += "\n" + add; + result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " address: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ messageActionGeoChatCreate" + result + "}"; + + case mtpc_messageActionGeoChatCheckin: + result = " "; + return "{ messageActionGeoChatCheckin" + result + "}"; + + case mtpc_inputMessagesFilterEmpty: + result = " "; + return "{ inputMessagesFilterEmpty" + result + "}"; + + case mtpc_inputMessagesFilterPhotos: + result = " "; + return "{ inputMessagesFilterPhotos" + result + "}"; + + case mtpc_inputMessagesFilterVideo: + result = " "; + return "{ inputMessagesFilterVideo" + result + "}"; + + case mtpc_inputMessagesFilterPhotoVideo: + result = " "; + return "{ inputMessagesFilterPhotoVideo" + result + "}"; + + case mtpc_inputMessagesFilterDocument: + result = " "; + return "{ inputMessagesFilterDocument" + result + "}"; + + case mtpc_help_support: + result += "\n" + add; + result += " phone_number: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " user: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ help_support" + result + "}"; + + case mtpc_contactFound: + result += "\n" + add; + result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ contactFound" + result + "}"; + + case mtpc_future_salts: + result += "\n" + add; + result += " req_msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " now: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " salts: " + mtpTextSerialize(from, end, mtpc_vector, level + 1, mtpc_future_salt) + ",\n" + add; + return "{ future_salts" + result + "}"; + + case mtpc_inputPhotoEmpty: + result = " "; + return "{ inputPhotoEmpty" + result + "}"; + + case mtpc_inputPhoto: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ inputPhoto" + result + "}"; + + case mtpc_chatParticipant: + result += "\n" + add; + result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " inviter_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ chatParticipant" + result + "}"; + + case mtpc_auth_exportedAuthorization: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " bytes: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + return "{ auth_exportedAuthorization" + result + "}"; + + case mtpc_contactStatus: + result += "\n" + add; + result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " expires: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ contactStatus" + result + "}"; + + case mtpc_new_session_created: + result += "\n" + add; + result += " first_msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " unique_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " server_salt: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ new_session_created" + result + "}"; + + case mtpc_geochats_located: + result += "\n" + add; + result += " results: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ messages_statedMessage" + result + "}"; + return "{ geochats_located" + result + "}"; - case mtpc_messages_statedMessageLink: + case mtpc_updatesTooLong: + result = " "; + return "{ updatesTooLong" + result + "}"; + + case mtpc_updateShortMessage: result += "\n" + add; - result += " message: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " links: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " from_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ messages_statedMessageLink" + result + "}"; + return "{ updateShortMessage" + result + "}"; + + case mtpc_updateShortChatMessage: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " from_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ updateShortChatMessage" + result + "}"; + + case mtpc_updateShort: + result += "\n" + add; + result += " update: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ updateShort" + result + "}"; + + case mtpc_updatesCombined: + result += "\n" + add; + result += " updates: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " seq_start: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ updatesCombined" + result + "}"; + + case mtpc_updates: + result += "\n" + add; + result += " updates: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ updates" + result + "}"; + + case mtpc_future_salt: + result += "\n" + add; + result += " valid_since: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " valid_until: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " salt: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ future_salt" + result + "}"; + + case mtpc_server_DH_inner_data: + result += "\n" + add; + result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; + result += " server_nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; + result += " g: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " dh_prime: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " g_a: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " server_time: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ server_DH_inner_data" + result + "}"; + + case mtpc_resPQ: + result += "\n" + add; + result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; + result += " server_nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; + result += " pq: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " server_public_key_fingerprints: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; + return "{ resPQ" + result + "}"; case mtpc_upload_file: result += "\n" + add; @@ -22229,17 +22426,93 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; return "{ inputMediaDocument" + result + "}"; - case mtpc_contact: + case mtpc_documentEmpty: result += "\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " mutual: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ contact" + result + "}"; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ documentEmpty" + result + "}"; - case mtpc_pong: + case mtpc_document: result += "\n" + add; - result += " msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " ping_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ pong" + result + "}"; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " file_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " mime_type: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " size: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " thumb: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " dc_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ document" + result + "}"; + + case mtpc_inputEncryptedFileEmpty: + result = " "; + return "{ inputEncryptedFileEmpty" + result + "}"; + + case mtpc_inputEncryptedFileUploaded: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " parts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " md5_checksum: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " key_fingerprint: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ inputEncryptedFileUploaded" + result + "}"; + + case mtpc_inputEncryptedFile: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ inputEncryptedFile" + result + "}"; + + case mtpc_inputEncryptedFileBigUploaded: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " parts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " key_fingerprint: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ inputEncryptedFileBigUploaded" + result + "}"; + + case mtpc_contacts_found: + result += "\n" + add; + result += " results: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ contacts_found" + result + "}"; + + case mtpc_inputFileLocation: + result += "\n" + add; + result += " volume_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " local_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " secret: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ inputFileLocation" + result + "}"; + + case mtpc_inputVideoFileLocation: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ inputVideoFileLocation" + result + "}"; + + case mtpc_inputEncryptedFileLocation: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ inputEncryptedFileLocation" + result + "}"; + + case mtpc_inputAudioFileLocation: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ inputAudioFileLocation" + result + "}"; + + case mtpc_inputDocumentFileLocation: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ inputDocumentFileLocation" + result + "}"; + + case mtpc_chatFull: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " participants: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " chat_photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " notify_settings: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ chatFull" + result + "}"; case mtpc_chatParticipantsForbidden: result += "\n" + add; @@ -22254,18 +22527,101 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " version: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; return "{ chatParticipants" + result + "}"; - case mtpc_chatParticipant: - result += "\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " inviter_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ chatParticipant" + result + "}"; - - case mtpc_msgs_all_info: + case mtpc_msgs_ack: result += "\n" + add; result += " msg_ids: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; - result += " info: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ msgs_all_info" + result + "}"; + return "{ msgs_ack" + result + "}"; + + case mtpc_userFull: + result += "\n" + add; + result += " user: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " link: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " profile_photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " notify_settings: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " blocked: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " real_first_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " real_last_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ userFull" + result + "}"; + + case mtpc_videoEmpty: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ videoEmpty" + result + "}"; + + case mtpc_video: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " caption: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " duration: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " mime_type: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " size: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " thumb: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " dc_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " w: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " h: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ video" + result + "}"; + + case mtpc_messageEmpty: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ messageEmpty" + result + "}"; + + case mtpc_message: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " from_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " to_id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " out: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " unread: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " media: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ message" + result + "}"; + + case mtpc_messageForwarded: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " fwd_from_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " fwd_date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " from_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " to_id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " out: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " unread: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " media: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ messageForwarded" + result + "}"; + + case mtpc_messageService: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " from_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " to_id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " out: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " unread: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " action: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ messageService" + result + "}"; + + case mtpc_notifyPeer: + result += "\n" + add; + result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ notifyPeer" + result + "}"; + + case mtpc_notifyUsers: + result = " "; + return "{ notifyUsers" + result + "}"; + + case mtpc_notifyChats: + result = " "; + return "{ notifyChats" + result + "}"; + + case mtpc_notifyAll: + result = " "; + return "{ notifyAll" + result + "}"; case mtpc_messages_messageEmpty: result = " "; @@ -22278,42 +22634,38 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; return "{ messages_message" + result + "}"; - case mtpc_nearestDc: + case mtpc_inputPhoneContact: result += "\n" + add; - result += " country: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " this_dc: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " nearest_dc: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ nearestDc" + result + "}"; + result += " client_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " phone: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " first_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " last_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ inputPhoneContact" + result + "}"; - case mtpc_contacts_importedContacts: - result += "\n" + add; - result += " imported: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " retry_contacts: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ contacts_importedContacts" + result + "}"; - - case mtpc_auth_exportedAuthorization: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " bytes: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; - return "{ auth_exportedAuthorization" + result + "}"; - - case mtpc_inputPhotoCropAuto: + case mtpc_rpc_answer_unknown: result = " "; - return "{ inputPhotoCropAuto" + result + "}"; + return "{ rpc_answer_unknown" + result + "}"; - case mtpc_inputPhotoCrop: - result += "\n" + add; - result += " crop_left: " + mtpTextSerialize(from, end, mtpc_double, level + 1) + ",\n" + add; - result += " crop_top: " + mtpTextSerialize(from, end, mtpc_double, level + 1) + ",\n" + add; - result += " crop_width: " + mtpTextSerialize(from, end, mtpc_double, level + 1) + ",\n" + add; - return "{ inputPhotoCrop" + result + "}"; + case mtpc_rpc_answer_dropped_running: + result = " "; + return "{ rpc_answer_dropped_running" + result + "}"; - case mtpc_contactBlocked: + case mtpc_rpc_answer_dropped: result += "\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ contactBlocked" + result + "}"; + result += " msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " seq_no: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " bytes: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ rpc_answer_dropped" + result + "}"; + + case mtpc_inputVideoEmpty: + result = " "; + return "{ inputVideoEmpty" + result + "}"; + + case mtpc_inputVideo: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ inputVideo" + result + "}"; case mtpc_decryptedMessageMediaEmpty: result = " "; @@ -22380,372 +22732,40 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " iv: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; return "{ decryptedMessageMediaAudio" + result + "}"; - case mtpc_encryptedChatEmpty: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ encryptedChatEmpty" + result + "}"; - - case mtpc_encryptedChatWaiting: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " admin_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " participant_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ encryptedChatWaiting" + result + "}"; - - case mtpc_encryptedChatRequested: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " admin_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " participant_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " g_a: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; - return "{ encryptedChatRequested" + result + "}"; - - case mtpc_encryptedChat: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " admin_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " participant_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " g_a_or_b: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; - result += " key_fingerprint: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ encryptedChat" + result + "}"; - - case mtpc_encryptedChatDiscarded: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ encryptedChatDiscarded" + result + "}"; - - case mtpc_server_DH_inner_data: - result += "\n" + add; - result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - result += " server_nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - result += " g: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " dh_prime: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " g_a: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " server_time: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ server_DH_inner_data" + result + "}"; - - case mtpc_bad_msg_notification: - result += "\n" + add; - result += " bad_msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " bad_msg_seqno: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " error_code: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ bad_msg_notification" + result + "}"; - - case mtpc_bad_server_salt: - result += "\n" + add; - result += " bad_msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " bad_msg_seqno: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " error_code: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " new_server_salt: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ bad_server_salt" + result + "}"; - - case mtpc_dcOption: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " hostname: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " ip_address: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " port: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ dcOption" + result + "}"; - - case mtpc_chatFull: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " participants: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " chat_photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " notify_settings: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ chatFull" + result + "}"; - - case mtpc_p_q_inner_data: - result += "\n" + add; - result += " pq: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " p: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " q: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - result += " server_nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - result += " new_nonce: " + mtpTextSerialize(from, end, mtpc_int256, level + 1) + ",\n" + add; - return "{ p_q_inner_data" + result + "}"; - - case mtpc_msgs_state_req: - result += "\n" + add; - result += " msg_ids: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; - return "{ msgs_state_req" + result + "}"; - - case mtpc_chatLocated: + case mtpc_geoChatMessageEmpty: result += "\n" + add; result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " distance: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ chatLocated" + result + "}"; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ geoChatMessageEmpty" + result + "}"; - case mtpc_future_salt: + case mtpc_geoChatMessage: result += "\n" + add; - result += " valid_since: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " valid_until: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " salt: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ future_salt" + result + "}"; - - case mtpc_decryptedMessage: - result += "\n" + add; - result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " random_bytes: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " from_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; result += " message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; result += " media: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ decryptedMessage" + result + "}"; + return "{ geoChatMessage" + result + "}"; - case mtpc_decryptedMessageService: + case mtpc_geoChatMessageService: result += "\n" + add; - result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " random_bytes: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " from_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; result += " action: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ decryptedMessageService" + result + "}"; + return "{ geoChatMessageService" + result + "}"; - case mtpc_inputAudioEmpty: + case mtpc_geoPointEmpty: result = " "; - return "{ inputAudioEmpty" + result + "}"; + return "{ geoPointEmpty" + result + "}"; - case mtpc_inputAudio: + case mtpc_geoPoint: result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ inputAudio" + result + "}"; - - case mtpc_encryptedMessage: - result += "\n" + add; - result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " bytes: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; - result += " file: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ encryptedMessage" + result + "}"; - - case mtpc_encryptedMessageService: - result += "\n" + add; - result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " bytes: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; - return "{ encryptedMessageService" + result + "}"; - - case mtpc_geochats_messages: - result += "\n" + add; - result += " messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ geochats_messages" + result + "}"; - - case mtpc_geochats_messagesSlice: - result += "\n" + add; - result += " count: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ geochats_messagesSlice" + result + "}"; - - case mtpc_updates_differenceEmpty: - result += "\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ updates_differenceEmpty" + result + "}"; - - case mtpc_updates_difference: - result += "\n" + add; - result += " new_messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " new_encrypted_messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " other_updates: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " state: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ updates_difference" + result + "}"; - - case mtpc_updates_differenceSlice: - result += "\n" + add; - result += " new_messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " new_encrypted_messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " other_updates: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " intermediate_state: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ updates_differenceSlice" + result + "}"; - - case mtpc_userEmpty: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ userEmpty" + result + "}"; - - case mtpc_userSelf: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " first_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " last_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " phone: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " status: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " inactive: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ userSelf" + result + "}"; - - case mtpc_userContact: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " first_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " last_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " phone: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " status: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ userContact" + result + "}"; - - case mtpc_userRequest: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " first_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " last_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " phone: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " status: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ userRequest" + result + "}"; - - case mtpc_userForeign: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " first_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " last_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " status: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ userForeign" + result + "}"; - - case mtpc_userDeleted: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " first_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " last_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ userDeleted" + result + "}"; - - case mtpc_new_session_created: - result += "\n" + add; - result += " first_msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " unique_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " server_salt: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ new_session_created" + result + "}"; - - case mtpc_inputPhotoEmpty: - result = " "; - return "{ inputPhotoEmpty" + result + "}"; - - case mtpc_inputPhoto: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ inputPhoto" + result + "}"; - - case mtpc_geochats_statedMessage: - result += "\n" + add; - result += " message: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ geochats_statedMessage" + result + "}"; - - case mtpc_inputMessagesFilterEmpty: - result = " "; - return "{ inputMessagesFilterEmpty" + result + "}"; - - case mtpc_inputMessagesFilterPhotos: - result = " "; - return "{ inputMessagesFilterPhotos" + result + "}"; - - case mtpc_inputMessagesFilterVideo: - result = " "; - return "{ inputMessagesFilterVideo" + result + "}"; - - case mtpc_inputMessagesFilterPhotoVideo: - result = " "; - return "{ inputMessagesFilterPhotoVideo" + result + "}"; - - case mtpc_inputMessagesFilterDocument: - result = " "; - return "{ inputMessagesFilterDocument" + result + "}"; - - case mtpc_peerUser: - result += "\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ peerUser" + result + "}"; - - case mtpc_peerChat: - result += "\n" + add; - result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ peerChat" + result + "}"; - - case mtpc_notifyPeer: - result += "\n" + add; - result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ notifyPeer" + result + "}"; - - case mtpc_notifyUsers: - result = " "; - return "{ notifyUsers" + result + "}"; - - case mtpc_notifyChats: - result = " "; - return "{ notifyChats" + result + "}"; - - case mtpc_notifyAll: - result = " "; - return "{ notifyAll" + result + "}"; - - case mtpc_messages_sentMessage: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ messages_sentMessage" + result + "}"; - - case mtpc_messages_sentMessageLink: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " links: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ messages_sentMessageLink" + result + "}"; - - case mtpc_inputFile: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " parts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " md5_checksum: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ inputFile" + result + "}"; - - case mtpc_inputFileBig: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " parts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ inputFileBig" + result + "}"; - - case mtpc_inputAppEvent: - result += "\n" + add; - result += " time: " + mtpTextSerialize(from, end, mtpc_double, level + 1) + ",\n" + add; - result += " type: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " peer: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " data: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ inputAppEvent" + result + "}"; - - case mtpc_geochats_located: - result += "\n" + add; - result += " results: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ geochats_located" + result + "}"; + result += " long: " + mtpTextSerialize(from, end, mtpc_double, level + 1) + ",\n" + add; + result += " lat: " + mtpTextSerialize(from, end, mtpc_double, level + 1) + ",\n" + add; + return "{ geoPoint" + result + "}"; case mtpc_messages_dialogs: result += "\n" + add; @@ -22764,76 +22784,102 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; return "{ messages_dialogsSlice" + result + "}"; - case mtpc_contacts_myLinkEmpty: + case mtpc_messages_dhConfigNotModified: + result += "\n" + add; + result += " random: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + return "{ messages_dhConfigNotModified" + result + "}"; + + case mtpc_messages_dhConfig: + result += "\n" + add; + result += " g: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " p: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + result += " version: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " random: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + return "{ messages_dhConfig" + result + "}"; + + case mtpc_peerUser: + result += "\n" + add; + result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ peerUser" + result + "}"; + + case mtpc_peerChat: + result += "\n" + add; + result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ peerChat" + result + "}"; + + case mtpc_server_DH_params_fail: + result += "\n" + add; + result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; + result += " server_nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; + result += " new_nonce_hash: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; + return "{ server_DH_params_fail" + result + "}"; + + case mtpc_server_DH_params_ok: + result += "\n" + add; + result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; + result += " server_nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; + result += " encrypted_answer: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ server_DH_params_ok" + result + "}"; + + case mtpc_inputAppEvent: + result += "\n" + add; + result += " time: " + mtpTextSerialize(from, end, mtpc_double, level + 1) + ",\n" + add; + result += " type: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " peer: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " data: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ inputAppEvent" + result + "}"; + + case mtpc_photos_photo: + result += "\n" + add; + result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ photos_photo" + result + "}"; + + case mtpc_peerNotifyEventsEmpty: result = " "; - return "{ contacts_myLinkEmpty" + result + "}"; + return "{ peerNotifyEventsEmpty" + result + "}"; - case mtpc_contacts_myLinkRequested: - result += "\n" + add; - result += " contact: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ contacts_myLinkRequested" + result + "}"; - - case mtpc_contacts_myLinkContact: + case mtpc_peerNotifyEventsAll: result = " "; - return "{ contacts_myLinkContact" + result + "}"; + return "{ peerNotifyEventsAll" + result + "}"; - case mtpc_inputPeerNotifySettings: + case mtpc_nearestDc: result += "\n" + add; - result += " mute_until: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " sound: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " show_previews: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " events_mask: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ inputPeerNotifySettings" + result + "}"; + result += " country: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " this_dc: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " nearest_dc: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ nearestDc" + result + "}"; - case mtpc_chatPhotoEmpty: - result = " "; - return "{ chatPhotoEmpty" + result + "}"; - - case mtpc_chatPhoto: + case mtpc_wallPaper: result += "\n" + add; - result += " photo_small: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " photo_big: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ chatPhoto" + result + "}"; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " sizes: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " color: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ wallPaper" + result + "}"; - case mtpc_messages_sentEncryptedMessage: + case mtpc_wallPaperSolid: result += "\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ messages_sentEncryptedMessage" + result + "}"; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " bg_color: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " color: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ wallPaperSolid" + result + "}"; - case mtpc_messages_sentEncryptedFile: + case mtpc_geochats_messages: result += "\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " file: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ messages_sentEncryptedFile" + result + "}"; + result += " messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ geochats_messages" + result + "}"; - case mtpc_decryptedMessageActionSetMessageTTL: + case mtpc_geochats_messagesSlice: result += "\n" + add; - result += " ttl_seconds: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ decryptedMessageActionSetMessageTTL" + result + "}"; - - case mtpc_decryptedMessageActionReadMessages: - result += "\n" + add; - result += " random_ids: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; - return "{ decryptedMessageActionReadMessages" + result + "}"; - - case mtpc_decryptedMessageActionDeleteMessages: - result += "\n" + add; - result += " random_ids: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; - return "{ decryptedMessageActionDeleteMessages" + result + "}"; - - case mtpc_decryptedMessageActionScreenshotMessages: - result += "\n" + add; - result += " random_ids: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; - return "{ decryptedMessageActionScreenshotMessages" + result + "}"; - - case mtpc_decryptedMessageActionFlushHistory: - result = " "; - return "{ decryptedMessageActionFlushHistory" + result + "}"; - - case mtpc_decryptedMessageActionNotifyLayer: - result += "\n" + add; - result += " layer: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ decryptedMessageActionNotifyLayer" + result + "}"; + result += " count: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ geochats_messagesSlice" + result + "}"; case mtpc_contacts_blocked: result += "\n" + add; @@ -22848,51 +22894,24 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; return "{ contacts_blockedSlice" + result + "}"; - case mtpc_photoEmpty: + case mtpc_messages_statedMessage: result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ photoEmpty" + result + "}"; - - case mtpc_photo: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " caption: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " geo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " sizes: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ photo" + result + "}"; - - case mtpc_decryptedMessageLayer: - result += "\n" + add; - result += " layer: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; result += " message: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ decryptedMessageLayer" + result + "}"; + result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ messages_statedMessage" + result + "}"; - case mtpc_encryptedFileEmpty: - result = " "; - return "{ encryptedFileEmpty" + result + "}"; - - case mtpc_encryptedFile: + case mtpc_messages_statedMessageLink: result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " size: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " dc_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " key_fingerprint: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ encryptedFile" + result + "}"; - - case mtpc_userFull: - result += "\n" + add; - result += " user: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " link: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " profile_photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " notify_settings: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " blocked: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " real_first_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " real_last_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ userFull" + result + "}"; + result += " message: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " links: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ messages_statedMessageLink" + result + "}"; case mtpc_messageMediaEmpty: result = " "; @@ -22936,67 +22955,49 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " audio: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; return "{ messageMediaAudio" + result + "}"; - case mtpc_help_inviteText: + case mtpc_inputGeoChat: result += "\n" + add; - result += " message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ help_inviteText" + result + "}"; + result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ inputGeoChat" + result + "}"; - case mtpc_contactStatus: - result += "\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " expires: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ contactStatus" + result + "}"; - - case mtpc_messageEmpty: + case mtpc_help_appUpdate: result += "\n" + add; result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ messageEmpty" + result + "}"; + result += " critical: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " url: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " text: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ help_appUpdate" + result + "}"; - case mtpc_message: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " from_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " to_id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " out: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " unread: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " media: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ message" + result + "}"; + case mtpc_help_noAppUpdate: + result = " "; + return "{ help_noAppUpdate" + result + "}"; - case mtpc_messageForwarded: + case mtpc_updates_differenceEmpty: result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " fwd_from_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " fwd_date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " from_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " to_id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " out: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " unread: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " media: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ messageForwarded" + result + "}"; - - case mtpc_messageService: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " from_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " to_id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " out: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " unread: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " action: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ messageService" + result + "}"; - - case mtpc_updates_state: - result += "\n" + add; - result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " qts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " unread_count: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ updates_state" + result + "}"; + return "{ updates_differenceEmpty" + result + "}"; + + case mtpc_updates_difference: + result += "\n" + add; + result += " new_messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " new_encrypted_messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " other_updates: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " state: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ updates_difference" + result + "}"; + + case mtpc_updates_differenceSlice: + result += "\n" + add; + result += " new_messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " new_encrypted_messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " other_updates: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " intermediate_state: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ updates_differenceSlice" + result + "}"; case mtpc_msgs_state_info: result += "\n" + add; @@ -23004,11 +23005,249 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " info: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; return "{ msgs_state_info" + result + "}"; - case mtpc_help_support: + case mtpc_msgs_state_req: result += "\n" + add; - result += " phone_number: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " user: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ help_support" + result + "}"; + result += " msg_ids: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; + return "{ msgs_state_req" + result + "}"; + + case mtpc_msg_resend_req: + result += "\n" + add; + result += " msg_ids: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; + return "{ msg_resend_req" + result + "}"; + + case mtpc_inputDocumentEmpty: + result = " "; + return "{ inputDocumentEmpty" + result + "}"; + + case mtpc_inputDocument: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ inputDocument" + result + "}"; + + case mtpc_userStatusEmpty: + result = " "; + return "{ userStatusEmpty" + result + "}"; + + case mtpc_userStatusOnline: + result += "\n" + add; + result += " expires: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ userStatusOnline" + result + "}"; + + case mtpc_userStatusOffline: + result += "\n" + add; + result += " was_online: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ userStatusOffline" + result + "}"; + + case mtpc_photos_photos: + result += "\n" + add; + result += " photos: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ photos_photos" + result + "}"; + + case mtpc_photos_photosSlice: + result += "\n" + add; + result += " count: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " photos: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ photos_photosSlice" + result + "}"; + + case mtpc_decryptedMessage: + result += "\n" + add; + result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " random_bytes: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + result += " message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " media: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ decryptedMessage" + result + "}"; + + case mtpc_decryptedMessageService: + result += "\n" + add; + result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " random_bytes: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + result += " action: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ decryptedMessageService" + result + "}"; + + case mtpc_contacts_importedContacts: + result += "\n" + add; + result += " imported: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " retry_contacts: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ contacts_importedContacts" + result + "}"; + + case mtpc_fileLocationUnavailable: + result += "\n" + add; + result += " volume_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " local_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " secret: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ fileLocationUnavailable" + result + "}"; + + case mtpc_fileLocation: + result += "\n" + add; + result += " dc_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " volume_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " local_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " secret: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ fileLocation" + result + "}"; + + case mtpc_photoSizeEmpty: + result += "\n" + add; + result += " type: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ photoSizeEmpty" + result + "}"; + + case mtpc_photoSize: + result += "\n" + add; + result += " type: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " location: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " w: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " h: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " size: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ photoSize" + result + "}"; + + case mtpc_photoCachedSize: + result += "\n" + add; + result += " type: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " location: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " w: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " h: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " bytes: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + return "{ photoCachedSize" + result + "}"; + + case mtpc_msg_detailed_info: + result += "\n" + add; + result += " msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " answer_msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " bytes: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " status: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ msg_detailed_info" + result + "}"; + + case mtpc_msg_new_detailed_info: + result += "\n" + add; + result += " answer_msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " bytes: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " status: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ msg_new_detailed_info" + result + "}"; + + case mtpc_inputChatPhotoEmpty: + result = " "; + return "{ inputChatPhotoEmpty" + result + "}"; + + case mtpc_inputChatUploadedPhoto: + result += "\n" + add; + result += " file: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " crop: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ inputChatUploadedPhoto" + result + "}"; + + case mtpc_inputChatPhoto: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " crop: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ inputChatPhoto" + result + "}"; + + case mtpc_messages_sentMessage: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ messages_sentMessage" + result + "}"; + + case mtpc_messages_sentMessageLink: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " links: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ messages_sentMessageLink" + result + "}"; + + case mtpc_messages_chatFull: + result += "\n" + add; + result += " full_chat: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ messages_chatFull" + result + "}"; + + case mtpc_geochats_statedMessage: + result += "\n" + add; + result += " message: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ geochats_statedMessage" + result + "}"; + + case mtpc_chatPhotoEmpty: + result = " "; + return "{ chatPhotoEmpty" + result + "}"; + + case mtpc_chatPhoto: + result += "\n" + add; + result += " photo_small: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " photo_big: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ chatPhoto" + result + "}"; + + case mtpc_encryptedMessage: + result += "\n" + add; + result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " bytes: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + result += " file: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ encryptedMessage" + result + "}"; + + case mtpc_encryptedMessageService: + result += "\n" + add; + result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " bytes: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + return "{ encryptedMessageService" + result + "}"; + + case mtpc_destroy_session_ok: + result += "\n" + add; + result += " session_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ destroy_session_ok" + result + "}"; + + case mtpc_destroy_session_none: + result += "\n" + add; + result += " session_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ destroy_session_none" + result + "}"; + + case mtpc_http_wait: + result += "\n" + add; + result += " max_delay: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " wait_after: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " max_wait: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ http_wait" + result + "}"; + + case mtpc_messages_sentEncryptedMessage: + result += "\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ messages_sentEncryptedMessage" + result + "}"; + + case mtpc_messages_sentEncryptedFile: + result += "\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " file: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ messages_sentEncryptedFile" + result + "}"; + + case mtpc_contacts_myLinkEmpty: + result = " "; + return "{ contacts_myLinkEmpty" + result + "}"; + + case mtpc_contacts_myLinkRequested: + result += "\n" + add; + result += " contact: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ contacts_myLinkRequested" + result + "}"; + + case mtpc_contacts_myLinkContact: + result = " "; + return "{ contacts_myLinkContact" + result + "}"; + + case mtpc_inputEncryptedChat: + result += "\n" + add; + result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ inputEncryptedChat" + result + "}"; case mtpc_messages_chats: result += "\n" + add; @@ -23016,28 +23255,219 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; return "{ messages_chats" + result + "}"; - case mtpc_msgs_ack: + case mtpc_encryptedChatEmpty: result += "\n" + add; - result += " msg_ids: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; - return "{ msgs_ack" + result + "}"; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ encryptedChatEmpty" + result + "}"; - case mtpc_messages_dhConfigNotModified: + case mtpc_encryptedChatWaiting: result += "\n" + add; - result += " random: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; - return "{ messages_dhConfigNotModified" + result + "}"; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " admin_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " participant_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ encryptedChatWaiting" + result + "}"; - case mtpc_messages_dhConfig: + case mtpc_encryptedChatRequested: result += "\n" + add; - result += " g: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " p: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; - result += " version: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " random: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; - return "{ messages_dhConfig" + result + "}"; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " admin_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " participant_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " g_a: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + return "{ encryptedChatRequested" + result + "}"; - case mtpc_contactFound: + case mtpc_encryptedChat: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " admin_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " participant_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " g_a_or_b: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + result += " key_fingerprint: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ encryptedChat" + result + "}"; + + case mtpc_encryptedChatDiscarded: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ encryptedChatDiscarded" + result + "}"; + + case mtpc_messages_messages: + result += "\n" + add; + result += " messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ messages_messages" + result + "}"; + + case mtpc_messages_messagesSlice: + result += "\n" + add; + result += " count: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ messages_messagesSlice" + result + "}"; + + case mtpc_auth_checkedPhone: + result += "\n" + add; + result += " phone_registered: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " phone_invited: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ auth_checkedPhone" + result + "}"; + + case mtpc_contactSuggested: result += "\n" + add; result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ contactFound" + result + "}"; + result += " mutual_contacts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ contactSuggested" + result + "}"; + + case mtpc_contacts_foreignLinkUnknown: + result = " "; + return "{ contacts_foreignLinkUnknown" + result + "}"; + + case mtpc_contacts_foreignLinkRequested: + result += "\n" + add; + result += " has_phone: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ contacts_foreignLinkRequested" + result + "}"; + + case mtpc_contacts_foreignLinkMutual: + result = " "; + return "{ contacts_foreignLinkMutual" + result + "}"; + + case mtpc_inputAudioEmpty: + result = " "; + return "{ inputAudioEmpty" + result + "}"; + + case mtpc_inputAudio: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ inputAudio" + result + "}"; + + case mtpc_contacts_contacts: + result += "\n" + add; + result += " contacts: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ contacts_contacts" + result + "}"; + + case mtpc_contacts_contactsNotModified: + result = " "; + return "{ contacts_contactsNotModified" + result + "}"; + + case mtpc_chatEmpty: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ chatEmpty" + result + "}"; + + case mtpc_chat: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " participants_count: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " left: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " version: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ chat" + result + "}"; + + case mtpc_chatForbidden: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ chatForbidden" + result + "}"; + + case mtpc_geoChat: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " address: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " venue: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " geo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " participants_count: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " checked_in: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " version: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ geoChat" + result + "}"; + + case mtpc_pong: + result += "\n" + add; + result += " msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " ping_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ pong" + result + "}"; + + case mtpc_inputPeerNotifyEventsEmpty: + result = " "; + return "{ inputPeerNotifyEventsEmpty" + result + "}"; + + case mtpc_inputPeerNotifyEventsAll: + result = " "; + return "{ inputPeerNotifyEventsAll" + result + "}"; + + case mtpc_inputPeerNotifySettings: + result += "\n" + add; + result += " mute_until: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " sound: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " show_previews: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " events_mask: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ inputPeerNotifySettings" + result + "}"; + + case mtpc_messages_affectedHistory: + result += "\n" + add; + result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ messages_affectedHistory" + result + "}"; + + case mtpc_inputNotifyPeer: + result += "\n" + add; + result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ inputNotifyPeer" + result + "}"; + + case mtpc_inputNotifyUsers: + result = " "; + return "{ inputNotifyUsers" + result + "}"; + + case mtpc_inputNotifyChats: + result = " "; + return "{ inputNotifyChats" + result + "}"; + + case mtpc_inputNotifyAll: + result = " "; + return "{ inputNotifyAll" + result + "}"; + + case mtpc_inputNotifyGeoChatPeer: + result += "\n" + add; + result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ inputNotifyGeoChatPeer" + result + "}"; + + case mtpc_bad_msg_notification: + result += "\n" + add; + result += " bad_msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " bad_msg_seqno: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " error_code: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ bad_msg_notification" + result + "}"; + + case mtpc_bad_server_salt: + result += "\n" + add; + result += " bad_msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " bad_msg_seqno: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " error_code: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " new_server_salt: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ bad_server_salt" + result + "}"; + + case mtpc_config: + result += "\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " test_mode: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " this_dc: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " dc_options: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " chat_size_max: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " broadcast_size_max: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ config" + result + "}"; case mtpc_inputGeoPointEmpty: result = " "; @@ -23068,26 +23498,6 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; return "{ inputUserForeign" + result + "}"; - case mtpc_rpc_error: - result += "\n" + add; - result += " error_code: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " error_message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ rpc_error" + result + "}"; - - case mtpc_contacts_suggested: - result += "\n" + add; - result += " results: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ contacts_suggested" + result + "}"; - - case mtpc_client_DH_inner_data: - result += "\n" + add; - result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - result += " server_nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - result += " retry_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " g_b: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ client_DH_inner_data" + result + "}"; - case mtpc_dialog: result += "\n" + add; result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; @@ -23096,338 +23506,19 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " notify_settings: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; return "{ dialog" + result + "}"; - case mtpc_inputEncryptedFileEmpty: - result = " "; - return "{ inputEncryptedFileEmpty" + result + "}"; - - case mtpc_inputEncryptedFileUploaded: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " parts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " md5_checksum: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " key_fingerprint: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ inputEncryptedFileUploaded" + result + "}"; - - case mtpc_inputEncryptedFile: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ inputEncryptedFile" + result + "}"; - - case mtpc_inputEncryptedFileBigUploaded: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " parts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " key_fingerprint: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ inputEncryptedFileBigUploaded" + result + "}"; - - case mtpc_auth_checkedPhone: - result += "\n" + add; - result += " phone_registered: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " phone_invited: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ auth_checkedPhone" + result + "}"; - - case mtpc_contactSuggested: + case mtpc_importedContact: result += "\n" + add; result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " mutual_contacts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ contactSuggested" + result + "}"; + result += " client_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ importedContact" + result + "}"; - case mtpc_photoSizeEmpty: - result += "\n" + add; - result += " type: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ photoSizeEmpty" + result + "}"; - - case mtpc_photoSize: - result += "\n" + add; - result += " type: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " location: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " w: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " h: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " size: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ photoSize" + result + "}"; - - case mtpc_photoCachedSize: - result += "\n" + add; - result += " type: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " location: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " w: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " h: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " bytes: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; - return "{ photoCachedSize" + result + "}"; - - case mtpc_rpc_answer_unknown: - result = " "; - return "{ rpc_answer_unknown" + result + "}"; - - case mtpc_rpc_answer_dropped_running: - result = " "; - return "{ rpc_answer_dropped_running" + result + "}"; - - case mtpc_rpc_answer_dropped: - result += "\n" + add; - result += " msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " seq_no: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " bytes: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ rpc_answer_dropped" + result + "}"; - - case mtpc_inputNotifyPeer: - result += "\n" + add; - result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ inputNotifyPeer" + result + "}"; - - case mtpc_inputNotifyUsers: - result = " "; - return "{ inputNotifyUsers" + result + "}"; - - case mtpc_inputNotifyChats: - result = " "; - return "{ inputNotifyChats" + result + "}"; - - case mtpc_inputNotifyAll: - result = " "; - return "{ inputNotifyAll" + result + "}"; - - case mtpc_inputNotifyGeoChatPeer: - result += "\n" + add; - result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ inputNotifyGeoChatPeer" + result + "}"; - - case mtpc_geoPointEmpty: - result = " "; - return "{ geoPointEmpty" + result + "}"; - - case mtpc_geoPoint: - result += "\n" + add; - result += " long: " + mtpTextSerialize(from, end, mtpc_double, level + 1) + ",\n" + add; - result += " lat: " + mtpTextSerialize(from, end, mtpc_double, level + 1) + ",\n" + add; - return "{ geoPoint" + result + "}"; - - case mtpc_photos_photo: - result += "\n" + add; - result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ photos_photo" + result + "}"; - - case mtpc_userStatusEmpty: - result = " "; - return "{ userStatusEmpty" + result + "}"; - - case mtpc_userStatusOnline: - result += "\n" + add; - result += " expires: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ userStatusOnline" + result + "}"; - - case mtpc_userStatusOffline: - result += "\n" + add; - result += " was_online: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ userStatusOffline" + result + "}"; - - case mtpc_contacts_found: - result += "\n" + add; - result += " results: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ contacts_found" + result + "}"; - - case mtpc_contacts_contacts: - result += "\n" + add; - result += " contacts: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ contacts_contacts" + result + "}"; - - case mtpc_contacts_contactsNotModified: - result = " "; - return "{ contacts_contactsNotModified" + result + "}"; - - case mtpc_userProfilePhotoEmpty: - result = " "; - return "{ userProfilePhotoEmpty" + result + "}"; - - case mtpc_userProfilePhoto: - result += "\n" + add; - result += " photo_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " photo_small: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " photo_big: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ userProfilePhoto" + result + "}"; - - case mtpc_messageActionEmpty: - result = " "; - return "{ messageActionEmpty" + result + "}"; - - case mtpc_messageActionChatCreate: - result += "\n" + add; - result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_int) + ",\n" + add; - return "{ messageActionChatCreate" + result + "}"; - - case mtpc_messageActionChatEditTitle: - result += "\n" + add; - result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ messageActionChatEditTitle" + result + "}"; - - case mtpc_messageActionChatEditPhoto: - result += "\n" + add; - result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ messageActionChatEditPhoto" + result + "}"; - - case mtpc_messageActionChatDeletePhoto: - result = " "; - return "{ messageActionChatDeletePhoto" + result + "}"; - - case mtpc_messageActionChatAddUser: - result += "\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ messageActionChatAddUser" + result + "}"; - - case mtpc_messageActionChatDeleteUser: - result += "\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ messageActionChatDeleteUser" + result + "}"; - - case mtpc_messageActionGeoChatCreate: - result += "\n" + add; - result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " address: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ messageActionGeoChatCreate" + result + "}"; - - case mtpc_messageActionGeoChatCheckin: - result = " "; - return "{ messageActionGeoChatCheckin" + result + "}"; - - case mtpc_messages_statedMessages: - result += "\n" + add; - result += " messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ messages_statedMessages" + result + "}"; - - case mtpc_messages_statedMessagesLinks: - result += "\n" + add; - result += " messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " links: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ messages_statedMessagesLinks" + result + "}"; - - case mtpc_wallPaper: + case mtpc_dcOption: result += "\n" + add; result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " sizes: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " color: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ wallPaper" + result + "}"; - - case mtpc_wallPaperSolid: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " bg_color: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " color: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ wallPaperSolid" + result + "}"; - - case mtpc_inputEncryptedChat: - result += "\n" + add; - result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ inputEncryptedChat" + result + "}"; - - case mtpc_updatesTooLong: - result = " "; - return "{ updatesTooLong" + result + "}"; - - case mtpc_updateShortMessage: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " from_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ updateShortMessage" + result + "}"; - - case mtpc_updateShortChatMessage: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " from_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ updateShortChatMessage" + result + "}"; - - case mtpc_updateShort: - result += "\n" + add; - result += " update: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ updateShort" + result + "}"; - - case mtpc_updatesCombined: - result += "\n" + add; - result += " updates: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " seq_start: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ updatesCombined" + result + "}"; - - case mtpc_updates: - result += "\n" + add; - result += " updates: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ updates" + result + "}"; - - case mtpc_videoEmpty: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ videoEmpty" + result + "}"; - - case mtpc_video: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " caption: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " duration: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " mime_type: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " size: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " thumb: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " dc_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " w: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " h: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ video" + result + "}"; - - case mtpc_inputPeerNotifyEventsEmpty: - result = " "; - return "{ inputPeerNotifyEventsEmpty" + result + "}"; - - case mtpc_inputPeerNotifyEventsAll: - result = " "; - return "{ inputPeerNotifyEventsAll" + result + "}"; - - case mtpc_messages_messages: - result += "\n" + add; - result += " messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ messages_messages" + result + "}"; - - case mtpc_messages_messagesSlice: - result += "\n" + add; - result += " count: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ messages_messagesSlice" + result + "}"; + result += " hostname: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " ip_address: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " port: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ dcOption" + result + "}"; case mtpc_updateNewMessage: result += "\n" + add; @@ -23583,6 +23674,170 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " notify_settings: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; return "{ updateNotifySettings" + result + "}"; + case mtpc_decryptedMessageActionSetMessageTTL: + result += "\n" + add; + result += " ttl_seconds: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ decryptedMessageActionSetMessageTTL" + result + "}"; + + case mtpc_decryptedMessageActionReadMessages: + result += "\n" + add; + result += " random_ids: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; + return "{ decryptedMessageActionReadMessages" + result + "}"; + + case mtpc_decryptedMessageActionDeleteMessages: + result += "\n" + add; + result += " random_ids: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; + return "{ decryptedMessageActionDeleteMessages" + result + "}"; + + case mtpc_decryptedMessageActionScreenshotMessages: + result += "\n" + add; + result += " random_ids: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; + return "{ decryptedMessageActionScreenshotMessages" + result + "}"; + + case mtpc_decryptedMessageActionFlushHistory: + result = " "; + return "{ decryptedMessageActionFlushHistory" + result + "}"; + + case mtpc_decryptedMessageActionNotifyLayer: + result += "\n" + add; + result += " layer: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ decryptedMessageActionNotifyLayer" + result + "}"; + + case mtpc_peerNotifySettingsEmpty: + result = " "; + return "{ peerNotifySettingsEmpty" + result + "}"; + + case mtpc_peerNotifySettings: + result += "\n" + add; + result += " mute_until: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " sound: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " show_previews: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " events_mask: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ peerNotifySettings" + result + "}"; + + case mtpc_userEmpty: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ userEmpty" + result + "}"; + + case mtpc_userSelf: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " first_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " last_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " phone: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " status: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " inactive: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ userSelf" + result + "}"; + + case mtpc_userContact: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " first_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " last_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " phone: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " status: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ userContact" + result + "}"; + + case mtpc_userRequest: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " first_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " last_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " phone: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " status: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ userRequest" + result + "}"; + + case mtpc_userForeign: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " first_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " last_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " status: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ userForeign" + result + "}"; + + case mtpc_userDeleted: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " first_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " last_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ userDeleted" + result + "}"; + + case mtpc_contacts_suggested: + result += "\n" + add; + result += " results: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ contacts_suggested" + result + "}"; + + case mtpc_auth_authorization: + result += "\n" + add; + result += " expires: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " user: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ auth_authorization" + result + "}"; + + case mtpc_messages_chat: + result += "\n" + add; + result += " chat: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ messages_chat" + result + "}"; + + case mtpc_auth_sentCode: + result += "\n" + add; + result += " phone_registered: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " phone_code_hash: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " send_call_timeout: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " is_password: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ auth_sentCode" + result + "}"; + + case mtpc_audioEmpty: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ audioEmpty" + result + "}"; + + case mtpc_audio: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " duration: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " mime_type: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " size: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " dc_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ audio" + result + "}"; + + case mtpc_messages_statedMessages: + result += "\n" + add; + result += " messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ messages_statedMessages" + result + "}"; + + case mtpc_messages_statedMessagesLinks: + result += "\n" + add; + result += " messages: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " chats: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " links: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ messages_statedMessagesLinks" + result + "}"; + + case mtpc_contactBlocked: + result += "\n" + add; + result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ contactBlocked" + result + "}"; + case mtpc_storage_fileUnknown: result = " "; return "{ storage_fileUnknown" + result + "}"; @@ -23623,551 +23878,62 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result = " "; return "{ storage_fileWebp" + result + "}"; - case mtpc_documentEmpty: + case mtpc_help_inviteText: result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ documentEmpty" + result + "}"; - - case mtpc_document: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " file_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " mime_type: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " size: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " thumb: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " dc_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ document" + result + "}"; - - case mtpc_resPQ: - result += "\n" + add; - result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - result += " server_nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - result += " pq: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " server_public_key_fingerprints: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; - return "{ resPQ" + result + "}"; - - case mtpc_audioEmpty: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ audioEmpty" + result + "}"; - - case mtpc_audio: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " duration: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " mime_type: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " size: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " dc_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ audio" + result + "}"; - - case mtpc_fileLocationUnavailable: - result += "\n" + add; - result += " volume_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " local_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " secret: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ fileLocationUnavailable" + result + "}"; - - case mtpc_fileLocation: - result += "\n" + add; - result += " dc_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " volume_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " local_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " secret: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ fileLocation" + result + "}"; - - case mtpc_contacts_foreignLinkUnknown: - result = " "; - return "{ contacts_foreignLinkUnknown" + result + "}"; - - case mtpc_contacts_foreignLinkRequested: - result += "\n" + add; - result += " has_phone: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ contacts_foreignLinkRequested" + result + "}"; - - case mtpc_contacts_foreignLinkMutual: - result = " "; - return "{ contacts_foreignLinkMutual" + result + "}"; - - case mtpc_inputVideoEmpty: - result = " "; - return "{ inputVideoEmpty" + result + "}"; - - case mtpc_inputVideo: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ inputVideo" + result + "}"; - - case mtpc_peerNotifySettingsEmpty: - result = " "; - return "{ peerNotifySettingsEmpty" + result + "}"; - - case mtpc_peerNotifySettings: - result += "\n" + add; - result += " mute_until: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " sound: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " show_previews: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " events_mask: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ peerNotifySettings" + result + "}"; - - case mtpc_auth_sentCode: - result += "\n" + add; - result += " phone_registered: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " phone_code_hash: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " send_call_timeout: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " is_password: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ auth_sentCode" + result + "}"; - - case mtpc_inputGeoChat: - result += "\n" + add; - result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ inputGeoChat" + result + "}"; - - case mtpc_destroy_session_ok: - result += "\n" + add; - result += " session_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ destroy_session_ok" + result + "}"; - - case mtpc_destroy_session_none: - result += "\n" + add; - result += " session_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ destroy_session_none" + result + "}"; - - case mtpc_server_DH_params_fail: - result += "\n" + add; - result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - result += " server_nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - result += " new_nonce_hash: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - return "{ server_DH_params_fail" + result + "}"; - - case mtpc_server_DH_params_ok: - result += "\n" + add; - result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - result += " server_nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - result += " encrypted_answer: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ server_DH_params_ok" + result + "}"; - - case mtpc_auth_authorization: - result += "\n" + add; - result += " expires: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " user: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ auth_authorization" + result + "}"; - - case mtpc_future_salts: - result += "\n" + add; - result += " req_msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " now: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " salts: " + mtpTextSerialize(from, end, mtpc_vector, level + 1, mtpc_future_salt) + ",\n" + add; - return "{ future_salts" + result + "}"; - - case mtpc_geoChatMessageEmpty: - result += "\n" + add; - result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ geoChatMessageEmpty" + result + "}"; - - case mtpc_geoChatMessage: - result += "\n" + add; - result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " from_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; result += " message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " media: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ geoChatMessage" + result + "}"; + return "{ help_inviteText" + result + "}"; - case mtpc_geoChatMessageService: + case mtpc_chatLocated: result += "\n" + add; result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " from_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " action: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ geoChatMessageService" + result + "}"; + result += " distance: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ chatLocated" + result + "}"; - case mtpc_help_appUpdate: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " critical: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " url: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " text: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ help_appUpdate" + result + "}"; - - case mtpc_help_noAppUpdate: - result = " "; - return "{ help_noAppUpdate" + result + "}"; - - case mtpc_peerNotifyEventsEmpty: - result = " "; - return "{ peerNotifyEventsEmpty" + result + "}"; - - case mtpc_peerNotifyEventsAll: - result = " "; - return "{ peerNotifyEventsAll" + result + "}"; - - case mtpc_inputPeerEmpty: - result = " "; - return "{ inputPeerEmpty" + result + "}"; - - case mtpc_inputPeerSelf: - result = " "; - return "{ inputPeerSelf" + result + "}"; - - case mtpc_inputPeerContact: + case mtpc_contact: result += "\n" + add; result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ inputPeerContact" + result + "}"; + result += " mutual: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ contact" + result + "}"; - case mtpc_inputPeerForeign: + case mtpc_decryptedMessageLayer: result += "\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ inputPeerForeign" + result + "}"; + result += " layer: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " message: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ decryptedMessageLayer" + result + "}"; - case mtpc_inputPeerChat: - result += "\n" + add; - result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ inputPeerChat" + result + "}"; - - case mtpc_inputChatPhotoEmpty: - result = " "; - return "{ inputChatPhotoEmpty" + result + "}"; - - case mtpc_inputChatUploadedPhoto: - result += "\n" + add; - result += " file: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " crop: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ inputChatUploadedPhoto" + result + "}"; - - case mtpc_inputChatPhoto: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " crop: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ inputChatPhoto" + result + "}"; - - case mtpc_messages_chat: - result += "\n" + add; - result += " chat: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ messages_chat" + result + "}"; - - case mtpc_importedContact: - result += "\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " client_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ importedContact" + result + "}"; - - case mtpc_inputPhoneContact: - result += "\n" + add; - result += " client_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " phone: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " first_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " last_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ inputPhoneContact" + result + "}"; - - case mtpc_http_wait: - result += "\n" + add; - result += " max_delay: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " wait_after: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " max_wait: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ http_wait" + result + "}"; - - case mtpc_contacts_link: - result += "\n" + add; - result += " my_link: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " foreign_link: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " user: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ contacts_link" + result + "}"; - - case mtpc_msg_resend_req: - result += "\n" + add; - result += " msg_ids: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; - return "{ msg_resend_req" + result + "}"; - - case mtpc_config: - result += "\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " test_mode: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " this_dc: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " dc_options: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " chat_size_max: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " broadcast_size_max: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ config" + result + "}"; - - case mtpc_msg_detailed_info: - result += "\n" + add; - result += " msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " answer_msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " bytes: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " status: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ msg_detailed_info" + result + "}"; - - case mtpc_msg_new_detailed_info: - result += "\n" + add; - result += " answer_msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " bytes: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " status: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ msg_new_detailed_info" + result + "}"; - - case mtpc_photos_photos: - result += "\n" + add; - result += " photos: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ photos_photos" + result + "}"; - - case mtpc_photos_photosSlice: - result += "\n" + add; - result += " count: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " photos: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ photos_photosSlice" + result + "}"; - - case mtpc_messages_readHistory: - result += "\n" + add; - result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " max_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ messages_readHistory" + result + "}"; - - case mtpc_messages_deleteHistory: - result += "\n" + add; - result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ messages_deleteHistory" + result + "}"; - - case mtpc_set_client_DH_params: - result += "\n" + add; - result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - result += " server_nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - result += " encrypted_data: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ set_client_DH_params" + result + "}"; - - case mtpc_messages_getDhConfig: - result += "\n" + add; - result += " version: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " random_length: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ messages_getDhConfig" + result + "}"; - - case mtpc_geochats_getRecents: - result += "\n" + add; - result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ geochats_getRecents" + result + "}"; - - case mtpc_geochats_search: - result += "\n" + add; - result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " q: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " filter: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " min_date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " max_date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " max_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ geochats_search" + result + "}"; - - case mtpc_geochats_getHistory: - result += "\n" + add; - result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " max_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ geochats_getHistory" + result + "}"; - - case mtpc_messages_receivedQueue: - result += "\n" + add; - result += " max_qts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ messages_receivedQueue" + result + "}"; - - case mtpc_messages_sendMedia: - result += "\n" + add; - result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " media: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ messages_sendMedia" + result + "}"; - - case mtpc_messages_editChatTitle: - result += "\n" + add; - result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ messages_editChatTitle" + result + "}"; - - case mtpc_messages_editChatPhoto: - result += "\n" + add; - result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ messages_editChatPhoto" + result + "}"; - - case mtpc_messages_addChatUser: - result += "\n" + add; - result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " fwd_limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ messages_addChatUser" + result + "}"; - - case mtpc_messages_deleteChatUser: - result += "\n" + add; - result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ messages_deleteChatUser" + result + "}"; - - case mtpc_messages_createChat: - result += "\n" + add; - result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ messages_createChat" + result + "}"; - - case mtpc_messages_forwardMessage: - result += "\n" + add; - result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ messages_forwardMessage" + result + "}"; - - case mtpc_users_getFullUser: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ users_getFullUser" + result + "}"; - - case mtpc_contacts_getBlocked: - result += "\n" + add; - result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ contacts_getBlocked" + result + "}"; - - case mtpc_messages_getChats: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_int) + ",\n" + add; - return "{ messages_getChats" + result + "}"; - - case mtpc_contacts_getSuggested: - result += "\n" + add; - result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ contacts_getSuggested" + result + "}"; - - case mtpc_auth_checkPhone: - result += "\n" + add; - result += " phone_number: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ auth_checkPhone" + result + "}"; - - case mtpc_contacts_getContacts: - result += "\n" + add; - result += " hash: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ contacts_getContacts" + result + "}"; - - case mtpc_rpc_drop_answer: - result += "\n" + add; - result += " req_msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ rpc_drop_answer" + result + "}"; - - case mtpc_contacts_importContacts: - result += "\n" + add; - result += " contacts: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " replace: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ contacts_importContacts" + result + "}"; - - case mtpc_auth_exportAuthorization: - result += "\n" + add; - result += " dc_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ auth_exportAuthorization" + result + "}"; - - case mtpc_auth_sendCode: - result += "\n" + add; - result += " phone_number: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " sms_type: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " api_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " api_hash: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " lang_code: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ auth_sendCode" + result + "}"; - - case mtpc_photos_uploadProfilePhoto: - result += "\n" + add; - result += " file: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " caption: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " geo_point: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " crop: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ photos_uploadProfilePhoto" + result + "}"; - - case mtpc_upload_getFile: - result += "\n" + add; - result += " location: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ upload_getFile" + result + "}"; - - case mtpc_contacts_search: - result += "\n" + add; - result += " q: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ contacts_search" + result + "}"; - - case mtpc_help_getNearestDc: - result = " "; - return "{ help_getNearestDc" + result + "}"; - - case mtpc_messages_requestEncryption: - result += "\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " random_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " g_a: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; - return "{ messages_requestEncryption" + result + "}"; - - case mtpc_messages_acceptEncryption: - result += "\n" + add; - result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " g_b: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; - result += " key_fingerprint: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ messages_acceptEncryption" + result + "}"; - - case mtpc_users_getUsers: - result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ users_getUsers" + result + "}"; - - case mtpc_messages_forwardMessages: - result += "\n" + add; - result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " id: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_int) + ",\n" + add; - return "{ messages_forwardMessages" + result + "}"; - - case mtpc_messages_sendBroadcast: - result += "\n" + add; - result += " contacts: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " media: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ messages_sendBroadcast" + result + "}"; - - case mtpc_photos_getUserPhotos: - result += "\n" + add; - result += " user_id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " max_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ photos_getUserPhotos" + result + "}"; - - case mtpc_updates_getDifference: + case mtpc_updates_state: result += "\n" + add; result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; result += " qts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ updates_getDifference" + result + "}"; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " seq: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " unread_count: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ updates_state" + result + "}"; - case mtpc_account_updateProfile: - result += "\n" + add; - result += " first_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " last_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ account_updateProfile" + result + "}"; - - case mtpc_account_getWallPapers: + case mtpc_encryptedFileEmpty: result = " "; - return "{ account_getWallPapers" + result + "}"; + return "{ encryptedFileEmpty" + result + "}"; + + case mtpc_encryptedFile: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " access_hash: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " size: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " dc_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " key_fingerprint: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ encryptedFile" + result + "}"; + + case mtpc_msgs_all_info: + result += "\n" + add; + result += " msg_ids: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; + result += " info: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ msgs_all_info" + result + "}"; + + case mtpc_photos_updateProfilePhoto: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " crop: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ photos_updateProfilePhoto" + result + "}"; case mtpc_messages_getMessages: result += "\n" + add; @@ -24194,15 +23960,55 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; return "{ messages_search" + result + "}"; - case mtpc_req_DH_params: + case mtpc_set_client_DH_params: result += "\n" + add; result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; result += " server_nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - result += " p: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " q: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " public_key_fingerprint: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; result += " encrypted_data: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ req_DH_params" + result + "}"; + return "{ set_client_DH_params" + result + "}"; + + case mtpc_contacts_getStatuses: + result = " "; + return "{ contacts_getStatuses" + result + "}"; + + case mtpc_auth_checkPhone: + result += "\n" + add; + result += " phone_number: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ auth_checkPhone" + result + "}"; + + case mtpc_help_getAppUpdate: + result += "\n" + add; + result += " device_model: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " system_version: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " app_version: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " lang_code: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ help_getAppUpdate" + result + "}"; + + case mtpc_updates_getDifference: + result += "\n" + add; + result += " pts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " qts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ updates_getDifference" + result + "}"; + + case mtpc_help_getInviteText: + result += "\n" + add; + result += " lang_code: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ help_getInviteText" + result + "}"; + + case mtpc_users_getFullUser: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ users_getFullUser" + result + "}"; + + case mtpc_updates_getState: + result = " "; + return "{ updates_getState" + result + "}"; + + case mtpc_contacts_getContacts: + result += "\n" + add; + result += " hash: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ contacts_getContacts" + result + "}"; case mtpc_geochats_checkin: result += "\n" + add; @@ -24244,55 +24050,66 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " venue: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; return "{ geochats_createGeoChat" + result + "}"; - case mtpc_req_pq: + case mtpc_ping: result += "\n" + add; - result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; - return "{ req_pq" + result + "}"; + result += " ping_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ ping" + result + "}"; - case mtpc_invokeAfterMsg: + case mtpc_ping_delay_disconnect: result += "\n" + add; - result += " msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " query: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ invokeAfterMsg" + result + "}"; + result += " ping_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " disconnect_delay: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ ping_delay_disconnect" + result + "}"; - case mtpc_invokeAfterMsgs: - result += "\n" + add; - result += " msg_ids: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; - result += " query: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ invokeAfterMsgs" + result + "}"; - - case mtpc_initConnection: - result += "\n" + add; - result += " api_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " device_model: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " system_version: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " app_version: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " lang_code: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " query: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ initConnection" + result + "}"; - - case mtpc_messages_sendMessage: - result += "\n" + add; - result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ messages_sendMessage" + result + "}"; - - case mtpc_contacts_getStatuses: + case mtpc_help_getSupport: result = " "; - return "{ contacts_getStatuses" + result + "}"; + return "{ help_getSupport" + result + "}"; - case mtpc_geochats_getLocated: - result += "\n" + add; - result += " geo_point: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " radius: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ geochats_getLocated" + result + "}"; - - case mtpc_account_getNotifySettings: + case mtpc_messages_readHistory: result += "\n" + add; result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ account_getNotifySettings" + result + "}"; + result += " max_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ messages_readHistory" + result + "}"; + + case mtpc_messages_deleteHistory: + result += "\n" + add; + result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ messages_deleteHistory" + result + "}"; + + case mtpc_messages_deleteMessages: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_int) + ",\n" + add; + return "{ messages_deleteMessages" + result + "}"; + + case mtpc_messages_restoreMessages: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_int) + ",\n" + add; + return "{ messages_restoreMessages" + result + "}"; + + case mtpc_messages_receivedMessages: + result += "\n" + add; + result += " max_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ messages_receivedMessages" + result + "}"; + + case mtpc_users_getUsers: + result += "\n" + add; + result += " id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ users_getUsers" + result + "}"; + + case mtpc_get_future_salts: + result += "\n" + add; + result += " num: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ get_future_salts" + result + "}"; + + case mtpc_photos_getUserPhotos: + result += "\n" + add; + result += " user_id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " max_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ photos_getUserPhotos" + result + "}"; case mtpc_register_saveDeveloperInfo: result += "\n" + add; @@ -24419,6 +24236,35 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " bytes: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; return "{ upload_saveBigFilePart" + result + "}"; + case mtpc_req_pq: + result += "\n" + add; + result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; + return "{ req_pq" + result + "}"; + + case mtpc_auth_exportAuthorization: + result += "\n" + add; + result += " dc_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ auth_exportAuthorization" + result + "}"; + + case mtpc_contacts_importContacts: + result += "\n" + add; + result += " contacts: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " replace: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ contacts_importContacts" + result + "}"; + + case mtpc_rpc_drop_answer: + result += "\n" + add; + result += " req_msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ rpc_drop_answer" + result + "}"; + + case mtpc_help_getConfig: + result = " "; + return "{ help_getConfig" + result + "}"; + + case mtpc_help_getNearestDc: + result = " "; + return "{ help_getNearestDc" + result + "}"; + case mtpc_messages_getDialogs: result += "\n" + add; result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; @@ -24426,10 +24272,29 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; return "{ messages_getDialogs" + result + "}"; - case mtpc_destroy_session: + case mtpc_account_getNotifySettings: result += "\n" + add; - result += " session_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ destroy_session" + result + "}"; + result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ account_getNotifySettings" + result + "}"; + + case mtpc_geochats_getLocated: + result += "\n" + add; + result += " geo_point: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " radius: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ geochats_getLocated" + result + "}"; + + case mtpc_messages_getDhConfig: + result += "\n" + add; + result += " version: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " random_length: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ messages_getDhConfig" + result + "}"; + + case mtpc_account_updateProfile: + result += "\n" + add; + result += " first_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " last_name: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ account_updateProfile" + result + "}"; case mtpc_messages_getFullChat: result += "\n" + add; @@ -24441,41 +24306,20 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; return "{ geochats_getFullChat" + result + "}"; - case mtpc_messages_sendEncrypted: + case mtpc_req_DH_params: result += "\n" + add; - result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " data: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; - return "{ messages_sendEncrypted" + result + "}"; + result += " nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; + result += " server_nonce: " + mtpTextSerialize(from, end, mtpc_int128, level + 1) + ",\n" + add; + result += " p: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " q: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " public_key_fingerprint: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " encrypted_data: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ req_DH_params" + result + "}"; - case mtpc_messages_sendEncryptedFile: + case mtpc_contacts_getSuggested: result += "\n" + add; - result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " data: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; - result += " file: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ messages_sendEncryptedFile" + result + "}"; - - case mtpc_messages_sendEncryptedService: - result += "\n" + add; - result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " data: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; - return "{ messages_sendEncryptedService" + result + "}"; - - case mtpc_get_future_salts: - result += "\n" + add; - result += " num: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ get_future_salts" + result + "}"; - - case mtpc_help_getInviteText: - result += "\n" + add; - result += " lang_code: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ help_getInviteText" + result + "}"; - - case mtpc_help_getConfig: - result = " "; - return "{ help_getConfig" + result + "}"; + result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ contacts_getSuggested" + result + "}"; case mtpc_auth_signUp: result += "\n" + add; @@ -24499,58 +24343,214 @@ inline QString mtpTextSerialize(const mtpPrime *&from, const mtpPrime *end, mtpP result += " bytes: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; return "{ auth_importAuthorization" + result + "}"; - case mtpc_photos_updateProfilePhoto: + case mtpc_upload_getFile: result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " location: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ upload_getFile" + result + "}"; + + case mtpc_photos_uploadProfilePhoto: + result += "\n" + add; + result += " file: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " caption: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " geo_point: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; result += " crop: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; - return "{ photos_updateProfilePhoto" + result + "}"; + return "{ photos_uploadProfilePhoto" + result + "}"; + + case mtpc_auth_sendCode: + result += "\n" + add; + result += " phone_number: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " sms_type: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " api_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " api_hash: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " lang_code: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ auth_sendCode" + result + "}"; + + case mtpc_messages_forwardMessages: + result += "\n" + add; + result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " id: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_int) + ",\n" + add; + return "{ messages_forwardMessages" + result + "}"; + + case mtpc_messages_sendBroadcast: + result += "\n" + add; + result += " contacts: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " media: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ messages_sendBroadcast" + result + "}"; + + case mtpc_messages_receivedQueue: + result += "\n" + add; + result += " max_qts: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ messages_receivedQueue" + result + "}"; + + case mtpc_contacts_search: + result += "\n" + add; + result += " q: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ contacts_search" + result + "}"; + + case mtpc_messages_sendMessage: + result += "\n" + add; + result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " message: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ messages_sendMessage" + result + "}"; + + case mtpc_geochats_getRecents: + result += "\n" + add; + result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ geochats_getRecents" + result + "}"; + + case mtpc_geochats_search: + result += "\n" + add; + result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " q: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + result += " filter: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " min_date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " max_date: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " max_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ geochats_search" + result + "}"; + + case mtpc_geochats_getHistory: + result += "\n" + add; + result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " max_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ geochats_getHistory" + result + "}"; + + case mtpc_destroy_session: + result += "\n" + add; + result += " session_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ destroy_session" + result + "}"; + + case mtpc_account_getWallPapers: + result = " "; + return "{ account_getWallPapers" + result + "}"; + + case mtpc_messages_sendEncrypted: + result += "\n" + add; + result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " data: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + return "{ messages_sendEncrypted" + result + "}"; + + case mtpc_messages_sendEncryptedFile: + result += "\n" + add; + result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " data: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + result += " file: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ messages_sendEncryptedFile" + result + "}"; + + case mtpc_messages_sendEncryptedService: + result += "\n" + add; + result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " data: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + return "{ messages_sendEncryptedService" + result + "}"; + + case mtpc_contacts_getBlocked: + result += "\n" + add; + result += " offset: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ contacts_getBlocked" + result + "}"; case mtpc_contacts_deleteContact: result += "\n" + add; result += " id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; return "{ contacts_deleteContact" + result + "}"; - case mtpc_messages_deleteMessages: + case mtpc_invokeAfterMsg: result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_int) + ",\n" + add; - return "{ messages_deleteMessages" + result + "}"; + result += " msg_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + result += " query: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ invokeAfterMsg" + result + "}"; - case mtpc_messages_restoreMessages: + case mtpc_invokeAfterMsgs: result += "\n" + add; - result += " id: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_int) + ",\n" + add; - return "{ messages_restoreMessages" + result + "}"; + result += " msg_ids: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_long) + ",\n" + add; + result += " query: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ invokeAfterMsgs" + result + "}"; - case mtpc_messages_receivedMessages: - result += "\n" + add; - result += " max_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ messages_receivedMessages" + result + "}"; - - case mtpc_help_getAppUpdate: + case mtpc_initConnection: result += "\n" + add; + result += " api_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; result += " device_model: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; result += " system_version: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; result += " app_version: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; result += " lang_code: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; - return "{ help_getAppUpdate" + result + "}"; + result += " query: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ initConnection" + result + "}"; - case mtpc_updates_getState: - result = " "; - return "{ updates_getState" + result + "}"; - - case mtpc_help_getSupport: - result = " "; - return "{ help_getSupport" + result + "}"; - - case mtpc_ping: + case mtpc_messages_getChats: result += "\n" + add; - result += " ping_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - return "{ ping" + result + "}"; + result += " id: " + mtpTextSerialize(from, end, 0, level + 1, mtpc_int) + ",\n" + add; + return "{ messages_getChats" + result + "}"; - case mtpc_ping_delay_disconnect: + case mtpc_messages_sendMedia: result += "\n" + add; - result += " ping_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; - result += " disconnect_delay: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; - return "{ ping_delay_disconnect" + result + "}"; + result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " media: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ messages_sendMedia" + result + "}"; + + case mtpc_messages_editChatTitle: + result += "\n" + add; + result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ messages_editChatTitle" + result + "}"; + + case mtpc_messages_editChatPhoto: + result += "\n" + add; + result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " photo: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ messages_editChatPhoto" + result + "}"; + + case mtpc_messages_addChatUser: + result += "\n" + add; + result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " user_id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " fwd_limit: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + return "{ messages_addChatUser" + result + "}"; + + case mtpc_messages_deleteChatUser: + result += "\n" + add; + result += " chat_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " user_id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + return "{ messages_deleteChatUser" + result + "}"; + + case mtpc_messages_createChat: + result += "\n" + add; + result += " users: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " title: " + mtpTextSerialize(from, end, mtpc_string, level + 1) + ",\n" + add; + return "{ messages_createChat" + result + "}"; + + case mtpc_messages_forwardMessage: + result += "\n" + add; + result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " random_id: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ messages_forwardMessage" + result + "}"; + + case mtpc_messages_requestEncryption: + result += "\n" + add; + result += " user_id: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " random_id: " + mtpTextSerialize(from, end, mtpc_int, level + 1) + ",\n" + add; + result += " g_a: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + return "{ messages_requestEncryption" + result + "}"; + + case mtpc_messages_acceptEncryption: + result += "\n" + add; + result += " peer: " + mtpTextSerialize(from, end, 0, level + 1) + ",\n" + add; + result += " g_b: " + mtpTextSerialize(from, end, mtpc_bytes, level + 1) + ",\n" + add; + result += " key_fingerprint: " + mtpTextSerialize(from, end, mtpc_long, level + 1) + ",\n" + add; + return "{ messages_acceptEncryption" + result + "}"; } return mtpTextSerializeCore(from, end, cons, level, vcons); diff --git a/Telegram/SourceFiles/profilewidget.cpp b/Telegram/SourceFiles/profilewidget.cpp index b22e83e22..e0eac83d4 100644 --- a/Telegram/SourceFiles/profilewidget.cpp +++ b/Telegram/SourceFiles/profilewidget.cpp @@ -779,10 +779,10 @@ PeerData *ProfileWidget::peer() const { void ProfileWidget::animShow(const QPixmap &bgAnimCache, const QPixmap &bgAnimTopBarCache, bool back) { _bgAnimCache = bgAnimCache; _bgAnimTopBarCache = bgAnimTopBarCache; - _animCache = grab(rect()); - App::main()->topBar()->showAll(); - _animTopBarCache = App::main()->topBar()->grab(QRect(0, 0, width(), st::topBarHeight)); - App::main()->topBar()->hideAll(); + _animCache = myGrab(this, rect()); + App::main()->topBar()->stopAnim(); + _animTopBarCache = myGrab(App::main()->topBar(), QRect(0, 0, width(), st::topBarHeight)); + App::main()->topBar()->startAnim(); _scroll.hide(); a_coord = back ? anim::ivalue(-st::introSlideShift, 0) : anim::ivalue(st::introSlideShift, 0); a_alpha = anim::fvalue(0, 1); @@ -806,7 +806,7 @@ bool ProfileWidget::animStep(float64 ms) { a_coord.finish(); a_alpha.finish(); _bgAnimCache = _animCache = _animTopBarCache = _bgAnimTopBarCache = QPixmap(); - App::main()->topBar()->showAll(); + App::main()->topBar()->stopAnim(); _scroll.show(); activate(); } else { diff --git a/Telegram/SourceFiles/pspecific_mac.cpp b/Telegram/SourceFiles/pspecific_mac.cpp index 8b6405ffb..43c76d461 100644 --- a/Telegram/SourceFiles/pspecific_mac.cpp +++ b/Telegram/SourceFiles/pspecific_mac.cpp @@ -1,3 +1,20 @@ +/* +This file is part of Telegram Desktop, +an unofficial desktop 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://tdesktop.com +*/ #include "stdafx.h" #include "pspecific.h" @@ -5,621 +22,11 @@ #include "application.h" #include "mainwidget.h" -#define min(a, b) ((a) < (b) ? (a) : (b)) -#define max(a, b) ((a) < (b) ? (b) : (a)) - namespace { bool frameless = true; - bool useDWM = false; - bool useTheme = false; - bool useOpenAs = false; - bool themeInited = false; bool finished = true; - int menuShown = 0, menuHidden = 0; - int dleft = 0, dtop = 0; - QMargins simpleMargins, margins; - //HICON bigIcon = 0, smallIcon = 0, overlayIcon = 0; - //UINT tbCreatedMsgId = 0; - //ITaskbarList3 *tbListInterface = 0; - - /*HWND createTaskbarHider() { - HINSTANCE appinst = (HINSTANCE)GetModuleHandle(0); - HWND hWnd = 0; - - QString cn = QString("TelegramTaskbarHider"); - LPCWSTR _cn = (LPCWSTR)cn.utf16(); - WNDCLASSEX wc; - - wc.cbSize = sizeof(wc); - wc.style = 0; - wc.lpfnWndProc = DefWindowProc; - wc.cbClsExtra = 0; - wc.cbWndExtra = 0; - wc.hInstance = appinst; - wc.hIcon = 0; - wc.hCursor = 0; - wc.hbrBackground = 0; - wc.lpszMenuName = NULL; - wc.lpszClassName = _cn; - wc.hIconSm = 0; - if (!RegisterClassEx(&wc)) { - DEBUG_LOG(("Application Error: could not register taskbar hider window class, error: %1").arg(GetLastError())); - return hWnd; - } - - hWnd = CreateWindowEx(WS_EX_TOOLWINDOW, _cn, 0, WS_POPUP, 0, 0, 0, 0, 0, 0, appinst, 0); - if (!hWnd) { - DEBUG_LOG(("Application Error: could not create taskbar hider window class, error: %1").arg(GetLastError())); - return hWnd; - } - return hWnd; - } - - enum { - _PsShadowMoved = 0x01, - _PsShadowResized = 0x02, - _PsShadowShown = 0x04, - _PsShadowHidden = 0x08, - _PsShadowActivate = 0x10, - }; - - enum { - _PsInitHor = 0x01, - _PsInitVer = 0x02, - }; - - int32 _psSize = 0; - class _PsShadowWindows { - public: - - _PsShadowWindows() : screenDC(0), max_w(0), max_h(0), _x(0), _y(0), _w(0), _h(0), hidden(true), r(0), g(0), b(0), noKeyColor(RGB(255, 255, 255)) { - for (int i = 0; i < 4; ++i) { - dcs[i] = 0; - bitmaps[i] = 0; - hwnds[i] = 0; - } - } - - void setColor(QColor c) { - r = c.red(); - g = c.green(); - b = c.blue(); - - if (!hwnds[0]) return; - Gdiplus::SolidBrush brush(Gdiplus::Color(_alphas[0], r, g, b)); - for (int i = 0; i < 4; ++i) { - Gdiplus::Graphics graphics(dcs[i]); - graphics.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); - if ((i % 2) && _h || !(i % 2) && _w) { - graphics.FillRectangle(&brush, 0, 0, (i % 2) ? _size : _w, (i % 2) ? _h : _size); - } - } - initCorners(); - - _x = _y = _w = _h = 0; - update(_PsShadowMoved | _PsShadowResized); - } - - bool init(QColor c) { - style::rect topLeft = st::wndShadow; - _fullsize = topLeft.width(); - _shift = st::wndShadowShift; - QImage cornersImage(_fullsize, _fullsize, QImage::Format_ARGB32_Premultiplied); - { - QPainter p(&cornersImage); - p.drawPixmap(QPoint(0, 0), App::sprite(), topLeft); - } - uchar *bits = cornersImage.bits(); - if (bits) { - for ( - quint32 *p = (quint32*)bits, *end = (quint32*)(bits + cornersImage.byteCount()); - p < end; - ++p - ) { - *p = (*p ^ 0x00ffffff) << 24; - } - } - - _metaSize = _fullsize + 2 * _shift; - _alphas.reserve(_metaSize); - _colors.reserve(_metaSize * _metaSize); - for (int32 j = 0; j < _metaSize; ++j) { - for (int32 i = 0; i < _metaSize; ++i) { - _colors.push_back((i < 2 * _shift || j < 2 * _shift) ? 1 : qMax(BYTE(1), BYTE(cornersImage.pixel(QPoint(i - 2 * _shift, j - 2 * _shift)) >> 24))); - } - } - uchar prev = 0; - for (int32 i = 0; i < _metaSize; ++i) { - uchar a = _colors[(_metaSize - 1) * _metaSize + i]; - if (a < prev) break; - - _alphas.push_back(a); - prev = a; - } - _psSize = _size = _alphas.size() - 2 * _shift; - - setColor(c); - - Gdiplus::GdiplusStartupInput gdiplusStartupInput; - ULONG_PTR gdiplusToken; - Gdiplus::Status gdiRes = Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); - - if (gdiRes != Gdiplus::Ok) { - DEBUG_LOG(("Application Error: could not init GDI+, error: %1").arg((int)gdiRes)); - return false; - } - blend.AlphaFormat = AC_SRC_ALPHA; - blend.SourceConstantAlpha = 255; - blend.BlendFlags = 0; - blend.BlendOp = AC_SRC_OVER; - - screenDC = GetDC(0); - if (!screenDC) return false; - - QRect avail(QDesktopWidget().availableGeometry()); - max_w = avail.width(); - if (max_w < st::wndMinWidth) max_w = st::wndMinWidth; - max_h = avail.height(); - if (max_h < st::wndMinHeight) max_h = st::wndMinHeight; - - HINSTANCE appinst = (HINSTANCE)GetModuleHandle(0); - - for (int i = 0; i < 4; ++i) { - QString cn = QString("TelegramShadow%1").arg(i); - LPCWSTR _cn = (LPCWSTR)cn.utf16(); - WNDCLASSEX wc; - - wc.cbSize = sizeof(wc); - wc.style = 0; - wc.lpfnWndProc = wndProc; - wc.cbClsExtra = 0; - wc.cbWndExtra = 0; - wc.hInstance = appinst; - wc.hIcon = 0; - wc.hCursor = 0; - wc.hbrBackground = 0; - wc.lpszMenuName = NULL; - wc.lpszClassName = _cn; - wc.hIconSm = 0; - if (!RegisterClassEx(&wc)) { - DEBUG_LOG(("Application Error: could not register shadow window class %1, error: %2").arg(i).arg(GetLastError())); - destroy(); - return false; - } - - hwnds[i] = CreateWindowEx(WS_EX_LAYERED | WS_EX_TOOLWINDOW, _cn, 0, WS_POPUP, 0, 0, 0, 0, 0, 0, appinst, 0); - if (!hwnds[i]) { - DEBUG_LOG(("Application Error: could not create shadow window class %1, error: %2").arg(i).arg(GetLastError())); - destroy(); - return false; - } - - dcs[i] = CreateCompatibleDC(screenDC); - if (!dcs[i]) { - DEBUG_LOG(("Application Error: could not create dc for shadow window class %1, error: %2").arg(i).arg(GetLastError())); - destroy(); - return false; - } - - bitmaps[i] = CreateCompatibleBitmap(screenDC, (i % 2) ? _size : max_w, (i % 2) ? max_h : _size); - if (!bitmaps[i]) { - DEBUG_LOG(("Application Error: could not create bitmap for shadow window class %1, error: %2").arg(i).arg(GetLastError())); - destroy(); - return false; - } - - SelectObject(dcs[i], bitmaps[i]); - } - - initCorners(); - return true; - } - - void initCorners(int directions = (_PsInitHor | _PsInitVer)) { - bool hor = (directions & _PsInitHor), ver = (directions & _PsInitVer); - Gdiplus::Graphics graphics0(dcs[0]), graphics1(dcs[1]), graphics2(dcs[2]), graphics3(dcs[3]); - graphics0.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); - graphics1.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); - graphics2.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); - graphics3.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); - - Gdiplus::SolidBrush brush(Gdiplus::Color(_alphas[0], r, g, b)); - if (hor) graphics0.FillRectangle(&brush, 0, 0, _fullsize - (_size - _shift), 2 * _shift); - - if (ver) { - graphics1.FillRectangle(&brush, 0, 0, _size, 2 * _shift); - graphics3.FillRectangle(&brush, 0, 0, _size, 2 * _shift); - graphics1.FillRectangle(&brush, _size - _shift, 2 * _shift, _shift, _fullsize); - graphics3.FillRectangle(&brush, 0, 2 * _shift, _shift, _fullsize); - } - - if (hor) { - for (int j = 2 * _shift; j < _size; ++j) { - for (int k = 0; k < _fullsize - (_size - _shift); ++k) { - brush.SetColor(Gdiplus::Color(_colors[j * _metaSize + k + (_size + _shift)], r, g, b)); - graphics0.FillRectangle(&brush, k, j, 1, 1); - graphics2.FillRectangle(&brush, k, _size - (j - 2 * _shift) - 1, 1, 1); - } - } - for (int j = _size; j < _size + 2 * _shift; ++j) { - for (int k = 0; k < _fullsize - (_size - _shift); ++k) { - brush.SetColor(Gdiplus::Color(_colors[j * _metaSize + k + (_size + _shift)], r, g, b)); - graphics2.FillRectangle(&brush, k, _size - (j - 2 * _shift) - 1, 1, 1); - } - } - } - if (ver) { - for (int j = 2 * _shift; j < _fullsize + 2 * _shift; ++j) { - for (int k = _shift; k < _size; ++k) { - brush.SetColor(Gdiplus::Color(_colors[j * _metaSize + (k + _shift)], r, g, b)); - graphics1.FillRectangle(&brush, _size - k - 1, j, 1, 1); - graphics3.FillRectangle(&brush, k, j, 1, 1); - } - } - } - } - void verCorners(int h, Gdiplus::Graphics *pgraphics1, Gdiplus::Graphics *pgraphics3) { - Gdiplus::SolidBrush brush(Gdiplus::Color(_alphas[0], r, g, b)); - pgraphics1->FillRectangle(&brush, _size - _shift, h - _fullsize, _shift, _fullsize); - pgraphics3->FillRectangle(&brush, 0, h - _fullsize, _shift, _fullsize); - for (int j = 0; j < _fullsize; ++j) { - for (int k = _shift; k < _size; ++k) { - brush.SetColor(Gdiplus::Color(_colors[(j + 2 * _shift) * _metaSize + k + _shift], r, g, b)); - pgraphics1->FillRectangle(&brush, _size - k - 1, h - j - 1, 1, 1); - pgraphics3->FillRectangle(&brush, k, h - j - 1, 1, 1); - } - } - } - void horCorners(int w, Gdiplus::Graphics *pgraphics0, Gdiplus::Graphics *pgraphics2) { - Gdiplus::SolidBrush brush(Gdiplus::Color(_alphas[0], r, g, b)); - pgraphics0->FillRectangle(&brush, w - 2 * _size - (_fullsize - (_size - _shift)), 0, _fullsize - (_size - _shift), 2 * _shift); - for (int j = 2 * _shift; j < _size; ++j) { - for (int k = 0; k < _fullsize - (_size - _shift); ++k) { - brush.SetColor(Gdiplus::Color(_colors[j * _metaSize + k + (_size + _shift)], r, g, b)); - pgraphics0->FillRectangle(&brush, w - 2 * _size - k - 1, j, 1, 1); - pgraphics2->FillRectangle(&brush, w - 2 * _size - k - 1, _size - (j - 2 * _shift) - 1, 1, 1); - } - } - for (int j = _size; j < _size + 2 * _shift; ++j) { - for (int k = 0; k < _fullsize - (_size - _shift); ++k) { - brush.SetColor(Gdiplus::Color(_colors[j * _metaSize + k + (_size + _shift)], r, g, b)); - pgraphics2->FillRectangle(&brush, w - 2 * _size - k - 1, _size - (j - 2 * _shift) - 1, 1, 1); - } - } - } - - void update(int changes, WINDOWPOS *pos = 0) { - HWND hwnd = Application::wnd() ? Application::wnd()->psHwnd() : 0; - if (!hwnd || !hwnds[0]) return; - - if (changes == _PsShadowActivate) { - for (int i = 0; i < 4; ++i) { - SetWindowPos(hwnds[i], hwnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); - } - return; - } - - if (changes & _PsShadowHidden) { - if (!hidden) { - for (int i = 0; i < 4; ++i) { - hidden = true; - ShowWindow(hwnds[i], SW_HIDE); - } - } - return; - } - if (!Application::wnd()->psPosInited()) return; - - int x = _x, y = _y, w = _w, h = _h; - if (pos && (!(pos->flags & SWP_NOMOVE) || !(pos->flags & SWP_NOSIZE) || !(pos->flags & SWP_NOREPOSITION))) { - if (!(pos->flags & SWP_NOMOVE)) { - x = pos->x - _size; - y = pos->y - _size; - } else if (pos->flags & SWP_NOSIZE) { - for (int i = 0; i < 4; ++i) { - SetWindowPos(hwnds[i], hwnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); - } - return; - } - if (!(pos->flags & SWP_NOSIZE)) { - w = pos->cx + 2 * _size; - h = pos->cy + 2 * _size; - } - } else { - RECT r; - GetWindowRect(hwnd, &r); - x = r.left - _size; - y = r.top - _size; - w = r.right + _size - x; - h = r.bottom + _size - y; - } - if (h < 2 * _fullsize + 2 * _shift) { - h = 2 * _fullsize + 2 * _shift; - } - if (w < 2 * (_fullsize + _shift)) { - w = 2 * (_fullsize + _shift); - } - - if (w != _w) { - int from = (_w > 2 * (_fullsize + _shift)) ? (_w - _size - _fullsize - _shift) : (_fullsize - (_size - _shift)); - int to = w - _size - _fullsize - _shift; - if (w > max_w) { - from = _fullsize - (_size - _shift); - max_w *= 2; - for (int i = 0; i < 4; i += 2) { - DeleteObject(bitmaps[i]); - bitmaps[i] = CreateCompatibleBitmap(screenDC, max_w, _size); - SelectObject(dcs[i], bitmaps[i]); - } - initCorners(_PsInitHor); - } - Gdiplus::Graphics graphics0(dcs[0]), graphics2(dcs[2]); - graphics0.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); - graphics2.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); - Gdiplus::SolidBrush brush(Gdiplus::Color(_alphas[0], r, g, b)); - if (to > from) { - graphics0.FillRectangle(&brush, from, 0, to - from, 2 * _shift); - for (int i = 2 * _shift; i < _size; ++i) { - Gdiplus::Pen pen(Gdiplus::Color(_alphas[i], r, g, b)); - graphics0.DrawLine(&pen, from, i, to, i); - graphics2.DrawLine(&pen, from, _size - (i - 2 * _shift) - 1, to, _size - (i - 2 * _shift) - 1); - } - for (int i = _size; i < _size + 2 * _shift; ++i) { - Gdiplus::Pen pen(Gdiplus::Color(_alphas[i], r, g, b)); - graphics2.DrawLine(&pen, from, _size - (i - 2 * _shift) - 1, to, _size - (i - 2 * _shift) - 1); - } - } - if (_w > w) { - graphics0.FillRectangle(&brush, w - _size - _fullsize - _shift, 0, _fullsize - (_size - _shift), _size); - graphics2.FillRectangle(&brush, w - _size - _fullsize - _shift, 0, _fullsize - (_size - _shift), _size); - } - horCorners(w, &graphics0, &graphics2); - POINT p0 = { x + _size, y }, p2 = { x + _size, y + h - _size }, f = { 0, 0 }; - SIZE s = { w - 2 * _size, _size }; - updateWindow(0, &p0, &s); - updateWindow(2, &p2, &s); - } else if (x != _x || y != _y) { - POINT p0 = { x + _size, y }, p2 = { x + _size, y + h - _size }; - updateWindow(0, &p0); - updateWindow(2, &p2); - } else if (h != _h) { - POINT p2 = { x + _size, y + h - _size }; - updateWindow(2, &p2); - } - - if (h != _h) { - int from = (_h > 2 * _fullsize + 2 * _shift) ? (_h - _fullsize) : (_fullsize + 2 * _shift); - int to = h - _fullsize; - if (h > max_h) { - from = (_fullsize + 2 * _shift); - max_h *= 2; - for (int i = 1; i < 4; i += 2) { - DeleteObject(bitmaps[i]); - bitmaps[i] = CreateCompatibleBitmap(dcs[i], _size, max_h); - SelectObject(dcs[i], bitmaps[i]); - } - initCorners(_PsInitVer); - } - Gdiplus::Graphics graphics1(dcs[1]), graphics3(dcs[3]); - graphics1.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); - graphics3.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); - - Gdiplus::SolidBrush brush(Gdiplus::Color(_alphas[0], r, g, b)); - if (to > from) { - graphics1.FillRectangle(&brush, _size - _shift, from, _shift, to - from); - graphics3.FillRectangle(&brush, 0, from, _shift, to - from); - for (int i = 2 * _shift; i < _size + _shift; ++i) { - Gdiplus::Pen pen(Gdiplus::Color(_alphas[i], r, g, b)); - graphics1.DrawLine(&pen, _size + _shift - i - 1, from, _size + _shift - i - 1, to); - graphics3.DrawLine(&pen, i - _shift, from, i - _shift, to); - } - } - if (_h > h) { - graphics1.FillRectangle(&brush, 0, h - _fullsize, _size, _fullsize); - graphics3.FillRectangle(&brush, 0, h - _fullsize, _size, _fullsize); - } - verCorners(h, &graphics1, &graphics3); - - POINT p1 = {x + w - _size, y}, p3 = {x, y}, f = {0, 0}; - SIZE s = { _size, h }; - updateWindow(1, &p1, &s); - updateWindow(3, &p3, &s); - } else if (x != _x || y != _y) { - POINT p1 = { x + w - _size, y }, p3 = { x, y }; - updateWindow(1, &p1); - updateWindow(3, &p3); - } else if (w != _w) { - POINT p1 = { x + w - _size, y }; - updateWindow(1, &p1); - } - _x = x; - _y = y; - _w = w; - _h = h; - - if (hidden && (changes & _PsShadowShown)) { - for (int i = 0; i < 4; ++i) { - SetWindowPos(hwnds[i], hwnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW | SWP_NOACTIVATE); - } - hidden = false; - } - } - - void updateWindow(int i, POINT *p, SIZE *s = 0) { - static POINT f = {0, 0}; - if (s) { - UpdateLayeredWindow(hwnds[i], (s ? screenDC : 0), p, s, (s ? dcs[i] : 0), (s ? (&f) : 0), noKeyColor, &blend, ULW_ALPHA); - } else { - SetWindowPos(hwnds[i], 0, p->x, p->y, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER); - } - } - - void destroy() { - for (int i = 0; i < 4; ++i) { - if (dcs[i]) DeleteDC(dcs[i]); - if (bitmaps[i]) DeleteObject(bitmaps[i]); - if (hwnds[i]) DestroyWindow(hwnds[i]); - dcs[i] = 0; - bitmaps[i] = 0; - hwnds[i] = 0; - } - if (screenDC) ReleaseDC(0, screenDC); - } - - private: - - int _x, _y, _w, _h; - int _metaSize, _fullsize, _size, _shift; - QVector _alphas, _colors; - - bool hidden; - - HWND hwnds[4]; - HDC dcs[4], screenDC; - HBITMAP bitmaps[4]; - int max_w, max_h; - BLENDFUNCTION blend; - - BYTE r, g, b; - COLORREF noKeyColor; - - static LRESULT CALLBACK _PsShadowWindows::wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); - - }; - _PsShadowWindows _psShadowWindows; - - LRESULT CALLBACK _PsShadowWindows::wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - if (finished) return DefWindowProc(hwnd, msg, wParam, lParam); - - int i; - for (i = 0; i < 4; ++i) { - if (_psShadowWindows.hwnds[i] && hwnd == _psShadowWindows.hwnds[i]) { - break; - } - } - if (i == 4) return DefWindowProc(hwnd, msg, wParam, lParam); - - switch (msg) { - case WM_CLOSE: - Application::wnd()->close(); - break; - case WM_NCHITTEST: { - int32 xPos = GET_X_LPARAM(lParam), yPos = GET_Y_LPARAM(lParam); - switch (i) { - case 0: return HTTOP; - case 1: return (yPos < _psShadowWindows._y + _psSize) ? HTTOPRIGHT : ((yPos >= _psShadowWindows._y + _psShadowWindows._h - _psSize) ? HTBOTTOMRIGHT : HTRIGHT); - case 2: return HTBOTTOM; - case 3: return (yPos < _psShadowWindows._y + _psSize) ? HTTOPLEFT : ((yPos >= _psShadowWindows._y + _psShadowWindows._h - _psSize) ? HTBOTTOMLEFT : HTLEFT); - } - return HTTRANSPARENT; - } break; - - case WM_NCACTIVATE: return DefWindowProc(hwnd, msg, wParam, lParam); - case WM_NCLBUTTONDOWN: - case WM_NCLBUTTONUP: - case WM_NCLBUTTONDBLCLK: - case WM_NCMBUTTONDOWN: - case WM_NCMBUTTONUP: - case WM_NCMBUTTONDBLCLK: - case WM_NCRBUTTONDOWN: - case WM_NCRBUTTONUP: - case WM_NCRBUTTONDBLCLK: - case WM_NCXBUTTONDOWN: - case WM_NCXBUTTONUP: - case WM_NCXBUTTONDBLCLK: - case WM_NCMOUSEHOVER: - case WM_NCMOUSELEAVE: - case WM_NCMOUSEMOVE: - case WM_NCPOINTERUPDATE: - case WM_NCPOINTERDOWN: - case WM_NCPOINTERUP: - if (App::wnd() && App::wnd()->psHwnd()) { - if (msg == WM_NCLBUTTONDOWN) { - ::SetForegroundWindow(App::wnd()->psHwnd()); - } - LRESULT res = SendMessage(App::wnd()->psHwnd(), msg, wParam, lParam); - return res; - } - return 0; - break; - case WM_ACTIVATE: - if (App::wnd() && App::wnd()->psHwnd() && wParam == WA_ACTIVE) { - if ((HWND)lParam != App::wnd()->psHwnd()) { - ::SetForegroundWindow(hwnd); - ::SetWindowPos(App::wnd()->psHwnd(), hwnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); - } - } - return DefWindowProc(hwnd, msg, wParam, lParam); - break; - default: - return DefWindowProc(hwnd, msg, wParam, lParam); - } - return 0; - } - - QColor _shActive(0, 0, 0), _shInactive(0, 0, 0); - - typedef BOOL (FAR STDAPICALLTYPE *f_dwmDefWindowProc)(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, _Out_ LRESULT *plResult); - f_dwmDefWindowProc dwmDefWindowProc; - - typedef HRESULT (FAR STDAPICALLTYPE *f_dwmSetWindowAttribute)(HWND hWnd, DWORD dwAttribute, _In_ LPCVOID pvAttribute, DWORD cbAttribute); - f_dwmSetWindowAttribute dwmSetWindowAttribute; - - typedef HRESULT (FAR STDAPICALLTYPE *f_dwmExtendFrameIntoClientArea)(HWND hWnd, const MARGINS *pMarInset); - f_dwmExtendFrameIntoClientArea dwmExtendFrameIntoClientArea; - - typedef HRESULT (FAR STDAPICALLTYPE *f_setWindowTheme)(HWND hWnd, LPCWSTR pszSubAppName, LPCWSTR pszSubIdList); - f_setWindowTheme setWindowTheme; - - typedef HRESULT (FAR STDAPICALLTYPE *f_openAs_RunDLL)(HWND hWnd, HINSTANCE hInstance, LPCWSTR lpszCmdLine, int nCmdShow); - f_openAs_RunDLL openAs_RunDLL; - - typedef HRESULT (FAR STDAPICALLTYPE *f_shOpenWithDialog)(HWND hwndParent, const OPENASINFO *poainfo); - f_shOpenWithDialog shOpenWithDialog; - - template - bool loadFunction(HINSTANCE dll, LPCSTR name, TFunction &func) { - if (!dll) return false; - - func = (TFunction)GetProcAddress(dll, name); - return !!func; - } - - class _PsInitializer { - public: - _PsInitializer() { - setupDWM(); - useDWM = true; - frameless = !useDWM; - - setupUx(); - setupOpenAs(); - } - void setupDWM() { - HINSTANCE procId = LoadLibrary(L"DWMAPI.DLL"); - - if (!loadFunction(procId, "DwmDefWindowProc", dwmDefWindowProc)) return; - if (!loadFunction(procId, "DwmSetWindowAttribute", dwmSetWindowAttribute)) return; - if (!loadFunction(procId, "DwmExtendFrameIntoClientArea", dwmExtendFrameIntoClientArea)) return; - useDWM = true; - } - void setupUx() { - HINSTANCE procId = LoadLibrary(L"UXTHEME.DLL"); - - if (!loadFunction(procId, "SetWindowTheme", setWindowTheme)) return; - useTheme = true; - } - void setupOpenAs() { - HINSTANCE procId = LoadLibrary(L"SHELL32.DLL"); - - if (!loadFunction(procId, "SHOpenWithDialog", shOpenWithDialog) && !loadFunction(procId, "OpenAs_RunDLLW", openAs_RunDLL)) return; - useOpenAs = true; - } - }; - _PsInitializer _psInitializer; - - class _PsEventFilter : public QAbstractNativeEventFilter { + class _PsEventFilter : public QAbstractNativeEventFilter { public: _PsEventFilter() { } @@ -627,7 +34,7 @@ namespace { bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) { Window *wnd = Application::wnd(); if (!wnd) return false; - +/* MSG *msg = (MSG*)message; if (msg->message == WM_ENDSESSION) { App::quit(); @@ -635,10 +42,10 @@ namespace { } if (msg->hwnd == wnd->psHwnd() || msg->hwnd && !wnd->psHwnd()) { return mainWindowEvent(msg->hwnd, msg->message, msg->wParam, msg->lParam, (LRESULT*)result); - } + }*/ return false; } - +/* bool mainWindowEvent(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, LRESULT *result) { if (tbCreatedMsgId && msg == tbCreatedMsgId) { if (CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_ALL, IID_ITaskbarList3, (void**)&tbListInterface) != S_OK) { @@ -655,49 +62,9 @@ namespace { if (LOWORD(wParam) == WA_CLICKACTIVE) { App::wnd()->inactivePress(true); } - Application::wnd()->psUpdateMargins(); - if (LOWORD(wParam) != WA_INACTIVE) { - _psShadowWindows.setColor(_shActive); - _psShadowWindows.update(_PsShadowActivate); - } else { - _psShadowWindows.setColor(_shInactive); - } - QTimer::singleShot(0, Application::wnd(), SLOT(psUpdateCounter())); - Application::wnd()->update(); - } return false; - - case WM_NCPAINT: if (QSysInfo::WindowsVersion >= QSysInfo::WV_WINDOWS8) return false; *result = 0; return true; - - case WM_NCCALCSIZE: if (!useDWM) return false; { - if (wParam == TRUE) { - LPNCCALCSIZE_PARAMS params = (LPNCCALCSIZE_PARAMS)lParam; - params->rgrc[0].left += margins.left() - simpleMargins.left(); - params->rgrc[0].top += margins.top() - simpleMargins.top(); - params->rgrc[0].right -= margins.right() - simpleMargins.right(); - params->rgrc[0].bottom -= margins.bottom() - simpleMargins.bottom(); - } else if (wParam == FALSE) { - LPRECT rect = (LPRECT)lParam; - - rect->left += margins.left() - simpleMargins.left(); - rect->top += margins.top() - simpleMargins.top(); - rect->right += margins.right() - simpleMargins.right(); - rect->bottom += margins.bottom() - simpleMargins.bottom(); - } - *result = 0; - } return true; - - case WM_NCACTIVATE: { - Application::wnd()->psUpdateMargins(); - *result = LRESULT(TRUE); - Application::wnd()->repaint(); - } return true; - - case WM_WINDOWPOSCHANGING: - case WM_WINDOWPOSCHANGED: { - _psShadowWindows.update(_PsShadowMoved | _PsShadowResized, (WINDOWPOS*)lParam); } return false; - case WM_SIZE: { + case WM_SIZE: { if (App::wnd()) { if (wParam == SIZE_MAXIMIZED || wParam == SIZE_RESTORED || wParam == SIZE_MINIMIZED) { if (wParam != SIZE_RESTORED || App::wnd()->windowState() != Qt::WindowNoState) { @@ -717,147 +84,71 @@ namespace { } } return false; - case WM_SHOWWINDOW: { - LONG style = GetWindowLong(hWnd, GWL_STYLE); - int changes = _PsShadowResized | ((wParam && !(style & (WS_MAXIMIZE | WS_MINIMIZE))) ? _PsShadowShown : _PsShadowHidden); - _psShadowWindows.update(changes); - } return false; - case WM_MOVE: { _psShadowWindows.update(_PsShadowMoved); App::wnd()->psUpdatedPosition(); } return false; - - case WM_NCHITTEST: { - POINTS p = MAKEPOINTS(lParam); - RECT r; - GetWindowRect(hWnd, &r); - HitTestType res = Application::wnd()->hitTest(QPoint(p.x - r.left + dleft, p.y - r.top + dtop)); - switch (res) { - case HitTestClient: - case HitTestSysButton: *result = HTCLIENT; break; - case HitTestIcon: *result = HTCAPTION; break; - case HitTestCaption: *result = HTCAPTION; break; - case HitTestTop: *result = HTTOP; break; - case HitTestTopRight: *result = HTTOPRIGHT; break; - case HitTestRight: *result = HTRIGHT; break; - case HitTestBottomRight: *result = HTBOTTOMRIGHT; break; - case HitTestBottom: *result = HTBOTTOM; break; - case HitTestBottomLeft: *result = HTBOTTOMLEFT; break; - case HitTestLeft: *result = HTLEFT; break; - case HitTestTopLeft: *result = HTTOPLEFT; break; - case HitTestNone: - default: *result = HTTRANSPARENT; break; - }; - } return true; - - case WM_NCRBUTTONUP: { - SendMessage(hWnd, WM_SYSCOMMAND, SC_MOUSEMENU, lParam); - } return true; - - case WM_NCLBUTTONDOWN: { - POINTS p = MAKEPOINTS(lParam); - RECT r; - GetWindowRect(hWnd, &r); - HitTestType res = Application::wnd()->hitTest(QPoint(p.x - r.left + dleft, p.y - r.top + dtop)); - switch (res) { - case HitTestIcon: - if (menuHidden && getms() < menuHidden + 10) { - menuHidden = 0; - if (getms() < menuShown + GetDoubleClickTime()) { - Application::wnd()->close(); - } - } else { - QRect icon = Application::wnd()->iconRect(); - p.x = r.left - dleft + icon.left(); - p.y = r.top - dtop + icon.top() + icon.height(); - Application::wnd()->psUpdateSysMenu(Application::wnd()->windowHandle()->windowState()); - menuShown = getms(); - menuHidden = 0; - TrackPopupMenu(Application::wnd()->psMenu(), TPM_LEFTALIGN | TPM_TOPALIGN | TPM_LEFTBUTTON, p.x, p.y, 0, hWnd, 0); - menuHidden = getms(); - } - return true; - }; - } return false; - - case WM_NCLBUTTONDBLCLK: { - POINTS p = MAKEPOINTS(lParam); - RECT r; - GetWindowRect(hWnd, &r); - HitTestType res = Application::wnd()->hitTest(QPoint(p.x - r.left + dleft, p.y - r.top + dtop)); - switch (res) { - case HitTestIcon: Application::wnd()->close(); return true; - }; - } return false; - - case WM_SYSCOMMAND: { - if (wParam == SC_MOUSEMENU) { - POINTS p = MAKEPOINTS(lParam); - Application::wnd()->psUpdateSysMenu(Application::wnd()->windowHandle()->windowState()); - TrackPopupMenu(Application::wnd()->psMenu(), TPM_LEFTALIGN | TPM_TOPALIGN | TPM_LEFTBUTTON, p.x, p.y, 0, hWnd, 0); - } - } return false; - - case WM_COMMAND: { - if (HIWORD(wParam)) return false; - int cmd = LOWORD(wParam); - switch (cmd) { - case SC_CLOSE: Application::wnd()->close(); return true; - case SC_MINIMIZE: Application::wnd()->setWindowState(Qt::WindowMinimized); return true; - case SC_MAXIMIZE: Application::wnd()->setWindowState(Qt::WindowMaximized); return true; - case SC_RESTORE: Application::wnd()->setWindowState(Qt::WindowNoState); return true; - } - } return true; - - } + } return false; - } + }*/ }; - _PsEventFilter *_psEventFilter = 0;*/ + _PsEventFilter *_psEventFilter = 0; }; -PsMainWindow::PsMainWindow(QWidget *parent) : QMainWindow(parent), icon256(qsl(":/gui/art/iconround256.png")), - trayIcon(0), trayIconMenu(0), posInited(false) { +void MacPrivate::activeSpaceChanged() { + if (App::wnd()) { + App::wnd()->psActivateNotifies(); + } +} + +void MacPrivate::notifyClicked(unsigned long long peer) { + History *history = App::history(PeerId(peer)); + + App::wnd()->showFromTray(); + App::wnd()->hideSettings(); + App::main()->showPeer(history->peer->id, false, true); + App::wnd()->psClearNotify(history); +} + +void MacPrivate::notifyReplied(unsigned long long peer, const char *str) { + +} + +PsMainWindow::PsMainWindow(QWidget *parent) : QMainWindow(parent), +posInited(false), trayIcon(0), trayIconMenu(0), icon256(qsl(":/gui/art/iconround256.png")) { + //tbCreatedMsgId = RegisterWindowMessage(L"TaskbarButtonCreated"); icon16 = icon256.scaledToWidth(16, Qt::SmoothTransformation); icon32 = icon256.scaledToWidth(32, Qt::SmoothTransformation); - //connect(&psIdleTimer, SIGNAL(timeout()), this, SLOT(psIdleTimeout())); - //psIdleTimer.setSingleShot(false); + connect(&psIdleTimer, SIGNAL(timeout()), this, SLOT(psIdleTimeout())); + psIdleTimer.setSingleShot(false); + connect(¬ifyWaitTimer, SIGNAL(timeout()), this, SLOT(psNotifyFire())); + notifyWaitTimer.setSingleShot(true); } void PsMainWindow::psIdleTimeout() { - /*LASTINPUTINFO lii; - lii.cbSize = sizeof(LASTINPUTINFO); - BOOL res = GetLastInputInfo(&lii); - if (res) { - uint64 ticks = GetTickCount(); - if (lii.dwTime >= ticks - IdleMsecs) { - psIdle = false; - psIdleTimer.stop(); - if (App::main()) App::main()->setOnline(); + int64 idleTime = _idleTime(); + if (idleTime >= 0) { + if (idleTime <= IdleMsecs) { + psIdle = false; + psIdleTimer.stop(); + if (App::main()) App::main()->setOnline(); } - }*/ + } } -bool PsMainWindow::psIsActive() const { - return isActiveWindow() && isVisible() && !(windowState() & Qt::WindowMinimized); -} - -bool PsMainWindow::psIsOnline(int windowState) const { - if (windowState < 0) windowState = this->windowState(); - if (windowState & Qt::WindowMinimized) { +bool PsMainWindow::psIsOnline(int state) const { + if (state < 0) state = this->windowState(); + if (state & Qt::WindowMinimized) { return false; } else if (!isVisible()) { return false; } - /*LASTINPUTINFO lii; - lii.cbSize = sizeof(LASTINPUTINFO); - BOOL res = GetLastInputInfo(&lii); - if (res) { - uint64 ticks = GetTickCount(); - if (lii.dwTime < ticks - IdleMsecs) { + int64 idleTime = _idleTime(); + LOG(("App Info: idle time %1").arg(idleTime)); + if (idleTime >= 0) { + if (idleTime > IdleMsecs) { if (!psIdle) { psIdle = true; psIdleTimer.start(900); @@ -867,10 +158,15 @@ bool PsMainWindow::psIsOnline(int windowState) const { psIdle = false; psIdleTimer.stop(); } - }*/ + } return true; } +bool PsMainWindow::psIsActive(int state) const { + if (state < 0) state = this->windowState(); + return isActiveWindow() && isVisible() && !(state & Qt::WindowMinimized); +} + void PsMainWindow::psRefreshTaskbarIcon() { /*QWidget *w = new QWidget(this); w->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint); @@ -918,115 +214,13 @@ void PsMainWindow::psUpdateWorkmode() { }*/ } -/*HICON qt_pixmapToWinHICON(const QPixmap &); -static HICON _qt_createHIcon(const QIcon &icon, int xSize, int ySize) { - if (!icon.isNull()) { - const QPixmap pm = icon.pixmap(icon.actualSize(QSize(xSize, ySize))); - if (!pm.isNull()) - return qt_pixmapToWinHICON(pm); - } - return 0; -}*/ - void PsMainWindow::psUpdateCounter() { int32 counter = App::histories().unreadFull; - style::color bg = (App::histories().unreadMuted < counter) ? st::counterBG : st::counterMuteBG; - QIcon icon; - QImage cicon16(icon16), cicon32(icon32); - if (counter > 0) { - { - QString cnt = (counter < 1000) ? QString("%1").arg(counter) : QString("..%1").arg(counter % 100, 2, 10, QChar('0')); - QPainter p16(&cicon16); - p16.setBrush(bg->b); - p16.setPen(Qt::NoPen); - p16.setRenderHint(QPainter::Antialiasing); - int32 fontSize = 8; - style::font f(fontSize); - int32 w = f->m.width(cnt), d = 2, r = 3; - p16.drawRoundedRect(QRect(16 - w - d * 2, 16 - f->height, w + d * 2, f->height), r, r); - p16.setFont(f->f); - p16.setPen(st::counterColor->p); + setWindowTitle((counter > 0) ? qsl("Telegram (%1)").arg(counter) : qsl("Telegram")); - p16.drawText(16 - w - d, 16 - f->height + f->ascent, cnt); - } - /*if (!tbListInterface) { - QString cnt = (counter < 10000) ? QString("%1").arg(counter) : ((counter < 1000000) ? QString("%1K").arg(counter / 1000) : QString("%1M").arg(counter / 1000000)); - QPainter p32(&cicon32); - style::font f(10); - int32 w = f->m.width(cnt), d = 3, r = 6; - p32.setBrush(bg->b); - p32.setPen(Qt::NoPen); - p32.setRenderHint(QPainter::Antialiasing); - p32.drawRoundedRect(QRect(32 - w - d * 2, 0, w + d * 2, f->height - 1), r, r); - p32.setPen(st::counterColor->p); - p32.setFont(f->f); - p32.drawText(32 - w - d, f->ascent - 1, cnt); - }*/ - } - icon.addPixmap(QPixmap::fromImage(cicon16)); - icon.addPixmap(QPixmap::fromImage(cicon32)); - if (trayIcon) { - QIcon ticon; - QImage ticon16(icon16); - if (counter > 0) { - QString cnt = (counter < 1000) ? QString("%1").arg(counter) : QString("..%1").arg(counter % 100, 2, 10, QChar('0')); - { - QPainter p16(&ticon16); - p16.setBrush(bg->b); - p16.setPen(Qt::NoPen); - p16.setRenderHint(QPainter::Antialiasing); - int32 fontSize = 8; - style::font f(fontSize); - int32 w = f->m.width(cnt), d = 2, r = 3; - p16.drawRoundedRect(QRect(16 - w - d * 2, 16 - f->height, w + d * 2, f->height), r, r); - p16.setFont(f->f); - - p16.setPen(st::counterColor->p); - - p16.drawText(16 - w - d, 16 - f->height + f->ascent, cnt); - } - } - ticon.addPixmap(QPixmap::fromImage(ticon16)); - ticon.addPixmap(QPixmap::fromImage(cicon32)); - trayIcon->setIcon(ticon); - } - - /*setWindowTitle((counter > 0) ? qsl("Telegram (%1)").arg(counter) : qsl("Telegram")); - psDestroyIcons(); - ps_iconSmall = _qt_createHIcon(icon, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON)); - ps_iconBig = _qt_createHIcon(icon, GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON)); - SendMessage(ps_hWnd, WM_SETICON, 0, (LPARAM)ps_iconSmall); - SendMessage(ps_hWnd, WM_SETICON, 1, (LPARAM)(ps_iconBig ? ps_iconBig : ps_iconSmall)); - if (tbListInterface) { - if (counter > 0) { - QString cnt = (counter < 1000) ? QString("%1").arg(counter) : QString("..%1").arg(counter % 100, 2, 10, QChar('0')); - QImage oicon16(16, 16, QImage::Format_ARGB32); - int32 cntSize = cnt.size(); - oicon16.fill(st::transparent->c); - { - QPainter p16(&oicon16); - p16.setBrush(bg->b); - p16.setPen(Qt::NoPen); - p16.setRenderHint(QPainter::Antialiasing); - int32 fontSize = (cntSize < 2) ? 12 : ((cntSize < 3) ? 12 : 8); - style::font f(fontSize); - int32 w = f->m.width(cnt), d = (cntSize < 2) ? 5 : ((cntSize < 3) ? 2 : 2), r = (cntSize < 2) ? 8 : ((cntSize < 3) ? 7 : 3); - p16.drawRoundedRect(QRect(16 - w - d * 2, 16 - f->height, w + d * 2, f->height), r, r); - p16.setFont(f->f); - - p16.setPen(st::counterColor->p); - - p16.drawText(16 - w - d, 16 - f->height + f->ascent, cnt); - } - QIcon oicon(QPixmap::fromImage(oicon16)); - ps_iconOverlay = _qt_createHIcon(oicon, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON)); - } - QString description = counter > 0 ? QString("%1 unread messages").arg(counter) : qsl("No unread messages"); - static WCHAR descriptionArr[1024]; - description.toWCharArray(descriptionArr); - tbListInterface->SetOverlayIcon(ps_hWnd, ps_iconOverlay, descriptionArr); - }*/ + QString cnt = (counter < 1000) ? QString("%1").arg(counter) : QString("..%1").arg(counter % 100, 2, 10, QChar('0')); + _private.setWindowBadge(counter ? cnt.toUtf8().constData() : ""); } /*namespace { @@ -1085,28 +279,20 @@ void PsMainWindow::psInitSize() { } void PsMainWindow::psInitFrameless() { - /*psUpdatedPositionTimer.setSingleShot(true); + psUpdatedPositionTimer.setSingleShot(true); connect(&psUpdatedPositionTimer, SIGNAL(timeout()), this, SLOT(psSavePosition())); - QPlatformNativeInterface *i = QGuiApplication::platformNativeInterface(); - ps_hWnd = static_cast(i->nativeResourceForWindow(QByteArrayLiteral("handle"), windowHandle())); - - if (!ps_hWnd) return; - if (frameless) { - setWindowFlags(Qt::FramelessWindowHint); +// setWindowFlags(Qt::FramelessWindowHint); } -// RegisterApplicationRestart(NULL, 0); - - psInitSysMenu();*/ connect(windowHandle(), SIGNAL(windowStateChanged(Qt::WindowState)), this, SLOT(psStateChanged(Qt::WindowState))); } void PsMainWindow::psSavePosition(Qt::WindowState state) { - /*if (state == Qt::WindowActive) state = windowHandle()->windowState(); + if (state == Qt::WindowActive) state = windowHandle()->windowState(); if (state == Qt::WindowMinimized || !posInited) return; - +/* TWindowPos pos(cWindowPos()), curPos = pos; if (state == Qt::WindowMaximized) { @@ -1154,14 +340,11 @@ void PsMainWindow::psStateChanged(Qt::WindowState state) { psSavePosition(state);*/ } -//Q_DECLARE_METATYPE(QMargins); void PsMainWindow::psFirstShow() { - //_psShadowWindows.init(_shActive); finished = false; - //psUpdateMargins(); + psUpdateMargins(); - //_psShadowWindows.update(_PsShadowHidden); bool showShadows = true; show(); @@ -1185,196 +368,146 @@ void PsMainWindow::psFirstShow() { show(); } posInited = true; - //if (showShadows) { - // _psShadowWindows.update(_PsShadowMoved | _PsShadowResized | _PsShadowShown); - //} } bool PsMainWindow::psHandleTitle() { - //return useDWM; return true; } void PsMainWindow::psInitSysMenu() { - /*Qt::WindowStates states = windowState(); - ps_menu = GetSystemMenu(ps_hWnd, FALSE); - psUpdateSysMenu(windowHandle()->windowState());*/ } void PsMainWindow::psUpdateSysMenu(Qt::WindowState state) { - /*if (!ps_menu) return; - - int menuToDisable = SC_RESTORE; - if (state == Qt::WindowMaximized) { - menuToDisable = SC_MAXIMIZE; - } else if (state == Qt::WindowMinimized) { - menuToDisable = SC_MINIMIZE; - } - int itemCount = GetMenuItemCount(ps_menu); - for (int i = 0; i < itemCount; ++i) { - MENUITEMINFO itemInfo = {0}; - itemInfo.cbSize = sizeof(itemInfo); - itemInfo.fMask = MIIM_TYPE | MIIM_STATE | MIIM_ID; - if (GetMenuItemInfo(ps_menu, i, TRUE, &itemInfo)) { - if (itemInfo.fType & MFT_SEPARATOR) { - continue; - } - if (itemInfo.wID && !(itemInfo.fState & MFS_DEFAULT)) { - UINT fOldState = itemInfo.fState, fState = itemInfo.fState & ~MFS_DISABLED; - if (itemInfo.wID == SC_CLOSE) { - fState |= MFS_DEFAULT; - } else if (itemInfo.wID == menuToDisable || (itemInfo.wID != SC_MINIMIZE && itemInfo.wID != SC_MAXIMIZE && itemInfo.wID != SC_RESTORE)) { - fState |= MFS_DISABLED; - } - itemInfo.fMask = MIIM_STATE; - itemInfo.fState = fState; - if (!SetMenuItemInfo(ps_menu, i, TRUE, &itemInfo)) { - DEBUG_LOG(("PS Error: could not set state %1 to menu item %2, old state %3, error %4").arg(fState).arg(itemInfo.wID).arg(fOldState).arg(GetLastError())); - DestroyMenu(ps_menu); - ps_menu = 0; - break; - } - } - } else { - DEBUG_LOG(("PS Error: could not get state, menu item %1 of %2, error %3").arg(i).arg(itemCount).arg(GetLastError())); - DestroyMenu(ps_menu); - ps_menu = 0; - break; - } - }*/ } void PsMainWindow::psUpdateMargins() { - /*if (!useDWM) return; - - RECT r, a; - - GetClientRect(ps_hWnd, &r); - a = r; - - LONG style = GetWindowLong(ps_hWnd, GWL_STYLE), styleEx = GetWindowLong(ps_hWnd, GWL_EXSTYLE); - AdjustWindowRectEx(&a, style, false, styleEx); - simpleMargins = QMargins(a.left - r.left, a.top - r.top, r.right - a.right, r.bottom - a.bottom); - if (style & WS_MAXIMIZE) { - RECT w, m; - GetWindowRect(ps_hWnd, &w); - m = w; - - HMONITOR hMonitor = MonitorFromRect(&w, MONITOR_DEFAULTTONEAREST); - if (hMonitor) { - MONITORINFO mi; - mi.cbSize = sizeof(mi); - GetMonitorInfo(hMonitor, &mi); - m = mi.rcWork; - } - - dleft = w.left - m.left; - dtop = w.top - m.top; - - margins.setLeft(simpleMargins.left() - w.left + m.left); - margins.setRight(simpleMargins.right() - m.right + w.right); - margins.setBottom(simpleMargins.bottom() - m.bottom + w.bottom); - margins.setTop(simpleMargins.top() - w.top + m.top); - } else { - margins = simpleMargins; - dleft = dtop = 0; - } - - QPlatformNativeInterface *i = QGuiApplication::platformNativeInterface(); - i->setWindowProperty(windowHandle()->handle(), "WindowsCustomMargins", QVariant::fromValue(margins)); - if (!themeInited) { - themeInited = true; - if (useTheme) { - if (QSysInfo::WindowsVersion < QSysInfo::WV_WINDOWS8) { - setWindowTheme(ps_hWnd, L" ", L" "); - QApplication::setStyle(QStyleFactory::create("Windows")); - } - } - }*/ } void PsMainWindow::psFlash() { - /*if (GetForegroundWindow() == ps_hWnd) return; - - FLASHWINFO info; - info.cbSize = sizeof(info); - info.hwnd = ps_hWnd; - info.dwFlags = FLASHW_ALL; - info.dwTimeout = 0; - info.uCount = 1; - FlashWindowEx(&info);*/ + _private.startBounce(); } -/*HWND PsMainWindow::psHwnd() const { - return ps_hWnd; -} - -HMENU PsMainWindow::psMenu() const { - return ps_menu; -}*/ - -/*void PsMainWindow::psDestroyIcons() { - if (ps_iconBig) { - DestroyIcon(ps_iconBig); - ps_iconBig = 0; - } - if (ps_iconSmall) { - DestroyIcon(ps_iconSmall); - ps_iconSmall = 0; - } - if (ps_iconOverlay) { - DestroyIcon(ps_iconOverlay); - ps_iconOverlay = 0; - } -}*/ - PsMainWindow::~PsMainWindow() { finished = true; - //if (ps_menu) DestroyMenu(ps_menu); - //psDestroyIcons(); - //_psShadowWindows.destroy(); - //psClearNotifyFast(); - //if (ps_tbHider_hWnd) DestroyWindow(ps_tbHider_hWnd); + psClearNotifyFast(); } -void PsMainWindow::psNotify(History *history) { - /*if (App::quiting()) return; - if (!cDesktopNotify()) { - history->clearNotifyFrom(); +void PsMainWindow::psNotify(History *history, MsgId msgId) { + if (App::quiting() || !history->notifyFrom) return; + + bool haveSetting = (history->peer->notify != UnknownNotifySettings); + if (haveSetting) { + if (history->peer->notify != EmptyNotifySettings && history->peer->notify->mute > unixtime()) { + history->clearNotifyFrom(); + return; + } + } else { + App::wnd()->getNotifySetting(MTP_inputNotifyPeer(history->peer->input)); } - if (notifyHistories.constFind(history) != notifyHistories.cend()) return; - notifyHistories.insert(history); - psShowNextNotify();*/ + + uint64 ms = getms() + NotifyWaitTimeout; + notifyWhenAlerts[history].insert(ms); + if (cDesktopNotify()) { + NotifyWhenMaps::iterator i = notifyWhenMaps.find(history); + if (i == notifyWhenMaps.end()) { + i = notifyWhenMaps.insert(history, NotifyWhenMap()); + } + if (i.value().constFind(msgId) == i.value().cend()) { + i.value().insert(msgId, ms); + } + NotifyWaiters *addTo = haveSetting ? ¬ifyWaiters : ¬ifySettingWaiters; + if (addTo->constFind(history) == addTo->cend()) { + addTo->insert(history, NotifyWaiter(msgId, ms)); + } + } + if (haveSetting) { + if (!notifyWaitTimer.isActive()) { + notifyWaitTimer.start(NotifyWaitTimeout); + } + } +} + +void PsMainWindow::psNotifyFire() { + psShowNextNotify(); +} + +void PsMainWindow::psNotifySettingGot() { + int32 t = unixtime(); + for (NotifyWaiters::iterator i = notifySettingWaiters.begin(); i != notifySettingWaiters.end();) { + History *history = i.key(); + if (history->peer->notify == UnknownNotifySettings) { + ++i; + } else { + if (history->peer->notify == EmptyNotifySettings || history->peer->notify->mute <= t) { + notifyWaiters.insert(i.key(), i.value()); + } + i = notifySettingWaiters.erase(i); + } + } + notifyWaitTimer.stop(); + psShowNextNotify(); } void PsMainWindow::psClearNotify(History *history) { - /*if (!history) { + if (!history) { for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { (*i)->unlinkHistory(); } - for (NotifyHistories::const_iterator i = notifyHistories.cbegin(), e = notifyHistories.cend(); i != e; ++i) { - (*i)->clearNotifyFrom(); + _private.clearNotifies(); + for (NotifyWhenMaps::const_iterator i = notifyWhenMaps.cbegin(), e = notifyWhenMaps.cend(); i != e; ++i) { + i.key()->clearNotifyFrom(); } - notifyHistories.clear(); + notifyWaiters.clear(); + notifySettingWaiters.clear(); + notifyWhenMaps.clear(); return; } - notifyHistories.remove(history); + notifyWaiters.remove(history); + notifySettingWaiters.remove(history); for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { (*i)->unlinkHistory(history); - }*/ + } + _private.clearNotifies(history->peer->id); + notifyWhenMaps.remove(history); + notifyWhenAlerts.remove(history); } void PsMainWindow::psClearNotifyFast() { - /*notifyHistories.clear(); + notifyWaiters.clear(); + notifySettingWaiters.clear(); for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { (*i)->deleteLater(); } - notifyWindows.clear();*/ + _private.clearNotifies(); + notifyWindows.clear(); + notifyWhenMaps.clear(); + notifyWhenAlerts.clear(); } -/*void PsMainWindow::psShowNextNotify(PsNotifyWindow *remove) { - if (App::quiting()) return; +void PsMainWindow::psActivateNotifies() { + if (cCustomNotifies()) { + for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { + _private.activateWnd((*i)->winId()); + } + } +} +namespace { + QRect _monitorRect; + uint64 _monitorLastGot = 0; + QRect _desktopRect() { + uint64 tnow = getms(); + if (tnow > _monitorLastGot + 1000 || tnow < _monitorLastGot) { + _monitorLastGot = tnow; + _monitorRect = QApplication::desktop()->availableGeometry(App::wnd()); + } + return _monitorRect; + } +} + +void PsMainWindow::psShowNextNotify(PsNotifyWindow *remove) { + if (App::quiting()) return; + int32 count = NotifyWindows; if (remove) { for (PsNotifyWindows::iterator i = notifyWindows.begin(), e = notifyWindows.end(); i != e; ++i) { @@ -1384,73 +517,186 @@ void PsMainWindow::psClearNotifyFast() { } } } - QRect r = QApplication::desktop()->availableGeometry(App::wnd()); - int32 x = r.width() - st::notifyWidth - st::notifyDeltaX, y = r.bottom() - st::notifyHeight - st::notifyDeltaY; - for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { - int32 ind = (*i)->index(); - if (ind < 0) continue; - --count; - } - while (count > 0) { - HistoryItem *notify = 0; - for (NotifyHistories::iterator i = notifyHistories.begin(), e = notifyHistories.end(); i != e;) { - if ((*i)->notifyFrom) { - if (!notify || (*i)->notifyFrom->date < notify->date) { - notify = (*i)->notifyFrom; - } - ++i; - } else { - i = notifyHistories.erase(i); + + uint64 ms = getms(), nextAlert = 0; + bool alert = false; + for (NotifyWhenAlerts::iterator i = notifyWhenAlerts.begin(); i != notifyWhenAlerts.end();) { + while (!i.value().isEmpty() && *i.value().begin() <= ms) { + i.value().erase(i.value().begin()); + NotifySettingsPtr n = i.key()->peer->notify; + if (n == EmptyNotifySettings || (n != UnknownNotifySettings && n->mute <= unixtime())) { + alert = true; } } - if (notify) { - notifyWindows.push_back(new PsNotifyWindow(notify, x, y)); - notify->history()->getNextNotifyFrom(); - --count; + if (i.value().isEmpty()) { + i = notifyWhenAlerts.erase(i); + } else { + if (!nextAlert || nextAlert > *i.value().begin()) { + nextAlert = *i.value().begin(); + } + ++i; + } + } + if (alert) { + psFlash(); + App::playSound(); + } + + if (cCustomNotifies()) { + for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { + int32 ind = (*i)->index(); + if (ind < 0) continue; + --count; + } + } + if (count <= 0 || !cDesktopNotify()) { + if (nextAlert) { + notifyWaitTimer.start(nextAlert - ms); + } + return; + } + + QRect r = _desktopRect(); + int32 x = r.x() + r.width() - st::notifyWidth - st::notifyDeltaX, y = r.y() + r.height() - st::notifyHeight - st::notifyDeltaY; + while (count > 0) { + uint64 next = 0; + HistoryItem *notifyItem = 0; + NotifyWaiters::iterator notifyWaiter; + for (NotifyWaiters::iterator i = notifyWaiters.begin(); i != notifyWaiters.end(); ++i) { + History *history = i.key(); + if (history->notifyFrom && history->notifyFrom->id != i.value().msg) { + NotifyWhenMaps::iterator j = notifyWhenMaps.find(history); + if (j == notifyWhenMaps.end()) { + history->clearNotifyFrom(); + i = notifyWaiters.erase(i); + continue; + } + do { + NotifyWhenMap::const_iterator k = j.value().constFind(history->notifyFrom->id); + if (k != j.value().cend()) { + i.value().msg = k.key(); + i.value().when = k.value(); + break; + } + history->getNextNotifyFrom(); + } while (history->notifyFrom); + } + if (!history->notifyFrom) { + notifyWhenMaps.remove(history); + i = notifyWaiters.erase(i); + continue; + } + uint64 when = i.value().when; + if (!notifyItem || next > when) { + next = when; + notifyItem = history->notifyFrom; + notifyWaiter = i; + } + } + if (notifyItem) { + if (next > ms) { + if (nextAlert && nextAlert < next) { + next = nextAlert; + nextAlert = 0; + } + notifyWaitTimer.start(next - ms); + break; + } else { + if (cCustomNotifies()) { + PsNotifyWindow *notify = new PsNotifyWindow(notifyItem, x, y); + notifyWindows.push_back(notify); + notify->hide(); + _private.holdOnTop(notify->winId()); + notify->show(); + _private.showOverAll(notify->winId()); + --count; + } else { + _private.showNotify(notifyItem->history()->peer->id, notifyItem->history()->peer->name.toUtf8().constData(), notifyItem->notificationHeader().toUtf8().constData(), notifyItem->notificationText().toUtf8().constData()); + } + + uint64 ms = getms(); + History *history = notifyItem->history(); + history->getNextNotifyFrom(); + NotifyWhenMaps::iterator j = notifyWhenMaps.find(history); + if (j == notifyWhenMaps.end() || !history->notifyFrom) { + history->clearNotifyFrom(); + notifyWaiters.erase(notifyWaiter); + if (j != notifyWhenMaps.end()) notifyWhenMaps.erase(j); + continue; + } + j.value().remove(notifyItem->id); + do { + NotifyWhenMap::const_iterator k = j.value().constFind(history->notifyFrom->id); + if (k != j.value().cend()) { + notifyWaiter.value().msg = k.key(); + notifyWaiter.value().when = k.value(); + break; + } + history->getNextNotifyFrom(); + } while (history->notifyFrom); + if (!history->notifyFrom) { + notifyWaiters.erase(notifyWaiter); + notifyWhenMaps.erase(j); + continue; + } + } } else { break; } } + if (nextAlert) { + notifyWaitTimer.start(nextAlert - ms); + } + count = NotifyWindows - count; for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { int32 ind = (*i)->index(); if (ind < 0) continue; --count; (*i)->moveTo(x, y - count * (st::notifyHeight + st::notifyDeltaY)); - } -}*/ + } +} void PsMainWindow::psStopHiding() { - /*for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { - (*i)->stopHiding(); - }*/ + if (cCustomNotifies()) { + for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { + (*i)->stopHiding(); + } + } } void PsMainWindow::psStartHiding() { - /*for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { - (*i)->startHiding(); - }*/ + if (cCustomNotifies()) { + for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { + (*i)->startHiding(); + } + } } void PsMainWindow::psUpdateNotifies() { - /*for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { - (*i)->updatePeerPhoto(); - }*/ + if (cCustomNotifies()) { + for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { + (*i)->updatePeerPhoto(); + } + } } -/*PsNotifyWindow::PsNotifyWindow(HistoryItem *item, int32 x, int32 y) : history(item->history()), aOpacity(0), _index(0), hiding(false), started(GetTickCount()), - alphaDuration(st::notifyFastAnim), posDuration(st::notifyFastAnim), aY(y + st::notifyHeight + st::notifyDeltaY), close(this, st::notifyClose), aOpacityFunc(st::notifyFastAnimFunc) { - +PsNotifyWindow::PsNotifyWindow(HistoryItem *item, int32 x, int32 y) : history(item->history()), aOpacity(0), _index(0), hiding(false),// started(GetTickCount()), +alphaDuration(st::notifyFastAnim), posDuration(st::notifyFastAnim), aY(y + st::notifyHeight + st::notifyDeltaY), close(this, st::notifyClose), aOpacityFunc(st::notifyFastAnimFunc) { + int32 w = st::notifyWidth, h = st::notifyHeight; - QImage img(w, h, QImage::Format_ARGB32_Premultiplied); + QImage img(w * cRetinaFactor(), h * cRetinaFactor(), QImage::Format_ARGB32_Premultiplied); + if (cRetina()) { + img.setDevicePixelRatio(cRetinaFactor()); + } img.fill(st::notifyBG->c); - + { QPainter p(&img); p.setPen(st::notifyBorder->p); p.setBrush(Qt::NoBrush); p.drawRect(0, 0, w - 1, h - 1); - + if (history->peer->photo->loaded()) { p.drawPixmap(st::notifyPhotoPos.x(), st::notifyPhotoPos.y(), history->peer->photo->pix(st::notifyPhotoSize)); } else { @@ -1458,15 +704,15 @@ void PsMainWindow::psUpdateNotifies() { peerPhoto = history->peer->photo; peerPhoto->load(true, true); } - + int32 itemWidth = w - st::notifyPhotoPos.x() - st::notifyPhotoSize - st::notifyTextLeft - st::notifyClosePos.x() - st::notifyClose.width; - + QRect rectForName(st::notifyPhotoPos.x() + st::notifyPhotoSize + st::notifyTextLeft, st::notifyTextTop, itemWidth, st::msgNameFont->height); if (history->peer->chat) { p.drawPixmap(QPoint(rectForName.left() + st::dlgChatImgLeft, rectForName.top() + st::dlgChatImgTop), App::sprite(), st::dlgChatImg); rectForName.setLeft(rectForName.left() + st::dlgChatImgSkip); } - + QDateTime now(QDateTime::currentDateTime()), lastTime(item->date); QDate nowDate(now.date()), lastDate(lastTime.date()); QString dt = lastTime.toString(qsl("hh:mm")); @@ -1475,49 +721,48 @@ void PsMainWindow::psUpdateNotifies() { p.setFont(st::dlgDateFont->f); p.setPen(st::dlgDateColor->p); p.drawText(rectForName.left() + rectForName.width() + st::dlgDateSkip, rectForName.top() + st::dlgHistFont->ascent, dt); - + const HistoryItem *textCachedFor = 0; Text itemTextCache(itemWidth); bool active = false; item->drawInDialog(p, QRect(st::notifyPhotoPos.x() + st::notifyPhotoSize + st::notifyTextLeft, st::notifyItemTop + st::msgNameFont->height, itemWidth, 2 * st::dlgFont->height), active, textCachedFor, itemTextCache); - + p.setPen(st::dlgNameColor->p); history->nameText.drawElided(p, rectForName.left(), rectForName.top(), rectForName.width()); } pm = QPixmap::fromImage(img); - + hideTimer.setSingleShot(true); connect(&hideTimer, SIGNAL(timeout()), this, SLOT(hideByTimer())); - + inputTimer.setSingleShot(true); connect(&inputTimer, SIGNAL(timeout()), this, SLOT(checkLastInput())); - + connect(&close, SIGNAL(clicked()), this, SLOT(unlinkHistory())); close.setAcceptBoth(true); close.move(w - st::notifyClose.width - st::notifyClosePos.x(), st::notifyClosePos.y()); close.show(); - + aY.start(y); setGeometry(x, aY.current(), st::notifyWidth, st::notifyHeight); - + aOpacity.start(1); setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint); - + setAttribute(Qt::WA_MacAlwaysShowToolWindow); + show(); - + setWindowOpacity(aOpacity.current()); - + alphaDuration = posDuration = st::notifyFastAnim; anim::start(this); - + checkLastInput(); } void PsNotifyWindow::checkLastInput() { - LASTINPUTINFO lii; - lii.cbSize = sizeof(LASTINPUTINFO); - BOOL res = GetLastInputInfo(&lii); - if (!res || lii.dwTime >= started) { + // TODO + if (true) { hideTimer.start(st::notifyWaitLongHide); } else { inputTimer.start(300); @@ -1556,12 +801,12 @@ void PsNotifyWindow::unlinkHistory(History *hist) { } } -void PsNotifyWindow::enterEvent(QEvent *e) { +void PsNotifyWindow::enterEvent(QEvent */*e*/) { if (!history) return; if (App::wnd()) App::wnd()->psStopHiding(); } -void PsNotifyWindow::leaveEvent(QEvent *e) { +void PsNotifyWindow::leaveEvent(QEvent */*e*/) { if (!history) return; App::wnd()->psStartHiding(); } @@ -1578,6 +823,7 @@ void PsNotifyWindow::mousePressEvent(QMouseEvent *e) { App::wnd()->showFromTray(); App::wnd()->hideSettings(); App::main()->showPeer(history->peer->id, false, true); + unlinkHistory(); e->ignore(); } } @@ -1631,28 +877,28 @@ bool PsNotifyWindow::animStep(float64 ms) { } move(x(), aY.current()); update(); - return (dtAlpha < 1 || !hiding && dtPos < 1); + return (dtAlpha < 1 || (!hiding && dtPos < 1)); } PsNotifyWindow::~PsNotifyWindow() { if (App::wnd()) App::wnd()->psShowNextNotify(this); -}*/ +} -PsApplication::PsApplication(int argc, char *argv[]) : QApplication(argc, argv) { +PsApplication::PsApplication(int &argc, char **argv) : QApplication(argc, argv) { } void PsApplication::psInstallEventFilter() { - /*delete _psEventFilter; + delete _psEventFilter; _psEventFilter = new _PsEventFilter(); - installNativeEventFilter(_psEventFilter);*/ + installNativeEventFilter(_psEventFilter); } PsApplication::~PsApplication() { - //delete _psEventFilter; - //_psEventFilter = 0; + delete _psEventFilter; + _psEventFilter = 0; } -PsUpdateDownloader::PsUpdateDownloader(QThread *thread, const MTPDhelp_appUpdate &update) : already(0), reply(0), full(0) { +PsUpdateDownloader::PsUpdateDownloader(QThread *thread, const MTPDhelp_appUpdate &update) : reply(0), already(0), full(0) { updateUrl = qs(update.vurl); moveToThread(thread); manager.moveToThread(thread); @@ -1662,7 +908,7 @@ PsUpdateDownloader::PsUpdateDownloader(QThread *thread, const MTPDhelp_appUpdate initOutput(); } -PsUpdateDownloader::PsUpdateDownloader(QThread *thread, const QString &url) : already(0), reply(0), full(0) { +PsUpdateDownloader::PsUpdateDownloader(QThread *thread, const QString &url) : reply(0), already(0), full(0) { updateUrl = url; moveToThread(thread); manager.moveToThread(thread); @@ -2212,17 +1458,15 @@ QString psAppDataPath() { return QString(); } -QString psCurrentExeDirectory() { - /*LPWSTR *args; - int argsCount; - args = CommandLineToArgvW(GetCommandLine(), &argsCount); - if (args) { - QFileInfo info(QDir::fromNativeSeparators(QString::fromWCharArray(args[0]))); - if (info.isFile()) { - return info.absoluteDir().absolutePath() + '/'; - } - LocalFree(args); - }*/ +QString psCurrentExeDirectory(int argc, char *argv[]) { + QString first = argc ? QString::fromLocal8Bit(argv[0]) : QString(); + if (!first.isEmpty()) { + QFileInfo info(first); + if (info.exists()) { + QDir result(info.absolutePath() + qsl("/../../..")); + return result.absolutePath() + '/'; + } + } return QString(); } diff --git a/Telegram/SourceFiles/pspecific_mac.h b/Telegram/SourceFiles/pspecific_mac.h index 276ddc274..5d3ff10b1 100644 --- a/Telegram/SourceFiles/pspecific_mac.h +++ b/Telegram/SourceFiles/pspecific_mac.h @@ -1,5 +1,24 @@ +/* +This file is part of Telegram Desktop, +an unofficial desktop 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://tdesktop.com +*/ #pragma once +#include "pspecific_mac_p.h" + inline QString psServerPrefix() { return qsl("/tmp/"); } @@ -10,44 +29,44 @@ inline void psCheckLocalSocket(const QString &serverName) { } } -/* + class PsNotifyWindow : public QWidget, public Animated { Q_OBJECT - + public: - + PsNotifyWindow(HistoryItem *item, int32 x, int32 y); - + void enterEvent(QEvent *e); void leaveEvent(QEvent *e); void mousePressEvent(QMouseEvent *e); void paintEvent(QPaintEvent *e); - + bool animStep(float64 ms); void animHide(float64 duration, anim::transition func); void startHiding(); void stopHiding(); void moveTo(int32 x, int32 y, int32 index = -1); - + void updatePeerPhoto(); - + int32 index() const { return history ? _index : -1; } - + ~PsNotifyWindow(); - -public slots: - + + public slots: + void hideByTimer(); void checkLastInput(); - + void unlinkHistory(History *hist = 0); - + private: - - DWORD started; - + +// DWORD started; + History *history; IconedButton close; QPixmap pm; @@ -59,10 +78,19 @@ private: anim::transition aOpacityFunc; anim::ivalue aY; ImagePtr peerPhoto; - + }; -typedef QList PsNotifyWindows;*/ +typedef QList PsNotifyWindows; + +class MacPrivate : public PsMacWindowPrivate { +public: + + void activeSpaceChanged(); + void notifyClicked(unsigned long long peer); + void notifyReplied(unsigned long long peer, const char *str); + +}; class PsMainWindow : public QMainWindow { Q_OBJECT @@ -76,8 +104,6 @@ public: void psInitFrameless(); void psInitSize(); - //HWND psHwnd() const; - //HMENU psMenu() const; void psFirstShow(); void psInitSysMenu(); @@ -88,9 +114,10 @@ public: bool psHandleTitle(); void psFlash(); + void psNotifySettingGot(); - bool psIsActive() const; - bool psIsOnline(int windowState) const; + bool psIsActive(int state = -1) const; + bool psIsOnline(int state) const; void psUpdateWorkmode(); @@ -99,18 +126,19 @@ public: return false; } - void psNotify(History *history); + void psNotify(History *history, MsgId msgId); void psClearNotify(History *history = 0); void psClearNotifyFast(); - //void psShowNextNotify(PsNotifyWindow *remove = 0); + void psShowNextNotify(PsNotifyWindow *remove = 0); + void psActivateNotifies(); void psStopHiding(); void psStartHiding(); - void psUpdateNotifies(); + void psUpdateNotifies(); bool psPosInited() const { return posInited; } - + ~PsMainWindow(); public slots: @@ -119,6 +147,7 @@ public slots: void psUpdateCounter(); void psSavePosition(Qt::WindowState state = Qt::WindowActive); void psIdleTimeout(); + void psNotifyFire(); protected: @@ -128,23 +157,34 @@ protected: QImage icon16, icon32, icon256; virtual void setupTrayIcon() { } -/* - typedef QSet NotifyHistories; - NotifyHistories notifyHistories; + + typedef QMap NotifyWhenMap; + typedef QMap NotifyWhenMaps; + NotifyWhenMaps notifyWhenMaps; + struct NotifyWaiter { + NotifyWaiter(MsgId msg, uint64 when) : msg(msg), when(when) { + } + MsgId msg; + uint64 when; + }; + typedef QMap NotifyWaiters; + NotifyWaiters notifyWaiters; + NotifyWaiters notifySettingWaiters; + QTimer notifyWaitTimer; + + typedef QSet NotifyWhenAlert; + typedef QMap NotifyWhenAlerts; + NotifyWhenAlerts notifyWhenAlerts; + PsNotifyWindows notifyWindows; - QTimer psUpdatedPositionTimer;*/ + QTimer psUpdatedPositionTimer; -/*private: - HWND ps_hWnd; - HWND ps_tbHider_hWnd; - HMENU ps_menu; - HICON ps_iconBig, ps_iconSmall, ps_iconOverlay; +private: + MacPrivate _private; mutable bool psIdle; mutable QTimer psIdleTimer; - - void psDestroyIcons();*/ }; @@ -153,7 +193,7 @@ class PsApplication : public QApplication { public: - PsApplication(int argc, char *argv[]); + PsApplication(int &argc, char **argv); void psInstallEventFilter(); ~PsApplication(); @@ -212,7 +252,7 @@ QString psLocalServerPrefix(); QString psCurrentCountry(); QString psCurrentLanguage(); QString psAppDataPath(); -QString psCurrentExeDirectory(); +QString psCurrentExeDirectory(int argc, char *argv[]); void psAutoStart(bool start, bool silent = false); int psCleanup(); diff --git a/Telegram/SourceFiles/pspecific_mac.mm b/Telegram/SourceFiles/pspecific_mac.mm new file mode 100644 index 000000000..e145ff29c --- /dev/null +++ b/Telegram/SourceFiles/pspecific_mac.mm @@ -0,0 +1,2466 @@ +#include "stdafx.h" +#include "pspecific.h" + +#include "lang.h" +#include "application.h" +#include "mainwidget.h" + +#define min(a, b) ((a) < (b) ? (a) : (b)) +#define max(a, b) ((a) < (b) ? (b) : (a)) + +namespace { + bool frameless = true; + bool useDWM = false; + bool useTheme = false; + bool useOpenAs = false; + bool themeInited = false; + bool finished = true; + int menuShown = 0, menuHidden = 0; + int dleft = 0, dtop = 0; + QMargins simpleMargins, margins; + //HICON bigIcon = 0, smallIcon = 0, overlayIcon = 0; + + //UINT tbCreatedMsgId = 0; + //ITaskbarList3 *tbListInterface = 0; + + /*HWND createTaskbarHider() { + HINSTANCE appinst = (HINSTANCE)GetModuleHandle(0); + HWND hWnd = 0; + + QString cn = QString("TelegramTaskbarHider"); + LPCWSTR _cn = (LPCWSTR)cn.utf16(); + WNDCLASSEX wc; + + wc.cbSize = sizeof(wc); + wc.style = 0; + wc.lpfnWndProc = DefWindowProc; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = appinst; + wc.hIcon = 0; + wc.hCursor = 0; + wc.hbrBackground = 0; + wc.lpszMenuName = NULL; + wc.lpszClassName = _cn; + wc.hIconSm = 0; + if (!RegisterClassEx(&wc)) { + DEBUG_LOG(("Application Error: could not register taskbar hider window class, error: %1").arg(GetLastError())); + return hWnd; + } + + hWnd = CreateWindowEx(WS_EX_TOOLWINDOW, _cn, 0, WS_POPUP, 0, 0, 0, 0, 0, 0, appinst, 0); + if (!hWnd) { + DEBUG_LOG(("Application Error: could not create taskbar hider window class, error: %1").arg(GetLastError())); + return hWnd; + } + return hWnd; + } + + enum { + _PsShadowMoved = 0x01, + _PsShadowResized = 0x02, + _PsShadowShown = 0x04, + _PsShadowHidden = 0x08, + _PsShadowActivate = 0x10, + }; + + enum { + _PsInitHor = 0x01, + _PsInitVer = 0x02, + }; + + int32 _psSize = 0; + class _PsShadowWindows { + public: + + _PsShadowWindows() : screenDC(0), max_w(0), max_h(0), _x(0), _y(0), _w(0), _h(0), hidden(true), r(0), g(0), b(0), noKeyColor(RGB(255, 255, 255)) { + for (int i = 0; i < 4; ++i) { + dcs[i] = 0; + bitmaps[i] = 0; + hwnds[i] = 0; + } + } + + void setColor(QColor c) { + r = c.red(); + g = c.green(); + b = c.blue(); + + if (!hwnds[0]) return; + Gdiplus::SolidBrush brush(Gdiplus::Color(_alphas[0], r, g, b)); + for (int i = 0; i < 4; ++i) { + Gdiplus::Graphics graphics(dcs[i]); + graphics.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); + if ((i % 2) && _h || !(i % 2) && _w) { + graphics.FillRectangle(&brush, 0, 0, (i % 2) ? _size : _w, (i % 2) ? _h : _size); + } + } + initCorners(); + + _x = _y = _w = _h = 0; + update(_PsShadowMoved | _PsShadowResized); + } + + bool init(QColor c) { + style::rect topLeft = st::wndShadow; + _fullsize = topLeft.width(); + _shift = st::wndShadowShift; + QImage cornersImage(_fullsize, _fullsize, QImage::Format_ARGB32_Premultiplied); + { + QPainter p(&cornersImage); + p.drawPixmap(QPoint(0, 0), App::sprite(), topLeft); + } + uchar *bits = cornersImage.bits(); + if (bits) { + for ( + quint32 *p = (quint32*)bits, *end = (quint32*)(bits + cornersImage.byteCount()); + p < end; + ++p + ) { + *p = (*p ^ 0x00ffffff) << 24; + } + } + + _metaSize = _fullsize + 2 * _shift; + _alphas.reserve(_metaSize); + _colors.reserve(_metaSize * _metaSize); + for (int32 j = 0; j < _metaSize; ++j) { + for (int32 i = 0; i < _metaSize; ++i) { + _colors.push_back((i < 2 * _shift || j < 2 * _shift) ? 1 : qMax(BYTE(1), BYTE(cornersImage.pixel(QPoint(i - 2 * _shift, j - 2 * _shift)) >> 24))); + } + } + uchar prev = 0; + for (int32 i = 0; i < _metaSize; ++i) { + uchar a = _colors[(_metaSize - 1) * _metaSize + i]; + if (a < prev) break; + + _alphas.push_back(a); + prev = a; + } + _psSize = _size = _alphas.size() - 2 * _shift; + + setColor(c); + + Gdiplus::GdiplusStartupInput gdiplusStartupInput; + ULONG_PTR gdiplusToken; + Gdiplus::Status gdiRes = Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); + + if (gdiRes != Gdiplus::Ok) { + DEBUG_LOG(("Application Error: could not init GDI+, error: %1").arg((int)gdiRes)); + return false; + } + blend.AlphaFormat = AC_SRC_ALPHA; + blend.SourceConstantAlpha = 255; + blend.BlendFlags = 0; + blend.BlendOp = AC_SRC_OVER; + + screenDC = GetDC(0); + if (!screenDC) return false; + + QRect avail(QDesktopWidget().availableGeometry()); + max_w = avail.width(); + if (max_w < st::wndMinWidth) max_w = st::wndMinWidth; + max_h = avail.height(); + if (max_h < st::wndMinHeight) max_h = st::wndMinHeight; + + HINSTANCE appinst = (HINSTANCE)GetModuleHandle(0); + + for (int i = 0; i < 4; ++i) { + QString cn = QString("TelegramShadow%1").arg(i); + LPCWSTR _cn = (LPCWSTR)cn.utf16(); + WNDCLASSEX wc; + + wc.cbSize = sizeof(wc); + wc.style = 0; + wc.lpfnWndProc = wndProc; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = appinst; + wc.hIcon = 0; + wc.hCursor = 0; + wc.hbrBackground = 0; + wc.lpszMenuName = NULL; + wc.lpszClassName = _cn; + wc.hIconSm = 0; + if (!RegisterClassEx(&wc)) { + DEBUG_LOG(("Application Error: could not register shadow window class %1, error: %2").arg(i).arg(GetLastError())); + destroy(); + return false; + } + + hwnds[i] = CreateWindowEx(WS_EX_LAYERED | WS_EX_TOOLWINDOW, _cn, 0, WS_POPUP, 0, 0, 0, 0, 0, 0, appinst, 0); + if (!hwnds[i]) { + DEBUG_LOG(("Application Error: could not create shadow window class %1, error: %2").arg(i).arg(GetLastError())); + destroy(); + return false; + } + + dcs[i] = CreateCompatibleDC(screenDC); + if (!dcs[i]) { + DEBUG_LOG(("Application Error: could not create dc for shadow window class %1, error: %2").arg(i).arg(GetLastError())); + destroy(); + return false; + } + + bitmaps[i] = CreateCompatibleBitmap(screenDC, (i % 2) ? _size : max_w, (i % 2) ? max_h : _size); + if (!bitmaps[i]) { + DEBUG_LOG(("Application Error: could not create bitmap for shadow window class %1, error: %2").arg(i).arg(GetLastError())); + destroy(); + return false; + } + + SelectObject(dcs[i], bitmaps[i]); + } + + initCorners(); + return true; + } + + void initCorners(int directions = (_PsInitHor | _PsInitVer)) { + bool hor = (directions & _PsInitHor), ver = (directions & _PsInitVer); + Gdiplus::Graphics graphics0(dcs[0]), graphics1(dcs[1]), graphics2(dcs[2]), graphics3(dcs[3]); + graphics0.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); + graphics1.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); + graphics2.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); + graphics3.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); + + Gdiplus::SolidBrush brush(Gdiplus::Color(_alphas[0], r, g, b)); + if (hor) graphics0.FillRectangle(&brush, 0, 0, _fullsize - (_size - _shift), 2 * _shift); + + if (ver) { + graphics1.FillRectangle(&brush, 0, 0, _size, 2 * _shift); + graphics3.FillRectangle(&brush, 0, 0, _size, 2 * _shift); + graphics1.FillRectangle(&brush, _size - _shift, 2 * _shift, _shift, _fullsize); + graphics3.FillRectangle(&brush, 0, 2 * _shift, _shift, _fullsize); + } + + if (hor) { + for (int j = 2 * _shift; j < _size; ++j) { + for (int k = 0; k < _fullsize - (_size - _shift); ++k) { + brush.SetColor(Gdiplus::Color(_colors[j * _metaSize + k + (_size + _shift)], r, g, b)); + graphics0.FillRectangle(&brush, k, j, 1, 1); + graphics2.FillRectangle(&brush, k, _size - (j - 2 * _shift) - 1, 1, 1); + } + } + for (int j = _size; j < _size + 2 * _shift; ++j) { + for (int k = 0; k < _fullsize - (_size - _shift); ++k) { + brush.SetColor(Gdiplus::Color(_colors[j * _metaSize + k + (_size + _shift)], r, g, b)); + graphics2.FillRectangle(&brush, k, _size - (j - 2 * _shift) - 1, 1, 1); + } + } + } + if (ver) { + for (int j = 2 * _shift; j < _fullsize + 2 * _shift; ++j) { + for (int k = _shift; k < _size; ++k) { + brush.SetColor(Gdiplus::Color(_colors[j * _metaSize + (k + _shift)], r, g, b)); + graphics1.FillRectangle(&brush, _size - k - 1, j, 1, 1); + graphics3.FillRectangle(&brush, k, j, 1, 1); + } + } + } + } + void verCorners(int h, Gdiplus::Graphics *pgraphics1, Gdiplus::Graphics *pgraphics3) { + Gdiplus::SolidBrush brush(Gdiplus::Color(_alphas[0], r, g, b)); + pgraphics1->FillRectangle(&brush, _size - _shift, h - _fullsize, _shift, _fullsize); + pgraphics3->FillRectangle(&brush, 0, h - _fullsize, _shift, _fullsize); + for (int j = 0; j < _fullsize; ++j) { + for (int k = _shift; k < _size; ++k) { + brush.SetColor(Gdiplus::Color(_colors[(j + 2 * _shift) * _metaSize + k + _shift], r, g, b)); + pgraphics1->FillRectangle(&brush, _size - k - 1, h - j - 1, 1, 1); + pgraphics3->FillRectangle(&brush, k, h - j - 1, 1, 1); + } + } + } + void horCorners(int w, Gdiplus::Graphics *pgraphics0, Gdiplus::Graphics *pgraphics2) { + Gdiplus::SolidBrush brush(Gdiplus::Color(_alphas[0], r, g, b)); + pgraphics0->FillRectangle(&brush, w - 2 * _size - (_fullsize - (_size - _shift)), 0, _fullsize - (_size - _shift), 2 * _shift); + for (int j = 2 * _shift; j < _size; ++j) { + for (int k = 0; k < _fullsize - (_size - _shift); ++k) { + brush.SetColor(Gdiplus::Color(_colors[j * _metaSize + k + (_size + _shift)], r, g, b)); + pgraphics0->FillRectangle(&brush, w - 2 * _size - k - 1, j, 1, 1); + pgraphics2->FillRectangle(&brush, w - 2 * _size - k - 1, _size - (j - 2 * _shift) - 1, 1, 1); + } + } + for (int j = _size; j < _size + 2 * _shift; ++j) { + for (int k = 0; k < _fullsize - (_size - _shift); ++k) { + brush.SetColor(Gdiplus::Color(_colors[j * _metaSize + k + (_size + _shift)], r, g, b)); + pgraphics2->FillRectangle(&brush, w - 2 * _size - k - 1, _size - (j - 2 * _shift) - 1, 1, 1); + } + } + } + + void update(int changes, WINDOWPOS *pos = 0) { + HWND hwnd = Application::wnd() ? Application::wnd()->psHwnd() : 0; + if (!hwnd || !hwnds[0]) return; + + if (changes == _PsShadowActivate) { + for (int i = 0; i < 4; ++i) { + SetWindowPos(hwnds[i], hwnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); + } + return; + } + + if (changes & _PsShadowHidden) { + if (!hidden) { + for (int i = 0; i < 4; ++i) { + hidden = true; + ShowWindow(hwnds[i], SW_HIDE); + } + } + return; + } + if (!Application::wnd()->psPosInited()) return; + + int x = _x, y = _y, w = _w, h = _h; + if (pos && (!(pos->flags & SWP_NOMOVE) || !(pos->flags & SWP_NOSIZE) || !(pos->flags & SWP_NOREPOSITION))) { + if (!(pos->flags & SWP_NOMOVE)) { + x = pos->x - _size; + y = pos->y - _size; + } else if (pos->flags & SWP_NOSIZE) { + for (int i = 0; i < 4; ++i) { + SetWindowPos(hwnds[i], hwnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); + } + return; + } + if (!(pos->flags & SWP_NOSIZE)) { + w = pos->cx + 2 * _size; + h = pos->cy + 2 * _size; + } + } else { + RECT r; + GetWindowRect(hwnd, &r); + x = r.left - _size; + y = r.top - _size; + w = r.right + _size - x; + h = r.bottom + _size - y; + } + if (h < 2 * _fullsize + 2 * _shift) { + h = 2 * _fullsize + 2 * _shift; + } + if (w < 2 * (_fullsize + _shift)) { + w = 2 * (_fullsize + _shift); + } + + if (w != _w) { + int from = (_w > 2 * (_fullsize + _shift)) ? (_w - _size - _fullsize - _shift) : (_fullsize - (_size - _shift)); + int to = w - _size - _fullsize - _shift; + if (w > max_w) { + from = _fullsize - (_size - _shift); + max_w *= 2; + for (int i = 0; i < 4; i += 2) { + DeleteObject(bitmaps[i]); + bitmaps[i] = CreateCompatibleBitmap(screenDC, max_w, _size); + SelectObject(dcs[i], bitmaps[i]); + } + initCorners(_PsInitHor); + } + Gdiplus::Graphics graphics0(dcs[0]), graphics2(dcs[2]); + graphics0.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); + graphics2.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); + Gdiplus::SolidBrush brush(Gdiplus::Color(_alphas[0], r, g, b)); + if (to > from) { + graphics0.FillRectangle(&brush, from, 0, to - from, 2 * _shift); + for (int i = 2 * _shift; i < _size; ++i) { + Gdiplus::Pen pen(Gdiplus::Color(_alphas[i], r, g, b)); + graphics0.DrawLine(&pen, from, i, to, i); + graphics2.DrawLine(&pen, from, _size - (i - 2 * _shift) - 1, to, _size - (i - 2 * _shift) - 1); + } + for (int i = _size; i < _size + 2 * _shift; ++i) { + Gdiplus::Pen pen(Gdiplus::Color(_alphas[i], r, g, b)); + graphics2.DrawLine(&pen, from, _size - (i - 2 * _shift) - 1, to, _size - (i - 2 * _shift) - 1); + } + } + if (_w > w) { + graphics0.FillRectangle(&brush, w - _size - _fullsize - _shift, 0, _fullsize - (_size - _shift), _size); + graphics2.FillRectangle(&brush, w - _size - _fullsize - _shift, 0, _fullsize - (_size - _shift), _size); + } + horCorners(w, &graphics0, &graphics2); + POINT p0 = { x + _size, y }, p2 = { x + _size, y + h - _size }, f = { 0, 0 }; + SIZE s = { w - 2 * _size, _size }; + updateWindow(0, &p0, &s); + updateWindow(2, &p2, &s); + } else if (x != _x || y != _y) { + POINT p0 = { x + _size, y }, p2 = { x + _size, y + h - _size }; + updateWindow(0, &p0); + updateWindow(2, &p2); + } else if (h != _h) { + POINT p2 = { x + _size, y + h - _size }; + updateWindow(2, &p2); + } + + if (h != _h) { + int from = (_h > 2 * _fullsize + 2 * _shift) ? (_h - _fullsize) : (_fullsize + 2 * _shift); + int to = h - _fullsize; + if (h > max_h) { + from = (_fullsize + 2 * _shift); + max_h *= 2; + for (int i = 1; i < 4; i += 2) { + DeleteObject(bitmaps[i]); + bitmaps[i] = CreateCompatibleBitmap(dcs[i], _size, max_h); + SelectObject(dcs[i], bitmaps[i]); + } + initCorners(_PsInitVer); + } + Gdiplus::Graphics graphics1(dcs[1]), graphics3(dcs[3]); + graphics1.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); + graphics3.SetCompositingMode(Gdiplus::CompositingModeSourceCopy); + + Gdiplus::SolidBrush brush(Gdiplus::Color(_alphas[0], r, g, b)); + if (to > from) { + graphics1.FillRectangle(&brush, _size - _shift, from, _shift, to - from); + graphics3.FillRectangle(&brush, 0, from, _shift, to - from); + for (int i = 2 * _shift; i < _size + _shift; ++i) { + Gdiplus::Pen pen(Gdiplus::Color(_alphas[i], r, g, b)); + graphics1.DrawLine(&pen, _size + _shift - i - 1, from, _size + _shift - i - 1, to); + graphics3.DrawLine(&pen, i - _shift, from, i - _shift, to); + } + } + if (_h > h) { + graphics1.FillRectangle(&brush, 0, h - _fullsize, _size, _fullsize); + graphics3.FillRectangle(&brush, 0, h - _fullsize, _size, _fullsize); + } + verCorners(h, &graphics1, &graphics3); + + POINT p1 = {x + w - _size, y}, p3 = {x, y}, f = {0, 0}; + SIZE s = { _size, h }; + updateWindow(1, &p1, &s); + updateWindow(3, &p3, &s); + } else if (x != _x || y != _y) { + POINT p1 = { x + w - _size, y }, p3 = { x, y }; + updateWindow(1, &p1); + updateWindow(3, &p3); + } else if (w != _w) { + POINT p1 = { x + w - _size, y }; + updateWindow(1, &p1); + } + _x = x; + _y = y; + _w = w; + _h = h; + + if (hidden && (changes & _PsShadowShown)) { + for (int i = 0; i < 4; ++i) { + SetWindowPos(hwnds[i], hwnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW | SWP_NOACTIVATE); + } + hidden = false; + } + } + + void updateWindow(int i, POINT *p, SIZE *s = 0) { + static POINT f = {0, 0}; + if (s) { + UpdateLayeredWindow(hwnds[i], (s ? screenDC : 0), p, s, (s ? dcs[i] : 0), (s ? (&f) : 0), noKeyColor, &blend, ULW_ALPHA); + } else { + SetWindowPos(hwnds[i], 0, p->x, p->y, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER); + } + } + + void destroy() { + for (int i = 0; i < 4; ++i) { + if (dcs[i]) DeleteDC(dcs[i]); + if (bitmaps[i]) DeleteObject(bitmaps[i]); + if (hwnds[i]) DestroyWindow(hwnds[i]); + dcs[i] = 0; + bitmaps[i] = 0; + hwnds[i] = 0; + } + if (screenDC) ReleaseDC(0, screenDC); + } + + private: + + int _x, _y, _w, _h; + int _metaSize, _fullsize, _size, _shift; + QVector _alphas, _colors; + + bool hidden; + + HWND hwnds[4]; + HDC dcs[4], screenDC; + HBITMAP bitmaps[4]; + int max_w, max_h; + BLENDFUNCTION blend; + + BYTE r, g, b; + COLORREF noKeyColor; + + static LRESULT CALLBACK _PsShadowWindows::wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); + + }; + _PsShadowWindows _psShadowWindows; + + LRESULT CALLBACK _PsShadowWindows::wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { + if (finished) return DefWindowProc(hwnd, msg, wParam, lParam); + + int i; + for (i = 0; i < 4; ++i) { + if (_psShadowWindows.hwnds[i] && hwnd == _psShadowWindows.hwnds[i]) { + break; + } + } + if (i == 4) return DefWindowProc(hwnd, msg, wParam, lParam); + + switch (msg) { + case WM_CLOSE: + Application::wnd()->close(); + break; + case WM_NCHITTEST: { + int32 xPos = GET_X_LPARAM(lParam), yPos = GET_Y_LPARAM(lParam); + switch (i) { + case 0: return HTTOP; + case 1: return (yPos < _psShadowWindows._y + _psSize) ? HTTOPRIGHT : ((yPos >= _psShadowWindows._y + _psShadowWindows._h - _psSize) ? HTBOTTOMRIGHT : HTRIGHT); + case 2: return HTBOTTOM; + case 3: return (yPos < _psShadowWindows._y + _psSize) ? HTTOPLEFT : ((yPos >= _psShadowWindows._y + _psShadowWindows._h - _psSize) ? HTBOTTOMLEFT : HTLEFT); + } + return HTTRANSPARENT; + } break; + + case WM_NCACTIVATE: return DefWindowProc(hwnd, msg, wParam, lParam); + case WM_NCLBUTTONDOWN: + case WM_NCLBUTTONUP: + case WM_NCLBUTTONDBLCLK: + case WM_NCMBUTTONDOWN: + case WM_NCMBUTTONUP: + case WM_NCMBUTTONDBLCLK: + case WM_NCRBUTTONDOWN: + case WM_NCRBUTTONUP: + case WM_NCRBUTTONDBLCLK: + case WM_NCXBUTTONDOWN: + case WM_NCXBUTTONUP: + case WM_NCXBUTTONDBLCLK: + case WM_NCMOUSEHOVER: + case WM_NCMOUSELEAVE: + case WM_NCMOUSEMOVE: + case WM_NCPOINTERUPDATE: + case WM_NCPOINTERDOWN: + case WM_NCPOINTERUP: + if (App::wnd() && App::wnd()->psHwnd()) { + if (msg == WM_NCLBUTTONDOWN) { + ::SetForegroundWindow(App::wnd()->psHwnd()); + } + LRESULT res = SendMessage(App::wnd()->psHwnd(), msg, wParam, lParam); + return res; + } + return 0; + break; + case WM_ACTIVATE: + if (App::wnd() && App::wnd()->psHwnd() && wParam == WA_ACTIVE) { + if ((HWND)lParam != App::wnd()->psHwnd()) { + ::SetForegroundWindow(hwnd); + ::SetWindowPos(App::wnd()->psHwnd(), hwnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); + } + } + return DefWindowProc(hwnd, msg, wParam, lParam); + break; + default: + return DefWindowProc(hwnd, msg, wParam, lParam); + } + return 0; + } + + QColor _shActive(0, 0, 0), _shInactive(0, 0, 0); + + typedef BOOL (FAR STDAPICALLTYPE *f_dwmDefWindowProc)(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, _Out_ LRESULT *plResult); + f_dwmDefWindowProc dwmDefWindowProc; + + typedef HRESULT (FAR STDAPICALLTYPE *f_dwmSetWindowAttribute)(HWND hWnd, DWORD dwAttribute, _In_ LPCVOID pvAttribute, DWORD cbAttribute); + f_dwmSetWindowAttribute dwmSetWindowAttribute; + + typedef HRESULT (FAR STDAPICALLTYPE *f_dwmExtendFrameIntoClientArea)(HWND hWnd, const MARGINS *pMarInset); + f_dwmExtendFrameIntoClientArea dwmExtendFrameIntoClientArea; + + typedef HRESULT (FAR STDAPICALLTYPE *f_setWindowTheme)(HWND hWnd, LPCWSTR pszSubAppName, LPCWSTR pszSubIdList); + f_setWindowTheme setWindowTheme; + + typedef HRESULT (FAR STDAPICALLTYPE *f_openAs_RunDLL)(HWND hWnd, HINSTANCE hInstance, LPCWSTR lpszCmdLine, int nCmdShow); + f_openAs_RunDLL openAs_RunDLL; + + typedef HRESULT (FAR STDAPICALLTYPE *f_shOpenWithDialog)(HWND hwndParent, const OPENASINFO *poainfo); + f_shOpenWithDialog shOpenWithDialog; + + template + bool loadFunction(HINSTANCE dll, LPCSTR name, TFunction &func) { + if (!dll) return false; + + func = (TFunction)GetProcAddress(dll, name); + return !!func; + } + + class _PsInitializer { + public: + _PsInitializer() { + setupDWM(); + useDWM = true; + frameless = !useDWM; + + setupUx(); + setupOpenAs(); + } + void setupDWM() { + HINSTANCE procId = LoadLibrary(L"DWMAPI.DLL"); + + if (!loadFunction(procId, "DwmDefWindowProc", dwmDefWindowProc)) return; + if (!loadFunction(procId, "DwmSetWindowAttribute", dwmSetWindowAttribute)) return; + if (!loadFunction(procId, "DwmExtendFrameIntoClientArea", dwmExtendFrameIntoClientArea)) return; + useDWM = true; + } + void setupUx() { + HINSTANCE procId = LoadLibrary(L"UXTHEME.DLL"); + + if (!loadFunction(procId, "SetWindowTheme", setWindowTheme)) return; + useTheme = true; + } + void setupOpenAs() { + HINSTANCE procId = LoadLibrary(L"SHELL32.DLL"); + + if (!loadFunction(procId, "SHOpenWithDialog", shOpenWithDialog) && !loadFunction(procId, "OpenAs_RunDLLW", openAs_RunDLL)) return; + useOpenAs = true; + } + }; + _PsInitializer _psInitializer; + + class _PsEventFilter : public QAbstractNativeEventFilter { + public: + _PsEventFilter() { + } + + bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) { + Window *wnd = Application::wnd(); + if (!wnd) return false; + + MSG *msg = (MSG*)message; + if (msg->message == WM_ENDSESSION) { + App::quit(); + return false; + } + if (msg->hwnd == wnd->psHwnd() || msg->hwnd && !wnd->psHwnd()) { + return mainWindowEvent(msg->hwnd, msg->message, msg->wParam, msg->lParam, (LRESULT*)result); + } + return false; + } + + bool mainWindowEvent(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, LRESULT *result) { + if (tbCreatedMsgId && msg == tbCreatedMsgId) { + if (CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_ALL, IID_ITaskbarList3, (void**)&tbListInterface) != S_OK) { + tbListInterface = 0; + } + } + switch (msg) { + + case WM_DESTROY: { + App::quit(); + } return false; + + case WM_ACTIVATE: { + if (LOWORD(wParam) == WA_CLICKACTIVE) { + App::wnd()->inactivePress(true); + } + Application::wnd()->psUpdateMargins(); + if (LOWORD(wParam) != WA_INACTIVE) { + _psShadowWindows.setColor(_shActive); + _psShadowWindows.update(_PsShadowActivate); + } else { + _psShadowWindows.setColor(_shInactive); + } + QTimer::singleShot(0, Application::wnd(), SLOT(psUpdateCounter())); + Application::wnd()->update(); + } return false; + + case WM_NCPAINT: if (QSysInfo::WindowsVersion >= QSysInfo::WV_WINDOWS8) return false; *result = 0; return true; + + case WM_NCCALCSIZE: if (!useDWM) return false; { + if (wParam == TRUE) { + LPNCCALCSIZE_PARAMS params = (LPNCCALCSIZE_PARAMS)lParam; + params->rgrc[0].left += margins.left() - simpleMargins.left(); + params->rgrc[0].top += margins.top() - simpleMargins.top(); + params->rgrc[0].right -= margins.right() - simpleMargins.right(); + params->rgrc[0].bottom -= margins.bottom() - simpleMargins.bottom(); + } else if (wParam == FALSE) { + LPRECT rect = (LPRECT)lParam; + + rect->left += margins.left() - simpleMargins.left(); + rect->top += margins.top() - simpleMargins.top(); + rect->right += margins.right() - simpleMargins.right(); + rect->bottom += margins.bottom() - simpleMargins.bottom(); + } + *result = 0; + } return true; + + case WM_NCACTIVATE: { + Application::wnd()->psUpdateMargins(); + *result = LRESULT(TRUE); + Application::wnd()->repaint(); + } return true; + + case WM_WINDOWPOSCHANGING: + case WM_WINDOWPOSCHANGED: { + _psShadowWindows.update(_PsShadowMoved | _PsShadowResized, (WINDOWPOS*)lParam); + } return false; + + case WM_SIZE: { + if (App::wnd()) { + if (wParam == SIZE_MAXIMIZED || wParam == SIZE_RESTORED || wParam == SIZE_MINIMIZED) { + if (wParam != SIZE_RESTORED || App::wnd()->windowState() != Qt::WindowNoState) { + Qt::WindowState state = Qt::WindowNoState; + if (wParam == SIZE_MAXIMIZED) { + state = Qt::WindowMaximized; + } else if (wParam == SIZE_MINIMIZED) { + state = Qt::WindowMinimized; + } + emit App::wnd()->windowHandle()->windowStateChanged(state); + } else { + App::wnd()->psUpdatedPosition(); + } + int changes = (wParam == SIZE_MINIMIZED || wParam == SIZE_MAXIMIZED) ? _PsShadowHidden : (_PsShadowResized | _PsShadowShown); + _psShadowWindows.update(changes); + } + } + } return false; + + case WM_SHOWWINDOW: { + LONG style = GetWindowLong(hWnd, GWL_STYLE); + int changes = _PsShadowResized | ((wParam && !(style & (WS_MAXIMIZE | WS_MINIMIZE))) ? _PsShadowShown : _PsShadowHidden); + _psShadowWindows.update(changes); + } return false; + + case WM_MOVE: { + _psShadowWindows.update(_PsShadowMoved); + App::wnd()->psUpdatedPosition(); + } return false; + + case WM_NCHITTEST: { + POINTS p = MAKEPOINTS(lParam); + RECT r; + GetWindowRect(hWnd, &r); + HitTestType res = Application::wnd()->hitTest(QPoint(p.x - r.left + dleft, p.y - r.top + dtop)); + switch (res) { + case HitTestClient: + case HitTestSysButton: *result = HTCLIENT; break; + case HitTestIcon: *result = HTCAPTION; break; + case HitTestCaption: *result = HTCAPTION; break; + case HitTestTop: *result = HTTOP; break; + case HitTestTopRight: *result = HTTOPRIGHT; break; + case HitTestRight: *result = HTRIGHT; break; + case HitTestBottomRight: *result = HTBOTTOMRIGHT; break; + case HitTestBottom: *result = HTBOTTOM; break; + case HitTestBottomLeft: *result = HTBOTTOMLEFT; break; + case HitTestLeft: *result = HTLEFT; break; + case HitTestTopLeft: *result = HTTOPLEFT; break; + case HitTestNone: + default: *result = HTTRANSPARENT; break; + }; + } return true; + + case WM_NCRBUTTONUP: { + SendMessage(hWnd, WM_SYSCOMMAND, SC_MOUSEMENU, lParam); + } return true; + + case WM_NCLBUTTONDOWN: { + POINTS p = MAKEPOINTS(lParam); + RECT r; + GetWindowRect(hWnd, &r); + HitTestType res = Application::wnd()->hitTest(QPoint(p.x - r.left + dleft, p.y - r.top + dtop)); + switch (res) { + case HitTestIcon: + if (menuHidden && getms() < menuHidden + 10) { + menuHidden = 0; + if (getms() < menuShown + GetDoubleClickTime()) { + Application::wnd()->close(); + } + } else { + QRect icon = Application::wnd()->iconRect(); + p.x = r.left - dleft + icon.left(); + p.y = r.top - dtop + icon.top() + icon.height(); + Application::wnd()->psUpdateSysMenu(Application::wnd()->windowHandle()->windowState()); + menuShown = getms(); + menuHidden = 0; + TrackPopupMenu(Application::wnd()->psMenu(), TPM_LEFTALIGN | TPM_TOPALIGN | TPM_LEFTBUTTON, p.x, p.y, 0, hWnd, 0); + menuHidden = getms(); + } + return true; + }; + } return false; + + case WM_NCLBUTTONDBLCLK: { + POINTS p = MAKEPOINTS(lParam); + RECT r; + GetWindowRect(hWnd, &r); + HitTestType res = Application::wnd()->hitTest(QPoint(p.x - r.left + dleft, p.y - r.top + dtop)); + switch (res) { + case HitTestIcon: Application::wnd()->close(); return true; + }; + } return false; + + case WM_SYSCOMMAND: { + if (wParam == SC_MOUSEMENU) { + POINTS p = MAKEPOINTS(lParam); + Application::wnd()->psUpdateSysMenu(Application::wnd()->windowHandle()->windowState()); + TrackPopupMenu(Application::wnd()->psMenu(), TPM_LEFTALIGN | TPM_TOPALIGN | TPM_LEFTBUTTON, p.x, p.y, 0, hWnd, 0); + } + } return false; + + case WM_COMMAND: { + if (HIWORD(wParam)) return false; + int cmd = LOWORD(wParam); + switch (cmd) { + case SC_CLOSE: Application::wnd()->close(); return true; + case SC_MINIMIZE: Application::wnd()->setWindowState(Qt::WindowMinimized); return true; + case SC_MAXIMIZE: Application::wnd()->setWindowState(Qt::WindowMaximized); return true; + case SC_RESTORE: Application::wnd()->setWindowState(Qt::WindowNoState); return true; + } + } return true; + + } + return false; + } + }; + _PsEventFilter *_psEventFilter = 0;*/ + +}; + +PsMainWindow::PsMainWindow(QWidget *parent) : QMainWindow(parent), +posInited(false), trayIcon(0), trayIconMenu(0), icon256(qsl(":/gui/art/iconround256.png")) { + + //tbCreatedMsgId = RegisterWindowMessage(L"TaskbarButtonCreated"); + icon16 = icon256.scaledToWidth(16, Qt::SmoothTransformation); + icon32 = icon256.scaledToWidth(32, Qt::SmoothTransformation); + //connect(&psIdleTimer, SIGNAL(timeout()), this, SLOT(psIdleTimeout())); + //psIdleTimer.setSingleShot(false); +} + +void PsMainWindow::psIdleTimeout() { + /*LASTINPUTINFO lii; + lii.cbSize = sizeof(LASTINPUTINFO); + BOOL res = GetLastInputInfo(&lii); + if (res) { + uint64 ticks = GetTickCount(); + if (lii.dwTime >= ticks - IdleMsecs) { + psIdle = false; + psIdleTimer.stop(); + if (App::main()) App::main()->setOnline(); + } + }*/ +} + +bool PsMainWindow::psIsActive() const { + return isActiveWindow() && isVisible() && !(windowState() & Qt::WindowMinimized); +} + +bool PsMainWindow::psIsOnline(int windowState) const { + if (windowState < 0) windowState = this->windowState(); + if (windowState & Qt::WindowMinimized) { + return false; + } else if (!isVisible()) { + return false; + } + /*LASTINPUTINFO lii; + lii.cbSize = sizeof(LASTINPUTINFO); + BOOL res = GetLastInputInfo(&lii); + if (res) { + uint64 ticks = GetTickCount(); + if (lii.dwTime < ticks - IdleMsecs) { + if (!psIdle) { + psIdle = true; + psIdleTimer.start(900); + } + return false; + } else { + psIdle = false; + psIdleTimer.stop(); + } + }*/ + return true; +} + +void PsMainWindow::psRefreshTaskbarIcon() { + /*QWidget *w = new QWidget(this); + w->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint); + w->setGeometry(x() + 1, y() + 1, 1, 1); + QPalette p(w->palette()); + p.setColor(QPalette::Background, st::titleBG->c); + QWindow *wnd = w->windowHandle(); + w->setPalette(p); + w->show(); + w->activateWindow(); + delete w;*/ +} + +void PsMainWindow::psUpdateWorkmode() { + /*switch (cWorkMode()) { + case dbiwmWindowAndTray: { + setupTrayIcon(); + HWND psOwner = (HWND)GetWindowLong(ps_hWnd, GWL_HWNDPARENT); + if (psOwner) { + SetWindowLong(ps_hWnd, GWL_HWNDPARENT, 0); + psRefreshTaskbarIcon(); + } + } break; + + case dbiwmTrayOnly: { + setupTrayIcon(); + HWND psOwner = (HWND)GetWindowLong(ps_hWnd, GWL_HWNDPARENT); + if (!psOwner) { + SetWindowLong(ps_hWnd, GWL_HWNDPARENT, (LONG)ps_tbHider_hWnd); + } + } break; + + case dbiwmWindowOnly: { + if (trayIconMenu) trayIconMenu->deleteLater(); + trayIconMenu = 0; + if (trayIcon) trayIcon->deleteLater(); + trayIcon = 0; + + HWND psOwner = (HWND)GetWindowLong(ps_hWnd, GWL_HWNDPARENT); + if (psOwner) { + SetWindowLong(ps_hWnd, GWL_HWNDPARENT, 0); + psRefreshTaskbarIcon(); + } + } break; + }*/ +} + +/*HICON qt_pixmapToWinHICON(const QPixmap &); +static HICON _qt_createHIcon(const QIcon &icon, int xSize, int ySize) { + if (!icon.isNull()) { + const QPixmap pm = icon.pixmap(icon.actualSize(QSize(xSize, ySize))); + if (!pm.isNull()) + return qt_pixmapToWinHICON(pm); + } + return 0; +}*/ + +void PsMainWindow::psUpdateCounter() { + int32 counter = App::histories().unreadFull; + style::color bg = (App::histories().unreadMuted < counter) ? st::counterBG : st::counterMuteBG; + QIcon icon; + QImage cicon16(icon16), cicon32(icon32); + if (counter > 0) { + { + QString cnt = (counter < 1000) ? QString("%1").arg(counter) : QString("..%1").arg(counter % 100, 2, 10, QChar('0')); + QPainter p16(&cicon16); + p16.setBrush(bg->b); + p16.setPen(Qt::NoPen); + p16.setRenderHint(QPainter::Antialiasing); + int32 fontSize = 8; + style::font f(fontSize); + int32 w = f->m.width(cnt), d = 2, r = 3; + p16.drawRoundedRect(QRect(16 - w - d * 2, 16 - f->height, w + d * 2, f->height), r, r); + p16.setFont(f->f); + + p16.setPen(st::counterColor->p); + + p16.drawText(16 - w - d, 16 - f->height + f->ascent, cnt); + } + /*if (!tbListInterface) { + QString cnt = (counter < 10000) ? QString("%1").arg(counter) : ((counter < 1000000) ? QString("%1K").arg(counter / 1000) : QString("%1M").arg(counter / 1000000)); + QPainter p32(&cicon32); + style::font f(10); + int32 w = f->m.width(cnt), d = 3, r = 6; + p32.setBrush(bg->b); + p32.setPen(Qt::NoPen); + p32.setRenderHint(QPainter::Antialiasing); + p32.drawRoundedRect(QRect(32 - w - d * 2, 0, w + d * 2, f->height - 1), r, r); + p32.setPen(st::counterColor->p); + p32.setFont(f->f); + p32.drawText(32 - w - d, f->ascent - 1, cnt); + }*/ + } + icon.addPixmap(QPixmap::fromImage(cicon16)); + icon.addPixmap(QPixmap::fromImage(cicon32)); + if (trayIcon) { + QIcon ticon; + QImage ticon16(icon16); + if (counter > 0) { + QString cnt = (counter < 1000) ? QString("%1").arg(counter) : QString("..%1").arg(counter % 100, 2, 10, QChar('0')); + { + QPainter p16(&ticon16); + p16.setBrush(bg->b); + p16.setPen(Qt::NoPen); + p16.setRenderHint(QPainter::Antialiasing); + int32 fontSize = 8; + style::font f(fontSize); + int32 w = f->m.width(cnt), d = 2, r = 3; + p16.drawRoundedRect(QRect(16 - w - d * 2, 16 - f->height, w + d * 2, f->height), r, r); + p16.setFont(f->f); + + p16.setPen(st::counterColor->p); + + p16.drawText(16 - w - d, 16 - f->height + f->ascent, cnt); + } + } + ticon.addPixmap(QPixmap::fromImage(ticon16)); + ticon.addPixmap(QPixmap::fromImage(cicon32)); + trayIcon->setIcon(ticon); + } + + /*setWindowTitle((counter > 0) ? qsl("Telegram (%1)").arg(counter) : qsl("Telegram")); + psDestroyIcons(); + ps_iconSmall = _qt_createHIcon(icon, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON)); + ps_iconBig = _qt_createHIcon(icon, GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON)); + SendMessage(ps_hWnd, WM_SETICON, 0, (LPARAM)ps_iconSmall); + SendMessage(ps_hWnd, WM_SETICON, 1, (LPARAM)(ps_iconBig ? ps_iconBig : ps_iconSmall)); + if (tbListInterface) { + if (counter > 0) { + QString cnt = (counter < 1000) ? QString("%1").arg(counter) : QString("..%1").arg(counter % 100, 2, 10, QChar('0')); + QImage oicon16(16, 16, QImage::Format_ARGB32); + int32 cntSize = cnt.size(); + oicon16.fill(st::transparent->c); + { + QPainter p16(&oicon16); + p16.setBrush(bg->b); + p16.setPen(Qt::NoPen); + p16.setRenderHint(QPainter::Antialiasing); + int32 fontSize = (cntSize < 2) ? 12 : ((cntSize < 3) ? 12 : 8); + style::font f(fontSize); + int32 w = f->m.width(cnt), d = (cntSize < 2) ? 5 : ((cntSize < 3) ? 2 : 2), r = (cntSize < 2) ? 8 : ((cntSize < 3) ? 7 : 3); + p16.drawRoundedRect(QRect(16 - w - d * 2, 16 - f->height, w + d * 2, f->height), r, r); + p16.setFont(f->f); + + p16.setPen(st::counterColor->p); + + p16.drawText(16 - w - d, 16 - f->height + f->ascent, cnt); + } + QIcon oicon(QPixmap::fromImage(oicon16)); + ps_iconOverlay = _qt_createHIcon(oicon, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON)); + } + QString description = counter > 0 ? QString("%1 unread messages").arg(counter) : qsl("No unread messages"); + static WCHAR descriptionArr[1024]; + description.toWCharArray(descriptionArr); + tbListInterface->SetOverlayIcon(ps_hWnd, ps_iconOverlay, descriptionArr); + }*/ +} + +/*namespace { + HMONITOR enumMonitor = 0; + RECT enumMonitorWork; + + BOOL CALLBACK _monitorEnumProc( + _In_ HMONITOR hMonitor, + _In_ HDC hdcMonitor, + _In_ LPRECT lprcMonitor, + _In_ LPARAM dwData + ) { + MONITORINFOEX info; + info.cbSize = sizeof(info); + GetMonitorInfo(hMonitor, &info); + if (dwData == hashCrc32(info.szDevice, sizeof(info.szDevice))) { + enumMonitor = hMonitor; + enumMonitorWork = info.rcWork; + return FALSE; + } + return TRUE; + } +}*/ + +void PsMainWindow::psInitSize() { + setMinimumWidth(st::wndMinWidth); + setMinimumHeight(st::wndMinHeight); + + TWindowPos pos(cWindowPos()); + if (cDebug()) { // temp while design + pos.w = 800; + pos.h = 600; + } + QRect avail(QDesktopWidget().availableGeometry()); + bool maximized = false; + QRect geom(avail.x() + (avail.width() - st::wndDefWidth) / 2, avail.y() + (avail.height() - st::wndDefHeight) / 2, st::wndDefWidth, st::wndDefHeight); + if (pos.w && pos.h) { + if (pos.y < 0) pos.y = 0; + //enumMonitor = 0; + //EnumDisplayMonitors(0, 0, &_monitorEnumProc, pos.moncrc); + /*if (enumMonitor) { + int32 w = enumMonitorWork.right - enumMonitorWork.left, h = enumMonitorWork.bottom - enumMonitorWork.top; + if (w >= st::wndMinWidth && h >= st::wndMinHeight) { + if (pos.w > w) pos.w = w; + if (pos.h > h) pos.h = h; + pos.x += enumMonitorWork.left; + pos.y += enumMonitorWork.top; + if (pos.x < enumMonitorWork.right - 10 && pos.y < enumMonitorWork.bottom - 10) { + geom = QRect(pos.x, pos.y, pos.w, pos.h); + } + } + }*/ + maximized = pos.maximized; + } + setGeometry(geom); +} + +void PsMainWindow::psInitFrameless() { + psUpdatedPositionTimer.setSingleShot(true); + connect(&psUpdatedPositionTimer, SIGNAL(timeout()), this, SLOT(psSavePosition())); + + if (frameless) { +// setWindowFlags(Qt::FramelessWindowHint); + } + + connect(windowHandle(), SIGNAL(windowStateChanged(Qt::WindowState)), this, SLOT(psStateChanged(Qt::WindowState))); +} + +void PsMainWindow::psSavePosition(Qt::WindowState state) { + if (state == Qt::WindowActive) state = windowHandle()->windowState(); + if (state == Qt::WindowMinimized || !posInited) return; +/* + TWindowPos pos(cWindowPos()), curPos = pos; + + if (state == Qt::WindowMaximized) { + curPos.maximized = 1; + } else { + RECT w; + GetWindowRect(ps_hWnd, &w); + curPos.x = w.left; + curPos.y = w.top; + curPos.w = w.right - w.left; + curPos.h = w.bottom - w.top; + curPos.maximized = 0; + } + + HMONITOR hMonitor = MonitorFromWindow(ps_hWnd, MONITOR_DEFAULTTONEAREST); + if (hMonitor) { + MONITORINFOEX info; + info.cbSize = sizeof(info); + GetMonitorInfo(hMonitor, &info); + if (!curPos.maximized) { + curPos.x -= info.rcWork.left; + curPos.y -= info.rcWork.top; + } + curPos.moncrc = hashCrc32(info.szDevice, sizeof(info.szDevice)); + } + + if (curPos.w >= st::wndMinWidth && curPos.h >= st::wndMinHeight) { + if (curPos.x != pos.x || curPos.y != pos.y || curPos.w != pos.w || curPos.h != pos.h || curPos.moncrc != pos.moncrc || curPos.maximized != pos.maximized) { + cSetWindowPos(curPos); + App::writeConfig(); + } + }*/ +} + +void PsMainWindow::psUpdatedPosition() { + //psUpdatedPositionTimer.start(4000); +} + +void PsMainWindow::psStateChanged(Qt::WindowState state) { + psUpdateSysMenu(state); + psUpdateMargins(); + /*if (state == Qt::WindowMinimized && GetWindowLong(ps_hWnd, GWL_HWNDPARENT)) { + minimizeToTray(); + } + psSavePosition(state);*/ +} + +//Q_DECLARE_METATYPE(QMargins); +void PsMainWindow::psFirstShow() { + //_psShadowWindows.init(_shActive); + finished = false; + + //psUpdateMargins(); + + //_psShadowWindows.update(_PsShadowHidden); + bool showShadows = true; + + show(); + if (cWindowPos().maximized) { + setWindowState(Qt::WindowMaximized); + } + + if (cFromAutoStart()) { + if (cStartMinimized()) { + setWindowState(Qt::WindowMinimized); + if (cWorkMode() == dbiwmTrayOnly || cWorkMode() == dbiwmWindowAndTray) { + hide(); + } else { + show(); + } + showShadows = false; + } else { + show(); + } + } else { + show(); + } + posInited = true; + //if (showShadows) { + // _psShadowWindows.update(_PsShadowMoved | _PsShadowResized | _PsShadowShown); + //} +} + +bool PsMainWindow::psHandleTitle() { + //return useDWM; + return true; +} + +void PsMainWindow::psInitSysMenu() { + /*Qt::WindowStates states = windowState(); + ps_menu = GetSystemMenu(ps_hWnd, FALSE); + psUpdateSysMenu(windowHandle()->windowState());*/ +} + +void PsMainWindow::psUpdateSysMenu(Qt::WindowState state) { + /*if (!ps_menu) return; + + int menuToDisable = SC_RESTORE; + if (state == Qt::WindowMaximized) { + menuToDisable = SC_MAXIMIZE; + } else if (state == Qt::WindowMinimized) { + menuToDisable = SC_MINIMIZE; + } + int itemCount = GetMenuItemCount(ps_menu); + for (int i = 0; i < itemCount; ++i) { + MENUITEMINFO itemInfo = {0}; + itemInfo.cbSize = sizeof(itemInfo); + itemInfo.fMask = MIIM_TYPE | MIIM_STATE | MIIM_ID; + if (GetMenuItemInfo(ps_menu, i, TRUE, &itemInfo)) { + if (itemInfo.fType & MFT_SEPARATOR) { + continue; + } + if (itemInfo.wID && !(itemInfo.fState & MFS_DEFAULT)) { + UINT fOldState = itemInfo.fState, fState = itemInfo.fState & ~MFS_DISABLED; + if (itemInfo.wID == SC_CLOSE) { + fState |= MFS_DEFAULT; + } else if (itemInfo.wID == menuToDisable || (itemInfo.wID != SC_MINIMIZE && itemInfo.wID != SC_MAXIMIZE && itemInfo.wID != SC_RESTORE)) { + fState |= MFS_DISABLED; + } + itemInfo.fMask = MIIM_STATE; + itemInfo.fState = fState; + if (!SetMenuItemInfo(ps_menu, i, TRUE, &itemInfo)) { + DEBUG_LOG(("PS Error: could not set state %1 to menu item %2, old state %3, error %4").arg(fState).arg(itemInfo.wID).arg(fOldState).arg(GetLastError())); + DestroyMenu(ps_menu); + ps_menu = 0; + break; + } + } + } else { + DEBUG_LOG(("PS Error: could not get state, menu item %1 of %2, error %3").arg(i).arg(itemCount).arg(GetLastError())); + DestroyMenu(ps_menu); + ps_menu = 0; + break; + } + }*/ +} + +void PsMainWindow::psUpdateMargins() { + /*if (!useDWM) return; + + RECT r, a; + + GetClientRect(ps_hWnd, &r); + a = r; + + LONG style = GetWindowLong(ps_hWnd, GWL_STYLE), styleEx = GetWindowLong(ps_hWnd, GWL_EXSTYLE); + AdjustWindowRectEx(&a, style, false, styleEx); + simpleMargins = QMargins(a.left - r.left, a.top - r.top, r.right - a.right, r.bottom - a.bottom); + if (style & WS_MAXIMIZE) { + RECT w, m; + GetWindowRect(ps_hWnd, &w); + m = w; + + HMONITOR hMonitor = MonitorFromRect(&w, MONITOR_DEFAULTTONEAREST); + if (hMonitor) { + MONITORINFO mi; + mi.cbSize = sizeof(mi); + GetMonitorInfo(hMonitor, &mi); + m = mi.rcWork; + } + + dleft = w.left - m.left; + dtop = w.top - m.top; + + margins.setLeft(simpleMargins.left() - w.left + m.left); + margins.setRight(simpleMargins.right() - m.right + w.right); + margins.setBottom(simpleMargins.bottom() - m.bottom + w.bottom); + margins.setTop(simpleMargins.top() - w.top + m.top); + } else { + margins = simpleMargins; + dleft = dtop = 0; + } + + QPlatformNativeInterface *i = QGuiApplication::platformNativeInterface(); + i->setWindowProperty(windowHandle()->handle(), "WindowsCustomMargins", QVariant::fromValue(margins)); + if (!themeInited) { + themeInited = true; + if (useTheme) { + if (QSysInfo::WindowsVersion < QSysInfo::WV_WINDOWS8) { + setWindowTheme(ps_hWnd, L" ", L" "); + QApplication::setStyle(QStyleFactory::create("Windows")); + } + } + }*/ +} + +void PsMainWindow::psFlash() { + /*if (GetForegroundWindow() == ps_hWnd) return; + + FLASHWINFO info; + info.cbSize = sizeof(info); + info.hwnd = ps_hWnd; + info.dwFlags = FLASHW_ALL; + info.dwTimeout = 0; + info.uCount = 1; + FlashWindowEx(&info);*/ +} + +/*HWND PsMainWindow::psHwnd() const { + return ps_hWnd; +} + +HMENU PsMainWindow::psMenu() const { + return ps_menu; +}*/ + +/*void PsMainWindow::psDestroyIcons() { + if (ps_iconBig) { + DestroyIcon(ps_iconBig); + ps_iconBig = 0; + } + if (ps_iconSmall) { + DestroyIcon(ps_iconSmall); + ps_iconSmall = 0; + } + if (ps_iconOverlay) { + DestroyIcon(ps_iconOverlay); + ps_iconOverlay = 0; + } +}*/ + +PsMainWindow::~PsMainWindow() { + finished = true; + //if (ps_menu) DestroyMenu(ps_menu); + //psDestroyIcons(); + //_psShadowWindows.destroy(); + //psClearNotifyFast(); + //if (ps_tbHider_hWnd) DestroyWindow(ps_tbHider_hWnd); +} + +void PsMainWindow::psNotify(History *history, MsgId msgId) { + /*if (App::quiting()) return; + if (!cDesktopNotify()) { + history->clearNotifyFrom(); + } + if (notifyHistories.constFind(history) != notifyHistories.cend()) return; + notifyHistories.insert(history); + psShowNextNotify();*/ +} + +void PsMainWindow::psClearNotify(History *history) { + /*if (!history) { + for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { + (*i)->unlinkHistory(); + } + for (NotifyHistories::const_iterator i = notifyHistories.cbegin(), e = notifyHistories.cend(); i != e; ++i) { + (*i)->clearNotifyFrom(); + } + notifyHistories.clear(); + return; + } + notifyHistories.remove(history); + for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { + (*i)->unlinkHistory(history); + }*/ +} + +void PsMainWindow::psClearNotifyFast() { + /*notifyHistories.clear(); + for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { + (*i)->deleteLater(); + } + notifyWindows.clear();*/ +} + +/*void PsMainWindow::psShowNextNotify(PsNotifyWindow *remove) { + if (App::quiting()) return; + + int32 count = NotifyWindows; + if (remove) { + for (PsNotifyWindows::iterator i = notifyWindows.begin(), e = notifyWindows.end(); i != e; ++i) { + if ((*i) == remove) { + notifyWindows.erase(i); + break; + } + } + } + QRect r = QApplication::desktop()->availableGeometry(App::wnd()); + int32 x = r.width() - st::notifyWidth - st::notifyDeltaX, y = r.bottom() - st::notifyHeight - st::notifyDeltaY; + for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { + int32 ind = (*i)->index(); + if (ind < 0) continue; + --count; + } + while (count > 0) { + HistoryItem *notify = 0; + for (NotifyHistories::iterator i = notifyHistories.begin(), e = notifyHistories.end(); i != e;) { + if ((*i)->notifyFrom) { + if (!notify || (*i)->notifyFrom->date < notify->date) { + notify = (*i)->notifyFrom; + } + ++i; + } else { + i = notifyHistories.erase(i); + } + } + if (notify) { + notifyWindows.push_back(new PsNotifyWindow(notify, x, y)); + notify->history()->getNextNotifyFrom(); + --count; + } else { + break; + } + } + count = NotifyWindows - count; + for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { + int32 ind = (*i)->index(); + if (ind < 0) continue; + --count; + (*i)->moveTo(x, y - count * (st::notifyHeight + st::notifyDeltaY)); + } +}*/ + +void PsMainWindow::psStopHiding() { + /*for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { + (*i)->stopHiding(); + }*/ +} + +void PsMainWindow::psStartHiding() { + /*for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { + (*i)->startHiding(); + }*/ +} + +void PsMainWindow::psUpdateNotifies() { + /*for (PsNotifyWindows::const_iterator i = notifyWindows.cbegin(), e = notifyWindows.cend(); i != e; ++i) { + (*i)->updatePeerPhoto(); + }*/ +} + +void PsMainWindow::psNotifySettingGot() { +} + +/*PsNotifyWindow::PsNotifyWindow(HistoryItem *item, int32 x, int32 y) : history(item->history()), aOpacity(0), _index(0), hiding(false), started(GetTickCount()), + alphaDuration(st::notifyFastAnim), posDuration(st::notifyFastAnim), aY(y + st::notifyHeight + st::notifyDeltaY), close(this, st::notifyClose), aOpacityFunc(st::notifyFastAnimFunc) { + + int32 w = st::notifyWidth, h = st::notifyHeight; + QImage img(w, h, QImage::Format_ARGB32_Premultiplied); + img.fill(st::notifyBG->c); + + { + QPainter p(&img); + p.setPen(st::notifyBorder->p); + p.setBrush(Qt::NoBrush); + p.drawRect(0, 0, w - 1, h - 1); + + if (history->peer->photo->loaded()) { + p.drawPixmap(st::notifyPhotoPos.x(), st::notifyPhotoPos.y(), history->peer->photo->pix(st::notifyPhotoSize)); + } else { + MTP::clearLoaderPriorities(); + peerPhoto = history->peer->photo; + peerPhoto->load(true, true); + } + + int32 itemWidth = w - st::notifyPhotoPos.x() - st::notifyPhotoSize - st::notifyTextLeft - st::notifyClosePos.x() - st::notifyClose.width; + + QRect rectForName(st::notifyPhotoPos.x() + st::notifyPhotoSize + st::notifyTextLeft, st::notifyTextTop, itemWidth, st::msgNameFont->height); + if (history->peer->chat) { + p.drawPixmap(QPoint(rectForName.left() + st::dlgChatImgLeft, rectForName.top() + st::dlgChatImgTop), App::sprite(), st::dlgChatImg); + rectForName.setLeft(rectForName.left() + st::dlgChatImgSkip); + } + + QDateTime now(QDateTime::currentDateTime()), lastTime(item->date); + QDate nowDate(now.date()), lastDate(lastTime.date()); + QString dt = lastTime.toString(qsl("hh:mm")); + int32 dtWidth = st::dlgHistFont->m.width(dt); + rectForName.setWidth(rectForName.width() - dtWidth - st::dlgDateSkip); + p.setFont(st::dlgDateFont->f); + p.setPen(st::dlgDateColor->p); + p.drawText(rectForName.left() + rectForName.width() + st::dlgDateSkip, rectForName.top() + st::dlgHistFont->ascent, dt); + + const HistoryItem *textCachedFor = 0; + Text itemTextCache(itemWidth); + bool active = false; + item->drawInDialog(p, QRect(st::notifyPhotoPos.x() + st::notifyPhotoSize + st::notifyTextLeft, st::notifyItemTop + st::msgNameFont->height, itemWidth, 2 * st::dlgFont->height), active, textCachedFor, itemTextCache); + + p.setPen(st::dlgNameColor->p); + history->nameText.drawElided(p, rectForName.left(), rectForName.top(), rectForName.width()); + } + pm = QPixmap::fromImage(img); + + hideTimer.setSingleShot(true); + connect(&hideTimer, SIGNAL(timeout()), this, SLOT(hideByTimer())); + + inputTimer.setSingleShot(true); + connect(&inputTimer, SIGNAL(timeout()), this, SLOT(checkLastInput())); + + connect(&close, SIGNAL(clicked()), this, SLOT(unlinkHistory())); + close.setAcceptBoth(true); + close.move(w - st::notifyClose.width - st::notifyClosePos.x(), st::notifyClosePos.y()); + close.show(); + + aY.start(y); + setGeometry(x, aY.current(), st::notifyWidth, st::notifyHeight); + + aOpacity.start(1); + setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint); + + show(); + + setWindowOpacity(aOpacity.current()); + + alphaDuration = posDuration = st::notifyFastAnim; + anim::start(this); + + checkLastInput(); +} + +void PsNotifyWindow::checkLastInput() { + LASTINPUTINFO lii; + lii.cbSize = sizeof(LASTINPUTINFO); + BOOL res = GetLastInputInfo(&lii); + if (!res || lii.dwTime >= started) { + hideTimer.start(st::notifyWaitLongHide); + } else { + inputTimer.start(300); + } +} + +void PsNotifyWindow::moveTo(int32 x, int32 y, int32 index) { + if (index >= 0) { + _index = index; + } + move(x, aY.current()); + aY.start(y); + aOpacity.restart(); + posDuration = st::notifyFastAnim; + anim::start(this); +} + +void PsNotifyWindow::updatePeerPhoto() { + if (!peerPhoto->isNull() && peerPhoto->loaded()) { + QImage img(pm.toImage()); + { + QPainter p(&img); + p.drawPixmap(st::notifyPhotoPos.x(), st::notifyPhotoPos.y(), peerPhoto->pix(st::notifyPhotoSize)); + } + peerPhoto = ImagePtr(); + pm = QPixmap::fromImage(img); + update(); + } +} + +void PsNotifyWindow::unlinkHistory(History *hist) { + if (!hist || hist == history) { + animHide(st::notifyFastAnim, st::notifyFastAnimFunc); + history = 0; + App::wnd()->psShowNextNotify(); + } +} + +void PsNotifyWindow::enterEvent(QEvent *e) { + if (!history) return; + if (App::wnd()) App::wnd()->psStopHiding(); +} + +void PsNotifyWindow::leaveEvent(QEvent *e) { + if (!history) return; + App::wnd()->psStartHiding(); +} + +void PsNotifyWindow::startHiding() { + hideTimer.start(st::notifyWaitShortHide); +} + +void PsNotifyWindow::mousePressEvent(QMouseEvent *e) { + if (!history) return; + if (e->button() == Qt::RightButton) { + unlinkHistory(); + } else if (history) { + App::wnd()->showFromTray(); + App::wnd()->hideSettings(); + App::main()->showPeer(history->peer->id, false, true); + e->ignore(); + } +} + +void PsNotifyWindow::paintEvent(QPaintEvent *e) { + QPainter p(this); + p.drawPixmap(0, 0, pm); +} + +void PsNotifyWindow::animHide(float64 duration, anim::transition func) { + if (!history) return; + alphaDuration = duration; + aOpacityFunc = func; + aOpacity.start(0); + aY.restart(); + hiding = true; + anim::start(this); +} + +void PsNotifyWindow::stopHiding() { + if (!history) return; + alphaDuration = st::notifyFastAnim; + aOpacityFunc = st::notifyFastAnimFunc; + aOpacity.start(1); + aY.restart(); + hiding = false; + hideTimer.stop(); + anim::start(this); +} + +void PsNotifyWindow::hideByTimer() { + if (!history) return; + animHide(st::notifySlowHide, st::notifySlowHideFunc); +} + +bool PsNotifyWindow::animStep(float64 ms) { + float64 dtAlpha = ms / alphaDuration, dtPos = ms / posDuration; + if (dtAlpha >= 1) { + aOpacity.finish(); + if (hiding) { + deleteLater(); + } + } else { + aOpacity.update(dtAlpha, aOpacityFunc); + } + setWindowOpacity(aOpacity.current()); + if (dtPos >= 1) { + aY.finish(); + } else { + aY.update(dtPos, anim::linear); + } + move(x(), aY.current()); + update(); + return (dtAlpha < 1 || !hiding && dtPos < 1); +} + +PsNotifyWindow::~PsNotifyWindow() { + if (App::wnd()) App::wnd()->psShowNextNotify(this); +}*/ + +PsApplication::PsApplication(int argc, char *argv[]) : QApplication(argc, argv) { +} + +void PsApplication::psInstallEventFilter() { + /*delete _psEventFilter; + _psEventFilter = new _PsEventFilter(); + installNativeEventFilter(_psEventFilter);*/ +} + +PsApplication::~PsApplication() { + //delete _psEventFilter; + //_psEventFilter = 0; +} + +PsUpdateDownloader::PsUpdateDownloader(QThread *thread, const MTPDhelp_appUpdate &update) : already(0), reply(0), full(0) { + updateUrl = qs(update.vurl); + moveToThread(thread); + manager.moveToThread(thread); + App::setProxySettings(manager); + + connect(thread, SIGNAL(started()), this, SLOT(start())); + initOutput(); +} + +PsUpdateDownloader::PsUpdateDownloader(QThread *thread, const QString &url) : already(0), reply(0), full(0) { + updateUrl = url; + moveToThread(thread); + manager.moveToThread(thread); + App::setProxySettings(manager); + + connect(thread, SIGNAL(started()), this, SLOT(start())); + initOutput(); +} + +void PsUpdateDownloader::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 PsUpdateDownloader::start() { + sendRequest(); +} + +void PsUpdateDownloader::sendRequest() { + QNetworkRequest req(updateUrl); + QByteArray rangeHeaderValue = "bytes=" + QByteArray::number(already) + "-";// + QByteArray::number(already + cUpdateChunk() - 1); + 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 PsUpdateDownloader::partMetaGot() { + typedef QList 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 PsUpdateDownloader::ready() { + QMutexLocker lock(&mutex); + return already; +} + +int32 PsUpdateDownloader::size() { + QMutexLocker lock(&mutex); + return full; +} + +void PsUpdateDownloader::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 PsUpdateDownloader::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 PsUpdateDownloader::deleteDir(const QString &dir) { + /*std::wstring wDir = QDir::toNativeSeparators(dir).toStdWString(); + WCHAR path[4096]; + memcpy(path, wDir.c_str(), (wDir.size() + 1) * sizeof(WCHAR)); + path[wDir.size() + 1] = 0; + SHFILEOPSTRUCT file_op = { + NULL, + FO_DELETE, + path, + L"", + FOF_NOCONFIRMATION | + FOF_NOERRORUI | + FOF_SILENT, + false, + 0, + L"" + }; + int res = SHFileOperation(&file_op);*/ +} + +void PsUpdateDownloader::fatalFail() { + clearAll(); + emit App::app()->updateFailed(); +} + +void PsUpdateDownloader::clearAll() { + deleteDir(cWorkingDir() + qsl("tupdates")); +} + +void PsUpdateDownloader::unpackUpdate() { + /*QByteArray packed; + if (!outputFile.open(QIODevice::ReadOnly)) { + LOG(("Update Error: cant read updates file!")); + return fatalFail(); + } + + const int32 hSigLen = 128, hShaLen = 20, hPropsLen = LZMA_PROPS_SIZE, hOriginalSizeLen = sizeof(int32), hSize = hSigLen + hShaLen + hPropsLen + hOriginalSizeLen; // header + + 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"), readyDirPath = cWorkingDir() + qsl("tupdates/ready"); + deleteDir(tempDirPath); + deleteDir(readyDirPath); + + QDir tempDir(tempDirPath), readyDir(readyDirPath); + if (tempDir.exists() || readyDir.exists()) { + LOG(("Update Error: cant clear tupdates/temp or tupdates/ready 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(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); + 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(); + 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(); + } + + 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 (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 (int32 i = 0; i < filesCount; ++i) { + QString relativeName; + quint32 fileSize; + QByteArray fileInnerData; + + stream >> relativeName >> fileSize >> fileInnerData; + if (stream.status() != QDataStream::Ok) { + LOG(("Update Error: cant read file from downloaded stream, status: %1").arg(stream.status())); + return fatalFail(); + } + if (fileSize != 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 (!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(); + } + + // 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(); + DWORD versionNum = DWORD(version), versionLen = DWORD(versionString.size() * sizeof(WCHAR)); + WCHAR 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(DWORD)); + fVersion.write((const char*)&versionLen, sizeof(DWORD)); + fVersion.write((const char*)&versionStr[0], versionLen); + fVersion.close(); + } + + if (!tempDir.rename(tempDir.absolutePath(), readyDir.absolutePath())) { + LOG(("Update Error: cant rename temp dir '%1' to ready dir '%2'").arg(tempDir.absolutePath()).arg(readyDir.absolutePath())); + return fatalFail(); + } + deleteDir(tempDirPath); + outputFile.remove(); + + emit App::app()->updateReady();*/ +} + +PsUpdateDownloader::~PsUpdateDownloader() { + delete reply; + reply = 0; +} + +/*namespace { + BOOL CALLBACK _ActivateProcess(HWND hWnd, LPARAM lParam) { + uint64 &processId(*(uint64*)lParam); + + DWORD dwProcessId; + ::GetWindowThreadProcessId(hWnd, &dwProcessId); + + if ((uint64)dwProcessId == processId) { // found top-level window + static const int32 nameBufSize = 1024; + WCHAR nameBuf[nameBufSize]; + int32 len = GetWindowText(hWnd, nameBuf, nameBufSize); + if (len && len < nameBufSize) { + if (QRegularExpression(qsl("^Telegram(\\s*\\(\\d+\\))?$")).match(QString::fromStdWString(nameBuf)).hasMatch()) { + BOOL res = ::SetForegroundWindow(hWnd); + return FALSE; + } + } + } + return TRUE; + } +}*/ + +void psActivateProcess(uint64 pid) { + //::EnumWindows((WNDENUMPROC)_ActivateProcess, (LPARAM)&pid); +} + +QString psCurrentCountry() { + /*int chCount = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SISO3166CTRYNAME, 0, 0); + if (chCount && chCount < 128) { + WCHAR wstrCountry[128]; + int len = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SISO3166CTRYNAME, wstrCountry, chCount); + return len ? QString::fromStdWString(std::wstring(wstrCountry)) : QString::fromLatin1(DefaultCountry); + } + return QString::fromLatin1(DefaultCountry);*/ + return QString(""); + //TODO +} + +/*namespace { + QString langById(int lngId) { + int primary = lngId & 0xFF; + switch (primary) { + case 0x36: return qsl("af"); + case 0x1C: return qsl("sq"); + case 0x5E: return qsl("am"); + case 0x01: return qsl("ar"); + case 0x2B: return qsl("hy"); + case 0x4D: return qsl("as"); + case 0x2C: return qsl("az"); + case 0x45: return qsl("bn"); + case 0x6D: return qsl("ba"); + case 0x2D: return qsl("eu"); + case 0x23: return qsl("be"); + case 0x1A: + if (lngId == LANG_CROATIAN) { + return qsl("hr"); + } else if (lngId == LANG_BOSNIAN_NEUTRAL || lngId == LANG_BOSNIAN) { + return qsl("bs"); + } + return qsl("sr"); + break; + case 0x7E: return qsl("br"); + case 0x02: return qsl("bg"); + case 0x92: return qsl("ku"); + case 0x03: return qsl("ca"); + case 0x04: return qsl("zh"); + case 0x83: return qsl("co"); + case 0x05: return qsl("cs"); + case 0x06: return qsl("da"); + case 0x65: return qsl("dv"); + case 0x13: return qsl("nl"); + case 0x09: return qsl("en"); + case 0x25: return qsl("et"); + case 0x38: return qsl("fo"); + case 0x0B: return qsl("fi"); + case 0x0c: return qsl("fr"); + case 0x62: return qsl("fy"); + case 0x56: return qsl("gl"); + case 0x37: return qsl("ka"); + case 0x07: return qsl("de"); + case 0x08: return qsl("el"); + case 0x6F: return qsl("kl"); + case 0x47: return qsl("gu"); + case 0x68: return qsl("ha"); + case 0x0D: return qsl("he"); + case 0x39: return qsl("hi"); + case 0x0E: return qsl("hu"); + case 0x0F: return qsl("is"); + case 0x70: return qsl("ig"); + case 0x21: return qsl("id"); + case 0x5D: return qsl("iu"); + case 0x3C: return qsl("ga"); + case 0x34: return qsl("xh"); + case 0x35: return qsl("zu"); + case 0x10: return qsl("it"); + case 0x11: return qsl("ja"); + case 0x4B: return qsl("kn"); + case 0x3F: return qsl("kk"); + case 0x53: return qsl("kh"); + case 0x87: return qsl("rw"); + case 0x12: return qsl("ko"); + case 0x40: return qsl("ky"); + case 0x54: return qsl("lo"); + case 0x26: return qsl("lv"); + case 0x27: return qsl("lt"); + case 0x6E: return qsl("lb"); + case 0x2F: return qsl("mk"); + case 0x3E: return qsl("ms"); + case 0x4C: return qsl("ml"); + case 0x3A: return qsl("mt"); + case 0x81: return qsl("mi"); + case 0x4E: return qsl("mr"); + case 0x50: return qsl("mn"); + case 0x61: return qsl("ne"); + case 0x14: return qsl("no"); + case 0x82: return qsl("oc"); + case 0x48: return qsl("or"); + case 0x63: return qsl("ps"); + case 0x29: return qsl("fa"); + case 0x15: return qsl("pl"); + case 0x16: return qsl("pt"); + case 0x67: return qsl("ff"); + case 0x46: return qsl("pa"); + case 0x18: return qsl("ro"); + case 0x17: return qsl("rm"); + case 0x19: return qsl("ru"); + case 0x3B: return qsl("se"); + case 0x4F: return qsl("sa"); + case 0x32: return qsl("tn"); + case 0x59: return qsl("sd"); + case 0x5B: return qsl("si"); + case 0x1B: return qsl("sk"); + case 0x24: return qsl("sl"); + case 0x0A: return qsl("es"); + case 0x41: return qsl("sw"); + case 0x1D: return qsl("sv"); + case 0x28: return qsl("tg"); + case 0x49: return qsl("ta"); + case 0x44: return qsl("tt"); + case 0x4A: return qsl("te"); + case 0x1E: return qsl("th"); + case 0x51: return qsl("bo"); + case 0x73: return qsl("ti"); + case 0x1F: return qsl("tr"); + case 0x42: return qsl("tk"); + case 0x22: return qsl("uk"); + case 0x20: return qsl("ur"); + case 0x80: return qsl("ug"); + case 0x43: return qsl("uz"); + case 0x2A: return qsl("vi"); + case 0x52: return qsl("cy"); + case 0x88: return qsl("wo"); + case 0x78: return qsl("ii"); + case 0x6A: return qsl("yo"); + } + return QString::fromLatin1(DefaultLanguage); + } +}*/ + +QString psCurrentLanguage() { +/* int chCount = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SNAME, 0, 0); + if (chCount && chCount < 128) { + WCHAR wstrLocale[128]; + int len = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SNAME, wstrLocale, chCount); + if (!len) return QString::fromLatin1(DefaultLanguage); + QString locale = QString::fromStdWString(std::wstring(wstrLocale)); + QRegularExpressionMatch m = QRegularExpression("(^|[^a-z])([a-z]{2})-").match(locale); + if (m.hasMatch()) { + return m.captured(2); + } + } + chCount = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ILANGUAGE, 0, 0); + if (chCount && chCount < 128) { + WCHAR wstrLocale[128]; + int len = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ILANGUAGE, wstrLocale, chCount), lngId = 0; + if (len < 5) return QString::fromLatin1(DefaultLanguage); + + for (int i = 0; i < 4; ++i) { + WCHAR ch = wstrLocale[i]; + lngId *= 16; + if (ch >= WCHAR('0') && ch <= WCHAR('9')) { + lngId += (ch - WCHAR('0')); + } else if (ch >= WCHAR('A') && ch <= WCHAR('F')) { + lngId += (10 + ch - WCHAR('A')); + } else { + return QString::fromLatin1(DefaultLanguage); + } + } + return langById(lngId); + } + return QString::fromLatin1(DefaultLanguage);*/ + return QString("en"); +} + +QString psAppDataPath() { + /*static const int maxFileLen = MAX_PATH * 10; + WCHAR wstrPath[maxFileLen]; + if (GetEnvironmentVariable(L"APPDATA", wstrPath, maxFileLen)) { + QDir appData(QString::fromStdWString(std::wstring(wstrPath))); + return appData.absolutePath() + "/" + QString::fromWCharArray(AppName) + "/"; + }*/ + return QString(); +} + +QString psCurrentExeDirectory() { + /*LPWSTR *args; + int argsCount; + args = CommandLineToArgvW(GetCommandLine(), &argsCount); + if (args) { + QFileInfo info(QDir::fromNativeSeparators(QString::fromWCharArray(args[0]))); + if (info.isFile()) { + return info.absoluteDir().absolutePath() + '/'; + } + LocalFree(args); + }*/ + return QString(); +} + +void psDoCleanup() { + try { + psAutoStart(false, true); + } catch (...) { + } +} + +int psCleanup() { + /*__try + { + psDoCleanup(); + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + return 0; + }*/ + return 0; +} + +void psDoFixPrevious() { + /*try { + static const int bufSize = 4096; + DWORD checkType, checkSize = bufSize * 2; + WCHAR checkStr[bufSize]; + + QString appId = QString::fromStdWString(AppId); + QString newKeyStr1 = QString("Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\%1_is1").arg(appId); + QString newKeyStr2 = QString("Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\%1_is1").arg(appId); + QString oldKeyStr1 = QString("SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\%1_is1").arg(appId); + QString oldKeyStr2 = QString("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\%1_is1").arg(appId); + HKEY newKey1, newKey2, oldKey1, oldKey2; + LSTATUS newKeyRes1 = RegOpenKeyEx(HKEY_CURRENT_USER, newKeyStr1.toStdWString().c_str(), 0, KEY_READ, &newKey1); + LSTATUS newKeyRes2 = RegOpenKeyEx(HKEY_CURRENT_USER, newKeyStr2.toStdWString().c_str(), 0, KEY_READ, &newKey2); + LSTATUS oldKeyRes1 = RegOpenKeyEx(HKEY_LOCAL_MACHINE, oldKeyStr1.toStdWString().c_str(), 0, KEY_READ, &oldKey1); + LSTATUS oldKeyRes2 = RegOpenKeyEx(HKEY_LOCAL_MACHINE, oldKeyStr2.toStdWString().c_str(), 0, KEY_READ, &oldKey2); + + bool existNew1 = (newKeyRes1 == ERROR_SUCCESS) && (RegQueryValueEx(newKey1, L"InstallDate", 0, &checkType, (BYTE*)checkStr, &checkSize) == ERROR_SUCCESS); checkSize = bufSize * 2; + bool existNew2 = (newKeyRes2 == ERROR_SUCCESS) && (RegQueryValueEx(newKey2, L"InstallDate", 0, &checkType, (BYTE*)checkStr, &checkSize) == ERROR_SUCCESS); checkSize = bufSize * 2; + bool existOld1 = (oldKeyRes1 == ERROR_SUCCESS) && (RegQueryValueEx(oldKey1, L"InstallDate", 0, &checkType, (BYTE*)checkStr, &checkSize) == ERROR_SUCCESS); checkSize = bufSize * 2; + bool existOld2 = (oldKeyRes2 == ERROR_SUCCESS) && (RegQueryValueEx(oldKey2, L"InstallDate", 0, &checkType, (BYTE*)checkStr, &checkSize) == ERROR_SUCCESS); checkSize = bufSize * 2; + + if (newKeyRes1 == ERROR_SUCCESS) RegCloseKey(newKey1); + if (newKeyRes2 == ERROR_SUCCESS) RegCloseKey(newKey2); + if (oldKeyRes1 == ERROR_SUCCESS) RegCloseKey(oldKey1); + if (oldKeyRes2 == ERROR_SUCCESS) RegCloseKey(oldKey2); + + if (existNew1 || existNew2) { + oldKeyRes1 = existOld1 ? RegDeleteKey(HKEY_LOCAL_MACHINE, oldKeyStr1.toStdWString().c_str()) : ERROR_SUCCESS; + oldKeyRes2 = existOld2 ? RegDeleteKey(HKEY_LOCAL_MACHINE, oldKeyStr2.toStdWString().c_str()) : ERROR_SUCCESS; + } + + QString userDesktopLnk, commonDesktopLnk; + WCHAR userDesktopFolder[MAX_PATH], commonDesktopFolder[MAX_PATH]; + HRESULT userDesktopRes = SHGetFolderPath(0, CSIDL_DESKTOPDIRECTORY, 0, SHGFP_TYPE_CURRENT, userDesktopFolder); + HRESULT commonDesktopRes = SHGetFolderPath(0, CSIDL_COMMON_DESKTOPDIRECTORY, 0, SHGFP_TYPE_CURRENT, commonDesktopFolder); + if (SUCCEEDED(userDesktopRes)) { + userDesktopLnk = QString::fromWCharArray(userDesktopFolder) + "\\Telegram.lnk"; + } + if (SUCCEEDED(commonDesktopRes)) { + commonDesktopLnk = QString::fromWCharArray(commonDesktopFolder) + "\\Telegram.lnk"; + } + QFile userDesktopFile(userDesktopLnk), commonDesktopFile(commonDesktopLnk); + if (QFile::exists(userDesktopLnk) && QFile::exists(commonDesktopLnk) && userDesktopLnk != commonDesktopLnk) { + bool removed = QFile::remove(commonDesktopLnk); + } + } catch (...) { + }*/ +} + +int psFixPrevious() { + /*__try + { + psDoFixPrevious(); + } + __except(EXCEPTION_EXECUTE_HANDLER) + { + return 0; + }*/ + return 0; +} + +bool psCheckReadyUpdate() { + /*QString readyPath = cWorkingDir() + qsl("tupdates/ready"); + if (!QDir(readyPath).exists()) { + 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)); + PsUpdateDownloader::clearAll(); + return false; + } + DWORD versionNum; + if (fVersion.read((char*)&versionNum, sizeof(DWORD)) != sizeof(DWORD)) { + LOG(("Update Error: cant read version from file '%1'").arg(versionPath)); + PsUpdateDownloader::clearAll(); + return false; + } + fVersion.close(); + if (versionNum <= AppVersion) { + LOG(("Update Error: cant install version %1 having version %2").arg(versionNum).arg(AppVersion)); + PsUpdateDownloader::clearAll(); + return false; + } + } + + QString curUpdater = (cExeDir() + "Updater.exe"); + QFileInfo updater(cWorkingDir() + "tupdates/ready/Updater.exe"); + if (!updater.exists()) { + QFileInfo current(curUpdater); + if (!current.exists()) { + PsUpdateDownloader::clearAll(); + return false; + } + if (CopyFile(current.absoluteFilePath().toStdWString().c_str(), updater.absoluteFilePath().toStdWString().c_str(), TRUE) == FALSE) { + PsUpdateDownloader::clearAll(); + return false; + } + } + if (CopyFile(updater.absoluteFilePath().toStdWString().c_str(), curUpdater.toStdWString().c_str(), FALSE) == FALSE) { + PsUpdateDownloader::clearAll(); + return false; + } + if (DeleteFile(updater.absoluteFilePath().toStdWString().c_str()) == FALSE) { + PsUpdateDownloader::clearAll(); + return false; + }*/ + return false; // TODO +} + +void psPostprocessFile(const QString &name) { + /*std::wstring zoneFile = QDir::toNativeSeparators(name).toStdWString() + L":Zone.Identifier"; + HANDLE f = CreateFile(zoneFile.c_str(), GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); + if (f == INVALID_HANDLE_VALUE) { // :( + return; + } + + const char data[] = "[ZoneTransfer]\r\nZoneId=3\r\n"; + + DWORD written = 0; + BOOL result = WriteFile(f, data, sizeof(data), &written, NULL); + CloseHandle(f); + + if (!result || written != sizeof(data)) { // :( + return; + }*/ +} + +void psOpenFile(const QString &name, bool openWith) { + /*std::wstring wname = QDir::toNativeSeparators(name).toStdWString(); + + if (openWith && useOpenAs) { + if (shOpenWithDialog) { + OPENASINFO info; + info.oaifInFlags = OAIF_ALLOW_REGISTRATION | OAIF_REGISTER_EXT | OAIF_EXEC; + info.pcszClass = NULL; + info.pcszFile = wname.c_str(); + shOpenWithDialog(0, &info); + } else { + openAs_RunDLL(0, 0, wname.c_str(), SW_SHOWNORMAL); + } + } else { + ShellExecute(0, L"open", wname.c_str(), 0, 0, SW_SHOWNORMAL); + }*/ +} + +void psShowInFolder(const QString &name) { + //QString nameEscaped = QDir::toNativeSeparators(name).replace('"', qsl("\"\"")); + //ShellExecute(0, 0, qsl("explorer").toStdWString().c_str(), (qsl("/select,") + nameEscaped).toStdWString().c_str(), 0, SW_SHOWNORMAL); +} + +void psExecUpdater() { + /*QString targs = qsl("-update"); + if (cFromAutoStart()) targs += qsl(" -autostart"); + if (cDebug()) targs += qsl(" -debug"); + + QString updater(QDir::toNativeSeparators(cExeDir() + "Updater.exe")), wdir(QDir::toNativeSeparators(cWorkingDir())); + + DEBUG_LOG(("Application Info: executing %1 %2").arg(cExeDir() + "Updater.exe").arg(targs)); + HINSTANCE r = ShellExecute(0, 0, updater.toStdWString().c_str(), targs.toStdWString().c_str(), wdir.isEmpty() ? 0 : wdir.toStdWString().c_str(), SW_SHOWNORMAL); + if (long(r) < 32) { + DEBUG_LOG(("Application Error: failed to execute %1, working directory: '%2', result: %3").arg(updater).arg(wdir).arg(long(r))); + QString readyPath = cWorkingDir() + qsl("tupdates/ready"); + PsUpdateDownloader::deleteDir(readyPath); + }*/ +} + +void psExecTelegram() { + /*QString targs = qsl("-noupdate -tosettings"); + if (cFromAutoStart()) targs += qsl(" -autostart"); + if (cDebug()) targs += qsl(" -debug"); + if (cDataFile() != (cTestMode() ? qsl("data_test") : qsl("data"))) targs += qsl(" -key \"") + cDataFile() + '"'; + + QString telegram(QDir::toNativeSeparators(cExeDir() + "Telegram.exe")), wdir(QDir::toNativeSeparators(cWorkingDir())); + + DEBUG_LOG(("Application Info: executing %1 %2").arg(cExeDir() + "Telegram.exe").arg(targs)); + HINSTANCE r = ShellExecute(0, 0, telegram.toStdWString().c_str(), targs.toStdWString().c_str(), wdir.isEmpty() ? 0 : wdir.toStdWString().c_str(), SW_SHOWNORMAL); + if (long(r) < 32) { + DEBUG_LOG(("Application Error: failed to execute %1, working directory: '%2', result: %3").arg(telegram).arg(wdir).arg(long(r))); + }*/ +} + +void psAutoStart(bool start, bool silent) { + /*WCHAR startupFolder[MAX_PATH]; + HRESULT hres = SHGetFolderPath(0, CSIDL_STARTUP, 0, SHGFP_TYPE_CURRENT, startupFolder); + if (SUCCEEDED(hres)) { + QString lnk = QString::fromWCharArray(startupFolder) + "\\Telegram.lnk"; + if (start) { + IShellLink* psl; + hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl); + if (SUCCEEDED(hres)) { + IPersistFile* ppf; + + QString exe = QDir::toNativeSeparators(QDir(cExeDir()).absolutePath() + "//Telegram.exe"), dir = QDir::toNativeSeparators(QDir(cWorkingDir()).absolutePath()); + psl->SetArguments(L"-autostart"); + psl->SetPath(exe.toStdWString().c_str()); + psl->SetWorkingDirectory(dir.toStdWString().c_str()); + psl->SetDescription(L"Telegram autorun link.\nYou can disable autorun in Telegram settings."); + + hres = psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf); + + if (SUCCEEDED(hres)) { + hres = ppf->Save(lnk.toStdWString().c_str(), TRUE); + ppf->Release(); + } else { + if (!silent) LOG(("App Error: could not create interface IID_IPersistFile %1").arg(hres)); + } + psl->Release(); + } else { + if (!silent) LOG(("App Error: could not create instance of IID_IShellLink %1").arg(hres)); + } + } else { + QFile::remove(lnk); + } + } else { + if (!silent) LOG(("App Error: could not get CSIDL_STARTUP folder %1").arg(hres)); + }*/ +} diff --git a/Telegram/SourceFiles/pspecific_mac_p.h b/Telegram/SourceFiles/pspecific_mac_p.h new file mode 100644 index 000000000..0e822470f --- /dev/null +++ b/Telegram/SourceFiles/pspecific_mac_p.h @@ -0,0 +1,51 @@ +/* +This file is part of Telegram Desktop, +an unofficial desktop 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://tdesktop.com +*/ +#pragma once + +class PsMacWindowData; + +class PsMacWindowPrivate { +public: + + PsMacWindowPrivate(); + + void setWindowBadge(const char *utf8str); + void startBounce(); + + void holdOnTop(WId winId); + void showOverAll(WId winId); + void activateWnd(WId winId); + void showNotify(unsigned long long peer, const char *utf8title, const char *subtitle, const char *utf8msg); + void clearNotifies(unsigned long long peer = 0); + + virtual void activeSpaceChanged() { + } + virtual void notifyClicked(unsigned long long peer) { + } + virtual void notifyReplied(unsigned long long peer, const char *str) { + } + + ~PsMacWindowPrivate(); + + PsMacWindowData *data; + +}; + +void _debugShowAlert(const char *utf8str); +void _outputDebugString(const char *utf8str); +int64 _idleTime(); diff --git a/Telegram/SourceFiles/pspecific_mac_p.mm b/Telegram/SourceFiles/pspecific_mac_p.mm new file mode 100644 index 000000000..c5828bb15 --- /dev/null +++ b/Telegram/SourceFiles/pspecific_mac_p.mm @@ -0,0 +1,258 @@ +/* +This file is part of Telegram Desktop, +an unofficial desktop 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://tdesktop.com +*/ +#include "stdafx.h" +#include "pspecific_mac_p.h" + +#include +#include +#include + +@interface ObserverHelper : NSObject { +} + +- (id) init:(PsMacWindowPrivate *)aWnd; +- (void) activeSpaceDidChange:(NSNotification *)aNotification; + +@end + +@interface NotifyHandler : NSObject { +} + +- (id) init:(PsMacWindowPrivate *)aWnd; + +- (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification; + +- (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center shouldPresentNotification:(NSUserNotification *)notification; + +@end + +class PsMacWindowData { +public: + + PsMacWindowData(PsMacWindowPrivate *wnd) : + wnd(wnd), + observerHelper([[ObserverHelper alloc] init:wnd]), + notifyHandler([[NotifyHandler alloc] init:wnd]) { + } + + void onNotifyClick(NSUserNotification *notification) { + NSNumber *peerObj = [[notification userInfo] objectForKey:@"peer"]; + unsigned long long peerLong = [peerObj unsignedLongLongValue]; + wnd->notifyClicked(peerLong); + } + + void onNotifyReply(NSUserNotification *notification) { +// notification.response + } + + ~PsMacWindowData() { + [observerHelper release]; + [notifyHandler release]; + } + + PsMacWindowPrivate *wnd; + ObserverHelper *observerHelper; + NotifyHandler *notifyHandler; +}; + +@implementation ObserverHelper { + PsMacWindowPrivate *wnd; +} + +- (id) init:(PsMacWindowPrivate *)aWnd { + if (self = [super init]) { + wnd = aWnd; + } + return self; +} + +- (void) activeSpaceDidChange:(NSNotification *)aNotification { + wnd->activeSpaceChanged(); +} + +@end + +@implementation NotifyHandler { + PsMacWindowPrivate *wnd; +} + +- (id) init:(PsMacWindowPrivate *)aWnd { + if (self = [super init]) { + wnd = aWnd; + } + return self; +} + +- (void) userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification { + if (notification.activationType == NSUserNotificationActivationTypeReplied){ + wnd->data->onNotifyReply(notification); + } else if (notification.activationType == NSUserNotificationActivationTypeContentsClicked) { + wnd->data->onNotifyClick(notification); + } + [center removeDeliveredNotification: notification]; +} + +- (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center shouldPresentNotification:(NSUserNotification *)notification { + return YES; +} + +@end + +PsMacWindowPrivate::PsMacWindowPrivate() : data(new PsMacWindowData(this)) { + [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:data->observerHelper selector:@selector(activeSpaceDidChange:) name:NSWorkspaceActiveSpaceDidChangeNotification object:nil]; + NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter]; + [center setDelegate:data->notifyHandler]; +} + +void PsMacWindowPrivate::setWindowBadge(const char *utf8str) { + NSString *badgeString = [[NSString alloc] initWithUTF8String:utf8str]; + [[NSApp dockTile] setBadgeLabel:badgeString]; + [badgeString release]; +} + +void PsMacWindowPrivate::startBounce() { + [NSApp requestUserAttention:NSInformationalRequest]; +} + +void PsMacWindowPrivate::holdOnTop(WId winId) { + NSWindow *wnd = [reinterpret_cast(winId) window]; + [wnd setHidesOnDeactivate:NO]; +} + +void PsMacWindowPrivate::showOverAll(WId winId) { + NSWindow *wnd = [reinterpret_cast(winId) window]; + [wnd setLevel:NSFloatingWindowLevel]; + [wnd setStyleMask:NSUtilityWindowMask | NSNonactivatingPanelMask]; + [wnd setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces|NSWindowCollectionBehaviorFullScreenAuxiliary|NSWindowCollectionBehaviorIgnoresCycle]; +} + +void PsMacWindowPrivate::activateWnd(WId winId) { + NSWindow *wnd = [reinterpret_cast(winId) window]; + [wnd orderFront:wnd]; +} + +void PsMacWindowPrivate::showNotify(unsigned long long peer, const char *utf8title, const char *utf8subtitle, const char *utf8msg) { + NSUserNotification *notification = [[NSUserNotification alloc] init]; + + NSDictionary *uinfo = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithUnsignedLongLong:peer],@"peer",nil]; + [notification setUserInfo:uinfo]; + [uinfo release]; + + NSString *title = [[NSString alloc] initWithUTF8String:utf8title]; + [notification setTitle:title]; + [title release]; + + NSString *subtitle = [[NSString alloc] initWithUTF8String:utf8subtitle]; + [notification setSubtitle:subtitle]; + [subtitle release]; + + NSString *msg = [[NSString alloc] initWithUTF8String:utf8msg]; + [notification setInformativeText:msg]; + [msg release]; + +// [notification setHasReplyButton:YES]; + + [notification setSoundName:nil]; + + NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter]; + [center deliverNotification:notification]; + + [notification release]; +} + +void PsMacWindowPrivate::clearNotifies(unsigned long long peer) { + NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter]; + if (peer) { + NSArray *notifies = [center deliveredNotifications]; + for (id notify in notifies) { + if ([[[notify userInfo] objectForKey:@"peer"] unsignedLongLongValue] == peer) { + [center removeDeliveredNotification:notify]; + } + } + } else { + [center removeAllDeliveredNotifications]; + } +} + +void _debugShowAlert(const char *utf8str) { + NSString *text = [[NSString alloc] initWithUTF8String: utf8str]; + NSAlert *alert = [NSAlert alertWithMessageText:@"Debug Message" defaultButton:@"OK" alternateButton:nil otherButton:nil informativeTextWithFormat:@"%@", text]; + [alert runModal]; + [alert release]; + [text release]; +} + +void _outputDebugString(const char *utf8str) { + NSString *text = [[NSString alloc] initWithUTF8String:utf8str]; + NSLog(@"%@", text); + [text release]; +} + +PsMacWindowPrivate::~PsMacWindowPrivate() { + delete data; +} + +int64 _idleTime() { // taken from https://github.com/trueinteractions/tint/issues/53 + CFMutableDictionaryRef properties = 0; + CFTypeRef obj; + mach_port_t masterPort; + io_iterator_t iter; + io_registry_entry_t curObj; + + IOMasterPort(MACH_PORT_NULL, &masterPort); + + /* Get IOHIDSystem */ + IOServiceGetMatchingServices(masterPort, IOServiceMatching("IOHIDSystem"), &iter); + if (iter == 0) { + return -1; + } else { + curObj = IOIteratorNext(iter); + } + if (IORegistryEntryCreateCFProperties(curObj, &properties, kCFAllocatorDefault, 0) == KERN_SUCCESS && properties != NULL) { + obj = CFDictionaryGetValue(properties, CFSTR("HIDIdleTime")); + CFRetain(obj); + } else { + return -1; + } + + uint64 err = ~0L, result = err; + if (obj) { + CFTypeID type = CFGetTypeID(obj); + + if (type == CFDataGetTypeID()) { + CFDataGetBytes((CFDataRef) obj, CFRangeMake(0, sizeof(result)), (UInt8*)&result); + } else if (type == CFNumberGetTypeID()) { + CFNumberGetValue((CFNumberRef)obj, kCFNumberSInt64Type, &result); + } else { + // error + } + + CFRelease(obj); + + if (result != err) { + result /= 1000000; // return as ms + } + } else { + // error + } + + CFRelease((CFTypeRef)properties); + IOObjectRelease(curObj); + IOObjectRelease(iter); + return (result == err) ? -1 : int64(result); +} diff --git a/Telegram/SourceFiles/pspecific_wnd.cpp b/Telegram/SourceFiles/pspecific_wnd.cpp index 79fae055a..4bf579be4 100644 --- a/Telegram/SourceFiles/pspecific_wnd.cpp +++ b/Telegram/SourceFiles/pspecific_wnd.cpp @@ -1,3 +1,4 @@ + /* This file is part of Telegram Desktop, an unofficial desktop messaging app, see https://telegram.org @@ -1878,7 +1879,7 @@ PsNotifyWindow::~PsNotifyWindow() { if (App::wnd()) App::wnd()->psShowNextNotify(this); } -PsApplication::PsApplication(int argc, char *argv[]) : QApplication(argc, argv) { +PsApplication::PsApplication(int &argc, char **argv) : QApplication(argc, argv) { } void PsApplication::psInstallEventFilter() { @@ -2444,12 +2445,12 @@ QString psAppDataPath() { WCHAR wstrPath[maxFileLen]; if (GetEnvironmentVariable(L"APPDATA", wstrPath, maxFileLen)) { QDir appData(QString::fromStdWString(std::wstring(wstrPath))); - return appData.absolutePath() + "/" + QString::fromWCharArray(AppName) + "/"; + return appData.absolutePath() + '/' + QString::fromWCharArray(AppName) + '/'; } return QString(); } -QString psCurrentExeDirectory() { +QString psCurrentExeDirectory(int argc, char *argv[]) { LPWSTR *args; int argsCount; args = CommandLineToArgvW(GetCommandLine(), &argsCount); diff --git a/Telegram/SourceFiles/pspecific_wnd.h b/Telegram/SourceFiles/pspecific_wnd.h index 70634a5e3..6189c380d 100644 --- a/Telegram/SourceFiles/pspecific_wnd.h +++ b/Telegram/SourceFiles/pspecific_wnd.h @@ -187,7 +187,7 @@ class PsApplication : public QApplication { public: - PsApplication(int argc, char *argv[]); + PsApplication(int &argc, char **argv); void psInstallEventFilter(); ~PsApplication(); @@ -246,7 +246,7 @@ QString psLocalServerPrefix(); QString psCurrentCountry(); QString psCurrentLanguage(); QString psAppDataPath(); -QString psCurrentExeDirectory(); +QString psCurrentExeDirectory(int argc, char *argv[]); void psAutoStart(bool start, bool silent = false); int psCleanup(); diff --git a/Telegram/SourceFiles/settings.cpp b/Telegram/SourceFiles/settings.cpp index 97bc10f08..c9e24dcb1 100644 --- a/Telegram/SourceFiles/settings.cpp +++ b/Telegram/SourceFiles/settings.cpp @@ -65,9 +65,23 @@ RecentEmojiPreload gRecentEmojisPreload; QString gLangFile; +bool gRetina = false; +float64 gRetinaFactor = 1.; +bool gCustomNotifies = false; + +#ifdef Q_OS_WIN +DBIPlatform gPlatform = dbipWindows; +#elif defined Q_OS_MAC +DBIPlatform gPlatform = dbipMac; +#elif defined Q_OS_LINUX +DBIPlatform gPlatform = dbipLinux; +#else +#error Unknown platform +#endif + void settingsParseArgs(int argc, char *argv[]) { - gExeDir = psCurrentExeDirectory(); - for (uint32 i = 0; i < argc; ++i) { + gExeDir = psCurrentExeDirectory(argc, argv); + for (int32 i = 0; i < argc; ++i) { if (string("-release") == argv[i]) { gTestMode = false; } else if (string("-debug") == argv[i]) { diff --git a/Telegram/SourceFiles/settings.h b/Telegram/SourceFiles/settings.h index ebb40f905..d69ae3df2 100644 --- a/Telegram/SourceFiles/settings.h +++ b/Telegram/SourceFiles/settings.h @@ -130,4 +130,10 @@ const RecentEmojiPack &cGetRecentEmojis(); DeclareReadSetting(QString, LangFile); +DeclareSetting(bool, Retina); +DeclareSetting(float64, RetinaFactor); +DeclareSetting(bool, CustomNotifies); + +DeclareReadSetting(DBIPlatform, Platform); + void settingsParseArgs(int argc, char *argv[]); diff --git a/Telegram/SourceFiles/settingswidget.cpp b/Telegram/SourceFiles/settingswidget.cpp index 4823d7a62..78da9d64b 100644 --- a/Telegram/SourceFiles/settingswidget.cpp +++ b/Telegram/SourceFiles/settingswidget.cpp @@ -96,17 +96,17 @@ QString scaleLabel(DBIScale scale) { } bool scaleIs(DBIScale scale) { - return cRealScale() == scale || cRealScale() == dbisAuto && cScreenScale() == scale; + return cRealScale() == scale || (cRealScale() == dbisAuto && cScreenScale() == scale); } SettingsInner::SettingsInner(Settings *parent) : QWidget(parent), _self(App::self()), // profile - _phoneText(_self ? App::formatPhone(_self->phone) : QString()), - _uploadPhoto(this, lang(lng_settings_upload), st::btnSetUpload), - _cancelPhoto(this, lang(lng_cancel)), - _nameOver(false), _photoOver(false), a_photo(0), _nameCache(_self ? _self->name : QString()), + _nameCache(_self ? _self->name : QString()), + _phoneText(_self ? App::formatPhone(_self->phone) : QString()), + _uploadPhoto(this, lang(lng_settings_upload), st::btnSetUpload), + _cancelPhoto(this, lang(lng_cancel)), _nameOver(false), _photoOver(false), a_photo(0), // notifications _desktopNotify(this, lang(lng_settings_desktop_notify), cDesktopNotify()), @@ -1066,8 +1066,8 @@ void Settings::animShow(const QPixmap &bgAnimCache, bool back) { anim::stop(this); showAll(); - _animCache = grab(rect()); - + _animCache = myGrab(this, rect()); + a_coord = back ? anim::ivalue(-st::introSlideShift, 0) : anim::ivalue(st::introSlideShift, 0); a_alpha = anim::fvalue(0, 1); a_bgCoord = back ? anim::ivalue(0, st::introSlideShift) : anim::ivalue(0, -st::introSlideShift); diff --git a/Telegram/SourceFiles/types.cpp b/Telegram/SourceFiles/types.cpp index 1ae96b393..e426c50cf 100644 --- a/Telegram/SourceFiles/types.cpp +++ b/Telegram/SourceFiles/types.cpp @@ -79,24 +79,54 @@ namespace { QReadWriteLock unixtimeLock; volatile int32 unixtimeDelta = 0; volatile bool unixtimeWasSet = false; - volatile uint64 msgIdStart, msgIdLocal = 0; + volatile uint64 _msgIdStart, _msgIdLocal = 0, _msgIdMsStart; uint32 _reqId = 0; + + void _initMsgIdConstants() { +#ifdef Q_OS_WIN + LARGE_INTEGER li; + QueryPerformanceCounter(&li); + _msgIdMsStart = li.QuadPart; +#elif defined Q_OS_MAC + _msgIdMsStart = mach_absolute_time(); +#else + timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + _msgIdMsStart = 1000000000 * uint64(ts.tv_sec) + uint64(ts.tv_nsec); +#endif + + uint32 msgIdRand; + memset_rand(&msgIdRand, sizeof(uint32)); + _msgIdStart = (((uint64)((uint32)unixtime()) << 32) | (uint64)msgIdRand); + } } int32 myunixtime() { return (int32)time(NULL); } +void unixtimeInit() { + { + QWriteLocker locker(&unixtimeLock); + unixtimeWasSet = false; + unixtimeDelta = 0; + } + _initMsgIdConstants(); +} + void unixtimeSet(int32 serverTime, bool force) { - QWriteLocker locker(&unixtimeLock); - if (force) { - DEBUG_LOG(("MTP Info: forced setting client unixtime to %1").arg(serverTime)); - } else { - if (unixtimeWasSet) return; - DEBUG_LOG(("MTP Info: setting client unixtime to %1").arg(serverTime)); - } - unixtimeWasSet = true; - unixtimeDelta = serverTime + 1 - myunixtime(); + { + QWriteLocker locker(&unixtimeLock); + if (force) { + DEBUG_LOG(("MTP Info: forced setting client unixtime to %1").arg(serverTime)); + } else { + if (unixtimeWasSet) return; + DEBUG_LOG(("MTP Info: setting client unixtime to %1").arg(serverTime)); + } + unixtimeWasSet = true; + unixtimeDelta = serverTime + 1 - myunixtime(); + } + _initMsgIdConstants(); } int32 unixtime() { @@ -121,7 +151,7 @@ MTPint toServerTime(const int32 &clientTime) { namespace { float64 _msFreq; float64 _msgIdCoef; - uint64 _msStart = 0; + int64 _msStart = 0; class _MsInitializer { public: @@ -137,7 +167,7 @@ namespace { QueryPerformanceCounter(&li); _msStart = li.QuadPart; #elif defined Q_OS_MAC - mach_timebase_info_data_t tb = { 0 }; + mach_timebase_info_data_t tb = { 0, 0 }; mach_timebase_info(&tb); _msFreq = (float64(tb.numer) / tb.denom) / 1000000.; @@ -163,24 +193,11 @@ namespace { } } }; - - class _MsgIdInitializer { - public: - _MsgIdInitializer() { - uint32 msgIdRand; - memset_rand(&msgIdRand, sizeof(uint32)); - msgIdStart = (((uint64)((uint32)time(NULL)) << 32) | (uint64)msgIdRand); - } - }; - + void _msInitialize() { static _MsInitializer _msInitializer; } - void _msgIdInitialize() { - static _MsgIdInitializer _msgIdInitializer; - } - class _MsStarter { public: _MsStarter() { @@ -212,16 +229,13 @@ uint64 getms() { } uint64 msgid() { - _msInitialize(); - _msgIdInitialize(); - #ifdef Q_OS_WIN LARGE_INTEGER li; QueryPerformanceCounter(&li); - uint64 result = msgIdStart + (uint64)floor((li.QuadPart - _msStart) * _msgIdCoef); + int64 result = _msgIdStart + (int64)floor((li.QuadPart - _msgIdMsStart) * _msgIdCoef); #elif defined Q_OS_MAC - uint64 msCount = mach_absolute_time(); - uint64 result = msgIdStart + (uint64)floor((msCount - _msStart) * _msgIdCoef); + int64 msCount = mach_absolute_time(); + int64 result = _msgIdStart + (int64)floor((msCount - _msgIdMsStart) * _msgIdCoef); #else uint64 result = 0; //TODO @@ -229,8 +243,7 @@ uint64 msgid() { result &= ~0x03L; - QWriteLocker locker(&unixtimeLock); - return result + ((uint64)unixtimeDelta << 32) + (msgIdLocal += 4); + return result + (_msgIdLocal += 4); } uint32 reqid() { diff --git a/Telegram/SourceFiles/types.h b/Telegram/SourceFiles/types.h index e82f71a18..363286ba2 100644 --- a/Telegram/SourceFiles/types.h +++ b/Telegram/SourceFiles/types.h @@ -70,6 +70,7 @@ private: class MTPint; int32 myunixtime(); +void unixtimeInit(); void unixtimeSet(int32 servertime, bool force = false); int32 unixtime(); int32 fromServerTime(const MTPint &serverTime); @@ -268,6 +269,12 @@ enum DBIEmojiTab { dbietSymbols = 4, }; +enum DBIPlatform { + dbipWindows = 0, + dbipMac = 1, + dbipLinux = 2, +}; + typedef enum { HitTestNone = 0, HitTestClient, diff --git a/Telegram/SourceFiles/window.cpp b/Telegram/SourceFiles/window.cpp index 2febf5bb3..dab1fc75f 100644 --- a/Telegram/SourceFiles/window.cpp +++ b/Telegram/SourceFiles/window.cpp @@ -117,6 +117,7 @@ void Window::init() { setWindowIcon(myIcon); App::app()->installEventFilter(this); + connect(windowHandle(), SIGNAL(activeChanged()), this, SLOT(checkHistoryActivation())); QPalette p(palette()); p.setColor(QPalette::Window, st::wndBG->c); @@ -153,7 +154,7 @@ void Window::clearWidgets() { void Window::setupIntro(bool anim) { if (intro && (intro->animating() || intro->isVisible()) && !main) return; - QPixmap bg = grab(QRect(0, st::titleHeight, width(), height() - st::titleHeight)); + QPixmap bg = myGrab(this, QRect(0, st::titleHeight, width(), height() - st::titleHeight)); clearWidgets(); intro = new IntroWidget(this); @@ -172,7 +173,7 @@ void Window::getNotifySetting(const MTPInputNotifyPeer &peer, uint32 msWait) { } void Window::setupMain(bool anim) { - QPixmap bg = grab(QRect(0, st::titleHeight, width(), height() - st::titleHeight)); + QPixmap bg = myGrab(this, QRect(0, st::titleHeight, width(), height() - st::titleHeight)); clearWidgets(); main = new MainWidget(this); main->move(0, st::titleHeight); @@ -193,7 +194,7 @@ void Window::showSettings() { if (settings) { return hideSettings(); } - QPixmap bg = grab(QRect(0, st::titleHeight, width(), height() - st::titleHeight)); + QPixmap bg = myGrab(this, QRect(0, st::titleHeight, width(), height() - st::titleHeight)); if (intro) { anim::stop(intro); @@ -222,7 +223,7 @@ void Window::hideSettings(bool fast) { main->show(); } } else { - QPixmap bg = grab(QRect(0, st::titleHeight, width(), height() - st::titleHeight)); + QPixmap bg = myGrab(this, QRect(0, st::titleHeight, width(), height() - st::titleHeight)); anim::stop(settings); settings->hide(); @@ -338,12 +339,12 @@ bool Window::layerShown() { return !!layerBG || !!_topWidget; } -bool Window::historyIsActive() const { - return psIsActive() && main && main->historyIsActive() && (!settings || !settings->isVisible()); +bool Window::historyIsActive(int state) const { + return psIsActive(state) && main && main->historyIsActive() && (!settings || !settings->isVisible()); } -void Window::checkHistoryActivation() { - if (main && MTP::authedId() && historyIsActive()) { +void Window::checkHistoryActivation(int state) { + if (main && MTP::authedId() && historyIsActive(state)) { main->historyWasRead(); } } @@ -442,7 +443,7 @@ QRect Window::iconRect() const { bool Window::eventFilter(QObject *obj, QEvent *evt) { if (obj == App::app() && (evt->type() == QEvent::ApplicationActivate)) { - checkHistoryActivation(); + QTimer::singleShot(1, this, SLOT(checkHistoryActivation())); } return PsMainWindow::eventFilter(obj, evt); } @@ -572,7 +573,7 @@ void Window::noTopWidget(QWidget *w) { void Window::showFromTray(QSystemTrayIcon::ActivationReason reason) { if (reason != QSystemTrayIcon::Context) { - activate(); + activate(); setWindowIcon(myIcon); psUpdateCounter(); if (App::main()) App::main()->setOnline(windowState()); diff --git a/Telegram/SourceFiles/window.h b/Telegram/SourceFiles/window.h index b7ddc9140..66fca6df2 100644 --- a/Telegram/SourceFiles/window.h +++ b/Telegram/SourceFiles/window.h @@ -122,8 +122,7 @@ public: bool layerShown(); - bool historyIsActive() const; - void checkHistoryActivation(); + bool historyIsActive(int state = -1) const; bool getPhotoCoords(PhotoData *photo, int32 &x, int32 &y, int32 &w) const; bool getVideoCoords(VideoData *video, int32 &x, int32 &y, int32 &w) const; @@ -153,6 +152,8 @@ public: public slots: + void checkHistoryActivation(int state = -1); + void showSettings(); void layerHidden(); void updateTitleStatus(); diff --git a/Telegram/Style.plist b/Telegram/Style.plist new file mode 100644 index 000000000..0aa83965c --- /dev/null +++ b/Telegram/Style.plist @@ -0,0 +1,20 @@ + + + + + CFBundleExecutable + MetaStyle + CFBundleGetInfoString + MetaStyle compiler + CFBundleIdentifier + com.tdesktop.${PRODUCT_NAME:rfc1034identifier} + CFBundlePackageType + APPL + CFBundleSignature + ???? + NOTE + + NSPrincipalClass + NSApplication + + diff --git a/Telegram/Telegram.plist b/Telegram/Telegram.plist new file mode 100644 index 000000000..053296071 --- /dev/null +++ b/Telegram/Telegram.plist @@ -0,0 +1,22 @@ + + + + + CFBundleExecutable + Telegram + CFBundleGetInfoString + Telegram Desktop messaging app + CFBundleIdentifier + com.tdesktop.${PRODUCT_NAME:rfc1034identifier} + CFBundlePackageType + APPL + CFBundleShortVersionString + 0.5.1 + CFBundleSignature + ???? + NOTE + + NSPrincipalClass + NSApplication + + diff --git a/Telegram/Telegram.pro b/Telegram/Telegram.pro new file mode 100644 index 000000000..f21d06e91 --- /dev/null +++ b/Telegram/Telegram.pro @@ -0,0 +1,199 @@ +QT += core gui widgets network multimedia + +CONFIG(debug, debug|release) { + DEFINES += _DEBUG + OBJECTS_DIR = ./../Mac/DebugIntermediate + MOC_DIR = ./GeneratedFiles/Debug + RCC_DIR = ./GeneratedFiles + DESTDIR = ./../Mac/Debug +} +CONFIG(release, debug|release) { + OBJECTS_DIR = ./../Mac/ReleaseIntermediate + MOC_DIR = ./GeneratedFiles/Release + RCC_DIR = ./GeneratedFiles + DESTDIR = ./../Mac/Release +} + +macx { + QMAKE_INFO_PLIST = ./SourceFiles/Telegram.plist + OBJECTIVE_SOURCES += ./SourceFiles/pspecific_mac_p.mm + OBJECTIVE_HEADERS += ./SourceFiles/pspecific_mac_p.h + QMAKE_LFLAGS += -framework Cocoa +} + +SOURCES += \ + ./SourceFiles/main.cpp \ + ./SourceFiles/stdafx.cpp \ + ./SourceFiles/app.cpp \ + ./SourceFiles/application.cpp \ + ./SourceFiles/dialogswidget.cpp \ + ./SourceFiles/dropdown.cpp \ + ./SourceFiles/fileuploader.cpp \ + ./SourceFiles/history.cpp \ + ./SourceFiles/historywidget.cpp \ + ./SourceFiles/langloaderplain.cpp \ + ./SourceFiles/layerwidget.cpp \ + ./SourceFiles/profilewidget.cpp \ + ./SourceFiles/localimageloader.cpp \ + ./SourceFiles/logs.cpp \ + ./SourceFiles/mainwidget.cpp \ + ./SourceFiles/settings.cpp \ + ./SourceFiles/settingswidget.cpp \ + ./SourceFiles/supporttl.cpp \ + ./SourceFiles/sysbuttons.cpp \ + ./SourceFiles/title.cpp \ + ./SourceFiles/types.cpp \ + ./SourceFiles/window.cpp \ + ./SourceFiles/mtproto/mtp.cpp \ + ./SourceFiles/mtproto/mtpConnection.cpp \ + ./SourceFiles/mtproto/mtpDC.cpp \ + ./SourceFiles/mtproto/mtpFileLoader.cpp \ + ./SourceFiles/mtproto/mtpRPC.cpp \ + ./SourceFiles/mtproto/mtpSession.cpp \ + ./SourceFiles/gui/animation.cpp \ + ./SourceFiles/gui/boxshadow.cpp \ + ./SourceFiles/gui/button.cpp \ + ./SourceFiles/gui/countrycodeinput.cpp \ + ./SourceFiles/gui/countryinput.cpp \ + ./SourceFiles/gui/emoji_config.cpp \ + ./SourceFiles/gui/filedialog.cpp \ + ./SourceFiles/gui/flatbutton.cpp \ + ./SourceFiles/gui/flatcheckbox.cpp \ + ./SourceFiles/gui/flatinput.cpp \ + ./SourceFiles/gui/flatlabel.cpp \ + ./SourceFiles/gui/flattextarea.cpp \ + ./SourceFiles/gui/images.cpp \ + ./SourceFiles/gui/phoneinput.cpp \ + ./SourceFiles/gui/scrollarea.cpp \ + ./SourceFiles/gui/style_core.cpp \ + ./SourceFiles/gui/text.cpp \ + ./SourceFiles/gui/twidget.cpp \ + ./GeneratedFiles/lang.cpp \ + ./GeneratedFiles/style_auto.cpp \ + ./SourceFiles/boxes/aboutbox.cpp \ + ./SourceFiles/boxes/addcontactbox.cpp \ + ./SourceFiles/boxes/addparticipantbox.cpp \ + ./SourceFiles/boxes/confirmbox.cpp \ + ./SourceFiles/boxes/connectionbox.cpp \ + ./SourceFiles/boxes/contactsbox.cpp \ + ./SourceFiles/boxes/downloadpathbox.cpp \ + ./SourceFiles/boxes/emojibox.cpp \ + ./SourceFiles/boxes/newgroupbox.cpp \ + ./SourceFiles/boxes/photocropbox.cpp \ + ./SourceFiles/boxes/photosendbox.cpp \ + ./SourceFiles/intro/intro.cpp \ + ./SourceFiles/intro/introcode.cpp \ + ./SourceFiles/intro/introphone.cpp \ + ./SourceFiles/intro/introsignup.cpp \ + ./SourceFiles/intro/introsteps.cpp + +HEADERS += \ + ./SourceFiles/stdafx.h \ + ./SourceFiles/app.h \ + ./SourceFiles/application.h \ + ./SourceFiles/config.h \ + ./SourceFiles/countries.h \ + ./SourceFiles/dialogswidget.h \ + ./SourceFiles/dropdown.h \ + ./SourceFiles/fileuploader.h \ + ./SourceFiles/history.h \ + ./SourceFiles/historywidget.h \ + ./SourceFiles/langloaderplain.h \ + ./SourceFiles/layerwidget.h \ + ./SourceFiles/profilewidget.h \ + ./SourceFiles/localimageloader.h \ + ./SourceFiles/logs.h \ + ./SourceFiles/mainwidget.h \ + ./SourceFiles/settings.h \ + ./SourceFiles/settingswidget.h \ + ./SourceFiles/style.h \ + ./SourceFiles/supporttl.h \ + ./SourceFiles/sysbuttons.h \ + ./SourceFiles/title.h \ + ./SourceFiles/types.h \ + ./SourceFiles/window.h \ + ./SourceFiles/mtproto/mtpSessionImpl.h \ + ./SourceFiles/mtproto/mtp.h \ + ./SourceFiles/mtproto/mtpAuthKey.h \ + ./SourceFiles/mtproto/mtpConnection.h \ + ./SourceFiles/mtproto/mtpCoreTypes.h \ + ./SourceFiles/mtproto/mtpDC.h \ + ./SourceFiles/mtproto/mtpFileLoader.h \ + ./SourceFiles/mtproto/mtpPublicRSA.h \ + ./SourceFiles/mtproto/mtpRPC.h \ + ./SourceFiles/mtproto/mtpScheme.h \ + ./SourceFiles/mtproto/mtpSession.h \ + ./SourceFiles/pspecific.h \ + ./SourceFiles/gui/animation.h \ + ./SourceFiles/gui/boxshadow.h \ + ./SourceFiles/gui/button.h \ + ./SourceFiles/gui/countrycodeinput.h \ + ./SourceFiles/gui/countryinput.h \ + ./SourceFiles/gui/emoji_config.h \ + ./SourceFiles/gui/filedialog.h \ + ./SourceFiles/gui/flatbutton.h \ + ./SourceFiles/gui/flatcheckbox.h \ + ./SourceFiles/gui/flatinput.h \ + ./SourceFiles/gui/flatlabel.h \ + ./SourceFiles/gui/flattextarea.h \ + ./SourceFiles/gui/images.h \ + ./SourceFiles/gui/phoneinput.h \ + ./SourceFiles/gui/scrollarea.h \ + ./SourceFiles/gui/style_core.h \ + ./SourceFiles/gui/text.h \ + ./SourceFiles/gui/twidget.h \ + ./GeneratedFiles/lang.h \ + ./GeneratedFiles/style_auto.h \ + ./GeneratedFiles/style_classes.h \ + ./SourceFiles/boxes/aboutbox.h \ + ./SourceFiles/boxes/addcontactbox.h \ + ./SourceFiles/boxes/addparticipantbox.h \ + ./SourceFiles/boxes/confirmbox.h \ + ./SourceFiles/boxes/connectionbox.h \ + ./SourceFiles/boxes/contactsbox.h \ + ./SourceFiles/boxes/downloadpathbox.h \ + ./SourceFiles/boxes/emojibox.h \ + ./SourceFiles/boxes/newgroupbox.h \ + ./SourceFiles/boxes/photocropbox.h \ + ./SourceFiles/boxes/photosendbox.h \ + ./SourceFiles/intro/intro.h \ + ./SourceFiles/intro/introcode.h \ + ./SourceFiles/intro/introphone.h \ + ./SourceFiles/intro/introsignup.h \ + ./SourceFiles/intro/introsteps.h + +win32 { +SOURCES += \ + ./SourceFiles/pspecific_wnd.cpp +HEADERS += \ + ./SourceFiles/pspecific_wnd.h +} + +macx { +SOURCES += \ + ./SourceFiles/pspecific_mac.cpp +HEADERS += \ + ./SourceFiles/pspecific_mac.h +} + +CONFIG += precompile_header + +PRECOMPILED_HEADER = ./SourceFiles/stdafx.h + +INCLUDEPATH += ./../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui\ + ./../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore\ + ./../../Libraries/QtStatic/qtbase/include\ + ./SourceFiles\ + ./GeneratedFiles\ + ./../../Libraries/lzma/C\ + ./../../Libraries/libexif-0.6.20 + +LIBS += -lcrypto -lssl -lz +LIBS += ./../../Libraries/libexif-0.6.20/libexif/.libs/libexif.a + +RESOURCES += \ + ./SourceFiles/telegram.qrc + +CONFIG(debug, debug|release) { + DEFINES += _DEBUG +} diff --git a/Telegram/Telegram.xcodeproj/project.pbxproj b/Telegram/Telegram.xcodeproj/project.pbxproj new file mode 100644 index 000000000..f75a0bff4 --- /dev/null +++ b/Telegram/Telegram.xcodeproj/project.pbxproj @@ -0,0 +1,1722 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXAggregateTarget section */ + 07AA07135D01069052F55A12 /* Preprocess */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 6CC3B5D2136C7CD6A5CF5A59 /* Build configuration list for PBXNativeTarget "Telegram" */; + buildPhases = ( + 7EF0942E79C014DCEC8976BC /* Qt Preprocessors */, + ); + dependencies = ( + 07C3AF42194CCC510016CFF1 /* PBXTargetDependency */, + ); + name = Preprocess; + productName = "Qt Preprocess"; + }; + 07C3AF39194CCC310016CFF1 /* Meta Compile */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 07C3AF3D194CCC310016CFF1 /* Build configuration list for PBXAggregateTarget "Meta Compile" */; + buildPhases = ( + 07C3AF3A194CCC310016CFF1 /* Meta Style */, + 07C3AF3B194CCC310016CFF1 /* Meta Lang */, + ); + dependencies = ( + ); + name = "Meta Compile"; + productName = "Qt Preprocess"; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 0250AB6761AC71A2E3155EEA /* moc_introphone.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 1B4A65B84270FF2FED008EB6 /* moc_introphone.cpp */; settings = {ATTRIBUTES = (); }; }; + 02F93BF511880983D3C57B84 /* dialogswidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = E466873F01ABA1E55E914489 /* dialogswidget.cpp */; settings = {ATTRIBUTES = (); }; }; + 03270F718426CFE84729079E /* flattextarea.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 5C7FD422BBEDA858D7237AE9 /* flattextarea.cpp */; settings = {ATTRIBUTES = (); }; }; + 06EABCC49D2EEE4076322BE7 /* moc_mtp.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 924D4939FD169BB4B8AEB1C9 /* moc_mtp.cpp */; settings = {ATTRIBUTES = (); }; }; + 07C3AF26194336250016CFF1 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 07C3AF24194335ED0016CFF1 /* Images.xcassets */; }; + 0A49F3A5DC0680FB31519670 /* phoneinput.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 7C8F9CA4FCE8AF8FCCCB961E /* phoneinput.cpp */; settings = {ATTRIBUTES = (); }; }; + 0CB7DE9A54CC9BF86FB7B5CA /* mtp.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 6D50D70712776D7ED3B00E5C /* mtp.cpp */; settings = {ATTRIBUTES = (); }; }; + 0F0FC25286E16E5F78962FEE /* moc_newgroupbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 69FE16874104731CE2A66E0D /* moc_newgroupbox.cpp */; settings = {ATTRIBUTES = (); }; }; + 0F7872E39EA570249D420912 /* moc_intro.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = A37C7E516201B0264A4CDA38 /* moc_intro.cpp */; settings = {ATTRIBUTES = (); }; }; + 113AA97DEE7847C7D2DCFF71 /* logs.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 974DB34EEB8F83B91614C0B0 /* logs.cpp */; settings = {ATTRIBUTES = (); }; }; + 1299DDAE203A7EDFED9F5D6B /* main.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 5271C394C1E7646D117CE67E /* main.cpp */; settings = {ATTRIBUTES = (); }; }; + 15364689D2AB5A30E87A689F /* Security.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 205259EEEE2BADA5E64741E3 /* Security.framework */; }; + 19A66ECD6EE2F8356F27D32D /* layerwidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 5A9B4C6C59856143F3D0DE53 /* layerwidget.cpp */; settings = {ATTRIBUTES = (); }; }; + 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 */; }; + 1BD711B4C358EA7D727BF358 /* moc_flatcheckbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 58E05D0B8B104D83F43F9859 /* moc_flatcheckbox.cpp */; settings = {ATTRIBUTES = (); }; }; + 1DF53374E3B6A31661548D08 /* historywidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = A83D2C19F756D3371E5999A8 /* historywidget.cpp */; settings = {ATTRIBUTES = (); }; }; + 26A81090DC8B5BCF7278FDFF /* qrc_telegram.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = D6FF6676816C4E374D374060 /* qrc_telegram.cpp */; settings = {ATTRIBUTES = (); }; }; + 298BFAB73BF182297584F96F /* contactsbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8C800AAC9549E6E9E7046BED /* contactsbox.cpp */; settings = {ATTRIBUTES = (); }; }; + 2A20C3BF118707980A2493E1 /* qtmultimedia_m3u in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 4EC011DBE92DD1FD208D94D2 /* qtmultimedia_m3u */; }; + 2A500B102B7CE80F3EB6E13E /* moc_mtpFileLoader.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 5591A965D1DC024FBDB40151 /* moc_mtpFileLoader.cpp */; settings = {ATTRIBUTES = (); }; }; + 2EF5D0AC9A18F9FE9B8A1ACA /* moc_introsignup.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 58A7114F60E7D09E73283983 /* moc_introsignup.cpp */; settings = {ATTRIBUTES = (); }; }; + 328FD74542F6E2C873EE4D4B /* ApplicationServices.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = DFD7912080BC557230093752 /* ApplicationServices.framework */; }; + 352349751855EF76DECA4D60 /* moc_historywidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 2C99425D7670941EAF07B453 /* moc_historywidget.cpp */; settings = {ATTRIBUTES = (); }; }; + 35A1A39F8EAB37889EB3D397 /* CoreAudio.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = BEF9DFDA6822604126A7E233 /* CoreAudio.framework */; }; + 37A3C6C782A0E4BC7B09536B /* langloaderplain.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = AF5776B0652744978B7DF6D3 /* langloaderplain.cpp */; settings = {ATTRIBUTES = (); }; }; + 3A62C3A2FB56A83C9C3A3AFF /* moc_phoneinput.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = B8100EAB0521FC7A937D2E4F /* moc_phoneinput.cpp */; settings = {ATTRIBUTES = (); }; }; + 3AA6E7264581F82856FB37F7 /* text.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 135FD3715BFDC50AD7B00E04 /* text.cpp */; settings = {ATTRIBUTES = (); }; }; + 3ABE4F9B2264F770D944106D /* emojibox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 0ECF1EB9BF3786A16731F685 /* emojibox.cpp */; settings = {ATTRIBUTES = (); }; }; + 3F6EB1F5B98E704960FEA686 /* moc_scrollarea.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8918F4B71ED5FC138AFD3F70 /* moc_scrollarea.cpp */; settings = {ATTRIBUTES = (); }; }; + 4078D5D614EB3ECF7F1848C7 /* types.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 7D075A915E8739C1B6BC5F43 /* types.cpp */; settings = {ATTRIBUTES = (); }; }; + 4426AF526AAD86D6F73CE36F /* addcontactbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 7CA6945B22800A0F30B75DA5 /* addcontactbox.cpp */; settings = {ATTRIBUTES = (); }; }; + 48D8FC93AA8FF5D184649F49 /* localimageloader.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 5A7F88F9C7F08D3DDE6EEF6B /* localimageloader.cpp */; settings = {ATTRIBUTES = (); }; }; + 496FD9CEEB508016AFB9F928 /* qico in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 8F500B5166907B6D9A7C3E3D /* qico */; }; + 4978DE680549639AE9AA9CA6 /* introsignup.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = A9FF4818C6775109B3DBFA18 /* introsignup.cpp */; settings = {ATTRIBUTES = (); }; }; + 49C3C1BF153F7FC078A25CE4 /* moc_downloadpathbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 6532A0DC7EFE446967682E83 /* moc_downloadpathbox.cpp */; settings = {ATTRIBUTES = (); }; }; + 4B0036C794BEA27AF9419768 /* moc_layerwidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 1FE45A67215BEA2434F588E8 /* moc_layerwidget.cpp */; settings = {ATTRIBUTES = (); }; }; + 4BF3F8D0797BC8A0C1FAD13C /* introphone.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 61C679D8B4B332026BD34200 /* introphone.cpp */; settings = {ATTRIBUTES = (); }; }; + 4EB68D0C8182BCE33529C421 /* AudioToolbox.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 3C44131FDCFEF4396B9EA2BA /* AudioToolbox.framework */; }; + 4F27F5F76AA3F78C8CA27339 /* moc_introcode.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8B98A212C068D6CC7CE73CAA /* moc_introcode.cpp */; settings = {ATTRIBUTES = (); }; }; + 4FEA8F51B7BC7CAC71347A1A /* connectionbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 51355181C0E6689B0B764543 /* connectionbox.cpp */; settings = {ATTRIBUTES = (); }; }; + 5058CB9D7BFFCE9F404A3700 /* Qt5Network in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 6700DD555BF1C0FC338FB959 /* Qt5Network */; }; + 565F748438E6CE0148C54AFE /* moc_flatinput.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 1E5EEB5782B6357057356F9E /* moc_flatinput.cpp */; settings = {ATTRIBUTES = (); }; }; + 597623A24AE744145BE84968 /* qtmedia_audioengine in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = A490341D0650372A5757B367 /* qtmedia_audioengine */; }; + 59789101736112A570B8EFE6 /* qjp2 in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = F0681BC551FC8A2B132FC646 /* qjp2 */; }; + 5CE57D44510AB2A11886AB52 /* title.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 2BB2A1BB8DB0993F78F4E3C7 /* title.cpp */; settings = {ATTRIBUTES = (); }; }; + 5FC914F652D1B16FDA8F0634 /* moc_contactsbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 26083D8E535AFF927591E1A5 /* moc_contactsbox.cpp */; settings = {ATTRIBUTES = (); }; }; + 60CB4898955209B665E7B07D /* moc_twidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 55A654A2EE8554FF062742B8 /* moc_twidget.cpp */; settings = {ATTRIBUTES = (); }; }; + 668DDDA0C55405E7FCFD6CA5 /* CoreServices.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 9742F24EE18EA44D52824F1E /* CoreServices.framework */; }; + 68FFEB7CA30BF0149161B809 /* window.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = CA56ACFB53D87637192CC9B2 /* window.cpp */; settings = {ATTRIBUTES = (); }; }; + 6A8BC88AB464B92706EFE6FF /* moc_countryinput.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 9D9F4744B2F9FF22569D4535 /* moc_countryinput.cpp */; settings = {ATTRIBUTES = (); }; }; + 6C79FBC5CFA36AC3EA6ABBD4 /* moc_dropdown.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = AC9B5F6FB4B984C8D76F7AE2 /* moc_dropdown.cpp */; settings = {ATTRIBUTES = (); }; }; + 6E4DB0CBEF415196AFD4149F /* fileuploader.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 9B36BB8C5B8CA7B07F3F35F0 /* fileuploader.cpp */; settings = {ATTRIBUTES = (); }; }; + 6EF5A4ECC0EF19EA016EBA3E /* dropdown.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 710C982FC773400941B3AFBC /* dropdown.cpp */; settings = {ATTRIBUTES = (); }; }; + 700925F3B2C6163D38140CEA /* history.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 26B83A58EE268598E703875D /* history.cpp */; settings = {ATTRIBUTES = (); }; }; + 7062978F12EEA525893A5E6F /* moc_aboutbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 9A69B711DE4B9C89BA803750 /* moc_aboutbox.cpp */; settings = {ATTRIBUTES = (); }; }; + 7422A321DF80CF9FAC7CB51B /* newgroupbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 5FCB7CBBAF4AE338D4B05C76 /* newgroupbox.cpp */; settings = {ATTRIBUTES = (); }; }; + 74343521EECC740F777DAFE6 /* pspecific_mac.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = F4EECA1187A744AEF5165243 /* pspecific_mac.cpp */; settings = {ATTRIBUTES = (); }; }; + 77B998AC22A13EF3DDEE07AC /* photocropbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = E908A6C86F93FA27DF70866C /* photocropbox.cpp */; settings = {ATTRIBUTES = (); }; }; + 77DA1217B595B799FB72CDDA /* flatinput.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 9AB1479D7D63386FD2046620 /* flatinput.cpp */; settings = {ATTRIBUTES = (); }; }; + 7BEFA1D273AD62772AA33D73 /* app.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 06E379415713F34B83F99C35 /* app.cpp */; settings = {ATTRIBUTES = (); }; }; + 7C2B2DEE467A4C4679F1C3C9 /* filedialog.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = DE4C0E3685DDAE58F9397B13 /* filedialog.cpp */; settings = {ATTRIBUTES = (); }; }; + 7CA5405B8503BFFC60932D2B /* qicns in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 31120EDB269DFF13E1D49847 /* qicns */; }; + 7F76437B577F737145996DC3 /* qtga in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = DCEFD9167C239650120B0145 /* qtga */; }; + 822C2860FBFAF3EAE42C5A3F /* moc_fileuploader.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 3D54A9F3266BB8739520E3FB /* moc_fileuploader.cpp */; settings = {ATTRIBUTES = (); }; }; + 830CB6F547B8C80A569A0271 /* addparticipantbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 40E88FBA282991C8CBDFE94D /* addparticipantbox.cpp */; settings = {ATTRIBUTES = (); }; }; + 832C50BFD7D09AF042A51D4F /* flatbutton.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = F1A04BDB750C2AE652797B04 /* flatbutton.cpp */; settings = {ATTRIBUTES = (); }; }; + 8771A8C96E9C391044035D99 /* OpenGL.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = D4B32C2222F82AC56BADEB21 /* OpenGL.framework */; }; + 878DCAF0C5B0DB2EB4EDFD3D /* supporttl.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 0B2F770F53FBB0DBF738D89B /* supporttl.cpp */; settings = {ATTRIBUTES = (); }; }; + 8883FF366F2623E89D90A9E6 /* qgenericbearer in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 9A55B8F7C143D66AD9EAE304 /* qgenericbearer */; }; + 89ADB41E48A3B5E24ABB626C /* profilewidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = CF32DF59C7823E4F3397EF3C /* profilewidget.cpp */; settings = {ATTRIBUTES = (); }; }; + 8B22E794EFF0EAFF964A3043 /* introsteps.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = C34459FA465B57DF4DB80D12 /* introsteps.cpp */; settings = {ATTRIBUTES = (); }; }; + 8B71D1C7BB9DCEE6511219C2 /* moc_flatlabel.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 2181F5E34DE0A4B2F811E2E2 /* moc_flatlabel.cpp */; settings = {ATTRIBUTES = (); }; }; + 8C4BA0DB55E2C40DE5F5E990 /* moc_pspecific_mac.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 74772222DA764BE4623EAC5D /* moc_pspecific_mac.cpp */; settings = {ATTRIBUTES = (); }; }; + 8D267F2E4776F0ECA2F49DC8 /* IOKit.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = A1A67BEAA744704B29168D39 /* IOKit.framework */; }; + 8D33FE22B9BBADC7FA46C15B /* qtharfbuzzng in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = D6193B79CECC9DD0142D1200 /* qtharfbuzzng */; }; + 8E26A0653012B8E8C3E865EC /* application.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = C20F9DD8C7B031B8E20D5653 /* application.cpp */; settings = {ATTRIBUTES = (); }; }; + 8F65F0D95B1F0CEB859F2FB3 /* boxshadow.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 08A7682548FB7E671FF03822 /* boxshadow.cpp */; settings = {ATTRIBUTES = (); }; }; + 8F6F5D7F82036331E8C6DAE6 /* moc_mtpConnection.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = B714EA71A09A832FAA846A0A /* moc_mtpConnection.cpp */; settings = {ATTRIBUTES = (); }; }; + 90085DF442550A0845D5AF37 /* style_core.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 420A06A32B66D250142B4B6D /* style_core.cpp */; settings = {ATTRIBUTES = (); }; }; + 9357E7B12AD6D88B157ACA05 /* introcode.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = A0090709DE1B155085362C36 /* introcode.cpp */; settings = {ATTRIBUTES = (); }; }; + 9809A3AF1946D51ACB41D716 /* moc_photocropbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = AF61D864B8C444ADD4E1B391 /* moc_photocropbox.cpp */; settings = {ATTRIBUTES = (); }; }; + 98E4F55DB5D8E64AB9F08C83 /* moc_localimageloader.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 1D7899ACAA9F973CADFA34C1 /* moc_localimageloader.cpp */; settings = {ATTRIBUTES = (); }; }; + 99F0A9B2AFE5ABDCBFC04510 /* mtpRPC.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 89F92B278CA31C393E245056 /* mtpRPC.cpp */; settings = {ATTRIBUTES = (); }; }; + 9A0D5DDC7816FC2538EB6A96 /* moc_window.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 6B46A0EE3C3B9D3B5A24946E /* moc_window.cpp */; settings = {ATTRIBUTES = (); }; }; + 9A523F51135FD4E2464673A6 /* moc_mtpSession.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 63AF8520023B4EA40306CB03 /* moc_mtpSession.cpp */; settings = {ATTRIBUTES = (); }; }; + 9B6E32D1B74A14273D68E439 /* Qt5MultimediaWidgets in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 833B45FEF5DC4AD0E8ADA64A /* Qt5MultimediaWidgets */; }; + 9D294F23E02CFDF22C288382 /* moc_emojibox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 0C0DC15EB416789673526AA5 /* moc_emojibox.cpp */; settings = {ATTRIBUTES = (); }; }; + 9F33AC0693BC81B27D8F518D /* Qt5Gui in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 04391BE7A8B9D811E255100A /* Qt5Gui */; }; + A0A6B97F7DBEC81004EC9461 /* confirmbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 6610564B876E47D289A596DB /* confirmbox.cpp */; settings = {ATTRIBUTES = (); }; }; + A24E4B5B683764E07683ECEC /* moc_mainwidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 3A220FD1AE5AD9FE3DC073A4 /* moc_mainwidget.cpp */; settings = {ATTRIBUTES = (); }; }; + A297B1E3CE33CC501DFEDB6E /* mtpSession.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 0FBED3C6654EA3753EB39831 /* mtpSession.cpp */; settings = {ATTRIBUTES = (); }; }; + A3F8F2284013928A02AE5C38 /* qwbmp in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 8CF51323544B886B8F4A2232 /* qwbmp */; }; + A469EC9C4C367E0B773A9BB7 /* moc_settingswidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 93AFE74928551FC3D7E8390B /* moc_settingswidget.cpp */; settings = {ATTRIBUTES = (); }; }; + A9563D9C9FD0D76FAAF1CA96 /* qdds in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = D3D1BE0BEA3AEE0551AD39AC /* qdds */; }; + AC6C131416AEC557C854BA70 /* moc_photosendbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 9E0704DE8650D7952DC6B7AE /* moc_photosendbox.cpp */; settings = {ATTRIBUTES = (); }; }; + ADE99904299B99EB6135E8D9 /* scrollarea.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 6E1859D714E4471E053D90C9 /* scrollarea.cpp */; settings = {ATTRIBUTES = (); }; }; + AE148AA3BCDD25B1BBA4E6CA /* moc_addparticipantbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8C7AEF8DED4F7B6E6F89F330 /* moc_addparticipantbox.cpp */; settings = {ATTRIBUTES = (); }; }; + B0B88EFE444C0DE673389418 /* moc_flatbutton.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = C9FFCCE4FCB845744636795F /* moc_flatbutton.cpp */; settings = {ATTRIBUTES = (); }; }; + B2F5B08BFFBBE7E37D3863BB /* moc_button.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 46292F489228B60010794CE4 /* moc_button.cpp */; settings = {ATTRIBUTES = (); }; }; + B3C3392253201C328D9C6736 /* qtaudio_coreaudio in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 3BBB805F6180E363BF89151A /* qtaudio_coreaudio */; }; + B3CD52E504409DC1B560024F /* countrycodeinput.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 751C8D0E0BE6D16937B77A2C /* countrycodeinput.cpp */; settings = {ATTRIBUTES = (); }; }; + B460F624007324313696BE86 /* QuartzCore.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 7EC00404ACD5AB0E97726B0E /* QuartzCore.framework */; }; + B58956C9C026BD3A7FD9ECDF /* libexif.a in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 4AF15B5A0A43EB62D6DAF211 /* libexif.a */; }; + B6346B66B0A2228A91D8A5D9 /* mtpDC.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 315C7FACB4A9E18AA95486CA /* mtpDC.cpp */; settings = {ATTRIBUTES = (); }; }; + B6F50D5FBFAEB16DD0E5B1C3 /* moc_countrycodeinput.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = A1F48DF3E5D0D7C741C1EAC4 /* moc_countrycodeinput.cpp */; settings = {ATTRIBUTES = (); }; }; + B780F9E21269259B90A1F32A /* moc_mtpDC.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 2C540BAEABD7F9B5FA11008E /* moc_mtpDC.cpp */; settings = {ATTRIBUTES = (); }; }; + B78304F135DEF1F7A68393A6 /* CoreMedia.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 547CCADBD1CC5050167EF948 /* CoreMedia.framework */; }; + B8CA3E1E11A7E0E7DF9E1CDE /* mtpFileLoader.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 01D6341DC31FE5997F7BB159 /* mtpFileLoader.cpp */; settings = {ATTRIBUTES = (); }; }; + B8DA82DA1B195A933A0805E7 /* sysbuttons.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 6B90F69947805586A6FAE80E /* sysbuttons.cpp */; settings = {ATTRIBUTES = (); }; }; + B91D13BCC3963CB9C12D24A4 /* flatcheckbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = AF4585F593B1C9D0D4FD061C /* flatcheckbox.cpp */; settings = {ATTRIBUTES = (); }; }; + B99CCE43EEFCD3E18F6D16D1 /* settingswidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8CCCACE96535180FEB557712 /* settingswidget.cpp */; settings = {ATTRIBUTES = (); }; }; + B9ADD90C014EA3FBE351DF03 /* Qt5Core in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 5A80A1907B6CFFB524C1E57D /* Qt5Core */; }; + BA41D511A9BBCA09365DF88C /* downloadpathbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8DF456E9A416E4C3C2D6946C /* downloadpathbox.cpp */; settings = {ATTRIBUTES = (); }; }; + BE6AB9DF1C4880624131C669 /* Qt5Widgets in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 4689C06178B60B84E7F3A3B7 /* Qt5Widgets */; }; + C03447C9A7D9FF73463B8BB5 /* countryinput.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 3E329D4547CC23585307FA32 /* countryinput.cpp */; settings = {ATTRIBUTES = (); }; }; + C06DDE378A7AC1FA9E6FF69A /* qtiff in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = F2453BA07315EB9F34F1CD57 /* qtiff */; }; + C0D2E925FB8B08D9AA280753 /* Qt5Multimedia in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 112159B026FDEF9CD4E24175 /* Qt5Multimedia */; }; + C14E6C902F6435B3149ECD64 /* moc_profilewidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 48003469151B9DDE82E851FB /* moc_profilewidget.cpp */; settings = {ATTRIBUTES = (); }; }; + C1F9D5CA8AF3AD8EBC9D7310 /* moc_application.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = E181C525E21A16F2D4396CA7 /* moc_application.cpp */; settings = {ATTRIBUTES = (); }; }; + C329997D36D34D568CE16C9A /* moc_animation.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = A1479F94376F9732B57C69DB /* moc_animation.cpp */; settings = {ATTRIBUTES = (); }; }; + C9CC5CE020283D113D81179C /* Qt5OpenGL in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = AA5379CB06E908AC80BE7B82 /* Qt5OpenGL */; }; + CCA737EE379CDB10CC9A0F23 /* AVFoundation.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 21F907AB8D19BD779147A085 /* AVFoundation.framework */; }; + CDB0266A8B7CB20A95266BCD /* emoji_config.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = B3062303CE8F4EB9325CB3DC /* emoji_config.cpp */; settings = {ATTRIBUTES = (); }; }; + D0EECF370C58DDCACBC71BAD /* CoreWLAN.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = F26998DF735BCE5F975508ED /* CoreWLAN.framework */; }; + D1FA8AF31837B51C762A9D4D /* qcocoa in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = D53D8E6A188E05078A114294 /* qcocoa */; }; + D1FC601FC2F9F3E33F3A14E9 /* animation.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = D3FE9C29B6A61D7C3C4B731B /* animation.cpp */; settings = {ATTRIBUTES = (); }; }; + D22929A2B8C5281567FCACDC /* Qt5PlatformSupport in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */; }; + D3D955F61644264D27FC2796 /* qtaccessiblewidgets in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = A7782E2B07CB2D1D14F431B0 /* qtaccessiblewidgets */; }; + D4639595C3BCF2A39D88DF6E /* SystemConfiguration.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = FF5BDAB0076F3391B219EA52 /* SystemConfiguration.framework */; }; + D67628B07A49239E73C2150B /* telegram_plugin_import.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = FB0DCE17FF02138B3C1B1219 /* telegram_plugin_import.cpp */; settings = {ATTRIBUTES = (); }; }; + D6874C00733283846ACA9AB2 /* moc_confirmbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = CE7FFE194127BD789A2C877A /* moc_confirmbox.cpp */; settings = {ATTRIBUTES = (); }; }; + D7EF8F129FCCE9AB3F3F081F /* button.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 4D55B83DFDFE3D492CDBD27A /* button.cpp */; settings = {ATTRIBUTES = (); }; }; + D846C6F212B438DC2FD5FF71 /* moc_dialogswidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 3B3ED09AB00290D78CF1181B /* moc_dialogswidget.cpp */; settings = {ATTRIBUTES = (); }; }; + D87463318C8E5211C8C8670A /* stdafx.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 5A5431331A13AA7B07414240 /* stdafx.cpp */; settings = {ATTRIBUTES = (); }; }; + DAD6F5593C3427F014531342 /* AudioUnit.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 186D09F4CB713AD4B8BDD260 /* AudioUnit.framework */; }; + DC52E36A03D974A1A0C9AA2A /* qqt7engine in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 1C21DCD421D7B7E0462F1121 /* qqt7engine */; }; + DE6A34CA3A5561888FA01AF1 /* flatlabel.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 763ED3C6815ED6C89E352652 /* flatlabel.cpp */; settings = {ATTRIBUTES = (); }; }; + DF259E9677CC63AF8754032B /* mtpConnection.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = B8D9AFA42E8633154A9817A2 /* mtpConnection.cpp */; settings = {ATTRIBUTES = (); }; }; + DF36EA42D67ED39E58CB7DF9 /* settings.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 8A28F7789408AA839F48A5F2 /* settings.cpp */; settings = {ATTRIBUTES = (); }; }; + E3194392BD6D0726F75FA72E /* mainwidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 047DAFB0A7DE92C63033A43C /* mainwidget.cpp */; settings = {ATTRIBUTES = (); }; }; + E3D7A5CA24541D5DB69D6606 /* images.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 6A510365F9F6367ECB0DB065 /* images.cpp */; settings = {ATTRIBUTES = (); }; }; + E45E51A644D5FC9F942ECE55 /* AGL.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 8D9815BDB5BD9F90D2BC05C5 /* AGL.framework */; }; + E8B28580819B882A5964561A /* moc_addcontactbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 81780025807318AEA3B8A6FF /* moc_addcontactbox.cpp */; settings = {ATTRIBUTES = (); }; }; + E8D95529CED88F18818C9A8B /* intro.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 0771C4C94B623FC34BF62983 /* intro.cpp */; settings = {ATTRIBUTES = (); }; }; + E97B3CFAB59B49BACFFC5F7C /* moc_title.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 1080B6D395843B8F76A2E45E /* moc_title.cpp */; settings = {ATTRIBUTES = (); }; }; + E9F1CE7F9B18C7C85A50E62D /* style_auto.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 99B8D38F7F5858601230911E /* style_auto.cpp */; settings = {ATTRIBUTES = (); }; }; + EBA5E17368D2BBC6014E92B9 /* qcorewlanbearer in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = EE03BC5CA4628A6D6BEB0122 /* qcorewlanbearer */; }; + EBE29731916DB43BF49FE7A4 /* aboutbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = C194EDD00F76216057D48A5C /* aboutbox.cpp */; settings = {ATTRIBUTES = (); }; }; + ED2557A57C6782721DC494AF /* moc_connectionbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = FEC58F9D8A0963E5A9D4BE6F /* moc_connectionbox.cpp */; settings = {ATTRIBUTES = (); }; }; + EDFF7E777D3A3730A9BB3FC2 /* QTKit.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 2AC1C71FA3CD6FD909ED0276 /* QTKit.framework */; }; + EEBE9C2FA7C9F066508EF99B /* qavfmediaplayer in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = EDD43CF4FA85D97A1140E973 /* qavfmediaplayer */; }; + F26454630C80841CBDCFE1CA /* Foundation.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = FCC237CA5AD60B9BA4447615 /* Foundation.framework */; }; + F278C423357CA99797EA30AB /* photosendbox.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = D1C9C77F1318F5A55C9BF289 /* photosendbox.cpp */; settings = {ATTRIBUTES = (); }; }; + F2A75ACAC9DF6A3F4E5711E7 /* AppKit.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 723F90793B2C195E2CCB2233 /* AppKit.framework */; }; + F4D3747C3A03B25EDC9057BB /* qwebp in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = ADC6308023253CEA51F86E21 /* qwebp */; }; + F8B465CE34D8DF87AAE95913 /* CoreFoundation.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 4D765E1B1EA6C757220C63E7 /* CoreFoundation.framework */; }; + F8ED42CF8679BF83227DAFC4 /* Carbon.framework in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 9DFF62A901D70814B8A323D4 /* Carbon.framework */; }; + F91C59BECCE70070B06E8385 /* lang.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = 4B6C62A2448B708B3FF40411 /* lang.cpp */; settings = {ATTRIBUTES = (); }; }; + FA603B17F803E8D6B55C2F2B /* pspecific_mac_p.mm in Compile Sources */ = {isa = PBXBuildFile; fileRef = 73737DC91E390C4AB18FB595 /* pspecific_mac_p.mm */; settings = {ATTRIBUTES = (); }; }; + FBD56E2AC34F76BFFDB68619 /* qmng in Link Binary With Libraries */ = {isa = PBXBuildFile; fileRef = 83D37373949868693FB7816D /* qmng */; }; + FCC949FEA178F9F5D7478027 /* moc_flattextarea.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = D12A6BD8EE80B8B308E481AD /* moc_flattextarea.cpp */; settings = {ATTRIBUTES = (); }; }; + FCE6518C548DF7BC82228A4A /* twidget.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = BB1602EA641643DE565005B1 /* twidget.cpp */; settings = {ATTRIBUTES = (); }; }; + FD2FE0C564A7389A2E609EC7 /* moc_sysbuttons.cpp in Compile Sources */ = {isa = PBXBuildFile; fileRef = B88236FC554B694F618D848C /* moc_sysbuttons.cpp */; settings = {ATTRIBUTES = (); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 07C3AF22194335970016CFF1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6DB9C3763D02B1415CD9D565 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 07AA07135D01069052F55A12; + remoteInfo = "Qt Preprocess"; + }; + 07C3AF41194CCC510016CFF1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6DB9C3763D02B1415CD9D565 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 07C3AF39194CCC310016CFF1; + remoteInfo = "Meta Compile"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 01D6341DC31FE5997F7BB159 /* mtpFileLoader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = mtpFileLoader.cpp; path = SourceFiles/mtproto/mtpFileLoader.cpp; sourceTree = ""; }; + 032C1BF3E727B450A4851D48 /* emojibox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = emojibox.h; path = SourceFiles/boxes/emojibox.h; sourceTree = ""; }; + 04391BE7A8B9D811E255100A /* Qt5Gui */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Gui; path = "/usr/local/Qt-5.3.0/lib/libQt5Gui$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 047DAFB0A7DE92C63033A43C /* mainwidget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = mainwidget.cpp; path = SourceFiles/mainwidget.cpp; sourceTree = ""; }; + 060A694B42A4555240009936 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtga.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtga.pri"; sourceTree = ""; }; + 06E379415713F34B83F99C35 /* app.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = app.cpp; path = SourceFiles/app.cpp; sourceTree = ""; }; + 075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql_private.pri"; sourceTree = ""; }; + 0771C4C94B623FC34BF62983 /* intro.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = intro.cpp; path = SourceFiles/intro/intro.cpp; sourceTree = ""; }; + 07C3AF24194335ED0016CFF1 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Telegram/Images.xcassets; sourceTree = SOURCE_ROOT; }; + 07C3AF27194336B90016CFF1 /* pspecific_mac_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pspecific_mac_p.h; path = SourceFiles/pspecific_mac_p.h; sourceTree = SOURCE_ROOT; }; + 07C3AF2819433ABF0016CFF1 /* lang.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = lang.txt; path = Resources/lang.txt; sourceTree = SOURCE_ROOT; }; + 07C3AF2919433ABF0016CFF1 /* style_classes.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = style_classes.txt; path = Resources/style_classes.txt; sourceTree = SOURCE_ROOT; }; + 07C3AF2A19433ABF0016CFF1 /* style.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = style.txt; path = Resources/style.txt; sourceTree = SOURCE_ROOT; }; + 08A7682548FB7E671FF03822 /* boxshadow.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = boxshadow.cpp; path = SourceFiles/gui/boxshadow.cpp; sourceTree = ""; }; + 098EA7CE256AAFAE4A17EB77 /* introcode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = introcode.h; path = SourceFiles/intro/introcode.h; sourceTree = ""; }; + 09FD01F2BD652EB838A296D8 /* application.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = application.h; path = SourceFiles/application.h; sourceTree = ""; }; + 0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.3.0/mkspecs/common/unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/unix.conf"; sourceTree = ""; }; + 0B2F770F53FBB0DBF738D89B /* supporttl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = supporttl.cpp; path = SourceFiles/supporttl.cpp; sourceTree = ""; }; + 0BDE09020E45EFA57DCB2E25 /* photosendbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = photosendbox.h; path = SourceFiles/boxes/photosendbox.h; sourceTree = ""; }; + 0C0DC15EB416789673526AA5 /* moc_emojibox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_emojibox.cpp; path = GeneratedFiles/Debug/moc_emojibox.cpp; sourceTree = ""; }; + 0CAA815FFFEDCD84808E11F5 /* logs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = logs.h; path = SourceFiles/logs.h; sourceTree = ""; }; + 0ECF1EB9BF3786A16731F685 /* emojibox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = emojibox.cpp; path = SourceFiles/boxes/emojibox.cpp; sourceTree = ""; }; + 0F8FFD87AEBAC448568570DC /* images.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = images.h; path = SourceFiles/gui/images.h; sourceTree = ""; }; + 0FBED3C6654EA3753EB39831 /* mtpSession.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = mtpSession.cpp; path = SourceFiles/mtproto/mtpSession.cpp; sourceTree = ""; }; + 0FC38EE7F29EF895925A2C49 /* style_core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = style_core.h; path = SourceFiles/gui/style_core.h; sourceTree = ""; }; + 1080B6D395843B8F76A2E45E /* moc_title.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_title.cpp; path = GeneratedFiles/Debug/moc_title.cpp; sourceTree = ""; }; + 111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdds.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdds.pri"; sourceTree = ""; }; + 112159B026FDEF9CD4E24175 /* Qt5Multimedia */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Multimedia; path = "/usr/local/Qt-5.3.0/lib/libQt5Multimedia$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 120EBCD9A37DB9A36BFE58C0 /* contactsbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = contactsbox.h; path = SourceFiles/boxes/contactsbox.h; sourceTree = ""; }; + 1292B92B4848460640F6A391 /* telegram.qrc */ = {isa = PBXFileReference; lastKnownFileType = text; name = telegram.qrc; path = SourceFiles/telegram.qrc; sourceTree = ""; }; + 135FD3715BFDC50AD7B00E04 /* text.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = text.cpp; path = SourceFiles/gui/text.cpp; sourceTree = ""; }; + 143405635D04698F421A12EA /* aboutbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = aboutbox.h; path = SourceFiles/boxes/aboutbox.h; sourceTree = ""; }; + 14437BFDCD58FF1742EF1B35 /* photocropbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = photocropbox.h; path = SourceFiles/boxes/photocropbox.h; sourceTree = ""; }; + 152B8D1BCECEB7B0C77E073C /* intro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = intro.h; path = SourceFiles/intro/intro.h; sourceTree = ""; }; + 16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick.pri"; sourceTree = ""; }; + 186D09F4CB713AD4B8BDD260 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = ""; }; + 19618554524B8D928F13940D /* emoji_config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = emoji_config.h; path = SourceFiles/gui/emoji_config.h; sourceTree = ""; }; + 1A4C47331E186344291B8178 /* dropdown.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = dropdown.h; path = SourceFiles/dropdown.h; sourceTree = ""; }; + 1B4A65B84270FF2FED008EB6 /* moc_introphone.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_introphone.cpp; path = GeneratedFiles/Debug/moc_introphone.cpp; sourceTree = ""; }; + 1C21DCD421D7B7E0462F1121 /* qqt7engine */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qqt7engine; path = "/usr/local/Qt-5.3.0/plugins/mediaservice/libqqt7engine$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 1D7899ACAA9F973CADFA34C1 /* moc_localimageloader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_localimageloader.cpp; path = GeneratedFiles/Debug/moc_localimageloader.cpp; sourceTree = ""; }; + 1DC02F674A7192FF8BE391A7 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = types.h; path = SourceFiles/types.h; sourceTree = ""; }; + 1DEFC0760BB9340529F582F7 /* confirmbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = confirmbox.h; path = SourceFiles/boxes/confirmbox.h; sourceTree = ""; }; + 1E5EEB5782B6357057356F9E /* moc_flatinput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_flatinput.cpp; path = GeneratedFiles/Debug/moc_flatinput.cpp; sourceTree = ""; }; + 1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfcamera.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfcamera.pri"; sourceTree = ""; }; + 1FE45A67215BEA2434F588E8 /* moc_layerwidget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_layerwidget.cpp; path = GeneratedFiles/Debug/moc_layerwidget.cpp; sourceTree = ""; }; + 205259EEEE2BADA5E64741E3 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = ""; }; + 206B4F5CBD5354BCE19FF32F /* countries.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = countries.h; path = SourceFiles/countries.h; sourceTree = ""; }; + 2181F5E34DE0A4B2F811E2E2 /* moc_flatlabel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_flatlabel.cpp; path = GeneratedFiles/Debug/moc_flatlabel.cpp; sourceTree = ""; }; + 21F907AB8D19BD779147A085 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = /System/Library/Frameworks/AVFoundation.framework; sourceTree = ""; }; + 220B97F8F62C720E6059A64B /* profilewidget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = profilewidget.h; path = SourceFiles/profilewidget.h; sourceTree = ""; }; + 23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui.pri"; sourceTree = ""; }; + 2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qgenericbearer.pri"; sourceTree = ""; }; + 245F3B3B43CC450EBA6650B5 /* addparticipantbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = addparticipantbox.h; path = SourceFiles/boxes/addparticipantbox.h; sourceTree = ""; }; + 247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri"; sourceTree = ""; }; + 24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri"; sourceTree = ""; }; + 24F7D3E789E91B10E422C116 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = config.h; path = SourceFiles/config.h; sourceTree = ""; }; + 25CA12A22B83B0B038C5B5DE /* langloaderplain.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = langloaderplain.h; path = SourceFiles/langloaderplain.h; sourceTree = ""; }; + 26083D8E535AFF927591E1A5 /* moc_contactsbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_contactsbox.cpp; path = GeneratedFiles/Debug/moc_contactsbox.cpp; sourceTree = ""; }; + 26B83A58EE268598E703875D /* history.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = history.cpp; path = SourceFiles/history.cpp; sourceTree = ""; }; + 27E7471A4EC90E84353AA16F /* mtpCoreTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mtpCoreTypes.h; path = SourceFiles/mtproto/mtpCoreTypes.h; sourceTree = ""; }; + 28BD0D10214709D95B161E24 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets.pri"; sourceTree = ""; }; + 293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network.pri"; sourceTree = ""; }; + 2AC1C71FA3CD6FD909ED0276 /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = /System/Library/Frameworks/QTKit.framework; sourceTree = ""; }; + 2BB2A1BB8DB0993F78F4E3C7 /* title.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = title.cpp; path = SourceFiles/title.cpp; sourceTree = ""; }; + 2C540BAEABD7F9B5FA11008E /* moc_mtpDC.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_mtpDC.cpp; path = GeneratedFiles/Debug/moc_mtpDC.cpp; sourceTree = ""; }; + 2C99425D7670941EAF07B453 /* moc_historywidget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_historywidget.cpp; path = GeneratedFiles/Debug/moc_historywidget.cpp; sourceTree = ""; }; + 2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth_private.pri"; sourceTree = ""; }; + 2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns.pri"; sourceTree = ""; }; + 2EA58EF6CDF368B0132BAEB9 /* settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = settings.h; path = SourceFiles/settings.h; sourceTree = ""; }; + 301BB513F2F5D447B3BF22DF /* window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = window.h; path = SourceFiles/window.h; sourceTree = ""; }; + 311004331A04F3D69C98643C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport_private.pri"; sourceTree = ""; }; + 31120EDB269DFF13E1D49847 /* qicns */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qicns; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqicns$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 315C7FACB4A9E18AA95486CA /* mtpDC.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = mtpDC.cpp; path = SourceFiles/mtproto/mtpDC.cpp; sourceTree = ""; }; + 33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras_private.pri"; sourceTree = ""; }; + 346287C9E754E7C458153F03 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwbmp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwbmp.pri"; sourceTree = ""; }; + 34E1DF19219C52D7DB20224A /* flatlabel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = flatlabel.h; path = SourceFiles/gui/flatlabel.h; sourceTree = ""; }; + 360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio.pri"; sourceTree = ""; }; + 3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri"; sourceTree = ""; }; + 36BDA5D01BED543A92886669 /* Telegram.pro */ = {isa = PBXFileReference; lastKnownFileType = text; path = Telegram.pro; sourceTree = ""; }; + 36F718DC72345A84987DB0F6 /* flatbutton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = flatbutton.h; path = SourceFiles/gui/flatbutton.h; sourceTree = ""; }; + 382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network_private.pri"; sourceTree = ""; }; + 39C1ADF085370E033CB7E7E1 /* style_classes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = style_classes.h; path = GeneratedFiles/style_classes.h; sourceTree = ""; }; + 3A220FD1AE5AD9FE3DC073A4 /* moc_mainwidget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_mainwidget.cpp; path = GeneratedFiles/Debug/moc_mainwidget.cpp; sourceTree = ""; }; + 3B3ED09AB00290D78CF1181B /* moc_dialogswidget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_dialogswidget.cpp; path = GeneratedFiles/Debug/moc_dialogswidget.cpp; sourceTree = ""; }; + 3BBB805F6180E363BF89151A /* qtaudio_coreaudio */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtaudio_coreaudio; path = "/usr/local/Qt-5.3.0/plugins/audio/libqtaudio_coreaudio$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 3BE70E2A82DC2BF402165ED5 /* sysbuttons.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = sysbuttons.h; path = SourceFiles/sysbuttons.h; sourceTree = ""; }; + 3C44131FDCFEF4396B9EA2BA /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; + 3D54A9F3266BB8739520E3FB /* moc_fileuploader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_fileuploader.cpp; path = GeneratedFiles/Debug/moc_fileuploader.cpp; sourceTree = ""; }; + 3E329D4547CC23585307FA32 /* countryinput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = countryinput.cpp; path = SourceFiles/gui/countryinput.cpp; sourceTree = ""; }; + 3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri"; sourceTree = ""; }; + 40E88FBA282991C8CBDFE94D /* addparticipantbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = addparticipantbox.cpp; path = SourceFiles/boxes/addparticipantbox.cpp; sourceTree = ""; }; + 420A06A32B66D250142B4B6D /* style_core.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = style_core.cpp; path = SourceFiles/gui/style_core.cpp; sourceTree = ""; }; + 42FA90460B1A91C414157EAC /* supporttl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = supporttl.h; path = SourceFiles/supporttl.h; sourceTree = ""; }; + 45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.3.0/mkspecs/common/gcc-base.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/gcc-base.conf"; sourceTree = ""; }; + 45DB132B756499D4DF38430E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qjp2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qjp2.pri"; sourceTree = ""; }; + 4604687EBA85611C9E8A9CDF /* button.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = button.h; path = SourceFiles/gui/button.h; sourceTree = ""; }; + 46292F489228B60010794CE4 /* moc_button.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_button.cpp; path = GeneratedFiles/Debug/moc_button.cpp; sourceTree = ""; }; + 4689C06178B60B84E7F3A3B7 /* Qt5Widgets */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Widgets; path = "/usr/local/Qt-5.3.0/lib/libQt5Widgets$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 48003469151B9DDE82E851FB /* moc_profilewidget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_profilewidget.cpp; path = GeneratedFiles/Debug/moc_profilewidget.cpp; sourceTree = ""; }; + 4AF15B5A0A43EB62D6DAF211 /* libexif.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libexif.a; path = "../../Libraries/libexif-0.6.20/libexif/.libs/libexif.a"; sourceTree = ""; }; + 4B6C62A2448B708B3FF40411 /* lang.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = lang.cpp; path = GeneratedFiles/lang.cpp; sourceTree = ""; }; + 4C6C71914B1926119120DACD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio_private.pri"; sourceTree = ""; }; + 4D1099F2D3696E8A0E17D37D /* mtpSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mtpSession.h; path = SourceFiles/mtproto/mtpSession.h; sourceTree = ""; }; + 4D504A849F15EB58E53A4E5F /* title.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = title.h; path = SourceFiles/title.h; sourceTree = ""; }; + 4D55B83DFDFE3D492CDBD27A /* button.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = button.cpp; path = SourceFiles/gui/button.cpp; sourceTree = ""; }; + 4D765E1B1EA6C757220C63E7 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; + 4E4D06EC4D2C82C7D6E079A2 /* flatinput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = flatinput.h; path = SourceFiles/gui/flatinput.h; sourceTree = ""; }; + 4EC011DBE92DD1FD208D94D2 /* qtmultimedia_m3u */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtmultimedia_m3u; path = "/usr/local/Qt-5.3.0/plugins/playlistformats/libqtmultimedia_m3u$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmldevtools_private.pri"; sourceTree = ""; }; + 5059175BDCEC77B7246DE1B9 /* flatcheckbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = flatcheckbox.h; path = SourceFiles/gui/flatcheckbox.h; sourceTree = ""; }; + 507CCEEC4CBA3E3BD6EEDED1 /* twidget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = twidget.h; path = SourceFiles/gui/twidget.h; sourceTree = ""; }; + 51355181C0E6689B0B764543 /* connectionbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = connectionbox.cpp; path = SourceFiles/boxes/connectionbox.cpp; sourceTree = ""; }; + 5271C394C1E7646D117CE67E /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = SourceFiles/main.cpp; sourceTree = ""; }; + 547CCADBD1CC5050167EF948 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = /System/Library/Frameworks/CoreMedia.framework; sourceTree = ""; }; + 5591A965D1DC024FBDB40151 /* moc_mtpFileLoader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_mtpFileLoader.cpp; path = GeneratedFiles/Debug/moc_mtpFileLoader.cpp; sourceTree = ""; }; + 5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions_private.pri"; sourceTree = ""; }; + 55A654A2EE8554FF062742B8 /* moc_twidget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_twidget.cpp; path = GeneratedFiles/Debug/moc_twidget.cpp; sourceTree = ""; }; + 55B4A93DD455EED91C899A8E /* dialogswidget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = dialogswidget.h; path = SourceFiles/dialogswidget.h; sourceTree = ""; }; + 58A7114F60E7D09E73283983 /* moc_introsignup.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_introsignup.cpp; path = GeneratedFiles/Debug/moc_introsignup.cpp; sourceTree = ""; }; + 58E05D0B8B104D83F43F9859 /* moc_flatcheckbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_flatcheckbox.cpp; path = GeneratedFiles/Debug/moc_flatcheckbox.cpp; sourceTree = ""; }; + 59E514973BA9BF6599252DDC /* flattextarea.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = flattextarea.h; path = SourceFiles/gui/flattextarea.h; sourceTree = ""; }; + 5A5431331A13AA7B07414240 /* stdafx.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = stdafx.cpp; path = SourceFiles/stdafx.cpp; sourceTree = ""; }; + 5A7F88F9C7F08D3DDE6EEF6B /* localimageloader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = localimageloader.cpp; path = SourceFiles/localimageloader.cpp; sourceTree = ""; }; + 5A80A1907B6CFFB524C1E57D /* Qt5Core */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Core; path = "/usr/local/Qt-5.3.0/lib/libQt5Core$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 5A9B4C6C59856143F3D0DE53 /* layerwidget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = layerwidget.cpp; path = SourceFiles/layerwidget.cpp; sourceTree = ""; }; + 5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri"; sourceTree = ""; }; + 5C7FD422BBEDA858D7237AE9 /* flattextarea.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = flattextarea.cpp; path = SourceFiles/gui/flattextarea.cpp; sourceTree = ""; }; + 5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl.pri"; sourceTree = ""; }; + 5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core_private.pri"; sourceTree = ""; }; + 5FCB7CBBAF4AE338D4B05C76 /* newgroupbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = newgroupbox.cpp; path = SourceFiles/boxes/newgroupbox.cpp; sourceTree = ""; }; + 6011DDB120E1B2D4803E129A /* stdafx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = stdafx.h; path = SourceFiles/stdafx.h; sourceTree = ""; }; + 60C0061633AC4244EA634B2A /* countrycodeinput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = countrycodeinput.h; path = SourceFiles/gui/countrycodeinput.h; sourceTree = ""; }; + 6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml_private.pri"; sourceTree = ""; }; + 61C679D8B4B332026BD34200 /* introphone.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = introphone.cpp; path = SourceFiles/intro/introphone.cpp; sourceTree = ""; }; + 62807F13DBD204D0716143AD /* Telegram.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Telegram.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 63AF8520023B4EA40306CB03 /* moc_mtpSession.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_mtpSession.cpp; path = GeneratedFiles/Debug/moc_mtpSession.cpp; sourceTree = ""; }; + 63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.3.0/mkspecs/macx-clang/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/macx-clang/qmake.conf"; sourceTree = ""; }; + 6532A0DC7EFE446967682E83 /* moc_downloadpathbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_downloadpathbox.cpp; path = GeneratedFiles/Debug/moc_downloadpathbox.cpp; sourceTree = ""; }; + 6610564B876E47D289A596DB /* confirmbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = confirmbox.cpp; path = SourceFiles/boxes/confirmbox.cpp; sourceTree = ""; }; + 669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.3.0/mkspecs/common/shell-unix.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/shell-unix.conf"; sourceTree = ""; }; + 6700DD555BF1C0FC338FB959 /* Qt5Network */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5Network; path = "/usr/local/Qt-5.3.0/lib/libQt5Network$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 6868ADA9E9A9801B2BA92B97 /* countryinput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = countryinput.h; path = SourceFiles/gui/countryinput.h; sourceTree = ""; }; + 69347C39E4D922E94D0860BF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designercomponents_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designercomponents_private.pri"; sourceTree = ""; }; + 69FE16874104731CE2A66E0D /* moc_newgroupbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_newgroupbox.cpp; path = GeneratedFiles/Debug/moc_newgroupbox.cpp; sourceTree = ""; }; + 6A510365F9F6367ECB0DB065 /* images.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = images.cpp; path = SourceFiles/gui/images.cpp; sourceTree = ""; }; + 6B46A0EE3C3B9D3B5A24946E /* moc_window.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_window.cpp; path = GeneratedFiles/Debug/moc_window.cpp; sourceTree = ""; }; + 6B90F69947805586A6FAE80E /* sysbuttons.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = sysbuttons.cpp; path = SourceFiles/sysbuttons.cpp; sourceTree = ""; }; + 6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport.pri"; sourceTree = ""; }; + 6C86B6E6AB1857B735B720D6 /* layerwidget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = layerwidget.h; path = SourceFiles/layerwidget.h; sourceTree = ""; }; + 6D50D70712776D7ED3B00E5C /* mtp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = mtp.cpp; path = SourceFiles/mtproto/mtp.cpp; sourceTree = ""; }; + 6E1859D714E4471E053D90C9 /* scrollarea.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = scrollarea.cpp; path = SourceFiles/gui/scrollarea.cpp; sourceTree = ""; }; + 6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.3.0/mkspecs/qdevice.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/qdevice.pri"; sourceTree = ""; }; + 6E8FD0ED1B60D43929944CD2 /* text.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = text.h; path = SourceFiles/gui/text.h; sourceTree = ""; }; + 710C982FC773400941B3AFBC /* dropdown.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = dropdown.cpp; path = SourceFiles/dropdown.cpp; sourceTree = ""; }; + 723F90793B2C195E2CCB2233 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 73737DC91E390C4AB18FB595 /* pspecific_mac_p.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = pspecific_mac_p.mm; path = SourceFiles/pspecific_mac_p.mm; sourceTree = ""; }; + 74772222DA764BE4623EAC5D /* moc_pspecific_mac.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_pspecific_mac.cpp; path = GeneratedFiles/Debug/moc_pspecific_mac.cpp; sourceTree = ""; }; + 748F1BCCBEEB3675768960FB /* mtpAuthKey.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mtpAuthKey.h; path = SourceFiles/mtproto/mtpAuthKey.h; sourceTree = ""; }; + 74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri"; sourceTree = ""; }; + 751C8D0E0BE6D16937B77A2C /* countrycodeinput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = countrycodeinput.cpp; path = SourceFiles/gui/countrycodeinput.cpp; sourceTree = ""; }; + 763ED3C6815ED6C89E352652 /* flatlabel.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = flatlabel.cpp; path = SourceFiles/gui/flatlabel.cpp; sourceTree = ""; }; + 77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent.pri"; sourceTree = ""; }; + 7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative.pri"; sourceTree = ""; }; + 7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer_private.pri"; sourceTree = ""; }; + 7C8F9CA4FCE8AF8FCCCB961E /* phoneinput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = phoneinput.cpp; path = SourceFiles/gui/phoneinput.cpp; sourceTree = ""; }; + 7CA6945B22800A0F30B75DA5 /* addcontactbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = addcontactbox.cpp; path = SourceFiles/boxes/addcontactbox.cpp; sourceTree = ""; }; + 7CDE9D7CB2C729BC3612372B /* addcontactbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = addcontactbox.h; path = SourceFiles/boxes/addcontactbox.h; sourceTree = ""; }; + 7D075A915E8739C1B6BC5F43 /* types.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = types.cpp; path = SourceFiles/types.cpp; sourceTree = ""; }; + 7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent_private.pri"; sourceTree = ""; }; + 7DBFC0B5EAF874BA10E3D603 /* mtpScheme.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mtpScheme.h; path = SourceFiles/mtproto/mtpScheme.h; sourceTree = ""; }; + 7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql.pri"; sourceTree = ""; }; + 7EC00404ACD5AB0E97726B0E /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; sourceTree = ""; }; + 7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core.pri"; sourceTree = ""; }; + 81780025807318AEA3B8A6FF /* moc_addcontactbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_addcontactbox.cpp; path = GeneratedFiles/Debug/moc_addcontactbox.cpp; sourceTree = ""; }; + 817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.3.0/mkspecs/common/macx.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/macx.conf"; sourceTree = ""; }; + 82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickparticles_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickparticles_private.pri"; sourceTree = ""; }; + 833B45FEF5DC4AD0E8ADA64A /* Qt5MultimediaWidgets */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5MultimediaWidgets; path = "/usr/local/Qt-5.3.0/lib/libQt5MultimediaWidgets$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 83728F60A64483E0AA933D76 /* pspecific.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pspecific.h; path = SourceFiles/pspecific.h; sourceTree = ""; }; + 83A36F229E897566E011B79E /* scrollarea.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = scrollarea.h; path = SourceFiles/gui/scrollarea.h; sourceTree = ""; }; + 83D37373949868693FB7816D /* qmng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qmng; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqmng$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 85061B1DA49D125991117950 /* /usr/local/Qt-5.3.0/mkspecs/macx-xcode/qmake.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/macx-xcode/qmake.conf"; sourceTree = ""; }; + 85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors.pri"; sourceTree = ""; }; + 85FABD67716E36CD8B3CA4FA /* animation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = animation.h; path = SourceFiles/gui/animation.h; sourceTree = ""; }; + 87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri"; sourceTree = ""; }; + 87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets_private.pri"; sourceTree = ""; }; + 8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib_private.pri"; sourceTree = ""; }; + 8880067F9BFD46108777E134 /* mtp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mtp.h; path = SourceFiles/mtproto/mtp.h; sourceTree = ""; }; + 8918F4B71ED5FC138AFD3F70 /* moc_scrollarea.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_scrollarea.cpp; path = GeneratedFiles/Debug/moc_scrollarea.cpp; sourceTree = ""; }; + 892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri"; sourceTree = ""; }; + 89863CCAF1D29037AE95755D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative_private.pri"; sourceTree = ""; }; + 89F92B278CA31C393E245056 /* mtpRPC.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = mtpRPC.cpp; path = SourceFiles/mtproto/mtpRPC.cpp; sourceTree = ""; }; + 8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc.pri"; sourceTree = ""; }; + 8A28F7789408AA839F48A5F2 /* settings.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = settings.cpp; path = SourceFiles/settings.cpp; sourceTree = ""; }; + 8A9D926C08392F7A9BC83B0C /* fileuploader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = fileuploader.h; path = SourceFiles/fileuploader.h; sourceTree = ""; }; + 8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri"; sourceTree = ""; }; + 8B98A212C068D6CC7CE73CAA /* moc_introcode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_introcode.cpp; path = GeneratedFiles/Debug/moc_introcode.cpp; sourceTree = ""; }; + 8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick_private.pri"; sourceTree = ""; }; + 8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.3.0/mkspecs/common/clang.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/clang.conf"; sourceTree = ""; }; + 8C7AEF8DED4F7B6E6F89F330 /* moc_addparticipantbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_addparticipantbox.cpp; path = GeneratedFiles/Debug/moc_addparticipantbox.cpp; sourceTree = ""; }; + 8C800AAC9549E6E9E7046BED /* contactsbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = contactsbox.cpp; path = SourceFiles/boxes/contactsbox.cpp; sourceTree = ""; }; + 8CCCACE96535180FEB557712 /* settingswidget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = settingswidget.cpp; path = SourceFiles/settingswidget.cpp; sourceTree = ""; }; + 8CF51323544B886B8F4A2232 /* qwbmp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwbmp; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqwbmp$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 8D9815BDB5BD9F90D2BC05C5 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = ""; }; + 8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg_private.pri"; sourceTree = ""; }; + 8DF456E9A416E4C3C2D6946C /* downloadpathbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = downloadpathbox.cpp; path = SourceFiles/boxes/downloadpathbox.cpp; sourceTree = ""; }; + 8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets_private.pri"; sourceTree = ""; }; + 8EB83A4D34226609E79A613A /* connectionbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = connectionbox.h; path = SourceFiles/boxes/connectionbox.h; sourceTree = ""; }; + 8F500B5166907B6D9A7C3E3D /* qico */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qico; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqico$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_platformsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_platformsupport_private.pri"; sourceTree = ""; }; + 8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets.pri"; sourceTree = ""; }; + 924D4939FD169BB4B8AEB1C9 /* moc_mtp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_mtp.cpp; path = GeneratedFiles/Debug/moc_mtp.cpp; sourceTree = ""; }; + 93AFE74928551FC3D7E8390B /* moc_settingswidget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_settingswidget.cpp; path = GeneratedFiles/Debug/moc_settingswidget.cpp; sourceTree = ""; }; + 946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmng.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmng.pri"; sourceTree = ""; }; + 963123025C466CB8DD9CF4AF /* mtpConnection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mtpConnection.h; path = SourceFiles/mtproto/mtpConnection.h; sourceTree = ""; }; + 96ACDDE3DCB798B97F9EA2F4 /* mtpFileLoader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mtpFileLoader.h; path = SourceFiles/mtproto/mtpFileLoader.h; sourceTree = ""; }; + 9742F24EE18EA44D52824F1E /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = ""; }; + 974DB34EEB8F83B91614C0B0 /* logs.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = logs.cpp; path = SourceFiles/logs.cpp; sourceTree = ""; }; + 99B8D38F7F5858601230911E /* style_auto.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = style_auto.cpp; path = GeneratedFiles/style_auto.cpp; sourceTree = ""; }; + 9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qqt7engine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qqt7engine.pri"; sourceTree = ""; }; + 9A55B8F7C143D66AD9EAE304 /* qgenericbearer */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qgenericbearer; path = "/usr/local/Qt-5.3.0/plugins/bearer/libqgenericbearer$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + 9A69B711DE4B9C89BA803750 /* moc_aboutbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_aboutbox.cpp; path = GeneratedFiles/Debug/moc_aboutbox.cpp; sourceTree = ""; }; + 9AB1479D7D63386FD2046620 /* flatinput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = flatinput.cpp; path = SourceFiles/gui/flatinput.cpp; sourceTree = ""; }; + 9B36BB8C5B8CA7B07F3F35F0 /* fileuploader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = fileuploader.cpp; path = SourceFiles/fileuploader.cpp; sourceTree = ""; }; + 9BD0BE66E93ACE27D00D6D75 /* filedialog.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = filedialog.h; path = SourceFiles/gui/filedialog.h; sourceTree = ""; }; + 9D9F4744B2F9FF22569D4535 /* moc_countryinput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_countryinput.cpp; path = GeneratedFiles/Debug/moc_countryinput.cpp; sourceTree = ""; }; + 9DFF62A901D70814B8A323D4 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; + 9E0704DE8650D7952DC6B7AE /* moc_photosendbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_photosendbox.cpp; path = GeneratedFiles/Debug/moc_photosendbox.cpp; sourceTree = ""; }; + 9EFD7CB36012BFC00CC79434 /* style_auto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = style_auto.h; path = GeneratedFiles/style_auto.h; sourceTree = ""; }; + A0090709DE1B155085362C36 /* introcode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = introcode.cpp; path = SourceFiles/intro/introcode.cpp; sourceTree = ""; }; + A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets.pri"; sourceTree = ""; }; + A1479F94376F9732B57C69DB /* moc_animation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_animation.cpp; path = GeneratedFiles/Debug/moc_animation.cpp; sourceTree = ""; }; + A1A67BEAA744704B29168D39 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; + A1F48DF3E5D0D7C741C1EAC4 /* moc_countrycodeinput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_countrycodeinput.cpp; path = GeneratedFiles/Debug/moc_countrycodeinput.cpp; sourceTree = ""; }; + A3622760CEC6D6827A25E710 /* mtpPublicRSA.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mtpPublicRSA.h; path = SourceFiles/mtproto/mtpPublicRSA.h; sourceTree = ""; }; + A37C7E516201B0264A4CDA38 /* moc_intro.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_intro.cpp; path = GeneratedFiles/Debug/moc_intro.cpp; sourceTree = ""; }; + A490341D0650372A5757B367 /* qtmedia_audioengine */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtmedia_audioengine; path = "/usr/local/Qt-5.3.0/plugins/mediaservice/libqtmedia_audioengine$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri"; sourceTree = ""; }; + A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools_private.pri"; sourceTree = ""; }; + A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras.pri"; sourceTree = ""; }; + A7782E2B07CB2D1D14F431B0 /* qtaccessiblewidgets */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtaccessiblewidgets; path = "/usr/local/Qt-5.3.0/plugins/accessible/libqtaccessiblewidgets$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + A83D2C19F756D3371E5999A8 /* historywidget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = historywidget.cpp; path = SourceFiles/historywidget.cpp; sourceTree = ""; }; + A9E30FA27827990C5F182223 /* /usr/local/Qt-5.3.0/mkspecs/common/gcc-base-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/gcc-base-mac.conf"; sourceTree = ""; }; + A9FF4818C6775109B3DBFA18 /* introsignup.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = introsignup.cpp; path = SourceFiles/intro/introsignup.cpp; sourceTree = ""; }; + AA5379CB06E908AC80BE7B82 /* Qt5OpenGL */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5OpenGL; path = "/usr/local/Qt-5.3.0/lib/libQt5OpenGL$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml.pri"; sourceTree = ""; }; + AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri"; sourceTree = ""; }; + AB745978DF0F41D1801ABDA6 /* .qmake.stash */ = {isa = PBXFileReference; lastKnownFileType = file; path = .qmake.stash; sourceTree = ""; }; + ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest_private.pri"; sourceTree = ""; }; + AC9B5F6FB4B984C8D76F7AE2 /* moc_dropdown.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_dropdown.cpp; path = GeneratedFiles/Debug/moc_dropdown.cpp; sourceTree = ""; }; + ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth.pri"; sourceTree = ""; }; + AD0C395D671BC024083A5FC7 /* localimageloader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = localimageloader.h; path = SourceFiles/localimageloader.h; sourceTree = ""; }; + AD90723EF02EAD016FD49CC9 /* introsteps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = introsteps.h; path = SourceFiles/intro/introsteps.h; sourceTree = ""; }; + ADC6308023253CEA51F86E21 /* qwebp */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qwebp; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqwebp$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg.pri"; sourceTree = ""; }; + AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + AF4585F593B1C9D0D4FD061C /* flatcheckbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = flatcheckbox.cpp; path = SourceFiles/gui/flatcheckbox.cpp; sourceTree = ""; }; + AF5776B0652744978B7DF6D3 /* langloaderplain.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = langloaderplain.cpp; path = SourceFiles/langloaderplain.cpp; sourceTree = ""; }; + AF61D864B8C444ADD4E1B391 /* moc_photocropbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_photocropbox.cpp; path = GeneratedFiles/Debug/moc_photocropbox.cpp; sourceTree = ""; }; + AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcocoa.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcocoa.pri"; sourceTree = ""; }; + B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsqlite.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsqlite.pri"; sourceTree = ""; }; + B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets_private.pri"; sourceTree = ""; }; + B26239063A068F800A2C95F4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwebp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwebp.pri"; sourceTree = ""; }; + B3062303CE8F4EB9325CB3DC /* emoji_config.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = emoji_config.cpp; path = SourceFiles/gui/emoji_config.cpp; sourceTree = ""; }; + B382B645B34234E451AE5D94 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml.pri"; sourceTree = ""; }; + B3D42654F18B1FE49512C404 /* mtpDC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mtpDC.h; path = SourceFiles/mtproto/mtpDC.h; sourceTree = ""; }; + B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools_private.pri"; sourceTree = ""; }; + B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc_private.pri"; sourceTree = ""; }; + B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qminimal.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qminimal.pri"; sourceTree = ""; }; + B714EA71A09A832FAA846A0A /* moc_mtpConnection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_mtpConnection.cpp; path = GeneratedFiles/Debug/moc_mtpConnection.cpp; sourceTree = ""; }; + B8100EAB0521FC7A937D2E4F /* moc_phoneinput.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_phoneinput.cpp; path = GeneratedFiles/Debug/moc_phoneinput.cpp; sourceTree = ""; }; + B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri"; sourceTree = ""; }; + B88236FC554B694F618D848C /* moc_sysbuttons.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_sysbuttons.cpp; path = GeneratedFiles/Debug/moc_sysbuttons.cpp; sourceTree = ""; }; + B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri"; sourceTree = ""; }; + B8D9AFA42E8633154A9817A2 /* mtpConnection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = mtpConnection.cpp; path = SourceFiles/mtproto/mtpConnection.cpp; sourceTree = ""; }; + B97D4DB97FE881648644211A /* downloadpathbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = downloadpathbox.h; path = SourceFiles/boxes/downloadpathbox.h; sourceTree = ""; }; + BB1602EA641643DE565005B1 /* twidget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = twidget.cpp; path = SourceFiles/gui/twidget.cpp; sourceTree = ""; }; + BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtiff.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtiff.pri"; sourceTree = ""; }; + BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bootstrap_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bootstrap_private.pri"; sourceTree = ""; }; + BDAB6725B830DEE896DC0F55 /* boxshadow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = boxshadow.h; path = SourceFiles/gui/boxshadow.h; sourceTree = ""; }; + BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors_private.pri"; sourceTree = ""; }; + BEF9DFDA6822604126A7E233 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; + BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport.pri"; sourceTree = ""; }; + C194EDD00F76216057D48A5C /* aboutbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = aboutbox.cpp; path = SourceFiles/boxes/aboutbox.cpp; sourceTree = ""; }; + C19DF71B273A4843553518F2 /* app.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = app.h; path = SourceFiles/app.h; sourceTree = ""; }; + C20F9DD8C7B031B8E20D5653 /* application.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = application.cpp; path = SourceFiles/application.cpp; sourceTree = ""; }; + C34459FA465B57DF4DB80D12 /* introsteps.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = introsteps.cpp; path = SourceFiles/intro/introsteps.cpp; sourceTree = ""; }; + C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qico.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qico.pri"; sourceTree = ""; }; + C505A18319B9B63C63877858 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script_private.pri"; sourceTree = ""; }; + C52030E4534894A117CA66CA /* qavfcamera */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qavfcamera; path = "/usr/local/Qt-5.3.0/plugins/mediaservice/libqavfcamera$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + C63C6D083EBEB13A60256DF3 /* historywidget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = historywidget.h; path = SourceFiles/historywidget.h; sourceTree = ""; }; + C84546C18DCBB04166195DCF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri"; sourceTree = ""; }; + C913E6A1001E07EE7C13CE93 /* style.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = style.h; path = SourceFiles/style.h; sourceTree = ""; }; + C9FFCCE4FCB845744636795F /* moc_flatbutton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_flatbutton.cpp; path = GeneratedFiles/Debug/moc_flatbutton.cpp; sourceTree = ""; }; + CA56ACFB53D87637192CC9B2 /* window.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = window.cpp; path = SourceFiles/window.cpp; sourceTree = ""; }; + CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qoffscreen.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qoffscreen.pri"; sourceTree = ""; }; + CE0D5EFE401BF9815FACE579 /* pspecific_mac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pspecific_mac.h; path = SourceFiles/pspecific_mac.h; sourceTree = ""; }; + CE7FFE194127BD789A2C877A /* moc_confirmbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_confirmbox.cpp; path = GeneratedFiles/Debug/moc_confirmbox.cpp; sourceTree = ""; }; + CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools.pri"; sourceTree = ""; }; + CF1690B68F3B278E78823DB9 /* history.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = history.h; path = SourceFiles/history.h; sourceTree = ""; }; + CF32DF59C7823E4F3397EF3C /* profilewidget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = profilewidget.cpp; path = SourceFiles/profilewidget.cpp; sourceTree = ""; }; + CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_clucene_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_clucene_private.pri"; sourceTree = ""; }; + CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script.pri"; sourceTree = ""; }; + CFFBE05DB004895080314289 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvgicon.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvgicon.pri"; sourceTree = ""; }; + D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport_private.pri"; sourceTree = ""; }; + D12A6BD8EE80B8B308E481AD /* moc_flattextarea.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_flattextarea.cpp; path = GeneratedFiles/Debug/moc_flattextarea.cpp; sourceTree = ""; }; + D1C9C77F1318F5A55C9BF289 /* photosendbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = photosendbox.cpp; path = SourceFiles/boxes/photosendbox.cpp; sourceTree = ""; }; + D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri"; sourceTree = ""; }; + D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia.pri"; sourceTree = ""; }; + D3D1BE0BEA3AEE0551AD39AC /* qdds */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qdds; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqdds$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + D3FE9C29B6A61D7C3C4B731B /* animation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = animation.cpp; path = SourceFiles/gui/animation.cpp; sourceTree = ""; }; + D4B32C2222F82AC56BADEB21 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; + D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.3.0/mkspecs/qconfig.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/qconfig.pri"; sourceTree = ""; }; + D5141F795670589C8CC41CBC /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri"; sourceTree = ""; }; + D53D8E6A188E05078A114294 /* qcocoa */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qcocoa; path = "/usr/local/Qt-5.3.0/plugins/platforms/libqcocoa$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + D6193B79CECC9DD0142D1200 /* qtharfbuzzng */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtharfbuzzng; path = "/usr/local/Qt-5.3.0/lib/libqtharfbuzzng$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + D6FF6676816C4E374D374060 /* qrc_telegram.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = qrc_telegram.cpp; path = GeneratedFiles/qrc_telegram.cpp; sourceTree = ""; }; + D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help_private.pri"; sourceTree = ""; }; + D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui_private.pri"; sourceTree = ""; }; + D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets.pri"; sourceTree = ""; }; + DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib.pri"; sourceTree = ""; }; + DBF506D10449BFABD45B82DA /* Qt5PrintSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PrintSupport; path = "/usr/local/Qt-5.3.0/lib/libQt5PrintSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + DC23E0B79FF53F35BA8F76A1 /* introsignup.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = introsignup.h; path = SourceFiles/intro/introsignup.h; sourceTree = ""; }; + DCEFD9167C239650120B0145 /* qtga */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtga; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqtga$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + DE4C0E3685DDAE58F9397B13 /* filedialog.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = filedialog.cpp; path = SourceFiles/gui/filedialog.cpp; sourceTree = ""; }; + DF8188E30892A4654B984221 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest.pri"; sourceTree = ""; }; + DFD7912080BC557230093752 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; + E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl_private.pri"; sourceTree = ""; }; + E181C525E21A16F2D4396CA7 /* moc_application.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_application.cpp; path = GeneratedFiles/Debug/moc_application.cpp; sourceTree = ""; }; + E37365B4489B4918BEBB707D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml_private.pri"; sourceTree = ""; }; + E432DA897A5F027987342E8F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions.pri"; sourceTree = ""; }; + E466873F01ABA1E55E914489 /* dialogswidget.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = dialogswidget.cpp; path = SourceFiles/dialogswidget.cpp; sourceTree = ""; }; + E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools.pri"; sourceTree = ""; }; + E55D7EB1AAD7FB1CA69BA9E4 /* lang.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = lang.h; path = GeneratedFiles/lang.h; sourceTree = ""; }; + E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning_private.pri"; sourceTree = ""; }; + E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = Qt5PlatformSupport; path = "/usr/local/Qt-5.3.0/lib/libQt5PlatformSupport$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia_private.pri"; sourceTree = ""; }; + E908A6C86F93FA27DF70866C /* photocropbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = photocropbox.cpp; path = SourceFiles/boxes/photocropbox.cpp; sourceTree = ""; }; + EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri"; sourceTree = ""; }; + EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qicns.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qicns.pri"; sourceTree = ""; }; + EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri"; sourceTree = ""; }; + EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.3.0/mkspecs/common/mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/mac.conf"; sourceTree = ""; }; + EC4D4A7398CAAD47386D9CA0 /* mtpSessionImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mtpSessionImpl.h; path = SourceFiles/mtproto/mtpSessionImpl.h; sourceTree = ""; }; + EDD43CF4FA85D97A1140E973 /* qavfmediaplayer */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qavfmediaplayer; path = "/usr/local/Qt-5.3.0/plugins/mediaservice/libqavfmediaplayer$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + EE03BC5CA4628A6D6BEB0122 /* qcorewlanbearer */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qcorewlanbearer; path = "/usr/local/Qt-5.3.0/plugins/bearer/libqcorewlanbearer$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + EF1AD6A66D0C28A6A15E2C30 /* introphone.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = introphone.h; path = SourceFiles/intro/introphone.h; sourceTree = ""; }; + F0681BC551FC8A2B132FC646 /* qjp2 */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qjp2; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqjp2$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + F0A58515945747E36783CC21 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri"; sourceTree = ""; }; + F1A04BDB750C2AE652797B04 /* flatbutton.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = flatbutton.cpp; path = SourceFiles/gui/flatbutton.cpp; sourceTree = ""; }; + F1B68FFCE8AE823F6D45EB06 /* phoneinput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = phoneinput.h; path = SourceFiles/gui/phoneinput.h; sourceTree = ""; }; + F2453BA07315EB9F34F1CD57 /* qtiff */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = qtiff; path = "/usr/local/Qt-5.3.0/plugins/imageformats/libqtiff$(QT_LIBRARY_SUFFIX).a"; sourceTree = ""; }; + F26998DF735BCE5F975508ED /* CoreWLAN.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreWLAN.framework; path = /System/Library/Frameworks/CoreWLAN.framework; sourceTree = ""; }; + F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer.pri"; sourceTree = ""; }; + F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.3.0/mkspecs/common/clang-mac.conf */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/common/clang-mac.conf"; sourceTree = ""; }; + F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri"; sourceTree = ""; }; + F4EECA1187A744AEF5165243 /* pspecific_mac.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = pspecific_mac.cpp; path = SourceFiles/pspecific_mac.cpp; sourceTree = ""; }; + F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning.pri"; sourceTree = ""; }; + F80095A026AF9453E9C2B8BD /* settingswidget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = settingswidget.h; path = SourceFiles/settingswidget.h; sourceTree = ""; }; + F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvg.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvg.pri"; sourceTree = ""; }; + F9BEAA743A908603687DA204 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri"; sourceTree = ""; }; + FB0DCE17FF02138B3C1B1219 /* telegram_plugin_import.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = telegram_plugin_import.cpp; sourceTree = ""; }; + FB61F72601D91BF3AC730D20 /* mtpRPC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mtpRPC.h; path = SourceFiles/mtproto/mtpRPC.h; sourceTree = ""; }; + FCC237CA5AD60B9BA4447615 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help.pri */ = {isa = PBXFileReference; lastKnownFileType = text; path = "/usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help.pri"; sourceTree = ""; }; + FE8FD20832B4C226E345CFBA /* mainwidget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = mainwidget.h; path = SourceFiles/mainwidget.h; sourceTree = ""; }; + FEC58F9D8A0963E5A9D4BE6F /* moc_connectionbox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = moc_connectionbox.cpp; path = GeneratedFiles/Debug/moc_connectionbox.cpp; sourceTree = ""; }; + FF5BDAB0076F3391B219EA52 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = /System/Library/Frameworks/SystemConfiguration.framework; sourceTree = ""; }; + FF66B5DCBB004CD8703F0207 /* newgroupbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = newgroupbox.h; path = SourceFiles/boxes/newgroupbox.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D1C883685E82D5676953459A /* Link Binary With Libraries */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1BB705CDB741E2B7450201A5 /* Cocoa.framework in Link Binary With Libraries */, + B58956C9C026BD3A7FD9ECDF /* libexif.a in Link Binary With Libraries */, + 328FD74542F6E2C873EE4D4B /* ApplicationServices.framework in Link Binary With Libraries */, + 668DDDA0C55405E7FCFD6CA5 /* CoreServices.framework in Link Binary With Libraries */, + F8B465CE34D8DF87AAE95913 /* CoreFoundation.framework in Link Binary With Libraries */, + F26454630C80841CBDCFE1CA /* Foundation.framework in Link Binary With Libraries */, + 8771A8C96E9C391044035D99 /* OpenGL.framework in Link Binary With Libraries */, + E45E51A644D5FC9F942ECE55 /* AGL.framework in Link Binary With Libraries */, + 15364689D2AB5A30E87A689F /* Security.framework in Link Binary With Libraries */, + D4639595C3BCF2A39D88DF6E /* SystemConfiguration.framework in Link Binary With Libraries */, + F8ED42CF8679BF83227DAFC4 /* Carbon.framework in Link Binary With Libraries */, + 4EB68D0C8182BCE33529C421 /* AudioToolbox.framework in Link Binary With Libraries */, + 35A1A39F8EAB37889EB3D397 /* CoreAudio.framework in Link Binary With Libraries */, + B460F624007324313696BE86 /* QuartzCore.framework in Link Binary With Libraries */, + CCA737EE379CDB10CC9A0F23 /* AVFoundation.framework in Link Binary With Libraries */, + B78304F135DEF1F7A68393A6 /* CoreMedia.framework in Link Binary With Libraries */, + F2A75ACAC9DF6A3F4E5711E7 /* AppKit.framework in Link Binary With Libraries */, + DAD6F5593C3427F014531342 /* AudioUnit.framework in Link Binary With Libraries */, + EEBE9C2FA7C9F066508EF99B /* qavfmediaplayer in Link Binary With Libraries */, + DC52E36A03D974A1A0C9AA2A /* qqt7engine in Link Binary With Libraries */, + EDFF7E777D3A3730A9BB3FC2 /* QTKit.framework in Link Binary With Libraries */, + 9B6E32D1B74A14273D68E439 /* Qt5MultimediaWidgets in Link Binary With Libraries */, + C9CC5CE020283D113D81179C /* Qt5OpenGL in Link Binary With Libraries */, + 597623A24AE744145BE84968 /* qtmedia_audioengine in Link Binary With Libraries */, + B3C3392253201C328D9C6736 /* qtaudio_coreaudio in Link Binary With Libraries */, + 2A20C3BF118707980A2493E1 /* qtmultimedia_m3u in Link Binary With Libraries */, + C0D2E925FB8B08D9AA280753 /* Qt5Multimedia in Link Binary With Libraries */, + D3D955F61644264D27FC2796 /* qtaccessiblewidgets in Link Binary With Libraries */, + EBA5E17368D2BBC6014E92B9 /* qcorewlanbearer in Link Binary With Libraries */, + D0EECF370C58DDCACBC71BAD /* CoreWLAN.framework in Link Binary With Libraries */, + 8883FF366F2623E89D90A9E6 /* qgenericbearer in Link Binary With Libraries */, + 5058CB9D7BFFCE9F404A3700 /* Qt5Network in Link Binary With Libraries */, + D1FA8AF31837B51C762A9D4D /* qcocoa in Link Binary With Libraries */, + 8D267F2E4776F0ECA2F49DC8 /* IOKit.framework in Link Binary With Libraries */, + 1A681B886F50EE30FBE62B4B /* Qt5PrintSupport in Link Binary With Libraries */, + D22929A2B8C5281567FCACDC /* Qt5PlatformSupport in Link Binary With Libraries */, + BE6AB9DF1C4880624131C669 /* Qt5Widgets in Link Binary With Libraries */, + A9563D9C9FD0D76FAAF1CA96 /* qdds in Link Binary With Libraries */, + 7CA5405B8503BFFC60932D2B /* qicns in Link Binary With Libraries */, + 496FD9CEEB508016AFB9F928 /* qico in Link Binary With Libraries */, + 59789101736112A570B8EFE6 /* qjp2 in Link Binary With Libraries */, + FBD56E2AC34F76BFFDB68619 /* qmng in Link Binary With Libraries */, + 7F76437B577F737145996DC3 /* qtga in Link Binary With Libraries */, + C06DDE378A7AC1FA9E6FF69A /* qtiff in Link Binary With Libraries */, + A3F8F2284013928A02AE5C38 /* qwbmp in Link Binary With Libraries */, + F4D3747C3A03B25EDC9057BB /* qwebp in Link Binary With Libraries */, + 9F33AC0693BC81B27D8F518D /* Qt5Gui in Link Binary With Libraries */, + 8D33FE22B9BBADC7FA46C15B /* qtharfbuzzng in Link Binary With Libraries */, + B9ADD90C014EA3FBE351DF03 /* Qt5Core in Link Binary With Libraries */, + ); + name = "Link Binary With Libraries"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 130BDDB6FC4D60CF394D95AF /* GeneratedFiles */ = { + isa = PBXGroup; + children = ( + 4B6C62A2448B708B3FF40411 /* lang.cpp */, + 99B8D38F7F5858601230911E /* style_auto.cpp */, + E55D7EB1AAD7FB1CA69BA9E4 /* lang.h */, + 9EFD7CB36012BFC00CC79434 /* style_auto.h */, + 39C1ADF085370E033CB7E7E1 /* style_classes.h */, + ); + name = GeneratedFiles; + sourceTree = ""; + }; + 1A6AA22F4A758C4B5F5138FB /* mtproto */ = { + isa = PBXGroup; + children = ( + 6D50D70712776D7ED3B00E5C /* mtp.cpp */, + B8D9AFA42E8633154A9817A2 /* mtpConnection.cpp */, + 315C7FACB4A9E18AA95486CA /* mtpDC.cpp */, + 01D6341DC31FE5997F7BB159 /* mtpFileLoader.cpp */, + 89F92B278CA31C393E245056 /* mtpRPC.cpp */, + 0FBED3C6654EA3753EB39831 /* mtpSession.cpp */, + EC4D4A7398CAAD47386D9CA0 /* mtpSessionImpl.h */, + 8880067F9BFD46108777E134 /* mtp.h */, + 748F1BCCBEEB3675768960FB /* mtpAuthKey.h */, + 963123025C466CB8DD9CF4AF /* mtpConnection.h */, + 27E7471A4EC90E84353AA16F /* mtpCoreTypes.h */, + B3D42654F18B1FE49512C404 /* mtpDC.h */, + 96ACDDE3DCB798B97F9EA2F4 /* mtpFileLoader.h */, + A3622760CEC6D6827A25E710 /* mtpPublicRSA.h */, + FB61F72601D91BF3AC730D20 /* mtpRPC.h */, + 7DBFC0B5EAF874BA10E3D603 /* mtpScheme.h */, + 4D1099F2D3696E8A0E17D37D /* mtpSession.h */, + ); + name = mtproto; + sourceTree = ""; + }; + 25B08E2869634E9BCBA333A2 /* Generated Sources */ = { + isa = PBXGroup; + children = ( + D0B536A85E53302E4F66CE23 /* GeneratedFiles */, + ); + name = "Generated Sources"; + sourceTree = ""; + }; + 2EB56BE3C2D93CDAB0C52E67 /* Sources */ = { + isa = PBXGroup; + children = ( + 73F2E45FDEB381A085D37A49 /* SourceFiles */, + 130BDDB6FC4D60CF394D95AF /* GeneratedFiles */, + FB0DCE17FF02138B3C1B1219 /* telegram_plugin_import.cpp */, + ); + name = Sources; + sourceTree = ""; + }; + 35C84855EE9B0EA8AE0FF729 /* SourceFiles */ = { + isa = PBXGroup; + children = ( + 1292B92B4848460640F6A391 /* telegram.qrc */, + ); + name = SourceFiles; + sourceTree = ""; + }; + 370997172D3BAEED157B8E70 /* SourceFiles */ = { + isa = PBXGroup; + children = ( + 1292B92B4848460640F6A391 /* telegram.qrc */, + ); + name = SourceFiles; + sourceTree = ""; + }; + 579DA7AEF5751DF4988869A0 /* gui */ = { + isa = PBXGroup; + children = ( + D3FE9C29B6A61D7C3C4B731B /* animation.cpp */, + 08A7682548FB7E671FF03822 /* boxshadow.cpp */, + 4D55B83DFDFE3D492CDBD27A /* button.cpp */, + 751C8D0E0BE6D16937B77A2C /* countrycodeinput.cpp */, + 3E329D4547CC23585307FA32 /* countryinput.cpp */, + B3062303CE8F4EB9325CB3DC /* emoji_config.cpp */, + DE4C0E3685DDAE58F9397B13 /* filedialog.cpp */, + F1A04BDB750C2AE652797B04 /* flatbutton.cpp */, + AF4585F593B1C9D0D4FD061C /* flatcheckbox.cpp */, + 9AB1479D7D63386FD2046620 /* flatinput.cpp */, + 763ED3C6815ED6C89E352652 /* flatlabel.cpp */, + 5C7FD422BBEDA858D7237AE9 /* flattextarea.cpp */, + 6A510365F9F6367ECB0DB065 /* images.cpp */, + 7C8F9CA4FCE8AF8FCCCB961E /* phoneinput.cpp */, + 6E1859D714E4471E053D90C9 /* scrollarea.cpp */, + 420A06A32B66D250142B4B6D /* style_core.cpp */, + 135FD3715BFDC50AD7B00E04 /* text.cpp */, + BB1602EA641643DE565005B1 /* twidget.cpp */, + 85FABD67716E36CD8B3CA4FA /* animation.h */, + BDAB6725B830DEE896DC0F55 /* boxshadow.h */, + 4604687EBA85611C9E8A9CDF /* button.h */, + 60C0061633AC4244EA634B2A /* countrycodeinput.h */, + 6868ADA9E9A9801B2BA92B97 /* countryinput.h */, + 19618554524B8D928F13940D /* emoji_config.h */, + 9BD0BE66E93ACE27D00D6D75 /* filedialog.h */, + 36F718DC72345A84987DB0F6 /* flatbutton.h */, + 5059175BDCEC77B7246DE1B9 /* flatcheckbox.h */, + 4E4D06EC4D2C82C7D6E079A2 /* flatinput.h */, + 34E1DF19219C52D7DB20224A /* flatlabel.h */, + 59E514973BA9BF6599252DDC /* flattextarea.h */, + 0F8FFD87AEBAC448568570DC /* images.h */, + F1B68FFCE8AE823F6D45EB06 /* phoneinput.h */, + 83A36F229E897566E011B79E /* scrollarea.h */, + 0FC38EE7F29EF895925A2C49 /* style_core.h */, + 6E8FD0ED1B60D43929944CD2 /* text.h */, + 507CCEEC4CBA3E3BD6EEDED1 /* twidget.h */, + ); + name = gui; + sourceTree = ""; + }; + 5E35A03E5F2C51353EBCBF00 /* intro */ = { + isa = PBXGroup; + children = ( + 0771C4C94B623FC34BF62983 /* intro.cpp */, + A0090709DE1B155085362C36 /* introcode.cpp */, + 61C679D8B4B332026BD34200 /* introphone.cpp */, + A9FF4818C6775109B3DBFA18 /* introsignup.cpp */, + C34459FA465B57DF4DB80D12 /* introsteps.cpp */, + 152B8D1BCECEB7B0C77E073C /* intro.h */, + 098EA7CE256AAFAE4A17EB77 /* introcode.h */, + EF1AD6A66D0C28A6A15E2C30 /* introphone.h */, + DC23E0B79FF53F35BA8F76A1 /* introsignup.h */, + AD90723EF02EAD016FD49CC9 /* introsteps.h */, + ); + name = intro; + sourceTree = ""; + }; + 73F2E45FDEB381A085D37A49 /* SourceFiles */ = { + isa = PBXGroup; + children = ( + 5271C394C1E7646D117CE67E /* main.cpp */, + 5A5431331A13AA7B07414240 /* stdafx.cpp */, + 06E379415713F34B83F99C35 /* app.cpp */, + C20F9DD8C7B031B8E20D5653 /* application.cpp */, + E466873F01ABA1E55E914489 /* dialogswidget.cpp */, + 710C982FC773400941B3AFBC /* dropdown.cpp */, + 9B36BB8C5B8CA7B07F3F35F0 /* fileuploader.cpp */, + 26B83A58EE268598E703875D /* history.cpp */, + A83D2C19F756D3371E5999A8 /* historywidget.cpp */, + AF5776B0652744978B7DF6D3 /* langloaderplain.cpp */, + 5A9B4C6C59856143F3D0DE53 /* layerwidget.cpp */, + CF32DF59C7823E4F3397EF3C /* profilewidget.cpp */, + 5A7F88F9C7F08D3DDE6EEF6B /* localimageloader.cpp */, + 974DB34EEB8F83B91614C0B0 /* logs.cpp */, + 047DAFB0A7DE92C63033A43C /* mainwidget.cpp */, + 8A28F7789408AA839F48A5F2 /* settings.cpp */, + 8CCCACE96535180FEB557712 /* settingswidget.cpp */, + 0B2F770F53FBB0DBF738D89B /* supporttl.cpp */, + 6B90F69947805586A6FAE80E /* sysbuttons.cpp */, + 2BB2A1BB8DB0993F78F4E3C7 /* title.cpp */, + 7D075A915E8739C1B6BC5F43 /* types.cpp */, + CA56ACFB53D87637192CC9B2 /* window.cpp */, + F4EECA1187A744AEF5165243 /* pspecific_mac.cpp */, + 73737DC91E390C4AB18FB595 /* pspecific_mac_p.mm */, + 1A6AA22F4A758C4B5F5138FB /* mtproto */, + 579DA7AEF5751DF4988869A0 /* gui */, + ADC8DBF4C6F26E14C77F68B4 /* boxes */, + 5E35A03E5F2C51353EBCBF00 /* intro */, + 6011DDB120E1B2D4803E129A /* stdafx.h */, + C19DF71B273A4843553518F2 /* app.h */, + 09FD01F2BD652EB838A296D8 /* application.h */, + 24F7D3E789E91B10E422C116 /* config.h */, + 206B4F5CBD5354BCE19FF32F /* countries.h */, + 55B4A93DD455EED91C899A8E /* dialogswidget.h */, + 1A4C47331E186344291B8178 /* dropdown.h */, + 8A9D926C08392F7A9BC83B0C /* fileuploader.h */, + CF1690B68F3B278E78823DB9 /* history.h */, + C63C6D083EBEB13A60256DF3 /* historywidget.h */, + 25CA12A22B83B0B038C5B5DE /* langloaderplain.h */, + 6C86B6E6AB1857B735B720D6 /* layerwidget.h */, + 220B97F8F62C720E6059A64B /* profilewidget.h */, + AD0C395D671BC024083A5FC7 /* localimageloader.h */, + 0CAA815FFFEDCD84808E11F5 /* logs.h */, + FE8FD20832B4C226E345CFBA /* mainwidget.h */, + 2EA58EF6CDF368B0132BAEB9 /* settings.h */, + F80095A026AF9453E9C2B8BD /* settingswidget.h */, + C913E6A1001E07EE7C13CE93 /* style.h */, + 42FA90460B1A91C414157EAC /* supporttl.h */, + 3BE70E2A82DC2BF402165ED5 /* sysbuttons.h */, + 4D504A849F15EB58E53A4E5F /* title.h */, + 1DC02F674A7192FF8BE391A7 /* types.h */, + 301BB513F2F5D447B3BF22DF /* window.h */, + 83728F60A64483E0AA933D76 /* pspecific.h */, + CE0D5EFE401BF9815FACE579 /* pspecific_mac.h */, + 07C3AF27194336B90016CFF1 /* pspecific_mac_p.h */, + ); + name = SourceFiles; + sourceTree = ""; + }; + 74B182DB50CB5611B5C1C297 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 36BDA5D01BED543A92886669 /* Telegram.pro */, + 6E67D23B15FC4B628DB2E0B2 /* /usr/local/Qt-5.3.0/mkspecs/qdevice.pri */, + 669FB007C4A3D58424D85EC8 /* /usr/local/Qt-5.3.0/mkspecs/common/shell-unix.conf */, + 0ABCEA8D0DD45589040B0AF2 /* /usr/local/Qt-5.3.0/mkspecs/common/unix.conf */, + EBD39B69F368CEEAC360A16D /* /usr/local/Qt-5.3.0/mkspecs/common/mac.conf */, + 817A0F5A41B553A6DE67FDEB /* /usr/local/Qt-5.3.0/mkspecs/common/macx.conf */, + 45B95DB3B70B47A910FC847B /* /usr/local/Qt-5.3.0/mkspecs/common/gcc-base.conf */, + A9E30FA27827990C5F182223 /* /usr/local/Qt-5.3.0/mkspecs/common/gcc-base-mac.conf */, + 8C5164D4E37556D40C5E6AA2 /* /usr/local/Qt-5.3.0/mkspecs/common/clang.conf */, + F33BE16353DD1557A9AB3558 /* /usr/local/Qt-5.3.0/mkspecs/common/clang-mac.conf */, + D4DE537C1FBBD48BD989FAD1 /* /usr/local/Qt-5.3.0/mkspecs/qconfig.pri */, + ACC8A73268E5D9AF64E97AF4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth.pri */, + 2E48BB382B895A5ACD79AF9F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bluetooth_private.pri */, + BD4D97801B547471B37A4CDC /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_bootstrap_private.pri */, + CF86CD5BB01B9011E6B6FD3E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_clucene_private.pri */, + 77FF486B1F9BCD55A8A3F35D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent.pri */, + 7D28E9003CE64D8A7F2E292E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_concurrent_private.pri */, + 7ECCC1F9442988B4F2707CC1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core.pri */, + 5F781C7FD8422D359EA1D2FE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_core_private.pri */, + 7A94C7168B3FCBE5F04A013B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative.pri */, + 89863CCAF1D29037AE95755D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_declarative_private.pri */, + F2F823087EA182CCBD5748B8 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer.pri */, + 7C2F42B222EE88E26A6FED62 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designer_private.pri */, + 69347C39E4D922E94D0860BF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_designercomponents_private.pri */, + 360D4B3ED25D126430DE27D4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio.pri */, + 4C6C71914B1926119120DACD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_enginio_private.pri */, + 23BC8B0FC3279421D41CA268 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui.pri */, + D81E3D9A18202BE8EC3D0E2C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_gui_private.pri */, + FD944B80F033DFE737D401A2 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help.pri */, + D7A0618DE39A427EBF41940E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_help_private.pri */, + A5B17ABEFBA1C2F43443D644 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras.pri */, + 33F165B1DB8CBF182C56FAB5 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_macextras_private.pri */, + D2FE4D909926A0D1656068C4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia.pri */, + E7D67CB158408BB7DEA74764 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimedia_private.pri */, + 28BD0D10214709D95B161E24 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets.pri */, + D1FA7CAB5ACC09D563AE569F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_multimediawidgets_private.pri */, + 293C8DEEE270847AC20E70F9 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network.pri */, + 382E89A91A34F7898C25FD0D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_network_private.pri */, + 8A04A4A3625204D12A1207F6 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc.pri */, + B51B01657BFE9EAEF5590561 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_nfc_private.pri */, + 5CEA7A2DB2136425A88D1254 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl.pri */, + E0F4563EA350EB65112A0EF4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_opengl_private.pri */, + E432DA897A5F027987342E8F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions.pri */, + 5597304BEC94BFB9EAAEBC4B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_openglextensions_private.pri */, + 8F572030CE9AB8CC5F672201 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_platformsupport_private.pri */, + F7ADBF552F6B9A5982915164 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning.pri */, + E66B9EC81C285CA9A7FB6A2E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_positioning_private.pri */, + 6C08BFC27C4C303A3A5181DB /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport.pri */, + D0CDC87DAFDA7F18A7AF450F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_printsupport_private.pri */, + B382B645B34234E451AE5D94 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml.pri */, + 6102C69805B6398AF6FA5BEB /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qml_private.pri */, + 4FB6657DA22BC68B819B64B3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmldevtools_private.pri */, + DF8188E30892A4654B984221 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest.pri */, + ABA9AB4619F09DCFD2D4A27F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qmltest_private.pri */, + 5B22E9E4EE9AAE42ABC24AB3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri */, + 16DD53E17C65AC8B450CC6C3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick.pri */, + 8C31D89BDFCDF466DAED19A0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quick_private.pri */, + 82E7DCFD95559532D8FC6CDD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickparticles_private.pri */, + D948D4D8F949D45158F8DE35 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets.pri */, + B2246267D4C0D789259A86B0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_quickwidgets_private.pri */, + CFCB992BEC24B71BFB8A2F30 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script.pri */, + C505A18319B9B63C63877858 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_script_private.pri */, + CE829DD126DD2B97E8D70A7A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools.pri */, + A59F74CD76FDC2B4B9910E18 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_scripttools_private.pri */, + 85B6936EDBE61D9BB8F8B33B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors.pri */, + BDC9ECADEE40D11E3C2EA93F /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sensors_private.pri */, + BFF0C38FB0EC140C5F0304AE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport.pri */, + 311004331A04F3D69C98643C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_serialport_private.pri */, + 7DE30A90667C03C4F91A2A91 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql.pri */, + 075EB50EB07CF69FD62FB8DF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_sql_private.pri */, + ADFC79902C14A612AE93A89A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg.pri */, + 8DDE1D26B3206CDB8B57FABE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_svg_private.pri */, + DB0A26DDC377B2004F61BFE3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib.pri */, + 8849E60AEC7DB97A475C17EA /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_testlib_private.pri */, + E50FA73B8A23BC179A642B27 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools.pri */, + B518DA4EE7376002AFC71FD5 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_uitools_private.pri */, + 8F97C9CAE38CA3AFAC0B3953 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets.pri */, + 87EEF25EE25CF21572D1438C /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_websockets_private.pri */, + A022AF919D1977534CA66BB8 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets.pri */, + 8E9136256AFFBA6EF048AA55 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_widgets_private.pri */, + AA73DC3C2901E2979FE8AD5B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml.pri */, + E37365B4489B4918BEBB707D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xml_private.pri */, + 2E6D9B1D2743D24E31B0B284 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns.pri */, + F9BEAA743A908603687DA204 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_lib_xmlpatterns_private.pri */, + D5141F795670589C8CC41CBC /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_cocoaprintersupport.pri */, + 1FAE75C970AA73F2DEDDB508 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfcamera.pri */, + F4EB01857048DCFCFFAAC4D0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qavfmediaplayer.pri */, + AFD721AA33A2F785E77B1698 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcocoa.pri */, + EA5D4FF9DE4AC4215D7DCE0D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qcorewlanbearer.pri */, + 111BBEE3D1432C3B517FD539 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdds.pri */, + 3685604BDB64DD6E92169B73 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qdeclarativeview.pri */, + 2440CD1D4CEF80443BCA1B8B /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qgenericbearer.pri */, + EB1F99FD112917157F3C3F6E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qicns.pri */, + C4295BE59CCEBCDD16268349 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qico.pri */, + 45DB132B756499D4DF38430E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qjp2.pri */, + B678DA730B4ECE863AD631AE /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qminimal.pri */, + F0A58515945747E36783CC21 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_inspector.pri */, + B8525798C5AA7D7C6D68E1B3 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_qtquick2.pri */, + EB29AC635054C09EFA749AE1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp.pri */, + 3F08D430CEC8D2117735CCB4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmldbg_tcp_qtdeclarative.pri */, + 946BEA667170DC1A7A8F9DB0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qmng.pri */, + CCF75CFFB857487FB18F99F9 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qoffscreen.pri */, + 9A0BDF67E013BB4FFB8685B0 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qqt7engine.pri */, + B064BF3B496A7BF7A449CA1E /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsqlite.pri */, + F83F87F8A60C9DF666911D42 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvg.pri */, + CFFBE05DB004895080314289 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qsvgicon.pri */, + 247D8DF3B1DDB665B80BBA25 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblequick.pri */, + 87A4C1983FD641360BF80A02 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaccessiblewidgets.pri */, + 24B6929EE3952310F2DAECB1 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtaudio_coreaudio.pri */, + 060A694B42A4555240009936 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtga.pri */, + BD22EFEFCC02644B1883CE19 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtiff.pri */, + B8C1F6C965A7A14FBA8D4518 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmedia_audioengine.pri */, + 74C1C232DFAA71028A0412CA /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtmultimedia_m3u.pri */, + C84546C18DCBB04166195DCF /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtposition_positionpoll.pri */, + AB1C02DDBD8E88DD9A9AFDDD /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_plugin.pri */, + 8B4BB4E74F8A4442EF563D7D /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensorgestures_shakeplugin.pri */, + 892D36BEF797BA4AF48D378A /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_dummy.pri */, + A4D8AC60897F435C1C3B9D02 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qtsensors_generic.pri */, + 346287C9E754E7C458153F03 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwbmp.pri */, + B26239063A068F800A2C95F4 /* /usr/local/Qt-5.3.0/mkspecs/modules/qt_plugin_qwebp.pri */, + 63E722139886C87BC82DBDF5 /* /usr/local/Qt-5.3.0/mkspecs/macx-clang/qmake.conf */, + 85061B1DA49D125991117950 /* /usr/local/Qt-5.3.0/mkspecs/macx-xcode/qmake.conf */, + AB745978DF0F41D1801ABDA6 /* .qmake.stash */, + 370997172D3BAEED157B8E70 /* SourceFiles */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 801973D3334D0FCA849CF485 /* Debug */ = { + isa = PBXGroup; + children = ( + E181C525E21A16F2D4396CA7 /* moc_application.cpp */, + 3B3ED09AB00290D78CF1181B /* moc_dialogswidget.cpp */, + AC9B5F6FB4B984C8D76F7AE2 /* moc_dropdown.cpp */, + 3D54A9F3266BB8739520E3FB /* moc_fileuploader.cpp */, + 2C99425D7670941EAF07B453 /* moc_historywidget.cpp */, + 1FE45A67215BEA2434F588E8 /* moc_layerwidget.cpp */, + 48003469151B9DDE82E851FB /* moc_profilewidget.cpp */, + 1D7899ACAA9F973CADFA34C1 /* moc_localimageloader.cpp */, + 3A220FD1AE5AD9FE3DC073A4 /* moc_mainwidget.cpp */, + 93AFE74928551FC3D7E8390B /* moc_settingswidget.cpp */, + B88236FC554B694F618D848C /* moc_sysbuttons.cpp */, + 1080B6D395843B8F76A2E45E /* moc_title.cpp */, + 6B46A0EE3C3B9D3B5A24946E /* moc_window.cpp */, + 924D4939FD169BB4B8AEB1C9 /* moc_mtp.cpp */, + B714EA71A09A832FAA846A0A /* moc_mtpConnection.cpp */, + 2C540BAEABD7F9B5FA11008E /* moc_mtpDC.cpp */, + 5591A965D1DC024FBDB40151 /* moc_mtpFileLoader.cpp */, + 63AF8520023B4EA40306CB03 /* moc_mtpSession.cpp */, + A1479F94376F9732B57C69DB /* moc_animation.cpp */, + 46292F489228B60010794CE4 /* moc_button.cpp */, + A1F48DF3E5D0D7C741C1EAC4 /* moc_countrycodeinput.cpp */, + 9D9F4744B2F9FF22569D4535 /* moc_countryinput.cpp */, + C9FFCCE4FCB845744636795F /* moc_flatbutton.cpp */, + 58E05D0B8B104D83F43F9859 /* moc_flatcheckbox.cpp */, + 1E5EEB5782B6357057356F9E /* moc_flatinput.cpp */, + 2181F5E34DE0A4B2F811E2E2 /* moc_flatlabel.cpp */, + D12A6BD8EE80B8B308E481AD /* moc_flattextarea.cpp */, + B8100EAB0521FC7A937D2E4F /* moc_phoneinput.cpp */, + 8918F4B71ED5FC138AFD3F70 /* moc_scrollarea.cpp */, + 55A654A2EE8554FF062742B8 /* moc_twidget.cpp */, + 9A69B711DE4B9C89BA803750 /* moc_aboutbox.cpp */, + 81780025807318AEA3B8A6FF /* moc_addcontactbox.cpp */, + 8C7AEF8DED4F7B6E6F89F330 /* moc_addparticipantbox.cpp */, + CE7FFE194127BD789A2C877A /* moc_confirmbox.cpp */, + FEC58F9D8A0963E5A9D4BE6F /* moc_connectionbox.cpp */, + 26083D8E535AFF927591E1A5 /* moc_contactsbox.cpp */, + 6532A0DC7EFE446967682E83 /* moc_downloadpathbox.cpp */, + 0C0DC15EB416789673526AA5 /* moc_emojibox.cpp */, + 69FE16874104731CE2A66E0D /* moc_newgroupbox.cpp */, + AF61D864B8C444ADD4E1B391 /* moc_photocropbox.cpp */, + 9E0704DE8650D7952DC6B7AE /* moc_photosendbox.cpp */, + A37C7E516201B0264A4CDA38 /* moc_intro.cpp */, + 8B98A212C068D6CC7CE73CAA /* moc_introcode.cpp */, + 1B4A65B84270FF2FED008EB6 /* moc_introphone.cpp */, + 58A7114F60E7D09E73283983 /* moc_introsignup.cpp */, + 74772222DA764BE4623EAC5D /* moc_pspecific_mac.cpp */, + ); + name = Debug; + sourceTree = ""; + }; + 87DF60DE337FB58864343E39 /* Resources */ = { + isa = PBXGroup; + children = ( + 07C3AF2819433ABF0016CFF1 /* lang.txt */, + 07C3AF2919433ABF0016CFF1 /* style_classes.txt */, + 07C3AF2A19433ABF0016CFF1 /* style.txt */, + 07C3AF24194335ED0016CFF1 /* Images.xcassets */, + 35C84855EE9B0EA8AE0FF729 /* SourceFiles */, + ); + name = Resources; + sourceTree = ""; + }; + ADC8DBF4C6F26E14C77F68B4 /* boxes */ = { + isa = PBXGroup; + children = ( + C194EDD00F76216057D48A5C /* aboutbox.cpp */, + 7CA6945B22800A0F30B75DA5 /* addcontactbox.cpp */, + 40E88FBA282991C8CBDFE94D /* addparticipantbox.cpp */, + 6610564B876E47D289A596DB /* confirmbox.cpp */, + 51355181C0E6689B0B764543 /* connectionbox.cpp */, + 8C800AAC9549E6E9E7046BED /* contactsbox.cpp */, + 8DF456E9A416E4C3C2D6946C /* downloadpathbox.cpp */, + 0ECF1EB9BF3786A16731F685 /* emojibox.cpp */, + 5FCB7CBBAF4AE338D4B05C76 /* newgroupbox.cpp */, + E908A6C86F93FA27DF70866C /* photocropbox.cpp */, + D1C9C77F1318F5A55C9BF289 /* photosendbox.cpp */, + 143405635D04698F421A12EA /* aboutbox.h */, + 7CDE9D7CB2C729BC3612372B /* addcontactbox.h */, + 245F3B3B43CC450EBA6650B5 /* addparticipantbox.h */, + 1DEFC0760BB9340529F582F7 /* confirmbox.h */, + 8EB83A4D34226609E79A613A /* connectionbox.h */, + 120EBCD9A37DB9A36BFE58C0 /* contactsbox.h */, + B97D4DB97FE881648644211A /* downloadpathbox.h */, + 032C1BF3E727B450A4851D48 /* emojibox.h */, + FF66B5DCBB004CD8703F0207 /* newgroupbox.h */, + 14437BFDCD58FF1742EF1B35 /* photocropbox.h */, + 0BDE09020E45EFA57DCB2E25 /* photosendbox.h */, + ); + name = boxes; + sourceTree = ""; + }; + AF39DD055C3EF8226FBE929D /* Frameworks */ = { + isa = PBXGroup; + children = ( + AEA456A2F75ED9F5CDA7BCBE /* Cocoa.framework */, + 4AF15B5A0A43EB62D6DAF211 /* libexif.a */, + DFD7912080BC557230093752 /* ApplicationServices.framework */, + 9742F24EE18EA44D52824F1E /* CoreServices.framework */, + 4D765E1B1EA6C757220C63E7 /* CoreFoundation.framework */, + FCC237CA5AD60B9BA4447615 /* Foundation.framework */, + D4B32C2222F82AC56BADEB21 /* OpenGL.framework */, + 8D9815BDB5BD9F90D2BC05C5 /* AGL.framework */, + 205259EEEE2BADA5E64741E3 /* Security.framework */, + FF5BDAB0076F3391B219EA52 /* SystemConfiguration.framework */, + 9DFF62A901D70814B8A323D4 /* Carbon.framework */, + C52030E4534894A117CA66CA /* qavfcamera */, + 3C44131FDCFEF4396B9EA2BA /* AudioToolbox.framework */, + BEF9DFDA6822604126A7E233 /* CoreAudio.framework */, + 7EC00404ACD5AB0E97726B0E /* QuartzCore.framework */, + 21F907AB8D19BD779147A085 /* AVFoundation.framework */, + 547CCADBD1CC5050167EF948 /* CoreMedia.framework */, + 723F90793B2C195E2CCB2233 /* AppKit.framework */, + 186D09F4CB713AD4B8BDD260 /* AudioUnit.framework */, + EDD43CF4FA85D97A1140E973 /* qavfmediaplayer */, + 1C21DCD421D7B7E0462F1121 /* qqt7engine */, + 2AC1C71FA3CD6FD909ED0276 /* QTKit.framework */, + 833B45FEF5DC4AD0E8ADA64A /* Qt5MultimediaWidgets */, + AA5379CB06E908AC80BE7B82 /* Qt5OpenGL */, + A490341D0650372A5757B367 /* qtmedia_audioengine */, + 3BBB805F6180E363BF89151A /* qtaudio_coreaudio */, + 4EC011DBE92DD1FD208D94D2 /* qtmultimedia_m3u */, + 112159B026FDEF9CD4E24175 /* Qt5Multimedia */, + A7782E2B07CB2D1D14F431B0 /* qtaccessiblewidgets */, + EE03BC5CA4628A6D6BEB0122 /* qcorewlanbearer */, + F26998DF735BCE5F975508ED /* CoreWLAN.framework */, + 9A55B8F7C143D66AD9EAE304 /* qgenericbearer */, + 6700DD555BF1C0FC338FB959 /* Qt5Network */, + D53D8E6A188E05078A114294 /* qcocoa */, + A1A67BEAA744704B29168D39 /* IOKit.framework */, + DBF506D10449BFABD45B82DA /* Qt5PrintSupport */, + E7B2F248E3F7970788F35BF5 /* Qt5PlatformSupport */, + 4689C06178B60B84E7F3A3B7 /* Qt5Widgets */, + D3D1BE0BEA3AEE0551AD39AC /* qdds */, + 31120EDB269DFF13E1D49847 /* qicns */, + 8F500B5166907B6D9A7C3E3D /* qico */, + F0681BC551FC8A2B132FC646 /* qjp2 */, + 83D37373949868693FB7816D /* qmng */, + DCEFD9167C239650120B0145 /* qtga */, + F2453BA07315EB9F34F1CD57 /* qtiff */, + 8CF51323544B886B8F4A2232 /* qwbmp */, + ADC6308023253CEA51F86E21 /* qwebp */, + 04391BE7A8B9D811E255100A /* Qt5Gui */, + D6193B79CECC9DD0142D1200 /* qtharfbuzzng */, + 5A80A1907B6CFFB524C1E57D /* Qt5Core */, + ); + name = Frameworks; + sourceTree = ""; + }; + D0B536A85E53302E4F66CE23 /* GeneratedFiles */ = { + isa = PBXGroup; + children = ( + D6FF6676816C4E374D374060 /* qrc_telegram.cpp */, + 801973D3334D0FCA849CF485 /* Debug */, + ); + name = GeneratedFiles; + sourceTree = ""; + }; + E8C543AB96796ECAA2E65C57 /* Telegram */ = { + isa = PBXGroup; + children = ( + 2EB56BE3C2D93CDAB0C52E67 /* Sources */, + 25B08E2869634E9BCBA333A2 /* Generated Sources */, + 74B182DB50CB5611B5C1C297 /* Supporting Files */, + 87DF60DE337FB58864343E39 /* Resources */, + AF39DD055C3EF8226FBE929D /* Frameworks */, + FE0A091FDBFB3E9C31B7A1BD /* Products */, + 07C3AF40194CCC310016CFF1 /* Preprocess copy-Info.plist */, + ); + name = Telegram; + sourceTree = ""; + }; + FE0A091FDBFB3E9C31B7A1BD /* Products */ = { + isa = PBXGroup; + children = ( + 62807F13DBD204D0716143AD /* Telegram.app */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7CCA95B9FCAD34D929431AD6 /* Telegram */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6CC3B5D2136C7CD6A5CF5A59 /* Build configuration list for PBXNativeTarget "Telegram" */; + buildPhases = ( + F7E50F631C51CD5B5DC0BC43 /* Compile Sources */, + D1C883685E82D5676953459A /* Link Binary With Libraries */, + 07C3AF341948FC3B0016CFF1 /* ShellScript */, + 07C3AF25194336160016CFF1 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 69BB0D15D494AAF597C8D2CF /* PBXTargetDependency */, + ); + name = Telegram; + productInstallPath = ../Mac/Debug/; + productName = Telegram; + productReference = 62807F13DBD204D0716143AD /* Telegram.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 6DB9C3763D02B1415CD9D565 /* Project object */ = { + isa = PBXProject; + attributes = { + }; + buildConfigurationList = DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "Telegram" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = E8C543AB96796ECAA2E65C57 /* Telegram */; + productRefGroup = FE0A091FDBFB3E9C31B7A1BD /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 7CCA95B9FCAD34D929431AD6 /* Telegram */, + 07AA07135D01069052F55A12 /* Preprocess */, + 07C3AF39194CCC310016CFF1 /* Meta Compile */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 07C3AF25194336160016CFF1 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 07C3AF26194336250016CFF1 /* Images.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 07C3AF341948FC3B0016CFF1 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "mkdir -p ./../Mac/$CONFIGURATION/Telegram.app/Contents/Resources"; + }; + 07C3AF3A194CCC310016CFF1 /* Meta Style */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Meta Style"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "open ../Mac/DebugStyle/MetaStyle.app --args -classes_in \"../../Telegram/Resources/style_classes.txt\" -classes_out \"../../Telegram/GeneratedFiles/style_classes.h\" -styles_in \"../../Telegram/Resources/style.txt\" -styles_out \"../../Telegram/GeneratedFiles/style_auto.h\" -path_to_sprites \"../../Telegram/SourceFiles/art/\""; + }; + 07C3AF3B194CCC310016CFF1 /* Meta Lang */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Meta Lang"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "open ../Mac/DebugLang/MetaLang.app --args -lang_in \"../../Telegram/Resources/lang.txt\" -lang_out \"../../Telegram/GeneratedFiles/lang\""; + }; + 7EF0942E79C014DCEC8976BC /* Qt Preprocessors */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + name = "Qt Preprocessors"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "make -C . -f Telegram.xcodeproj/qt_preprocess.mak"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + F7E50F631C51CD5B5DC0BC43 /* Compile Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1299DDAE203A7EDFED9F5D6B /* main.cpp in Compile Sources */, + D87463318C8E5211C8C8670A /* stdafx.cpp in Compile Sources */, + 7BEFA1D273AD62772AA33D73 /* app.cpp in Compile Sources */, + 8E26A0653012B8E8C3E865EC /* application.cpp in Compile Sources */, + 02F93BF511880983D3C57B84 /* dialogswidget.cpp in Compile Sources */, + 6EF5A4ECC0EF19EA016EBA3E /* dropdown.cpp in Compile Sources */, + 6E4DB0CBEF415196AFD4149F /* fileuploader.cpp in Compile Sources */, + 700925F3B2C6163D38140CEA /* history.cpp in Compile Sources */, + 1DF53374E3B6A31661548D08 /* historywidget.cpp in Compile Sources */, + 37A3C6C782A0E4BC7B09536B /* langloaderplain.cpp in Compile Sources */, + 19A66ECD6EE2F8356F27D32D /* layerwidget.cpp in Compile Sources */, + 89ADB41E48A3B5E24ABB626C /* profilewidget.cpp in Compile Sources */, + 48D8FC93AA8FF5D184649F49 /* localimageloader.cpp in Compile Sources */, + 113AA97DEE7847C7D2DCFF71 /* logs.cpp in Compile Sources */, + E3194392BD6D0726F75FA72E /* mainwidget.cpp in Compile Sources */, + DF36EA42D67ED39E58CB7DF9 /* settings.cpp in Compile Sources */, + B99CCE43EEFCD3E18F6D16D1 /* settingswidget.cpp in Compile Sources */, + 878DCAF0C5B0DB2EB4EDFD3D /* supporttl.cpp in Compile Sources */, + B8DA82DA1B195A933A0805E7 /* sysbuttons.cpp in Compile Sources */, + 5CE57D44510AB2A11886AB52 /* title.cpp in Compile Sources */, + 4078D5D614EB3ECF7F1848C7 /* types.cpp in Compile Sources */, + 68FFEB7CA30BF0149161B809 /* window.cpp in Compile Sources */, + 0CB7DE9A54CC9BF86FB7B5CA /* mtp.cpp in Compile Sources */, + DF259E9677CC63AF8754032B /* mtpConnection.cpp in Compile Sources */, + B6346B66B0A2228A91D8A5D9 /* mtpDC.cpp in Compile Sources */, + B8CA3E1E11A7E0E7DF9E1CDE /* mtpFileLoader.cpp in Compile Sources */, + 99F0A9B2AFE5ABDCBFC04510 /* mtpRPC.cpp in Compile Sources */, + A297B1E3CE33CC501DFEDB6E /* mtpSession.cpp in Compile Sources */, + D1FC601FC2F9F3E33F3A14E9 /* animation.cpp in Compile Sources */, + 8F65F0D95B1F0CEB859F2FB3 /* boxshadow.cpp in Compile Sources */, + D7EF8F129FCCE9AB3F3F081F /* button.cpp in Compile Sources */, + B3CD52E504409DC1B560024F /* countrycodeinput.cpp in Compile Sources */, + C03447C9A7D9FF73463B8BB5 /* countryinput.cpp in Compile Sources */, + CDB0266A8B7CB20A95266BCD /* emoji_config.cpp in Compile Sources */, + 7C2B2DEE467A4C4679F1C3C9 /* filedialog.cpp in Compile Sources */, + 832C50BFD7D09AF042A51D4F /* flatbutton.cpp in Compile Sources */, + B91D13BCC3963CB9C12D24A4 /* flatcheckbox.cpp in Compile Sources */, + 77DA1217B595B799FB72CDDA /* flatinput.cpp in Compile Sources */, + DE6A34CA3A5561888FA01AF1 /* flatlabel.cpp in Compile Sources */, + 03270F718426CFE84729079E /* flattextarea.cpp in Compile Sources */, + E3D7A5CA24541D5DB69D6606 /* images.cpp in Compile Sources */, + 0A49F3A5DC0680FB31519670 /* phoneinput.cpp in Compile Sources */, + ADE99904299B99EB6135E8D9 /* scrollarea.cpp in Compile Sources */, + 90085DF442550A0845D5AF37 /* style_core.cpp in Compile Sources */, + 3AA6E7264581F82856FB37F7 /* text.cpp in Compile Sources */, + FCE6518C548DF7BC82228A4A /* twidget.cpp in Compile Sources */, + F91C59BECCE70070B06E8385 /* lang.cpp in Compile Sources */, + E9F1CE7F9B18C7C85A50E62D /* style_auto.cpp in Compile Sources */, + EBE29731916DB43BF49FE7A4 /* aboutbox.cpp in Compile Sources */, + 4426AF526AAD86D6F73CE36F /* addcontactbox.cpp in Compile Sources */, + 830CB6F547B8C80A569A0271 /* addparticipantbox.cpp in Compile Sources */, + A0A6B97F7DBEC81004EC9461 /* confirmbox.cpp in Compile Sources */, + 4FEA8F51B7BC7CAC71347A1A /* connectionbox.cpp in Compile Sources */, + 298BFAB73BF182297584F96F /* contactsbox.cpp in Compile Sources */, + BA41D511A9BBCA09365DF88C /* downloadpathbox.cpp in Compile Sources */, + 3ABE4F9B2264F770D944106D /* emojibox.cpp in Compile Sources */, + 7422A321DF80CF9FAC7CB51B /* newgroupbox.cpp in Compile Sources */, + 77B998AC22A13EF3DDEE07AC /* photocropbox.cpp in Compile Sources */, + F278C423357CA99797EA30AB /* photosendbox.cpp in Compile Sources */, + E8D95529CED88F18818C9A8B /* intro.cpp in Compile Sources */, + 9357E7B12AD6D88B157ACA05 /* introcode.cpp in Compile Sources */, + 4BF3F8D0797BC8A0C1FAD13C /* introphone.cpp in Compile Sources */, + 4978DE680549639AE9AA9CA6 /* introsignup.cpp in Compile Sources */, + 8B22E794EFF0EAFF964A3043 /* introsteps.cpp in Compile Sources */, + 74343521EECC740F777DAFE6 /* pspecific_mac.cpp in Compile Sources */, + D67628B07A49239E73C2150B /* telegram_plugin_import.cpp in Compile Sources */, + 26A81090DC8B5BCF7278FDFF /* qrc_telegram.cpp in Compile Sources */, + C1F9D5CA8AF3AD8EBC9D7310 /* moc_application.cpp in Compile Sources */, + D846C6F212B438DC2FD5FF71 /* moc_dialogswidget.cpp in Compile Sources */, + 6C79FBC5CFA36AC3EA6ABBD4 /* moc_dropdown.cpp in Compile Sources */, + 822C2860FBFAF3EAE42C5A3F /* moc_fileuploader.cpp in Compile Sources */, + 352349751855EF76DECA4D60 /* moc_historywidget.cpp in Compile Sources */, + 4B0036C794BEA27AF9419768 /* moc_layerwidget.cpp in Compile Sources */, + C14E6C902F6435B3149ECD64 /* moc_profilewidget.cpp in Compile Sources */, + 98E4F55DB5D8E64AB9F08C83 /* moc_localimageloader.cpp in Compile Sources */, + A24E4B5B683764E07683ECEC /* moc_mainwidget.cpp in Compile Sources */, + A469EC9C4C367E0B773A9BB7 /* moc_settingswidget.cpp in Compile Sources */, + FD2FE0C564A7389A2E609EC7 /* moc_sysbuttons.cpp in Compile Sources */, + E97B3CFAB59B49BACFFC5F7C /* moc_title.cpp in Compile Sources */, + 9A0D5DDC7816FC2538EB6A96 /* moc_window.cpp in Compile Sources */, + 06EABCC49D2EEE4076322BE7 /* moc_mtp.cpp in Compile Sources */, + 8F6F5D7F82036331E8C6DAE6 /* moc_mtpConnection.cpp in Compile Sources */, + B780F9E21269259B90A1F32A /* moc_mtpDC.cpp in Compile Sources */, + 2A500B102B7CE80F3EB6E13E /* moc_mtpFileLoader.cpp in Compile Sources */, + 9A523F51135FD4E2464673A6 /* moc_mtpSession.cpp in Compile Sources */, + C329997D36D34D568CE16C9A /* moc_animation.cpp in Compile Sources */, + B2F5B08BFFBBE7E37D3863BB /* moc_button.cpp in Compile Sources */, + B6F50D5FBFAEB16DD0E5B1C3 /* moc_countrycodeinput.cpp in Compile Sources */, + 6A8BC88AB464B92706EFE6FF /* moc_countryinput.cpp in Compile Sources */, + B0B88EFE444C0DE673389418 /* moc_flatbutton.cpp in Compile Sources */, + 1BD711B4C358EA7D727BF358 /* moc_flatcheckbox.cpp in Compile Sources */, + 565F748438E6CE0148C54AFE /* moc_flatinput.cpp in Compile Sources */, + 8B71D1C7BB9DCEE6511219C2 /* moc_flatlabel.cpp in Compile Sources */, + FCC949FEA178F9F5D7478027 /* moc_flattextarea.cpp in Compile Sources */, + 3A62C3A2FB56A83C9C3A3AFF /* moc_phoneinput.cpp in Compile Sources */, + 3F6EB1F5B98E704960FEA686 /* moc_scrollarea.cpp in Compile Sources */, + 60CB4898955209B665E7B07D /* moc_twidget.cpp in Compile Sources */, + 7062978F12EEA525893A5E6F /* moc_aboutbox.cpp in Compile Sources */, + E8B28580819B882A5964561A /* moc_addcontactbox.cpp in Compile Sources */, + AE148AA3BCDD25B1BBA4E6CA /* moc_addparticipantbox.cpp in Compile Sources */, + D6874C00733283846ACA9AB2 /* moc_confirmbox.cpp in Compile Sources */, + ED2557A57C6782721DC494AF /* moc_connectionbox.cpp in Compile Sources */, + 5FC914F652D1B16FDA8F0634 /* moc_contactsbox.cpp in Compile Sources */, + 49C3C1BF153F7FC078A25CE4 /* moc_downloadpathbox.cpp in Compile Sources */, + 9D294F23E02CFDF22C288382 /* moc_emojibox.cpp in Compile Sources */, + 0F0FC25286E16E5F78962FEE /* moc_newgroupbox.cpp in Compile Sources */, + 9809A3AF1946D51ACB41D716 /* moc_photocropbox.cpp in Compile Sources */, + AC6C131416AEC557C854BA70 /* moc_photosendbox.cpp in Compile Sources */, + 0F7872E39EA570249D420912 /* moc_intro.cpp in Compile Sources */, + 4F27F5F76AA3F78C8CA27339 /* moc_introcode.cpp in Compile Sources */, + 0250AB6761AC71A2E3155EEA /* moc_introphone.cpp in Compile Sources */, + 2EF5D0AC9A18F9FE9B8A1ACA /* moc_introsignup.cpp in Compile Sources */, + 8C4BA0DB55E2C40DE5F5E990 /* moc_pspecific_mac.cpp in Compile Sources */, + FA603B17F803E8D6B55C2F2B /* pspecific_mac_p.mm in Compile Sources */, + ); + name = "Compile Sources"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 07C3AF42194CCC510016CFF1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 07C3AF39194CCC310016CFF1 /* Meta Compile */; + targetProxy = 07C3AF41194CCC510016CFF1 /* PBXContainerItemProxy */; + }; + 69BB0D15D494AAF597C8D2CF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 07AA07135D01069052F55A12 /* Preprocess */; + targetProxy = 07C3AF22194335970016CFF1 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 07C3AF3E194CCC310016CFF1 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 0.5.1; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREFIX_HEADER = ./SourceFiles/stdafx.h; + OBJROOT = ./../Mac/DebugIntermediate; + PRODUCT_NAME = "Preprocess copy"; + QT_LIBRARY_SUFFIX = _debug; + SDKROOT = macosx; + SYMROOT = ./../Mac; + }; + name = Debug; + }; + 07C3AF3F194CCC310016CFF1 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + COPY_PHASE_STRIP = YES; + CURRENT_PROJECT_VERSION = 0.5.1; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_OPTIMIZATION_LEVEL = fast; + GCC_PREFIX_HEADER = ./SourceFiles/stdafx.h; + LLVM_LTO = YES; + OBJROOT = ./../Mac/ReleaseIntermediate; + PRODUCT_NAME = "Preprocess copy"; + QT_LIBRARY_SUFFIX = ""; + SDKROOT = macosx; + SYMROOT = ./../Mac; + }; + name = Release; + }; + 339EE1B2CC4FC24589A0EA95 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = x86_64; + CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang; + COPY_PHASE_STRIP = YES; + DYLIB_COMPATIBILITY_VERSION = 0.5; + DYLIB_CURRENT_VERSION = 0.5.1; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_OPTIMIZATION_LEVEL = fast; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = SourceFiles/stdafx.h; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ( + ./../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui, + ./../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore, + ./../../Libraries/QtStatic/qtbase/include, + ./SourceFiles, + ./GeneratedFiles, + ./../../Libraries/lzma/C, + "./../../Libraries/libexif-0.6.20", + "/usr/local/Qt-5.3.0/include", + "/usr/local/Qt-5.3.0/include/QtMultimedia", + "/usr/local/Qt-5.3.0/include/QtWidgets", + "/usr/local/Qt-5.3.0/include/QtNetwork", + "/usr/local/Qt-5.3.0/include/QtGui", + "/usr/local/Qt-5.3.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.3.0/mkspecs/macx-clang", + ); + INFOPLIST_FILE = Telegram.plist; + INSTALL_DIR = ./../Mac/Release/; + LDPLUSPLUS = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"; + LIBRARY_SEARCH_PATHS = ( + /System/Library/Frameworks/, + "./../../Libraries/libexif-0.6.20/libexif/.libs", + "/usr/local/Qt-5.3.0/lib", + "/usr/local/Qt-5.3.0/plugins/mediaservice", + "/usr/local/Qt-5.3.0/plugins/audio", + "/usr/local/Qt-5.3.0/plugins/playlistformats", + "/usr/local/Qt-5.3.0/plugins/accessible", + "/usr/local/Qt-5.3.0/plugins/bearer", + "/usr/local/Qt-5.3.0/plugins/platforms", + "/usr/local/Qt-5.3.0/plugins/imageformats", + ); + MACOSX_DEPLOYMENT_TARGET = 10.7; + OBJROOT = ./../Mac/DebugIntermediate/; + OTHER_CFLAGS = ( + "-pipe", + "-g", + "-Wall", + "-W", + "-fPIE", + "-D_DEBUG", + "-D_DEBUG", + "-DQT_MULTIMEDIA_LIB", + "-DQT_WIDGETS_LIB", + "-DQT_NETWORK_LIB", + "-DQT_GUI_LIB", + "-DQT_CORE_LIB", + ); + OTHER_CPLUSPLUSFLAGS = ( + "-pipe", + "-g", + "-std=c++11", + "-stdlib=libc++", + "-Wall", + "-W", + "-fPIE", + "-D_DEBUG", + "-D_DEBUG", + "-DQT_MULTIMEDIA_LIB", + "-DQT_WIDGETS_LIB", + "-DQT_NETWORK_LIB", + "-DQT_GUI_LIB", + "-DQT_CORE_LIB", + ); + OTHER_LDFLAGS = ( + "-headerpad_max_install_names", + "-stdlib=libc++", + "-lcrypto", + "-lssl", + "-L/usr/local/Qt-5.3.0/lib", + "-L/usr/local/Qt-5.3.0/plugins/mediaservice", + "-L/usr/local/Qt-5.3.0/plugins/audio", + "-L/usr/local/Qt-5.3.0/plugins/playlistformats", + "-L/usr/local/Qt-5.3.0/plugins/accessible", + "-L/usr/local/Qt-5.3.0/plugins/bearer", + "-L/usr/local/Qt-5.3.0/plugins/platforms", + "-lcups", + "-L/usr/local/Qt-5.3.0/plugins/imageformats", + "-lz", + "-lm", + ); + PRODUCT_NAME = Telegram; + QT_LIBRARY_SUFFIX = ""; + SDKROOT = macosx; + SYMROOT = ./; + }; + name = Release; + }; + 3AA6C32AC930069E80220CF1 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = x86_64; + CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + DYLIB_COMPATIBILITY_VERSION = 0.5; + DYLIB_CURRENT_VERSION = 0.5.1; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = SourceFiles/stdafx.h; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + HEADER_SEARCH_PATHS = ( + ./../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui, + ./../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore, + ./../../Libraries/QtStatic/qtbase/include, + ./SourceFiles, + ./GeneratedFiles, + ./../../Libraries/lzma/C, + "./../../Libraries/libexif-0.6.20", + "/usr/local/Qt-5.3.0/include", + "/usr/local/Qt-5.3.0/include/QtMultimedia", + "/usr/local/Qt-5.3.0/include/QtWidgets", + "/usr/local/Qt-5.3.0/include/QtNetwork", + "/usr/local/Qt-5.3.0/include/QtGui", + "/usr/local/Qt-5.3.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.3.0/mkspecs/macx-clang", + ); + INFOPLIST_FILE = Telegram.plist; + INSTALL_DIR = ./../Mac/Debug/; + LDPLUSPLUS = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"; + LIBRARY_SEARCH_PATHS = ( + /System/Library/Frameworks/, + "./../../Libraries/libexif-0.6.20/libexif/.libs", + "/usr/local/Qt-5.3.0/lib", + "/usr/local/Qt-5.3.0/plugins/mediaservice", + "/usr/local/Qt-5.3.0/plugins/audio", + "/usr/local/Qt-5.3.0/plugins/playlistformats", + "/usr/local/Qt-5.3.0/plugins/accessible", + "/usr/local/Qt-5.3.0/plugins/bearer", + "/usr/local/Qt-5.3.0/plugins/platforms", + "/usr/local/Qt-5.3.0/plugins/imageformats", + ); + MACOSX_DEPLOYMENT_TARGET = 10.7; + OBJROOT = ./../Mac/DebugIntermediate/; + OTHER_CFLAGS = ( + "-pipe", + "-g", + "-Wall", + "-W", + "-fPIE", + "-D_DEBUG", + "-D_DEBUG", + "-DQT_MULTIMEDIA_LIB", + "-DQT_WIDGETS_LIB", + "-DQT_NETWORK_LIB", + "-DQT_GUI_LIB", + "-DQT_CORE_LIB", + ); + OTHER_CPLUSPLUSFLAGS = ( + "-pipe", + "-g", + "-std=c++11", + "-stdlib=libc++", + "-Wall", + "-W", + "-fPIE", + "-D_DEBUG", + "-D_DEBUG", + "-DQT_MULTIMEDIA_LIB", + "-DQT_WIDGETS_LIB", + "-DQT_NETWORK_LIB", + "-DQT_GUI_LIB", + "-DQT_CORE_LIB", + ); + OTHER_LDFLAGS = ( + "-headerpad_max_install_names", + "-stdlib=libc++", + "-lcrypto", + "-lssl", + "-L/usr/local/Qt-5.3.0/lib", + "-L/usr/local/Qt-5.3.0/plugins/mediaservice", + "-L/usr/local/Qt-5.3.0/plugins/audio", + "-L/usr/local/Qt-5.3.0/plugins/playlistformats", + "-L/usr/local/Qt-5.3.0/plugins/accessible", + "-L/usr/local/Qt-5.3.0/plugins/bearer", + "-L/usr/local/Qt-5.3.0/plugins/platforms", + "-lcups", + "-L/usr/local/Qt-5.3.0/plugins/imageformats", + "-lz", + "-lm", + ); + PRODUCT_NAME = Telegram; + QT_LIBRARY_SUFFIX = _debug; + SDKROOT = macosx; + SYMROOT = ./; + }; + name = Debug; + }; + 6666AA5E688052234F6758D8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + COPY_PHASE_STRIP = YES; + CURRENT_PROJECT_VERSION = 0.5.1; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_OPTIMIZATION_LEVEL = fast; + GCC_PREFIX_HEADER = ./SourceFiles/stdafx.h; + LLVM_LTO = YES; + OBJROOT = ./../Mac/ReleaseIntermediate; + PRODUCT_NAME = Telegram; + QT_LIBRARY_SUFFIX = ""; + SDKROOT = macosx; + SYMROOT = ./../Mac; + }; + name = Release; + }; + 77418F46922677BB04ED38DD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 0.5.1; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREFIX_HEADER = ./SourceFiles/stdafx.h; + OBJROOT = ./../Mac/DebugIntermediate; + PRODUCT_NAME = Telegram; + QT_LIBRARY_SUFFIX = _debug; + SDKROOT = macosx; + SYMROOT = ./../Mac; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 07C3AF3D194CCC310016CFF1 /* Build configuration list for PBXAggregateTarget "Meta Compile" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 07C3AF3E194CCC310016CFF1 /* Debug */, + 07C3AF3F194CCC310016CFF1 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 6CC3B5D2136C7CD6A5CF5A59 /* Build configuration list for PBXNativeTarget "Telegram" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 77418F46922677BB04ED38DD /* Debug */, + 6666AA5E688052234F6758D8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DAC4C1AA5EDEA1C85E9CA5E6 /* Build configuration list for PBXProject "Telegram" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3AA6C32AC930069E80220CF1 /* Debug */, + 339EE1B2CC4FC24589A0EA95 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = 6DB9C3763D02B1415CD9D565 /* Project object */; +} diff --git a/Telegram/Telegram.xcodeproj/qt_preprocess.mak b/Telegram/Telegram.xcodeproj/qt_preprocess.mak new file mode 100644 index 000000000..aebaafdaf --- /dev/null +++ b/Telegram/Telegram.xcodeproj/qt_preprocess.mak @@ -0,0 +1,584 @@ +############################################################################# +# Makefile for building: ../Mac/Debug/Telegram.app/Contents/MacOS/Telegram +# Generated by qmake (3.0) (Qt 5.3.0) +# Project: Telegram.pro +# Template: app +# Command: /usr/local/Qt-5.3.0/bin/qmake -spec macx-xcode -o Telegram.xcodeproj/project.pbxproj Telegram.pro +############################################################################# + +MAKEFILE = project.pbxproj + +MOC = /usr/local/Qt-5.3.0/bin/moc +UIC = /usr/local/Qt-5.3.0/bin/uic +LEX = flex +LEXFLAGS = +YACC = yacc +YACCFLAGS = -d +DEFINES = -D_DEBUG -D_DEBUG -DQT_MULTIMEDIA_LIB -DQT_WIDGETS_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB +INCPATH = -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I../../Libraries/QtStatic/qtbase/include/QtGui/5.3.0/QtGui -I../../Libraries/QtStatic/qtbase/include/QtCore/5.3.0/QtCore -I../../Libraries/QtStatic/qtbase/include -ISourceFiles -IGeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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 = +PARSERS = +preprocess: $(PARSERS) compilers +clean preprocess_clean: parser_clean compiler_clean + +parser_clean: +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all + +check: first + +compilers: GeneratedFiles/qrc_telegram.cpp GeneratedFiles/Debug/moc_application.cpp GeneratedFiles/Debug/moc_dialogswidget.cpp GeneratedFiles/Debug/moc_dropdown.cpp\ + GeneratedFiles/Debug/moc_fileuploader.cpp GeneratedFiles/Debug/moc_historywidget.cpp GeneratedFiles/Debug/moc_layerwidget.cpp\ + GeneratedFiles/Debug/moc_profilewidget.cpp GeneratedFiles/Debug/moc_localimageloader.cpp GeneratedFiles/Debug/moc_mainwidget.cpp\ + GeneratedFiles/Debug/moc_settingswidget.cpp GeneratedFiles/Debug/moc_sysbuttons.cpp GeneratedFiles/Debug/moc_title.cpp\ + GeneratedFiles/Debug/moc_window.cpp GeneratedFiles/Debug/moc_mtp.cpp GeneratedFiles/Debug/moc_mtpConnection.cpp\ + GeneratedFiles/Debug/moc_mtpDC.cpp GeneratedFiles/Debug/moc_mtpFileLoader.cpp GeneratedFiles/Debug/moc_mtpSession.cpp\ + GeneratedFiles/Debug/moc_animation.cpp GeneratedFiles/Debug/moc_button.cpp GeneratedFiles/Debug/moc_countrycodeinput.cpp\ + GeneratedFiles/Debug/moc_countryinput.cpp GeneratedFiles/Debug/moc_flatbutton.cpp GeneratedFiles/Debug/moc_flatcheckbox.cpp\ + GeneratedFiles/Debug/moc_flatinput.cpp GeneratedFiles/Debug/moc_flatlabel.cpp GeneratedFiles/Debug/moc_flattextarea.cpp\ + GeneratedFiles/Debug/moc_phoneinput.cpp GeneratedFiles/Debug/moc_scrollarea.cpp GeneratedFiles/Debug/moc_twidget.cpp\ + GeneratedFiles/Debug/moc_aboutbox.cpp GeneratedFiles/Debug/moc_addcontactbox.cpp GeneratedFiles/Debug/moc_addparticipantbox.cpp\ + GeneratedFiles/Debug/moc_confirmbox.cpp GeneratedFiles/Debug/moc_connectionbox.cpp GeneratedFiles/Debug/moc_contactsbox.cpp\ + GeneratedFiles/Debug/moc_downloadpathbox.cpp GeneratedFiles/Debug/moc_emojibox.cpp GeneratedFiles/Debug/moc_newgroupbox.cpp\ + GeneratedFiles/Debug/moc_photocropbox.cpp GeneratedFiles/Debug/moc_photosendbox.cpp GeneratedFiles/Debug/moc_intro.cpp\ + GeneratedFiles/Debug/moc_introcode.cpp GeneratedFiles/Debug/moc_introphone.cpp GeneratedFiles/Debug/moc_introsignup.cpp\ + GeneratedFiles/Debug/moc_pspecific_mac.cpp +compiler_objective_c_make_all: +compiler_objective_c_clean: +compiler_no_pch_compiler_make_all: +compiler_no_pch_compiler_clean: +compiler_rcc_make_all: GeneratedFiles/qrc_telegram.cpp +compiler_rcc_clean: + -$(DEL_FILE) GeneratedFiles/qrc_telegram.cpp +GeneratedFiles/qrc_telegram.cpp: SourceFiles/telegram.qrc \ + SourceFiles/art/emoji.png \ + SourceFiles/art/blank.gif \ + SourceFiles/art/bg.png \ + SourceFiles/art/sprite_150x.png \ + SourceFiles/art/sprite.png \ + SourceFiles/art/iconround256.png \ + SourceFiles/art/emoji_150x.png \ + SourceFiles/art/bg_150x.png \ + SourceFiles/art/sprite_200x.png \ + SourceFiles/art/newmsg.wav \ + SourceFiles/art/ThoolikaTrditionalUnicode.ttf \ + SourceFiles/art/sprite_125x.png \ + SourceFiles/art/segoe_wp_semibold.ttf \ + SourceFiles/art/emoji_200x.png \ + SourceFiles/art/bg_200x.png \ + SourceFiles/art/emoji_125x.png \ + SourceFiles/art/segoe_ui.ttf \ + SourceFiles/art/bg_125x.png \ + SourceFiles/art/segoe_ui_semibold.ttf \ + SourceFiles/qmime/freedesktop.org.xml \ + SourceFiles/art/usercolor4.png \ + SourceFiles/art/chatcolor1.png \ + SourceFiles/art/usercolor8.png \ + SourceFiles/art/usercolor3.png \ + SourceFiles/art/usercolor7.png \ + SourceFiles/art/chatcolor4.png \ + SourceFiles/art/usercolor2.png \ + SourceFiles/art/usercolor6.png \ + SourceFiles/art/chatcolor3.png \ + SourceFiles/art/usercolor1.png \ + SourceFiles/art/usercolor5.png \ + SourceFiles/art/chatcolor2.png + /usr/local/Qt-5.3.0/bin/rcc -name telegram SourceFiles/telegram.qrc -o GeneratedFiles/qrc_telegram.cpp + +compiler_moc_header_make_all: GeneratedFiles/Debug/moc_application.cpp GeneratedFiles/Debug/moc_dialogswidget.cpp GeneratedFiles/Debug/moc_dropdown.cpp GeneratedFiles/Debug/moc_fileuploader.cpp GeneratedFiles/Debug/moc_historywidget.cpp GeneratedFiles/Debug/moc_layerwidget.cpp GeneratedFiles/Debug/moc_profilewidget.cpp GeneratedFiles/Debug/moc_localimageloader.cpp GeneratedFiles/Debug/moc_mainwidget.cpp GeneratedFiles/Debug/moc_settingswidget.cpp GeneratedFiles/Debug/moc_sysbuttons.cpp GeneratedFiles/Debug/moc_title.cpp GeneratedFiles/Debug/moc_window.cpp GeneratedFiles/Debug/moc_mtp.cpp GeneratedFiles/Debug/moc_mtpConnection.cpp GeneratedFiles/Debug/moc_mtpDC.cpp GeneratedFiles/Debug/moc_mtpFileLoader.cpp GeneratedFiles/Debug/moc_mtpSession.cpp GeneratedFiles/Debug/moc_animation.cpp GeneratedFiles/Debug/moc_button.cpp GeneratedFiles/Debug/moc_countrycodeinput.cpp GeneratedFiles/Debug/moc_countryinput.cpp GeneratedFiles/Debug/moc_flatbutton.cpp GeneratedFiles/Debug/moc_flatcheckbox.cpp GeneratedFiles/Debug/moc_flatinput.cpp GeneratedFiles/Debug/moc_flatlabel.cpp GeneratedFiles/Debug/moc_flattextarea.cpp GeneratedFiles/Debug/moc_phoneinput.cpp GeneratedFiles/Debug/moc_scrollarea.cpp GeneratedFiles/Debug/moc_twidget.cpp GeneratedFiles/Debug/moc_aboutbox.cpp GeneratedFiles/Debug/moc_addcontactbox.cpp GeneratedFiles/Debug/moc_addparticipantbox.cpp GeneratedFiles/Debug/moc_confirmbox.cpp GeneratedFiles/Debug/moc_connectionbox.cpp GeneratedFiles/Debug/moc_contactsbox.cpp GeneratedFiles/Debug/moc_downloadpathbox.cpp GeneratedFiles/Debug/moc_emojibox.cpp GeneratedFiles/Debug/moc_newgroupbox.cpp GeneratedFiles/Debug/moc_photocropbox.cpp GeneratedFiles/Debug/moc_photosendbox.cpp GeneratedFiles/Debug/moc_intro.cpp GeneratedFiles/Debug/moc_introcode.cpp GeneratedFiles/Debug/moc_introphone.cpp GeneratedFiles/Debug/moc_introsignup.cpp GeneratedFiles/Debug/moc_pspecific_mac.cpp +compiler_moc_header_clean: + -$(DEL_FILE) GeneratedFiles/Debug/moc_application.cpp GeneratedFiles/Debug/moc_dialogswidget.cpp GeneratedFiles/Debug/moc_dropdown.cpp GeneratedFiles/Debug/moc_fileuploader.cpp GeneratedFiles/Debug/moc_historywidget.cpp GeneratedFiles/Debug/moc_layerwidget.cpp GeneratedFiles/Debug/moc_profilewidget.cpp GeneratedFiles/Debug/moc_localimageloader.cpp GeneratedFiles/Debug/moc_mainwidget.cpp GeneratedFiles/Debug/moc_settingswidget.cpp GeneratedFiles/Debug/moc_sysbuttons.cpp GeneratedFiles/Debug/moc_title.cpp GeneratedFiles/Debug/moc_window.cpp GeneratedFiles/Debug/moc_mtp.cpp GeneratedFiles/Debug/moc_mtpConnection.cpp GeneratedFiles/Debug/moc_mtpDC.cpp GeneratedFiles/Debug/moc_mtpFileLoader.cpp GeneratedFiles/Debug/moc_mtpSession.cpp GeneratedFiles/Debug/moc_animation.cpp GeneratedFiles/Debug/moc_button.cpp GeneratedFiles/Debug/moc_countrycodeinput.cpp GeneratedFiles/Debug/moc_countryinput.cpp GeneratedFiles/Debug/moc_flatbutton.cpp GeneratedFiles/Debug/moc_flatcheckbox.cpp GeneratedFiles/Debug/moc_flatinput.cpp GeneratedFiles/Debug/moc_flatlabel.cpp GeneratedFiles/Debug/moc_flattextarea.cpp GeneratedFiles/Debug/moc_phoneinput.cpp GeneratedFiles/Debug/moc_scrollarea.cpp GeneratedFiles/Debug/moc_twidget.cpp GeneratedFiles/Debug/moc_aboutbox.cpp GeneratedFiles/Debug/moc_addcontactbox.cpp GeneratedFiles/Debug/moc_addparticipantbox.cpp GeneratedFiles/Debug/moc_confirmbox.cpp GeneratedFiles/Debug/moc_connectionbox.cpp GeneratedFiles/Debug/moc_contactsbox.cpp GeneratedFiles/Debug/moc_downloadpathbox.cpp GeneratedFiles/Debug/moc_emojibox.cpp GeneratedFiles/Debug/moc_newgroupbox.cpp GeneratedFiles/Debug/moc_photocropbox.cpp GeneratedFiles/Debug/moc_photosendbox.cpp GeneratedFiles/Debug/moc_intro.cpp GeneratedFiles/Debug/moc_introcode.cpp GeneratedFiles/Debug/moc_introphone.cpp GeneratedFiles/Debug/moc_introsignup.cpp GeneratedFiles/Debug/moc_pspecific_mac.cpp +GeneratedFiles/Debug/moc_application.cpp: ../../Libraries/QtStatic/qtbase/include/QtNetwork/QLocalSocket \ + ../../Libraries/QtStatic/qtbase/include/QtNetwork/QLocalServer \ + ../../Libraries/QtStatic/qtbase/include/QtNetwork/QNetworkReply \ + SourceFiles/window.h \ + SourceFiles/title.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \ + SourceFiles/sysbuttons.h \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/gui/button.h \ + SourceFiles/gui/twidget.h \ + SourceFiles/pspecific.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QMainWindow \ + SourceFiles/pspecific_mac.h \ + SourceFiles/pspecific_wnd.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/application.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/application.h -o GeneratedFiles/Debug/moc_application.cpp + +GeneratedFiles/Debug/moc_dialogswidget.cpp: SourceFiles/dialogswidget.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/dialogswidget.h -o GeneratedFiles/Debug/moc_dialogswidget.cpp + +GeneratedFiles/Debug/moc_dropdown.cpp: SourceFiles/gui/twidget.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/dropdown.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/dropdown.h -o GeneratedFiles/Debug/moc_dropdown.cpp + +GeneratedFiles/Debug/moc_fileuploader.cpp: SourceFiles/localimageloader.h \ + SourceFiles/fileuploader.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/fileuploader.h -o GeneratedFiles/Debug/moc_fileuploader.cpp + +GeneratedFiles/Debug/moc_historywidget.cpp: SourceFiles/localimageloader.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/dropdown.h \ + SourceFiles/gui/twidget.h \ + SourceFiles/historywidget.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/historywidget.h -o GeneratedFiles/Debug/moc_historywidget.cpp + +GeneratedFiles/Debug/moc_layerwidget.cpp: SourceFiles/gui/boxshadow.h \ + SourceFiles/layerwidget.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/layerwidget.h -o GeneratedFiles/Debug/moc_layerwidget.cpp + +GeneratedFiles/Debug/moc_profilewidget.cpp: SourceFiles/profilewidget.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/profilewidget.h -o GeneratedFiles/Debug/moc_profilewidget.cpp + +GeneratedFiles/Debug/moc_localimageloader.cpp: SourceFiles/localimageloader.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/localimageloader.h -o GeneratedFiles/Debug/moc_localimageloader.cpp + +GeneratedFiles/Debug/moc_mainwidget.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \ + SourceFiles/gui/flatbutton.h \ + SourceFiles/gui/button.h \ + SourceFiles/gui/twidget.h \ + SourceFiles/gui/flatcheckbox.h \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/style.h \ + GeneratedFiles/style_classes.h \ + GeneratedFiles/style_auto.h \ + SourceFiles/dialogswidget.h \ + SourceFiles/historywidget.h \ + SourceFiles/localimageloader.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/dropdown.h \ + SourceFiles/profilewidget.h \ + SourceFiles/mainwidget.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/mainwidget.h -o GeneratedFiles/Debug/moc_mainwidget.cpp + +GeneratedFiles/Debug/moc_settingswidget.cpp: SourceFiles/gui/flatbutton.h \ + SourceFiles/gui/button.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \ + SourceFiles/gui/twidget.h \ + SourceFiles/gui/flatcheckbox.h \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/style.h \ + GeneratedFiles/style_classes.h \ + GeneratedFiles/style_auto.h \ + SourceFiles/sysbuttons.h \ + SourceFiles/settingswidget.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/settingswidget.h -o GeneratedFiles/Debug/moc_settingswidget.cpp + +GeneratedFiles/Debug/moc_sysbuttons.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/gui/button.h \ + SourceFiles/gui/twidget.h \ + SourceFiles/sysbuttons.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/sysbuttons.h -o GeneratedFiles/Debug/moc_sysbuttons.cpp + +GeneratedFiles/Debug/moc_title.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \ + SourceFiles/sysbuttons.h \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/gui/button.h \ + SourceFiles/gui/twidget.h \ + SourceFiles/title.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/title.h -o GeneratedFiles/Debug/moc_title.cpp + +GeneratedFiles/Debug/moc_window.cpp: SourceFiles/title.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \ + SourceFiles/sysbuttons.h \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/gui/button.h \ + SourceFiles/gui/twidget.h \ + SourceFiles/pspecific.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QMainWindow \ + ../../Libraries/QtStatic/qtbase/include/QtNetwork/QNetworkReply \ + SourceFiles/pspecific_mac.h \ + SourceFiles/pspecific_wnd.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/window.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/window.h -o GeneratedFiles/Debug/moc_window.cpp + +GeneratedFiles/Debug/moc_mtp.cpp: SourceFiles/mtproto/mtpSession.h \ + SourceFiles/mtproto/mtpConnection.h \ + SourceFiles/mtproto/mtpCoreTypes.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + SourceFiles/mtproto/mtpScheme.h \ + SourceFiles/mtproto/mtpPublicRSA.h \ + SourceFiles/mtproto/mtpAuthKey.h \ + SourceFiles/mtproto/mtpDC.h \ + SourceFiles/mtproto/mtpRPC.h \ + SourceFiles/mtproto/mtpFileLoader.h \ + SourceFiles/mtproto/mtpSessionImpl.h \ + SourceFiles/mtproto/mtp.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/mtproto/mtp.h -o GeneratedFiles/Debug/moc_mtp.cpp + +GeneratedFiles/Debug/moc_mtpConnection.cpp: SourceFiles/mtproto/mtpCoreTypes.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + SourceFiles/mtproto/mtpScheme.h \ + SourceFiles/mtproto/mtpPublicRSA.h \ + SourceFiles/mtproto/mtpAuthKey.h \ + SourceFiles/mtproto/mtpConnection.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/mtproto/mtpConnection.h -o GeneratedFiles/Debug/moc_mtpConnection.cpp + +GeneratedFiles/Debug/moc_mtpDC.cpp: SourceFiles/mtproto/mtpDC.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/mtproto/mtpDC.h -o GeneratedFiles/Debug/moc_mtpDC.cpp + +GeneratedFiles/Debug/moc_mtpFileLoader.cpp: SourceFiles/mtproto/mtpFileLoader.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/mtproto/mtpFileLoader.h -o GeneratedFiles/Debug/moc_mtpFileLoader.cpp + +GeneratedFiles/Debug/moc_mtpSession.cpp: SourceFiles/mtproto/mtpConnection.h \ + SourceFiles/mtproto/mtpCoreTypes.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + SourceFiles/mtproto/mtpScheme.h \ + SourceFiles/mtproto/mtpPublicRSA.h \ + SourceFiles/mtproto/mtpAuthKey.h \ + SourceFiles/mtproto/mtpDC.h \ + SourceFiles/mtproto/mtpRPC.h \ + SourceFiles/mtproto/mtpSession.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/mtproto/mtpSession.h -o GeneratedFiles/Debug/moc_mtpSession.cpp + +GeneratedFiles/Debug/moc_animation.cpp: SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/gui/animation.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/gui/animation.h -o GeneratedFiles/Debug/moc_animation.cpp + +GeneratedFiles/Debug/moc_button.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \ + SourceFiles/gui/twidget.h \ + SourceFiles/gui/button.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/gui/button.h -o GeneratedFiles/Debug/moc_button.cpp + +GeneratedFiles/Debug/moc_countrycodeinput.cpp: SourceFiles/gui/flatinput.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \ + SourceFiles/style.h \ + GeneratedFiles/style_classes.h \ + GeneratedFiles/style_auto.h \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/gui/countrycodeinput.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/gui/countrycodeinput.h -o GeneratedFiles/Debug/moc_countrycodeinput.cpp + +GeneratedFiles/Debug/moc_countryinput.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \ + SourceFiles/style.h \ + GeneratedFiles/style_classes.h \ + GeneratedFiles/style_auto.h \ + SourceFiles/gui/flatinput.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/gui/scrollarea.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QScrollArea \ + SourceFiles/gui/flatbutton.h \ + SourceFiles/gui/button.h \ + SourceFiles/gui/twidget.h \ + SourceFiles/gui/flatcheckbox.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/gui/countryinput.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/gui/countryinput.h -o GeneratedFiles/Debug/moc_countryinput.cpp + +GeneratedFiles/Debug/moc_flatbutton.cpp: SourceFiles/gui/button.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \ + SourceFiles/gui/twidget.h \ + SourceFiles/gui/flatcheckbox.h \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/style.h \ + GeneratedFiles/style_classes.h \ + GeneratedFiles/style_auto.h \ + SourceFiles/gui/flatbutton.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/gui/flatbutton.h -o GeneratedFiles/Debug/moc_flatbutton.cpp + +GeneratedFiles/Debug/moc_flatcheckbox.cpp: SourceFiles/gui/button.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \ + SourceFiles/gui/twidget.h \ + SourceFiles/gui/flatcheckbox.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/gui/flatcheckbox.h -o GeneratedFiles/Debug/moc_flatcheckbox.cpp + +GeneratedFiles/Debug/moc_flatinput.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \ + SourceFiles/style.h \ + GeneratedFiles/style_classes.h \ + GeneratedFiles/style_auto.h \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/gui/flatinput.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/gui/flatinput.h -o GeneratedFiles/Debug/moc_flatinput.cpp + +GeneratedFiles/Debug/moc_flatlabel.cpp: SourceFiles/style.h \ + GeneratedFiles/style_classes.h \ + GeneratedFiles/style_auto.h \ + SourceFiles/gui/flatlabel.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/gui/flatlabel.h -o GeneratedFiles/Debug/moc_flatlabel.cpp + +GeneratedFiles/Debug/moc_flattextarea.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QTextEdit \ + SourceFiles/style.h \ + GeneratedFiles/style_classes.h \ + GeneratedFiles/style_auto.h \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/gui/flattextarea.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/gui/flattextarea.h -o GeneratedFiles/Debug/moc_flattextarea.cpp + +GeneratedFiles/Debug/moc_phoneinput.cpp: SourceFiles/gui/flatinput.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \ + SourceFiles/style.h \ + GeneratedFiles/style_classes.h \ + GeneratedFiles/style_auto.h \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/gui/phoneinput.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/gui/phoneinput.h -o GeneratedFiles/Debug/moc_phoneinput.cpp + +GeneratedFiles/Debug/moc_scrollarea.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QScrollArea \ + SourceFiles/style.h \ + GeneratedFiles/style_classes.h \ + GeneratedFiles/style_auto.h \ + SourceFiles/gui/scrollarea.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/gui/scrollarea.h -o GeneratedFiles/Debug/moc_scrollarea.cpp + +GeneratedFiles/Debug/moc_twidget.cpp: SourceFiles/gui/twidget.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/gui/twidget.h -o GeneratedFiles/Debug/moc_twidget.cpp + +GeneratedFiles/Debug/moc_aboutbox.cpp: SourceFiles/layerwidget.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/boxes/aboutbox.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/boxes/aboutbox.h -o GeneratedFiles/Debug/moc_aboutbox.cpp + +GeneratedFiles/Debug/moc_addcontactbox.cpp: SourceFiles/layerwidget.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/boxes/addcontactbox.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/boxes/addcontactbox.h -o GeneratedFiles/Debug/moc_addcontactbox.cpp + +GeneratedFiles/Debug/moc_addparticipantbox.cpp: SourceFiles/layerwidget.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/boxes/addparticipantbox.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/boxes/addparticipantbox.h -o GeneratedFiles/Debug/moc_addparticipantbox.cpp + +GeneratedFiles/Debug/moc_confirmbox.cpp: SourceFiles/layerwidget.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/boxes/confirmbox.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/boxes/confirmbox.h -o GeneratedFiles/Debug/moc_confirmbox.cpp + +GeneratedFiles/Debug/moc_connectionbox.cpp: SourceFiles/layerwidget.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/gui/phoneinput.h \ + SourceFiles/gui/flatinput.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \ + SourceFiles/style.h \ + GeneratedFiles/style_classes.h \ + GeneratedFiles/style_auto.h \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/boxes/connectionbox.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/boxes/connectionbox.h -o GeneratedFiles/Debug/moc_connectionbox.cpp + +GeneratedFiles/Debug/moc_contactsbox.cpp: SourceFiles/layerwidget.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/boxes/contactsbox.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/boxes/contactsbox.h -o GeneratedFiles/Debug/moc_contactsbox.cpp + +GeneratedFiles/Debug/moc_downloadpathbox.cpp: SourceFiles/layerwidget.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/gui/phoneinput.h \ + SourceFiles/gui/flatinput.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \ + SourceFiles/style.h \ + GeneratedFiles/style_classes.h \ + GeneratedFiles/style_auto.h \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/boxes/downloadpathbox.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/boxes/downloadpathbox.h -o GeneratedFiles/Debug/moc_downloadpathbox.cpp + +GeneratedFiles/Debug/moc_emojibox.cpp: SourceFiles/layerwidget.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/boxes/emojibox.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/boxes/emojibox.h -o GeneratedFiles/Debug/moc_emojibox.cpp + +GeneratedFiles/Debug/moc_newgroupbox.cpp: SourceFiles/layerwidget.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/boxes/newgroupbox.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/boxes/newgroupbox.h -o GeneratedFiles/Debug/moc_newgroupbox.cpp + +GeneratedFiles/Debug/moc_photocropbox.cpp: SourceFiles/layerwidget.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/boxes/photocropbox.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/boxes/photocropbox.h -o GeneratedFiles/Debug/moc_photocropbox.cpp + +GeneratedFiles/Debug/moc_photosendbox.cpp: SourceFiles/layerwidget.h \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/localimageloader.h \ + SourceFiles/boxes/photosendbox.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/boxes/photosendbox.h -o GeneratedFiles/Debug/moc_photosendbox.cpp + +GeneratedFiles/Debug/moc_intro.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \ + SourceFiles/gui/flatbutton.h \ + SourceFiles/gui/button.h \ + SourceFiles/gui/twidget.h \ + SourceFiles/gui/flatcheckbox.h \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/style.h \ + GeneratedFiles/style_classes.h \ + GeneratedFiles/style_auto.h \ + SourceFiles/intro/intro.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/intro/intro.h -o GeneratedFiles/Debug/moc_intro.cpp + +GeneratedFiles/Debug/moc_introcode.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \ + SourceFiles/gui/flatbutton.h \ + SourceFiles/gui/button.h \ + SourceFiles/gui/twidget.h \ + SourceFiles/gui/flatcheckbox.h \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/style.h \ + GeneratedFiles/style_classes.h \ + GeneratedFiles/style_auto.h \ + SourceFiles/gui/flatinput.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \ + SourceFiles/intro/intro.h \ + SourceFiles/intro/introcode.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/intro/introcode.h -o GeneratedFiles/Debug/moc_introcode.cpp + +GeneratedFiles/Debug/moc_introphone.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \ + SourceFiles/gui/flatbutton.h \ + SourceFiles/gui/button.h \ + SourceFiles/gui/twidget.h \ + SourceFiles/gui/flatcheckbox.h \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/style.h \ + GeneratedFiles/style_classes.h \ + GeneratedFiles/style_auto.h \ + SourceFiles/gui/phoneinput.h \ + SourceFiles/gui/flatinput.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \ + SourceFiles/gui/countrycodeinput.h \ + SourceFiles/gui/countryinput.h \ + SourceFiles/gui/scrollarea.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QScrollArea \ + SourceFiles/gui/boxshadow.h \ + SourceFiles/intro/intro.h \ + SourceFiles/intro/introphone.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/intro/introphone.h -o GeneratedFiles/Debug/moc_introphone.cpp + +GeneratedFiles/Debug/moc_introsignup.cpp: ../../Libraries/QtStatic/qtbase/include/QtWidgets/QWidget \ + SourceFiles/gui/flatbutton.h \ + SourceFiles/gui/button.h \ + SourceFiles/gui/twidget.h \ + SourceFiles/gui/flatcheckbox.h \ + SourceFiles/gui/animation.h \ + SourceFiles/types.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QReadWriteLock \ + SourceFiles/logs.h \ + ../../Libraries/QtStatic/qtbase/include/QtCore/QTimer \ + ../../Libraries/QtStatic/qtbase/include/QtGui/QColor \ + SourceFiles/style.h \ + GeneratedFiles/style_classes.h \ + GeneratedFiles/style_auto.h \ + SourceFiles/gui/flatinput.h \ + ../../Libraries/QtStatic/qtbase/include/QtWidgets/QLineEdit \ + SourceFiles/intro/intro.h \ + SourceFiles/intro/introsignup.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/intro/introsignup.h -o GeneratedFiles/Debug/moc_introsignup.cpp + +GeneratedFiles/Debug/moc_pspecific_mac.cpp: SourceFiles/pspecific_mac.h + /usr/local/Qt-5.3.0/bin/moc $(DEFINES) -D__APPLE__ -D__GNUC__=4 -I/usr/local/Qt-5.3.0/mkspecs/macx-clang -I. -I/usr/local/Qt-5.3.0/include/QtGui/5.3.0/QtGui -I/usr/local/Qt-5.3.0/include/QtCore/5.3.0/QtCore -I/usr/local/Qt-5.3.0/include -I./SourceFiles -I./GeneratedFiles -I../../Libraries/lzma/C -I../../Libraries/libexif-0.6.20 -I/usr/local/Qt-5.3.0/include -I/usr/local/Qt-5.3.0/include/QtMultimedia -I/usr/local/Qt-5.3.0/include/QtWidgets -I/usr/local/Qt-5.3.0/include/QtNetwork -I/usr/local/Qt-5.3.0/include/QtGui -I/usr/local/Qt-5.3.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/pspecific_mac.h -o GeneratedFiles/Debug/moc_pspecific_mac.cpp + +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_uic_make_all: +compiler_uic_clean: +compiler_rez_source_make_all: +compiler_rez_source_clean: +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: compiler_rcc_clean compiler_moc_header_clean + diff --git a/Telegram/Telegram/Images.xcassets/AppIcon-2.appiconset/Contents.json b/Telegram/Telegram/Images.xcassets/AppIcon-2.appiconset/Contents.json new file mode 100644 index 000000000..50ab7bd32 --- /dev/null +++ b/Telegram/Telegram/Images.xcassets/AppIcon-2.appiconset/Contents.json @@ -0,0 +1,58 @@ +{ + "images" : [ + { + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/Contents.json b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..15194319d --- /dev/null +++ b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "icon_16x16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "icon_16x16@2x.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "icon_32x32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "icon_32x32@2x.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "icon_128x128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "icon_128x128@2x.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "icon_256x256.png", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "256x256", + "filename" : "icon_256x256@2x.png", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "512x512", + "filename" : "icon_512x512.png", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "512x512", + "filename" : "icon_512x512@2x.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_128x128.png b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_128x128.png new file mode 100644 index 000000000..95c2e04ef Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_128x128.png differ diff --git a/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_128x128@2x.png b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_128x128@2x.png new file mode 100644 index 000000000..653ac0864 Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_128x128@2x.png differ diff --git a/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_16x16.png b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_16x16.png new file mode 100644 index 000000000..e61459132 Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_16x16.png differ diff --git a/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_16x16@2x.png b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_16x16@2x.png new file mode 100644 index 000000000..57a9fd01b Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_16x16@2x.png differ diff --git a/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_256x256.png b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_256x256.png new file mode 100644 index 000000000..653ac0864 Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_256x256.png differ diff --git a/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_256x256@2x.png b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_256x256@2x.png new file mode 100644 index 000000000..291e1bb78 Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_256x256@2x.png differ diff --git a/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_32x32.png b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_32x32.png new file mode 100644 index 000000000..57a9fd01b Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_32x32.png differ diff --git a/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_32x32@2x.png b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_32x32@2x.png new file mode 100644 index 000000000..422848804 Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_32x32@2x.png differ diff --git a/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_512x512.png b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_512x512.png new file mode 100644 index 000000000..291e1bb78 Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_512x512.png differ diff --git a/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_512x512@2x.png b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_512x512@2x.png new file mode 100644 index 000000000..9b249bac3 Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/AppIcon.appiconset/icon_512x512@2x.png differ diff --git a/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_128x128.png b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_128x128.png new file mode 100644 index 000000000..95c2e04ef Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_128x128.png differ diff --git a/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_128x128@2x.png b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_128x128@2x.png new file mode 100644 index 000000000..653ac0864 Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_128x128@2x.png differ diff --git a/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_16x16.png b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_16x16.png new file mode 100644 index 000000000..e61459132 Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_16x16.png differ diff --git a/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_16x16@2x.png b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_16x16@2x.png new file mode 100644 index 000000000..57a9fd01b Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_16x16@2x.png differ diff --git a/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_256x256.png b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_256x256.png new file mode 100644 index 000000000..653ac0864 Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_256x256.png differ diff --git a/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_256x256@2x.png b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_256x256@2x.png new file mode 100644 index 000000000..291e1bb78 Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_256x256@2x.png differ diff --git a/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_32x32.png b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_32x32.png new file mode 100644 index 000000000..57a9fd01b Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_32x32.png differ diff --git a/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_32x32@2x.png b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_32x32@2x.png new file mode 100644 index 000000000..422848804 Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_32x32@2x.png differ diff --git a/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_512x512.png b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_512x512.png new file mode 100644 index 000000000..291e1bb78 Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_512x512.png differ diff --git a/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_512x512@2x.png b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_512x512@2x.png new file mode 100644 index 000000000..9b249bac3 Binary files /dev/null and b/Telegram/Telegram/Images.xcassets/Icon.iconset/icon_512x512@2x.png differ diff --git a/Telegram/_qt_5_3_0_patch/qtbase/qmake/generators/mac/pbuilder_pbx.cpp b/Telegram/_qt_5_3_0_patch/qtbase/qmake/generators/mac/pbuilder_pbx.cpp new file mode 100644 index 000000000..2dbec5632 --- /dev/null +++ b/Telegram/_qt_5_3_0_patch/qtbase/qmake/generators/mac/pbuilder_pbx.cpp @@ -0,0 +1,1935 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the qmake application of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "pbuilder_pbx.h" +#include "option.h" +#include "meta.h" +#include +#include +#include +#include +#include +#include +#include +#ifdef Q_OS_UNIX +# include +# include +#endif +#ifdef Q_OS_DARWIN +#include +#include +#endif + +QT_BEGIN_NAMESPACE + +//#define GENERATE_AGGREGRATE_SUBDIR + +// Note: this is fairly hacky, but it does the job... + +using namespace QMakeInternal; + +static QString qtSha1(const QByteArray &src) +{ + QByteArray digest = QCryptographicHash::hash(src, QCryptographicHash::Sha1); + return QString::fromLatin1(digest.toHex()); +} + +ProjectBuilderMakefileGenerator::ProjectBuilderMakefileGenerator() : UnixMakefileGenerator() +{ + +} + +bool +ProjectBuilderMakefileGenerator::writeMakefile(QTextStream &t) +{ + writingUnixMakefileGenerator = false; + if(!project->values("QMAKE_FAILED_REQUIREMENTS").isEmpty()) { + /* for now just dump, I need to generated an empty xml or something.. */ + fprintf(stderr, "Project file not generated because all requirements not met:\n\t%s\n", + var("QMAKE_FAILED_REQUIREMENTS").toLatin1().constData()); + return true; + } + + project->values("MAKEFILE").clear(); + project->values("MAKEFILE").append("Makefile"); + if(project->first("TEMPLATE") == "app" || project->first("TEMPLATE") == "lib") + return writeMakeParts(t); + else if(project->first("TEMPLATE") == "subdirs") + return writeSubDirs(t); + return false; +} + +struct ProjectBuilderSubDirs { + QMakeProject *project; + QString subdir; + bool autoDelete; + ProjectBuilderSubDirs(QMakeProject *p, QString s, bool a=true) : project(p), subdir(s), autoDelete(a) { } + ~ProjectBuilderSubDirs() { + if(autoDelete) + delete project; + } +}; + +bool +ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t) +{ + if(project->isActiveConfig("generate_pbxbuild_makefile")) { + QString mkwrap = fileFixify(pbx_dir + Option::dir_sep + ".." + Option::dir_sep + project->first("MAKEFILE"), + qmake_getpwd()); + QFile mkwrapf(mkwrap); + if(mkwrapf.open(QIODevice::WriteOnly | QIODevice::Text)) { + debug_msg(1, "pbuilder: Creating file: %s", mkwrap.toLatin1().constData()); + QTextStream mkwrapt(&mkwrapf); + writingUnixMakefileGenerator = true; + UnixMakefileGenerator::writeSubDirs(mkwrapt); + writingUnixMakefileGenerator = false; + } + } + + //HEADER + const int pbVersion = pbuilderVersion(); + t << "// !$*UTF8*$!\n" + << "{\n" + << "\t" << writeSettings("archiveVersion", "1", SettingsNoQuote) << ";\n" + << "\tclasses = {\n\t};\n" + << "\t" << writeSettings("objectVersion", QString::number(pbVersion), SettingsNoQuote) << ";\n" + << "\tobjects = {\n"; + + //SUBDIRS + QList pb_subdirs; + pb_subdirs.append(new ProjectBuilderSubDirs(project, QString(), false)); + QString oldpwd = qmake_getpwd(); + QString oldoutpwd = Option::output_dir; + QMap groups; + for(int pb_subdir = 0; pb_subdir < pb_subdirs.size(); ++pb_subdir) { + ProjectBuilderSubDirs *pb = pb_subdirs[pb_subdir]; + const ProStringList &subdirs = pb->project->values("SUBDIRS"); + for(int subdir = 0; subdir < subdirs.count(); subdir++) { + ProString tmpk = subdirs[subdir]; + const ProKey fkey(tmpk + ".file"); + if (!pb->project->isEmpty(fkey)) { + tmpk = pb->project->first(fkey); + } else { + const ProKey skey(tmpk + ".subdir"); + if (!pb->project->isEmpty(skey)) + tmpk = pb->project->first(skey); + } + QString tmp = tmpk.toQString(); + if(fileInfo(tmp).isRelative() && !pb->subdir.isEmpty()) { + QString subdir = pb->subdir; + if(!subdir.endsWith(Option::dir_sep)) + subdir += Option::dir_sep; + tmp = subdir + tmp; + } + QFileInfo fi(fileInfo(Option::fixPathToLocalOS(tmp, true))); + if(fi.exists()) { + if(fi.isDir()) { + QString profile = tmp; + if(!profile.endsWith(Option::dir_sep)) + profile += Option::dir_sep; + profile += fi.baseName() + Option::pro_ext; + fi = QFileInfo(profile); + } + QMakeProject tmp_proj; + QString dir = fi.path(), fn = fi.fileName(); + if(!dir.isEmpty()) { + if(!qmake_setpwd(dir)) + fprintf(stderr, "Cannot find directory: %s\n", dir.toLatin1().constData()); + } + Option::output_dir = Option::globals->shadowedPath(QDir::cleanPath(fi.absoluteFilePath())); + if(tmp_proj.read(fn)) { + if(tmp_proj.first("TEMPLATE") == "subdirs") { + QMakeProject *pp = new QMakeProject(&tmp_proj); + pb_subdirs += new ProjectBuilderSubDirs(pp, dir); + } else if(tmp_proj.first("TEMPLATE") == "app" || tmp_proj.first("TEMPLATE") == "lib") { + QString pbxproj = qmake_getpwd() + Option::dir_sep + tmp_proj.first("TARGET") + projectSuffix(); + if(!exists(pbxproj)) { + warn_msg(WarnLogic, "Ignored (not found) '%s'", pbxproj.toLatin1().constData()); + goto nextfile; // # Dirty! + } + const QString project_key = keyFor(pbxproj + "_PROJECTREF"); + project->values("QMAKE_PBX_SUBDIRS") += pbxproj; + //PROJECTREF + { + bool in_root = true; + QString name = qmake_getpwd(); + if(project->isActiveConfig("flat")) { + QString flat_file = fileFixify(name, oldpwd, oldoutpwd, FileFixifyRelative); + if(flat_file.indexOf(Option::dir_sep) != -1) { + QStringList dirs = flat_file.split(Option::dir_sep); + name = dirs.back(); + } + } else { + QString flat_file = fileFixify(name, oldpwd, oldoutpwd, FileFixifyRelative); + if(QDir::isRelativePath(flat_file) && flat_file.indexOf(Option::dir_sep) != -1) { + QString last_grp("QMAKE_SUBDIR_PBX_HEIR_GROUP"); + QStringList dirs = flat_file.split(Option::dir_sep); + name = dirs.back(); + for(QStringList::Iterator dir_it = dirs.begin(); dir_it != dirs.end(); ++dir_it) { + QString new_grp(last_grp + Option::dir_sep + (*dir_it)), new_grp_key(keyFor(new_grp)); + if(dir_it == dirs.begin()) { + if(!groups.contains(new_grp)) + project->values("QMAKE_SUBDIR_PBX_GROUPS").append(new_grp_key); + } else { + if(!groups[last_grp].contains(new_grp_key)) + groups[last_grp] += new_grp_key; + } + last_grp = new_grp; + } + groups[last_grp] += project_key; + in_root = false; + } + } + if(in_root) + project->values("QMAKE_SUBDIR_PBX_GROUPS") += project_key; + t << "\t\t" << project_key << " = {\n" + << "\t\t\t" << writeSettings("isa", "PBXFileReference", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("lastKnownFileType", "wrapper.pb-project") << ";\n" + << "\t\t\t" << writeSettings("name", escapeFilePath(tmp_proj.first("TARGET") + projectSuffix())) << ";\n" + << "\t\t\t" << writeSettings("path", pbxproj) << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "") << ";\n" + << "\t\t};\n"; + //WRAPPER + t << "\t\t" << keyFor(pbxproj + "_WRAPPER") << " = {\n" + << "\t\t\t" << writeSettings("isa", "PBXReferenceProxy", SettingsNoQuote) << ";\n"; + if(tmp_proj.first("TEMPLATE") == "app") { + t << "\t\t\t" << writeSettings("fileType", "wrapper.application") << ";\n" + << "\t\t\t" << writeSettings("path", tmp_proj.first("TARGET") + ".app") << ";\n"; + } else { + t << "\t\t\t" << writeSettings("fileType", "compiled.mach-o.dylib") << ";\n" + << "\t\t\t" << writeSettings("path", tmp_proj.first("TARGET") + ".dylib") << ";\n"; + } + t << "\t\t\t" << writeSettings("remoteRef", keyFor(pbxproj + "_WRAPPERREF")) << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "BUILT_PRODUCTS_DIR", SettingsNoQuote) << ";\n" + << "\t\t};\n"; + t << "\t\t" << keyFor(pbxproj + "_WRAPPERREF") << " = {\n" + << "\t\t\t" << writeSettings("containerPortal", project_key) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXContainerItemProxy", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("proxyType", "2") << ";\n" +// << "\t\t\t" << writeSettings("remoteGlobalIDString", keyFor(pbxproj + "QMAKE_PBX_REFERENCE")) << ";\n" + << "\t\t\t" << writeSettings("remoteGlobalIDString", keyFor(pbxproj + "QMAKE_PBX_REFERENCE!!!")) << ";\n" + << "\t\t\t" << writeSettings("remoteInfo", tmp_proj.first("TARGET")) << ";\n" + << "\t\t};\n"; + //PRODUCTGROUP + t << "\t\t" << keyFor(pbxproj + "_PRODUCTGROUP") << " = {\n" + << "\t\t\t" << writeSettings("children", project->values(ProKey(pbxproj + "_WRAPPER")), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", "Products") << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "") << ";\n" + << "\t\t};\n"; + } +#ifdef GENERATE_AGGREGRATE_SUBDIR + //TARGET (for aggregate) + { + //container + const QString container_proxy = keyFor(pbxproj + "_CONTAINERPROXY"); + t << "\t\t" << container_proxy << " = {\n" + << "\t\t\t" << writeSettings("containerPortal", project_key) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXContainerItemProxy", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("proxyType", "1") << ";\n" + << "\t\t\t" << writeSettings("remoteGlobalIDString", keyFor(pbxproj + "QMAKE_PBX_TARGET")) << ";\n" + << "\t\t\t" << writeSettings("remoteInfo", tmp_proj.first("TARGET")) << ";\n" + << "\t\t};\n"; + //targetref + t << "\t\t" << keyFor(pbxproj + "_TARGETREF") << " = {\n" + << "\t\t\t" << writeSettings("isa", "PBXTargetDependency", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", fixForOutput(tmp_proj.first("TARGET") +" (from " + tmp_proj.first("TARGET") + projectSuffix() + ")")) << ";\n" + << "\t\t\t" << writeSettings("targetProxy", container_proxy) << ";\n" + << "\t\t};\n"; + } +#endif + } + } + nextfile: + qmake_setpwd(oldpwd); + Option::output_dir = oldoutpwd; + } + } + } + qDeleteAll(pb_subdirs); + pb_subdirs.clear(); + + for (QMap::Iterator grp_it = groups.begin(); grp_it != groups.end(); ++grp_it) { + t << "\t\t" << keyFor(grp_it.key()) << " = {\n" + << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("children", grp_it.value(), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("name", escapeFilePath(grp_it.key().section(Option::dir_sep, -1))) << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "") << ";\n" + << "\t\t};\n"; + } + + //DUMP EVERYTHING THAT TIES THE ABOVE TOGETHER + //BUILDCONFIGURATIONS + QString defaultConfig; + for(int as_release = 0; as_release < 2; as_release++) + { + QString configName = (as_release ? "Release" : "Debug"); + + QMap settings; + settings.insert("COPY_PHASE_STRIP", (as_release ? "YES" : "NO")); + if(as_release) + settings.insert("GCC_GENERATE_DEBUGGING_SYMBOLS", "NO"); + if(project->isActiveConfig("sdk") && !project->isEmpty("QMAKE_MAC_SDK")) + settings.insert("SDKROOT", project->first("QMAKE_MAC_SDK").toQString()); + { + const ProStringList &l = project->values("QMAKE_MAC_XCODE_SETTINGS"); + for(int i = 0; i < l.size(); ++i) { + ProString name = l.at(i); + const ProKey buildKey(name + ".build"); + if (!project->isEmpty(buildKey)) { + const QString build = project->values(buildKey).first().toQString(); + if (build.toLower() != configName.toLower()) + continue; + } + const ProKey nkey(name + ".name"); + if (!project->isEmpty(nkey)) + name = project->first(nkey); + const QString value = project->values(ProKey(name + ".value")).join(QString(Option::field_sep)); + settings.insert(name.toQString(), value); + } + } + + if (project->isActiveConfig("debug") != (bool)as_release) + defaultConfig = configName; + QString key = keyFor("QMAKE_SUBDIR_PBX_BUILDCONFIG_" + configName); + project->values("QMAKE_SUBDIR_PBX_BUILDCONFIGS").append(key); + t << "\t\t" << key << " = {\n" + << "\t\t\t" << writeSettings("isa", "XCBuildConfiguration", SettingsNoQuote) << ";\n" + << "\t\t\tbuildSettings = {\n"; + for (QMap::Iterator set_it = settings.begin(); set_it != settings.end(); ++set_it) + t << "\t\t\t\t" << writeSettings(set_it.key(), set_it.value()) << ";\n"; + t << "\t\t\t};\n" + << "\t\t\t" << writeSettings("name", configName) << ";\n" + << "\t\t};\n"; + } + t << "\t\t" << keyFor("QMAKE_SUBDIR_PBX_BUILDCONFIG_LIST") << " = {\n" + << "\t\t\t" << writeSettings("isa", "XCConfigurationList", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("buildConfigurations", project->values("QMAKE_SUBDIR_PBX_BUILDCONFIGS"), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("defaultConfigurationIsVisible", "0", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("defaultConfigurationName", defaultConfig, SettingsNoQuote) << ";\n" + << "\t\t};\n"; + +#ifdef GENERATE_AGGREGRATE_SUBDIR + //target + t << "\t\t" << keyFor("QMAKE_SUBDIR_PBX_AGGREGATE_TARGET") << " = {\n" + << "\t\t\t" << writeSettings("buildPhases", ProStringList(), SettingsAsList, 4) << ";\n" + << "\t\t\tbuildSettings = {\n" + << "\t\t\t\t" << writeSettings("PRODUCT_NAME", project->values("TARGET").first()) << ";\n" + << "\t\t\t};\n"; + { + ProStringList dependencies; + const ProStringList &qmake_subdirs = project->values("QMAKE_PBX_SUBDIRS"); + for(int i = 0; i < qmake_subdirs.count(); i++) + dependencies += keyFor(qmake_subdirs[i] + "_TARGETREF"); + t << "\t\t\t" << writeSettings("dependencies", dependencies, SettingsAsList, 4) << ";\n" + } + t << "\t\t\t" << writeSettings("isa", "PBXAggregateTarget", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", project->values("TARGET").first()) << ";\n" + << "\t\t\t" << writeSettings("productName", project->values("TARGET").first()) << ";\n" + << "\t\t};\n"; +#endif + + //ROOT_GROUP + t << "\t\t" << keyFor("QMAKE_SUBDIR_PBX_ROOT_GROUP") << " = {\n" + << "\t\t\t" << writeSettings("children", project->values("QMAKE_SUBDIR_PBX_GROUPS"), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "") << ";\n" + << "\t\t};\n"; + + + //ROOT + t << "\t\t" << keyFor("QMAKE_SUBDIR_PBX_ROOT") << " = {\n" + << "\t\t\tbuildSettings = {\n" + << "\t\t\t};\n" + << "\t\t\t" << writeSettings("buildStyles", project->values("QMAKE_SUBDIR_PBX_BUILDSTYLES"), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXProject", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("mainGroup", keyFor("QMAKE_SUBDIR_PBX_ROOT_GROUP")) << ";\n" + << "\t\t\t" << writeSettings("projectDirPath", ProStringList()) << ";\n"; + t << "\t\t\t" << writeSettings("buildConfigurationList", keyFor("QMAKE_SUBDIR_PBX_BUILDCONFIG_LIST")) << ";\n"; + t << "\t\t\tprojectReferences = (\n"; + { + const ProStringList &qmake_subdirs = project->values("QMAKE_PBX_SUBDIRS"); + for(int i = 0; i < qmake_subdirs.count(); i++) { + const ProString &subdir = qmake_subdirs[i]; + t << "\t\t\t\t{\n" + << "\t\t\t\t\t" << writeSettings("ProductGroup", keyFor(subdir + "_PRODUCTGROUP")) << ";\n" + << "\t\t\t\t\t" << writeSettings("ProjectRef", keyFor(subdir + "_PROJECTREF")) << ";\n" + << "\t\t\t\t},\n"; + } + } + t << "\t\t\t);\n" + << "\t\t\t" << writeSettings("targets", +#ifdef GENERATE_AGGREGRATE_SUBDIR + project->values("QMAKE_SUBDIR_AGGREGATE_TARGET"), +#else + ProStringList(), +#endif + SettingsAsList, 4) << ";\n" + << "\t\t};\n"; + + //FOOTER + t << "\t};\n" + << "\t" << writeSettings("rootObject", keyFor("QMAKE_SUBDIR_PBX_ROOT")) << ";\n" + << "}\n"; + + return true; +} + +class ProjectBuilderSources +{ + bool buildable, object_output; + QString key, group, compiler; +public: + ProjectBuilderSources(const QString &key, bool buildable=false, const QString &group=QString(), const QString &compiler=QString(), bool producesObject=false); + QStringList files(QMakeProject *project) const; + inline bool isBuildable() const { return buildable; } + inline QString keyName() const { return key; } + inline QString groupName() const { return group; } + inline QString compilerName() const { return compiler; } + inline bool isObjectOutput(const QString &file) const { + bool ret = object_output; + for(int i = 0; !ret && i < Option::c_ext.size(); ++i) { + if(file.endsWith(Option::c_ext.at(i))) { + ret = true; + break; + } + } + for(int i = 0; !ret && i < Option::cpp_ext.size(); ++i) { + if(file.endsWith(Option::cpp_ext.at(i))) { + ret = true; + break; + } + } + return ret; + } +}; + +ProjectBuilderSources::ProjectBuilderSources(const QString &k, bool b, + const QString &g, const QString &c, bool o) : buildable(b), object_output(o), key(k), group(g), compiler(c) +{ + // Override group name for a few common keys + if (k == "SOURCES" || k == "OBJECTIVE_SOURCES" || k == "HEADERS") + group = "Sources"; + else if (k == "QMAKE_INTERNAL_INCLUDED_FILES") + group = "Supporting Files"; + else if (k == "GENERATED_SOURCES" || k == "GENERATED_FILES") + group = "Generated Sources"; + else if (k == "RESOURCES") + group = "Resources"; + else if (group.isNull()) + group = QString("Sources [") + c + "]"; +} + +QStringList +ProjectBuilderSources::files(QMakeProject *project) const +{ + QStringList ret = project->values(ProKey(key)).toQStringList(); + if(key == "QMAKE_INTERNAL_INCLUDED_FILES") { + QStringList newret; + for(int i = 0; i < ret.size(); ++i) { + if(!ret.at(i).endsWith(Option::prf_ext)) + newret.append(ret.at(i)); + } + ret = newret; + } + if(key == "SOURCES" && project->first("TEMPLATE") == "app" && !project->isEmpty("ICON")) + ret.append(project->first("ICON").toQString()); + return ret; +} + +static QString xcodeFiletypeForFilename(const QString &filename) +{ + foreach (const QString &ext, Option::cpp_ext) { + if (filename.endsWith(ext)) + return QStringLiteral("sourcecode.cpp.cpp"); + } + + foreach (const QString &ext, Option::c_ext) { + if (filename.endsWith(ext)) + return QStringLiteral("sourcecode.c.c"); + } + + foreach (const QString &ext, Option::h_ext) { + if (filename.endsWith(ext)) + return "sourcecode.c.h"; + } + + if (filename.endsWith(QStringLiteral(".mm"))) + return QStringLiteral("sourcecode.cpp.objcpp"); + if (filename.endsWith(QStringLiteral(".m"))) + return QStringLiteral("sourcecode.c.objc"); + if (filename.endsWith(QStringLiteral(".framework"))) + return QStringLiteral("wrapper.framework"); + if (filename.endsWith(QStringLiteral(".a"))) + return QStringLiteral("archive.ar"); + if (filename.endsWith(QStringLiteral(".pro")) || filename.endsWith(QStringLiteral(".qrc"))) + return QStringLiteral("text"); + + return QString(); +} + +bool +ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) +{ + // The code in this function assumes that the current directory matches + // the output directory, which is not actually the case when we are called + // from the generic generator code. Instead of changing every single + // assumption and fileFixify we cheat by moving into the output directory + // for the duration of this function. + QString input_dir = qmake_getpwd(); + qmake_setpwd(Option::output_dir); + + ProStringList tmp; + bool did_preprocess = false; + + //HEADER + const int pbVersion = pbuilderVersion(); + ProStringList buildConfigGroups; + buildConfigGroups << "PROJECT" << "TARGET"; + + t << "// !$*UTF8*$!\n" + << "{\n" + << "\t" << writeSettings("archiveVersion", "1", SettingsNoQuote) << ";\n" + << "\tclasses = {\n\t};\n" + << "\t" << writeSettings("objectVersion", QString::number(pbVersion), SettingsNoQuote) << ";\n" + << "\tobjects = {\n"; + + //MAKE QMAKE equivelant + if (!project->isActiveConfig("no_autoqmake")) { + QString mkfile = pbx_dir + Option::dir_sep + "qt_makeqmake.mak"; + QFile mkf(mkfile); + if(mkf.open(QIODevice::WriteOnly | QIODevice::Text)) { + writingUnixMakefileGenerator = true; + qmake_setpwd(input_dir); // Makefile generation assumes input_dir as pwd + debug_msg(1, "pbuilder: Creating file: %s", mkfile.toLatin1().constData()); + QTextStream mkt(&mkf); + writeHeader(mkt); + mkt << "QMAKE = " << var("QMAKE_QMAKE") << endl; + writeMakeQmake(mkt); + mkt.flush(); + mkf.close(); + writingUnixMakefileGenerator = false; + qmake_setpwd(Option::output_dir); + } + QString phase_key = keyFor("QMAKE_PBX_MAKEQMAKE_BUILDPHASE"); + mkfile = fileFixify(mkfile, qmake_getpwd()); + project->values("QMAKE_PBX_PRESCRIPT_BUILDPHASES").append(phase_key); + t << "\t\t" << phase_key << " = {\n" + << "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("files", ProStringList(), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXShellScriptBuildPhase", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", "Qt Qmake") << ";\n" + << "\t\t\t" << writeSettings("shellPath", "/bin/sh") << ";\n" + << "\t\t\t" << writeSettings("shellScript", "make -C " + IoUtils::shellQuoteUnix(qmake_getpwd()) + " -f " + IoUtils::shellQuoteUnix(mkfile)) << ";\n" + << "\t\t};\n"; + } + + // FIXME: Move all file resolving logic out of ProjectBuilderSources::files(), as it + // doesn't have access to any of the information it needs to resolve relative paths. + project->values("QMAKE_INTERNAL_INCLUDED_FILES").prepend(fileFixify(project->projectFile(), qmake_getpwd(), input_dir)); + + //DUMP SOURCES + QMap groups; + QList sources; + sources.append(ProjectBuilderSources("SOURCES", true)); + sources.append(ProjectBuilderSources("GENERATED_SOURCES", true)); + sources.append(ProjectBuilderSources("GENERATED_FILES")); + sources.append(ProjectBuilderSources("HEADERS")); + sources.append(ProjectBuilderSources("QMAKE_INTERNAL_INCLUDED_FILES")); + if(!project->isEmpty("QMAKE_EXTRA_COMPILERS")) { + const ProStringList &quc = project->values("QMAKE_EXTRA_COMPILERS"); + for (ProStringList::ConstIterator it = quc.begin(); it != quc.end(); ++it) { + if (project->isEmpty(ProKey(*it + ".output"))) + continue; + ProStringList &inputs = project->values(ProKey(*it + ".input")); + int input = 0; + while (input < inputs.size()) { + if (project->isEmpty(inputs.at(input).toKey())) { + ++input; + continue; + } + bool duplicate = false; + bool isObj = project->values(ProKey(*it + ".CONFIG")).indexOf("no_link") == -1; + if (!isObj) { + for (int i = 0; i < sources.size(); ++i) { + if (sources.at(i).keyName() == inputs.at(input)) { + duplicate = true; + break; + } + } + } + if (!duplicate) { + const ProStringList &outputs = project->values(ProKey(*it + ".variable_out")); + for(int output = 0; output < outputs.size(); ++output) { + if(outputs.at(output) != "OBJECT") { + isObj = false; + break; + } + } + sources.append(ProjectBuilderSources(inputs.at(input).toQString(), true, + QString(), (*it).toQString(), isObj)); + + if (isObj) { + inputs.removeAt(input); + continue; + } + } + + ++input; + } + } + } + for(int source = 0; source < sources.size(); ++source) { + ProStringList &src_list = project->values(ProKey("QMAKE_PBX_" + sources.at(source).keyName())); + ProStringList &root_group_list = project->values("QMAKE_PBX_GROUPS"); + + const QStringList &files = fileFixify(sources.at(source).files(project)); + for(int f = 0; f < files.count(); ++f) { + QString file = files[f]; + if(file.length() >= 2 && (file[0] == '"' || file[0] == '\'') && file[(int) file.length()-1] == file[0]) + file = file.mid(1, file.length()-2); + if(!sources.at(source).compilerName().isNull() && + !verifyExtraCompiler(sources.at(source).compilerName(), file)) + continue; + if(file.endsWith(Option::prl_ext)) + continue; + + bool in_root = true; + QString src_key = keyFor(file), name = file; + if(project->isActiveConfig("flat")) { + QString flat_file = fileFixify(file, qmake_getpwd(), Option::output_dir, FileFixifyRelative); + if(flat_file.indexOf(Option::dir_sep) != -1) { + QStringList dirs = flat_file.split(Option::dir_sep); + name = dirs.back(); + } + } else { + QString flat_file = fileFixify(file, qmake_getpwd(), Option::output_dir, FileFixifyRelative); + if(QDir::isRelativePath(flat_file) && flat_file.indexOf(Option::dir_sep) != -1) { + QString last_grp("QMAKE_PBX_" + sources.at(source).groupName() + "_HEIR_GROUP"); + QStringList dirs = flat_file.split(Option::dir_sep); + name = dirs.back(); + dirs.pop_back(); //remove the file portion as it will be added via src_key + for(QStringList::Iterator dir_it = dirs.begin(); dir_it != dirs.end(); ++dir_it) { + QString new_grp(last_grp + Option::dir_sep + (*dir_it)), new_grp_key(keyFor(new_grp)); + if(dir_it == dirs.begin()) { + if(!src_list.contains(new_grp_key)) + src_list.append(new_grp_key); + } else { + if(!groups[last_grp].contains(new_grp_key)) + groups[last_grp] += new_grp_key; + } + last_grp = new_grp; + } + if (groups[last_grp].contains(src_key)) + continue; + groups[last_grp] += src_key; + in_root = false; + } + } + if (in_root) { + if (src_list.contains(src_key)) + continue; + src_list.append(src_key); + } + //source reference + t << "\t\t" << src_key << " = {\n" + << "\t\t\t" << writeSettings("isa", "PBXFileReference", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("path", escapeFilePath(file)) << ";\n"; + if (name != file) + t << "\t\t\t" << writeSettings("name", escapeFilePath(name)) << ";\n"; + t << "\t\t\t" << writeSettings("sourceTree", sourceTreeForFile(file)) << ";\n"; + QString filetype = xcodeFiletypeForFilename(file); + if (!filetype.isNull()) + t << "\t\t\t" << writeSettings("lastKnownFileType", filetype) << ";\n"; + t << "\t\t};\n"; + if (sources.at(source).isBuildable() && sources.at(source).isObjectOutput(file)) { //build reference + QString build_key = keyFor(file + ".BUILDABLE"); + t << "\t\t" << build_key << " = {\n" + << "\t\t\t" << writeSettings("fileRef", src_key) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXBuildFile", SettingsNoQuote) << ";\n" + << "\t\t\tsettings = {\n" + << "\t\t\t\t" << writeSettings("ATTRIBUTES", ProStringList(), SettingsAsList, 5) << ";\n" + << "\t\t\t};\n" + << "\t\t};\n"; + project->values("QMAKE_PBX_OBJ").append(build_key); + } + } + if(!src_list.isEmpty()) { + QString group_key = keyFor(sources.at(source).groupName()); + if(root_group_list.indexOf(group_key) == -1) + root_group_list += group_key; + + ProStringList &group = groups[sources.at(source).groupName()]; + for(int src = 0; src < src_list.size(); ++src) { + if(group.indexOf(src_list.at(src)) == -1) + group += src_list.at(src); + } + } + } + for (QMap::Iterator grp_it = groups.begin(); grp_it != groups.end(); ++grp_it) { + t << "\t\t" << keyFor(grp_it.key()) << " = {\n" + << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("children", grp_it.value(), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("name", escapeFilePath(grp_it.key().section(Option::dir_sep, -1))) << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "") << ";\n" + << "\t\t};\n"; + } + + //PREPROCESS BUILDPHASE (just a makefile) + { + QString mkfile = pbx_dir + Option::dir_sep + "qt_preprocess.mak"; + QFile mkf(mkfile); + if(mkf.open(QIODevice::WriteOnly | QIODevice::Text)) { + writingUnixMakefileGenerator = true; + did_preprocess = true; + debug_msg(1, "pbuilder: Creating file: %s", mkfile.toLatin1().constData()); + QTextStream mkt(&mkf); + writeHeader(mkt); + mkt << "MOC = " << Option::fixPathToTargetOS(var("QMAKE_MOC")) << endl; + mkt << "UIC = " << Option::fixPathToTargetOS(var("QMAKE_UIC")) << endl; + mkt << "LEX = " << var("QMAKE_LEX") << endl; + mkt << "LEXFLAGS = " << var("QMAKE_LEXFLAGS") << endl; + mkt << "YACC = " << var("QMAKE_YACC") << endl; + mkt << "YACCFLAGS = " << var("QMAKE_YACCFLAGS") << endl; + mkt << "DEFINES = " + << varGlue("PRL_EXPORT_DEFINES","-D"," -D"," ") + << varGlue("DEFINES","-D"," -D","") << endl; + mkt << "INCPATH = -I" << specdir(); + if(!project->isActiveConfig("no_include_pwd")) { + QString pwd = escapeFilePath(fileFixify(qmake_getpwd())); + if(pwd.isEmpty()) + pwd = "."; + mkt << " -I" << pwd; + } + { + const ProStringList &incs = project->values("INCLUDEPATH"); + for (ProStringList::ConstIterator incit = incs.begin(); incit != incs.end(); ++incit) + mkt << " -I" << escapeFilePath((*incit)); + } + if(!project->isEmpty("QMAKE_FRAMEWORKPATH_FLAGS")) + mkt << " " << var("QMAKE_FRAMEWORKPATH_FLAGS"); + mkt << endl; + mkt << "DEL_FILE = " << var("QMAKE_DEL_FILE") << endl; + mkt << "MOVE = " << var("QMAKE_MOVE") << endl << endl; + mkt << "IMAGES = " << varList("QMAKE_IMAGE_COLLECTION") << endl; + mkt << "PARSERS ="; + if(!project->isEmpty("YACCSOURCES")) { + const ProStringList &yaccs = project->values("YACCSOURCES"); + for (ProStringList::ConstIterator yit = yaccs.begin(); yit != yaccs.end(); ++yit) { + QFileInfo fi(fileInfo((*yit).toQString())); + mkt << " " << fi.path() << Option::dir_sep << fi.baseName() + << Option::yacc_mod << Option::cpp_ext.first(); + } + } + if(!project->isEmpty("LEXSOURCES")) { + const ProStringList &lexs = project->values("LEXSOURCES"); + for (ProStringList::ConstIterator lit = lexs.begin(); lit != lexs.end(); ++lit) { + QFileInfo fi(fileInfo((*lit).toQString())); + mkt << " " << fi.path() << Option::dir_sep << fi.baseName() + << Option::lex_mod << Option::cpp_ext.first(); + } + } + mkt << "\n"; + mkt << "preprocess: $(PARSERS) compilers\n"; + mkt << "clean preprocess_clean: parser_clean compiler_clean\n\n"; + mkt << "parser_clean:\n"; + if(!project->isEmpty("YACCSOURCES") || !project->isEmpty("LEXSOURCES")) + mkt << "\t-rm -f $(PARSERS)\n"; + writeExtraTargets(mkt); + if(!project->isEmpty("QMAKE_EXTRA_COMPILERS")) { + mkt << "compilers:"; + const ProStringList &compilers = project->values("QMAKE_EXTRA_COMPILERS"); + for(int compiler = 0; compiler < compilers.size(); ++compiler) { + const ProStringList &tmp_out = project->values(ProKey(compilers.at(compiler) + ".output")); + if (tmp_out.isEmpty()) + continue; + const ProStringList &inputs = project->values(ProKey(compilers.at(compiler) + ".input")); + for(int input = 0; input < inputs.size(); ++input) { + const ProStringList &files = project->values(inputs.at(input).toKey()); + if (files.isEmpty()) + continue; + for(int file = 0, added = 0; file < files.size(); ++file) { + QString fn = files.at(file).toQString(); + if (!verifyExtraCompiler(compilers.at(compiler), fn)) + continue; + if(added && !(added % 3)) + mkt << "\\\n\t"; + ++added; + const QString file_name = fileFixify(fn, Option::output_dir, Option::output_dir); + mkt << " " << replaceExtraCompilerVariables(Option::fixPathToTargetOS(tmp_out.first().toQString(), false), file_name, QString()); + } + } + } + mkt << endl; + writeExtraCompilerTargets(mkt); + writingUnixMakefileGenerator = false; + } + mkt.flush(); + mkf.close(); + } + mkfile = fileFixify(mkfile, qmake_getpwd()); + QString phase_key = keyFor("QMAKE_PBX_PREPROCESS_TARGET"); +// project->values("QMAKE_PBX_BUILDPHASES").append(phase_key); + project->values("QMAKE_PBX_PRESCRIPT_BUILDPHASES").append(phase_key); + t << "\t\t" << phase_key << " = {\n" + << "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("files", ProStringList(), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXShellScriptBuildPhase", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", "Qt Preprocessors") << ";\n" + << "\t\t\t" << writeSettings("shellPath", "/bin/sh") << ";\n" + << "\t\t\t" << writeSettings("shellScript", "make -C " + IoUtils::shellQuoteUnix(qmake_getpwd()) + " -f " + IoUtils::shellQuoteUnix(mkfile)) << ";\n" + << "\t\t};\n"; + } + + //SOURCE BUILDPHASE + if(!project->isEmpty("QMAKE_PBX_OBJ")) { + QString grp = "Compile Sources", key = keyFor(grp); + project->values("QMAKE_PBX_BUILDPHASES").append(key); + t << "\t\t" << key << " = {\n" + << "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("files", fixListForOutput("QMAKE_PBX_OBJ"), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXSourcesBuildPhase", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", grp) << ";\n" + << "\t\t};\n"; + } + + if(!project->isActiveConfig("staticlib")) { //DUMP LIBRARIES + ProStringList &libdirs = project->values("QMAKE_PBX_LIBPATHS"), + &frameworkdirs = project->values("QMAKE_FRAMEWORKPATH"); + static const char * const libs[] = { "QMAKE_LFLAGS", "QMAKE_LIBS", "QMAKE_LIBS_PRIVATE", 0 }; + for (int i = 0; libs[i]; i++) { + tmp = project->values(libs[i]); + for(int x = 0; x < tmp.count();) { + bool remove = false; + QString library, name; + ProString opt = tmp[x].trimmed(); + if (opt.length() >= 2 && (opt.at(0) == '"' || opt.at(0) == '\'') && opt.endsWith(opt.at(0))) + opt = opt.mid(1, opt.length()-2); + if(opt.startsWith("-L")) { + QString r = opt.mid(2).toQString(); + fixForOutput(r); + libdirs.append(r); + } else if(opt == "-prebind") { + project->values("QMAKE_DO_PREBINDING").append("TRUE"); + remove = true; + } else if(opt.startsWith("-l")) { + name = opt.mid(2).toQString(); + QString lib("lib" + name); + for (ProStringList::Iterator lit = libdirs.begin(); lit != libdirs.end(); ++lit) { + if(project->isActiveConfig("link_prl")) { + /* This isn't real nice, but it is real useful. This looks in a prl + for what the library will ultimately be called so we can stick it + in the ProjectFile. If the prl format ever changes (not likely) then + this will not really work. However, more concerning is that it will + encode the version number in the Project file which might be a bad + things in days to come? --Sam + */ + QString lib_file = (*lit) + Option::dir_sep + lib; + if(QMakeMetaInfo::libExists(lib_file)) { + QMakeMetaInfo libinfo(project); + if(libinfo.readLib(lib_file)) { + if(!libinfo.isEmpty("QMAKE_PRL_TARGET")) { + library = (*lit) + Option::dir_sep + libinfo.first("QMAKE_PRL_TARGET"); + debug_msg(1, "pbuilder: Found library (%s) via PRL %s (%s)", + opt.toLatin1().constData(), lib_file.toLatin1().constData(), library.toLatin1().constData()); + remove = true; + + if (project->isActiveConfig("xcode_dynamic_library_suffix")) { + QString suffixSetting = project->first("QMAKE_XCODE_LIBRARY_SUFFIX_SETTING").toQString(); + if (!suffixSetting.isEmpty()) { + QString librarySuffix = project->first("QMAKE_XCODE_LIBRARY_SUFFIX").toQString(); + suffixSetting = "$(" + suffixSetting + ")"; + if (!librarySuffix.isEmpty()) { + library = library.replace(librarySuffix, suffixSetting); + name = name.remove(librarySuffix); + } else { + library = library.replace(name, name + suffixSetting); + } + } + } + } + } + } + } + if(!remove) { + QString extns[] = { ".dylib", ".so", ".a", QString() }; + for(int n = 0; !remove && !extns[n].isNull(); n++) { + QString tmp = (*lit) + Option::dir_sep + lib + extns[n]; + if(exists(tmp)) { + library = tmp; + debug_msg(1, "pbuilder: Found library (%s) via %s", + opt.toLatin1().constData(), library.toLatin1().constData()); + remove = true; + } + } + } + } + } else if(opt.startsWith("-F")) { + QString r; + if(opt.size() > 2) { + r = opt.mid(2).toQString(); + } else { + if(x == tmp.count()-1) + break; + r = tmp[++x].toQString(); + } + if(!r.isEmpty()) { + fixForOutput(r); + frameworkdirs.append(r); + } + } else if(opt == "-framework") { + if(x == tmp.count()-1) + break; + const ProString &framework = tmp[x+1]; + ProStringList fdirs = frameworkdirs; + fdirs << "/System/Library/Frameworks/" << "/Library/Frameworks/"; + for(int fdir = 0; fdir < fdirs.count(); fdir++) { + if(exists(fdirs[fdir] + QDir::separator() + framework + ".framework")) { + remove = true; + library = fdirs[fdir] + Option::dir_sep + framework + ".framework"; + tmp.removeAt(x); + break; + } + } + } else if (!opt.startsWith('-')) { + QString fn = opt.toQString(); + if (exists(fn)) { + remove = true; + library = fn; + } + } + if(!library.isEmpty()) { + const int slsh = library.lastIndexOf(Option::dir_sep); + if(name.isEmpty()) { + if(slsh != -1) + name = library.right(library.length() - slsh - 1); + } + if(slsh != -1) { + const QString path = QFileInfo(library.left(slsh)).absoluteFilePath(); + if(!path.isEmpty() && !libdirs.contains(path)) + libdirs += path; + } + library = fileFixify(library); + QString filetype = xcodeFiletypeForFilename(library); + QString key = keyFor(library); + if (!project->values("QMAKE_PBX_LIBRARIES").contains(key)) { + bool is_frmwrk = (library.endsWith(".framework")); + t << "\t\t" << key << " = {\n" + << "\t\t\t" << writeSettings("isa", "PBXFileReference", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", escapeFilePath(name)) << ";\n" + << "\t\t\t" << writeSettings("path", escapeFilePath(library)) << ";\n" + << "\t\t\t" << writeSettings("refType", QString::number(reftypeForFile(library)), SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("sourceTree", sourceTreeForFile(library)) << ";\n"; + if (is_frmwrk) + t << "\t\t\t" << writeSettings("lastKnownFileType", "wrapper.framework") << ";\n"; + t << "\t\t};\n"; + project->values("QMAKE_PBX_LIBRARIES").append(key); + QString build_key = keyFor(library + ".BUILDABLE"); + t << "\t\t" << build_key << " = {\n" + << "\t\t\t" << writeSettings("fileRef", key) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXBuildFile", SettingsNoQuote) << ";\n" + << "\t\t\tsettings = {\n" + << "\t\t\t};\n" + << "\t\t};\n"; + project->values("QMAKE_PBX_BUILD_LIBRARIES").append(build_key); + } + } + if(remove) + tmp.removeAt(x); + else + x++; + } + project->values(libs[i]) = tmp; + } + } + //SUBLIBS BUILDPHASE (just another makefile) + if(!project->isEmpty("SUBLIBS")) { + QString mkfile = pbx_dir + Option::dir_sep + "qt_sublibs.mak"; + QFile mkf(mkfile); + if(mkf.open(QIODevice::WriteOnly | QIODevice::Text)) { + writingUnixMakefileGenerator = true; + debug_msg(1, "pbuilder: Creating file: %s", mkfile.toLatin1().constData()); + QTextStream mkt(&mkf); + writeHeader(mkt); + mkt << "SUBLIBS= "; + tmp = project->values("SUBLIBS"); + for(int i = 0; i < tmp.count(); i++) + t << "tmp/lib" << tmp[i] << ".a "; + t << endl << endl; + mkt << "sublibs: $(SUBLIBS)\n\n"; + tmp = project->values("SUBLIBS"); + for(int i = 0; i < tmp.count(); i++) + t << "tmp/lib" << tmp[i] << ".a:\n\t" + << var(ProKey("MAKELIB" + tmp[i])) << endl << endl; + mkt.flush(); + mkf.close(); + writingUnixMakefileGenerator = false; + } + QString phase_key = keyFor("QMAKE_PBX_SUBLIBS_BUILDPHASE"); + mkfile = fileFixify(mkfile, qmake_getpwd()); + project->values("QMAKE_PBX_PRESCRIPT_BUILDPHASES").append(phase_key); + t << "\t\t" << phase_key << " = {\n" + << "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("files", ProStringList(), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXShellScriptBuildPhase", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", "Qt Sublibs") << ";\n" + << "\t\t\t" << writeSettings("shellPath", "/bin/sh") << "\n" + << "\t\t\t" << writeSettings("shellScript", "make -C " + IoUtils::shellQuoteUnix(qmake_getpwd()) + " -f " + IoUtils::shellQuoteUnix(mkfile)) << ";\n" + << "\t\t};\n"; + } + + if (!project->isEmpty("QMAKE_PRE_LINK")) { + QString phase_key = keyFor("QMAKE_PBX_PRELINK_BUILDPHASE"); + project->values("QMAKE_PBX_BUILDPHASES").append(phase_key); + t << "\t\t" << phase_key << " = {\n" + << "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("files", ProStringList(), SettingsAsList, 4) << ";\n" + // The build phases are not executed in the order they are defined, but by their + // resolved dependenices, so we have to ensure that this phase is run after the + // compilation phase, and before the link phase. Making the phase depend on all the + // object files, and "write" to the list of files to link achieves that. + << "\t\t\t" << writeSettings("inputPaths", ProStringList("$(OBJECT_FILE_DIR_$(CURRENT_VARIANT))/$(CURRENT_ARCH)/*" + Option::obj_ext), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("outputPaths", ProStringList("$(LINK_FILE_LIST_$(CURRENT_VARIANT)_$(CURRENT_ARCH))"), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXShellScriptBuildPhase", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", "Qt Prelink") << ";\n" + << "\t\t\t" << writeSettings("shellPath", "/bin/sh") << ";\n" + << "\t\t\t" << writeSettings("shellScript", project->values("QMAKE_PRE_LINK")) << ";\n" + << "\t\t};\n"; + } + + //LIBRARY BUILDPHASE + if(!project->isEmpty("QMAKE_PBX_LIBRARIES")) { + tmp = project->values("QMAKE_PBX_LIBRARIES"); + if(!tmp.isEmpty()) { + QString grp("Frameworks"), key = keyFor(grp); + project->values("QMAKE_PBX_GROUPS").append(key); + t << "\t\t" << key << " = {\n" + << "\t\t\t" << writeSettings("children", project->values("QMAKE_PBX_LIBRARIES"), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", escapeFilePath(grp)) << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "") << ";\n" + << "\t\t};\n"; + } + } + { + QString grp("Link Binary With Libraries"), key = keyFor(grp); + project->values("QMAKE_PBX_BUILDPHASES").append(key); + t << "\t\t" << key << " = {\n" + << "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("files", project->values("QMAKE_PBX_BUILD_LIBRARIES"), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXFrameworksBuildPhase", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", escapeFilePath(grp)) << ";\n" + << "\t\t};\n"; + } + + if (!project->isEmpty("QMAKE_POST_LINK")) { + QString phase_key = keyFor("QMAKE_PBX_POSTLINK_BUILDPHASE"); + project->values("QMAKE_PBX_BUILDPHASES").append(phase_key); + t << "\t\t" << phase_key << " = {\n" + << "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("files", ProStringList(), SettingsAsList, 4) << ";\n" + // The build phases are not executed in the order they are defined, but by their + // resolved dependenices, so we have to ensure the phase is run after linking. + << "\t\t\t" << writeSettings("inputPaths", ProStringList("$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)"), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXShellScriptBuildPhase", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", "Qt Postlink") << ";\n" + << "\t\t\t" << writeSettings("shellPath", "/bin/sh") << ";\n" + << "\t\t\t" << writeSettings("shellScript", project->values("QMAKE_POST_LINK")) << ";\n" + << "\t\t};\n"; + } + + if (!project->isEmpty("DESTDIR")) { + QString phase_key = keyFor("QMAKE_PBX_TARGET_COPY_PHASE"); + QString destDir = project->first("DESTDIR").toQString(); + destDir = fixForOutput(destDir); + destDir = fileInfo(Option::fixPathToLocalOS(destDir)).absoluteFilePath(); + project->values("QMAKE_PBX_BUILDPHASES").append(phase_key); + t << "\t\t" << phase_key << " = {\n" + << "\t\t\t" << writeSettings("isa", "PBXShellScriptBuildPhase", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", "Project Copy") << ";\n" + << "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("files", ProStringList(), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("inputPaths", ProStringList(), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("outputPaths", ProStringList(), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("shellPath", "/bin/sh") << ";\n" + << "\t\t\t" << writeSettings("shellScript", fixForOutput("cp -r $BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME " + escapeFilePath(destDir))) << ";\n" + << "\t\t};\n"; + } + // Copy Bundle Resources + if (!project->isEmpty("QMAKE_BUNDLE_DATA")) { + ProStringList bundle_file_refs; + ProStringList bundle_resources_files; + + bool useCopyResourcesPhase = project->isActiveConfig("app_bundle") && project->first("TEMPLATE") == "app"; + + //all bundle data + const ProStringList &bundle_data = project->values("QMAKE_BUNDLE_DATA"); + for(int i = 0; i < bundle_data.count(); i++) { + ProStringList bundle_files; + ProString path = project->first(ProKey(bundle_data[i] + ".path")); + //all files + const ProStringList &files = project->values(ProKey(bundle_data[i] + ".files")); + for(int file = 0; file < files.count(); file++) { + QString fn = files[file].toQString(); + QString file_ref_key = keyFor("QMAKE_PBX_BUNDLE_DATA_FILE_REF." + bundle_data[i] + "-" + fn); + bundle_file_refs += file_ref_key; + t << "\t\t" << file_ref_key << " = {\n" + << "\t\t\t" << writeSettings("isa", "PBXFileReference", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("path", escapeFilePath(fn)) << ";\n" + << "\t\t\t" << writeSettings("sourceTree", sourceTreeForFile(fn)) << ";\n" + << "\t\t};\n"; + QString file_key = keyFor("QMAKE_PBX_BUNDLE_DATA_FILE." + bundle_data[i] + "-" + fn); + bundle_files += file_key; + t << "\t\t" << file_key << " = {\n" + << "\t\t\t" << writeSettings("fileRef", file_ref_key) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXBuildFile", SettingsNoQuote) << ";\n" + << "\t\t};\n"; + } + + if (!useCopyResourcesPhase || !path.isEmpty()) { + // The resource copy phase doesn't support paths, so we have to use + // a regular file copy phase (which doesn't optimize the resources). + QString phase_key = keyFor("QMAKE_PBX_BUNDLE_COPY." + bundle_data[i]); + if (!project->isEmpty(ProKey(bundle_data[i] + ".version"))) { + //### + } + + project->values("QMAKE_PBX_BUILDPHASES").append(phase_key); + t << "\t\t" << phase_key << " = {\n" + << "\t\t\t" << writeSettings("name", "Copy '" + bundle_data[i] + "' Files to Bundle") << ";\n" + << "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("dstPath", escapeFilePath(path)) << ";\n" + << "\t\t\t" << writeSettings("dstSubfolderSpec", "1", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("files", bundle_files, SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXCopyFilesBuildPhase", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";\n" + << "\t\t};\n"; + } else { + // Otherwise we leave it to the resource copy phase below + bundle_resources_files += bundle_files; + } + } + + if (useCopyResourcesPhase) { + if (!project->isEmpty("ICON")) { + ProString icon = project->first("ICON"); + if (icon.length() >= 2 && (icon.at(0) == '"' || icon.at(0) == '\'') && icon.endsWith(icon.at(0))) + icon = icon.mid(1, icon.length() - 2); + bundle_resources_files += keyFor(icon + ".BUILDABLE"); + } + + QString grp("Copy Bundle Resources"), key = keyFor(grp); + project->values("QMAKE_PBX_BUILDPHASES").append(key); + t << "\t\t" << key << " = {\n" + << "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("files", bundle_resources_files, SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXResourcesBuildPhase", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", escapeFilePath(grp)) << ";\n" + << "\t\t};\n"; + } + + QString bundle_data_key = keyFor("QMAKE_PBX_BUNDLE_DATA"); + project->values("QMAKE_PBX_GROUPS").append(bundle_data_key); + t << "\t\t" << bundle_data_key << " = {\n" + << "\t\t\t" << writeSettings("children", bundle_file_refs, SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", "Bundle Resources") << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "") << ";\n" + << "\t\t};\n"; + } + + //REFERENCE + project->values("QMAKE_PBX_PRODUCTS").append(keyFor(pbx_dir + "QMAKE_PBX_REFERENCE")); + t << "\t\t" << keyFor(pbx_dir + "QMAKE_PBX_REFERENCE") << " = {\n" + << "\t\t\t" << writeSettings("isa", "PBXFileReference", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("includeInIndex", "0", SettingsNoQuote) << ";\n"; + if(project->first("TEMPLATE") == "app") { + ProString targ = project->first("QMAKE_ORIG_TARGET"); + if(project->isActiveConfig("bundle") && !project->isEmpty("QMAKE_BUNDLE_EXTENSION")) { + if(!project->isEmpty("QMAKE_BUNDLE_NAME")) + targ = project->first("QMAKE_BUNDLE_NAME"); + targ += project->first("QMAKE_BUNDLE_EXTENSION"); + if(!project->isEmpty("QMAKE_PBX_BUNDLE_TYPE")) + t << "\t\t\t" << writeSettings("explicitFileType", project->first("QMAKE_PBX_BUNDLE_TYPE")) + ";\n"; + } else if(project->isActiveConfig("app_bundle")) { + if(!project->isEmpty("QMAKE_APPLICATION_BUNDLE_NAME")) + targ = project->first("QMAKE_APPLICATION_BUNDLE_NAME"); + targ += ".app"; + t << "\t\t\t" << writeSettings("explicitFileType", "wrapper.application") << ";\n"; + } else { + t << "\t\t\t" << writeSettings("explicitFileType", "compiled.mach-o.executable") << ";\n"; + } + QString app = (!project->isEmpty("DESTDIR") ? project->first("DESTDIR") + project->first("QMAKE_ORIG_TARGET") : + qmake_getpwd()) + Option::dir_sep + targ; + t << "\t\t\t" << writeSettings("path", escapeFilePath(targ)) << ";\n"; + } else { + ProString lib = project->first("QMAKE_ORIG_TARGET"); + if(project->isActiveConfig("staticlib")) { + lib = project->first("TARGET"); + } else if(!project->isActiveConfig("lib_bundle")) { + if(project->isActiveConfig("plugin")) + lib = project->first("TARGET"); + else + lib = project->first("TARGET_"); + } + int slsh = lib.lastIndexOf(Option::dir_sep); + if(slsh != -1) + lib = lib.right(lib.length() - slsh - 1); + if(project->isActiveConfig("bundle") && !project->isEmpty("QMAKE_BUNDLE_EXTENSION")) { + if(!project->isEmpty("QMAKE_BUNDLE_NAME")) + lib = project->first("QMAKE_BUNDLE_NAME"); + lib += project->first("QMAKE_BUNDLE_EXTENSION"); + if(!project->isEmpty("QMAKE_PBX_BUNDLE_TYPE")) + t << "\t\t\t" << writeSettings("explicitFileType", project->first("QMAKE_PBX_BUNDLE_TYPE")) << ";\n"; + } else if(!project->isActiveConfig("staticlib") && project->isActiveConfig("lib_bundle")) { + if(!project->isEmpty("QMAKE_FRAMEWORK_BUNDLE_NAME")) + lib = project->first("QMAKE_FRAMEWORK_BUNDLE_NAME"); + lib += ".framework"; + t << "\t\t\t" << writeSettings("explicitFileType", "wrapper.framework") << ";\n"; + } else { + t << "\t\t\t" << writeSettings("explicitFileType", "compiled.mach-o.dylib") << ";\n"; + } + t << "\t\t\t" << writeSettings("path", escapeFilePath(lib)) << ";\n"; + } + t << "\t\t\t" << writeSettings("sourceTree", "BUILT_PRODUCTS_DIR", SettingsNoQuote) << ";\n" + << "\t\t};\n"; + { //Products group + QString grp("Products"), key = keyFor(grp); + project->values("QMAKE_PBX_GROUPS").append(key); + t << "\t\t" << key << " = {\n" + << "\t\t\t" << writeSettings("children", project->values("QMAKE_PBX_PRODUCTS"), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", "Products") << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "") << ";\n" + << "\t\t};\n"; + } + + //DUMP EVERYTHING THAT TIES THE ABOVE TOGETHER + //ROOT_GROUP + t << "\t\t" << keyFor("QMAKE_PBX_ROOT_GROUP") << " = {\n" + << "\t\t\t" << writeSettings("children", project->values("QMAKE_PBX_GROUPS"), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("name", escapeFilePath(project->first("QMAKE_ORIG_TARGET"))) << ";\n" + << "\t\t\t" << writeSettings("sourceTree", "") << ";\n" + << "\t\t};\n"; + + { + QString aggregate_target_key = keyFor(pbx_dir + "QMAKE_PBX_AGGREGATE_TARGET"); + project->values("QMAKE_PBX_TARGETS").append(aggregate_target_key); + t << "\t\t" << aggregate_target_key << " = {\n" + << "\t\t\t" << writeSettings("buildPhases", project->values("QMAKE_PBX_PRESCRIPT_BUILDPHASES"), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("dependencies", ProStringList(), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("buildConfigurationList", keyFor("QMAKE_PBX_BUILDCONFIG_LIST_TARGET"), SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXAggregateTarget", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("buildRules", ProStringList(), SettingsAsList) << ";\n" + << "\t\t\t" << writeSettings("productName", "Qt Preprocess") << ";\n" + << "\t\t\t" << writeSettings("name", "Qt Preprocess") << ";\n" + << "\t\t};\n"; + + QString aggregate_target_dep_key = keyFor(pbx_dir + "QMAKE_PBX_AGGREGATE_TARGET_DEP"); + t << "\t\t" << aggregate_target_dep_key << " = {\n" + << "\t\t\t" << writeSettings("isa", "PBXTargetDependency", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("target", aggregate_target_key) << ";\n" + << "\t\t};\n"; + + project->values("QMAKE_PBX_TARGET_DEPENDS").append(aggregate_target_dep_key); + } + + //TARGET + QString target_key = keyFor(pbx_dir + "QMAKE_PBX_TARGET"); + project->values("QMAKE_PBX_TARGETS").prepend(target_key); + t << "\t\t" << target_key << " = {\n" + << "\t\t\t" << writeSettings("buildPhases", project->values("QMAKE_PBX_BUILDPHASES"), + SettingsAsList, 4) << ";\n"; + t << "\t\t\t" << writeSettings("dependencies", project->values("QMAKE_PBX_TARGET_DEPENDS"), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("productReference", keyFor(pbx_dir + "QMAKE_PBX_REFERENCE")) << ";\n"; + t << "\t\t\t" << writeSettings("buildConfigurationList", keyFor("QMAKE_PBX_BUILDCONFIG_LIST_TARGET"), SettingsNoQuote) << ";\n"; + t << "\t\t\t" << writeSettings("isa", "PBXNativeTarget", SettingsNoQuote) << ";\n"; + t << "\t\t\t" << writeSettings("buildRules", ProStringList(), SettingsAsList) << ";\n"; + if(project->first("TEMPLATE") == "app") { + if (!project->isEmpty("QMAKE_PBX_PRODUCT_TYPE")) { + t << "\t\t\t" << writeSettings("productType", project->first("QMAKE_PBX_PRODUCT_TYPE")) << ";\n"; + } else { + if (project->isActiveConfig("app_bundle")) + t << "\t\t\t" << writeSettings("productType", "com.apple.product-type.application") << ";\n"; + else + t << "\t\t\t" << writeSettings("productType", "com.apple.product-type.tool") << ";\n"; + } + t << "\t\t\t" << writeSettings("name", escapeFilePath(project->first("QMAKE_ORIG_TARGET"))) << ";\n" + << "\t\t\t" << writeSettings("productName", escapeFilePath(project->first("QMAKE_ORIG_TARGET"))) << ";\n"; + } else { + ProString lib = project->first("QMAKE_ORIG_TARGET"); + if(!project->isActiveConfig("lib_bundle") && !project->isActiveConfig("staticlib")) + lib.prepend("lib"); + t << "\t\t\t" << writeSettings("name", escapeFilePath(lib)) << ";\n" + << "\t\t\t" << writeSettings("productName", escapeFilePath(lib)) << ";\n"; + if (!project->isEmpty("QMAKE_PBX_PRODUCT_TYPE")) + t << "\t\t\t" << writeSettings("productType", project->first("QMAKE_PBX_PRODUCT_TYPE")) << ";\n"; + else if (project->isActiveConfig("staticlib")) + t << "\t\t\t" << writeSettings("productType", "com.apple.product-type.library.static") << ";\n"; + else if (project->isActiveConfig("lib_bundle")) + t << "\t\t\t" << writeSettings("productType", "com.apple.product-type.framework") << ";\n"; + else + t << "\t\t\t" << writeSettings("productType", "com.apple.product-type.library.dynamic") << ";\n"; + } + if(!project->isEmpty("DESTDIR")) + t << "\t\t\t" << writeSettings("productInstallPath", escapeFilePath(project->first("DESTDIR"))) << ";\n"; + t << "\t\t};\n"; + //DEBUG/RELEASE + QString defaultConfig; + for(int as_release = 0; as_release < 2; as_release++) + { + QString configName = (as_release ? "Release" : "Debug"); + + QMap settings; + settings.insert("COPY_PHASE_STRIP", (as_release ? "YES" : "NO")); + settings.insert("GCC_GENERATE_DEBUGGING_SYMBOLS", as_release ? "NO" : "YES"); + if(!as_release) + settings.insert("GCC_OPTIMIZATION_LEVEL", "0"); + if(project->isActiveConfig("sdk") && !project->isEmpty("QMAKE_MAC_SDK")) + settings.insert("SDKROOT", project->first("QMAKE_MAC_SDK").toQString()); + { + const ProStringList &l = project->values("QMAKE_MAC_XCODE_SETTINGS"); + for(int i = 0; i < l.size(); ++i) { + ProString name = l.at(i); + const ProKey buildKey(name + ".build"); + if (!project->isEmpty(buildKey)) { + const QString build = project->values(buildKey).first().toQString(); + if (build.toLower() != configName.toLower()) + continue; + } + const QString value = project->values(ProKey(name + ".value")).join(QString(Option::field_sep)); + const ProKey nkey(name + ".name"); + if (!project->isEmpty(nkey)) + name = project->values(nkey).first(); + settings.insert(name.toQString(), value); + } + } + if (project->first("TEMPLATE") == "app") { + settings.insert("PRODUCT_NAME", fixForOutput(project->first("QMAKE_ORIG_TARGET").toQString())); + } else { + ProString lib = project->first("QMAKE_ORIG_TARGET"); + if (!project->isActiveConfig("lib_bundle") && !project->isActiveConfig("staticlib")) + lib.prepend("lib"); + settings.insert("PRODUCT_NAME", escapeFilePath(lib.toQString())); + } + + if (project->isActiveConfig("debug") != (bool)as_release) + defaultConfig = configName; + for (int i = 0; i < buildConfigGroups.size(); i++) { + QString key = keyFor("QMAKE_PBX_BUILDCONFIG_" + configName + buildConfigGroups.at(i)); + project->values(ProKey("QMAKE_PBX_BUILDCONFIGS_" + buildConfigGroups.at(i))).append(key); + t << "\t\t" << key << " = {\n" + << "\t\t\t" << writeSettings("isa", "XCBuildConfiguration", SettingsNoQuote) << ";\n" + << "\t\t\tbuildSettings = {\n"; + for (QMap::Iterator set_it = settings.begin(); set_it != settings.end(); ++set_it) + t << "\t\t\t\t" << writeSettings(set_it.key(), set_it.value()) << ";\n"; + if (buildConfigGroups.at(i) == QLatin1String("PROJECT")) { + if (!project->isEmpty("QMAKE_XCODE_GCC_VERSION")) + t << "\t\t\t\t" << writeSettings("GCC_VERSION", project->first("QMAKE_XCODE_GCC_VERSION"), SettingsNoQuote) << ";\n"; + ProString program = project->first("QMAKE_CC"); + if (!program.isEmpty()) + t << "\t\t\t\t" << writeSettings("CC", fixForOutput(findProgram(program))) << ";\n"; + program = project->first("QMAKE_CXX"); + // Xcode will automatically take care of using CC with the right -x option, + // and will actually break if we pass CPLUSPLUS, by adding an additional set of "++" + if (!program.isEmpty() && !program.contains("clang++")) + t << "\t\t\t\t" << writeSettings("CPLUSPLUS", fixForOutput(findProgram(program))) << ";\n"; + program = project->first("QMAKE_LINK"); + if (!program.isEmpty()) + t << "\t\t\t\t" << writeSettings("LDPLUSPLUS", fixForOutput(findProgram(program))) << ";\n"; + + if ((project->first("TEMPLATE") == "app" && project->isActiveConfig("app_bundle")) || + (project->first("TEMPLATE") == "lib" && !project->isActiveConfig("staticlib") && + project->isActiveConfig("lib_bundle"))) { + QString plist = fileFixify(project->first("QMAKE_INFO_PLIST").toQString(), Option::output_dir, input_dir); + if (plist.isEmpty()) + plist = specdir() + QDir::separator() + "Info.plist." + project->first("TEMPLATE"); + if (exists(plist)) { + QFile plist_in_file(plist); + if (plist_in_file.open(QIODevice::ReadOnly)) { + QTextStream plist_in(&plist_in_file); + QString plist_in_text = plist_in.readAll(); + plist_in_text = plist_in_text.replace("@ICON@", + (project->isEmpty("ICON") ? QString("") : project->first("ICON").toQString().section(Option::dir_sep, -1))); + if (project->first("TEMPLATE") == "app") { + plist_in_text = plist_in_text.replace("@EXECUTABLE@", project->first("QMAKE_ORIG_TARGET").toQString()); + } else { + plist_in_text = plist_in_text.replace("@LIBRARY@", project->first("QMAKE_ORIG_TARGET").toQString()); + } + QString bundlePrefix = project->first("QMAKE_TARGET_BUNDLE_PREFIX").toQString(); + if (bundlePrefix.isEmpty()) + bundlePrefix = "com.yourcompany"; + plist_in_text = plist_in_text.replace("@BUNDLEIDENTIFIER@", bundlePrefix + "." + QLatin1String("${PRODUCT_NAME:rfc1034identifier}")); + if (!project->values("VERSION").isEmpty()) { + plist_in_text = plist_in_text.replace("@SHORT_VERSION@", project->first("VER_MAJ") + "." + + project->first("VER_MIN")); + } + plist_in_text = plist_in_text.replace("@TYPEINFO@", + (project->isEmpty("QMAKE_PKGINFO_TYPEINFO") + ? QString::fromLatin1("????") : project->first("QMAKE_PKGINFO_TYPEINFO").left(4).toQString())); + QString plist_dir; + if (!project->isEmpty("PLIST_DIR")) + plist_dir = project->first("PLIST_DIR").toQString(); + QString plist_in_filename = QFileInfo(plist_in_file).fileName(); + QFile plist_out_file(plist_dir + plist_in_filename); +// QFile plist_out_file("Info.plist"); + if (plist_out_file.open(QIODevice::WriteOnly | QIODevice::Text)) { + QTextStream plist_out(&plist_out_file); + plist_out << plist_in_text; +// t << "\t\t\t\t" << writeSettings("INFOPLIST_FILE", "Info.plist") << ";\n"; + t << "\t\t\t\t" << writeSettings("INFOPLIST_FILE", fixForOutput(plist_dir + plist_in_filename)) << ";\n"; + } + } + } else { + warn_msg(WarnLogic, "Could not resolve Info.plist: '%s'. Check if QMAKE_INFO_PLIST points to a valid file.", plist.toLatin1().constData()); + } + } + + t << "\t\t\t\t" << writeSettings("SYMROOT", escapeFilePath(qmake_getpwd())) << ";\n"; + + if (!project->isEmpty("DESTDIR")) { + ProString dir = project->first("DESTDIR"); + if (QDir::isRelativePath(dir.toQString())) + dir.prepend(qmake_getpwd() + Option::dir_sep); + t << "\t\t\t\t" << writeSettings("INSTALL_DIR", dir) << ";\n"; + } + + if (project->first("TEMPLATE") == "lib") + t << "\t\t\t\t" << writeSettings("INSTALL_PATH", ProStringList()) << ";\n"; + + if (!project->isEmpty("VERSION") && project->first("VERSION") != "0.0.0") { + t << "\t\t\t\t" << writeSettings("DYLIB_CURRENT_VERSION", project->first("VER_MAJ")+"."+project->first("VER_MIN")+"."+project->first("VER_PAT")) << ";\n"; + if (project->isEmpty("COMPAT_VERSION")) + t << "\t\t\t\t" << writeSettings("DYLIB_COMPATIBILITY_VERSION", project->first("VER_MAJ")+"."+project->first("VER_MIN")) << ";\n"; + if (project->first("TEMPLATE") == "lib" && !project->isActiveConfig("staticlib") && + project->isActiveConfig("lib_bundle")) + t << "\t\t\t\t" << writeSettings("FRAMEWORK_VERSION", project->first("QMAKE_FRAMEWORK_VERSION")) << ";\n"; + } + if (!project->isEmpty("COMPAT_VERSION")) + t << "\t\t\t\t" << writeSettings("DYLIB_COMPATIBILITY_VERSION", project->first("COMPAT_VERSION")) << ";\n"; + + if (!project->isEmpty("QMAKE_MACOSX_DEPLOYMENT_TARGET")) + t << "\t\t\t\t" << writeSettings("MACOSX_DEPLOYMENT_TARGET", project->first("QMAKE_MACOSX_DEPLOYMENT_TARGET")) << ";\n"; + if (!project->isEmpty("QMAKE_IOS_DEPLOYMENT_TARGET")) + t << "\t\t\t\t" << writeSettings("IPHONEOS_DEPLOYMENT_TARGET", project->first("QMAKE_IOS_DEPLOYMENT_TARGET")) << ";\n"; + + if (!project->isEmpty("QMAKE_XCODE_CODE_SIGN_IDENTITY")) + t << "\t\t\t\t" << writeSettings("CODE_SIGN_IDENTITY", project->first("QMAKE_XCODE_CODE_SIGN_IDENTITY")) << ";\n"; + + tmp = project->values("QMAKE_PBX_VARS"); + for (int i = 0; i < tmp.count(); i++) { + QString var = tmp[i].toQString(), val = QString::fromLocal8Bit(qgetenv(var.toLatin1().constData())); + if (val.isEmpty() && var == "TB") + val = "/usr/bin/"; + t << "\t\t\t\t" << writeSettings(var, escapeFilePath(val)) << ";\n"; + } + if (!project->isEmpty("PRECOMPILED_HEADER")) { + t << "\t\t\t\t" << writeSettings("GCC_PRECOMPILE_PREFIX_HEADER", "YES") << ";\n" + << "\t\t\t\t" << writeSettings("GCC_PREFIX_HEADER", escapeFilePath(project->first("PRECOMPILED_HEADER"))) << ";\n"; + } + t << "\t\t\t\t" << writeSettings("HEADER_SEARCH_PATHS", fixListForOutput("INCLUDEPATH") + ProStringList(fixForOutput(specdir())), SettingsAsList, 5) << ";\n" + << "\t\t\t\t" << writeSettings("LIBRARY_SEARCH_PATHS", fixListForOutput("QMAKE_PBX_LIBPATHS"), SettingsAsList, 5) << ";\n" + << "\t\t\t\t" << writeSettings("FRAMEWORK_SEARCH_PATHS", fixListForOutput("QMAKE_FRAMEWORKPATH"), + !project->values("QMAKE_FRAMEWORKPATH").isEmpty() ? SettingsAsList : 0, 5) << ";\n"; + + { + ProStringList cflags = project->values("QMAKE_CFLAGS"); + const ProStringList &prl_defines = project->values("PRL_EXPORT_DEFINES"); + for (int i = 0; i < prl_defines.size(); ++i) + cflags += "-D" + prl_defines.at(i); + const ProStringList &defines = project->values("DEFINES"); + for (int i = 0; i < defines.size(); ++i) + cflags += "-D" + defines.at(i); + t << "\t\t\t\t" << writeSettings("OTHER_CFLAGS", fixListForOutput(cflags), SettingsAsList, 5) << ";\n"; + } + { + ProStringList cxxflags = project->values("QMAKE_CXXFLAGS"); + const ProStringList &prl_defines = project->values("PRL_EXPORT_DEFINES"); + for (int i = 0; i < prl_defines.size(); ++i) + cxxflags += "-D" + prl_defines.at(i); + const ProStringList &defines = project->values("DEFINES"); + for (int i = 0; i < defines.size(); ++i) + cxxflags += "-D" + defines.at(i); + t << "\t\t\t\t" << writeSettings("OTHER_CPLUSPLUSFLAGS", fixListForOutput(cxxflags), SettingsAsList, 5) << ";\n"; + } + if (!project->isActiveConfig("staticlib")) { + t << "\t\t\t\t" << writeSettings("OTHER_LDFLAGS", + fixListForOutput("SUBLIBS") + + fixListForOutput("QMAKE_LFLAGS") + + fixListForOutput("QMAKE_LIBS") + + fixListForOutput("QMAKE_LIBS_PRIVATE"), + SettingsAsList, 6) << ";\n"; + } + const ProStringList &archs = !project->values("QMAKE_XCODE_ARCHS").isEmpty() ? + project->values("QMAKE_XCODE_ARCHS") : project->values("QT_ARCH"); + if (!archs.isEmpty()) + t << "\t\t\t\t" << writeSettings("ARCHS", archs) << ";\n"; + if (!project->isEmpty("OBJECTS_DIR")) + t << "\t\t\t\t" << writeSettings("OBJROOT", escapeFilePath(project->first("OBJECTS_DIR").toQString())) << ";\n"; + } else { + if (project->first("TEMPLATE") == "app") { + t << "\t\t\t\t" << writeSettings("PRODUCT_NAME", fixForOutput(project->first("QMAKE_ORIG_TARGET").toQString())) << ";\n"; + } else { + if (!project->isActiveConfig("plugin") && project->isActiveConfig("staticlib")) + t << "\t\t\t\t" << writeSettings("LIBRARY_STYLE", "STATIC") << ";\n"; + else + t << "\t\t\t\t" << writeSettings("LIBRARY_STYLE", "DYNAMIC") << ";\n"; + ProString lib = project->first("QMAKE_ORIG_TARGET"); + if (!project->isActiveConfig("lib_bundle") && !project->isActiveConfig("staticlib")) + lib.prepend("lib"); + t << "\t\t\t\t" << writeSettings("PRODUCT_NAME", escapeFilePath(lib)) << ";\n"; + } + } + t << "\t\t\t};\n" + << "\t\t\t" << writeSettings("name", configName) << ";\n" + << "\t\t};\n"; + } + } + for (int i = 0; i < buildConfigGroups.size(); i++) { + t << "\t\t" << keyFor("QMAKE_PBX_BUILDCONFIG_LIST_" + buildConfigGroups.at(i)) << " = {\n" + << "\t\t\t" << writeSettings("isa", "XCConfigurationList", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("buildConfigurations", project->values(ProKey("QMAKE_PBX_BUILDCONFIGS_" + buildConfigGroups.at(i))), SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("defaultConfigurationIsVisible", "0", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("defaultConfigurationName", defaultConfig) << ";\n" + << "\t\t};\n"; + } + //ROOT + t << "\t\t" << keyFor("QMAKE_PBX_ROOT") << " = {\n" + << "\t\t\t" << writeSettings("hasScannedForEncodings", "1", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("compatibilityVersion", "Xcode 3.2") << ";\n" + << "\t\t\t" << writeSettings("isa", "PBXProject", SettingsNoQuote) << ";\n" + << "\t\t\t" << writeSettings("mainGroup", keyFor("QMAKE_PBX_ROOT_GROUP")) << ";\n" + << "\t\t\t" << writeSettings("productRefGroup", keyFor("Products")) << ";\n"; + t << "\t\t\t" << writeSettings("buildConfigurationList", keyFor("QMAKE_PBX_BUILDCONFIG_LIST_PROJECT")) << ";\n"; + t << "\t\t\t" << writeSettings("projectDirPath", ProStringList()) << ";\n" + << "\t\t\t" << writeSettings("projectRoot", "") << ";\n" + << "\t\t\t" << writeSettings("targets", project->values("QMAKE_PBX_TARGETS"), SettingsAsList, 4) << ";\n" + << "\t\t};\n"; + + // FIXME: Deal with developmentRegion and knownRegions for QMAKE_PBX_ROOT + + //FOOTER + t << "\t};\n" + << "\t" << writeSettings("rootObject", keyFor("QMAKE_PBX_ROOT")) << ";\n" + << "}\n"; + + if(project->isActiveConfig("generate_pbxbuild_makefile")) { + QString mkwrap = fileFixify(pbx_dir + Option::dir_sep + ".." + Option::dir_sep + project->first("MAKEFILE"), + qmake_getpwd()); + QFile mkwrapf(mkwrap); + if(mkwrapf.open(QIODevice::WriteOnly | QIODevice::Text)) { + writingUnixMakefileGenerator = true; + debug_msg(1, "pbuilder: Creating file: %s", mkwrap.toLatin1().constData()); + QTextStream mkwrapt(&mkwrapf); + writeHeader(mkwrapt); + const char cleans[] = "preprocess_clean "; + mkwrapt << "#This is a makefile wrapper for PROJECT BUILDER\n" + << "all:\n\t" + << "cd " << project->first("QMAKE_ORIG_TARGET") << projectSuffix() << "/ && " << pbxbuild() << "\n" + << "install: all\n\t" + << "cd " << project->first("QMAKE_ORIG_TARGET") << projectSuffix() << "/ && " << pbxbuild() << " install\n" + << "distclean clean: preprocess_clean\n\t" + << "cd " << project->first("QMAKE_ORIG_TARGET") << projectSuffix() << "/ && " << pbxbuild() << " clean\n" + << (!did_preprocess ? cleans : "") << ":\n"; + if(did_preprocess) + mkwrapt << cleans << ":\n\t" + << "make -f " + << pbx_dir << Option::dir_sep << "qt_preprocess.mak $@\n"; + writingUnixMakefileGenerator = false; + } + } + + qmake_setpwd(input_dir); + + return true; +} + +QString +ProjectBuilderMakefileGenerator::findProgram(const ProString &prog) +{ + QString ret = prog.toQString(); + if(QDir::isRelativePath(ret)) { + QStringList paths = QString(qgetenv("PATH")).split(':'); + for(int i = 0; i < paths.size(); ++i) { + QString path = paths.at(i) + "/" + prog; + if(exists(path)) { + ret = path; + break; + } + } + } + return ret; +} + +QString +ProjectBuilderMakefileGenerator::fixForOutput(const QString &values) +{ + //get the environment variables references + QRegExp reg_var("\\$\\((.*)\\)"); + for(int rep = 0; (rep = reg_var.indexIn(values, rep)) != -1;) { + if(project->values("QMAKE_PBX_VARS").indexOf(reg_var.cap(1)) == -1) + project->values("QMAKE_PBX_VARS").append(reg_var.cap(1)); + rep += reg_var.matchedLength(); + } + + return values; +} + +ProStringList +ProjectBuilderMakefileGenerator::fixListForOutput(const char *where) +{ + return fixListForOutput(project->values(where)); +} + +ProStringList +ProjectBuilderMakefileGenerator::fixListForOutput(const ProStringList &l) +{ + ProStringList ret; + for(int i = 0; i < l.count(); i++) + ret += fixForOutput(l[i].toQString()); + return ret; +} + +QString +ProjectBuilderMakefileGenerator::keyFor(const QString &block) +{ +#if 1 //This make this code much easier to debug.. + if(project->isActiveConfig("no_pb_munge_key")) + return block; +#endif + QString ret; + if(!keys.contains(block)) { + ret = qtSha1(block.toUtf8()).left(24).toUpper(); + keys.insert(block, ret); + } else { + ret = keys[block]; + } + return ret; +} + +bool +ProjectBuilderMakefileGenerator::openOutput(QFile &file, const QString &build) const +{ + if(QDir::isRelativePath(file.fileName())) + file.setFileName(Option::output_dir + "/" + file.fileName()); //pwd when qmake was run + QFileInfo fi(fileInfo(file.fileName())); + if(fi.suffix() != "pbxproj" || file.fileName().isEmpty()) { + QString output = file.fileName(); + if(fi.isDir()) + output += QDir::separator(); + if(!output.endsWith(projectSuffix())) { + if(file.fileName().isEmpty() || fi.isDir()) { + if(project->first("TEMPLATE") == "subdirs" || project->isEmpty("QMAKE_ORIG_TARGET")) + output += fileInfo(project->projectFile()).baseName(); + else + output += project->first("QMAKE_ORIG_TARGET").toQString(); + } + output += projectSuffix() + QDir::separator(); + } else if(output[(int)output.length() - 1] != QDir::separator()) { + output += QDir::separator(); + } + output += QString("project.pbxproj"); + output = unescapeFilePath(output); + file.setFileName(output); + } + bool ret = UnixMakefileGenerator::openOutput(file, build); + ((ProjectBuilderMakefileGenerator*)this)->pbx_dir = Option::output_dir.section(Option::dir_sep, 0, -1); + Option::output_dir = pbx_dir.section(Option::dir_sep, 0, -2); + return ret; +} + +/* This function is such a hack it is almost pointless, but it + eliminates the warning message from ProjectBuilder that the project + file is for an older version. I guess this could be used someday if + the format of the output is dependant upon the version of + ProjectBuilder as well. +*/ +int +ProjectBuilderMakefileGenerator::pbuilderVersion() const +{ + QString ret; + if(!project->isEmpty("QMAKE_PBUILDER_VERSION")) { + ret = project->first("QMAKE_PBUILDER_VERSION").toQString(); + } else { + QString version, version_plist = project->first("QMAKE_PBUILDER_VERSION_PLIST").toQString(); + if(version_plist.isEmpty()) { +#ifdef Q_OS_DARWIN + ret = QLatin1String("34"); + QCFType cfurl; + // Check for XCode 4 first + OSStatus err = LSFindApplicationForInfo(0, CFSTR("com.apple.dt.Xcode"), 0, 0, &cfurl); + // Now check for XCode 3 + if (err == kLSApplicationNotFoundErr) + err = LSFindApplicationForInfo(0, CFSTR("com.apple.Xcode"), 0, 0, &cfurl); + if (err == noErr) { + QCFType bundle = CFBundleCreate(0, cfurl); + if (bundle) { + CFStringRef str = CFStringRef(CFBundleGetValueForInfoDictionaryKey(bundle, + CFSTR("CFBundleShortVersionString"))); + if (str) { + QStringList versions = QCFString::toQString(str).split(QLatin1Char('.')); + int versionMajor = versions.at(0).toInt(); + int versionMinor = versions.at(1).toInt(); + if (versionMajor >= 3) { + ret = QLatin1String("46"); + } else if (versionMajor >= 2) { + ret = QLatin1String("42"); + } else if (versionMajor == 1 && versionMinor >= 5) { + ret = QLatin1String("39"); + } + } + } + } +#else + if(exists("/Developer/Applications/Xcode.app/Contents/version.plist")) + version_plist = "/Developer/Applications/Xcode.app/Contents/version.plist"; + else + version_plist = "/Developer/Applications/Project Builder.app/Contents/version.plist"; +#endif + } else { + version_plist = version_plist.replace(QRegExp("\""), ""); + } + if (ret.isEmpty()) { + QFile version_file(version_plist); + if (version_file.open(QIODevice::ReadOnly)) { + debug_msg(1, "pbuilder: version.plist: Reading file: %s", version_plist.toLatin1().constData()); + QTextStream plist(&version_file); + + bool in_dict = false; + QString current_key; + QRegExp keyreg("^(.*)$"), stringreg("^(.*)$"); + while(!plist.atEnd()) { + QString line = plist.readLine().trimmed(); + if(line == "") + in_dict = true; + else if(line == "") + in_dict = false; + else if(in_dict) { + if(keyreg.exactMatch(line)) + current_key = keyreg.cap(1); + else if(current_key == "CFBundleShortVersionString" && stringreg.exactMatch(line)) + version = stringreg.cap(1); + } + } + plist.flush(); + version_file.close(); + } else { + debug_msg(1, "pbuilder: version.plist: Failure to open %s", version_plist.toLatin1().constData()); + } + if(version.isEmpty() && version_plist.contains("Xcode")) { + ret = "39"; + } else { + int versionMajor = version.left(1).toInt(); + if(versionMajor >= 2) + ret = "42"; + else if(version == "1.5") + ret = "39"; + else if(version == "1.1") + ret = "34"; + } + } + } + + if(!ret.isEmpty()) { + bool ok; + int int_ret = ret.toInt(&ok); + if(ok) { + debug_msg(1, "pbuilder: version.plist: Got version: %d", int_ret); + if (int_ret < 46) + warn_msg(WarnLogic, "XCode version is too old, at least XCode 3.2 is required"); + return int_ret; + } + } + debug_msg(1, "pbuilder: version.plist: Fallback to default version"); + return 46; //my fallback +} + +int +ProjectBuilderMakefileGenerator::reftypeForFile(const QString &where) +{ + int ret = 0; //absolute is the default.. + if(QDir::isRelativePath(unescapeFilePath(where))) + ret = 4; //relative + return ret; +} + +QString ProjectBuilderMakefileGenerator::sourceTreeForFile(const QString &where) +{ + Q_UNUSED(where) + // We always use absolute paths, instead of maintaining the SRCROOT + // build variable and making files relative to that. + return QLatin1String(""); +} + +QString +ProjectBuilderMakefileGenerator::projectSuffix() const +{ + const int pbVersion = pbuilderVersion(); + if(pbVersion >= 42) + return ".xcodeproj"; + else if(pbVersion >= 38) + return ".xcode"; + return ".pbproj"; +} + +QString +ProjectBuilderMakefileGenerator::pbxbuild() +{ + if(exists("/usr/bin/pbbuild")) + return "pbbuild"; + if(exists("/usr/bin/xcodebuild")) + return "xcodebuild"; + return (pbuilderVersion() >= 38 ? "xcodebuild" : "pbxbuild"); +} + +QString +ProjectBuilderMakefileGenerator::escapeFilePath(const QString &path) const +{ +#if 1 + //in the middle of generating a Makefile! + if(writingUnixMakefileGenerator) + return UnixMakefileGenerator::escapeFilePath(path); + + //generating stuff for the xml file! + QString ret = path; + if(!ret.isEmpty()) { + ret = unescapeFilePath(ret); + debug_msg(2, "EscapeFilePath: %s -> %s", path.toLatin1().constData(), ret.toLatin1().constData()); + } + return ret; +#else + return UnixMakefileGenerator::escapeFilePath(path); +#endif +} + +static QString quotedStringLiteral(const QString &value) +{ + QString result; + const int len = value.length(); + result.reserve(int(len * 1.1) + 2); + + result += QLatin1Char('"'); + + // Escape + for (int i = 0; i < len; ++i) { + QChar character = value.at(i);; + ushort code = character.unicode(); + switch (code) { + case '\\': + result += QLatin1String("\\\\"); + break; + case '"': + result += QLatin1String("\\\""); + break; + case '\b': + result += QLatin1String("\\b"); + break; + case '\n': + result += QLatin1String("\\n"); + break; + case '\r': + result += QLatin1String("\\r"); + break; + case '\t': + result += QLatin1String("\\t"); + break; + default: + if (code >= 32 && code <= 127) + result += character; + else + result += QLatin1String("\\u") + QString::number(code, 16).rightJustified(4, '0'); + } + } + + result += QLatin1Char('"'); + + result.squeeze(); + return result; +} + +QString +ProjectBuilderMakefileGenerator::writeSettings(const QString &var, const ProStringList &vals, int flags, int indent_level) +{ + QString ret; + bool shouldQuote = !((flags & SettingsNoQuote)); + + QString newline = "\n"; + for(int i = 0; i < indent_level; ++i) + newline += "\t"; + + static QRegExp allowedVariableCharacters("^[a-zA-Z0-9_]*$"); + ret += var.contains(allowedVariableCharacters) ? var : quotedStringLiteral(var); + + ret += " = "; + + if(flags & SettingsAsList) { + ret += "(" + newline; + for(int i = 0, count = 0; i < vals.size(); ++i) { + QString val = vals.at(i).toQString(); + if(!val.isEmpty()) { + if(count++ > 0) + ret += "," + newline; + if (shouldQuote) + val = quotedStringLiteral(val); + ret += val; + } + } + ret += ")"; + } else { + QString val = vals.join(QLatin1Char(' ')); + if (shouldQuote) + val = quotedStringLiteral(val); + ret += val; + } + return ret; +} + +QT_END_NAMESPACE diff --git a/Telegram/_qt_5_3_0_patch/qtbase/qmake/generators/makefile.cpp b/Telegram/_qt_5_3_0_patch/qtbase/qmake/generators/makefile.cpp new file mode 100644 index 000000000..6eba1ef6c --- /dev/null +++ b/Telegram/_qt_5_3_0_patch/qtbase/qmake/generators/makefile.cpp @@ -0,0 +1,3378 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the qmake application of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "makefile.h" +#include "option.h" +#include "cachekeys.h" +#include "meta.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(Q_OS_UNIX) +#include +#else +#include +#endif +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +// Well, Windows doesn't have this, so here's the macro +#ifndef S_ISDIR +# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) +#endif + +bool MakefileGenerator::canExecute(const QStringList &cmdline, int *a) const +{ + int argv0 = -1; + for(int i = 0; i < cmdline.count(); ++i) { + if(!cmdline.at(i).contains('=')) { + argv0 = i; + break; + } + } + if(a) + *a = argv0; + if(argv0 != -1) { + const QString c = Option::fixPathToLocalOS(cmdline.at(argv0), true); + if(exists(c)) + return true; + } + return false; +} + +QString MakefileGenerator::mkdir_p_asstring(const QString &dir, bool escape) const +{ + QString edir = escape ? escapeFilePath(Option::fixPathToTargetOS(dir, false, false)) : dir; + return "@" + makedir.arg(edir); +} + +bool MakefileGenerator::mkdir(const QString &in_path) const +{ + QString path = Option::fixPathToLocalOS(in_path); + if(QFile::exists(path)) + return true; + + QDir d; + if(path.startsWith(QDir::separator())) { + d.cd(QString(QDir::separator())); + path.remove(0, 1); + } + bool ret = true; +#ifdef Q_OS_WIN + bool driveExists = true; + if(!QDir::isRelativePath(path)) { + if(QFile::exists(path.left(3))) { + d.cd(path.left(3)); + path.remove(0, 3); + } else { + warn_msg(WarnLogic, "Cannot access drive '%s' (%s)", + path.left(3).toLatin1().data(), path.toLatin1().data()); + driveExists = false; + } + } + if(driveExists) +#endif + { + QStringList subs = path.split(QDir::separator()); + for(QStringList::Iterator subit = subs.begin(); subit != subs.end(); ++subit) { + if(!d.cd(*subit)) { + d.mkdir((*subit)); + if(d.exists((*subit))) { + d.cd((*subit)); + } else { + ret = false; + break; + } + } + } + } + return ret; +} + +// ** base makefile generator +MakefileGenerator::MakefileGenerator() : + init_opath_already(false), init_already(false), no_io(false), project(0) +{ +} + + +void +MakefileGenerator::verifyCompilers() +{ + ProValueMap &v = project->variables(); + ProStringList &quc = v["QMAKE_EXTRA_COMPILERS"]; + for(int i = 0; i < quc.size(); ) { + bool error = false; + const ProString &comp = quc.at(i); + const ProKey okey(comp + ".output"); + if (v[okey].isEmpty()) { + const ProKey ofkey(comp + ".output_function"); + if (!v[ofkey].isEmpty()) { + v[okey].append("${QMAKE_FUNC_FILE_IN_" + v[ofkey].first() + "}"); + } else { + error = true; + warn_msg(WarnLogic, "Compiler: %s: No output file specified", comp.toLatin1().constData()); + } + } else if (v[ProKey(comp + ".input")].isEmpty()) { + error = true; + warn_msg(WarnLogic, "Compiler: %s: No input variable specified", comp.toLatin1().constData()); + } + if(error) + quc.removeAt(i); + else + ++i; + } +} + +void +MakefileGenerator::initOutPaths() +{ + if(init_opath_already) + return; + verifyCompilers(); + init_opath_already = true; + ProValueMap &v = project->variables(); + //for shadow builds + if(!v.contains("QMAKE_ABSOLUTE_SOURCE_PATH")) { + if (Option::globals->do_cache && !project->cacheFile().isEmpty() && + v.contains("QMAKE_ABSOLUTE_SOURCE_ROOT")) { + QString root = v["QMAKE_ABSOLUTE_SOURCE_ROOT"].first().toQString(); + root = QDir::fromNativeSeparators(root); + if(!root.isEmpty()) { + QFileInfo fi = fileInfo(project->cacheFile()); + if(!fi.makeAbsolute()) { + QString cache_r = fi.path(), pwd = Option::output_dir; + if(pwd.startsWith(cache_r) && !pwd.startsWith(root)) { + pwd = root + pwd.mid(cache_r.length()); + if(exists(pwd)) + v.insert("QMAKE_ABSOLUTE_SOURCE_PATH", ProStringList(pwd)); + } + } + } + } + } + if(!v["QMAKE_ABSOLUTE_SOURCE_PATH"].isEmpty()) { + ProString &asp = v["QMAKE_ABSOLUTE_SOURCE_PATH"].first(); + asp = QDir::fromNativeSeparators(asp.toQString()); + if(asp.isEmpty() || asp == Option::output_dir) //if they're the same, why bother? + v["QMAKE_ABSOLUTE_SOURCE_PATH"].clear(); + } + + QString currentDir = qmake_getpwd(); //just to go back to + + //some builtin directories + if(project->isEmpty("PRECOMPILED_DIR") && !project->isEmpty("OBJECTS_DIR")) + v["PRECOMPILED_DIR"] = v["OBJECTS_DIR"]; + static const char * const dirs[] = { "OBJECTS_DIR", "DESTDIR", + "SUBLIBS_DIR", "DLLDESTDIR", + "PRECOMPILED_DIR", "PLIST_DIR", 0 }; + for (int x = 0; dirs[x]; x++) { + const ProKey dkey(dirs[x]); + if (v[dkey].isEmpty()) + continue; + const ProString orig_path = v[dkey].first(); + + ProString &pathRef = v[dkey].first(); + pathRef = fileFixify(pathRef.toQString(), Option::output_dir, Option::output_dir); + +#ifdef Q_OS_WIN + // We don't want to add a separator for DLLDESTDIR on Windows (###why?) + if(!(dirs[x] == "DLLDESTDIR")) +#endif + { + if(!pathRef.endsWith(Option::dir_sep)) + pathRef += Option::dir_sep; + } + + if (noIO() || (project->first("TEMPLATE") == "subdirs")) + continue; + + QString path = project->first(dkey).toQString(); //not to be changed any further + path = fileFixify(path, currentDir, Option::output_dir); + debug_msg(3, "Fixed output_dir %s (%s) into %s", dirs[x], + orig_path.toLatin1().constData(), path.toLatin1().constData()); + if(!mkdir(path)) + warn_msg(WarnLogic, "%s: Cannot access directory '%s'", dirs[x], + path.toLatin1().constData()); + } + + //out paths from the extra compilers + const ProStringList &quc = project->values("QMAKE_EXTRA_COMPILERS"); + for (ProStringList::ConstIterator it = quc.begin(); it != quc.end(); ++it) { + QString tmp_out = project->first(ProKey(*it + ".output")).toQString(); + if(tmp_out.isEmpty()) + continue; + const ProStringList &tmp = project->values(ProKey(*it + ".input")); + for (ProStringList::ConstIterator it2 = tmp.begin(); it2 != tmp.end(); ++it2) { + ProStringList &inputs = project->values((*it2).toKey()); + for (ProStringList::Iterator input = inputs.begin(); input != inputs.end(); ++input) { + QString finp = fileFixify((*input).toQString(), Option::output_dir, Option::output_dir); + *input = ProString(finp); + QString path = unescapeFilePath(replaceExtraCompilerVariables(tmp_out, finp, QString())); + path = Option::fixPathToTargetOS(path); + int slash = path.lastIndexOf(Option::dir_sep); + if(slash != -1) { + path = path.left(slash); + // Make out path only if it does not contain makefile variables + if(!path.contains("${")) + if(path != "." && + !mkdir(fileFixify(path, qmake_getpwd(), Option::output_dir))) + warn_msg(WarnLogic, "%s: Cannot access directory '%s'", + (*it).toLatin1().constData(), path.toLatin1().constData()); + } + } + } + } + + if(!v["DESTDIR"].isEmpty()) { + QDir d(v["DESTDIR"].first().toQString()); + if(Option::fixPathToLocalOS(d.absolutePath()) == Option::fixPathToLocalOS(Option::output_dir)) + v.remove("DESTDIR"); + } +} + +QMakeProject +*MakefileGenerator::projectFile() const +{ + return project; +} + +void +MakefileGenerator::setProjectFile(QMakeProject *p) +{ + if(project) + return; + project = p; + if (project->isActiveConfig("win32")) + target_mode = TARG_WIN_MODE; + else if (project->isActiveConfig("mac")) + target_mode = TARG_MAC_MODE; + else + target_mode = TARG_UNIX_MODE; + init(); + findLibraries(); + if(Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE && + project->isActiveConfig("link_prl")) //load up prl's' + processPrlFiles(); +} + +ProStringList +MakefileGenerator::findFilesInVPATH(ProStringList l, uchar flags, const QString &vpath_var) +{ + ProStringList vpath; + const ProValueMap &v = project->variables(); + for(int val_it = 0; val_it < l.count(); ) { + bool remove_file = false; + ProString &val = l[val_it]; + if(!val.isEmpty()) { + QString qval = val.toQString(); + QString file = fixEnvVariables(qval); + if (file.isEmpty()) { + ++val_it; + continue; + } + if(!(flags & VPATH_NoFixify)) + file = fileFixify(file, qmake_getpwd(), Option::output_dir); + if (file.at(0) == '\"' && file.at(file.length() - 1) == '\"') + file = file.mid(1, file.length() - 2); + + if(exists(file)) { + ++val_it; + continue; + } + bool found = false; + if (QDir::isRelativePath(qval)) { + if(vpath.isEmpty()) { + if(!vpath_var.isEmpty()) + vpath = v[ProKey(vpath_var)]; + vpath += v["VPATH"] + v["QMAKE_ABSOLUTE_SOURCE_PATH"]; + if(Option::output_dir != qmake_getpwd()) + vpath << Option::output_dir; + } + for (ProStringList::Iterator vpath_it = vpath.begin(); + vpath_it != vpath.end(); ++vpath_it) { + QString real_dir = Option::fixPathToLocalOS((*vpath_it).toQString()); + if(exists(real_dir + QDir::separator() + val)) { + ProString dir = (*vpath_it); + if(!dir.endsWith(Option::dir_sep)) + dir += Option::dir_sep; + val = dir + val; + if(!(flags & VPATH_NoFixify)) + val = fileFixify(val.toQString()); + found = true; + debug_msg(1, "Found file through vpath %s -> %s", + file.toLatin1().constData(), val.toLatin1().constData()); + break; + } + } + } + if(!found) { + QString dir, regex = val.toQString(), real_dir; + if(regex.lastIndexOf(Option::dir_sep) != -1) { + dir = regex.left(regex.lastIndexOf(Option::dir_sep) + 1); + real_dir = dir; + if(!(flags & VPATH_NoFixify)) + real_dir = fileFixify(real_dir, qmake_getpwd(), Option::output_dir) + '/'; + regex.remove(0, dir.length()); + } + if(real_dir.isEmpty() || exists(real_dir)) { + QStringList files = QDir(real_dir).entryList(QStringList(regex)); + if(files.isEmpty()) { + debug_msg(1, "%s:%d Failure to find %s in vpath (%s)", + __FILE__, __LINE__, + val.toLatin1().constData(), vpath.join("::").toLatin1().constData()); + if(flags & VPATH_RemoveMissingFiles) + remove_file = true; + else if(flags & VPATH_WarnMissingFiles) + warn_msg(WarnLogic, "Failure to find: %s", val.toLatin1().constData()); + } else { + l.removeAt(val_it); + QString a; + for(int i = (int)files.count()-1; i >= 0; i--) { + if(files[i] == "." || files[i] == "..") + continue; + a = real_dir + files[i]; + if(!(flags & VPATH_NoFixify)) + a = fileFixify(a); + l.insert(val_it, a); + } + } + } else { + debug_msg(1, "%s:%d Cannot match %s%s, as %s does not exist.", + __FILE__, __LINE__, real_dir.toLatin1().constData(), + regex.toLatin1().constData(), real_dir.toLatin1().constData()); + if(flags & VPATH_RemoveMissingFiles) + remove_file = true; + else if(flags & VPATH_WarnMissingFiles) + warn_msg(WarnLogic, "Failure to find: %s", val.toLatin1().constData()); + } + } + } + if(remove_file) + l.removeAt(val_it); + else + ++val_it; + } + return l; +} + +void +MakefileGenerator::initCompiler(const MakefileGenerator::Compiler &comp) +{ + ProValueMap &v = project->variables(); + ProStringList &l = v[ProKey(comp.variable_in)]; + // find all the relevant file inputs + if(!init_compiler_already.contains(comp.variable_in)) { + init_compiler_already.insert(comp.variable_in, true); + if(!noIO()) + l = findFilesInVPATH(l, (comp.flags & Compiler::CompilerRemoveNoExist) ? + VPATH_RemoveMissingFiles : VPATH_WarnMissingFiles, "VPATH_" + comp.variable_in); + } +} + +void +MakefileGenerator::init() +{ + initOutPaths(); + if(init_already) + return; + verifyCompilers(); + init_already = true; + + ProValueMap &v = project->variables(); + + if (v["TARGET"].isEmpty()) + warn_msg(WarnLogic, "TARGET is empty"); + + makedir = v["QMAKE_MKDIR_CMD"].join(' '); + chkexists = v["QMAKE_CHK_EXISTS"].join(' '); + if (makedir.isEmpty()) { // Backwards compat with Qt < 5.0.2 specs + if (isWindowsShell()) { + makedir = "if not exist %1 mkdir %1 & if not exist %1 exit 1"; + chkexists = "if not exist %1"; + } else { + makedir = "test -d %1 || mkdir -p %1"; + chkexists = "test -e %1 ||"; + } + } + + if (v["QMAKE_CC_O_FLAG"].isEmpty()) + v["QMAKE_CC_O_FLAG"].append("-o "); + + if (v["QMAKE_LINK_O_FLAG"].isEmpty()) + v["QMAKE_LINK_O_FLAG"].append("-o "); + + setSystemIncludes(v["QMAKE_DEFAULT_INCDIRS"]); + + ProStringList &quc = v["QMAKE_EXTRA_COMPILERS"]; + + //make sure the COMPILERS are in the correct input/output chain order + for(int comp_out = 0, jump_count = 0; comp_out < quc.size(); ++comp_out) { + continue_compiler_chain: + if(jump_count > quc.size()) //just to avoid an infinite loop here + break; + const ProKey vokey(quc.at(comp_out) + ".variable_out"); + if (v.contains(vokey)) { + const ProStringList &outputs = v.value(vokey); + for(int out = 0; out < outputs.size(); ++out) { + for(int comp_in = 0; comp_in < quc.size(); ++comp_in) { + if(comp_in == comp_out) + continue; + const ProKey ikey(quc.at(comp_in) + ".input"); + if (v.contains(ikey)) { + const ProStringList &inputs = v.value(ikey); + for(int in = 0; in < inputs.size(); ++in) { + if(inputs.at(in) == outputs.at(out) && comp_out > comp_in) { + ++jump_count; + //move comp_out to comp_in and continue the compiler chain + // quc.move(comp_out, comp_in); + quc.insert(comp_in, quc.value(comp_out)); + // comp_out > comp_in, so the insertion did move everything up + quc.remove(comp_out + 1); + comp_out = comp_in; + goto continue_compiler_chain; + } + } + } + } + } + } + } + + if(!project->isEmpty("QMAKE_SUBSTITUTES")) { + const ProStringList &subs = v["QMAKE_SUBSTITUTES"]; + for(int i = 0; i < subs.size(); ++i) { + QString sub = subs.at(i).toQString(); + QString inn = sub + ".input", outn = sub + ".output"; + const ProKey innkey(inn), outnkey(outn); + if (v.contains(innkey) || v.contains(outnkey)) { + if (!v.contains(innkey) || !v.contains(outnkey)) { + warn_msg(WarnLogic, "Substitute '%s' has only one of .input and .output", + sub.toLatin1().constData()); + continue; + } + const ProStringList &tinn = v[innkey], &toutn = v[outnkey]; + if (tinn.length() != 1) { + warn_msg(WarnLogic, "Substitute '%s.input' does not have exactly one value", + sub.toLatin1().constData()); + continue; + } + if (toutn.length() != 1) { + warn_msg(WarnLogic, "Substitute '%s.output' does not have exactly one value", + sub.toLatin1().constData()); + continue; + } + inn = fileFixify(tinn.first().toQString(), qmake_getpwd()); + outn = fileFixify(toutn.first().toQString(), qmake_getpwd(), Option::output_dir); + } else { + inn = fileFixify(sub, qmake_getpwd()); + if (!QFile::exists(inn)) { + // random insanity for backwards compat: .in file specified with absolute out dir + inn = fileFixify(sub); + } + if(!inn.endsWith(".in")) { + warn_msg(WarnLogic, "Substitute '%s' does not end with '.in'", + inn.toLatin1().constData()); + continue; + } + outn = fileFixify(inn.left(inn.length()-3), qmake_getpwd(), Option::output_dir); + } + + const ProKey confign(sub + ".CONFIG"); + bool verbatim = false; + if (v.contains(confign)) + verbatim = v[confign].contains(QLatin1String("verbatim")); + + QFile in(inn); + if (in.open(QFile::ReadOnly)) { + QByteArray contentBytes; + if (verbatim) { + contentBytes = in.readAll(); + } else { + QString contents; + QStack state; + enum { IN_CONDITION, MET_CONDITION, PENDING_CONDITION }; + for (int count = 1; !in.atEnd(); ++count) { + QString line = QString::fromUtf8(in.readLine()); + if (line.startsWith("!!IF ")) { + if (state.isEmpty() || state.top() == IN_CONDITION) { + QString test = line.mid(5, line.length()-(5+1)); + if (project->test(test, inn, count)) + state.push(IN_CONDITION); + else + state.push(PENDING_CONDITION); + } else { + state.push(MET_CONDITION); + } + } else if (line.startsWith("!!ELIF ")) { + if (state.isEmpty()) { + warn_msg(WarnLogic, "(%s:%d): Unexpected else condition", + in.fileName().toLatin1().constData(), count); + } else if (state.top() == PENDING_CONDITION) { + QString test = line.mid(7, line.length()-(7+1)); + if (project->test(test, inn, count)) { + state.pop(); + state.push(IN_CONDITION); + } + } else if (state.top() == IN_CONDITION) { + state.pop(); + state.push(MET_CONDITION); + } + } else if (line.startsWith("!!ELSE")) { + if (state.isEmpty()) { + warn_msg(WarnLogic, "(%s:%d): Unexpected else condition", + in.fileName().toLatin1().constData(), count); + } else if (state.top() == PENDING_CONDITION) { + state.pop(); + state.push(IN_CONDITION); + } else if (state.top() == IN_CONDITION) { + state.pop(); + state.push(MET_CONDITION); + } + } else if (line.startsWith("!!ENDIF")) { + if (state.isEmpty()) + warn_msg(WarnLogic, "(%s:%d): Unexpected endif", + in.fileName().toLatin1().constData(), count); + else + state.pop(); + } else if (state.isEmpty() || state.top() == IN_CONDITION) { + contents += project->expand(line, in.fileName(), count); + } + } + contentBytes = contents.toUtf8(); + } + QFile out(outn); + if (out.exists() && out.open(QFile::ReadOnly)) { + QByteArray old = out.readAll(); + if (contentBytes == old) { + v["QMAKE_INTERNAL_INCLUDED_FILES"].append(in.fileName()); + continue; + } + out.close(); + if(!out.remove()) { + warn_msg(WarnLogic, "Cannot clear substitute '%s'", + out.fileName().toLatin1().constData()); + continue; + } + } + mkdir(QFileInfo(out).absolutePath()); + if(out.open(QFile::WriteOnly)) { + v["QMAKE_INTERNAL_INCLUDED_FILES"].append(in.fileName()); + out.write(contentBytes); + } else { + warn_msg(WarnLogic, "Cannot open substitute for output '%s'", + out.fileName().toLatin1().constData()); + } + } else { + warn_msg(WarnLogic, "Cannot open substitute for input '%s'", + in.fileName().toLatin1().constData()); + } + } + } + + int x; + + //build up a list of compilers + QList compilers; + { + const char *builtins[] = { "OBJECTS", "SOURCES", "PRECOMPILED_HEADER", 0 }; + for(x = 0; builtins[x]; ++x) { + Compiler compiler; + compiler.variable_in = builtins[x]; + compiler.flags = Compiler::CompilerBuiltin; + compiler.type = QMakeSourceFileInfo::TYPE_C; + if(!strcmp(builtins[x], "OBJECTS")) + compiler.flags |= Compiler::CompilerNoCheckDeps; + compilers.append(compiler); + } + for (ProStringList::ConstIterator it = quc.begin(); it != quc.end(); ++it) { + const ProStringList &inputs = v[ProKey(*it + ".input")]; + for(x = 0; x < inputs.size(); ++x) { + Compiler compiler; + compiler.variable_in = inputs.at(x).toQString(); + compiler.flags = Compiler::CompilerNoFlags; + const ProStringList &config = v[ProKey(*it + ".CONFIG")]; + if (config.indexOf("ignore_no_exist") != -1) + compiler.flags |= Compiler::CompilerRemoveNoExist; + if (config.indexOf("no_dependencies") != -1) + compiler.flags |= Compiler::CompilerNoCheckDeps; + if (config.indexOf("add_inputs_as_makefile_deps") != -1) + compiler.flags |= Compiler::CompilerAddInputsAsMakefileDeps; + + const ProKey dkey(*it + ".dependency_type"); + ProString dep_type; + if (!project->isEmpty(dkey)) + dep_type = project->first(dkey); + if (dep_type.isEmpty()) + compiler.type = QMakeSourceFileInfo::TYPE_UNKNOWN; + else if(dep_type == "TYPE_UI") + compiler.type = QMakeSourceFileInfo::TYPE_UI; + else + compiler.type = QMakeSourceFileInfo::TYPE_C; + compilers.append(compiler); + } + } + } + { //do the path fixifying + ProStringList paths; + for(x = 0; x < compilers.count(); ++x) { + if(!paths.contains(compilers.at(x).variable_in)) + paths << compilers.at(x).variable_in; + } + paths << "INCLUDEPATH" << "QMAKE_INTERNAL_INCLUDED_FILES" << "PRECOMPILED_HEADER"; + for(int y = 0; y < paths.count(); y++) { + ProStringList &l = v[paths[y].toKey()]; + for (ProStringList::Iterator it = l.begin(); it != l.end(); ++it) { + if((*it).isEmpty()) + continue; + QString fn = (*it).toQString(); + if (exists(fn)) + (*it) = fileFixify(fn); + } + } + } + + if(noIO() || !doDepends() || project->isActiveConfig("GNUmake")) + QMakeSourceFileInfo::setDependencyMode(QMakeSourceFileInfo::NonRecursive); + for(x = 0; x < compilers.count(); ++x) + initCompiler(compilers.at(x)); + + //merge actual compiler outputs into their variable_out. This is done last so that + //files are already properly fixified. + for (ProStringList::Iterator it = quc.begin(); it != quc.end(); ++it) { + const ProKey ikey(*it + ".input"); + const ProKey vokey(*it + ".variable_out"); + const ProStringList &config = project->values(ProKey(*it + ".CONFIG")); + const ProString &tmp_out = project->values(ProKey(*it + ".output")).first(); + if(tmp_out.isEmpty()) + continue; + if (config.indexOf("combine") != -1) { + const ProStringList &compilerInputs = project->values(ikey); + // Don't generate compiler output if it doesn't have input. + if (compilerInputs.isEmpty() || project->values(compilerInputs.first().toKey()).isEmpty()) + continue; + if(tmp_out.indexOf("$") == -1) { + if(!verifyExtraCompiler((*it), QString())) //verify + continue; + QString out = fileFixify(tmp_out.toQString(), Option::output_dir, Option::output_dir); + bool pre_dep = (config.indexOf("target_predeps") != -1); + if (v.contains(vokey)) { + const ProStringList &var_out = v.value(vokey); + for(int i = 0; i < var_out.size(); ++i) { + ProKey v = var_out.at(i).toKey(); + if(v == QLatin1String("SOURCES")) + v = "GENERATED_SOURCES"; + else if(v == QLatin1String("OBJECTS")) + pre_dep = false; + ProStringList &list = project->values(v); + if(!list.contains(out)) + list.append(out); + } + } else if (config.indexOf("no_link") == -1) { + ProStringList &list = project->values("OBJECTS"); + pre_dep = false; + if(!list.contains(out)) + list.append(out); + } else { + ProStringList &list = project->values("UNUSED_SOURCES"); + if(!list.contains(out)) + list.append(out); + } + if(pre_dep) { + ProStringList &list = project->values("PRE_TARGETDEPS"); + if(!list.contains(out)) + list.append(out); + } + } + } else { + const ProStringList &tmp = project->values(ikey); + for (ProStringList::ConstIterator it2 = tmp.begin(); it2 != tmp.end(); ++it2) { + const ProStringList &inputs = project->values((*it2).toKey()); + for (ProStringList::ConstIterator input = inputs.constBegin(); input != inputs.constEnd(); ++input) { + if((*input).isEmpty()) + continue; + QString inpf = (*input).toQString(); + QString in = Option::fixPathToTargetOS(inpf, false); + if (!verifyExtraCompiler((*it).toQString(), in)) //verify + continue; + QString out = replaceExtraCompilerVariables(tmp_out.toQString(), inpf, QString()); + out = fileFixify(out, Option::output_dir, Option::output_dir); + bool pre_dep = (config.indexOf("target_predeps") != -1); + if (v.contains(vokey)) { + const ProStringList &var_out = project->values(vokey); + for(int i = 0; i < var_out.size(); ++i) { + ProKey v = var_out.at(i).toKey(); + if(v == QLatin1String("SOURCES")) + v = "GENERATED_SOURCES"; + else if(v == QLatin1String("OBJECTS")) + pre_dep = false; + ProStringList &list = project->values(v); + if(!list.contains(out)) + list.append(out); + } + } else if (config.indexOf("no_link") == -1) { + pre_dep = false; + ProStringList &list = project->values("OBJECTS"); + if(!list.contains(out)) + list.append(out); + } else { + ProStringList &list = project->values("UNUSED_SOURCES"); + if(!list.contains(out)) + list.append(out); + } + if(pre_dep) { + ProStringList &list = project->values("PRE_TARGETDEPS"); + if(!list.contains(out)) + list.append(out); + } + } + } + } + } + + //handle dependencies + depHeuristicsCache.clear(); + if(!noIO()) { + // dependency paths + ProStringList incDirs = v["DEPENDPATH"] + v["QMAKE_ABSOLUTE_SOURCE_PATH"]; + if(project->isActiveConfig("depend_includepath")) + incDirs += v["INCLUDEPATH"]; + if(!project->isActiveConfig("no_include_pwd")) { + QString pwd = qmake_getpwd(); + if(pwd.isEmpty()) + pwd = "."; + incDirs += pwd; + } + QList deplist; + for (ProStringList::Iterator it = incDirs.begin(); it != incDirs.end(); ++it) + deplist.append(QMakeLocalFileName(unescapeFilePath((*it).toQString()))); + QMakeSourceFileInfo::setDependencyPaths(deplist); + debug_msg(1, "Dependency Directories: %s", incDirs.join(" :: ").toLatin1().constData()); + //cache info + if(project->isActiveConfig("qmake_cache")) { + QString cache_file; + if(!project->isEmpty("QMAKE_INTERNAL_CACHE_FILE")) { + cache_file = QDir::fromNativeSeparators(project->first("QMAKE_INTERNAL_CACHE_FILE").toQString()); + } else { + cache_file = ".qmake.internal.cache"; + if(project->isActiveConfig("build_pass")) + cache_file += ".BUILD." + project->first("BUILD_PASS"); + } + if(cache_file.indexOf('/') == -1) + cache_file.prepend(Option::output_dir + '/'); + QMakeSourceFileInfo::setCacheFile(cache_file); + } + + //add to dependency engine + for(x = 0; x < compilers.count(); ++x) { + const MakefileGenerator::Compiler &comp = compilers.at(x); + if(!(comp.flags & Compiler::CompilerNoCheckDeps)) { + const ProKey ikey(comp.variable_in); + addSourceFiles(v[ikey], QMakeSourceFileInfo::SEEK_DEPS, + (QMakeSourceFileInfo::SourceFileType)comp.type); + + if (comp.flags & Compiler::CompilerAddInputsAsMakefileDeps) { + ProStringList &l = v[ikey]; + for (int i=0; i < l.size(); ++i) { + if(v["QMAKE_INTERNAL_INCLUDED_FILES"].indexOf(l.at(i)) == -1) + v["QMAKE_INTERNAL_INCLUDED_FILES"].append(l.at(i)); + } + } + } + } + } + + processSources(); //remove anything in SOURCES which is included (thus it need not be linked in) + + //all sources and generated sources must be turned into objects at some point (the one builtin compiler) + v["OBJECTS"] += createObjectList(v["SOURCES"]) + createObjectList(v["GENERATED_SOURCES"]); + + //Translation files + if(!project->isEmpty("TRANSLATIONS")) { + ProStringList &trf = project->values("TRANSLATIONS"); + for (ProStringList::Iterator it = trf.begin(); it != trf.end(); ++it) + (*it) = Option::fixPathToLocalOS((*it).toQString()); + } + + if(!project->isActiveConfig("no_include_pwd")) { //get the output_dir into the pwd + if(Option::output_dir != qmake_getpwd()) + project->values("INCLUDEPATH").append("."); + } + + //fix up the target deps + static const char * const fixpaths[] = { "PRE_TARGETDEPS", "POST_TARGETDEPS", 0 }; + for (int path = 0; fixpaths[path]; path++) { + ProStringList &l = v[fixpaths[path]]; + for (ProStringList::Iterator val_it = l.begin(); val_it != l.end(); ++val_it) { + if(!(*val_it).isEmpty()) + (*val_it) = escapeDependencyPath(Option::fixPathToTargetOS((*val_it).toQString(), false, false)); + } + } + + //extra depends + if(!project->isEmpty("DEPENDS")) { + ProStringList &l = v["DEPENDS"]; + for (ProStringList::Iterator it = l.begin(); it != l.end(); ++it) { + const ProStringList &files = v[ProKey(*it + ".file")] + v[ProKey(*it + ".files")]; //why do I support such evil things? + for (ProStringList::ConstIterator file_it = files.begin(); file_it != files.end(); ++file_it) { + QStringList &out_deps = findDependencies((*file_it).toQString()); + const ProStringList &in_deps = v[ProKey(*it + ".depends")]; //even more evilness.. + for (ProStringList::ConstIterator dep_it = in_deps.begin(); dep_it != in_deps.end(); ++dep_it) { + QString dep = (*dep_it).toQString(); + if (exists(dep)) { + out_deps.append(dep); + } else { + QString dir, regex = Option::fixPathToLocalOS(dep); + if(regex.lastIndexOf(Option::dir_sep) != -1) { + dir = regex.left(regex.lastIndexOf(Option::dir_sep) + 1); + regex.remove(0, dir.length()); + } + QStringList files = QDir(dir).entryList(QStringList(regex)); + if(files.isEmpty()) { + warn_msg(WarnLogic, "Dependency for [%s]: Not found %s", (*file_it).toLatin1().constData(), + dep.toLatin1().constData()); + } else { + for(int i = 0; i < files.count(); i++) + out_deps.append(dir + files[i]); + } + } + } + } + } + } + + // escape qmake command + project->values("QMAKE_QMAKE") = + ProStringList(escapeFilePath(Option::fixPathToTargetOS(Option::globals->qmake_abslocation, false))); +} + +bool +MakefileGenerator::processPrlFile(QString &file) +{ + bool ret = false, try_replace_file=false; + QString meta_file, orig_file = file; + if(QMakeMetaInfo::libExists(file)) { + try_replace_file = true; + meta_file = file; + file = ""; + } else { + QString tmp = file; + int ext = tmp.lastIndexOf('.'); + if(ext != -1) + tmp = tmp.left(ext); + meta_file = tmp; + } +// meta_file = fileFixify(meta_file); + QString real_meta_file = Option::fixPathToLocalOS(meta_file); + if(!meta_file.isEmpty()) { + QString f = fileFixify(real_meta_file, qmake_getpwd(), Option::output_dir); + if(QMakeMetaInfo::libExists(f)) { + QMakeMetaInfo libinfo(project); + debug_msg(1, "Processing PRL file: %s", real_meta_file.toLatin1().constData()); + if(!libinfo.readLib(f)) { + fprintf(stderr, "Error processing meta file: %s\n", real_meta_file.toLatin1().constData()); + } else if(project->isActiveConfig("no_read_prl_" + libinfo.type().toLower())) { + debug_msg(2, "Ignored meta file %s [%s]", real_meta_file.toLatin1().constData(), libinfo.type().toLatin1().constData()); + } else { + ret = true; + project->values("QMAKE_CURRENT_PRL_LIBS") = libinfo.values("QMAKE_PRL_LIBS"); + ProStringList &defs = project->values("DEFINES"); + const ProStringList &prl_defs = project->values("PRL_EXPORT_DEFINES"); + foreach (const ProString &def, libinfo.values("QMAKE_PRL_DEFINES")) + if (!defs.contains(def) && prl_defs.contains(def)) + defs.append(def); + if(try_replace_file && !libinfo.isEmpty("QMAKE_PRL_TARGET")) { + QString dir; + int slsh = real_meta_file.lastIndexOf(Option::dir_sep); + if(slsh != -1) + dir = real_meta_file.left(slsh+1); + file = libinfo.first("QMAKE_PRL_TARGET").toQString(); + if(QDir::isRelativePath(file)) + file.prepend(dir); + } + } + } + if(ret) { + QString mf = QMakeMetaInfo::findLib(meta_file); + if(project->values("QMAKE_PRL_INTERNAL_FILES").indexOf(mf) == -1) + project->values("QMAKE_PRL_INTERNAL_FILES").append(mf); + if(project->values("QMAKE_INTERNAL_INCLUDED_FILES").indexOf(mf) == -1) + project->values("QMAKE_INTERNAL_INCLUDED_FILES").append(mf); + } + } + if(try_replace_file && file.isEmpty()) { +#if 0 + warn_msg(WarnLogic, "Found prl [%s] file with no target [%s]!", meta_file.toLatin1().constData(), + orig_file.toLatin1().constData()); +#endif + file = orig_file; + } + return ret; +} + +void +MakefileGenerator::filterIncludedFiles(const char *var) +{ + ProStringList &inputs = project->values(var); + for (ProStringList::Iterator input = inputs.begin(); input != inputs.end(); ) { + if (QMakeSourceFileInfo::included((*input).toQString()) > 0) + input = inputs.erase(input); + else + ++input; + } +} + +void +MakefileGenerator::processPrlFiles() +{ + qFatal("MakefileGenerator::processPrlFiles() called!"); +} + +void +MakefileGenerator::writePrlFile(QTextStream &t) +{ + ProString target = project->first("TARGET"); + int slsh = target.lastIndexOf(Option::dir_sep); + if(slsh != -1) + target.chopFront(slsh + 1); + QString bdir = Option::output_dir; + if(bdir.isEmpty()) + bdir = qmake_getpwd(); + t << "QMAKE_PRL_BUILD_DIR = " << bdir << endl; + + t << "QMAKE_PRO_INPUT = " << project->projectFile().section('/', -1) << endl; + + if(!project->isEmpty("QMAKE_ABSOLUTE_SOURCE_PATH")) + t << "QMAKE_PRL_SOURCE_DIR = " << project->first("QMAKE_ABSOLUTE_SOURCE_PATH") << endl; + t << "QMAKE_PRL_TARGET = " << target << endl; + if(!project->isEmpty("PRL_EXPORT_DEFINES")) + t << "QMAKE_PRL_DEFINES = " << project->values("PRL_EXPORT_DEFINES").join(' ') << endl; + if(!project->isEmpty("PRL_EXPORT_CFLAGS")) + t << "QMAKE_PRL_CFLAGS = " << project->values("PRL_EXPORT_CFLAGS").join(' ') << endl; + if(!project->isEmpty("PRL_EXPORT_CXXFLAGS")) + t << "QMAKE_PRL_CXXFLAGS = " << project->values("PRL_EXPORT_CXXFLAGS").join(' ') << endl; + if(!project->isEmpty("CONFIG")) + t << "QMAKE_PRL_CONFIG = " << project->values("CONFIG").join(' ') << endl; + if(!project->isEmpty("TARGET_VERSION_EXT")) + t << "QMAKE_PRL_VERSION = " << project->first("TARGET_VERSION_EXT") << endl; + else if(!project->isEmpty("VERSION")) + t << "QMAKE_PRL_VERSION = " << project->first("VERSION") << endl; + if(project->isActiveConfig("staticlib") || project->isActiveConfig("explicitlib")) { + ProStringList libs; + if(!project->isEmpty("QMAKE_INTERNAL_PRL_LIBS")) + libs = project->values("QMAKE_INTERNAL_PRL_LIBS"); + else + libs << "QMAKE_LIBS"; //obvious one + if(project->isActiveConfig("staticlib")) + libs << "QMAKE_LIBS_PRIVATE"; + t << "QMAKE_PRL_LIBS = "; + for (ProStringList::Iterator it = libs.begin(); it != libs.end(); ++it) + t << project->values((*it).toKey()).join(' ').replace('\\', "\\\\") << " "; + t << endl; + } +} + +bool +MakefileGenerator::writeProjectMakefile() +{ + QTextStream t(&Option::output); + + //header + writeHeader(t); + + QList targets; + { + ProStringList builds = project->values("BUILDS"); + for (ProStringList::Iterator it = builds.begin(); it != builds.end(); ++it) { + SubTarget *st = new SubTarget; + targets.append(st); + st->makefile = "$(MAKEFILE)." + (*it); + st->name = (*it).toQString(); + const ProKey tkey(*it + ".target"); + st->target = (project->isEmpty(tkey) ? (*it) : project->first(tkey)).toQString(); + } + } + if(project->isActiveConfig("build_all")) { + t << "first: all\n"; + QList::Iterator it; + + //install + t << "install: "; + for(it = targets.begin(); it != targets.end(); ++it) + t << (*it)->target << "-install "; + t << endl; + + //uninstall + t << "uninstall: "; + for(it = targets.begin(); it != targets.end(); ++it) + t << (*it)->target << "-uninstall "; + t << endl; + } else { + t << "first: " << targets.first()->target << endl + << "install: " << targets.first()->target << "-install\n" + << "uninstall: " << targets.first()->target << "-uninstall\n"; + } + + writeSubTargets(t, targets, SubTargetsNoFlags); + if(!project->isActiveConfig("no_autoqmake")) { + for(QList::Iterator it = targets.begin(); it != targets.end(); ++it) + t << (*it)->makefile << ": " << + Option::fixPathToTargetOS(fileFixify(Option::output.fileName())) << endl; + } + qDeleteAll(targets); + return true; +} + +bool +MakefileGenerator::write() +{ + if(!project) + return false; + writePrlFile(); + if(Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE || //write makefile + Option::qmake_mode == Option::QMAKE_GENERATE_PROJECT) { + QTextStream t(&Option::output); + if(!writeMakefile(t)) { +#if 1 + warn_msg(WarnLogic, "Unable to generate output for: %s [TEMPLATE %s]", + Option::output.fileName().toLatin1().constData(), + project->first("TEMPLATE").toLatin1().constData()); + if(Option::output.exists()) + Option::output.remove(); +#endif + } + } + return true; +} + +QString +MakefileGenerator::prlFileName(bool fixify) +{ + QString ret = project->first("TARGET_PRL").toQString(); + if(ret.isEmpty()) + ret = project->first("TARGET").toQString(); + int slsh = ret.lastIndexOf(Option::dir_sep); + if(slsh != -1) + ret.remove(0, slsh); + if(!ret.endsWith(Option::prl_ext)) { + int dot = ret.indexOf('.'); + if(dot != -1) + ret.truncate(dot); + ret += Option::prl_ext; + } + if(!project->isEmpty("QMAKE_BUNDLE")) + ret.prepend(project->first("QMAKE_BUNDLE") + Option::dir_sep); + if(fixify) { + if(!project->isEmpty("DESTDIR")) + ret.prepend(project->first("DESTDIR").toQString()); + ret = Option::fixPathToLocalOS(fileFixify(ret, qmake_getpwd(), Option::output_dir)); + } + return ret; +} + +void +MakefileGenerator::writePrlFile() +{ + if((Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE || + Option::qmake_mode == Option::QMAKE_GENERATE_PRL) + && project->values("QMAKE_FAILED_REQUIREMENTS").isEmpty() + && project->isActiveConfig("create_prl") + && (project->first("TEMPLATE") == "lib" + || project->first("TEMPLATE") == "vclib") + && (!project->isActiveConfig("plugin") || project->isActiveConfig("static"))) { //write prl file + QString local_prl = prlFileName(); + QString prl = fileFixify(local_prl); + mkdir(fileInfo(local_prl).path()); + QFile ft(local_prl); + if(ft.open(QIODevice::WriteOnly)) { + project->values("ALL_DEPS").append(prl); + project->values("QMAKE_INTERNAL_PRL_FILE").append(prl); + QTextStream t(&ft); + writePrlFile(t); + } + } +} + +void +MakefileGenerator::writeObj(QTextStream &t, const char *src) +{ + const ProStringList &srcl = project->values(src); + const ProStringList objl = createObjectList(srcl); + + ProStringList::ConstIterator oit = objl.begin(); + ProStringList::ConstIterator sit = srcl.begin(); + QString stringSrc("$src"); + QString stringObj("$obj"); + for(;sit != srcl.end() && oit != objl.end(); ++oit, ++sit) { + if((*sit).isEmpty()) + continue; + + QString srcf = (*sit).toQString(); + QString dstf = (*oit).toQString(); + t << escapeDependencyPath(dstf) << ": " << escapeDependencyPath(srcf) + << " " << escapeDependencyPaths(findDependencies(srcf)).join(" \\\n\t\t"); + + ProKey comp, cimp; + for(QStringList::Iterator cppit = Option::cpp_ext.begin(); cppit != Option::cpp_ext.end(); ++cppit) { + if((*sit).endsWith((*cppit))) { + comp = "QMAKE_RUN_CXX"; + cimp = "QMAKE_RUN_CXX_IMP"; + break; + } + } + if(comp.isEmpty()) { + comp = "QMAKE_RUN_CC"; + cimp = "QMAKE_RUN_CC_IMP"; + } + bool use_implicit_rule = !project->isEmpty(cimp); + use_implicit_rule = false; + if(use_implicit_rule) { + if(!project->isEmpty("OBJECTS_DIR")) { + use_implicit_rule = false; + } else { + int dot = (*sit).lastIndexOf('.'); + if(dot == -1 || ((*sit).left(dot) + Option::obj_ext != (*oit))) + use_implicit_rule = false; + } + } + if (!use_implicit_rule && !project->isEmpty(comp)) { + QString p = var(comp); + p.replace(stringSrc, escapeFilePath(srcf)); + p.replace(stringObj, escapeFilePath(dstf)); + t << "\n\t" << p; + } + t << endl << endl; + } +} + +QString +MakefileGenerator::filePrefixRoot(const QString &root, const QString &path) +{ + QString ret(root + path); + if(path.length() > 2 && path[1] == ':') //c:\foo + ret = QString(path.mid(0, 2) + root + path.mid(2)); + while(ret.endsWith("\\")) + ret = ret.left(ret.length()-1); + return ret; +} + +void +MakefileGenerator::writeInstalls(QTextStream &t, bool noBuild) +{ + QString rm_dir_contents("-$(DEL_FILE)"); + if (!isWindowsShell()) //ick + rm_dir_contents = "-$(DEL_FILE) -r"; + + QString all_installs, all_uninstalls; + QSet made_dirs, removed_dirs; + const ProStringList &l = project->values("INSTALLS"); + for (ProStringList::ConstIterator it = l.begin(); it != l.end(); ++it) { + const ProKey pvar(*it + ".path"); + const ProStringList &installConfigValues = project->values(ProKey(*it + ".CONFIG")); + if (installConfigValues.indexOf("no_path") == -1 && + installConfigValues.indexOf("dummy_install") == -1 && + project->values(pvar).isEmpty()) { + warn_msg(WarnLogic, "%s is not defined: install target not created\n", pvar.toLatin1().constData()); + continue; + } + + bool do_default = true; + const QString root = "$(INSTALL_ROOT)"; + QString dst; + if (installConfigValues.indexOf("no_path") == -1 && + installConfigValues.indexOf("dummy_install") == -1) { + dst = fileFixify(unescapeFilePath(project->first(pvar).toQString()), FileFixifyAbsolute, false); + if(!dst.endsWith(Option::dir_sep)) + dst += Option::dir_sep; + } + + QStringList tmp, inst, uninst; + //other + ProStringList tmp2 = project->values(ProKey(*it + ".extra")); + if (tmp2.isEmpty()) + tmp2 = project->values(ProKey(*it + ".commands")); //to allow compatible name + if (!tmp2.isEmpty()) { + do_default = false; + inst << tmp2.join(' '); + } + //masks + tmp2 = findFilesInVPATH(project->values(ProKey(*it + ".files")), VPATH_NoFixify); + tmp = fileFixify(tmp2.toQStringList(), FileFixifyAbsolute); + if(!tmp.isEmpty()) { + do_default = false; + QString base_path = project->first(ProKey(*it + ".base")).toQString(); + if (!base_path.isEmpty()) { + base_path = Option::fixPathToTargetOS(base_path, false, true); + if (!base_path.endsWith(Option::dir_sep)) + base_path += Option::dir_sep; + } + for(QStringList::Iterator wild_it = tmp.begin(); wild_it != tmp.end(); ++wild_it) { + QString wild = Option::fixPathToTargetOS((*wild_it), false, false); + QString dirstr = qmake_getpwd(), filestr = wild; + int slsh = filestr.lastIndexOf(Option::dir_sep); + if(slsh != -1) { + dirstr = filestr.left(slsh+1); + filestr.remove(0, slsh+1); + } + if(!dirstr.endsWith(Option::dir_sep)) + dirstr += Option::dir_sep; + QString dst_dir = dst; + if (!base_path.isEmpty()) { + if (!dirstr.startsWith(base_path)) { + warn_msg(WarnLogic, "File %s in install rule %s does not start with base %s", + qPrintable(wild), qPrintable((*it).toQString()), + qPrintable(base_path)); + } else { + QString dir_sfx = dirstr.mid(base_path.length()); + dst_dir += dir_sfx; + if (!dir_sfx.isEmpty() && !made_dirs.contains(dir_sfx)) { + made_dirs.insert(dir_sfx); + QString tmp_dst = fileFixify(dst_dir, FileFixifyAbsolute, false); + tmp_dst.chop(1); + inst << mkdir_p_asstring(filePrefixRoot(root, tmp_dst)); + for (int i = dst.length(); i < dst_dir.length(); i++) { + if (dst_dir.at(i) == Option::dir_sep) { + QString subd = dst_dir.left(i); + if (!removed_dirs.contains(subd)) { + removed_dirs.insert(subd); + tmp_dst = fileFixify(subd, FileFixifyAbsolute, false); + uninst << "-$(DEL_DIR) " + + escapeFilePath(filePrefixRoot(root, tmp_dst)); + } + } + } + } + } + } + bool is_target = (wild == fileFixify(var("TARGET"), FileFixifyAbsolute)); + if(is_target || exists(wild)) { //real file or target + QFileInfo fi(fileInfo(wild)); + QString dst_file = filePrefixRoot(root, dst_dir); + if(fi.isDir() && project->isActiveConfig("copy_dir_files")) { + if(!dst_file.endsWith(Option::dir_sep)) + dst_file += Option::dir_sep; + dst_file += fi.fileName(); + } + QString cmd; + if (fi.isDir()) + cmd = "-$(INSTALL_DIR)"; + else if (is_target || fi.isExecutable()) + cmd = "-$(INSTALL_PROGRAM)"; + else + cmd = "-$(INSTALL_FILE)"; + cmd += " " + escapeFilePath(wild) + " " + escapeFilePath(dst_file); + inst << cmd; + if (!project->isActiveConfig("debug_info") && !project->isActiveConfig("nostrip") && + !fi.isDir() && fi.isExecutable() && !project->isEmpty("QMAKE_STRIP")) + inst << QString("-") + var("QMAKE_STRIP") + " " + + escapeFilePath(filePrefixRoot(root, fileFixify(dst_dir + filestr, FileFixifyAbsolute, false))); + uninst.append(rm_dir_contents + " " + escapeFilePath(filePrefixRoot(root, fileFixify(dst_dir + filestr, FileFixifyAbsolute, false)))); + continue; + } + QString local_dirstr = Option::fixPathToLocalOS(dirstr, true); + QStringList files = QDir(local_dirstr).entryList(QStringList(filestr)); + if (installConfigValues.contains("no_check_exist") && files.isEmpty()) { + QString dst_file = filePrefixRoot(root, dst_dir); + QString cmd; + if (installConfigValues.contains("directory")) { + cmd = QLatin1String("-$(INSTALL_DIR)"); + if (project->isActiveConfig("copy_dir_files")) { + if (!dst_file.endsWith(Option::dir_sep)) + dst_file += Option::dir_sep; + dst_file += filestr; + } + } else if (installConfigValues.contains("executable")) { + cmd = QLatin1String("-$(INSTALL_PROGRAM)"); + } else { + cmd = QLatin1String("-$(INSTALL_FILE)"); + } + cmd += " " + escapeFilePath(wild) + " " + escapeFilePath(dst_file); + inst << cmd; + uninst.append(rm_dir_contents + " " + escapeFilePath(filePrefixRoot(root, fileFixify(dst_dir + filestr, FileFixifyAbsolute, false)))); + } + for(int x = 0; x < files.count(); x++) { + QString file = files[x]; + if(file == "." || file == "..") //blah + continue; + uninst.append(rm_dir_contents + " " + escapeFilePath(filePrefixRoot(root, fileFixify(dst_dir + file, FileFixifyAbsolute, false)))); + QFileInfo fi(fileInfo(dirstr + file)); + QString dst_file = filePrefixRoot(root, fileFixify(dst_dir, FileFixifyAbsolute, false)); + if(fi.isDir() && project->isActiveConfig("copy_dir_files")) { + if(!dst_file.endsWith(Option::dir_sep)) + dst_file += Option::dir_sep; + dst_file += fi.fileName(); + } + QString cmd = QString(fi.isDir() ? "-$(INSTALL_DIR)" : "-$(INSTALL_FILE)") + " " + + escapeFilePath(dirstr + file) + " " + escapeFilePath(dst_file); + inst << cmd; + if (!project->isActiveConfig("debug_info") && !project->isActiveConfig("nostrip") && + !fi.isDir() && fi.isExecutable() && !project->isEmpty("QMAKE_STRIP")) + inst << QString("-") + var("QMAKE_STRIP") + " " + + escapeFilePath(filePrefixRoot(root, fileFixify(dst_dir + file, FileFixifyAbsolute, false))); + } + } + } + QString target; + //default? + if (do_default) + target = defaultInstall((*it).toQString()); + else + target = inst.join("\n\t"); + QString puninst = project->values(ProKey(*it + ".uninstall")).join(' '); + if (!puninst.isEmpty()) + uninst << puninst; + + if (!target.isEmpty() || installConfigValues.indexOf("dummy_install") != -1) { + if (noBuild || installConfigValues.indexOf("no_build") != -1) + t << "install_" << (*it) << ":"; + else if(project->isActiveConfig("build_all")) + t << "install_" << (*it) << ": all"; + else + t << "install_" << (*it) << ": first"; + const ProStringList &deps = project->values(ProKey(*it + ".depends")); + if(!deps.isEmpty()) { + for (ProStringList::ConstIterator dep_it = deps.begin(); dep_it != deps.end(); ++dep_it) { + QString targ = var(ProKey(*dep_it + ".target")); + if(targ.isEmpty()) + targ = (*dep_it).toQString(); + t << " " << escapeDependencyPath(targ); + } + } + t << " FORCE\n\t"; + const ProStringList &dirs = project->values(pvar); + for (ProStringList::ConstIterator pit = dirs.begin(); pit != dirs.end(); ++pit) { + QString tmp_dst = fileFixify((*pit).toQString(), FileFixifyAbsolute, false); + t << mkdir_p_asstring(filePrefixRoot(root, tmp_dst)) << "\n\t"; + } + t << target << endl << endl; + if(!uninst.isEmpty()) { + t << "uninstall_" << (*it) << ": FORCE"; + for (int i = uninst.size(); --i >= 0; ) + t << "\n\t" << uninst.at(i); + t << "\n\t-$(DEL_DIR) " << filePrefixRoot(root, dst) << " \n\n"; + } + t << endl; + + if (installConfigValues.indexOf("no_default_install") == -1) { + all_installs += QString("install_") + (*it) + " "; + if(!uninst.isEmpty()) + all_uninstalls += "uninstall_" + (*it) + " "; + } + } else { + debug_msg(1, "no definition for install %s: install target not created",(*it).toLatin1().constData()); + } + } + t << "install: " << var("INSTALLDEPS") << " " << all_installs + << " FORCE\n\nuninstall: " << all_uninstalls << " " << var("UNINSTALLDEPS") + << " FORCE\n\n"; +} + +QString +MakefileGenerator::var(const ProKey &var) const +{ + return val(project->values(var)); +} + +QString +MakefileGenerator::val(const ProStringList &varList) const +{ + return valGlue(varList, "", " ", ""); +} + +QString +MakefileGenerator::val(const QStringList &varList) const +{ + return valGlue(varList, "", " ", ""); +} + +QString +MakefileGenerator::varGlue(const ProKey &var, const QString &before, const QString &glue, const QString &after) const +{ + return valGlue(project->values(var), before, glue, after); +} + +QString +MakefileGenerator::fileVarGlue(const ProKey &var, const QString &before, const QString &glue, const QString &after) const +{ + ProStringList varList; + foreach (const ProString &val, project->values(var)) + varList << escapeFilePath(Option::fixPathToTargetOS(val.toQString())); + return valGlue(varList, before, glue, after); +} + +QString +MakefileGenerator::valGlue(const ProStringList &varList, const QString &before, const QString &glue, const QString &after) const +{ + QString ret; + for (ProStringList::ConstIterator it = varList.begin(); it != varList.end(); ++it) { + if (!(*it).isEmpty()) { + if (!ret.isEmpty()) + ret += glue; + ret += (*it).toQString(); + } + } + return ret.isEmpty() ? QString("") : before + ret + after; +} + +QString +MakefileGenerator::valGlue(const QStringList &varList, const QString &before, const QString &glue, const QString &after) const +{ + QString ret; + for(QStringList::ConstIterator it = varList.begin(); it != varList.end(); ++it) { + if(!(*it).isEmpty()) { + if(!ret.isEmpty()) + ret += glue; + ret += (*it); + } + } + return ret.isEmpty() ? QString("") : before + ret + after; +} + + +QString +MakefileGenerator::varList(const ProKey &var) const +{ + return valList(project->values(var)); +} + +QString +MakefileGenerator::valList(const ProStringList &varList) const +{ + return valGlue(varList, "", " \\\n\t\t", ""); +} + +QString +MakefileGenerator::valList(const QStringList &varList) const +{ + return valGlue(varList, "", " \\\n\t\t", ""); +} + +ProStringList +MakefileGenerator::createObjectList(const ProStringList &sources) +{ + ProStringList ret; + QString objdir; + if(!project->values("OBJECTS_DIR").isEmpty()) + objdir = project->first("OBJECTS_DIR").toQString(); + for (ProStringList::ConstIterator it = sources.begin(); it != sources.end(); ++it) { + QString sfn = (*it).toQString(); + QFileInfo fi(fileInfo(Option::fixPathToLocalOS(sfn))); + QString dir; + if (project->isActiveConfig("object_parallel_to_source")) { + // The source paths are relative to the output dir, but we need source-relative paths + QString sourceRelativePath = fileFixify(sfn, qmake_getpwd(), Option::output_dir); + sourceRelativePath = Option::fixPathToTargetOS(sourceRelativePath, false); + + if (sourceRelativePath.startsWith(".." + Option::dir_sep)) + sourceRelativePath = fileFixify(sourceRelativePath, FileFixifyAbsolute); + + if (QDir::isAbsolutePath(sourceRelativePath)) + sourceRelativePath.remove(0, sourceRelativePath.indexOf(Option::dir_sep) + 1); + + dir = objdir; // We still respect OBJECTS_DIR + + int lastDirSepPosition = sourceRelativePath.lastIndexOf(Option::dir_sep); + if (lastDirSepPosition != -1) + dir += sourceRelativePath.leftRef(lastDirSepPosition + 1); + + if (!noIO()) { + // Ensure that the final output directory of each object exists + QString outRelativePath = fileFixify(dir, qmake_getpwd(), Option::output_dir); + if (!mkdir(outRelativePath)) + warn_msg(WarnLogic, "Cannot create directory '%s'", outRelativePath.toLatin1().constData()); + } + } else { + dir = objdir; + } + ret.append(dir + fi.completeBaseName() + Option::obj_ext); + } + return ret; +} + +ReplaceExtraCompilerCacheKey::ReplaceExtraCompilerCacheKey(const QString &v, const QStringList &i, const QStringList &o) +{ + static QString doubleColon = QLatin1String("::"); + + hash = 0; + pwd = qmake_getpwd(); + var = v; + { + QStringList il = i; + il.sort(); + in = il.join(doubleColon); + } + { + QStringList ol = o; + ol.sort(); + out = ol.join(doubleColon); + } +} + +bool ReplaceExtraCompilerCacheKey::operator==(const ReplaceExtraCompilerCacheKey &f) const +{ + return (hashCode() == f.hashCode() && + f.in == in && + f.out == out && + f.var == var && + f.pwd == pwd); +} + + +QString +MakefileGenerator::replaceExtraCompilerVariables(const QString &orig_var, const QStringList &in, const QStringList &out) +{ + //lazy cache + ReplaceExtraCompilerCacheKey cacheKey(orig_var, in, out); + QString cacheVal = extraCompilerVariablesCache.value(cacheKey); + if(!cacheVal.isNull()) + return cacheVal; + + //do the work + QString ret = orig_var; + QRegExp reg_var("\\$\\{.*\\}"); + reg_var.setMinimal(true); + for(int rep = 0; (rep = reg_var.indexIn(ret, rep)) != -1; ) { + QStringList val; + const ProString var(ret.mid(rep + 2, reg_var.matchedLength() - 3)); + bool filePath = false; + if(val.isEmpty() && var.startsWith(QLatin1String("QMAKE_VAR_"))) { + const ProKey varname = var.mid(10).toKey(); + val += project->values(varname).toQStringList(); + } + if(val.isEmpty() && var.startsWith(QLatin1String("QMAKE_VAR_FIRST_"))) { + const ProKey varname = var.mid(16).toKey(); + val += project->first(varname).toQString(); + } + + if(val.isEmpty() && !in.isEmpty()) { + if(var.startsWith(QLatin1String("QMAKE_FUNC_FILE_IN_"))) { + filePath = true; + const ProKey funcname = var.mid(19).toKey(); + val += project->expand(funcname, QList() << ProStringList(in)); + } else if(var == QLatin1String("QMAKE_FILE_BASE") || var == QLatin1String("QMAKE_FILE_IN_BASE")) { + //filePath = true; + for(int i = 0; i < in.size(); ++i) { + QFileInfo fi(fileInfo(Option::fixPathToLocalOS(in.at(i)))); + QString base = fi.completeBaseName(); + if(base.isNull()) + base = fi.fileName(); + val += base; + } + } else if(var == QLatin1String("QMAKE_FILE_EXT")) { + filePath = true; + for(int i = 0; i < in.size(); ++i) { + QFileInfo fi(fileInfo(Option::fixPathToLocalOS(in.at(i)))); + QString ext; + // Ensure complementarity with QMAKE_FILE_BASE + int baseLen = fi.completeBaseName().length(); + if(baseLen == 0) + ext = fi.fileName(); + else + ext = fi.fileName().remove(0, baseLen); + val += ext; + } + } else if(var == QLatin1String("QMAKE_FILE_PATH") || var == QLatin1String("QMAKE_FILE_IN_PATH")) { + filePath = true; + for(int i = 0; i < in.size(); ++i) + val += fileInfo(Option::fixPathToLocalOS(in.at(i))).path(); + } else if(var == QLatin1String("QMAKE_FILE_NAME") || var == QLatin1String("QMAKE_FILE_IN")) { + filePath = true; + for(int i = 0; i < in.size(); ++i) + val += fileInfo(Option::fixPathToLocalOS(in.at(i))).filePath(); + + } + } + if(val.isEmpty() && !out.isEmpty()) { + if(var.startsWith(QLatin1String("QMAKE_FUNC_FILE_OUT_"))) { + filePath = true; + const ProKey funcname = var.mid(20).toKey(); + val += project->expand(funcname, QList() << ProStringList(out)); + } else if(var == QLatin1String("QMAKE_FILE_OUT")) { + filePath = true; + for(int i = 0; i < out.size(); ++i) + val += fileInfo(Option::fixPathToLocalOS(out.at(i))).filePath(); + } else if(var == QLatin1String("QMAKE_FILE_OUT_BASE")) { + //filePath = true; + for(int i = 0; i < out.size(); ++i) { + QFileInfo fi(fileInfo(Option::fixPathToLocalOS(out.at(i)))); + QString base = fi.completeBaseName(); + if(base.isNull()) + base = fi.fileName(); + val += base; + } + } + } + if(val.isEmpty() && var.startsWith(QLatin1String("QMAKE_FUNC_"))) { + const ProKey funcname = var.mid(11).toKey(); + val += project->expand(funcname, QList() << ProStringList(in) << ProStringList(out)); + } + + if(!val.isEmpty()) { + QString fullVal; + if(filePath) { + for(int i = 0; i < val.size(); ++i) { + const QString file = Option::fixPathToTargetOS(unescapeFilePath(val.at(i)), false); + if(!fullVal.isEmpty()) + fullVal += " "; + fullVal += escapeFilePath(file); + } + } else { + fullVal = val.join(' '); + } + ret.replace(rep, reg_var.matchedLength(), fullVal); + rep += fullVal.length(); + } else { + rep += reg_var.matchedLength(); + } + } + + //cache the value + extraCompilerVariablesCache.insert(cacheKey, ret); + return ret; +} + +bool +MakefileGenerator::verifyExtraCompiler(const ProString &comp, const QString &file_unfixed) +{ + if(noIO()) + return false; + const QString file = Option::fixPathToLocalOS(file_unfixed); + + const ProStringList &config = project->values(ProKey(comp + ".CONFIG")); + if (config.indexOf("moc_verify") != -1) { + if(!file.isNull()) { + QMakeSourceFileInfo::addSourceFile(file, QMakeSourceFileInfo::SEEK_MOCS); + if(!mocable(file)) { + return false; + } else { + project->values("MOCABLES").append(file); + } + } + } else if (config.indexOf("function_verify") != -1) { + ProString tmp_out = project->values(ProKey(comp + ".output")).first(); + if(tmp_out.isEmpty()) + return false; + ProStringList verify_function = project->values(ProKey(comp + ".verify_function")); + if(verify_function.isEmpty()) + return false; + + for(int i = 0; i < verify_function.size(); ++i) { + bool invert = false; + ProString verify = verify_function.at(i); + if(verify.at(0) == QLatin1Char('!')) { + invert = true; + verify = verify.mid(1); + } + + if (config.indexOf("combine") != -1) { + bool pass = project->test(verify.toKey(), QList() << ProStringList(tmp_out) << ProStringList(file)); + if(invert) + pass = !pass; + if(!pass) + return false; + } else { + const ProStringList &tmp = project->values(ProKey(comp + ".input")); + for (ProStringList::ConstIterator it = tmp.begin(); it != tmp.end(); ++it) { + const ProStringList &inputs = project->values((*it).toKey()); + for (ProStringList::ConstIterator input = inputs.begin(); input != inputs.end(); ++input) { + if((*input).isEmpty()) + continue; + QString inpf = (*input).toQString(); + QString in = fileFixify(Option::fixPathToTargetOS(inpf, false)); + if(in == file) { + bool pass = project->test(verify.toKey(), + QList() << ProStringList(replaceExtraCompilerVariables(tmp_out.toQString(), inpf, QString())) << + ProStringList(file)); + if(invert) + pass = !pass; + if(!pass) + return false; + break; + } + } + } + } + } + } else if (config.indexOf("verify") != -1) { + QString tmp_out = project->values(ProKey(comp + ".output")).first().toQString(); + if(tmp_out.isEmpty()) + return false; + QString tmp_cmd; + const ProKey ckey(comp + ".commands"); + if (!project->isEmpty(ckey)) { + int argv0 = -1; + ProStringList cmdline = project->values(ckey); + for(int i = 0; i < cmdline.count(); ++i) { + if(!cmdline.at(i).contains('=')) { + argv0 = i; + break; + } + } + if(argv0 != -1) { + cmdline[argv0] = Option::fixPathToTargetOS(cmdline.at(argv0).toQString(), false); + tmp_cmd = cmdline.join(' '); + } + } + + if (config.indexOf("combine") != -1) { + QString cmd = replaceExtraCompilerVariables(tmp_cmd, QString(), tmp_out); + if(system(cmd.toLatin1().constData())) + return false; + } else { + const ProStringList &tmp = project->values(ProKey(comp + ".input")); + for (ProStringList::ConstIterator it = tmp.begin(); it != tmp.end(); ++it) { + const ProStringList &inputs = project->values((*it).toKey()); + for (ProStringList::ConstIterator input = inputs.begin(); input != inputs.end(); ++input) { + if((*input).isEmpty()) + continue; + QString inpf = (*input).toQString(); + QString in = fileFixify(Option::fixPathToTargetOS(inpf, false)); + if(in == file) { + QString out = replaceExtraCompilerVariables(tmp_out, inpf, QString()); + QString cmd = replaceExtraCompilerVariables(tmp_cmd, in, out); + if(system(cmd.toLatin1().constData())) + return false; + break; + } + } + } + } + } + return true; +} + +void +MakefileGenerator::writeExtraTargets(QTextStream &t) +{ + const ProStringList &qut = project->values("QMAKE_EXTRA_TARGETS"); + for (ProStringList::ConstIterator it = qut.begin(); it != qut.end(); ++it) { + QString targ = var(ProKey(*it + ".target")), + cmd = var(ProKey(*it + ".commands")), deps; + if(targ.isEmpty()) + targ = (*it).toQString(); + const ProStringList &deplist = project->values(ProKey(*it + ".depends")); + for (ProStringList::ConstIterator dep_it = deplist.begin(); dep_it != deplist.end(); ++dep_it) { + QString dep = var(ProKey(*dep_it + ".target")); + if(dep.isEmpty()) + dep = (*dep_it).toQString(); + deps += " " + escapeDependencyPath(dep); + } + const ProStringList &config = project->values(ProKey(*it + ".CONFIG")); + if (config.indexOf("fix_target") != -1) + targ = fileFixify(targ, Option::output_dir, Option::output_dir); + if (config.indexOf("phony") != -1) + deps += QLatin1String(" FORCE"); + t << escapeDependencyPath(targ) << ":" << deps; + if(!cmd.isEmpty()) + t << "\n\t" << cmd; + t << endl << endl; + } +} + +void +MakefileGenerator::writeExtraCompilerTargets(QTextStream &t) +{ + QString clean_targets; + const ProStringList &quc = project->values("QMAKE_EXTRA_COMPILERS"); + for (ProStringList::ConstIterator it = quc.begin(); it != quc.end(); ++it) { + QString tmp_out = fileFixify(project->first(ProKey(*it + ".output")).toQString(), + Option::output_dir, Option::output_dir); + QString tmp_cmd; + const ProKey ckey(*it + ".commands"); + if (!project->isEmpty(ckey)) { + QStringList cmdline = project->values(ckey).toQStringList(); + int argv0 = findExecutable(cmdline); + if(argv0 != -1) { + cmdline[argv0] = escapeFilePath(Option::fixPathToTargetOS(cmdline.at(argv0), false)); + tmp_cmd = cmdline.join(' '); + } + } + QString tmp_dep_cmd; + QString dep_cd_cmd; + const ProKey dckey(*it + ".depend_command"); + if (!project->isEmpty(dckey)) { + int argv0 = -1; + ProStringList cmdline = project->values(dckey); + for(int i = 0; i < cmdline.count(); ++i) { + if(!cmdline.at(i).contains('=')) { + argv0 = i; + break; + } + } + if(argv0 != -1) { + QString arg = cmdline.at(argv0).toQString(); + const QString c = Option::fixPathToLocalOS(arg, true); + if(exists(c)) { + arg = escapeFilePath(Option::fixPathToLocalOS(arg, false)); + } else { + arg = escapeFilePath(arg); + } + QFileInfo cmdFileInfo(arg); + if (!cmdFileInfo.isAbsolute() || cmdFileInfo.exists()) { + cmdline[argv0] = arg; + tmp_dep_cmd = cmdline.join(' '); + } + } + dep_cd_cmd = QLatin1String("cd ") + + escapeFilePath(Option::fixPathToLocalOS(Option::output_dir, false)) + + QLatin1String(" && "); + } + const ProStringList &vars = project->values(ProKey(*it + ".variables")); + if(tmp_out.isEmpty() || tmp_cmd.isEmpty()) + continue; + ProStringList tmp_inputs; + { + const ProStringList &comp_inputs = project->values(ProKey(*it + ".input")); + for (ProStringList::ConstIterator it2 = comp_inputs.begin(); it2 != comp_inputs.end(); ++it2) { + const ProStringList &tmp = project->values((*it2).toKey()); + for (ProStringList::ConstIterator input = tmp.begin(); input != tmp.end(); ++input) { + QString in = Option::fixPathToTargetOS((*input).toQString(), false); + if(verifyExtraCompiler((*it), in)) + tmp_inputs.append((*input)); + } + } + } + + t << "compiler_" << (*it) << "_make_all:"; + const ProStringList &config = project->values(ProKey(*it + ".CONFIG")); + if (config.indexOf("combine") != -1) { + // compilers with a combined input only have one output + QString input = project->first(ProKey(*it + ".output")).toQString(); + t << " " << escapeDependencyPath(Option::fixPathToTargetOS(replaceExtraCompilerVariables(tmp_out, input, QString()))); + } else { + for (ProStringList::ConstIterator input = tmp_inputs.begin(); input != tmp_inputs.end(); ++input) { + t << " " << escapeDependencyPath(Option::fixPathToTargetOS(replaceExtraCompilerVariables(tmp_out, (*input).toQString(), QString()))); + } + } + t << endl; + + if (config.indexOf("no_clean") == -1) { + QString tmp_clean = project->values(ProKey(*it + ".clean")).join(' '); + QString tmp_clean_cmds = project->values(ProKey(*it + ".clean_commands")).join(' '); + if(!tmp_inputs.isEmpty()) + clean_targets += QString("compiler_" + (*it) + "_clean "); + t << "compiler_" << (*it) << "_clean:"; + bool wrote_clean_cmds = false, wrote_clean = false; + if(tmp_clean_cmds.isEmpty()) { + wrote_clean_cmds = true; + } else if(tmp_clean_cmds.indexOf("${QMAKE_") == -1) { + t << "\n\t" << tmp_clean_cmds; + wrote_clean_cmds = true; + } + if(tmp_clean.isEmpty()) + tmp_clean = tmp_out; + if(tmp_clean.indexOf("${QMAKE_") == -1) { + t << "\n\t-$(DEL_FILE) " << tmp_clean; + wrote_clean = true; + } + if(!wrote_clean_cmds || !wrote_clean) { + ProStringList cleans; + const QString del_statement("-$(DEL_FILE)"); + if(!wrote_clean) { + if(project->isActiveConfig("no_delete_multiple_files")) { + for (ProStringList::ConstIterator input = tmp_inputs.begin(); input != tmp_inputs.end(); ++input) { + QString tinp = (*input).toQString(); + cleans.append(" " + Option::fixPathToTargetOS(replaceExtraCompilerVariables(tmp_clean, tinp, + replaceExtraCompilerVariables(tmp_out, tinp, QString())))); + } + } else { + QString files, file; + const int commandlineLimit = 2047; // NT limit, expanded + for(int input = 0; input < tmp_inputs.size(); ++input) { + QString tinp = tmp_inputs.at(input).toQString(); + file = " " + replaceExtraCompilerVariables(tmp_clean, tinp, + replaceExtraCompilerVariables(tmp_out, tinp, QString())); + if(del_statement.length() + files.length() + + qMax(fixEnvVariables(file).length(), file.length()) > commandlineLimit) { + cleans.append(files); + files.clear(); + } + files += Option::fixPathToTargetOS(file); + } + if(!files.isEmpty()) + cleans.append(files); + } + } + if(!cleans.isEmpty()) + t << valGlue(cleans, "\n\t" + del_statement, "\n\t" + del_statement, ""); + if(!wrote_clean_cmds) { + for (ProStringList::ConstIterator input = tmp_inputs.begin(); input != tmp_inputs.end(); ++input) { + QString tinp = (*input).toQString(); + t << "\n\t" << replaceExtraCompilerVariables(tmp_clean_cmds, tinp, + replaceExtraCompilerVariables(tmp_out, tinp, QString())); + } + } + } + t << endl; + } + QStringList tmp_dep = project->values(ProKey(*it + ".depends")).toQStringList(); + if (config.indexOf("combine") != -1) { + if (tmp_out.contains(QRegExp("(^|[^$])\\$\\{QMAKE_(?!VAR_)"))) { + warn_msg(WarnLogic, "QMAKE_EXTRA_COMPILERS(%s) with combine has variable output.", + (*it).toLatin1().constData()); + continue; + } + QStringList deps, inputs; + if(!tmp_dep.isEmpty()) + deps += fileFixify(tmp_dep, Option::output_dir, Option::output_dir); + for (ProStringList::ConstIterator input = tmp_inputs.begin(); input != tmp_inputs.end(); ++input) { + QString inpf = (*input).toQString(); + deps += findDependencies(inpf); + inputs += Option::fixPathToTargetOS(inpf, false); + if(!tmp_dep_cmd.isEmpty() && doDepends()) { + char buff[256]; + QString dep_cmd = replaceExtraCompilerVariables(tmp_dep_cmd, inpf, tmp_out); + dep_cmd = dep_cd_cmd + fixEnvVariables(dep_cmd); + if(FILE *proc = QT_POPEN(dep_cmd.toLatin1().constData(), "r")) { + QString indeps; + while(!feof(proc)) { + int read_in = (int)fread(buff, 1, 255, proc); + if(!read_in) + break; + indeps += QByteArray(buff, read_in); + } + QT_PCLOSE(proc); + if(!indeps.isEmpty()) { + QStringList dep_cmd_deps = indeps.replace('\n', ' ').simplified().split(' '); + for(int i = 0; i < dep_cmd_deps.count(); ++i) { + QString &file = dep_cmd_deps[i]; + QString absFile = QDir(Option::output_dir).absoluteFilePath(file); + if (exists(absFile)) { + file = absFile; + } else { + QString localFile; + QList depdirs = QMakeSourceFileInfo::dependencyPaths(); + for (QList::Iterator dit = depdirs.begin(); + dit != depdirs.end(); ++dit) { + if (exists((*dit).real() + Option::dir_sep + file)) { + localFile = (*dit).local() + Option::dir_sep + file; + break; + } + } + if (localFile.isEmpty()) { + if (exists(file)) + warn_msg(WarnDeprecated, ".depend_command for extra compiler %s" + " prints paths relative to source directory", + (*it).toLatin1().constData()); + else + file.clear(); + } else { + file = localFile; + } + } + if(!file.isEmpty()) + file = fileFixify(file); + } + deps += dep_cmd_deps; + } + } + } + } + for(int i = 0; i < inputs.size(); ) { + if(tmp_out == inputs.at(i)) + inputs.removeAt(i); + else + ++i; + } + for(int i = 0; i < deps.size(); ) { + if(tmp_out == deps.at(i)) + deps.removeAt(i); + else + ++i; + } + if (inputs.isEmpty()) + continue; + + QString out = replaceExtraCompilerVariables(tmp_out, QString(), QString()); + QString cmd = replaceExtraCompilerVariables(tmp_cmd, escapeFilePaths(inputs), QStringList() << out); + t << escapeDependencyPath(Option::fixPathToTargetOS(out)) << ":"; + // compiler.CONFIG+=explicit_dependencies means that ONLY compiler.depends gets to cause Makefile dependencies + if (config.indexOf("explicit_dependencies") != -1) { + t << " " << valList(escapeDependencyPaths(fileFixify(tmp_dep, Option::output_dir, Option::output_dir))); + } else { + t << " " << valList(escapeDependencyPaths(inputs)) << " " << valList(escapeDependencyPaths(deps)); + } + t << "\n\t" << cmd << endl << endl; + continue; + } + for (ProStringList::ConstIterator input = tmp_inputs.begin(); input != tmp_inputs.end(); ++input) { + QString inpf = (*input).toQString(); + QString in = Option::fixPathToTargetOS(inpf, false); + QStringList deps = findDependencies(inpf); + deps += escapeDependencyPath(in); + QString out = unescapeFilePath(Option::fixPathToTargetOS(replaceExtraCompilerVariables(tmp_out, inpf, QString()))); + if(!tmp_dep.isEmpty()) { + QStringList pre_deps = fileFixify(tmp_dep, Option::output_dir, Option::output_dir); + for(int i = 0; i < pre_deps.size(); ++i) + deps += replaceExtraCompilerVariables(pre_deps.at(i), inpf, out); + } + QString cmd = replaceExtraCompilerVariables(tmp_cmd, inpf, out); + // NOTE: The var -> QMAKE_COMP_var replace feature is unsupported, do not use! + for (ProStringList::ConstIterator it3 = vars.constBegin(); it3 != vars.constEnd(); ++it3) + cmd.replace("$(" + (*it3) + ")", "$(QMAKE_COMP_" + (*it3)+")"); + if(!tmp_dep_cmd.isEmpty() && doDepends()) { + char buff[256]; + QString dep_cmd = replaceExtraCompilerVariables(tmp_dep_cmd, inpf, out); + dep_cmd = dep_cd_cmd + fixEnvVariables(dep_cmd); + if(FILE *proc = QT_POPEN(dep_cmd.toLatin1().constData(), "r")) { + QString indeps; + while(!feof(proc)) { + int read_in = (int)fread(buff, 1, 255, proc); + if(!read_in) + break; + indeps += QByteArray(buff, read_in); + } + QT_PCLOSE(proc); + if(!indeps.isEmpty()) { + QStringList dep_cmd_deps = indeps.replace('\n', ' ').simplified().split(' '); + for(int i = 0; i < dep_cmd_deps.count(); ++i) { + QString &file = dep_cmd_deps[i]; + QString absFile = QDir(Option::output_dir).absoluteFilePath(file); + if (exists(absFile)) { + file = absFile; + } else { + QString localFile; + QList depdirs = QMakeSourceFileInfo::dependencyPaths(); + for (QList::Iterator dit = depdirs.begin(); + dit != depdirs.end(); ++dit) { + if (exists((*dit).real() + Option::dir_sep + file)) { + localFile = (*dit).local() + Option::dir_sep + file; + break; + } + } + if (localFile.isEmpty()) { + if (exists(file)) + warn_msg(WarnDeprecated, ".depend_command for extra compiler %s" + " prints paths relative to source directory", + (*it).toLatin1().constData()); + else + file.clear(); + } else { + file = localFile; + } + } + if(!file.isEmpty()) + file = fileFixify(file); + } + deps += dep_cmd_deps; + } + } + //use the depend system to find includes of these included files + QStringList inc_deps; + for(int i = 0; i < deps.size(); ++i) { + const QString dep = deps.at(i); + if(QFile::exists(dep)) { + SourceFileType type = TYPE_UNKNOWN; + if(type == TYPE_UNKNOWN) { + for(QStringList::Iterator cit = Option::c_ext.begin(); + cit != Option::c_ext.end(); ++cit) { + if(dep.endsWith((*cit))) { + type = TYPE_C; + break; + } + } + } + if(type == TYPE_UNKNOWN) { + for(QStringList::Iterator cppit = Option::cpp_ext.begin(); + cppit != Option::cpp_ext.end(); ++cppit) { + if(dep.endsWith((*cppit))) { + type = TYPE_C; + break; + } + } + } + if(type == TYPE_UNKNOWN) { + for(QStringList::Iterator hit = Option::h_ext.begin(); + type == TYPE_UNKNOWN && hit != Option::h_ext.end(); ++hit) { + if(dep.endsWith((*hit))) { + type = TYPE_C; + break; + } + } + } + if(type != TYPE_UNKNOWN) { + if(!QMakeSourceFileInfo::containsSourceFile(dep, type)) + QMakeSourceFileInfo::addSourceFile(dep, type); + inc_deps += QMakeSourceFileInfo::dependencies(dep); + } + } + } + deps += inc_deps; + } + for(int i = 0; i < deps.size(); ) { + QString &dep = deps[i]; + dep = Option::fixPathToTargetOS(unescapeFilePath(dep), false); + if(out == dep) + deps.removeAt(i); + else + ++i; + } + t << escapeDependencyPath(out) << ": " << valList(escapeDependencyPaths(deps)) << "\n\t" + << cmd << endl << endl; + } + } + t << "compiler_clean: " << clean_targets << endl << endl; +} + +void +MakefileGenerator::writeExtraCompilerVariables(QTextStream &t) +{ + bool first = true; + const ProStringList &quc = project->values("QMAKE_EXTRA_COMPILERS"); + for (ProStringList::ConstIterator it = quc.begin(); it != quc.end(); ++it) { + const ProStringList &vars = project->values(ProKey(*it + ".variables")); + for (ProStringList::ConstIterator varit = vars.begin(); varit != vars.end(); ++varit) { + if(first) { + t << "\n####### Custom Compiler Variables\n"; + first = false; + } + t << "QMAKE_COMP_" << (*varit) << " = " + << valList(project->values((*varit).toKey())) << endl; + } + } + if(!first) + t << endl; +} + +void +MakefileGenerator::writeExtraVariables(QTextStream &t) +{ + t << endl; + + ProStringList outlist; + const ProValueMap &vars = project->variables(); + const ProStringList &exports = project->values("QMAKE_EXTRA_VARIABLES"); + for (ProValueMap::ConstIterator it = vars.begin(); it != vars.end(); ++it) { + for (ProStringList::ConstIterator exp_it = exports.begin(); exp_it != exports.end(); ++exp_it) { + QRegExp rx((*exp_it).toQString(), Qt::CaseInsensitive, QRegExp::Wildcard); + if (rx.exactMatch(it.key().toQString())) + outlist << ("EXPORT_" + it.key() + " = " + it.value().join(' ')); + } + } + if (!outlist.isEmpty()) { + t << "####### Custom Variables\n"; + t << outlist.join("\n") << endl << endl; + } +} + +bool +MakefileGenerator::writeDummyMakefile(QTextStream &t) +{ + if (project->values("QMAKE_FAILED_REQUIREMENTS").isEmpty()) + return false; + t << "QMAKE = " << var("QMAKE_QMAKE") << endl; + const ProStringList &qut = project->values("QMAKE_EXTRA_TARGETS"); + for (ProStringList::ConstIterator it = qut.begin(); it != qut.end(); ++it) + t << *it << " "; + t << "first all clean install distclean uninstall qmake_all:\n\t" + << "@echo \"Some of the required modules (" + << var("QMAKE_FAILED_REQUIREMENTS") << ") are not available.\"\n\t" + << "@echo \"Skipped.\"\n\n"; + writeMakeQmake(t); + t << "FORCE:\n\n"; + return true; +} + +bool +MakefileGenerator::writeStubMakefile(QTextStream &t) +{ + t << "QMAKE = " << var("QMAKE_QMAKE") << endl; + const ProStringList &qut = project->values("QMAKE_EXTRA_TARGETS"); + for (ProStringList::ConstIterator it = qut.begin(); it != qut.end(); ++it) + t << *it << " "; + //const QString ofile = Option::fixPathToTargetOS(fileFixify(Option::output.fileName())); + t << "first all clean install distclean uninstall: qmake\n" + << "qmake_all:\n"; + writeMakeQmake(t); + t << "FORCE:\n\n"; + return true; +} + +bool +MakefileGenerator::writeMakefile(QTextStream &t) +{ + t << "####### Compile\n\n"; + writeObj(t, "SOURCES"); + writeObj(t, "GENERATED_SOURCES"); + + t << "####### Install\n\n"; + writeInstalls(t); + + t << "FORCE:\n\n"; + return true; +} + +QString MakefileGenerator::fixifySpecdir(const QString &spec, const QString &outdir) +{ + if (QFileInfo(spec).isAbsolute()) + return fileFixify(spec, outdir); + return spec; +} + +QString MakefileGenerator::buildArgs() +{ + QString ret; + + foreach (const QString &arg, Option::globals->qmake_args) + ret += " " + escapeFilePath(arg); + return ret; +} + +//could get stored argv, but then it would have more options than are +//probably necesary this will try to guess the bare minimum.. +QString MakefileGenerator::build_args(const QString &outdir) +{ + QString ret = "$(QMAKE)"; + + // general options and arguments + ret += buildArgs(); + + //output + QString ofile = Option::fixPathToTargetOS(fileFixify(Option::output.fileName())); + if(!ofile.isEmpty() && ofile != project->first("QMAKE_MAKEFILE")) + ret += " -o " + escapeFilePath(ofile); + + //inputs + ret += " " + escapeFilePath(fileFixify(project->projectFile(), outdir)); + + return ret; +} + +void +MakefileGenerator::writeHeader(QTextStream &t) +{ + t << "#############################################################################\n"; + t << "# Makefile for building: " << escapeFilePath(var("TARGET")) << endl; + t << "# Generated by qmake (" QMAKE_VERSION_STR ") (Qt " QT_VERSION_STR ")\n"; + t << "# Project: " << fileFixify(project->projectFile()) << endl; + t << "# Template: " << var("TEMPLATE") << endl; + if(!project->isActiveConfig("build_pass")) + t << "# Command: " << build_args().replace("$(QMAKE)", var("QMAKE_QMAKE")) << endl; + t << "#############################################################################\n"; + t << endl; + QString ofile = Option::fixPathToTargetOS(Option::output.fileName()); + if (ofile.lastIndexOf(Option::dir_sep) != -1) + ofile.remove(0, ofile.lastIndexOf(Option::dir_sep) +1); + t << "MAKEFILE = " << ofile << endl << endl; +} + +QList +MakefileGenerator::findSubDirsSubTargets() const +{ + QList targets; + { + const ProStringList &subdirs = project->values("SUBDIRS"); + for(int subdir = 0; subdir < subdirs.size(); ++subdir) { + ProString ofile = subdirs[subdir]; + QString oname = ofile.toQString(); + QString fixedSubdir = oname; + fixedSubdir = fixedSubdir.replace(QRegExp("[^a-zA-Z0-9_]"),"-"); + + SubTarget *st = new SubTarget; + st->name = oname; + targets.append(st); + + bool fromFile = false; + const ProKey fkey(fixedSubdir + ".file"); + const ProKey skey(fixedSubdir + ".subdir"); + if (!project->isEmpty(fkey)) { + if (!project->isEmpty(skey)) + warn_msg(WarnLogic, "Cannot assign both file and subdir for subdir %s", + subdirs[subdir].toLatin1().constData()); + ofile = project->first(fkey); + fromFile = true; + } else if (!project->isEmpty(skey)) { + ofile = project->first(skey); + fromFile = false; + } else { + fromFile = ofile.endsWith(Option::pro_ext); + } + QString file = Option::fixPathToTargetOS(ofile.toQString()); + + if(fromFile) { + int slsh = file.lastIndexOf(Option::dir_sep); + if(slsh != -1) { + st->in_directory = file.left(slsh+1); + st->profile = file.mid(slsh+1); + } else { + st->profile = file; + } + } else { + if(!file.isEmpty() && !project->isActiveConfig("subdir_first_pro")) + st->profile = file.section(Option::dir_sep, -1) + Option::pro_ext; + st->in_directory = file; + } + while(st->in_directory.endsWith(Option::dir_sep)) + st->in_directory.chop(1); + if(fileInfo(st->in_directory).isRelative()) + st->out_directory = st->in_directory; + else + st->out_directory = fileFixify(st->in_directory, qmake_getpwd(), Option::output_dir); + const ProKey mkey(fixedSubdir + ".makefile"); + if (!project->isEmpty(mkey)) { + st->makefile = project->first(mkey).toQString(); + } else { + st->makefile = "Makefile"; + if(!st->profile.isEmpty()) { + QString basename = st->in_directory; + int new_slsh = basename.lastIndexOf(Option::dir_sep); + if(new_slsh != -1) + basename = basename.mid(new_slsh+1); + if(st->profile != basename + Option::pro_ext) + st->makefile += "." + st->profile.left(st->profile.length() - Option::pro_ext.length()); + } + } + const ProKey dkey(fixedSubdir + ".depends"); + if (!project->isEmpty(dkey)) { + const ProStringList &depends = project->values(dkey); + for(int depend = 0; depend < depends.size(); ++depend) { + bool found = false; + for(int subDep = 0; subDep < subdirs.size(); ++subDep) { + if(subdirs[subDep] == depends.at(depend)) { + QString subName = subdirs[subDep].toQString(); + QString fixedSubDep = subName; + fixedSubDep = fixedSubDep.replace(QRegExp("[^a-zA-Z0-9_]"),"-"); + const ProKey dtkey(fixedSubDep + ".target"); + if (!project->isEmpty(dtkey)) { + st->depends += project->first(dtkey); + } else { + QString d = Option::fixPathToLocalOS(subName); + const ProKey dfkey(fixedSubDep + ".file"); + if (!project->isEmpty(dfkey)) { + d = project->first(dfkey).toQString(); + } else { + const ProKey dskey(fixedSubDep + ".subdir"); + if (!project->isEmpty(dskey)) + d = project->first(dskey).toQString(); + } + st->depends += "sub-" + d.replace(QRegExp("[^a-zA-Z0-9_]"),"-"); + } + found = true; + break; + } + } + if(!found) { + QString depend_str = depends.at(depend).toQString(); + st->depends += depend_str.replace(QRegExp("[^a-zA-Z0-9_]"),"-"); + } + } + } + const ProKey tkey(fixedSubdir + ".target"); + if (!project->isEmpty(tkey)) { + st->target = project->first(tkey).toQString(); + } else { + st->target = "sub-" + file; + st->target = st->target.replace(QRegExp("[^a-zA-Z0-9_]"),"-"); + } + } + } + return targets; +} + +void +MakefileGenerator::writeSubDirs(QTextStream &t) +{ + QList targets = findSubDirsSubTargets(); + t << "first: make_first\n"; + int flags = SubTargetInstalls; + if(project->isActiveConfig("ordered")) + flags |= SubTargetOrdered; + writeSubTargets(t, targets, flags); + qDeleteAll(targets); +} + +void MakefileGenerator::writeSubMakeCall(QTextStream &t, const QString &callPrefix, + const QString &makeArguments) +{ + t << callPrefix << "$(MAKE)" << makeArguments << endl; +} + +void +MakefileGenerator::writeSubTargetCall(QTextStream &t, + const QString &in_directory, const QString &in, const QString &out_directory, const QString &out, + const QString &out_directory_cdin, const QString &makefilein) +{ + QString pfx; + if (!in.isEmpty()) { + if (!in_directory.isEmpty()) + t << "\n\t" << mkdir_p_asstring(out_directory); + pfx = "( " + chkexists.arg(out) + + + " $(QMAKE) " + in + buildArgs() + " -o " + out + + " ) && "; + } + writeSubMakeCall(t, out_directory_cdin + pfx, makefilein); +} + +void +MakefileGenerator::writeSubTargets(QTextStream &t, QList targets, int flags) +{ + // blasted includes + const ProStringList &qeui = project->values("QMAKE_EXTRA_INCLUDES"); + for (ProStringList::ConstIterator qeui_it = qeui.begin(); qeui_it != qeui.end(); ++qeui_it) + t << "include " << (*qeui_it) << endl; + + if (!(flags & SubTargetSkipDefaultVariables)) { + t << "QMAKE = " << var("QMAKE_QMAKE") << endl; + t << "DEL_FILE = " << var("QMAKE_DEL_FILE") << endl; + t << "CHK_DIR_EXISTS= " << var("QMAKE_CHK_DIR_EXISTS") << endl; + t << "MKDIR = " << var("QMAKE_MKDIR") << endl; + t << "COPY = " << var("QMAKE_COPY") << endl; + t << "COPY_FILE = " << var("QMAKE_COPY_FILE") << endl; + t << "COPY_DIR = " << var("QMAKE_COPY_DIR") << endl; + t << "INSTALL_FILE = " << var("QMAKE_INSTALL_FILE") << endl; + t << "INSTALL_PROGRAM = " << var("QMAKE_INSTALL_PROGRAM") << endl; + t << "INSTALL_DIR = " << var("QMAKE_INSTALL_DIR") << endl; + t << "DEL_FILE = " << var("QMAKE_DEL_FILE") << endl; + t << "SYMLINK = " << var("QMAKE_SYMBOLIC_LINK") << endl; + t << "DEL_DIR = " << var("QMAKE_DEL_DIR") << endl; + t << "MOVE = " << var("QMAKE_MOVE") << endl; + t << "SUBTARGETS = "; // subtargets are sub-directory + for(int target = 0; target < targets.size(); ++target) + t << " \\\n\t\t" << targets.at(target)->target; + t << endl << endl; + } + writeExtraVariables(t); + + QStringList targetSuffixes; + const QString abs_source_path = project->first("QMAKE_ABSOLUTE_SOURCE_PATH").toQString(); + if (!(flags & SubTargetSkipDefaultTargets)) { + targetSuffixes << "make_first" << "all" << "clean" << "distclean" + << QString((flags & SubTargetInstalls) ? "install_subtargets" : "install") + << QString((flags & SubTargetInstalls) ? "uninstall_subtargets" : "uninstall"); + } + + bool dont_recurse = project->isActiveConfig("dont_recurse"); + + // generate target rules + for(int target = 0; target < targets.size(); ++target) { + SubTarget *subtarget = targets.at(target); + QString in_directory = subtarget->in_directory; + if(!in_directory.isEmpty() && !in_directory.endsWith(Option::dir_sep)) + in_directory += Option::dir_sep; + QString out_directory = subtarget->out_directory; + if(!out_directory.isEmpty() && !out_directory.endsWith(Option::dir_sep)) + out_directory += Option::dir_sep; + if(!abs_source_path.isEmpty() && out_directory.startsWith(abs_source_path)) + out_directory = Option::output_dir + out_directory.mid(abs_source_path.length()); + + QString out_directory_cdin = out_directory.isEmpty() ? "\n\t" + : "\n\tcd " + out_directory + " && "; + QString makefilein = " -f " + subtarget->makefile; + + //qmake it + QString out; + QString in; + if(!subtarget->profile.isEmpty()) { + out = subtarget->makefile; + in = escapeFilePath(fileFixify(in_directory + subtarget->profile, FileFixifyAbsolute)); + if(out.startsWith(in_directory)) + out = out.mid(in_directory.length()); + t << subtarget->target << "-qmake_all: "; + if (flags & SubTargetOrdered) { + if (target) + t << targets.at(target - 1)->target << "-qmake_all"; + } else { + if (!subtarget->depends.isEmpty()) + t << valGlue(subtarget->depends, QString(), "-qmake_all ", "-qmake_all"); + } + t << " FORCE\n\t"; + if(!in_directory.isEmpty()) { + t << mkdir_p_asstring(out_directory) + << out_directory_cdin; + } + t << "$(QMAKE) " << in << buildArgs() << " -o " << out; + if (!dont_recurse) + writeSubMakeCall(t, out_directory_cdin, makefilein + " qmake_all"); + else + t << endl; + } + + { //actually compile + t << subtarget->target << ":"; + if(!subtarget->depends.isEmpty()) + t << " " << valList(subtarget->depends); + t << " FORCE"; + writeSubTargetCall(t, in_directory, in, out_directory, out, + out_directory_cdin, makefilein); + } + + for(int suffix = 0; suffix < targetSuffixes.size(); ++suffix) { + QString s = targetSuffixes.at(suffix); + if(s == "install_subtargets") + s = "install"; + else if(s == "uninstall_subtargets") + s = "uninstall"; + else if(s == "make_first") + s = QString(); + + if(flags & SubTargetOrdered) { + t << subtarget->target << "-" << targetSuffixes.at(suffix) << "-ordered:"; + if(target) + t << " " << targets.at(target-1)->target << "-" << targetSuffixes.at(suffix) << "-ordered "; + t << " FORCE"; + writeSubTargetCall(t, in_directory, in, out_directory, out, + out_directory_cdin, makefilein + " " + s); + } + t << subtarget->target << "-" << targetSuffixes.at(suffix) << ":"; + if(!subtarget->depends.isEmpty()) + t << " " << valGlue(subtarget->depends, QString(), "-" + targetSuffixes.at(suffix) + " ", + "-"+targetSuffixes.at(suffix)); + t << " FORCE"; + writeSubTargetCall(t, in_directory, in, out_directory, out, + out_directory_cdin, makefilein + " " + s); + } + } + t << endl; + + if (!(flags & SubTargetSkipDefaultTargets)) { + writeMakeQmake(t, true); + + t << "qmake_all:"; + if(!targets.isEmpty()) { + for(QList::Iterator it = targets.begin(); it != targets.end(); ++it) { + if(!(*it)->profile.isEmpty()) + t << " " << (*it)->target << "-qmake_all"; + } + } + t << " FORCE\n\n"; + } + + for(int s = 0; s < targetSuffixes.size(); ++s) { + QString suffix = targetSuffixes.at(s); + if(!(flags & SubTargetInstalls) && suffix.endsWith("install")) + continue; + + t << suffix << ":"; + for(int target = 0; target < targets.size(); ++target) { + SubTarget *subTarget = targets.at(target); + const ProStringList &config = project->values(ProKey(subTarget->name + ".CONFIG")); + if (suffix == "make_first" + && config.indexOf("no_default_target") != -1) { + continue; + } + if((suffix == "install_subtargets" || suffix == "uninstall_subtargets") + && config.indexOf("no_default_install") != -1) { + continue; + } + QString targetRule = subTarget->target + "-" + suffix; + if(flags & SubTargetOrdered) + targetRule += "-ordered"; + t << " " << targetRule; + } + if(suffix == "all" || suffix == "make_first") + t << varGlue("ALL_DEPS"," "," ",""); + if(suffix == "clean") + t << varGlue("CLEAN_DEPS"," "," ",""); + else if (suffix == "distclean") + t << varGlue("DISTCLEAN_DEPS"," "," ",""); + t << " FORCE\n"; + if(suffix == "clean") { + t << fileVarGlue("QMAKE_CLEAN", "\t-$(DEL_FILE) ", "\n\t-$(DEL_FILE) ", "\n"); + } else if(suffix == "distclean") { + QString ofile = Option::fixPathToTargetOS(fileFixify(Option::output.fileName())); + if(!ofile.isEmpty()) + t << "\t-$(DEL_FILE) " << ofile << endl; + t << fileVarGlue("QMAKE_DISTCLEAN", "\t-$(DEL_FILE) ", " ", "\n"); + } + } + + // user defined targets + const ProStringList &qut = project->values("QMAKE_EXTRA_TARGETS"); + for (ProStringList::ConstIterator qut_it = qut.begin(); qut_it != qut.end(); ++qut_it) { + const ProStringList &config = project->values(ProKey(*qut_it + ".CONFIG")); + QString targ = var(ProKey(*qut_it + ".target")), + cmd = var(ProKey(*qut_it + ".commands")), deps; + if(targ.isEmpty()) + targ = (*qut_it).toQString(); + t << endl; + + const ProStringList &deplist = project->values(ProKey(*qut_it + ".depends")); + for (ProStringList::ConstIterator dep_it = deplist.begin(); dep_it != deplist.end(); ++dep_it) { + QString dep = var(ProKey(*dep_it + ".target")); + if(dep.isEmpty()) + dep = Option::fixPathToTargetOS((*dep_it).toQString(), false); + deps += " " + dep; + } + if (config.indexOf("recursive") != -1) { + QSet recurse; + const ProKey rkey(*qut_it + ".recurse"); + if (project->isSet(rkey)) { + recurse = project->values(rkey).toQStringList().toSet(); + } else { + for(int target = 0; target < targets.size(); ++target) + recurse.insert(targets.at(target)->name); + } + for(int target = 0; target < targets.size(); ++target) { + SubTarget *subtarget = targets.at(target); + QString in_directory = subtarget->in_directory; + if(!in_directory.isEmpty() && !in_directory.endsWith(Option::dir_sep)) + in_directory += Option::dir_sep; + QString out_directory = subtarget->out_directory; + if(!out_directory.isEmpty() && !out_directory.endsWith(Option::dir_sep)) + out_directory += Option::dir_sep; + if(!abs_source_path.isEmpty() && out_directory.startsWith(abs_source_path)) + out_directory = Option::output_dir + out_directory.mid(abs_source_path.length()); + + if(!recurse.contains(subtarget->name)) + continue; + + QString out_directory_cdin = out_directory.isEmpty() ? "\n\t" + : "\n\tcd " + out_directory + " && "; + QString makefilein = " -f " + subtarget->makefile; + + QString out; + QString in; + if (!subtarget->profile.isEmpty()) { + out = subtarget->makefile; + in = escapeFilePath(fileFixify(in_directory + subtarget->profile, FileFixifyAbsolute)); + if (out.startsWith(in_directory)) + out = out.mid(in_directory.length()); + } + + //write the rule/depends + if(flags & SubTargetOrdered) { + const QString dep = subtarget->target + "-" + (*qut_it) + "_ordered"; + t << dep << ":"; + if(target) + t << " " << targets.at(target-1)->target << "-" << (*qut_it) << "_ordered "; + deps += " " + dep; + } else { + const QString dep = subtarget->target + "-" + (*qut_it); + t << dep << ":"; + if(!subtarget->depends.isEmpty()) + t << " " << valGlue(subtarget->depends, QString(), "-" + (*qut_it) + " ", "-" + (*qut_it)); + deps += " " + dep; + } + + QString sub_targ = targ; + const ProKey rtkey(*qut_it + ".recurse_target"); + if (project->isSet(rtkey)) + sub_targ = project->first(rtkey).toQString(); + + //write the commands + writeSubTargetCall(t, in_directory, in, out_directory, out, + out_directory_cdin, makefilein + " " + sub_targ); + } + } + if (config.indexOf("phony") != -1) + deps += " FORCE"; + t << targ << ":" << deps << "\n"; + if(!cmd.isEmpty()) + t << "\t" << cmd << endl; + } + + if(flags & SubTargetInstalls) { + project->values("INSTALLDEPS") += "install_subtargets"; + project->values("UNINSTALLDEPS") += "uninstall_subtargets"; + writeInstalls(t, true); + } + t << "FORCE:\n\n"; +} + +void +MakefileGenerator::writeMakeQmake(QTextStream &t, bool noDummyQmakeAll) +{ + QString ofile = Option::fixPathToTargetOS(fileFixify(Option::output.fileName())); + if(project->isEmpty("QMAKE_FAILED_REQUIREMENTS") && !project->isEmpty("QMAKE_INTERNAL_PRL_FILE")) { + QStringList files = fileFixify(Option::mkfile::project_files); + t << escapeDependencyPath(project->first("QMAKE_INTERNAL_PRL_FILE").toQString()) << ": \n\t" + << "@$(QMAKE) -prl " << buildArgs() << " " << files.join(' ') << endl; + } + + QString qmake = build_args(); + if(!ofile.isEmpty() && !project->isActiveConfig("no_autoqmake")) { + t << escapeFilePath(ofile) << ": " + << escapeDependencyPath(fileFixify(project->projectFile())) << " "; + if (Option::globals->do_cache) { + if (!project->confFile().isEmpty()) + t << escapeDependencyPath(fileFixify(project->confFile())) << " "; + if (!project->cacheFile().isEmpty()) + t << escapeDependencyPath(fileFixify(project->cacheFile())) << " "; + } + if(!specdir().isEmpty()) { + if(exists(Option::fixPathToLocalOS(specdir()+QDir::separator()+"qmake.conf"))) + t << escapeDependencyPath(specdir() + Option::dir_sep + "qmake.conf") << " "; + } + const ProStringList &included = project->values("QMAKE_INTERNAL_INCLUDED_FILES"); + t << escapeDependencyPaths(included).join(" \\\n\t\t") << "\n\t" + << qmake << endl; + for(int include = 0; include < included.size(); ++include) { + const ProString &i = included.at(include); + if(!i.isEmpty()) + t << i << ":\n"; + } + } + if(project->first("QMAKE_ORIG_TARGET") != "qmake") { + t << "qmake: FORCE\n\t@" << qmake << endl << endl; + if (!noDummyQmakeAll) + t << "qmake_all: FORCE\n\n"; + } +} + +QFileInfo +MakefileGenerator::fileInfo(QString file) const +{ + static QHash *cache = 0; + static QFileInfo noInfo = QFileInfo(); + if(!cache) { + cache = new QHash; + qmakeAddCacheClear(qmakeDeleteCacheClear >, (void**)&cache); + } + FileInfoCacheKey cacheKey(file); + QFileInfo value = cache->value(cacheKey, noInfo); + if (value != noInfo) + return value; + + QFileInfo fi(file); + if (fi.exists()) + cache->insert(cacheKey, fi); + return fi; +} + +QString +MakefileGenerator::unescapeFilePath(const QString &path) const +{ + QString ret = path; + ret.replace(QLatin1String("\\ "), QLatin1String(" ")); + ret.remove(QLatin1Char('\"')); + return ret; +} + +ProString +MakefileGenerator::unescapeFilePath(const ProString &path) const +{ + return ProString(unescapeFilePath(path.toQString())); +} + +ProString +MakefileGenerator::escapeFilePath(const ProString &path) const +{ + return ProString(escapeFilePath(path.toQString())); +} + +QStringList +MakefileGenerator::escapeFilePaths(const QStringList &paths) const +{ + QStringList ret; + for(int i = 0; i < paths.size(); ++i) + ret.append(escapeFilePath(paths.at(i))); + return ret; +} + +ProStringList +MakefileGenerator::escapeFilePaths(const ProStringList &paths) const +{ + ProStringList ret; + for (int i = 0; i < paths.size(); ++i) + ret.append(escapeFilePath(paths.at(i))); + return ret; +} + +QStringList +MakefileGenerator::escapeDependencyPaths(const QStringList &paths) const +{ + QStringList ret; + for(int i = 0; i < paths.size(); ++i) + ret.append(escapeDependencyPath(paths.at(i))); + return ret; +} + +ProStringList +MakefileGenerator::escapeDependencyPaths(const ProStringList &paths) const +{ + ProStringList ret; + for (int i = 0; i < paths.size(); ++i) + ret.append(escapeDependencyPath(paths.at(i).toQString())); + return ret; +} + +QStringList +MakefileGenerator::unescapeFilePaths(const QStringList &paths) const +{ + QStringList ret; + for(int i = 0; i < paths.size(); ++i) + ret.append(unescapeFilePath(paths.at(i))); + return ret; +} + +ProStringList +MakefileGenerator::unescapeFilePaths(const ProStringList &paths) const +{ + ProStringList ret; + for (int i = 0; i < paths.size(); ++i) + ret.append(unescapeFilePath(paths.at(i))); + return ret; +} + +QStringList +MakefileGenerator::fileFixify(const QStringList& files, const QString &out_dir, const QString &in_dir, + FileFixifyType fix, bool canon) const +{ + if(files.isEmpty()) + return files; + QStringList ret; + for(QStringList::ConstIterator it = files.begin(); it != files.end(); ++it) { + if(!(*it).isEmpty()) + ret << fileFixify((*it), out_dir, in_dir, fix, canon); + } + return ret; +} + +QString +MakefileGenerator::fileFixify(const QString& file, const QString &out_d, const QString &in_d, + FileFixifyType fix, bool canon) const +{ + if(file.isEmpty()) + return file; + QString ret = unescapeFilePath(file); + + //do the fixin' + QString orig_file = ret; + if(ret.startsWith(QLatin1Char('~'))) { + if(ret.startsWith(QLatin1String("~/"))) + ret = QDir::homePath() + ret.mid(1); + else + warn_msg(WarnLogic, "Unable to expand ~ in %s", ret.toLatin1().constData()); + } + if(fix == FileFixifyAbsolute || (fix == FileFixifyDefault && project->isActiveConfig("no_fixpath"))) { + if(fix == FileFixifyAbsolute && QDir::isRelativePath(ret)) { //already absolute + QString pwd = qmake_getpwd(); + if (!pwd.endsWith(QLatin1Char('/'))) + pwd += QLatin1Char('/'); + ret.prepend(pwd); + } + ret = Option::fixPathToTargetOS(ret, false, canon); + } else { //fix it.. + QString out_dir = QDir(Option::output_dir).absoluteFilePath(out_d); + QString in_dir = QDir(qmake_getpwd()).absoluteFilePath(in_d); + { + QFileInfo in_fi(fileInfo(in_dir)); + if(in_fi.exists()) + in_dir = in_fi.canonicalFilePath(); + QFileInfo out_fi(fileInfo(out_dir)); + if(out_fi.exists()) + out_dir = out_fi.canonicalFilePath(); + } + + QString qfile(Option::fixPathToLocalOS(ret, true, canon)); + QFileInfo qfileinfo(fileInfo(qfile)); + if(out_dir != in_dir || !qfileinfo.isRelative()) { + if(qfileinfo.isRelative()) { + ret = in_dir + "/" + qfile; + qfileinfo.setFile(ret); + } + ret = Option::fixPathToTargetOS(ret, false, canon); + if(canon && qfileinfo.exists() && + file == Option::fixPathToTargetOS(ret, true, canon)) + ret = Option::fixPathToTargetOS(qfileinfo.canonicalFilePath()); + QString match_dir = Option::fixPathToTargetOS(out_dir, false, canon); + if(ret == match_dir) { + ret = ""; + } else if(ret.startsWith(match_dir + Option::dir_sep)) { + ret = ret.mid(match_dir.length() + Option::dir_sep.length()); + } else { + //figure out the depth + int depth = 4; + if(Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE || + Option::qmake_mode == Option::QMAKE_GENERATE_PRL) { + if(project && !project->isEmpty("QMAKE_PROJECT_DEPTH")) + depth = project->first("QMAKE_PROJECT_DEPTH").toInt(); + else if(Option::mkfile::cachefile_depth != -1) + depth = Option::mkfile::cachefile_depth; + } + //calculate how much can be removed + QString dot_prefix; + for(int i = 1; i <= depth; i++) { + int sl = match_dir.lastIndexOf(Option::dir_sep); + if(sl == -1) + break; + match_dir = match_dir.left(sl); + if(match_dir.isEmpty()) + break; + if(ret.startsWith(match_dir + Option::dir_sep)) { + //concat + int remlen = ret.length() - (match_dir.length() + 1); + if(remlen < 0) + remlen = 0; + ret = ret.right(remlen); + //prepend + for(int o = 0; o < i; o++) + dot_prefix += ".." + Option::dir_sep; + break; + } + } + ret.prepend(dot_prefix); + } + } else { + ret = Option::fixPathToTargetOS(ret, false, canon); + } + } + if(ret.isEmpty()) + ret = "."; + debug_msg(3, "Fixed[%d,%d] %s :: to :: %s [%s::%s] [%s::%s]", fix, canon, orig_file.toLatin1().constData(), + ret.toLatin1().constData(), in_d.toLatin1().constData(), out_d.toLatin1().constData(), + qmake_getpwd().toLatin1().constData(), Option::output_dir.toLatin1().constData()); + return ret; +} + +QMakeLocalFileName +MakefileGenerator::fixPathForFile(const QMakeLocalFileName &file, bool forOpen) +{ + if(forOpen) + return QMakeLocalFileName(fileFixify(file.real(), qmake_getpwd(), Option::output_dir)); + return QMakeLocalFileName(fileFixify(file.real())); +} + +QFileInfo +MakefileGenerator::findFileInfo(const QMakeLocalFileName &file) +{ + return fileInfo(file.local()); +} + +QMakeLocalFileName +MakefileGenerator::findFileForDep(const QMakeLocalFileName &dep, const QMakeLocalFileName &file) +{ + QMakeLocalFileName ret; + if(!project->isEmpty("SKIP_DEPENDS")) { + bool found = false; + const ProStringList &nodeplist = project->values("SKIP_DEPENDS"); + for (ProStringList::ConstIterator it = nodeplist.begin(); + it != nodeplist.end(); ++it) { + QRegExp regx((*it).toQString()); + if(regx.indexIn(dep.local()) != -1) { + found = true; + break; + } + } + if(found) + return ret; + } + + ret = QMakeSourceFileInfo::findFileForDep(dep, file); + if(!ret.isNull()) + return ret; + + //these are some "hacky" heuristics it will try to do on an include + //however these can be turned off at runtime, I'm not sure how + //reliable these will be, most likely when problems arise turn it off + //and see if they go away.. + if(Option::mkfile::do_dep_heuristics) { + if(depHeuristicsCache.contains(dep.real())) + return depHeuristicsCache[dep.real()]; + + if(Option::output_dir != qmake_getpwd() + && QDir::isRelativePath(dep.real())) { //is it from the shadow tree + QList depdirs = QMakeSourceFileInfo::dependencyPaths(); + depdirs.prepend(fileInfo(file.real()).absoluteDir().path()); + QString pwd = qmake_getpwd(); + if(pwd.at(pwd.length()-1) != '/') + pwd += '/'; + for(int i = 0; i < depdirs.count(); i++) { + QString dir = depdirs.at(i).real(); + if(!QDir::isRelativePath(dir) && dir.startsWith(pwd)) + dir = dir.mid(pwd.length()); + if(QDir::isRelativePath(dir)) { + if(!dir.endsWith(Option::dir_sep)) + dir += Option::dir_sep; + QString shadow = fileFixify(dir + dep.local(), pwd, Option::output_dir); + if(exists(shadow)) { + ret = QMakeLocalFileName(shadow); + goto found_dep_from_heuristic; + } + } + } + } + { //is it from an EXTRA_TARGET + const QString dep_basename = dep.local().section(Option::dir_sep, -1); + const ProStringList &qut = project->values("QMAKE_EXTRA_TARGETS"); + for (ProStringList::ConstIterator it = qut.begin(); it != qut.end(); ++it) { + QString targ = var(ProKey(*it + ".target")); + if(targ.isEmpty()) + targ = (*it).toQString(); + QString out = Option::fixPathToTargetOS(targ); + if(out == dep.real() || out.section(Option::dir_sep, -1) == dep_basename) { + ret = QMakeLocalFileName(out); + goto found_dep_from_heuristic; + } + } + } + { //is it from an EXTRA_COMPILER + const QString dep_basename = dep.local().section(Option::dir_sep, -1); + const ProStringList &quc = project->values("QMAKE_EXTRA_COMPILERS"); + for (ProStringList::ConstIterator it = quc.begin(); it != quc.end(); ++it) { + const ProString &tmp_out = project->first(ProKey(*it + ".output")); + if(tmp_out.isEmpty()) + continue; + const ProStringList &tmp = project->values(ProKey(*it + ".input")); + for (ProStringList::ConstIterator it2 = tmp.begin(); it2 != tmp.end(); ++it2) { + const ProStringList &inputs = project->values((*it2).toKey()); + for (ProStringList::ConstIterator input = inputs.begin(); input != inputs.end(); ++input) { + QString out = Option::fixPathToTargetOS(unescapeFilePath( + replaceExtraCompilerVariables(tmp_out.toQString(), (*input).toQString(), QString()))); + if (out == dep.real() || out.section(Option::dir_sep, -1) == dep_basename) { + ret = QMakeLocalFileName(fileFixify(out, qmake_getpwd(), Option::output_dir)); + goto found_dep_from_heuristic; + } + } + } + } + } + found_dep_from_heuristic: + depHeuristicsCache.insert(dep.real(), ret); + } + return ret; +} + +QStringList +&MakefileGenerator::findDependencies(const QString &file) +{ + const QString fixedFile = fileFixify(file); + if(!dependsCache.contains(fixedFile)) { +#if 1 + QStringList deps = QMakeSourceFileInfo::dependencies(file); + if(file != fixedFile) + deps += QMakeSourceFileInfo::dependencies(fixedFile); +#else + QStringList deps = QMakeSourceFileInfo::dependencies(fixedFile); +#endif + dependsCache.insert(fixedFile, deps); + } + return dependsCache[fixedFile]; +} + +QString +MakefileGenerator::specdir() +{ + if (spec.isEmpty()) + spec = fileFixify(project->specDir()); + return spec; +} + +bool +MakefileGenerator::openOutput(QFile &file, const QString &build) const +{ + { + QString outdir; + if(!file.fileName().isEmpty()) { + if(QDir::isRelativePath(file.fileName())) + file.setFileName(Option::output_dir + "/" + file.fileName()); //pwd when qmake was run + QFileInfo fi(fileInfo(file.fileName())); + if(fi.isDir()) + outdir = file.fileName() + '/'; + } + if(!outdir.isEmpty() || file.fileName().isEmpty()) { + QString fname = "Makefile"; + if(!project->isEmpty("MAKEFILE")) + fname = project->first("MAKEFILE").toQString(); + file.setFileName(outdir + fname); + } + } + if(QDir::isRelativePath(file.fileName())) { + QString fname = Option::output_dir; //pwd when qmake was run + if(!fname.endsWith("/")) + fname += "/"; + fname += file.fileName(); + file.setFileName(fname); + } + if(!build.isEmpty()) + file.setFileName(file.fileName() + "." + build); + if(project->isEmpty("QMAKE_MAKEFILE")) + project->values("QMAKE_MAKEFILE").append(file.fileName()); + int slsh = file.fileName().lastIndexOf('/'); + if(slsh != -1) + mkdir(file.fileName().left(slsh)); + if(file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) { + QFileInfo fi(fileInfo(Option::output.fileName())); + QString od; + if(fi.isSymLink()) + od = fileInfo(fi.readLink()).absolutePath(); + else + od = fi.path(); + od = QDir::fromNativeSeparators(od); + if(QDir::isRelativePath(od)) { + QString dir = Option::output_dir; + if (!dir.endsWith('/') && !od.isEmpty()) + dir += '/'; + od.prepend(dir); + } + Option::output_dir = od; + return true; + } + return false; +} + +QString +MakefileGenerator::pkgConfigFileName(bool fixify) +{ + QString ret = project->first("QMAKE_PKGCONFIG_FILE").toQString(); + if (ret.isEmpty()) { + ret = project->first("TARGET").toQString(); + int slsh = ret.lastIndexOf(Option::dir_sep); + if (slsh != -1) + ret = ret.right(ret.length() - slsh - 1); + if (ret.startsWith("lib")) + ret = ret.mid(3); + int dot = ret.indexOf('.'); + if (dot != -1) + ret = ret.left(dot); + } + ret += Option::pkgcfg_ext; + QString subdir = project->first("QMAKE_PKGCONFIG_DESTDIR").toQString(); + if(!subdir.isEmpty()) { + // initOutPaths() appends dir_sep, but just to be safe.. + if (!subdir.endsWith(Option::dir_sep)) + ret.prepend(Option::dir_sep); + ret.prepend(subdir); + } + if(fixify) { + if(QDir::isRelativePath(ret) && !project->isEmpty("DESTDIR")) + ret.prepend(project->first("DESTDIR").toQString()); + ret = Option::fixPathToLocalOS(fileFixify(ret, qmake_getpwd(), Option::output_dir)); + } + return ret; +} + +QString +MakefileGenerator::pkgConfigPrefix() const +{ + if(!project->isEmpty("QMAKE_PKGCONFIG_PREFIX")) + return project->first("QMAKE_PKGCONFIG_PREFIX").toQString(); + return QLibraryInfo::rawLocation(QLibraryInfo::PrefixPath, QLibraryInfo::FinalPaths); +} + +QString +MakefileGenerator::pkgConfigFixPath(QString path) const +{ + QString prefix = pkgConfigPrefix(); + if(path.startsWith(prefix)) + path = path.replace(prefix, "${prefix}"); + return path; +} + +void +MakefileGenerator::writePkgConfigFile() +{ + QString fname = pkgConfigFileName(); + mkdir(fileInfo(fname).path()); + QFile ft(fname); + if(!ft.open(QIODevice::WriteOnly)) + return; + project->values("ALL_DEPS").append(fileFixify(fname)); + QTextStream t(&ft); + + QString prefix = pkgConfigPrefix(); + QString libDir = project->first("QMAKE_PKGCONFIG_LIBDIR").toQString(); + if(libDir.isEmpty()) + libDir = prefix + Option::dir_sep + "lib" + Option::dir_sep; + QString includeDir = project->first("QMAKE_PKGCONFIG_INCDIR").toQString(); + if(includeDir.isEmpty()) + includeDir = prefix + "/include"; + + t << "prefix=" << prefix << endl; + t << "exec_prefix=${prefix}\n" + << "libdir=" << pkgConfigFixPath(libDir) << "\n" + << "includedir=" << pkgConfigFixPath(includeDir) << endl; + t << endl; + + //extra PKGCONFIG variables + const ProStringList &pkgconfig_vars = project->values("QMAKE_PKGCONFIG_VARIABLES"); + for(int i = 0; i < pkgconfig_vars.size(); ++i) { + const ProString &var = project->first(ProKey(pkgconfig_vars.at(i) + ".name")); + QString val = project->values(ProKey(pkgconfig_vars.at(i) + ".value")).join(' '); + if(var.isEmpty()) + continue; + if(val.isEmpty()) { + const ProStringList &var_vars = project->values(ProKey(pkgconfig_vars.at(i) + ".variable")); + for(int v = 0; v < var_vars.size(); ++v) { + const ProStringList &vars = project->values(var_vars.at(v).toKey()); + for(int var = 0; var < vars.size(); ++var) { + if(!val.isEmpty()) + val += " "; + val += pkgConfigFixPath(vars.at(var).toQString()); + } + } + } + if (!val.isEmpty()) + t << var << "=" << val << endl; + } + + t << endl; + + QString name = project->first("QMAKE_PKGCONFIG_NAME").toQString(); + if(name.isEmpty()) { + name = project->first("QMAKE_ORIG_TARGET").toQString().toLower(); + name.replace(0, 1, name[0].toUpper()); + } + t << "Name: " << name << endl; + QString desc = project->values("QMAKE_PKGCONFIG_DESCRIPTION").join(' '); + if(desc.isEmpty()) { + if(name.isEmpty()) { + desc = project->first("QMAKE_ORIG_TARGET").toQString().toLower(); + desc.replace(0, 1, desc[0].toUpper()); + } else { + desc = name; + } + if(project->first("TEMPLATE") == "lib") { + if(project->isActiveConfig("plugin")) + desc += " Plugin"; + else + desc += " Library"; + } else if(project->first("TEMPLATE") == "app") { + desc += " Application"; + } + } + t << "Description: " << desc << endl; + ProString version = project->first("QMAKE_PKGCONFIG_VERSION"); + if (version.isEmpty()) + version = project->first("VERSION"); + if (!version.isEmpty()) + t << "Version: " << version << endl; + + // libs + t << "Libs: "; + QString pkgConfiglibDir; + QString pkgConfiglibName; + if (target_mode == TARG_MAC_MODE && project->isActiveConfig("lib_bundle")) { + pkgConfiglibDir = "-F${libdir}"; + ProString bundle; + if (!project->isEmpty("QMAKE_FRAMEWORK_BUNDLE_NAME")) + bundle = unescapeFilePath(project->first("QMAKE_FRAMEWORK_BUNDLE_NAME")); + else + bundle = unescapeFilePath(project->first("TARGET")); + int suffix = bundle.lastIndexOf(".framework"); + if (suffix != -1) + bundle = bundle.left(suffix); + pkgConfiglibName = "-framework " + bundle + " "; + } else { + pkgConfiglibDir = "-L${libdir}"; + pkgConfiglibName = "-l" + unescapeFilePath(project->first("QMAKE_ORIG_TARGET")); + if (project->isActiveConfig("shared")) + pkgConfiglibName += project->first("TARGET_VERSION_EXT").toQString(); + } + t << pkgConfiglibDir << " " << pkgConfiglibName << " \n"; + + ProStringList libs; + if(!project->isEmpty("QMAKE_INTERNAL_PRL_LIBS")) { + libs = project->values("QMAKE_INTERNAL_PRL_LIBS"); + } else { + libs << "QMAKE_LIBS"; //obvious one + } + libs << "QMAKE_LIBS_PRIVATE"; + libs << "QMAKE_LFLAGS_THREAD"; //not sure about this one, but what about things like -pthread? + t << "Libs.private: "; + for (ProStringList::ConstIterator it = libs.begin(); it != libs.end(); ++it) { + t << project->values((*it).toKey()).join(' ') << " "; + } + t << endl; + + // flags + // ### too many + t << "Cflags: " + // << var("QMAKE_CXXFLAGS") << " " + << varGlue("PRL_EXPORT_DEFINES","-D"," -D"," ") + << varGlue("PRL_EXPORT_CXXFLAGS", "", " ", " ") + << varGlue("QMAKE_PKGCONFIG_CFLAGS", "", " ", " ") + // << varGlue("DEFINES","-D"," -D"," ") + << "-I${includedir}\n"; + + // requires + const QString requires = project->values("QMAKE_PKGCONFIG_REQUIRES").join(' '); + if (!requires.isEmpty()) { + t << "Requires: " << requires << endl; + } + + t << endl; +} + +static QString windowsifyPath(const QString &str) +{ + // The paths are escaped in prl files, so every slash needs to turn into two backslashes. + // Then each backslash needs to be escaped for sed. And another level for C quoting here. + return QString(str).replace('/', "\\\\\\\\"); +} + +QString MakefileGenerator::installMetaFile(const ProKey &replace_rule, const QString &src, const QString &dst) +{ + QString ret; + if (project->isEmpty(replace_rule) + || project->isActiveConfig("no_sed_meta_install")) { + ret += "-$(INSTALL_FILE) \"" + src + "\" \"" + dst + "\""; + } else { + ret += "-$(SED)"; + const ProStringList &replace_rules = project->values(replace_rule); + for (int r = 0; r < replace_rules.size(); ++r) { + const ProString match = project->first(ProKey(replace_rules.at(r) + ".match")), + replace = project->first(ProKey(replace_rules.at(r) + ".replace")); + if (!match.isEmpty() /*&& match != replace*/) { + ret += " -e " + shellQuote("s," + match + "," + replace + ",g"); + if (isWindowsShell() && project->first(ProKey(replace_rules.at(r) + ".CONFIG")).contains("path")) + ret += " -e " + shellQuote("s," + windowsifyPath(match.toQString()) + + "," + windowsifyPath(replace.toQString()) + ",gi"); + } + } + ret += " \"" + src + "\" >\"" + dst + "\""; + } + return ret; +} + +QString MakefileGenerator::shellQuote(const QString &str) +{ + return isWindowsShell() ? QMakeInternal::IoUtils::shellQuoteWin(str) + : QMakeInternal::IoUtils::shellQuoteUnix(str); +} + +QT_END_NAMESPACE diff --git a/Telegram/_qt_5_3_0_patch/qtbase/src/gui/painting/qpaintengine_p.h b/Telegram/_qt_5_3_0_patch/qtbase/src/gui/painting/qpaintengine_p.h new file mode 100644 index 000000000..c9d85033d --- /dev/null +++ b/Telegram/_qt_5_3_0_patch/qtbase/src/gui/painting/qpaintengine_p.h @@ -0,0 +1,135 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QPAINTENGINE_P_H +#define QPAINTENGINE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "QtGui/qpainter.h" +#include "QtGui/qpaintengine.h" +#include "QtGui/qregion.h" +#include "private/qobject_p.h" + +QT_BEGIN_NAMESPACE + +class QPaintDevice; + +class Q_GUI_EXPORT QPaintEnginePrivate +{ + Q_DECLARE_PUBLIC(QPaintEngine) +public: + QPaintEnginePrivate() : pdev(0), q_ptr(0), currentClipDevice(0), hasSystemTransform(0), + hasSystemViewport(0) {} + virtual ~QPaintEnginePrivate() { } + QPaintDevice *pdev; + QPaintEngine *q_ptr; + QRegion systemClip; + QRect systemRect; + QRegion systemViewport; + QTransform systemTransform; + QPaintDevice *currentClipDevice; + uint hasSystemTransform : 1; + uint hasSystemViewport : 1; + + inline void transformSystemClip() + { + if (systemClip.isEmpty()) + return; + + if (hasSystemTransform) { + if (systemTransform.type() <= QTransform::TxTranslate) + systemClip.translate(qRound(systemTransform.dx()), qRound(systemTransform.dy())); + else { + // Transform the system clip region back from device pixels to device-independent pixels before + // applying systemTransform, which already has transform from device-independent pixels to device pixels +#ifdef Q_OS_MAC + QTransform scaleTransform; + const qreal invDevicePixelRatio = 1. / pdev->devicePixelRatio(); + scaleTransform.scale(invDevicePixelRatio, invDevicePixelRatio); + systemClip = systemTransform.map(scaleTransform.map(systemClip)); +#else + systemClip = systemTransform.map(systemClip); +#endif + } + } + + // Make sure we're inside the viewport. + if (hasSystemViewport) { + systemClip &= systemViewport; + if (systemClip.isEmpty()) { + // We don't want to paint without system clip, so set it to 1 pixel :) + systemClip = QRect(systemViewport.boundingRect().topLeft(), QSize(1, 1)); + } + } + } + + inline void setSystemTransform(const QTransform &xform) + { + systemTransform = xform; + if ((hasSystemTransform = !xform.isIdentity()) || hasSystemViewport) + transformSystemClip(); + systemStateChanged(); + } + + inline void setSystemViewport(const QRegion ®ion) + { + systemViewport = region; + hasSystemViewport = !systemViewport.isEmpty(); + } + + virtual void systemStateChanged() { } + + void drawBoxTextItem(const QPointF &p, const QTextItemInt &ti); +}; + +QT_END_NAMESPACE + +#endif // QPAINTENGINE_P_H diff --git a/Telegram/_qt_5_3_0_patch/qtbase/src/plugins/platforms/cocoa/qnsview.mm b/Telegram/_qt_5_3_0_patch/qtbase/src/plugins/platforms/cocoa/qnsview.mm new file mode 100644 index 000000000..db9e8137e --- /dev/null +++ b/Telegram/_qt_5_3_0_patch/qtbase/src/plugins/platforms/cocoa/qnsview.mm @@ -0,0 +1,1772 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#include + +#include "qnsview.h" +#include "qcocoawindow.h" +#include "qcocoahelpers.h" +#include "qcocoaautoreleasepool.h" +#include "qmultitouch_mac_p.h" +#include "qcocoadrag.h" +#include + +#include +#include +#include +#include +#include "qcocoabackingstore.h" +#include "qcocoaglcontext.h" +#include "qcocoaintegration.h" + +#ifdef QT_COCOA_ENABLE_ACCESSIBILITY_INSPECTOR +#include +#endif + +static QTouchDevice *touchDevice = 0; + +@interface NSEvent (Qt_Compile_Leopard_DeviceDelta) + - (CGFloat)deviceDeltaX; + - (CGFloat)deviceDeltaY; + - (CGFloat)deviceDeltaZ; +@end + +@implementation QNSView + +- (id) init +{ + self = [super initWithFrame : NSMakeRect(0,0, 300,300)]; + if (self) { + m_backingStore = 0; + m_maskImage = 0; + m_shouldInvalidateWindowShadow = false; + m_window = 0; + m_buttons = Qt::NoButton; + m_sendKeyEvent = false; + m_subscribesForGlobalFrameNotifications = false; + m_glContext = 0; + m_shouldSetGLContextinDrawRect = false; + currentCustomDragTypes = 0; + m_sendUpAsRightButton = false; + m_inputSource = 0; + + if (!touchDevice) { + touchDevice = new QTouchDevice; + touchDevice->setType(QTouchDevice::TouchPad); + touchDevice->setCapabilities(QTouchDevice::Position | QTouchDevice::NormalizedPosition); + QWindowSystemInterface::registerTouchDevice(touchDevice); + } + } + return self; +} + +- (void)dealloc +{ + CGImageRelease(m_maskImage); + m_maskImage = 0; + m_window = 0; + m_subscribesForGlobalFrameNotifications = false; + [m_inputSource release]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + delete currentCustomDragTypes; + + [super dealloc]; +} + +- (id)initWithQWindow:(QWindow *)window platformWindow:(QCocoaWindow *) platformWindow +{ + self = [self init]; + if (!self) + return 0; + + m_window = window; + m_platformWindow = platformWindow; + m_sendKeyEvent = false; + +#ifdef QT_COCOA_ENABLE_ACCESSIBILITY_INSPECTOR + // prevent rift in space-time continuum, disable + // accessibility for the accessibility inspector's windows. + static bool skipAccessibilityForInspectorWindows = false; + if (!skipAccessibilityForInspectorWindows) { + + // m_accessibleRoot = window->accessibleRoot(); + + AccessibilityInspector *inspector = new AccessibilityInspector(window); + skipAccessibilityForInspectorWindows = true; + inspector->inspectWindow(window); + skipAccessibilityForInspectorWindows = false; + } +#endif + + [self registerDragTypes]; + [self setPostsFrameChangedNotifications : YES]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(updateGeometry) + name:NSViewFrameDidChangeNotification + object:self]; + + return self; +} + +- (void) setQCocoaGLContext:(QCocoaGLContext *)context +{ + m_glContext = context; + [m_glContext->nsOpenGLContext() setView:self]; + if (![m_glContext->nsOpenGLContext() view]) { + //was unable to set view + m_shouldSetGLContextinDrawRect = true; + } + + if (!m_subscribesForGlobalFrameNotifications) { + // NSOpenGLContext expects us to repaint (or update) the view when + // it changes position on screen. Since this happens unnoticed for + // the view when the parent view moves, we need to register a special + // notification that lets us handle this case: + m_subscribesForGlobalFrameNotifications = true; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(globalFrameChanged:) + name:NSViewGlobalFrameDidChangeNotification + object:self]; + } +} + +- (void) globalFrameChanged:(NSNotification*)notification +{ + Q_UNUSED(notification); + m_platformWindow->updateExposedGeometry(); +} + +- (void)viewDidMoveToSuperview +{ + if (!(m_platformWindow->m_contentViewIsToBeEmbedded)) + return; + + if ([self superview]) { + m_platformWindow->m_contentViewIsEmbedded = true; + QWindowSystemInterface::handleGeometryChange(m_window, m_platformWindow->geometry()); + m_platformWindow->updateExposedGeometry(); + QWindowSystemInterface::flushWindowSystemEvents(); + } else { + m_platformWindow->m_contentViewIsEmbedded = false; + } +} + +- (void)viewWillMoveToWindow:(NSWindow *)newWindow +{ + // ### Merge "normal" window code path with this one for 5.1. + if (!(m_window->type() & Qt::SubWindow)) + return; + + if (newWindow) { + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(windowNotification:) + name:nil // Get all notifications + object:newWindow]; + } + if ([self window]) + [[NSNotificationCenter defaultCenter] removeObserver:self name:nil object:[self window]]; +} + +- (QWindow *)topLevelWindow +{ + QWindow *focusWindow = m_window; + + // For widgets we need to do a bit of trickery as the window + // to activate is the window of the top-level widget. + if (m_window->metaObject()->className() == QStringLiteral("QWidgetWindow")) { + while (focusWindow->parent()) { + focusWindow = focusWindow->parent(); + } + } + + return focusWindow; +} + +- (void)updateGeometry +{ + QRect geometry; + + if (m_platformWindow->m_isNSWindowChild) { + return; +#if 0 + //geometry = qt_mac_toQRect([self frame]); + qDebug() << "nsview updateGeometry" << m_platformWindow->window(); + QRect screenRect = qt_mac_toQRect([m_platformWindow->m_nsWindow convertRectToScreen:[self frame]]); + qDebug() << "screenRect" << screenRect; + + screenRect.moveTop(qt_mac_flipYCoordinate(screenRect.y() + screenRect.height())); + geometry = QRect(m_platformWindow->window()->parent()->mapFromGlobal(screenRect.topLeft()), screenRect.size()); + qDebug() << "geometry" << geometry; +#endif + //geometry = QRect(screenRect.origin.x, qt_mac_flipYCoordinate(screenRect.origin.y + screenRect.size.height), screenRect.size.width, screenRect.size.height); + } else if (m_platformWindow->m_nsWindow) { + // top level window, get window rect and flip y. + NSRect rect = [self frame]; + NSRect windowRect = [[self window] frame]; + geometry = QRect(windowRect.origin.x, qt_mac_flipYCoordinate(windowRect.origin.y + rect.size.height), rect.size.width, rect.size.height); + } else if (m_platformWindow->m_contentViewIsToBeEmbedded) { + // embedded child window, use the frame rect ### merge with case below + geometry = qt_mac_toQRect([self bounds]); + } else { + // child window, use the frame rect + geometry = qt_mac_toQRect([self frame]); + } + + if (m_platformWindow->m_nsWindow && geometry == m_platformWindow->geometry()) + return; + +#ifdef QT_COCOA_ENABLE_WINDOW_DEBUG + qDebug() << "QNSView::udpateGeometry" << m_platformWindow << geometry; +#endif + + // Call setGeometry on QPlatformWindow. (not on QCocoaWindow, + // doing that will initiate a geometry change it and possibly create + // an infinite loop when this notification is triggered again.) + m_platformWindow->QPlatformWindow::setGeometry(geometry); + + // Don't send the geometry change if the QWindow is designated to be + // embedded in a foreign view hiearchy but has not actually been + // embedded yet - it's too early. + if (m_platformWindow->m_contentViewIsToBeEmbedded && !m_platformWindow->m_contentViewIsEmbedded) + return; + + // Send a geometry change event to Qt, if it's ready to handle events + if (!m_platformWindow->m_inConstructor) { + QWindowSystemInterface::handleGeometryChange(m_window, geometry); + m_platformWindow->updateExposedGeometry(); + QWindowSystemInterface::flushWindowSystemEvents(); + } +} + +- (void)notifyWindowStateChanged:(Qt::WindowState)newState +{ + // If the window was maximized, then fullscreen, then tried to go directly to "normal" state, + // this notification will say that it is "normal", but it will still look maximized, and + // if you called performZoom it would actually take it back to "normal". + // So we should say that it is maximized because it actually is. + if (newState == Qt::WindowNoState && m_platformWindow->m_effectivelyMaximized) + newState = Qt::WindowMaximized; + QWindowSystemInterface::handleWindowStateChanged(m_window, newState); + // We want to read the window state back from the window, + // but the event we just sent may be asynchronous. + QWindowSystemInterface::flushWindowSystemEvents(); + m_platformWindow->setSynchedWindowStateFromWindow(); +} + +- (void)windowNotification : (NSNotification *) windowNotification +{ + //qDebug() << "windowNotification" << QCFString::toQString([windowNotification name]); + + NSString *notificationName = [windowNotification name]; + if (notificationName == NSWindowDidBecomeKeyNotification) { + if (!m_platformWindow->windowIsPopupType()) + QWindowSystemInterface::handleWindowActivated(m_window); + } else if (notificationName == NSWindowDidResignKeyNotification) { + // key window will be non-nil if another window became key... do not + // set the active window to zero here, the new key window's + // NSWindowDidBecomeKeyNotification hander will change the active window + NSWindow *keyWindow = [NSApp keyWindow]; + if (!keyWindow) { + // no new key window, go ahead and set the active window to zero + if (!m_platformWindow->windowIsPopupType()) + QWindowSystemInterface::handleWindowActivated(0); + } + } else if (notificationName == NSWindowDidMiniaturizeNotification + || notificationName == NSWindowDidDeminiaturizeNotification) { + Qt::WindowState newState = notificationName == NSWindowDidMiniaturizeNotification ? + Qt::WindowMinimized : Qt::WindowNoState; + [self notifyWindowStateChanged:newState]; + // NSWindowDidOrderOnScreenAndFinishAnimatingNotification is private API, and not + // emitted in 10.6, so we bring back the old behavior for that case alone. + if (newState == Qt::WindowNoState/* && QSysInfo::QSysInfo::MacintoshVersion == QSysInfo::MV_10_6*/) // also not emitted if window restored from the app + m_platformWindow->exposeWindow(); + } else if ([notificationName isEqualToString: @"NSWindowDidOrderOffScreenNotification"]) { + m_platformWindow->obscureWindow(); + } else if ([notificationName isEqualToString: @"NSWindowDidOrderOnScreenAndFinishAnimatingNotification"]) { + m_platformWindow->exposeWindow(); + } else if (notificationName == NSWindowDidChangeScreenNotification) { + if (m_window) { + NSUInteger screenIndex = [[NSScreen screens] indexOfObject:self.window.screen]; + if (screenIndex != NSNotFound) { + m_platformWindow->updateExposedGeometry(); + QCocoaScreen *cocoaScreen = QCocoaIntegration::instance()->screenAtIndex(screenIndex); + QWindowSystemInterface::handleWindowScreenChanged(m_window, cocoaScreen->screen()); + } + } + } else { + +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 + if (QSysInfo::QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7) { + if (notificationName == NSWindowDidEnterFullScreenNotification + || notificationName == NSWindowDidExitFullScreenNotification) { + Qt::WindowState newState = notificationName == NSWindowDidEnterFullScreenNotification ? + Qt::WindowFullScreen : Qt::WindowNoState; + [self notifyWindowStateChanged:newState]; + } + } +#endif + + } +} + +- (void)notifyWindowWillZoom:(BOOL)willZoom +{ + Qt::WindowState newState = willZoom ? Qt::WindowMaximized : Qt::WindowNoState; + if (!willZoom) + m_platformWindow->m_effectivelyMaximized = false; + [self notifyWindowStateChanged:newState]; +} + +- (void)viewDidHide +{ + m_platformWindow->obscureWindow(); +} + +- (void)viewDidUnhide +{ + m_platformWindow->exposeWindow(); +} + +- (void) flushBackingStore:(QCocoaBackingStore *)backingStore region:(const QRegion &)region offset:(QPoint)offset +{ + m_backingStore = backingStore; + m_backingStoreOffset = offset * m_backingStore->getBackingStoreDevicePixelRatio(); + foreach (QRect rect, region.rects()) { + [self setNeedsDisplayInRect:NSMakeRect(rect.x(), rect.y(), rect.width(), rect.height())]; + } +} + +- (BOOL) hasMask +{ + return m_maskImage != 0; +} + +- (BOOL) isOpaque +{ + return m_platformWindow->isOpaque(); +} + +- (void) setMaskRegion:(const QRegion *)region +{ + m_shouldInvalidateWindowShadow = true; + if (m_maskImage) + CGImageRelease(m_maskImage); + if (region->isEmpty()) { + m_maskImage = 0; + return; + } + + const QRect &rect = region->boundingRect(); + QImage tmp(rect.size(), QImage::Format_RGB32); + tmp.fill(Qt::white); + QPainter p(&tmp); + p.setClipRegion(*region); + p.fillRect(rect, Qt::black); + p.end(); + QImage maskImage = QImage(rect.size(), QImage::Format_Indexed8); + for (int y=0; ym_nsWindow) { + [m_platformWindow->m_nsWindow invalidateShadow]; + m_shouldInvalidateWindowShadow = false; + } +} + +- (void) drawRect:(NSRect)dirtyRect +{ + if (m_glContext && m_shouldSetGLContextinDrawRect) { + [m_glContext->nsOpenGLContext() setView:self]; + m_shouldSetGLContextinDrawRect = false; + } + + if (m_platformWindow->m_drawContentBorderGradient) + NSDrawWindowBackground(dirtyRect); + + if (!m_backingStore) + return; + + // Calculate source and target rects. The target rect is the dirtyRect: + CGRect dirtyWindowRect = NSRectToCGRect(dirtyRect); + + // The backing store source rect will be larger on retina displays. + // Scale dirtyRect by the device pixel ratio: + const qreal devicePixelRatio = m_backingStore->getBackingStoreDevicePixelRatio(); + CGRect dirtyBackingRect = CGRectMake(dirtyRect.origin.x * devicePixelRatio, + dirtyRect.origin.y * devicePixelRatio, + dirtyRect.size.width * devicePixelRatio, + dirtyRect.size.height * devicePixelRatio); + + NSGraphicsContext *nsGraphicsContext = [NSGraphicsContext currentContext]; + CGContextRef cgContext = (CGContextRef) [nsGraphicsContext graphicsPort]; + + // Translate coordiate system from CoreGraphics (bottom-left) to NSView (top-left): + CGContextSaveGState(cgContext); + int dy = dirtyWindowRect.origin.y + CGRectGetMaxY(dirtyWindowRect); + + CGContextTranslateCTM(cgContext, 0, dy); + CGContextScaleCTM(cgContext, 1, -1); + + // If a mask is set, modify the sub image accordingly: + CGImageRef subMask = 0; + if (m_maskImage) { + subMask = CGImageCreateWithImageInRect(m_maskImage, dirtyWindowRect); + CGContextClipToMask(cgContext, dirtyWindowRect, subMask); + } + + // Clip out and draw the correct sub image from the (shared) backingstore: + CGRect backingStoreRect = CGRectMake( + dirtyBackingRect.origin.x + m_backingStoreOffset.x(), + dirtyBackingRect.origin.y + m_backingStoreOffset.y(), + dirtyBackingRect.size.width, + dirtyBackingRect.size.height + ); + CGImageRef bsCGImage = m_backingStore->getBackingStoreCGImage(); + CGImageRef cleanImg = CGImageCreateWithImageInRect(bsCGImage, backingStoreRect); + + // Optimization: Copy frame buffer content instead of blending for + // top-level windows where Qt fills the entire window content area. + // (But don't overpaint the title-bar gradient) + if (m_platformWindow->m_nsWindow && !m_platformWindow->m_drawContentBorderGradient) + CGContextSetBlendMode(cgContext, kCGBlendModeCopy); + + CGContextDrawImage(cgContext, dirtyWindowRect, cleanImg); + + // Clean-up: + CGContextRestoreGState(cgContext); + CGImageRelease(cleanImg); + CGImageRelease(subMask); + + [self invalidateWindowShadowIfNeeded]; +} + +- (BOOL) isFlipped +{ + return YES; +} + +- (BOOL)becomeFirstResponder +{ + if (m_window->flags() & Qt::WindowTransparentForInput) + return NO; + QWindowSystemInterface::handleWindowActivated([self topLevelWindow]); + return YES; +} + +- (BOOL)acceptsFirstResponder +{ + if (m_window->flags() & Qt::WindowDoesNotAcceptFocus) + return NO; + if (m_window->flags() & Qt::WindowTransparentForInput) + return NO; + if ((m_window->flags() & Qt::ToolTip) == Qt::ToolTip) + return NO; + return YES; +} + +- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent +{ + Q_UNUSED(theEvent) + if (m_window->flags() & Qt::WindowTransparentForInput) + return NO; + return YES; +} + +- (void)convertFromScreen:(NSPoint)mouseLocation toWindowPoint:(QPointF *)qtWindowPoint andScreenPoint:(QPointF *)qtScreenPoint +{ + // Calculate the mouse position in the QWindow and Qt screen coordinate system, + // starting from coordinates in the NSWindow coordinate system. + // + // This involves translating according to the window location on screen, + // as well as inverting the y coordinate due to the origin change. + // + // Coordinate system overview, outer to innermost: + // + // Name Origin + // + // OS X screen bottom-left + // Qt screen top-left + // NSWindow bottom-left + // NSView/QWindow top-left + // + // NSView and QWindow are equal coordinate systems: the QWindow covers the + // entire NSView, and we've set the NSView's isFlipped property to true. + + NSWindow *window = [self window]; + NSPoint nsWindowPoint; + // Use convertRectToScreen if available (added in 10.7). +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 + if ([window respondsToSelector:@selector(convertRectFromScreen:)]) { + NSRect windowRect = [window convertRectFromScreen:NSMakeRect(mouseLocation.x, mouseLocation.y, 1, 1)]; + nsWindowPoint = windowRect.origin; // NSWindow coordinates + } else +#endif + { + nsWindowPoint = [window convertScreenToBase:mouseLocation]; // NSWindow coordinates + } + NSPoint nsViewPoint = [self convertPoint: nsWindowPoint fromView: nil]; // NSView/QWindow coordinates + *qtWindowPoint = QPointF(nsViewPoint.x, nsViewPoint.y); // NSView/QWindow coordinates + + *qtScreenPoint = QPointF(mouseLocation.x, qt_mac_flipYCoordinate(mouseLocation.y)); // Qt screen coordinates +} + +- (void)resetMouseButtons +{ + m_buttons = Qt::NoButton; +} + +- (void)handleMouseEvent:(NSEvent *)theEvent +{ + [self handleTabletEvent: theEvent]; + + QPointF qtWindowPoint; + QPointF qtScreenPoint; + QNSView *targetView = self; + if (m_platformWindow && m_platformWindow->m_forwardWindow) { + if (theEvent.type == NSLeftMouseDragged || theEvent.type == NSLeftMouseUp) + targetView = m_platformWindow->m_forwardWindow->m_qtView; + else + m_platformWindow->m_forwardWindow = 0; + } + + [targetView convertFromScreen:[NSEvent mouseLocation] toWindowPoint:&qtWindowPoint andScreenPoint:&qtScreenPoint]; + ulong timestamp = [theEvent timestamp] * 1000; + + QCocoaDrag* nativeDrag = QCocoaIntegration::instance()->drag(); + nativeDrag->setLastMouseEvent(theEvent, self); + + Qt::KeyboardModifiers keyboardModifiers = [QNSView convertKeyModifiers:[theEvent modifierFlags]]; + QWindowSystemInterface::handleMouseEvent(targetView->m_window, timestamp, qtWindowPoint, qtScreenPoint, m_buttons, keyboardModifiers); +} + +- (void)handleFrameStrutMouseEvent:(NSEvent *)theEvent +{ + // get m_buttons in sync + NSEventType ty = [theEvent type]; + switch (ty) { + case NSLeftMouseDown: + m_buttons |= Qt::LeftButton; + break; + case NSLeftMouseUp: + m_buttons &= ~Qt::LeftButton; + break; + case NSRightMouseDown: + m_buttons |= Qt::RightButton; + break; + case NSRightMouseUp: + m_buttons &= ~Qt::RightButton; + break; + case NSOtherMouseDown: + m_buttons |= cocoaButton2QtButton([theEvent buttonNumber]); + break; + case NSOtherMouseUp: + m_buttons &= ~cocoaButton2QtButton([theEvent buttonNumber]); + default: + break; + } + + NSWindow *window = [self window]; + NSPoint windowPoint = [theEvent locationInWindow]; + + int windowScreenY = [window frame].origin.y + [window frame].size.height; + int viewScreenY = [window convertBaseToScreen:[self convertPoint:[self frame].origin toView:nil]].y; + int titleBarHeight = windowScreenY - viewScreenY; + + NSPoint nsViewPoint = [self convertPoint: windowPoint fromView: nil]; + QPoint qtWindowPoint = QPoint(nsViewPoint.x, titleBarHeight + nsViewPoint.y); + NSPoint screenPoint = [window convertBaseToScreen:windowPoint]; + QPoint qtScreenPoint = QPoint(screenPoint.x, qt_mac_flipYCoordinate(screenPoint.y)); + + ulong timestamp = [theEvent timestamp] * 1000; + QWindowSystemInterface::handleFrameStrutMouseEvent(m_window, timestamp, qtWindowPoint, qtScreenPoint, m_buttons); +} + +- (void)mouseDown:(NSEvent *)theEvent +{ + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super mouseDown:theEvent]; + m_sendUpAsRightButton = false; + if (m_platformWindow->m_activePopupWindow) { + Qt::WindowType type = m_platformWindow->m_activePopupWindow->type(); + QWindowSystemInterface::handleCloseEvent(m_platformWindow->m_activePopupWindow); + QWindowSystemInterface::flushWindowSystemEvents(); + m_platformWindow->m_activePopupWindow = 0; + // Consume the mouse event when closing the popup, except for tool tips + // were it's expected that the event is processed normally. + if (type != Qt::ToolTip) + return; + } + if ([self hasMarkedText]) { + NSInputManager* inputManager = [NSInputManager currentInputManager]; + if ([inputManager wantsToHandleMouseEvents]) { + [inputManager handleMouseEvent:theEvent]; + } + } else { + if ([QNSView convertKeyModifiers:[theEvent modifierFlags]] & Qt::MetaModifier) { + m_buttons |= Qt::RightButton; + m_sendUpAsRightButton = true; + } else { + m_buttons |= Qt::LeftButton; + } + [self handleMouseEvent:theEvent]; + } +} + +- (void)mouseDragged:(NSEvent *)theEvent +{ + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super mouseDragged:theEvent]; + if (!(m_buttons & (m_sendUpAsRightButton ? Qt::RightButton : Qt::LeftButton))) + qWarning("QNSView mouseDragged: Internal mouse button tracking invalid (missing Qt::LeftButton)"); + [self handleMouseEvent:theEvent]; +} + +- (void)mouseUp:(NSEvent *)theEvent +{ + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super mouseUp:theEvent]; + if (m_sendUpAsRightButton) { + m_buttons &= ~Qt::RightButton; + m_sendUpAsRightButton = false; + } else { + m_buttons &= ~Qt::LeftButton; + } + [self handleMouseEvent:theEvent]; +} + +- (void)updateTrackingAreas +{ + [super updateTrackingAreas]; + + // [NSView addTrackingArea] is slow, so bail out early if we can: + if (NSIsEmptyRect([self visibleRect])) + return; + + // Remove current trakcing areas: + QCocoaAutoReleasePool pool; + if (NSArray *trackingArray = [self trackingAreas]) { + NSUInteger size = [trackingArray count]; + for (NSUInteger i = 0; i < size; ++i) { + NSTrackingArea *t = [trackingArray objectAtIndex:i]; + [self removeTrackingArea:t]; + } + } + + // Ideally, we shouldn't have NSTrackingMouseMoved events included below, it should + // only be turned on if mouseTracking, hover is on or a tool tip is set. + // Unfortunately, Qt will send "tooltip" events on mouse moves, so we need to + // turn it on in ALL case. That means EVERY QWindow gets to pay the cost of + // mouse moves delivered to it (Apple recommends keeping it OFF because there + // is a performance hit). So it goes. + NSUInteger trackingOptions = NSTrackingMouseEnteredAndExited | NSTrackingActiveInActiveApp + | NSTrackingInVisibleRect | NSTrackingMouseMoved | NSTrackingCursorUpdate; + NSTrackingArea *ta = [[[NSTrackingArea alloc] initWithRect:[self frame] + options:trackingOptions + owner:self + userInfo:nil] + autorelease]; + [self addTrackingArea:ta]; +} + +-(void)cursorUpdate:(NSEvent *)theEvent +{ + Q_UNUSED(theEvent) + // Set the cursor manually if there is no NSWindow. + if (!m_platformWindow->m_nsWindow && m_platformWindow->m_windowCursor) + [m_platformWindow->m_windowCursor set]; + else + [super cursorUpdate:theEvent]; +} + +-(void)resetCursorRects +{ + // Use the cursor rect API if there is a NSWindow + if (m_platformWindow->m_nsWindow && m_platformWindow->m_windowCursor) + [self addCursorRect:[self visibleRect] cursor:m_platformWindow->m_windowCursor]; +} + +- (void)mouseMoved:(NSEvent *)theEvent +{ + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super mouseMoved:theEvent]; + + QPointF windowPoint; + QPointF screenPoint; + [self convertFromScreen:[NSEvent mouseLocation] toWindowPoint:&windowPoint andScreenPoint:&screenPoint]; + QWindow *childWindow = m_platformWindow->childWindowAt(windowPoint.toPoint()); + + // Top-level windows generate enter-leave events for sub-windows. + // Qt wants to know which window (if any) will be entered at the + // the time of the leave. This is dificult to accomplish by + // handling mouseEnter and mouseLeave envents, since they are sent + // individually to different views. + if (m_platformWindow->m_nsWindow && childWindow) { + if (childWindow != m_platformWindow->m_enterLeaveTargetWindow) { + QWindowSystemInterface::handleEnterLeaveEvent(childWindow, m_platformWindow->m_enterLeaveTargetWindow, windowPoint, screenPoint); + m_platformWindow->m_enterLeaveTargetWindow = childWindow; + } + } + + // Cocoa keeps firing mouse move events for obscured parent views. Qt should not + // send those events so filter them out here. + if (childWindow != m_window) + return; + + [self handleMouseEvent: theEvent]; +} + +- (void)mouseEntered:(NSEvent *)theEvent +{ + m_platformWindow->m_windowUnderMouse = true; + + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super mouseEntered:theEvent]; + + // Top-level windows generate enter events for sub-windows. + if (!m_platformWindow->m_nsWindow) + return; + + QPointF windowPoint; + QPointF screenPoint; + [self convertFromScreen:[NSEvent mouseLocation] toWindowPoint:&windowPoint andScreenPoint:&screenPoint]; + m_platformWindow->m_enterLeaveTargetWindow = m_platformWindow->childWindowAt(windowPoint.toPoint()); + QWindowSystemInterface::handleEnterEvent(m_platformWindow->m_enterLeaveTargetWindow, windowPoint, screenPoint); +} + +- (void)mouseExited:(NSEvent *)theEvent +{ + m_platformWindow->m_windowUnderMouse = false; + + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super mouseExited:theEvent]; + Q_UNUSED(theEvent); + + // Top-level windows generate leave events for sub-windows. + if (!m_platformWindow->m_nsWindow) + return; + + QWindowSystemInterface::handleLeaveEvent(m_platformWindow->m_enterLeaveTargetWindow); + m_platformWindow->m_enterLeaveTargetWindow = 0; +} + +- (void)rightMouseDown:(NSEvent *)theEvent +{ + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super rightMouseDown:theEvent]; + m_buttons |= Qt::RightButton; + [self handleMouseEvent:theEvent]; +} + +- (void)rightMouseDragged:(NSEvent *)theEvent +{ + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super rightMouseDragged:theEvent]; + if (!(m_buttons & Qt::RightButton)) + qWarning("QNSView rightMouseDragged: Internal mouse button tracking invalid (missing Qt::RightButton)"); + [self handleMouseEvent:theEvent]; +} + +- (void)rightMouseUp:(NSEvent *)theEvent +{ + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super rightMouseUp:theEvent]; + m_buttons &= ~Qt::RightButton; + [self handleMouseEvent:theEvent]; +} + +- (void)otherMouseDown:(NSEvent *)theEvent +{ + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super otherMouseDown:theEvent]; + m_buttons |= cocoaButton2QtButton([theEvent buttonNumber]); + [self handleMouseEvent:theEvent]; +} + +- (void)otherMouseDragged:(NSEvent *)theEvent +{ + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super otherMouseDragged:theEvent]; + if (!(m_buttons & ~(Qt::LeftButton | Qt::RightButton))) + qWarning("QNSView otherMouseDragged: Internal mouse button tracking invalid (missing Qt::MiddleButton or Qt::ExtraButton*)"); + [self handleMouseEvent:theEvent]; +} + +- (void)otherMouseUp:(NSEvent *)theEvent +{ + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super otherMouseUp:theEvent]; + m_buttons &= ~cocoaButton2QtButton([theEvent buttonNumber]); + [self handleMouseEvent:theEvent]; +} + +struct QCocoaTabletDeviceData +{ + QTabletEvent::TabletDevice device; + QTabletEvent::PointerType pointerType; + uint capabilityMask; + qint64 uid; +}; + +typedef QHash QCocoaTabletDeviceDataHash; +Q_GLOBAL_STATIC(QCocoaTabletDeviceDataHash, tabletDeviceDataHash) + +- (void)handleTabletEvent: (NSEvent *)theEvent +{ + NSEventType eventType = [theEvent type]; + if (eventType != NSTabletPoint && [theEvent subtype] != NSTabletPointEventSubtype) + return; // Not a tablet event. + + ulong timestamp = [theEvent timestamp] * 1000; + + QPointF windowPoint; + QPointF screenPoint; + [self convertFromScreen:[NSEvent mouseLocation] toWindowPoint: &windowPoint andScreenPoint: &screenPoint]; + + uint deviceId = [theEvent deviceID]; + if (!tabletDeviceDataHash->contains(deviceId)) { + // Error: Unknown tablet device. Qt also gets into this state + // when running on a VM. This appears to be harmless; don't + // print a warning. + return; + } + const QCocoaTabletDeviceData &deviceData = tabletDeviceDataHash->value(deviceId); + + bool down = (eventType != NSMouseMoved); + + qreal pressure; + if (down) { + pressure = [theEvent pressure]; + } else { + pressure = 0.0; + } + + NSPoint tilt = [theEvent tilt]; + int xTilt = qRound(tilt.x * 60.0); + int yTilt = qRound(tilt.y * -60.0); + qreal tangentialPressure = 0; + qreal rotation = 0; + int z = 0; + if (deviceData.capabilityMask & 0x0200) + z = [theEvent absoluteZ]; + + if (deviceData.capabilityMask & 0x0800) + tangentialPressure = [theEvent tangentialPressure]; + + rotation = [theEvent rotation]; + + Qt::KeyboardModifiers keyboardModifiers = [QNSView convertKeyModifiers:[theEvent modifierFlags]]; + + QWindowSystemInterface::handleTabletEvent(m_window, timestamp, down, windowPoint, screenPoint, + deviceData.device, deviceData.pointerType, pressure, xTilt, yTilt, + tangentialPressure, rotation, z, deviceData.uid, + keyboardModifiers); +} + +- (void)tabletPoint: (NSEvent *)theEvent +{ + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super tabletPoint:theEvent]; + + [self handleTabletEvent: theEvent]; +} + +static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent) +{ + qint64 uid = [theEvent uniqueID]; + uint bits = [theEvent vendorPointingDeviceType]; + if (bits == 0 && uid != 0) { + // Fallback. It seems that the driver doesn't always include all the information. + // High-End Wacom devices store their "type" in the uper bits of the Unique ID. + // I'm not sure how to handle it for consumer devices, but I'll test that in a bit. + bits = uid >> 32; + } + + QTabletEvent::TabletDevice device; + // Defined in the "EN0056-NxtGenImpGuideX" + // on Wacom's Developer Website (www.wacomeng.com) + if (((bits & 0x0006) == 0x0002) && ((bits & 0x0F06) != 0x0902)) { + device = QTabletEvent::Stylus; + } else { + switch (bits & 0x0F06) { + case 0x0802: + device = QTabletEvent::Stylus; + break; + case 0x0902: + device = QTabletEvent::Airbrush; + break; + case 0x0004: + device = QTabletEvent::FourDMouse; + break; + case 0x0006: + device = QTabletEvent::Puck; + break; + case 0x0804: + device = QTabletEvent::RotationStylus; + break; + default: + device = QTabletEvent::NoDevice; + } + } + return device; +} + +- (void)tabletProximity: (NSEvent *)theEvent +{ + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super tabletProximity:theEvent]; + + ulong timestamp = [theEvent timestamp] * 1000; + + QCocoaTabletDeviceData deviceData; + deviceData.uid = [theEvent uniqueID]; + deviceData.capabilityMask = [theEvent capabilityMask]; + + switch ([theEvent pointingDeviceType]) { + case NSUnknownPointingDevice: + default: + deviceData.pointerType = QTabletEvent::UnknownPointer; + break; + case NSPenPointingDevice: + deviceData.pointerType = QTabletEvent::Pen; + break; + case NSCursorPointingDevice: + deviceData.pointerType = QTabletEvent::Cursor; + break; + case NSEraserPointingDevice: + deviceData.pointerType = QTabletEvent::Eraser; + break; + } + + deviceData.device = wacomTabletDevice(theEvent); + + // The deviceID is "unique" while in the proximity, it's a key that we can use for + // linking up QCocoaTabletDeviceData to an event (especially if there are two devices in action). + bool entering = [theEvent isEnteringProximity]; + uint deviceId = [theEvent deviceID]; + if (entering) { + tabletDeviceDataHash->insert(deviceId, deviceData); + } else { + tabletDeviceDataHash->remove(deviceId); + } + + if (entering) { + QWindowSystemInterface::handleTabletEnterProximityEvent(timestamp, deviceData.device, deviceData.pointerType, deviceData.uid); + } else { + QWindowSystemInterface::handleTabletLeaveProximityEvent(timestamp, deviceData.device, deviceData.pointerType, deviceData.uid); + } +} + +- (void)touchesBeganWithEvent:(NSEvent *)event +{ + const NSTimeInterval timestamp = [event timestamp]; + const QList points = QCocoaTouch::getCurrentTouchPointList(event, /*acceptSingleTouch= ### true or false?*/false); + QWindowSystemInterface::handleTouchEvent(m_window, timestamp * 1000, touchDevice, points); +} + +- (void)touchesMovedWithEvent:(NSEvent *)event +{ + const NSTimeInterval timestamp = [event timestamp]; + const QList points = QCocoaTouch::getCurrentTouchPointList(event, /*acceptSingleTouch= ### true or false?*/false); + QWindowSystemInterface::handleTouchEvent(m_window, timestamp * 1000, touchDevice, points); +} + +- (void)touchesEndedWithEvent:(NSEvent *)event +{ + const NSTimeInterval timestamp = [event timestamp]; + const QList points = QCocoaTouch::getCurrentTouchPointList(event, /*acceptSingleTouch= ### true or false?*/false); + QWindowSystemInterface::handleTouchEvent(m_window, timestamp * 1000, touchDevice, points); +} + +- (void)touchesCancelledWithEvent:(NSEvent *)event +{ + const NSTimeInterval timestamp = [event timestamp]; + const QList points = QCocoaTouch::getCurrentTouchPointList(event, /*acceptSingleTouch= ### true or false?*/false); + QWindowSystemInterface::handleTouchEvent(m_window, timestamp * 1000, touchDevice, points); +} + +#ifndef QT_NO_GESTURES +//#define QT_COCOA_ENABLE_GESTURE_DEBUG +- (void)magnifyWithEvent:(NSEvent *)event +{ +#ifdef QT_COCOA_ENABLE_GESTURE_DEBUG + qDebug() << "magnifyWithEvent" << [event magnification]; +#endif + const NSTimeInterval timestamp = [event timestamp]; + QPointF windowPoint; + QPointF screenPoint; + [self convertFromScreen:[NSEvent mouseLocation] toWindowPoint:&windowPoint andScreenPoint:&screenPoint]; + QWindowSystemInterface::handleGestureEventWithRealValue(m_window, timestamp, Qt::ZoomNativeGesture, + [event magnification], windowPoint, screenPoint); +} + +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_8 +- (void)smartMagnifyWithEvent:(NSEvent *)event +{ + static bool zoomIn = true; +#ifdef QT_COCOA_ENABLE_GESTURE_DEBUG + qDebug() << "smartMagnifyWithEvent" << zoomIn; +#endif + const NSTimeInterval timestamp = [event timestamp]; + QPointF windowPoint; + QPointF screenPoint; + [self convertFromScreen:[NSEvent mouseLocation] toWindowPoint:&windowPoint andScreenPoint:&screenPoint]; + QWindowSystemInterface::handleGestureEventWithRealValue(m_window, timestamp, Qt::SmartZoomNativeGesture, + zoomIn ? 1.0f : 0.0f, windowPoint, screenPoint); + zoomIn = !zoomIn; +} +#endif + +- (void)rotateWithEvent:(NSEvent *)event +{ +#ifdef QT_COCOA_ENABLE_GESTURE_DEBUG + qDebug() << "rotateWithEvent" << [event rotation]; +#endif + const NSTimeInterval timestamp = [event timestamp]; + QPointF windowPoint; + QPointF screenPoint; + [self convertFromScreen:[NSEvent mouseLocation] toWindowPoint:&windowPoint andScreenPoint:&screenPoint]; + QWindowSystemInterface::handleGestureEventWithRealValue(m_window, timestamp, Qt::RotateNativeGesture, + -[event rotation], windowPoint, screenPoint); +} + +- (void)swipeWithEvent:(NSEvent *)event +{ +#ifdef QT_COCOA_ENABLE_GESTURE_DEBUG + qDebug() << "swipeWithEvent" << [event deltaX] << [event deltaY]; +#endif + const NSTimeInterval timestamp = [event timestamp]; + QPointF windowPoint; + QPointF screenPoint; + [self convertFromScreen:[NSEvent mouseLocation] toWindowPoint:&windowPoint andScreenPoint:&screenPoint]; + + qreal angle = 0.0f; + if ([event deltaX] == 1) + angle = 180.0f; + else if ([event deltaX] == -1) + angle = 0.0f; + else if ([event deltaY] == 1) + angle = 90.0f; + else if ([event deltaY] == -1) + angle = 270.0f; + + QWindowSystemInterface::handleGestureEventWithRealValue(m_window, timestamp, Qt::SwipeNativeGesture, + angle, windowPoint, screenPoint); +} + +- (void)beginGestureWithEvent:(NSEvent *)event +{ +#ifdef QT_COCOA_ENABLE_GESTURE_DEBUG + qDebug() << "beginGestureWithEvent"; +#endif + const NSTimeInterval timestamp = [event timestamp]; + QPointF windowPoint; + QPointF screenPoint; + [self convertFromScreen:[NSEvent mouseLocation] toWindowPoint:&windowPoint andScreenPoint:&screenPoint]; + QWindowSystemInterface::handleGestureEvent(m_window, timestamp, Qt::BeginNativeGesture, + windowPoint, screenPoint); +} + +- (void)endGestureWithEvent:(NSEvent *)event +{ +#ifdef QT_COCOA_ENABLE_GESTURE_DEBUG + qDebug() << "endGestureWithEvent"; +#endif + const NSTimeInterval timestamp = [event timestamp]; + QPointF windowPoint; + QPointF screenPoint; + [self convertFromScreen:[NSEvent mouseLocation] toWindowPoint:&windowPoint andScreenPoint:&screenPoint]; + QWindowSystemInterface::handleGestureEvent(m_window, timestamp, Qt::EndNativeGesture, + windowPoint, screenPoint); +} +#endif // QT_NO_GESTURES + +#ifndef QT_NO_WHEELEVENT +- (void)scrollWheel:(NSEvent *)theEvent +{ + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super scrollWheel:theEvent]; + const EventRef carbonEvent = (EventRef)[theEvent eventRef]; + const UInt32 carbonEventKind = carbonEvent ? ::GetEventKind(carbonEvent) : 0; + const bool scrollEvent = carbonEventKind == kEventMouseScroll; + + QPoint angleDelta; + if (scrollEvent) { + // The mouse device contains pixel scroll wheel support (Mighty Mouse, Trackpad). + // Since deviceDelta is delivered as pixels rather than degrees, we need to + // convert from pixels to degrees in a sensible manner. + // It looks like 1/4 degrees per pixel behaves most native. + // (NB: Qt expects the unit for delta to be 8 per degree): + const int pixelsToDegrees = 2; // 8 * 1/4 + +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 + if ([theEvent respondsToSelector:@selector(scrollingDeltaX)]) { + angleDelta.setX([theEvent scrollingDeltaX] * pixelsToDegrees); + angleDelta.setY([theEvent scrollingDeltaY] * pixelsToDegrees); + } else +#endif + { + angleDelta.setX([theEvent deviceDeltaX] * pixelsToDegrees); + angleDelta.setY([theEvent deviceDeltaY] * pixelsToDegrees); + } + + } else { + // carbonEventKind == kEventMouseWheelMoved + // Remove acceleration, and use either -120 or 120 as delta: + angleDelta.setX(qBound(-120, int([theEvent deltaX] * 10000), 120)); + angleDelta.setY(qBound(-120, int([theEvent deltaY] * 10000), 120)); + } + + QPoint pixelDelta; +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 + if ([theEvent respondsToSelector:@selector(scrollingDeltaX)]) { + if ([theEvent hasPreciseScrollingDeltas]) { + pixelDelta.setX([theEvent scrollingDeltaX]); + pixelDelta.setY([theEvent scrollingDeltaY]); + } else { + // docs: "In the case of !hasPreciseScrollingDeltas, multiply the delta with the line width." + // scrollingDeltaX seems to return a minimum value of 0.1 in this case, map that to two pixels. + const CGFloat lineWithEstimate = 20.0; + pixelDelta.setX([theEvent scrollingDeltaX] * lineWithEstimate); + pixelDelta.setY([theEvent scrollingDeltaY] * lineWithEstimate); + } + } +#endif + + QPointF qt_windowPoint; + QPointF qt_screenPoint; + [self convertFromScreen:[NSEvent mouseLocation] toWindowPoint:&qt_windowPoint andScreenPoint:&qt_screenPoint]; + NSTimeInterval timestamp = [theEvent timestamp]; + ulong qt_timestamp = timestamp * 1000; + +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 + if ([theEvent respondsToSelector:@selector(scrollingDeltaX)]) { + // Prevent keyboard modifier state from changing during scroll event streams. + // A two-finger trackpad flick generates a stream of scroll events. We want + // the keyboard modifier state to be the state at the beginning of the + // flick in order to avoid changing the interpretation of the events + // mid-stream. One example of this happening would be when pressing cmd + // after scrolling in Qt Creator: not taking the phase into account causes + // the end of the event stream to be interpreted as font size changes. + NSEventPhase momentumPhase = [theEvent momentumPhase]; + if (momentumPhase == NSEventPhaseNone) { + currentWheelModifiers = [QNSView convertKeyModifiers:[theEvent modifierFlags]]; + } + + NSEventPhase phase = [theEvent phase]; + Qt::ScrollPhase ph = Qt::ScrollUpdate; +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_8 + if (QSysInfo::QSysInfo::MacintoshVersion >= QSysInfo::MV_10_8) { + // On 10.8 and above, MayBegin is likely to happen. We treat it the same as an actual begin. + if (phase == NSEventPhaseMayBegin) + ph = Qt::ScrollBegin; + } else +#endif + if (phase == NSEventPhaseBegan) { + // On 10.7, MayBegin will not happen, so Began is the actual beginning. + ph = Qt::ScrollBegin; + } + if (phase == NSEventPhaseEnded || phase == NSEventPhaseCancelled) { + ph = Qt::ScrollEnd; + } + + QWindowSystemInterface::handleWheelEvent(m_window, qt_timestamp, qt_windowPoint, qt_screenPoint, pixelDelta, angleDelta, currentWheelModifiers, ph); + + if (momentumPhase == NSEventPhaseEnded || momentumPhase == NSEventPhaseCancelled || momentumPhase == NSEventPhaseNone) { + currentWheelModifiers = Qt::NoModifier; + } + } else +#endif + { + QWindowSystemInterface::handleWheelEvent(m_window, qt_timestamp, qt_windowPoint, qt_screenPoint, pixelDelta, angleDelta, + [QNSView convertKeyModifiers:[theEvent modifierFlags]]); + } +} +#endif //QT_NO_WHEELEVENT + +- (int) convertKeyCode : (QChar)keyChar +{ + return qt_mac_cocoaKey2QtKey(keyChar); +} + ++ (Qt::KeyboardModifiers) convertKeyModifiers : (ulong)modifierFlags +{ + Qt::KeyboardModifiers qtMods =Qt::NoModifier; + if (modifierFlags & NSShiftKeyMask) + qtMods |= Qt::ShiftModifier; + if (modifierFlags & NSControlKeyMask) + qtMods |= Qt::MetaModifier; + if (modifierFlags & NSAlternateKeyMask) + qtMods |= Qt::AltModifier; + if (modifierFlags & NSCommandKeyMask) + qtMods |= Qt::ControlModifier; + if (modifierFlags & NSNumericPadKeyMask) + qtMods |= Qt::KeypadModifier; + return qtMods; +} + +- (void)handleKeyEvent:(NSEvent *)nsevent eventType:(int)eventType +{ + ulong timestamp = [nsevent timestamp] * 1000; + ulong nativeModifiers = [nsevent modifierFlags]; + Qt::KeyboardModifiers modifiers = [QNSView convertKeyModifiers: nativeModifiers]; + NSString *charactersIgnoringModifiers = [nsevent charactersIgnoringModifiers]; + NSString *characters = [nsevent characters]; + if (m_inputSource != characters) { + [m_inputSource release]; + m_inputSource = [characters retain]; + } + + // There is no way to get the scan code from carbon/cocoa. But we cannot + // use the value 0, since it indicates that the event originates from somewhere + // else than the keyboard. + quint32 nativeScanCode = 1; + quint32 nativeVirtualKey = [nsevent keyCode]; + + QChar ch = QChar::ReplacementCharacter; + int keyCode = Qt::Key_unknown; + if ([characters length] != 0) { + if ((modifiers & Qt::MetaModifier) && ([charactersIgnoringModifiers length] != 0)) + ch = QChar([charactersIgnoringModifiers characterAtIndex:0]); + else + ch = QChar([characters characterAtIndex:0]); + keyCode = [self convertKeyCode:ch]; + } + + // we will send a key event unless the input method sets m_sendKeyEvent to false + m_sendKeyEvent = true; + QString text; + // ignore text for the U+F700-U+F8FF range. This is used by Cocoa when + // delivering function keys (e.g. arrow keys, backspace, F1-F35, etc.) + if (ch.unicode() < 0xf700 || ch.unicode() > 0xf8ff) + text = QCFString::toQString(characters); + + QWindow *focusWindow = [self topLevelWindow]; + + if (eventType == QEvent::KeyPress) { + + if (m_composingText.isEmpty()) + m_sendKeyEvent = !QWindowSystemInterface::tryHandleShortcutEvent(focusWindow, timestamp, keyCode, modifiers, text); + + QObject *fo = QGuiApplication::focusObject(); + if (m_sendKeyEvent && fo) { + QInputMethodQueryEvent queryEvent(Qt::ImEnabled | Qt::ImHints); + if (QCoreApplication::sendEvent(fo, &queryEvent)) { + bool imEnabled = queryEvent.value(Qt::ImEnabled).toBool(); + Qt::InputMethodHints hints = static_cast(queryEvent.value(Qt::ImHints).toUInt()); + if (imEnabled && !(hints & Qt::ImhDigitsOnly || hints & Qt::ImhFormattedNumbersOnly || hints & Qt::ImhHiddenText)) { + // pass the key event to the input method. note that m_sendKeyEvent may be set to false during this call + [self interpretKeyEvents:[NSArray arrayWithObject:nsevent]]; + } + } + } + } + + if (m_sendKeyEvent && m_composingText.isEmpty()) + QWindowSystemInterface::handleExtendedKeyEvent(focusWindow, timestamp, QEvent::Type(eventType), keyCode, modifiers, + nativeScanCode, nativeVirtualKey, nativeModifiers, text, [nsevent isARepeat]); + + m_sendKeyEvent = false; +} + +- (void)keyDown:(NSEvent *)nsevent +{ + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super keyDown:nsevent]; + [self handleKeyEvent:nsevent eventType:int(QEvent::KeyPress)]; +} + +- (void)keyUp:(NSEvent *)nsevent +{ + if (m_window->flags() & Qt::WindowTransparentForInput) + return [super keyUp:nsevent]; + [self handleKeyEvent:nsevent eventType:int(QEvent::KeyRelease)]; +} + +- (BOOL)performKeyEquivalent:(NSEvent *)nsevent +{ + NSString *chars = [nsevent charactersIgnoringModifiers]; + + if ([nsevent type] == NSKeyDown && [chars length] > 0) { + QChar ch = [chars characterAtIndex:0]; + Qt::Key qtKey = qt_mac_cocoaKey2QtKey(ch); + // check for Command + Key_Period + if ([nsevent modifierFlags] & NSCommandKeyMask + && qtKey == Qt::Key_Period) { + [self handleKeyEvent:nsevent eventType:int(QEvent::KeyPress)]; + return YES; + } + } + return [super performKeyEquivalent:nsevent]; +} + +- (void)flagsChanged:(NSEvent *)nsevent +{ + ulong timestamp = [nsevent timestamp] * 1000; + ulong modifiers = [nsevent modifierFlags]; + Qt::KeyboardModifiers qmodifiers = [QNSView convertKeyModifiers:modifiers]; + + // calculate the delta and remember the current modifiers for next time + static ulong m_lastKnownModifiers; + ulong lastKnownModifiers = m_lastKnownModifiers; + ulong delta = lastKnownModifiers ^ modifiers; + m_lastKnownModifiers = modifiers; + + struct qt_mac_enum_mapper + { + ulong mac_mask; + Qt::Key qt_code; + }; + static qt_mac_enum_mapper modifier_key_symbols[] = { + { NSShiftKeyMask, Qt::Key_Shift }, + { NSControlKeyMask, Qt::Key_Meta }, + { NSCommandKeyMask, Qt::Key_Control }, + { NSAlternateKeyMask, Qt::Key_Alt }, + { NSAlphaShiftKeyMask, Qt::Key_CapsLock }, + { 0ul, Qt::Key_unknown } }; + for (int i = 0; modifier_key_symbols[i].mac_mask != 0u; ++i) { + uint mac_mask = modifier_key_symbols[i].mac_mask; + if ((delta & mac_mask) == 0u) + continue; + + QWindowSystemInterface::handleKeyEvent(m_window, + timestamp, + (lastKnownModifiers & mac_mask) ? QEvent::KeyRelease : QEvent::KeyPress, + modifier_key_symbols[i].qt_code, + qmodifiers ^ [QNSView convertKeyModifiers:mac_mask]); + } +} + +- (void) doCommandBySelector:(SEL)aSelector +{ + [self tryToPerform:aSelector with:self]; +} + +- (void) insertText:(id)aString replacementRange:(NSRange)replacementRange +{ + Q_UNUSED(replacementRange) + + if (m_sendKeyEvent && m_composingText.isEmpty() && [aString isEqualToString:m_inputSource]) { + // don't send input method events for simple text input (let handleKeyEvent send key events instead) + return; + } + + QString commitString; + if ([aString length]) { + if ([aString isKindOfClass:[NSAttributedString class]]) { + commitString = QCFString::toQString(reinterpret_cast([aString string])); + } else { + commitString = QCFString::toQString(reinterpret_cast(aString)); + }; + } + QObject *fo = QGuiApplication::focusObject(); + if (fo) { + QInputMethodQueryEvent queryEvent(Qt::ImEnabled); + if (QCoreApplication::sendEvent(fo, &queryEvent)) { + if (queryEvent.value(Qt::ImEnabled).toBool()) { + QInputMethodEvent e; + e.setCommitString(commitString); + QCoreApplication::sendEvent(fo, &e); + // prevent handleKeyEvent from sending a key event + m_sendKeyEvent = false; + } + } + } + + m_composingText.clear(); +} + +- (void) setMarkedText:(id)aString selectedRange:(NSRange)selectedRange replacementRange:(NSRange)replacementRange +{ + Q_UNUSED(replacementRange) + QString preeditString; + + QList attrs; + attrs<([aString string])); + int composingLength = preeditString.length(); + int index = 0; + // Create attributes for individual sections of preedit text + while (index < composingLength) { + NSRange effectiveRange; + NSRange range = NSMakeRange(index, composingLength-index); + NSDictionary *attributes = [aString attributesAtIndex:index + longestEffectiveRange:&effectiveRange + inRange:range]; + NSNumber *underlineStyle = [attributes objectForKey:NSUnderlineStyleAttributeName]; + if (underlineStyle) { + QColor clr (Qt::black); + NSColor *color = [attributes objectForKey:NSUnderlineColorAttributeName]; + if (color) { + clr = qt_mac_toQColor(color); + } + QTextCharFormat format; + format.setFontUnderline(true); + format.setUnderlineColor(clr); + attrs<(aString)); + } + + if (attrs.isEmpty()) { + QTextCharFormat format; + format.setFontUnderline(true); + attrs<((CFStringRef)string); + return [[[NSAttributedString alloc] initWithString:const_cast(tmpString)] autorelease]; +} + +- (NSRange) markedRange +{ + NSRange range; + if (!m_composingText.isEmpty()) { + range.location = 0; + range.length = m_composingText.length(); + } else { + range.location = NSNotFound; + range.length = 0; + } + return range; +} + +- (NSRange) selectedRange +{ + NSRange selectedRange = {NSNotFound, 0}; + selectedRange.location = NSNotFound; + selectedRange.length = 0; + + QObject *fo = QGuiApplication::focusObject(); + if (!fo) + return selectedRange; + QInputMethodQueryEvent queryEvent(Qt::ImEnabled | Qt::ImCurrentSelection); + if (!QCoreApplication::sendEvent(fo, &queryEvent)) + return selectedRange; + if (!queryEvent.value(Qt::ImEnabled).toBool()) + return selectedRange; + + QString selectedText = queryEvent.value(Qt::ImCurrentSelection).toString(); + + if (!selectedText.isEmpty()) { + selectedRange.location = 0; + selectedRange.length = selectedText.length(); + } + return selectedRange; +} + +- (NSRect) firstRectForCharacterRange:(NSRange)aRange actualRange:(NSRangePointer)actualRange +{ + Q_UNUSED(aRange) + Q_UNUSED(actualRange) + QObject *fo = QGuiApplication::focusObject(); + if (!fo) + return NSZeroRect; + + QInputMethodQueryEvent queryEvent(Qt::ImEnabled); + if (!QCoreApplication::sendEvent(fo, &queryEvent)) + return NSZeroRect; + if (!queryEvent.value(Qt::ImEnabled).toBool()) + return NSZeroRect; + + if (!m_window) + return NSZeroRect; + + // The returned rect is always based on the internal cursor. + QRect mr = qApp->inputMethod()->cursorRectangle().toRect(); + QPoint mp = m_window->mapToGlobal(mr.bottomLeft()); + + NSRect rect; + rect.origin.x = mp.x(); + rect.origin.y = qt_mac_flipYCoordinate(mp.y()); + rect.size.width = mr.width(); + rect.size.height = mr.height(); + return rect; +} + +- (NSUInteger)characterIndexForPoint:(NSPoint)aPoint +{ + // We don't support cursor movements using mouse while composing. + Q_UNUSED(aPoint); + return NSNotFound; +} + +- (NSArray*) validAttributesForMarkedText +{ + if (m_window != QGuiApplication::focusWindow()) + return nil; + + QObject *fo = QGuiApplication::focusObject(); + if (!fo) + return nil; + + QInputMethodQueryEvent queryEvent(Qt::ImEnabled); + if (!QCoreApplication::sendEvent(fo, &queryEvent)) + return nil; + if (!queryEvent.value(Qt::ImEnabled).toBool()) + return nil; + + // Support only underline color/style. + return [NSArray arrayWithObjects:NSUnderlineColorAttributeName, + NSUnderlineStyleAttributeName, nil]; +} + +-(void)registerDragTypes +{ + QCocoaAutoReleasePool pool; + QStringList customTypes = qt_mac_enabledDraggedTypes(); + if (currentCustomDragTypes == 0 || *currentCustomDragTypes != customTypes) { + if (currentCustomDragTypes == 0) + currentCustomDragTypes = new QStringList(); + *currentCustomDragTypes = customTypes; + const NSString* mimeTypeGeneric = @"com.trolltech.qt.MimeTypeName"; + NSMutableArray *supportedTypes = [NSMutableArray arrayWithObjects:NSColorPboardType, + NSFilenamesPboardType, NSStringPboardType, + NSFilenamesPboardType, NSPostScriptPboardType, NSTIFFPboardType, + NSRTFPboardType, NSTabularTextPboardType, NSFontPboardType, + NSRulerPboardType, NSFileContentsPboardType, NSColorPboardType, + NSRTFDPboardType, NSHTMLPboardType, + NSURLPboardType, NSPDFPboardType, NSVCardPboardType, + NSFilesPromisePboardType, NSInkTextPboardType, + NSMultipleTextSelectionPboardType, mimeTypeGeneric, nil]; + // Add custom types supported by the application. + for (int i = 0; i < customTypes.size(); i++) { + [supportedTypes addObject:QCFString::toNSString(customTypes[i])]; + } + [self registerForDraggedTypes:supportedTypes]; + } +} + +static QWindow *findEventTargetWindow(QWindow *candidate) +{ + while (candidate) { + if (!(candidate->flags() & Qt::WindowTransparentForInput)) + return candidate; + candidate = candidate->parent(); + } + return candidate; +} + +static QPoint mapWindowCoordinates(QWindow *source, QWindow *target, QPoint point) +{ + return target->mapFromGlobal(source->mapToGlobal(point)); +} + +- (NSDragOperation) draggingSourceOperationMaskForLocal:(BOOL)isLocal +{ + Q_UNUSED(isLocal); + QCocoaDrag* nativeDrag = QCocoaIntegration::instance()->drag(); + return qt_mac_mapDropActions(nativeDrag->currentDrag()->supportedActions()); +} + +- (BOOL) ignoreModifierKeysWhileDragging +{ + return NO; +} + +- (NSDragOperation)draggingEntered:(id )sender +{ + return [self handleDrag : sender]; +} + +- (NSDragOperation)draggingUpdated:(id )sender +{ + return [self handleDrag : sender]; +} + +// Sends drag update to Qt, return the action +- (NSDragOperation)handleDrag:(id )sender +{ + NSPoint windowPoint = [self convertPoint: [sender draggingLocation] fromView: nil]; + QPoint qt_windowPoint(windowPoint.x, windowPoint.y); + Qt::DropActions qtAllowed = qt_mac_mapNSDragOperations([sender draggingSourceOperationMask]); + + QWindow *target = findEventTargetWindow(m_window); + + // update these so selecting move/copy/link works + QGuiApplicationPrivate::modifier_buttons = [QNSView convertKeyModifiers: [[NSApp currentEvent] modifierFlags]]; + + QPlatformDragQtResponse response(false, Qt::IgnoreAction, QRect()); + if ([sender draggingSource] != nil) { + QCocoaDrag* nativeDrag = QCocoaIntegration::instance()->drag(); + response = QWindowSystemInterface::handleDrag(target, nativeDrag->platformDropData(), mapWindowCoordinates(m_window, target, qt_windowPoint), qtAllowed); + } else { + QCocoaDropData mimeData([sender draggingPasteboard]); + response = QWindowSystemInterface::handleDrag(target, &mimeData, mapWindowCoordinates(m_window, target, qt_windowPoint), qtAllowed); + } + + return qt_mac_mapDropAction(response.acceptedAction()); +} + +- (void)draggingExited:(id )sender +{ + QWindow *target = findEventTargetWindow(m_window); + + NSPoint windowPoint = [self convertPoint: [sender draggingLocation] fromView: nil]; + QPoint qt_windowPoint(windowPoint.x, windowPoint.y); + + // Send 0 mime data to indicate drag exit + QWindowSystemInterface::handleDrag(target, 0, mapWindowCoordinates(m_window, target, qt_windowPoint), Qt::IgnoreAction); +} + +// called on drop, send the drop to Qt and return if it was accepted. +- (BOOL)performDragOperation:(id )sender +{ + QWindow *target = findEventTargetWindow(m_window); + + NSPoint windowPoint = [self convertPoint: [sender draggingLocation] fromView: nil]; + QPoint qt_windowPoint(windowPoint.x, windowPoint.y); + Qt::DropActions qtAllowed = qt_mac_mapNSDragOperations([sender draggingSourceOperationMask]); + + QPlatformDropQtResponse response(false, Qt::IgnoreAction); + if ([sender draggingSource] != nil) { + QCocoaDrag* nativeDrag = QCocoaIntegration::instance()->drag(); + response = QWindowSystemInterface::handleDrop(target, nativeDrag->platformDropData(), mapWindowCoordinates(m_window, target, qt_windowPoint), qtAllowed); + } else { + QCocoaDropData mimeData([sender draggingPasteboard]); + response = QWindowSystemInterface::handleDrop(target, &mimeData, mapWindowCoordinates(m_window, target, qt_windowPoint), qtAllowed); + } + if (response.isAccepted()) { + QCocoaDrag* nativeDrag = QCocoaIntegration::instance()->drag(); + nativeDrag->setAcceptedAction(response.acceptedAction()); + } + return response.isAccepted(); +} + +- (void)draggedImage:(NSImage*) img endedAt:(NSPoint) point operation:(NSDragOperation) operation +{ + Q_UNUSED(img); + Q_UNUSED(operation); + QWindow *target = findEventTargetWindow(m_window); + +// keep our state, and QGuiApplication state (buttons member) in-sync, +// or future mouse events will be processed incorrectly + m_buttons &= ~(m_sendUpAsRightButton ? Qt::RightButton : Qt::LeftButton); + + NSPoint windowPoint = [self convertPoint: point fromView: nil]; + QPoint qtWindowPoint(windowPoint.x, windowPoint.y); + + NSWindow *window = [self window]; + NSPoint screenPoint = [window convertBaseToScreen :point]; + QPoint qtScreenPoint = QPoint(screenPoint.x, qt_mac_flipYCoordinate(screenPoint.y)); + + QWindowSystemInterface::handleMouseEvent(target, mapWindowCoordinates(m_window, target, qtWindowPoint), qtScreenPoint, m_buttons); +} + +@end diff --git a/Telegram/icon_128x128@2x.png b/Telegram/icon_128x128@2x.png new file mode 100644 index 000000000..92566ae16 Binary files /dev/null and b/Telegram/icon_128x128@2x.png differ diff --git a/Telegram/icon_256x256.png b/Telegram/icon_256x256.png new file mode 100644 index 000000000..92566ae16 Binary files /dev/null and b/Telegram/icon_256x256.png differ diff --git a/Telegram/iconround256.ico b/Telegram/iconround256.ico new file mode 100644 index 000000000..718f5a706 Binary files /dev/null and b/Telegram/iconround256.ico differ diff --git a/Telegram/iconround256.png b/Telegram/iconround256.png new file mode 100644 index 000000000..92566ae16 Binary files /dev/null and b/Telegram/iconround256.png differ diff --git a/Telegram/metalang_plugin_import.cpp b/Telegram/metalang_plugin_import.cpp new file mode 100644 index 000000000..7c0d09542 --- /dev/null +++ b/Telegram/metalang_plugin_import.cpp @@ -0,0 +1,13 @@ +// This file is autogenerated by qmake. It imports static plugin classes for +// static plugins specified using QTPLUGIN and QT_PLUGIN_CLASS. variables. +#include +Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin) +Q_IMPORT_PLUGIN(QDDSPlugin) +Q_IMPORT_PLUGIN(QICNSPlugin) +Q_IMPORT_PLUGIN(QICOPlugin) +Q_IMPORT_PLUGIN(QJp2Plugin) +Q_IMPORT_PLUGIN(QMngPlugin) +Q_IMPORT_PLUGIN(QTgaPlugin) +Q_IMPORT_PLUGIN(QTiffPlugin) +Q_IMPORT_PLUGIN(QWbmpPlugin) +Q_IMPORT_PLUGIN(QWebpPlugin) diff --git a/Telegram/metastyle_plugin_import.cpp b/Telegram/metastyle_plugin_import.cpp new file mode 100644 index 000000000..7c0d09542 --- /dev/null +++ b/Telegram/metastyle_plugin_import.cpp @@ -0,0 +1,13 @@ +// This file is autogenerated by qmake. It imports static plugin classes for +// static plugins specified using QTPLUGIN and QT_PLUGIN_CLASS. variables. +#include +Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin) +Q_IMPORT_PLUGIN(QDDSPlugin) +Q_IMPORT_PLUGIN(QICNSPlugin) +Q_IMPORT_PLUGIN(QICOPlugin) +Q_IMPORT_PLUGIN(QJp2Plugin) +Q_IMPORT_PLUGIN(QMngPlugin) +Q_IMPORT_PLUGIN(QTgaPlugin) +Q_IMPORT_PLUGIN(QTiffPlugin) +Q_IMPORT_PLUGIN(QWbmpPlugin) +Q_IMPORT_PLUGIN(QWebpPlugin) diff --git a/Telegram/telegram_plugin_import.cpp b/Telegram/telegram_plugin_import.cpp new file mode 100644 index 000000000..33b4b9aa5 --- /dev/null +++ b/Telegram/telegram_plugin_import.cpp @@ -0,0 +1,22 @@ +// This file is autogenerated by qmake. It imports static plugin classes for +// static plugins specified using QTPLUGIN and QT_PLUGIN_CLASS. variables. +#include +//Q_IMPORT_PLUGIN(AVFServicePlugin) +Q_IMPORT_PLUGIN(AVFMediaPlayerServicePlugin) +Q_IMPORT_PLUGIN(QT7ServicePlugin) +Q_IMPORT_PLUGIN(AudioCaptureServicePlugin) +Q_IMPORT_PLUGIN(CoreAudioPlugin) +Q_IMPORT_PLUGIN(QM3uPlaylistPlugin) +Q_IMPORT_PLUGIN(AccessibleFactory) +Q_IMPORT_PLUGIN(QCoreWlanEnginePlugin) +Q_IMPORT_PLUGIN(QGenericEnginePlugin) +Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin) +Q_IMPORT_PLUGIN(QDDSPlugin) +Q_IMPORT_PLUGIN(QICNSPlugin) +Q_IMPORT_PLUGIN(QICOPlugin) +Q_IMPORT_PLUGIN(QJp2Plugin) +Q_IMPORT_PLUGIN(QMngPlugin) +Q_IMPORT_PLUGIN(QTgaPlugin) +Q_IMPORT_PLUGIN(QTiffPlugin) +Q_IMPORT_PLUGIN(QWbmpPlugin) +Q_IMPORT_PLUGIN(QWebpPlugin)