diff --git a/Telegram/PrepareWin.bat b/Telegram/PrepareWin.bat index a3f507e61..ab6ff8d5e 100644 --- a/Telegram/PrepareWin.bat +++ b/Telegram/PrepareWin.bat @@ -1,8 +1,8 @@ @echo OFF -set "AppVersionStrSmall=0.7.3" -set "AppVersionStr=0.7.3" -set "AppVersionStrFull=0.7.3.0" +set "AppVersionStrSmall=0.7.4" +set "AppVersionStr=0.7.4" +set "AppVersionStrFull=0.7.4.0" echo. echo Preparing version %AppVersionStr%.. diff --git a/Telegram/Resources/lang.strings b/Telegram/Resources/lang.strings index 0052f03fc..d58e459a4 100644 --- a/Telegram/Resources/lang.strings +++ b/Telegram/Resources/lang.strings @@ -119,7 +119,6 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_bad_phone_noreg" = "Phone number not registered."; "lng_bad_code" = "You have entered an invalid code. Please try again."; "lng_bad_name" = "Please enter your first and last name."; -"lng_bad_chat_title" = "Please enter new chat title."; "lng_bad_photo" = "Bad image selected."; "lng_signup_title" = "Information and photo"; @@ -129,20 +128,14 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_signup_lastname" = "Last Name"; "lng_dlg_filter" = "Search"; -"lng_dlg_conversations" = "Conversations"; -"lng_dlg_messages" = "Messages"; "lng_dlg_new_group_name" = "Group name"; "lng_dlg_create_group" = "Create"; "lng_no_contacts" = "You have no contacts"; "lng_contacts_loading" = "Loading.."; "lng_contacts_not_found" = "No contacts found"; -"lng_settings_profile" = "Profile"; -"lng_settings_edit" = "Edit"; "lng_settings_save" = "Save"; -"lng_settings_cancel" = "Cancel"; "lng_settings_upload" = "Set Profile Photo"; -"lng_settings_badsize" = "This image has bad size, please try other."; "lng_settings_crop_profile" = "Select square area for your profile photo"; "lng_settings_uploading_photo" = "Uploading photo.."; @@ -259,7 +252,6 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_profile_group_info" = "Group info"; "lng_profile_add_contact" = "Add Contact"; "lng_profile_edit_contact" = "Edit"; -"lng_profile_edit_group" = "Edit"; "lng_profile_enable_notifications" = "Notifications"; "lng_profile_clear_history" = "Clear history"; "lng_profile_send_message" = "Send Message"; @@ -303,14 +295,13 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_action_kick_user" = "{from} kicked {user}"; "lng_action_user_left" = "{from} left the group"; "lng_action_user_joined" = "{from} joined the group"; -"lng_action_user_photo" = "{from} added a new profile photo"; "lng_action_user_registered" = "{from} just joined Telegram"; "lng_action_removed_photo" = "{from} removed group photo"; "lng_action_changed_photo" = "{from} changed group photo"; "lng_action_changed_title" = "{from} changed group name to «{title}»"; "lng_action_created_chat" = "{from} created group «{title}»"; -"lng_forwarded_from" = "Forwarded from "; +"lng_forwarded_from" = "Forwarded from"; "lng_attach_failed" = "Failed"; "lng_attach_file" = "Document"; @@ -330,10 +321,10 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_in_dlg_photo" = "Photo"; "lng_in_dlg_video" = "Video"; -"lng_in_dlg_geo" = "Map"; "lng_in_dlg_contact" = "Contact"; "lng_in_dlg_audio" = "Audio"; "lng_in_dlg_document" = "Document"; +"lng_in_dlg_sticker" = "Sticker"; "lng_send_button" = "Send"; "lng_message_ph" = "Write a message.."; @@ -434,8 +425,6 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_selected_delete_sure" = "Do you want to delete {count:_not_used_|# message|# messages}?"; "lng_selected_delete_confirm" = "Delete"; -"lng_emoji_no_recent" = "Recent emojis will be here"; - "lng_about_version" = "Version {version}"; "lng_about_text" = "Official free messaging app based on [a href=\"https://core.telegram.org/mtproto\"]MTProto[/a] and\n[a href=\"https://core.telegram.org/api\"]Telegram API[/a] for speed and security\n\nThis software is licensed under [a href=\"https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE\"]GNU GPL[/a] version 3,\nsource code is available on [a href=\"https://github.com/telegramdesktop/tdesktop\"]GitHub[/a]."; "lng_about_done" = "Done"; @@ -451,12 +440,15 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_mediaview_profile_photo" = "Profile Photo"; "lng_mediaview_n_of_count" = "Photo {n} of {count}"; "lng_mediaview_doc_image" = "Document"; +"lng_mediaview_today" = "today at {time}"; +"lng_mediaview_yesterday" = "yesterday at {time}"; +"lng_mediaview_date_time" = "{date} at {time}"; "lng_mediaview_saved" = "Image was saved to your [c]Downloads[/c] folder"; "lng_new_authorization" = "{name},\nWe detected a login into your account from a new device on {day}, {date} at {time}\n\nDevice: {device}\nLocation: {location}\n\nIf this wasn't you, you can go to Settings — Terminate other sessions.\n\nThanks,\nThe Telegram Team"; -"lng_new_version7003" = "Telegram Desktop was updated to version {version}\n\n — Italian and Spanish languages added.\n\nFull version history is available here:\n{link}"; +"lng_new_version7004" = "Telegram Desktop was updated to version {version}\n\n — German and Dutch languages added.\n\nFull version history is available here:\n{link}"; // Mac specific diff --git a/Telegram/Resources/style.txt b/Telegram/Resources/style.txt index e44f58f02..f3668162d 100644 --- a/Telegram/Resources/style.txt +++ b/Telegram/Resources/style.txt @@ -634,7 +634,7 @@ dlgFilter: flatInput(inpDefGray) { bgColor: #f2f2f2; phColor: #949494; phFocusColor: #a4a4a4; - textMrg: margins(34px, 2px, 5px, 4px); + textMrg: margins(34px, 2px, 34px, 4px); imgRect: sprite(208px, 28px, 24px, 24px); imgPos: point(6px, 5px); width: 240px; @@ -704,6 +704,7 @@ topBarBackAlpha: 0.8; topBarBackImg: sprite(65px, 112px, 9px, 16px); topBarBackColor: #005faf; topBarBackFont: font(16px); +topBarMinPadding: 5px; topBarButton: flatButton(btnDefFlat) { color: btnYesColor; overColor: btnYesHover; @@ -734,7 +735,6 @@ topBarActionButton: flatButton(btnDefNext, btnDefBig) { height: 34px; } topBarActionSkip: 13px; -topBarSelectedPos: point(18px, 18px); historyBG: #dfe4e8; diff --git a/Telegram/SourceFiles/_other/genemoji.cpp b/Telegram/SourceFiles/_other/genemoji.cpp index bab4c13e8..91c0b6d03 100644 --- a/Telegram/SourceFiles/_other/genemoji.cpp +++ b/Telegram/SourceFiles/_other/genemoji.cpp @@ -1171,7 +1171,7 @@ bool genEmoji(QString emoji_in, const QString &emoji_out, const QString &emoji_p p.fillRect(0, 0, emojisImg.width(), emojisImg.height(), Qt::transparent); for (EmojisData::const_iterator i = emojisData.cbegin(), e = emojisData.cend(); i != e; ++i) { int ind = i->index, row = ind / emojisInRow[i->category], col = ind % emojisInRow[i->category], size = sizes[i->category]; - QPixmap emoji = QPixmap::fromImage(sprites[i->category].copy(col * size, row * size, size, size).scaled(imSize, imSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + QPixmap emoji = QPixmap::fromImage(sprites[i->category].copy(col * size, row * size, size, size).scaled(imSize, imSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly); p.drawPixmap(i->x * imSize, i->y * imSize, emoji); } QString postfix = variantPostfix[variantIndex], emojif = emoji_png + postfix + ".png"; diff --git a/Telegram/SourceFiles/_other/genstyles.cpp b/Telegram/SourceFiles/_other/genstyles.cpp index 867536ffe..cf55a894f 100644 --- a/Telegram/SourceFiles/_other/genstyles.cpp +++ b/Telegram/SourceFiles/_other/genstyles.cpp @@ -845,7 +845,7 @@ ScalarValue prepareSprite(int variant, const char *&text, const char *end) { QImage lastCopy = variantSprites[variantsCount - 1].copy(adjustPx(varLast, sprite.x(), true), adjustPx(varLast, sprite.y(), true), adjustPx(varLast, sprite.width(), true), adjustPx(varLast, sprite.height(), true)); for (int i = 1; i < variantsCount - 1; ++i) { QPainter p(&variantSprites[i]); - QPixmap copy = QPixmap::fromImage(lastCopy.scaled(adjustPx(variants[i], sprite.width(), true), adjustPx(variants[i], sprite.height(), true), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + QPixmap copy = QPixmap::fromImage(lastCopy.scaled(adjustPx(variants[i], sprite.width(), true), adjustPx(variants[i], sprite.height(), true), Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly); p.drawPixmap(QPoint(adjustPx(variants[i], sprite.x(), true), adjustPx(variants[i], sprite.y(), true)), copy); } @@ -1365,7 +1365,7 @@ bool genStyles(const QString &classes_in, const QString &classes_out, const QStr } variantSprites[variantsCount - 1] = QImage(spriteLast); - QPixmap spriteMaxPix = QPixmap::fromImage(variantSprites[variantsCount - 1]); + QPixmap spriteMaxPix = QPixmap::fromImage(variantSprites[variantsCount - 1], Qt::ColorOnly); spriteMax = &spriteMaxPix; if (!variantSprites[0].width() || !variantSprites[0].height()) { diff --git a/Telegram/SourceFiles/app.cpp b/Telegram/SourceFiles/app.cpp index 95713e8d6..5cdb26ce5 100644 --- a/Telegram/SourceFiles/app.cpp +++ b/Telegram/SourceFiles/app.cpp @@ -819,21 +819,21 @@ namespace App { return App::audio(audio.vid.v, convert, audio.vaccess_hash.v, audio.vuser_id.v, audio.vdate.v, audio.vduration.v, audio.vdc_id.v, audio.vsize.v); } - DocumentData *feedDocument(const MTPdocument &document, const QPixmap &thumb) { + DocumentData *feedDocument(int32 user, const MTPdocument &document, const QPixmap &thumb) { switch (document.type()) { case mtpc_document: { const MTPDdocument &d(document.c_document()); - return App::document(d.vid.v, 0, d.vaccess_hash.v, d.vuser_id.v, d.vdate.v, qs(d.vfile_name), qs(d.vmime_type), ImagePtr(thumb, "JPG"), d.vdc_id.v, d.vsize.v); + return App::document(d.vid.v, 0, user, d.vaccess_hash.v, d.vdate.v, d.vattributes.c_vector().v, qs(d.vmime_type), ImagePtr(thumb, "JPG"), d.vdc_id.v, d.vsize.v); } break; case mtpc_documentEmpty: return App::document(document.c_documentEmpty().vid.v); } return App::document(0); } - DocumentData *feedDocument(const MTPdocument &document, DocumentData *convert) { + DocumentData *feedDocument(int32 user, const MTPdocument &document, DocumentData *convert) { switch (document.type()) { case mtpc_document: { - return feedDocument(document.c_document(), convert); + return feedDocument(user, document.c_document(), convert); } break; case mtpc_documentEmpty: { return App::document(document.c_documentEmpty().vid.v, convert); @@ -842,8 +842,8 @@ namespace App { return App::document(0); } - DocumentData *feedDocument(const MTPDdocument &document, DocumentData *convert) { - return App::document(document.vid.v, convert, document.vaccess_hash.v, document.vuser_id.v, document.vdate.v, qs(document.vfile_name), qs(document.vmime_type), App::image(document.vthumb), document.vdc_id.v, document.vsize.v); + DocumentData *feedDocument(int32 user, const MTPDdocument &document, DocumentData *convert) { + return App::document(document.vid.v, convert, user, document.vaccess_hash.v, document.vdate.v, document.vattributes.c_vector().v, qs(document.vmime_type), App::image(document.vthumb), document.vdc_id.v, document.vsize.v); } UserData *userLoaded(const PeerId &user) { @@ -1058,7 +1058,7 @@ namespace App { return result; } - DocumentData *document(const DocumentId &document, DocumentData *convert, const uint64 &access, int32 user, int32 date, const QString &name, const QString &mime, const ImagePtr &thumb, int32 dc, int32 size) { + DocumentData *document(const DocumentId &document, DocumentData *convert, int32 user, const uint64 &access, int32 date, const QVector &attributes, const QString &mime, const ImagePtr &thumb, int32 dc, int32 size) { if (convert) { if (convert->id != document) { DocumentsData::iterator i = documentsData.find(convert->id); @@ -1069,10 +1069,10 @@ namespace App { convert->status = FileReady; } convert->access = access; - if (!convert->user && !convert->date && (user || date)) { + if (!convert->date && date) { convert->user = user; convert->date = date; - convert->name = name; + convert->setattributes(attributes); convert->mime = mime; convert->thumb = thumb; convert->dc = dc; @@ -1089,16 +1089,16 @@ namespace App { if (convert) { result = convert; } else { - result = new DocumentData(document, access, user, date, name, mime, thumb, dc, size); + result = new DocumentData(user, document, access, date, attributes, mime, thumb, dc, size); } documentsData.insert(document, result); } else { result = i.value(); - if (result != convert && !result->user && !result->date && (user || date)) { - result->access = access; + if (result != convert && !result->date && date) { result->user = user; + result->access = access; result->date = date; - result->name = name; + result->setattributes(attributes); result->mime = mime; result->thumb = thumb; result->dc = dc; @@ -1426,7 +1426,7 @@ namespace App { p.fillRect(0, 0, img.width(), img.height(), Qt::transparent); p.drawPixmap(QPoint(st::emojiPadding * cIntRetinaFactor(), (fontHeight * cIntRetinaFactor() - st::emojiImgSize) / 2), App::emojis(), QRect(emoji->x, emoji->y, st::emojiImgSize, st::emojiImgSize)); } - i = map->insert(emoji->code, QPixmap::fromImage(img)); + i = map->insert(emoji->code, QPixmap::fromImage(img, Qt::ColorOnly)); } return i.value(); } @@ -1969,7 +1969,7 @@ namespace App { ::quiting = true; } - QImage readImage(QByteArray data, QByteArray *format, bool opaque) { + QImage readImage(QByteArray data, QByteArray *format, bool opaque, bool *animated) { QByteArray tmpFormat; QImage result; QBuffer buffer(&data); @@ -1977,6 +1977,7 @@ namespace App { format = &tmpFormat; } QImageReader reader(&buffer, *format); + if (animated) *animated = reader.supportsAnimation() && reader.imageCount() > 1; if (!reader.read(&result)) { return QImage(); } @@ -2016,12 +2017,13 @@ namespace App { return result; } - QImage readImage(const QString &file, QByteArray *format, bool opaque) { + QImage readImage(const QString &file, QByteArray *format, bool opaque, bool *animated) { QFile f(file); if (!f.open(QIODevice::ReadOnly)) { + if (animated) *animated = false; return QImage(); } - return readImage(f.readAll(), format, opaque); + return readImage(f.readAll(), format, opaque, animated); } void regVideoItem(VideoData *data, HistoryItem *item) { diff --git a/Telegram/SourceFiles/app.h b/Telegram/SourceFiles/app.h index b509343c8..8086a00a0 100644 --- a/Telegram/SourceFiles/app.h +++ b/Telegram/SourceFiles/app.h @@ -85,9 +85,9 @@ namespace App { PhotoData *feedPhoto(const MTPDphoto &photo, PhotoData *convert = 0); VideoData *feedVideo(const MTPDvideo &video, VideoData *convert = 0); AudioData *feedAudio(const MTPDaudio &audio, AudioData *convert = 0); - DocumentData *feedDocument(const MTPdocument &document, const QPixmap &thumb); - DocumentData *feedDocument(const MTPdocument &document, DocumentData *convert = 0); - DocumentData *feedDocument(const MTPDdocument &document, DocumentData *convert = 0); + DocumentData *feedDocument(int32 user, const MTPdocument &document, const QPixmap &thumb); + DocumentData *feedDocument(int32 user, const MTPdocument &document, DocumentData *convert = 0); + DocumentData *feedDocument(int32 user, const MTPDdocument &document, DocumentData *convert = 0); UserData *userLoaded(const PeerId &user); ChatData *chatLoaded(const PeerId &chat); @@ -106,7 +106,7 @@ namespace App { PhotoData *photo(const PhotoId &photo, PhotoData *convert = 0, const uint64 &access = 0, int32 user = 0, int32 date = 0, const ImagePtr &thumb = ImagePtr(), const ImagePtr &medium = ImagePtr(), const ImagePtr &full = ImagePtr()); VideoData *video(const VideoId &video, VideoData *convert = 0, const uint64 &access = 0, int32 user = 0, int32 date = 0, int32 duration = 0, int32 w = 0, int32 h = 0, const ImagePtr &thumb = ImagePtr(), int32 dc = 0, int32 size = 0); AudioData *audio(const AudioId &audio, AudioData *convert = 0, const uint64 &access = 0, int32 user = 0, int32 date = 0, int32 duration = 0, int32 dc = 0, int32 size = 0); - DocumentData *document(const DocumentId &document, DocumentData *convert = 0, const uint64 &access = 0, int32 user = 0, int32 date = 0, const QString &name = QString(), const QString &mime = QString(), const ImagePtr &thumb = ImagePtr(), int32 dc = 0, int32 size = 0); + DocumentData *document(const DocumentId &document, DocumentData *convert = 0, int32 user = 0, const uint64 &access = 0, int32 date = 0, const QVector &attributes = QVector(), const QString &mime = QString(), const ImagePtr &thumb = ImagePtr(), int32 dc = 0, int32 size = 0); ImageLinkData *imageLink(const QString &imageLink, ImageLinkType type = InvalidImageLink, const QString &url = QString()); void forgetMedia(); @@ -168,8 +168,8 @@ namespace App { bool quiting(); void setQuiting(); - QImage readImage(QByteArray data, QByteArray *format = 0, bool opaque = true); - QImage readImage(const QString &file, QByteArray *format = 0, bool opaque = true); + QImage readImage(QByteArray data, QByteArray *format = 0, bool opaque = true, bool *animated = 0); + QImage readImage(const QString &file, QByteArray *format = 0, bool opaque = true, bool *animated = 0); void regVideoItem(VideoData *data, HistoryItem *item); void unregVideoItem(VideoData *data, HistoryItem *item); diff --git a/Telegram/SourceFiles/application.cpp b/Telegram/SourceFiles/application.cpp index 1dd546641..1307463b4 100644 --- a/Telegram/SourceFiles/application.cpp +++ b/Telegram/SourceFiles/application.cpp @@ -455,15 +455,15 @@ void Application::uploadProfilePhoto(const QImage &tosend, const PeerId &peerId) PreparedPhotoThumbs photoThumbs; QVector photoSizes; - QPixmap thumb = QPixmap::fromImage(tosend.scaled(160, 160, Qt::KeepAspectRatio, Qt::SmoothTransformation)); + QPixmap thumb = QPixmap::fromImage(tosend.scaled(160, 160, Qt::KeepAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly); photoThumbs.insert('a', thumb); photoSizes.push_back(MTP_photoSize(MTP_string("a"), MTP_fileLocationUnavailable(MTP_long(0), MTP_int(0), MTP_long(0)), MTP_int(thumb.width()), MTP_int(thumb.height()), MTP_int(0))); - QPixmap medium = QPixmap::fromImage(tosend.scaled(320, 320, Qt::KeepAspectRatio, Qt::SmoothTransformation)); + QPixmap medium = QPixmap::fromImage(tosend.scaled(320, 320, Qt::KeepAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly); photoThumbs.insert('b', medium); photoSizes.push_back(MTP_photoSize(MTP_string("b"), MTP_fileLocationUnavailable(MTP_long(0), MTP_int(0), MTP_long(0)), MTP_int(medium.width()), MTP_int(medium.height()), MTP_int(0))); - QPixmap full = QPixmap::fromImage(tosend); + QPixmap full = QPixmap::fromImage(tosend, Qt::ColorOnly); photoThumbs.insert('c', full); photoSizes.push_back(MTP_photoSize(MTP_string("c"), MTP_fileLocationUnavailable(MTP_long(0), MTP_int(0), MTP_long(0)), MTP_int(full.width()), MTP_int(full.height()), MTP_int(0))); @@ -697,8 +697,8 @@ void Application::startApp() { QNetworkProxyFactory::setUseSystemConfiguration(true); if (Local::oldMapVersion() < AppVersion) { psRegisterCustomScheme(); - if (Local::oldMapVersion() && Local::oldMapVersion() < 7003) { - QString versionFeatures(lng_new_version7003(lt_version, QString::fromStdWString(AppVersionStr), lt_link, qsl("https://desktop.telegram.org/#changelog"))); + if (Local::oldMapVersion() && Local::oldMapVersion() < 7004) { + QString versionFeatures(lng_new_version7004(lt_version, QString::fromStdWString(AppVersionStr), lt_link, qsl("https://desktop.telegram.org/#changelog"))); if (!versionFeatures.isEmpty()) { window->serviceNotification(versionFeatures); } diff --git a/Telegram/SourceFiles/boxes/photocropbox.cpp b/Telegram/SourceFiles/boxes/photocropbox.cpp index d65f264ea..15f49a341 100644 --- a/Telegram/SourceFiles/boxes/photocropbox.cpp +++ b/Telegram/SourceFiles/boxes/photocropbox.cpp @@ -37,7 +37,7 @@ PhotoCropBox::PhotoCropBox(const QImage &img, const PeerId &peer) : _downState(0 } int32 s = st::cropBoxWidth - st::boxPadding.left() - st::boxPadding.right(); - _thumb = QPixmap::fromImage(img.scaled(s, s, Qt::KeepAspectRatio, Qt::SmoothTransformation)); + _thumb = QPixmap::fromImage(img.scaled(s, s, Qt::KeepAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly); _thumbw = _thumb.width(); _thumbh = _thumb.height(); if (_thumbw > _thumbh) { diff --git a/Telegram/SourceFiles/boxes/photosendbox.cpp b/Telegram/SourceFiles/boxes/photosendbox.cpp index 8960b667e..92443cf62 100644 --- a/Telegram/SourceFiles/boxes/photosendbox.cpp +++ b/Telegram/SourceFiles/boxes/photosendbox.cpp @@ -61,7 +61,7 @@ PhotoSendBox::PhotoSendBox(const ReadyLocalMedia &img) : _img(new ReadyLocalMedi } _height = _thumbh + st::boxPadding.top() + st::boxFont->height + st::boxPadding.bottom() + st::boxPadding.bottom() + _compressed.height() + _sendButton.height(); - _thumb = QPixmap::fromImage(_thumb.toImage().scaled(_thumbw, _thumbh, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + _thumb = QPixmap::fromImage(_thumb.toImage().scaled(_thumbw, _thumbh, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly); } else { _compressed.hide(); if (!_img->photoThumbs.isEmpty()) { @@ -80,7 +80,7 @@ PhotoSendBox::PhotoSendBox(const ReadyLocalMedia &img) : _img(new ReadyLocalMedi } } if (_thumbw) { - _thumb = QPixmap::fromImage(_thumb.toImage().scaledToWidth(_thumbw * cIntRetinaFactor(), Qt::SmoothTransformation)); + _thumb = QPixmap::fromImage(_thumb.toImage().scaledToWidth(_thumbw * cIntRetinaFactor(), Qt::SmoothTransformation), Qt::ColorOnly); _thumb.setDevicePixelRatio(cRetinaFactor()); } _height = st::boxPadding.top() + st::boxFont->height + st::boxPadding.bottom() + st::mediaPadding.top() + st::mediaThumbSize + st::mediaPadding.bottom() + st::boxPadding.bottom() + _sendButton.height(); diff --git a/Telegram/SourceFiles/config.h b/Telegram/SourceFiles/config.h index 286930c21..5fb7537d3 100644 --- a/Telegram/SourceFiles/config.h +++ b/Telegram/SourceFiles/config.h @@ -17,8 +17,8 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org */ #pragma once -static const int32 AppVersion = 7003; -static const wchar_t *AppVersionStr = L"0.7.3"; +static const int32 AppVersion = 7004; +static const wchar_t *AppVersionStr = L"0.7.4"; static const wchar_t *AppNameOld = L"Telegram Win (Unofficial)"; static const wchar_t *AppName = L"Telegram Desktop"; @@ -86,6 +86,7 @@ enum { AudioVoiceMsgChannels = 2, // stereo AudioVoiceMsgBufferSize = 1024 * 1024, // 1 Mb buffers AudioVoiceMsgInMemory = 1024 * 1024, // 1 Mb audio is hold in memory and auto loaded + StickerInMemory = 128 * 1024, // 128 Kb stickers hold in memory, auto loaded and displayed inline MediaViewImageSizeLimit = 100 * 1024 * 1024, // show up to 100mb jpg/png/gif docs in app MaxZoomLevel = 7, // x8 @@ -230,7 +231,7 @@ enum { DownloadPartSize = 64 * 1024, // 64kb for photo DocumentDownloadPartSize = 128 * 1024, // 128kb for document - MaxUploadPhotoSize = 10 * 1024 * 1024, // 10mb photos max + MaxUploadPhotoSize = 32 * 1024 * 1024, // 32mb photos max MaxUploadDocumentSize = 1500 * 1024 * 1024, // 1500mb documents max UseBigFilesFrom = 10 * 1024 * 1024, // mtp big files methods used for files greater than 10mb MaxFileQueries = 16, // max 16 file parts downloaded at the same time diff --git a/Telegram/SourceFiles/dropdown.cpp b/Telegram/SourceFiles/dropdown.cpp index 9ac0dbd36..8f378e286 100644 --- a/Telegram/SourceFiles/dropdown.cpp +++ b/Telegram/SourceFiles/dropdown.cpp @@ -326,12 +326,6 @@ EmojiPanInner::EmojiPanInner(QWidget *parent) : QWidget(parent), _tab(cEmojiTab( void EmojiPanInner::paintEvent(QPaintEvent *e) { QPainter p(this); int32 size = _emojis.size(); - if (!size) { - p.setFont(st::emojiPanFont->f); - p.setPen(st::emojiPanText->p); - p.drawText(QRect(0, 0, width(), height() * 0.75), lang(lng_emoji_no_recent), QTextOption(style::al_center)); - return; - } QRect r = e ? e->rect() : rect(); diff --git a/Telegram/SourceFiles/fileuploader.cpp b/Telegram/SourceFiles/fileuploader.cpp index 02cab32a0..c3a6d396d 100644 --- a/Telegram/SourceFiles/fileuploader.cpp +++ b/Telegram/SourceFiles/fileuploader.cpp @@ -32,9 +32,9 @@ void FileUploader::uploadMedia(MsgId msgId, const ReadyLocalMedia &media) { } else if (media.type == ToPrepareDocument) { DocumentData *document; if (media.photoThumbs.isEmpty()) { - document = App::feedDocument(media.document); + document = App::feedDocument(MTP::authedId(), media.document); } else { - document = App::feedDocument(media.document, media.photoThumbs.begin().value()); + document = App::feedDocument(MTP::authedId(), media.document, media.photoThumbs.begin().value()); } document->status = FileUploading; if (!media.file.isEmpty()) { diff --git a/Telegram/SourceFiles/gui/boxshadow.cpp b/Telegram/SourceFiles/gui/boxshadow.cpp index e17c605e3..1cc6ecebb 100644 --- a/Telegram/SourceFiles/gui/boxshadow.cpp +++ b/Telegram/SourceFiles/gui/boxshadow.cpp @@ -45,7 +45,7 @@ BoxShadow::BoxShadow(const style::rect &topLeft) : _size(topLeft.width() / cIntR p.setCompositionMode(QPainter::CompositionMode_Source); p.drawImage(_size, 0, cornersImage.mirrored(true, false), _size, 0, _size, _size * 2); } - _corners = QPixmap::fromImage(cornersImage); + _corners = QPixmap::fromImage(cornersImage, Qt::ColorOnly); _colors.reserve(_size); uchar prev = 0; for (int32 i = 0; i < _size; ++i) { diff --git a/Telegram/SourceFiles/gui/countryinput.cpp b/Telegram/SourceFiles/gui/countryinput.cpp index 531d218f1..a2b7f450b 100644 --- a/Telegram/SourceFiles/gui/countryinput.cpp +++ b/Telegram/SourceFiles/gui/countryinput.cpp @@ -102,7 +102,7 @@ CountryInput::CountryInput(QWidget *parent, const style::countryInput &st) : QWi p.setBrush(_st.bgColor->b); p.drawPolygon(trPoints, 3); } - _arrow = QPixmap::fromImage(trImage); + _arrow = QPixmap::fromImage(trImage, Qt::ColorOnly); _inner = QRect(0, 0, _st.width, _st.height); _arrowRect = QRect((st::inpIntroCountryCode.width - _arrow.width() - 1) / 2, _st.height, _arrow.width(), _arrow.height()); } diff --git a/Telegram/SourceFiles/gui/flatbutton.cpp b/Telegram/SourceFiles/gui/flatbutton.cpp index 8cc1353d9..0c5165ee8 100644 --- a/Telegram/SourceFiles/gui/flatbutton.cpp +++ b/Telegram/SourceFiles/gui/flatbutton.cpp @@ -23,9 +23,9 @@ FlatButton::FlatButton(QWidget *parent, const QString &text, const style::flatBu _st(st), a_bg(st.bgColor->c), a_text(st.color->c), _opacity(1) { if (_st.width < 0) { - _st.width = _st.font->m.width(text) - _st.width; + _st.width = textWidth() - _st.width; } else if (!_st.width) { - _st.width = _st.font->m.width(text) + _st.height - _st.font->height; + _st.width = textWidth() + _st.height - _st.font->height; } connect(this, SIGNAL(stateChanged(int, ButtonStateChangeSource)), this, SLOT(onStateChange(int, ButtonStateChangeSource))); resize(_st.width, _st.height); @@ -44,9 +44,18 @@ void FlatButton::setText(const QString &text) { void FlatButton::setWidth(int32 w) { _st.width = w; + if (_st.width < 0) { + _st.width = textWidth() - _st.width; + } else if (!_st.width) { + _st.width = textWidth() + _st.height - _st.font->height; + } resize(_st.width, height()); } +int32 FlatButton::textWidth() const { + return _st.font->m.width(_text); +} + bool FlatButton::animStep(float64 ms) { float64 dt = ms / _st.duration; bool res = true; diff --git a/Telegram/SourceFiles/gui/flatbutton.h b/Telegram/SourceFiles/gui/flatbutton.h index bde084c52..21f700fe3 100644 --- a/Telegram/SourceFiles/gui/flatbutton.h +++ b/Telegram/SourceFiles/gui/flatbutton.h @@ -36,6 +36,8 @@ public: void setText(const QString &text); void setWidth(int32 w); + int32 textWidth() const; + ~FlatButton() { } diff --git a/Telegram/SourceFiles/gui/images.cpp b/Telegram/SourceFiles/gui/images.cpp index 7964066f3..d3421eec9 100644 --- a/Telegram/SourceFiles/gui/images.cpp +++ b/Telegram/SourceFiles/gui/images.cpp @@ -25,7 +25,7 @@ namespace { LocalImages localImages; Image *blank() { - static Image *img = getImage(qsl(":/gui/art/blank.gif")); + static Image *img = getImage(qsl(":/gui/art/blank.gif"), "GIF"); return img; } @@ -264,7 +264,7 @@ QPixmap Image::pixBlurredNoCache(int32 w, int32 h) const { img = img.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); } - return QPixmap::fromImage(img); + return QPixmap::fromImage(img, Qt::ColorOnly); } QPixmap Image::pixNoCache(int32 w, int32 h, bool smooth) const { @@ -272,13 +272,17 @@ QPixmap Image::pixNoCache(int32 w, int32 h, bool smooth) const { loaded(); const QPixmap &p(pixData()); - if (p.isNull()) return blank()->pix(); - + if (p.isNull()) { + if (this == blank()) { + int a = 0; + } + return blank()->pix(); + } if (w <= 0 || !width() || !height() || w == width()) return p; if (h <= 0) { - return QPixmap::fromImage(p.toImage().scaledToWidth(w, smooth ? Qt::SmoothTransformation : Qt::FastTransformation)); + return QPixmap::fromImage(p.toImage().scaledToWidth(w, smooth ? Qt::SmoothTransformation : Qt::FastTransformation), Qt::ColorOnly); } - return QPixmap::fromImage(p.toImage().scaled(w, h, Qt::IgnoreAspectRatio, smooth ? Qt::SmoothTransformation : Qt::FastTransformation)); + return QPixmap::fromImage(p.toImage().scaled(w, h, Qt::IgnoreAspectRatio, smooth ? Qt::SmoothTransformation : Qt::FastTransformation), Qt::ColorOnly); } void Image::forget() const { @@ -290,7 +294,16 @@ void Image::forget() const { invalidateSizeCache(); if (saved.isEmpty()) { QBuffer buffer(&saved); - p.save(&buffer, format); + if (format.toLower() == "webp") { + int a = 0; + } + if (!p.save(&buffer, format)) { + if (p.save(&buffer, "PNG")) { + format = "PNG"; + } else { + return; + } + } } globalAquiredSize -= int64(p.width()) * p.height() * 4; doForget(); @@ -316,7 +329,18 @@ void Image::invalidateSizeCache() const { _sizesCache.clear(); } -LocalImage::LocalImage(const QString &file) : data(file) { +LocalImage::LocalImage(const QString &file, QByteArray fmt) { + data = QPixmap::fromImage(App::readImage(file, &fmt, false), Qt::ColorOnly); + format = fmt; + if (!data.isNull()) { + globalAquiredSize += int64(data.width()) * data.height() * 4; + } +} + +LocalImage::LocalImage(const QByteArray &filecontent, QByteArray fmt) { + data = QPixmap::fromImage(App::readImage(filecontent, &fmt, false), Qt::ColorOnly); + format = fmt; + saved = filecontent; if (!data.isNull()) { globalAquiredSize += int64(data.width()) * data.height() * 4; } @@ -342,20 +366,24 @@ int32 LocalImage::height() const { return data.height(); } -LocalImage *getImage(const QString &file) { - LocalImages::const_iterator i = localImages.constFind(file); - if (i == localImages.cend()) { - i = localImages.insert(file, new LocalImage(file)); - } - return i.value(); -} - LocalImage::~LocalImage() { if (!data.isNull()) { globalAquiredSize -= int64(data.width()) * data.height() * 4; } } +LocalImage *getImage(const QString &file, QByteArray format) { + LocalImages::const_iterator i = localImages.constFind(file); + if (i == localImages.cend()) { + i = localImages.insert(file, new LocalImage(file, format)); + } + return i.value(); +} + +LocalImage *getImage(const QByteArray &filecontent, QByteArray format) { + return new LocalImage(filecontent, format); +} + LocalImage *getImage(const QPixmap &pixmap, QByteArray format) { return new LocalImage(pixmap, format); } @@ -410,7 +438,7 @@ bool StorageImage::check() const { globalAquiredSize -= int64(data.width()) * data.height() * 4; } QByteArray bytes = loader->bytes(); - data = QPixmap::fromImage(App::readImage(bytes, &format), Qt::ColorOnly); + data = QPixmap::fromImage(App::readImage(bytes, &format, false), Qt::ColorOnly); if (!data.isNull()) { globalAquiredSize += int64(data.width()) * data.height() * 4; } @@ -432,11 +460,11 @@ bool StorageImage::check() const { void StorageImage::setData(QByteArray &bytes, const QByteArray &format) { QBuffer buffer(&bytes); - QImageReader reader(&buffer, format); if (!data.isNull()) { globalAquiredSize -= int64(data.width()) * data.height() * 4; } - data = QPixmap::fromImageReader(&reader, Qt::ColorOnly); + QByteArray fmt(format); + data = QPixmap::fromImage(App::readImage(bytes, &fmt, false), Qt::ColorOnly); if (!data.isNull()) { globalAquiredSize += int64(data.width()) * data.height() * 4; } @@ -450,7 +478,7 @@ void StorageImage::setData(QByteArray &bytes, const QByteArray &format) { loader = 0; } this->saved = bytes; - this->format = reader.format(); + this->format = fmt; forgot = false; } diff --git a/Telegram/SourceFiles/gui/images.h b/Telegram/SourceFiles/gui/images.h index cc1fc63e9..daaac895f 100644 --- a/Telegram/SourceFiles/gui/images.h +++ b/Telegram/SourceFiles/gui/images.h @@ -85,8 +85,9 @@ private: class LocalImage : public Image { public: - LocalImage(const QString &file); - LocalImage(const QPixmap &pixmap, QByteArray format); + LocalImage(const QString &file, QByteArray format = QByteArray()); + LocalImage(const QByteArray &filecontent, QByteArray format = QByteArray()); + LocalImage(const QPixmap &pixmap, QByteArray format = QByteArray()); int32 width() const; int32 height() const; @@ -110,7 +111,8 @@ private: mutable QPixmap data; }; -LocalImage *getImage(const QString &file); +LocalImage *getImage(const QString &file, QByteArray format); +LocalImage *getImage(const QByteArray &filecontent, QByteArray format); LocalImage *getImage(const QPixmap &pixmap, QByteArray format); typedef QPair StorageKey; @@ -143,7 +145,7 @@ public: bool loading() const { return loader ? loader->loading() : false; } - void setData(QByteArray &bytes, const QByteArray &format = "JPG"); + void setData(QByteArray &bytes, const QByteArray &format = QByteArray()); void load(bool loadFirst = false, bool prior = true) { if (loader) { @@ -189,7 +191,9 @@ Image *getImage(int32 width, int32 height, const MTPFileLocation &location); class ImagePtr : public ManagedPtr { public: ImagePtr(); - ImagePtr(const QString &file) : Parent(getImage(file)) { + ImagePtr(const QString &file, QByteArray format = QByteArray()) : Parent(getImage(file, format)) { + } + ImagePtr(const QByteArray &filecontent, QByteArray format = QByteArray()) : Parent(getImage(filecontent, format)) { } ImagePtr(const QPixmap &pixmap, QByteArray format) : Parent(getImage(pixmap, format)) { } diff --git a/Telegram/SourceFiles/history.cpp b/Telegram/SourceFiles/history.cpp index ec2ac6def..af39e3bee 100644 --- a/Telegram/SourceFiles/history.cpp +++ b/Telegram/SourceFiles/history.cpp @@ -58,24 +58,24 @@ style::color peerColor(int32 index) { ImagePtr userDefPhoto(int32 index) { static const ImagePtr userDefPhotos[8] = { - ImagePtr(":/ava/art/usercolor1.png"), - ImagePtr(":/ava/art/usercolor2.png"), - ImagePtr(":/ava/art/usercolor3.png"), - ImagePtr(":/ava/art/usercolor4.png"), - ImagePtr(":/ava/art/usercolor5.png"), - ImagePtr(":/ava/art/usercolor6.png"), - ImagePtr(":/ava/art/usercolor7.png"), - ImagePtr(":/ava/art/usercolor8.png") + ImagePtr(qsl(":/ava/art/usercolor1.png"), "PNG"), + ImagePtr(qsl(":/ava/art/usercolor2.png"), "PNG"), + ImagePtr(qsl(":/ava/art/usercolor3.png"), "PNG"), + ImagePtr(qsl(":/ava/art/usercolor4.png"), "PNG"), + ImagePtr(qsl(":/ava/art/usercolor5.png"), "PNG"), + ImagePtr(qsl(":/ava/art/usercolor6.png"), "PNG"), + ImagePtr(qsl(":/ava/art/usercolor7.png"), "PNG"), + ImagePtr(qsl(":/ava/art/usercolor8.png"), "PNG"), }; return userDefPhotos[index]; } ImagePtr chatDefPhoto(int32 index) { static const ImagePtr chatDefPhotos[4] = { - ImagePtr(":/ava/art/chatcolor1.png"), - ImagePtr(":/ava/art/chatcolor2.png"), - ImagePtr(":/ava/art/chatcolor3.png"), - ImagePtr(":/ava/art/chatcolor4.png") + ImagePtr(qsl(":/ava/art/chatcolor1.png"), "PNG"), + ImagePtr(qsl(":/ava/art/chatcolor2.png"), "PNG"), + ImagePtr(qsl(":/ava/art/chatcolor3.png"), "PNG"), + ImagePtr(qsl(":/ava/art/chatcolor4.png"), "PNG"), }; return chatDefPhotos[index]; } @@ -129,7 +129,7 @@ namespace { int64 d = reader->nextImageDelay(), delay = delays[f - 1]; if (!d) d = 1; delay += d; - frames.push_back(QPixmap::fromImage(img.size() == QSize(w, h) ? img : img.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation))); + frames.push_back(QPixmap::fromImage(img.size() == QSize(w, h) ? img : img.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly)); delays.push_back(delay); for (int32 i = 0; i < frames.size(); ++i) { if (!frames[i].isNull()) { @@ -157,7 +157,7 @@ namespace { } } if (frames[f].isNull() && reader->read(&img)) { - frames[f] = QPixmap::fromImage(img.size() == QSize(w, h) ? img : img.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + frames[f] = QPixmap::fromImage(img.size() == QSize(w, h) ? img : img.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly); } } if (frame != f) { @@ -192,7 +192,7 @@ namespace { int32 sizeLeft = MediaViewImageSizeLimit, delay = 0; for (bool read = reader->read(&img); read; read = reader->read(&img)) { sizeLeft -= w * h * 4; - frames.push_back(QPixmap::fromImage(img.size() == s ? img : img.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation))); + frames.push_back(QPixmap::fromImage(img.size() == s ? img : img.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly)); int32 d = reader->nextImageDelay(); if (!d) d = 1; delay += d; @@ -325,7 +325,7 @@ void UserData::setPhoto(const MTPUserProfilePhoto &p) { default: { photoId = 0; if (id == ServiceUserId) { - photo = ImagePtr(QPixmap::fromImage(App::wnd()->iconLarge().scaledToWidth(160, Qt::SmoothTransformation)), "PNG"); + photo = ImagePtr(QPixmap::fromImage(App::wnd()->iconLarge().scaledToWidth(160, Qt::SmoothTransformation), Qt::ColorOnly), "PNG"); } else { photo = userDefPhoto(colorIndex); } @@ -627,7 +627,7 @@ QString AudioData::already(bool check) { void DocumentOpenLink::onClick(Qt::MouseButton button) const { DocumentData *data = document(); - if ((!data->user && !data->date) || button != Qt::LeftButton) return; + if (!data->date || button != Qt::LeftButton) return; QString already = data->already(true); if (!already.isEmpty()) { @@ -637,7 +637,7 @@ void DocumentOpenLink::onClick(Qt::MouseButton button) const { if (reader.supportsAnimation() && reader.imageCount() > 1 && App::hoveredLinkItem()) { startGif(App::hoveredLinkItem(), already); } else { - App::wnd()->showDocument(data, QPixmap::fromImage(App::readImage(already, 0, false)), App::hoveredLinkItem()); + App::wnd()->showDocument(data, QPixmap::fromImage(App::readImage(already, 0, false), Qt::ColorOnly), App::hoveredLinkItem()); } } else { psOpenFile(already); @@ -674,7 +674,7 @@ void DocumentOpenLink::onClick(Qt::MouseButton button) const { void DocumentSaveLink::doSave(bool forceSavingAs) const { DocumentData *data = document(); - if (!data->user && !data->date) return; + if (!data->date) return; QString already = data->already(true); if (!already.isEmpty() && !forceSavingAs) { @@ -715,19 +715,46 @@ void DocumentSaveLink::onClick(Qt::MouseButton button) const { void DocumentCancelLink::onClick(Qt::MouseButton button) const { DocumentData *data = document(); - if ((!data->user && !data->date) || button != Qt::LeftButton) return; + if (!data->date || button != Qt::LeftButton) return; data->cancel(); } -DocumentData::DocumentData(const DocumentId &id, const uint64 &access, int32 user, int32 date, const QString &name, const QString &mime, const ImagePtr &thumb, int32 dc, int32 size) : -id(id), access(access), user(user), date(date), name(name), mime(mime), thumb(thumb), dc(dc), size(size), status(FileReady), uploadOffset(0), openOnSave(0), openOnSaveMsgId(0), loader(0) { +DocumentData::DocumentData(int32 user, const DocumentId &id, const uint64 &access, int32 date, const QVector &attributes, const QString &mime, const ImagePtr &thumb, int32 dc, int32 size) : +user(user), id(id), type(FileDocument), duration(0), access(access), date(date), mime(mime), thumb(thumb), dc(dc), size(size), status(FileReady), uploadOffset(0), openOnSave(0), openOnSaveMsgId(0), loader(0) { + setattributes(attributes); location = Local::readFileLocation(mediaKey(mtpc_inputDocumentFileLocation, dc, id)); } +void DocumentData::setattributes(const QVector &attributes) { + for (int32 i = 0, l = attributes.size(); i < l; ++i) { + switch (attributes[i].type()) { + case mtpc_documentAttributeImageSize: { + const MTPDdocumentAttributeImageSize &d(attributes[i].c_documentAttributeImageSize()); + dimensions = QSize(d.vw.v, d.vh.v); + } break; + case mtpc_documentAttributeAnimated: if (type == FileDocument || type == StickerDocument) type = AnimatedDocument; break; + case mtpc_documentAttributeSticker: if (type == FileDocument) type = StickerDocument; break; + case mtpc_documentAttributeVideo: { + const MTPDdocumentAttributeVideo &d(attributes[i].c_documentAttributeVideo()); + type = VideoDocument; + duration = d.vduration.v; + dimensions = QSize(d.vw.v, d.vh.v); + } break; + case mtpc_documentAttributeAudio: { + const MTPDdocumentAttributeAudio &d(attributes[i].c_documentAttributeAudio()); + type = AudioDocument; + duration = d.vduration.v; + } break; + case mtpc_documentAttributeFilename: name = qs(attributes[i].c_documentAttributeFilename().vfile_name); break; + } + } +} + void DocumentData::save(const QString &toFile) { cancel(true); - loader = new mtpFileLoader(dc, id, access, mtpc_inputDocumentFileLocation, toFile, size); + bool isSticker = (type == StickerDocument) && (dimensions.width() > 0) && (dimensions.height() > 0) && (size < StickerInMemory); + loader = new mtpFileLoader(dc, id, access, mtpc_inputDocumentFileLocation, toFile, size, isSticker); loader->connect(loader, SIGNAL(progress(mtpFileLoader*)), App::main(), SLOT(documentLoadProgress(mtpFileLoader*))); loader->connect(loader, SIGNAL(failed(mtpFileLoader*, bool)), App::main(), SLOT(documentLoadFailed(mtpFileLoader*, bool))); loader->start(); @@ -2768,8 +2795,8 @@ HistoryMedia *HistoryAudio::clone() const { return new HistoryAudio(*this); } -HistoryDocument::HistoryDocument(const MTPDdocument &document, int32 width) : HistoryMedia(width) -, data(App::feedDocument(document)) +HistoryDocument::HistoryDocument(DocumentData *document, int32 width) : HistoryMedia(width) +, data(document) , _openl(new DocumentOpenLink(data)) , _savel(new DocumentSaveLink(data)) , _cancell(new DocumentCancelLink(data)) @@ -2961,7 +2988,7 @@ void HistoryDocument::unregItem(HistoryItem *item) { void HistoryDocument::updateFrom(const MTPMessageMedia &media) { if (media.type() == mtpc_messageMediaDocument) { - App::feedDocument(media.c_messageMediaDocument().vdocument, data); + App::feedDocument(data->user, media.c_messageMediaDocument().vdocument, data); } } @@ -3046,6 +3073,125 @@ HistoryMedia *HistoryDocument::clone() const { return new HistoryDocument(*this); } +HistorySticker::HistorySticker(DocumentData *document, int32 width) : HistoryMedia(width) +, data(document) +{ + data->thumb->load(); +} + +void HistorySticker::initDimensions(const HistoryItem *parent) { + _maxw = data->dimensions.width(); + _minh = data->dimensions.height(); + if (_maxw > st::msgMinWidth) { + _minh = (st::msgMinWidth * _minh) / _maxw; + _maxw = st::msgMinWidth; + } + if (_minh > st::maxMediaSize) { + _maxw = (st::maxMediaSize * _maxw) / _minh; + _minh = st::maxMediaSize; + } + _height = resize(w, true, parent); +} + +void HistorySticker::draw(QPainter &p, const HistoryItem *parent, bool selected, int32 width) const { + if (width < 0) width = w; + if (width < 1) return; + + bool out = parent->out(), hovered, pressed, already = !data->already().isEmpty(), hasdata = !data->data.isEmpty(); + if (!data->loader && data->status != FileFailed && !already && !hasdata) { + data->save(QString()); + } + if (data->sticker->isNull() && (already || hasdata)) { + if (already) { + data->sticker = ImagePtr(data->already()); + } else { + data->sticker = ImagePtr(data->data); + } + } + if (data->sticker->isNull()) { + p.drawPixmap(0, 0, data->thumb->pix(_maxw)); + } else { + p.drawPixmap(0, 0, data->sticker->pix(_maxw)); + } + if (selected) { + p.fillRect(0, 0, _maxw, _minh, (out ? st::msgOutSelectOverlay : st::msgInSelectOverlay)->b); + } + + // date + QString time(parent->time()); + if (time.isEmpty()) return; + int32 dateX = width - parent->timeWidth() - st::msgDateImgDelta - 2 * st::msgDateImgPadding.x(); + int32 dateY = _height - st::msgDateFont->height - 2 * st::msgDateImgPadding.y() - st::msgDateImgDelta; + if (parent->out()) { + dateX -= st::msgCheckRect.pxWidth() + st::msgDateImgCheckSpace; + } + int32 dateW = width - dateX - st::msgDateImgDelta; + int32 dateH = _height - dateY - st::msgDateImgDelta; + + p.fillRect(dateX, dateY, dateW, dateH, st::msgDateImgBg->b); + p.setFont(st::msgDateFont->f); + p.setPen(st::msgDateImgColor->p); + p.drawText(dateX + st::msgDateImgPadding.x(), dateY + st::msgDateImgPadding.y() + st::msgDateFont->ascent, time); + if (out) { + QPoint iconPos(dateX - 2 + dateW - st::msgDateImgCheckSpace - st::msgCheckRect.pxWidth(), dateY + (dateH - st::msgCheckRect.pxHeight()) / 2); + const QRect *iconRect; + if (parent->id > 0) { + if (parent->unread()) { + iconRect = &st::msgImgCheckRect; + } else { + iconRect = &st::msgImgDblCheckRect; + } + } else { + iconRect = &st::msgImgSendingRect; + } + p.drawPixmap(iconPos, App::sprite(), *iconRect); + } +} + +void HistorySticker::regItem(HistoryItem *item) { + App::regDocumentItem(data, item); +} + +void HistorySticker::unregItem(HistoryItem *item) { + App::unregDocumentItem(data, item); +} + +void HistorySticker::updateFrom(const MTPMessageMedia &media) { + if (media.type() == mtpc_messageMediaDocument) { + App::feedDocument(data->user, media.c_messageMediaDocument().vdocument, data); + } +} + +int32 HistorySticker::resize(int32 width, bool dontRecountText, const HistoryItem *parent) { + w = _maxw; + _height = _minh; + return _height; +} + +const QString HistorySticker::inDialogsText() const { + return lang(lng_in_dlg_sticker); +} + +const QString HistorySticker::inHistoryText() const { + return qsl("[ ") + lang(lng_in_dlg_sticker) + qsl(" ]"); +} + +bool HistorySticker::hasPoint(int32 x, int32 y, const HistoryItem *parent, int32 width) const { + return (x >= 0 && y >= 0 && x < _maxw && y < _minh); +} + +int32 HistorySticker::countHeight(const HistoryItem *parent, int32 width) const { + return _minh; +} + +TextLinkPtr HistorySticker::getLink(int32 x, int32 y, const HistoryItem *parent, int32 width) const { + return TextLinkPtr(); +} + +HistoryMedia *HistorySticker::clone() const { + return new HistorySticker(*this); +} + HistoryContact::HistoryContact(int32 userId, const QString &first, const QString &last, const QString &phone) : HistoryMedia(0) , userId(userId) , phone(App::formatPhone(phone)) @@ -3213,7 +3359,7 @@ void ImageLinkManager::init() { QPainter p(&b); p.fillRect(QRect(0, 0, cIntRetinaFactor(), cIntRetinaFactor()), st::white->b); } - QPixmap p = QPixmap::fromImage(b); + QPixmap p = QPixmap::fromImage(b, Qt::ColorOnly); p.setDevicePixelRatio(cRetinaFactor()); black = new ImagePtr(p, "PNG"); } @@ -3847,7 +3993,12 @@ void HistoryMessage::initMedia(const MTPMessageMedia &media, QString ¤tTex case mtpc_messageMediaDocument: { const MTPDocument &document(media.c_messageMediaDocument().vdocument); if (document.type() == mtpc_document) { - _media = new HistoryDocument(document.c_document()); + DocumentData *doc = App::feedDocument(_from->id, document); + if (doc->type == StickerDocument && doc->dimensions.width() > 0 && doc->dimensions.height() > 0 && doc->size < StickerInMemory) { + _media = new HistorySticker(doc); + } else { + _media = new HistoryDocument(doc); + } } } break; case mtpc_messageMediaUnsupported: @@ -4178,7 +4329,7 @@ HistoryForwarded::HistoryForwarded(History *history, HistoryBlock *block, const , fwdFrom(App::user(msg.vfwd_from_id.v)) , fwdFromName(4096) , fwdFromVersion(fwdFrom->nameVersion) -, fromWidth(st::msgServiceFont->m.width(lang(lng_forwarded_from))) +, fromWidth(st::msgServiceFont->m.width(lang(lng_forwarded_from)) + st::msgServiceFont->spacew) { fwdNameUpdated(); } @@ -4188,7 +4339,7 @@ HistoryForwarded::HistoryForwarded(History *history, HistoryBlock *block, MsgId , fwdFrom(dynamic_cast(msg) ? dynamic_cast(msg)->fromForwarded() : msg->from()) , fwdFromName(4096) , fwdFromVersion(fwdFrom->nameVersion) -, fromWidth(st::msgServiceFont->m.width(lang(lng_forwarded_from))) +, fromWidth(st::msgServiceFont->m.width(lang(lng_forwarded_from)) + st::msgServiceFont->spacew) { fwdNameUpdated(); } diff --git a/Telegram/SourceFiles/history.h b/Telegram/SourceFiles/history.h index 04014d9ef..bb553d318 100644 --- a/Telegram/SourceFiles/history.h +++ b/Telegram/SourceFiles/history.h @@ -391,11 +391,20 @@ public: void onClick(Qt::MouseButton button) const; }; +enum DocumentType { + FileDocument, + VideoDocument, + AudioDocument, + StickerDocument, + AnimatedDocument +}; struct DocumentData { - DocumentData(const DocumentId &id, const uint64 &access = 0, int32 user = 0, int32 date = 0, const QString &name = QString(), const QString &mime = QString(), const ImagePtr &thumb = ImagePtr(), int32 dc = 0, int32 size = 0); + DocumentData(int32 user, const DocumentId &id, const uint64 &access = 0, int32 date = 0, const QVector &attributes = QVector(), const QString &mime = QString(), const ImagePtr &thumb = ImagePtr(), int32 dc = 0, int32 size = 0); + void setattributes(const QVector &attributes); void forget() { thumb->forget(); + sticker->forget(); } void save(const QString &toFile); @@ -417,6 +426,7 @@ struct DocumentData { void finish() { if (loader->done()) { location = FileLocation(loader->fileType(), loader->fileName()); + data = loader->bytes(); } loader->deleteLater(); loader->rpcInvalidate(); @@ -425,9 +435,13 @@ struct DocumentData { QString already(bool check = false); - DocumentId id; - uint64 access; int32 user; + + DocumentId id; + DocumentType type; + QSize dimensions; + int32 duration; + uint64 access; int32 date; QString name, mime; ImagePtr thumb; @@ -440,6 +454,10 @@ struct DocumentData { int32 openOnSave, openOnSaveMsgId; mtpFileLoader *loader; FileLocation location; + + QByteArray data; + ImagePtr sticker; + int32 md5[8]; }; @@ -539,6 +557,7 @@ enum HistoryMediaType { MediaTypeContact, MediaTypeAudio, MediaTypeDocument, + MediaTypeSticker, MediaTypeImageLink, MediaTypeCount @@ -557,22 +576,13 @@ inline MediaOverviewType mediaToOverviewType(HistoryMediaType t) { switch (t) { case MediaTypePhoto: return OverviewPhotos; case MediaTypeVideo: return OverviewVideos; - case MediaTypeDocument: return OverviewDocuments; + case MediaTypeDocument: + case MediaTypeSticker: return OverviewDocuments; case MediaTypeAudio: return OverviewAudios; } return OverviewCount; } -inline HistoryMediaType overviewToMediaType(MediaOverviewType t) { - switch (t) { - case OverviewPhotos: return MediaTypePhoto; - case OverviewVideos: return MediaTypeVideo; - case OverviewAudios: return MediaTypeAudio; - case OverviewDocuments: return MediaTypeDocument; - } - return MediaTypeCount; -} - inline MTPMessagesFilter typeToMediaFilter(MediaOverviewType &type) { switch (type) { case OverviewPhotos: return MTP_inputMessagesFilterPhotos(); @@ -1356,7 +1366,7 @@ private: class HistoryDocument : public HistoryMedia { public: - HistoryDocument(const MTPDdocument &document, int32 width = 0); + HistoryDocument(DocumentData *document, int32 width = 0); void initDimensions(const HistoryItem *parent); void draw(QPainter &p, const HistoryItem *parent, bool selected, int32 width = -1) const; @@ -1396,6 +1406,39 @@ private: mutable int32 _dldDone, _uplDone; }; +class HistorySticker : public HistoryMedia { +public: + + HistorySticker(DocumentData *document, int32 width = 0); + void initDimensions(const HistoryItem *parent); + + void draw(QPainter &p, const HistoryItem *parent, bool selected, int32 width = -1) const; + int32 resize(int32 width, bool dontRecountText = false, const HistoryItem *parent = 0); + HistoryMediaType type() const { + return MediaTypeSticker; + } + const QString inDialogsText() const; + const QString inHistoryText() const; + bool hasPoint(int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const; + int32 countHeight(const HistoryItem *parent, int32 width = -1) const; + TextLinkPtr getLink(int32 x, int32 y, const HistoryItem *parent, int32 width = -1) const; + HistoryMedia *clone() const; + + DocumentData *document() { + return data; + } + + void regItem(HistoryItem *item); + void unregItem(HistoryItem *item); + + void updateFrom(const MTPMessageMedia &media); + +private: + + DocumentData *data; + +}; + class HistoryContact : public HistoryMedia { public: diff --git a/Telegram/SourceFiles/historywidget.cpp b/Telegram/SourceFiles/historywidget.cpp index 9fa5bf47e..17823fa33 100644 --- a/Telegram/SourceFiles/historywidget.cpp +++ b/Telegram/SourceFiles/historywidget.cpp @@ -688,7 +688,7 @@ void HistoryList::showContextMenu(QContextMenuEvent *e, bool showFromTouch) { _menu->addAction(lang(lng_context_copy_selected), this, SLOT(copySelectedText()))->setEnabled(true); } else if (item && !isUponSelected && !_contextMenuLnk) { QString contextMenuText = item->selectedText(FullItemSel); - if (!contextMenuText.isEmpty()) { + if (!contextMenuText.isEmpty() && (!msg || !msg->getMedia() || msg->getMedia()->type() != MediaTypeSticker)) { if (!_menu) _menu = new ContextMenu(this); _menu->addAction(lang(lng_context_copy_text), this, SLOT(copyContextText()))->setEnabled(true); } @@ -2972,6 +2972,21 @@ void HistoryWidget::onPhotoUploaded(MsgId newId, const MTPInputFile &file) { } } +namespace { + MTPVector _composeDocumentAttributes(DocumentData *document) { + QVector attributes(1, MTP_documentAttributeFilename(MTP_string(document->name))); + if (document->dimensions.width() > 0 && document->dimensions.height() > 0) { + attributes.push_back(MTP_documentAttributeImageSize(MTP_int(document->dimensions.width()), MTP_int(document->dimensions.height()))); + } + if (document->type == AnimatedDocument) { + attributes.push_back(MTP_documentAttributeAnimated()); + } else if (document->type == StickerDocument) { + attributes.push_back(MTP_documentAttributeSticker()); + } + return MTP_vector(attributes); + } +} + void HistoryWidget::onDocumentUploaded(MsgId newId, const MTPInputFile &file) { if (!MTP::authedId()) return; HistoryMessage *item = dynamic_cast(App::histItemById(newId)); @@ -2984,7 +2999,7 @@ void HistoryWidget::onDocumentUploaded(MsgId newId, const MTPInputFile &file) { App::historyRegRandom(randomId, newId); DocumentData *document = media->document(); History *hist = item->history(); - hist->sendRequestId = MTP::send(MTPmessages_SendMedia(item->history()->peer->input, MTP_inputMediaUploadedDocument(file, MTP_string(document->name), MTP_string(document->mime)), MTP_long(randomId)), App::main()->rpcDone(&MainWidget::sentFullDataReceived, randomId), RPCFailHandlerPtr(), 0, 0, hist->sendRequestId); + hist->sendRequestId = MTP::send(MTPmessages_SendMedia(item->history()->peer->input, MTP_inputMediaUploadedDocument(file, MTP_string(document->mime), _composeDocumentAttributes(document)), MTP_long(randomId)), App::main()->rpcDone(&MainWidget::sentFullDataReceived, randomId), RPCFailHandlerPtr(), 0, 0, hist->sendRequestId); } } } @@ -3001,7 +3016,7 @@ void HistoryWidget::onThumbDocumentUploaded(MsgId newId, const MTPInputFile &fil App::historyRegRandom(randomId, newId); DocumentData *document = media->document(); History *hist = item->history(); - hist->sendRequestId = MTP::send(MTPmessages_SendMedia(item->history()->peer->input, MTP_inputMediaUploadedThumbDocument(file, thumb, MTP_string(document->name), MTP_string(document->mime)), MTP_long(randomId)), App::main()->rpcDone(&MainWidget::sentFullDataReceived, randomId), RPCFailHandlerPtr(), 0, 0, hist->sendRequestId); + hist->sendRequestId = MTP::send(MTPmessages_SendMedia(item->history()->peer->input, MTP_inputMediaUploadedThumbDocument(file, thumb, MTP_string(document->mime), _composeDocumentAttributes(document)), MTP_long(randomId)), App::main()->rpcDone(&MainWidget::sentFullDataReceived, randomId), RPCFailHandlerPtr(), 0, 0, hist->sendRequestId); } } } diff --git a/Telegram/SourceFiles/intro/introsignup.cpp b/Telegram/SourceFiles/intro/introsignup.cpp index 8f7c8f72f..1a84fa9dd 100644 --- a/Telegram/SourceFiles/intro/introsignup.cpp +++ b/Telegram/SourceFiles/intro/introsignup.cpp @@ -208,7 +208,7 @@ void IntroSignup::onCheckRequest() { void IntroSignup::onPhotoReady(const QImage &img) { _photoBig = img; - _photoSmall = QPixmap::fromImage(img.scaled(st::introPhotoSize, st::introPhotoSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + _photoSmall = QPixmap::fromImage(img.scaled(st::introPhotoSize, st::introPhotoSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly); App::wnd()->hideLayer(); } diff --git a/Telegram/SourceFiles/lang.h b/Telegram/SourceFiles/lang.h index 6d2be0f7e..04ff52c35 100644 --- a/Telegram/SourceFiles/lang.h +++ b/Telegram/SourceFiles/lang.h @@ -21,6 +21,8 @@ static const char *LanguageCodes[] = { "en", "it", "es", + "de", + "nl", }; static const int languageTest = -1, languageDefault = 0, languageCount = sizeof(LanguageCodes) / sizeof(LanguageCodes[0]); diff --git a/Telegram/SourceFiles/langs/lang_de.strings b/Telegram/SourceFiles/langs/lang_de.strings new file mode 100644 index 000000000..ee0c343fd --- /dev/null +++ b/Telegram/SourceFiles/langs/lang_de.strings @@ -0,0 +1,482 @@ +/* +This file is part of Telegram Desktop, +the official desktop version of Telegram messaging app, see https://telegram.org + +Telegram Desktop is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +It is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE +Copyright (c) 2014 John Preston, https://desktop.telegram.org +*/ +"lng_language_name" = "Deutsch"; +"lng_switch_to_this" = "Auf Englisch zurücksetzen"; + +"lng_menu_contacts" = "Kontakte"; +"lng_menu_settings" = "Einstellungen"; +"lng_menu_about" = "Über"; +"lng_menu_update" = "Update"; +"lng_menu_restart" = "Neustart"; +"lng_menu_back" = "Zurück"; + +"lng_open_from_tray" = "Telegram öffnen"; +"lng_minimize_to_tray" = "Minimieren"; +"lng_quit_from_tray" = "Telegram beenden"; +"lng_tray_icon_text" = "Telegram ist noch aktiv,\ndu kannst das in den Einstellungen anpassen.\n\nWenn dieses Symbol aus der Taskleiste verschwindet,\nkannst du es wieder hier her ziehen."; + +"lng_month1" = "Januar"; +"lng_month2" = "Februar"; +"lng_month3" = "März"; +"lng_month4" = "April"; +"lng_month5" = "Mai"; +"lng_month6" = "Juni"; +"lng_month7" = "Juli"; +"lng_month8" = "August"; +"lng_month9" = "September"; +"lng_month10" = "Oktober"; +"lng_month11" = "November"; +"lng_month12" = "Dezember"; + +"lng_weekday1" = "Mo"; +"lng_weekday2" = "Di"; +"lng_weekday3" = "Mi"; +"lng_weekday4" = "Do"; +"lng_weekday5" = "Fr"; +"lng_weekday6" = "Sa"; +"lng_weekday7" = "So"; + +"lng_weekday1_full" = "Montag"; +"lng_weekday2_full" = "Dienstag"; +"lng_weekday3_full" = "Mittwoch"; +"lng_weekday4_full" = "Donnerstag"; +"lng_weekday5_full" = "Freitag"; +"lng_weekday6_full" = "Samstag"; +"lng_weekday7_full" = "Sonntag"; + +"lng_month_day" = "{day}. {month}"; + +"lng_cancel" = "Abbrechen"; +"lng_continue" = "Weiter"; +"lng_close" = "Schließen"; +"lng_connecting" = "Verbinde..."; +"lng_reconnecting" = "Neu verbinden {count:jetzt|in # s|in # s}.."; +"lng_reconnecting_try_now" = "Jetzt versuchen"; + +"lng_status_service_notifications" = "Servicemeldungen"; +"lng_status_offline" = "vor langer Zeit gesehen"; +"lng_status_recently" = "kürzlich gesehen"; +"lng_status_last_week" = "innerhalb einer Woche gesehen"; +"lng_status_last_month" = "innerhalb eines Monats gesehen"; +"lng_status_invisible" = "unsichtbar"; +"lng_status_lastseen_now" = "gerade eben gesehen"; +"lng_status_lastseen_minutes" = "zuletzt gesehen vor {count:_not_used_|# Minute|# Minuten}"; +"lng_status_lastseen_hours" = "zuletzt gesehen vor {count:_not_used_|# Stunde|# Stunden}"; +"lng_status_lastseen_today" = "zuletzt heute um {time} gesehen"; +"lng_status_lastseen_yesterday" = "gestern um {time} zuletzt gesehen"; +"lng_status_lastseen_date" = "zuletzt gesehen am {date}"; +"lng_status_lastseen_date_time" = "zuletzt gesehen am {date} um {time}"; +"lng_status_online" = "online"; +"lng_status_connecting" = "verbinden.."; + +"lng_chat_status_unaccessible" = "Gruppe ist nicht verfügbar"; +"lng_chat_status_members" = "{count:keine Mitglieder|# Mitglied|# Mitglieder}"; +"lng_chat_status_members_online" = "{count:_not_used_|# Mitglied|# Mitglieder}, {count_online:_not_used_|# online|# online}"; + +"lng_server_error" = "Interner Serverfehler."; +"lng_flood_error" = "Zu viele Versuche, bitte später erneut probieren."; +"lng_deleted" = "Gelöschter Kontakt"; + +"lng_intro" = "Willkommen beim offiziellen [a href=\"https://telegram.org/\"]Telegram[/a] Desktop Messenger.\n[b]Schnell[/b] und [b]sicher[/b] chatten ist nur einen Mausklick entfernt."; +"lng_start_msgs" = "JETZT STARTEN"; + +"lng_intro_next" = "WEITER"; +"lng_intro_finish" = "REGISTRIEREN"; + +"lng_phone_ph" = "Deine Telefonnummer"; +"lng_phone_title" = "Dein Telefon"; +"lng_phone_desc" = "Bitte Land und Telefonnummer\nohne führende Null eintragen."; +"lng_phone_notreg" = "Hinweis: Wenn du noch kein Telegram Konto haben solltest,\nbitte [b]registriere[/b] dich über unsere [a href=\"https://telegram.org/\"]iOS / Android[/a] apps oder direkt {signup_start}hier »{signup_end}"; +"lng_country_code" = "Ländercode"; +"lng_bad_country_code" = "Falscher Ländercode"; +"lng_country_ph" = "Suche"; +"lng_country_done" = "Fertig"; +"lng_country_none" = "Land nicht gefunden"; +"lng_country_select" = "Land auswählen"; + +"lng_code_ph" = "Dein Code"; +"lng_code_desc" = "Wir haben dir einen Aktivierungscode gesendet.\nBitte Code hier eingeben."; +"lng_code_call" = "Telegram ruft dich an in {minutes}:{seconds}"; +"lng_code_calling" = "Telegram ruft dich an.."; +"lng_code_called" = "Telegram ruft dich gerade an."; + +"lng_bad_phone" = "Falsche Nummer, bitte erneut versuchen."; +"lng_bad_phone_noreg" = "Telefonnummer nicht registriert."; +"lng_bad_code" = "Ungültiger Code, bitte versuche es nochmal."; +"lng_bad_name" = "Bite trage Vor- und Nachnamen ein."; +"lng_bad_photo" = "Fehler beim Upload."; + +"lng_signup_title" = "Information und Bild"; +"lng_signup_desc" = "Bite trage deinen Namen ein \nund lade ein Bild hoch."; + +"lng_signup_firstname" = "Vorname"; +"lng_signup_lastname" = "Nachname"; + +"lng_dlg_filter" = "Suche"; +"lng_dlg_new_group_name" = "Name der Gruppe"; +"lng_dlg_create_group" = "Erstellen"; +"lng_no_contacts" = "Du hast keine Kontakte"; +"lng_contacts_loading" = "Lade.."; +"lng_contacts_not_found" = "Keine Kontakte gefunden"; + +"lng_settings_save" = "Speichern"; +"lng_settings_upload" = "Profilbild festlegen"; +"lng_settings_crop_profile" = "Sichtbaren Bereich für Bild wählen"; +"lng_settings_uploading_photo" = "Bild wird geladen.."; + +"lng_username_title" = "Benutzernamen ändern"; +"lng_username_about" = "Wähle einen (optionalen) öffentlichen \nBenutzernamen, wenn du von anderen \ngefunden werden willst, ohne, dass sie \ndeine Nummer kennen müssen.\n\nErlaubt sind a-z, 0-9 und Unterstriche. \nDie Mindestlänge beträgt 5 Zeichen."; +"lng_username_invalid" = "Der Benutzername ist fehlerhaft."; +"lng_username_occupied" = "Der Benutzername ist bereits belegt."; +"lng_username_too_short" = "Der Benutzername ist zu kurz."; +"lng_username_bad_symbols" = "Nur a-z, 0-9 und Unterstriche sind erlaubt."; +"lng_username_available" = "Der Benutzername ist noch verfügbar."; +"lng_username_not_found" = "Kontakt @{user} konnte nicht gefunden werden."; + +"lng_settings_section_contact_info" = "Kontaktprofil"; +"lng_settings_phone_number" = "Telefonnummer:"; +"lng_settings_username" = "Benutzername:"; +"lng_settings_choose_username" = "Benutzername wählen"; +"lng_settings_change_username" = "Ändern"; + +"lng_settings_section_notify" = "Benachrichtigungen"; +"lng_settings_desktop_notify" = "Desktopbenachrichtigungen"; +"lng_settings_show_name" = "Sendername anzeigen"; +"lng_settings_show_preview" = "Nachrichtenvorschau anzeigen"; +"lng_settings_sound_notify" = "Ton abspielen"; + +"lng_notification_preview" = "Du hast eine neue Nachricht"; + +"lng_settings_section_general" = "Allgemein"; +"lng_settings_change_lang" = "Sprache ändern"; +"lng_languages" = "Sprachen"; +"lng_sure_save_language" = "Telegram wird neugestartet, um \nin der neuen Sprache angezeigt\nwerden zu können"; +"lng_settings_auto_update" = "Auto-Updates"; +"lng_settings_current_version" = "Version {version}"; +"lng_settings_check_now" = "Auf Updates prüfen"; +"lng_settings_update_checking" = "Prüfe auf Updates.."; +"lng_settings_latest_installed" = "Aktuellste Version bereits installiert"; +"lng_settings_downloading" = "Update wird geladen {ready} / {total} MB.."; +"lng_settings_update_ready" = "Neue Version kann installiert werden"; +"lng_settings_update_now" = "Jetzt neustarten"; +"lng_settings_update_fail" = "Konnte nicht auf Updates prüfen :("; +"lng_settings_workmode_tray" = "Symbol im System Tray anzeigen"; +"lng_settings_workmode_window" = "Symbol in der Taskleiste anzeigen"; +"lng_settings_auto_start" = "Telegram beim Systemstart ausführen"; +"lng_settings_start_min" = "Minimiert starten"; +"lng_settings_add_sendto" = "Telegram in den Explorer einbinden"; +"lng_settings_scale_label" = "Größe ändern"; +"lng_settings_scale_auto" = "Auto ({cur})"; + +"lng_settings_section_chat" = "Chat-Optionen"; +"lng_settings_replace_emojis" = "Emoji ersetzen"; +"lng_settings_view_emojis" = "Liste anzeigen"; +"lng_settings_emoji_list" = "Unterstützte Emoji"; +"lng_settings_send_enter" = "Mit Enter senden"; +"lng_settings_send_ctrlenter" = "Mit Strg+Enter senden"; +"lng_settings_send_cmdenter" = "Mit Cmd+Enter senden"; +"lng_settings_cats_and_dogs" = "Standardhintergrundbild"; + +"lng_download_path_dont_ask" = "Speicherort merken"; +"lng_download_path_label" = "Downloadpfad:"; +"lng_download_path_temp" = "Temporär"; +"lng_download_path_default" = "Standardordner"; +"lng_download_path_clear" = "Alles entfernen"; +"lng_download_path_header" = "Wähle Speicherort"; +"lng_download_path_default_radio" = "Telegram-Ordner für «Downloads»"; +"lng_download_path_temp_radio" = "Temporärer Ordner (bis du dich abmeldest)"; +"lng_download_path_dir_radio" = "Nutzerdefinierter Ordner, wird nur manuell geleert."; +"lng_download_path_choose" = "Wähle Speicherort"; +"lng_sure_clear_downloads" = "Willst du alle Downlaods vom Temp-Ordner löschen? Das passiert automatisch wenn du dich abmeldest oder Telegram deinstallierst."; +"lng_download_path_failed" = "Download konnte nicht gestartet werden. Das kann am eingestellten Speicherort liegen.\n\nDu kannst den Speicherort in den Einstellungen ändern."; +"lng_download_path_settings" = "Zu den Einstellungen"; +"lng_download_finish_failed" = "Datei konte nicht geladen werden.\n\nErneut versuchen?"; +"lng_download_path_clearing" = "Leeren.."; +"lng_download_path_cleared" = "Geleert!"; +"lng_download_path_clear_failed" = "Ein Fehler ist aufgetreten :("; + +"lng_settings_section_cache" = "Lokaler Cache"; +"lng_settings_no_images_cached" = "Keine temporären Bilder gefunden!"; +"lng_settings_images_cached" = "Cache: {count:_not_used_|# Bild|# Bilder}, {size}"; +"lng_local_images_clear" = "Alles entfernen"; +"lng_local_images_clearing" = "Entfernen.."; +"lng_local_images_cleared" = "Alles entfernt!"; +"lng_local_images_clear_failed" = "Ein Fehler ist aufgetreten :("; + +"lng_settings_section_advanced" = "Erweitert"; +"lng_connection_type" = "Verbindungsart:"; +"lng_connection_auto_connecting" = "Standard (verbinden..)"; +"lng_connection_auto" = "Standard ({type} verwendet)"; +"lng_connection_http_proxy" = "HTTP mit Proxy"; +"lng_connection_tcp_proxy" = "TCP mit Proxy"; +"lng_connection_header" = "Verbindungsart"; +"lng_connection_auto_rb" = "Auto (TCP wenn verfügbar oder HTTP)"; +"lng_connection_http_proxy_rb" = "HTTP mit benutzerdef. Http-Proxy"; +"lng_connection_tcp_proxy_rb" = "TCP mit benutzerdef. Socks5-Proxy"; +"lng_connection_host_ph" = "Hostname"; +"lng_connection_port_ph" = "Port"; +"lng_connection_user_ph" = "Benutzername"; +"lng_connection_password_ph" = "Kennwort"; +"lng_connection_save" = "Speichern"; +"lng_settings_reset" = "Alle anderen Sitzungen beenden"; +"lng_settings_reset_sure" = "Sicher, dass du alle anderen Geräte abmelden möchtest?"; +"lng_settings_reset_button" = "Beenden"; +"lng_settings_reset_done" = "Alle anderen Sitzungen wurden erfolgreich beendet."; +"lng_settings_logout" = "Abmelden"; +"lng_sure_logout" = "Du kannst Telegram von all deinen Geräten gleichzeitig nutzen. Wirklich abmelden?"; + +"lng_settings_need_restart" = "Neustart für die neuen Einstellungen\nerforderlich. Jetzt neustarten?"; +"lng_settings_restart_now" = "Neustart"; +"lng_settings_restart_later" = "Später"; + +"lng_profile_chat_unaccessible" = "Gruppe nicht verfügbar"; +"lng_topbar_info" = "Info"; +"lng_profile_settings_section" = "Einstellungen"; +"lng_profile_participants_section" = "Mitglieder"; +"lng_profile_info" = "Kontaktinfo"; +"lng_profile_group_info" = "Gruppeninfo"; +"lng_profile_add_contact" = "Kontakt hinzufügen"; +"lng_profile_edit_contact" = "Bearbeiten"; +"lng_profile_enable_notifications" = "Benachrichtigungen"; +"lng_profile_clear_history" = "Chatverlauf löschen"; +"lng_profile_send_message" = "Nachricht senden"; +"lng_profile_share_contact" = "Kontakt teilen"; +"lng_profile_delete_contact" = "Löschen"; +"lng_profile_set_group_photo" = "Bild festlegen"; +"lng_profile_add_participant" = "Neues Mitglied"; +"lng_profile_delete_and_exit" = "Verlassen"; +"lng_profile_kick" = "Entfernen"; +"lng_profile_sure_kick" = "{user} aus der Gruppe entfernen?"; +"lng_profile_loading" = "Lade.."; +"lng_profile_shared_media" = "Geteilte Medien"; +"lng_profile_no_media" = "Noch keine Medien in diesem Chat"; +"lng_profile_photos" = "{count:_not_used_|# Bild|# Bilder} »"; +"lng_profile_photos_header" = "Bilder aus dem Chat"; +"lng_profile_videos" = "{count:_not_used_|# Video|# Videos} »"; +"lng_profile_videos_header" = "Videos aus dem Chat"; +"lng_profile_documents" = "{count:_not_used_|# Datei|# Dateien} »"; +"lng_profile_documents_header" = "Sonstigen Dateien aus dem Chat"; +"lng_profile_audios" = "{count:_not_used_|# Sprachnachricht|# Sprachnachrichten} »"; +"lng_profile_audios_header" = "Übersicht Sprachnachrichten"; +"lng_profile_show_all_types" = "Alle Filter anzeigen"; +"lng_profile_copy_phone" = "Telefonnummer kopieren"; + +"lng_participant_filter" = "Suche"; +"lng_participant_invite" = "Einladen"; +"lng_create_new_group" = "Neue Gruppe"; +"lng_create_group_next" = "Weiter"; +"lng_create_group_title" = "Neue Gruppe erstellen"; + +"lng_sure_delete_contact" = "Bist du sicher, dass du {contact} von deinen Kontakten löschen willst?"; +"lng_sure_delete_history" = "Sicher, dass du den kompletten Verlauf mit {contact} löschen willst?\n\nDas kann man nicht rückgängig machen."; + +"lng_sure_delete_and_exit" = "Deinen Verlauf von «{group}» löschen und die Gruppe verlassen?\n\nDas kann man nicht rückgängig machen."; + +"lng_sure_enable_debug" = "Möchtest du in den DEBUG Modus wechseln?\n\nAlle Ereignisse werden aufgezeichnet."; + +"lng_message_empty" = "(empty)"; + +"lng_action_add_user" = "{from} hat {user} hinzugefügt"; +"lng_action_kick_user" = "{from} hat {user} entfernt"; +"lng_action_user_left" = "{from} hat die Gruppe verlassen"; +"lng_action_user_joined" = "{from} ist der Gruppe beigetreten"; +"lng_action_user_registered" = "{from} benutzt nun auch Telegram"; +"lng_action_removed_photo" = "{from} hat das Gruppenbild entfernt"; +"lng_action_changed_photo" = "{from} hat das Gruppenbild geändert"; +"lng_action_changed_title" = "{from} hat den Gruppennamen zu «{title}» geändert"; +"lng_action_created_chat" = "{from} hat die Gruppe «{title}» erstellt"; + +"lng_forwarded_from" = "Weitergeleitet von"; + +"lng_attach_failed" = "Uploadfehler"; +"lng_attach_file" = "Datei"; +"lng_attach_photo" = "Bild"; + +"lng_media_type" = "Dateityp"; +"lng_media_type_photos" = "Bilder"; +"lng_media_type_videos" = "Videos"; +"lng_media_type_documents" = "Dateien"; +"lng_media_type_audios" = "Sprachnachrichten"; + +"lng_media_open_with" = "Öffnen mit"; +"lng_media_download" = "Download"; +"lng_media_cancel" = "Abbrechen"; +"lng_media_video" = "Videodatei"; +"lng_media_audio" = "Sprachnachricht"; + +"lng_in_dlg_photo" = "Bild"; +"lng_in_dlg_video" = "Video"; +"lng_in_dlg_contact" = "Kontakt"; +"lng_in_dlg_audio" = "Sprachnachricht"; +"lng_in_dlg_document" = "Datei"; +"lng_in_dlg_sticker" = "Sticker"; + +"lng_send_button" = "Senden"; +"lng_message_ph" = "Schreibe deine Nachricht.."; +"lng_empty_history" = ""; +"lng_willbe_history" = "Wähle einen Chat aus um zu schreiben"; +"lng_message_with_from" = "[c]{from}:[/c] {message}"; +"lng_from_you" = "Ich"; + +"lng_typing" = "tippt"; +"lng_user_typing" = "{user} tippt"; +"lng_users_typing" = "{user} und {second_user} tippen"; +"lng_many_typing" = "{count:_not_used_|# tippt|# tippen}"; +"lng_unread_bar" = "{count:_not_used_|# Ungelesene Nachricht|# Ungelesene Nachrichten}"; + +"lng_maps_point" = "Standort"; +"lng_save_photo" = "Bild speichern"; +"lng_save_video" = "Video speichern"; +"lng_save_audio" = "Sprachnachricht speichern"; +"lng_save_document" = "Datei speichern"; +"lng_save_downloaded" = "{ready} / {total} {mb}"; +"lng_duration_and_size" = "{duration}, {size}"; +"lng_choose_images" = "Bilder auswählen"; + +"lng_context_open_link" = "Link öffnen"; +"lng_context_copy_link" = "Link kopieren"; +"lng_context_open_email" = "Email verfassen"; +"lng_context_copy_email" = "E-Mail-Adresse kopieren"; +"lng_context_open_hashtag" = "Nach Hashtag suchen"; +"lng_context_copy_hashtag" = "Hashtag kopieren"; +"lng_context_open_image" = "Bild öffnen"; +"lng_context_save_image" = "Bild speichern unter"; +"lng_context_forward_image" = "Bild weiterleiten"; +"lng_context_delete_image" = "Bild löschen"; +"lng_context_copy_image" = "Bild kopieren"; +"lng_context_close_image" = "Bild schließen"; +"lng_context_cancel_download" = "Download abbrechen"; +"lng_context_show_in_folder" = "Im Ordner anzeigen"; +"lng_context_show_in_finder" = "Im Finder zeigen"; +"lng_context_open_video" = "Video öffnen"; +"lng_context_save_video" = "Video speichern unter.."; +"lng_context_open_audio" = "Sprachnachricht öffnen"; +"lng_context_save_audio" = "Sprachnachricht speichern unter.."; +"lng_context_open_document" = "Datei öffnen"; +"lng_context_save_document" = "Datei speichern als"; +"lng_context_forward_file" = "Datei weiterleiten"; +"lng_context_delete_file" = "Datei löschen"; +"lng_context_close_file" = "Datei schließen"; +"lng_context_copy_text" = "Nachricht kopieren"; +"lng_context_to_msg" = "Zur Nachricht"; +"lng_context_forward_msg" = "Nachricht weiterleiten"; +"lng_context_delete_msg" = "Nachricht löschen"; +"lng_context_select_msg" = "Nachricht auswählen"; +"lng_context_cancel_upload" = "Upload abbrechen"; +"lng_context_copy_selected" = "Text kopieren"; +"lng_context_forward_selected" = "Auswahl weiterleiten"; +"lng_context_delete_selected" = "Auswahl löschen"; +"lng_context_clear_selection" = "Auswahl aufheben"; +"lng_really_send_image" = "Willst du dieses Bild senden?"; +"lng_really_send_file" = "Willst du diese Datei senden?"; +"lng_really_share_contact" = "Willst du diesen Kontakt senden?"; +"lng_send_image_compressed" = "Bild komprimieren"; + +"lng_forward_choose" = "Empfänger wählen.."; +"lng_forward_confirm" = "An {recipient} weiterleiten?"; +"lng_forward_share_contact" = "Kontakt an {recipient} senden?"; +"lng_forward_send_file_confirm" = "«{name}» an {recipient} senden?"; +"lng_forward_send_files_confirm" = "Ausgewählte Dateien an {recipient} senden?"; +"lng_forward" = "Weiterleiten"; +"lng_forward_send" = "Senden"; + +"lng_contact_phone" = "Telefonnummer"; +"lng_enter_contact_data" = "Neuer Kontakt"; +"lng_edit_group_title" = "Gruppennamen ändern"; +"lng_edit_contact_title" = "Kontaktnamen ändern"; +"lng_edit_self_title" = "Namen ändern"; +"lng_confirm_contact_data" = "Neuer Kontakt"; +"lng_add_contact" = "Erstellen"; +"lng_add_contact_button" = "Neuer Kontakt"; +"lng_contacts_header" = "Kontakte"; +"lng_contact_not_joined" = "Leider nutzt {name} Telegram noch nicht, aber du kannst deinen Kontakt gerne einladen.\n\nSobald jemand aus deinem Telefonbuch Telegram nutzt, informieren wir dich."; +"lng_try_other_contact" = "Andere probieren"; +"lng_contacts_done" = "Abbrechen"; + +"lng_drag_images_here" = "Hierher ziehen"; +"lng_drag_photos_here" = "Hierher ziehen"; +"lng_drag_files_here" = "Hierher ziehen"; + +"lng_drag_to_send_quick" = "Besonders schneller Versand"; +"lng_drag_to_send_no_compression" = "Versand ohne Qualitätsverlust"; +"lng_drag_to_send_documents" = "um Datei zu versenden"; + +"lng_selected_clear" = "Abbrechen"; +"lng_selected_delete" = "Löschen"; +"lng_selected_forward" = "Weiterleiten"; +"lng_selected_count" = "{count:_not_used_|# Nachricht|# Nachrichten}"; +"lng_selected_cancel_sure_this" = "Upload wirklich abbrechen?"; +"lng_selected_delete_sure_this" = "Diese Nachricht wirklich löschen?"; +"lng_selected_delete_sure" = "Willst du {count:_not_used_|# Nachricht|# Nachrichten} löschen?"; +"lng_selected_delete_confirm" = "Löschen"; + +"lng_about_version" = "Version {version}"; +"lng_about_text" = "Telegram Desktop basiert auf [a href=\"https://core.telegram.org/mtproto\"]MTProto[/a] und\ndem [a href=\"https://core.telegram.org/api\"]Telegram API[/a] um Geschwindigkeit \nund Sicherheit zu gewährleisten.\n\nSoftware steht unter der [a href=\"https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE\"]GNU GPL[/a] Version 3,\nQuelltext ist bei [a href=\"https://github.com/telegramdesktop/tdesktop\"]GitHub[/a] verfügbar."; +"lng_about_done" = "Fertig"; + +"lng_search_found_results" = "{count:Keine Nachrichten|# Nachricht|# Nachrichten}"; +"lng_search_global_results" = "Globale Suchergebnisse"; + +"lng_mediaview_save" = "Download"; +"lng_mediaview_forward" = "Weiterleiten"; +"lng_mediaview_delete" = "Löschen"; +"lng_mediaview_single_photo" = "Bild"; +"lng_mediaview_group_photo" = "Bild"; +"lng_mediaview_profile_photo" = "Profilbild"; +"lng_mediaview_n_of_count" = "Bild {n} von {count}"; +"lng_mediaview_doc_image" = "Datei"; +"lng_mediaview_today" = "heute um {time}"; +"lng_mediaview_yesterday" = "gestern um {time}"; +"lng_mediaview_date_time" = "{date} um {time}"; + +"lng_mediaview_saved" = "Bild wurde im [c]Downloads[/c] Ordner gespeichert"; + +"lng_new_authorization" = "{name},\n\nwir haben eine Anmeldung von einem neuen Gerät am {day}, {date} um {time} festgestellt. \n\nGerät: {device}\nStandort: {location}\n\nWarst du das selbst? Wenn du das nicht selbst gewesen bist, melde alle anderen Sitzungen in den Telegram Einstellungen unverzüglich ab. \n\nDanke,\nDein Telegram Team"; + +"lng_new_version7004" = "Telegram Desktop wurde aktualisiert auf Version {version} \n\n— Deutsch und Niederländisch hinzugefügt. \n\nGesamter Versionsverlauf: \n{link}"; + +// Mac specific + +"lng_mac_choose_app" = "Programm auswählen"; +"lng_mac_choose_text" = "Programm auswählen, um \"{file}\" zu öffnen."; +"lng_mac_enable_filter" = "Aktivieren:"; +"lng_mac_recommended_apps" = " Empfohlene Programme"; +"lng_mac_all_apps" = "Alle Programme"; +"lng_mac_always_open_with" = "Immer öffnen mit"; +"lng_mac_this_app_can_open" = "Dieses Programm kann \"{file}\"-Dateien öffnen."; +"lng_mac_not_known_app" = "Es ist nicht bekannt, ob dieses Programm \"{file}\" öffnen kann."; + +"lng_mac_menu_about" = "Über Telegram"; +"lng_mac_menu_preferences" = "Einstellungen ..."; +"lng_mac_menu_file" = "Ablage"; +"lng_mac_menu_logout" = "Abmelden"; +"lng_mac_menu_edit" = "Bearbeiten"; +"lng_mac_menu_undo" = "Widerrufen"; +"lng_mac_menu_redo" = "Wiederholen"; +"lng_mac_menu_cut" = "Ausschneiden"; +"lng_mac_menu_copy" = "Kopieren"; +"lng_mac_menu_paste" = "Einsetzen"; +"lng_mac_menu_delete" = "Löschen"; +"lng_mac_menu_select_all" = "Alles auswählen"; +"lng_mac_menu_window" = "Fenster"; +"lng_mac_menu_contacts" = "Kontakte"; +"lng_mac_menu_add_contact" = "Kontakt hinzufügen"; +"lng_mac_menu_new_group" = "Neue Gruppe"; +"lng_mac_menu_show" = "Telegram anzeigen"; + +// Keys finished diff --git a/Telegram/SourceFiles/langs/lang_es.strings b/Telegram/SourceFiles/langs/lang_es.strings index 73a2c4df4..2f88f3236 100644 --- a/Telegram/SourceFiles/langs/lang_es.strings +++ b/Telegram/SourceFiles/langs/lang_es.strings @@ -59,7 +59,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_weekday6_full" = "sábado"; "lng_weekday7_full" = "domingo"; -"lng_month_day" = "{day} {month}"; +"lng_month_day" = "{day} de {month}"; "lng_cancel" = "Cancelar"; "lng_continue" = "Continuar"; @@ -69,18 +69,18 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_reconnecting_try_now" = "Intentar ahora"; "lng_status_service_notifications" = "servicio de notificaciones"; -"lng_status_offline" = "últ. vez hace mucho tiempo"; -"lng_status_recently" = "últ. vez recientemente"; -"lng_status_last_week" = "últ. vez hace unos días"; -"lng_status_last_month" = "últ. vez hace unas semanas"; +"lng_status_offline" = "última vez hace mucho tiempo"; +"lng_status_recently" = "última vez recientemente"; +"lng_status_last_week" = "última vez hace unos días"; +"lng_status_last_month" = "última vez hace unas semanas"; "lng_status_invisible" = "invisible"; -"lng_status_lastseen_now" = "últ. vez hace un momento"; -"lng_status_lastseen_minutes" = "últ. vez hace {count:_not_used_|# minuto|# minutos}"; -"lng_status_lastseen_hours" = "últ. vez hace {count:_not_used_|# hora|# horas}"; -"lng_status_lastseen_today" = "últ. vez hoy a las {time}"; -"lng_status_lastseen_yesterday" = "últ. vez ayer a las {time}"; -"lng_status_lastseen_date" = "últ. vez el {date}"; -"lng_status_lastseen_date_time" = "últ. vez el {date} a las {time}"; +"lng_status_lastseen_now" = "última vez hace un momento"; +"lng_status_lastseen_minutes" = "última vez hace {count:_not_used_|# minuto|# minutos}"; +"lng_status_lastseen_hours" = "última vez hace {count:_not_used_|# hora|# horas}"; +"lng_status_lastseen_today" = "última vez hoy a las {time}"; +"lng_status_lastseen_yesterday" = "última vez ayer a las {time}"; +"lng_status_lastseen_date" = "última vez el {date}"; +"lng_status_lastseen_date_time" = "última vez el {date} a las {time}"; "lng_status_online" = "en línea"; "lng_status_connecting" = "conectando..."; @@ -119,7 +119,6 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_bad_phone_noreg" = "Número de teléfono no registrado."; "lng_bad_code" = "Pusiste un código inválido. Por favor, reinténtalo."; "lng_bad_name" = "Por favor, pon tu nombre y apellidos."; -"lng_bad_chat_title" = "Por favor, pon un título al chat nuevo."; "lng_bad_photo" = "La imagen seleccionada es errónea."; "lng_signup_title" = "Información y foto"; @@ -129,25 +128,19 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_signup_lastname" = "Apellidos"; "lng_dlg_filter" = "Buscar"; -"lng_dlg_conversations" = "Conversaciones"; -"lng_dlg_messages" = "Mensajes"; "lng_dlg_new_group_name" = "Nombre del grupo"; "lng_dlg_create_group" = "Crear"; "lng_no_contacts" = "No tienes contactos"; "lng_contacts_loading" = "Cargando..."; "lng_contacts_not_found" = "No se encontraron contactos"; -"lng_settings_profile" = "Perfil"; -"lng_settings_edit" = "Editar"; "lng_settings_save" = "Guardar"; -"lng_settings_cancel" = "Cancelar"; "lng_settings_upload" = "Poner foto de perfil"; -"lng_settings_badsize" = "Esta imagen tiene un tamaño equivocado. Por favor, intenta con otra."; "lng_settings_crop_profile" = "Elige el cuadrado para tu foto de perfil"; "lng_settings_uploading_photo" = "Cargando foto..."; "lng_username_title" = "Cambiar apodo"; -"lng_username_about" = "Puedes elegir un apodo en Telegram. \nSi lo haces, otras personas te podrán \nencontrar por ese apodo y contactarte \nsin saber tu número de teléfono.\n\nPuedes usar a-z, 0-9 y guiones bajos.\nLa longitud mínima es de 5 caracteres. "; +"lng_username_about" = "Puedes elegir un apodo en Telegram. \nSi lo haces, otras personas te podrán \nencontrar por ese apodo y contactarte \nsin saber tu número de teléfono.\n\nPuedes usar a-z, 0-9 y guiones bajos.\nLa longitud mínima es de 5 caracteres."; "lng_username_invalid" = "Este apodo es inválido."; "lng_username_occupied" = "Este apodo ya está ocupado."; "lng_username_too_short" = "Este apodo es muy corto."; @@ -155,7 +148,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_username_available" = "Este apodo está disponible."; "lng_username_not_found" = "No se encontró el usuario @{user}."; -"lng_settings_section_contact_info" = "Información del contacto"; +"lng_settings_section_contact_info" = "Información"; "lng_settings_phone_number" = "Número de teléfono:"; "lng_settings_username" = "Apodo:"; "lng_settings_choose_username" = "elegir apodo"; @@ -255,11 +248,10 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_topbar_info" = "Información"; "lng_profile_settings_section" = "Ajustes"; "lng_profile_participants_section" = "Miembros"; -"lng_profile_info" = "Información del contacto"; -"lng_profile_group_info" = "Información del grupo"; +"lng_profile_info" = "Información"; +"lng_profile_group_info" = "Información"; "lng_profile_add_contact" = "Añadir contacto"; "lng_profile_edit_contact" = "Editar"; -"lng_profile_edit_group" = "Editar"; "lng_profile_enable_notifications" = "Notificaciones"; "lng_profile_clear_history" = "Borrar historial"; "lng_profile_send_message" = "Enviar mensaje"; @@ -303,7 +295,6 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_action_kick_user" = "{from} expulsó a {user}"; "lng_action_user_left" = "{from} dejó el grupo"; "lng_action_user_joined" = "{from} se unió al grupo"; -"lng_action_user_photo" = "{from} añadió una nueva foto de perfil"; "lng_action_user_registered" = "{from} se acaba de unir a Telegram"; "lng_action_removed_photo" = "{from} quitó la foto del grupo"; "lng_action_changed_photo" = "{from} cambió la foto del grupo"; @@ -330,10 +321,10 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_in_dlg_photo" = "Foto"; "lng_in_dlg_video" = "Vídeo"; -"lng_in_dlg_geo" = "Mapa"; "lng_in_dlg_contact" = "Contacto"; "lng_in_dlg_audio" = "Audio"; "lng_in_dlg_document" = "Archivo"; +"lng_in_dlg_sticker" = "Sticker"; "lng_send_button" = "Enviar"; "lng_message_ph" = "Escribir un mensaje..."; @@ -434,8 +425,6 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_selected_delete_sure" = "¿Quieres eliminar {count:_not_used_|# mensaje|# mensajes}?"; "lng_selected_delete_confirm" = "Eliminar"; -"lng_emoji_no_recent" = "Los emojis recientes estarán aquí"; - "lng_about_version" = "Versión {version}"; "lng_about_text" = "Aplicación oficial basada en [a href=\"https://core.telegram.org/mtproto\"]MTProto[/a] y la [a href=\"https://core.telegram.org/api\"]\nAPI de Telegram[/a] para velocidad y seguridad.\n\nSoftware bajo licencia [a href=\"https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE\"]GNU GPL[/a] versión 3.\nCódigo de fuente disponible en [a href=\"https://github.com/telegramdesktop/tdesktop\"]GitHub[/a]."; "lng_about_done" = "Hecho"; @@ -446,17 +435,20 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_mediaview_save" = "Descargar"; "lng_mediaview_forward" = "Reenviar"; "lng_mediaview_delete" = "Eliminar"; -"lng_mediaview_single_photo" = "Foto única"; +"lng_mediaview_single_photo" = "Foto"; "lng_mediaview_group_photo" = "Foto del grupo"; "lng_mediaview_profile_photo" = "Foto de perfil"; "lng_mediaview_n_of_count" = "Foto {n} de {count}"; "lng_mediaview_doc_image" = "Archivo"; +"lng_mediaview_today" = "hoy a las {time}"; +"lng_mediaview_yesterday" = "ayer a las {time}"; +"lng_mediaview_date_time" = "{date} a las {time}"; "lng_mediaview_saved" = "La imagen fue guardada en tu carpeta [c]Descargas[/c]"; "lng_new_authorization" = "{name},\nDetectamos un inicio de sesión en tu cuenta desde un nuevo dispositivo el {day}, {date} a las {time}\n\nDispositivo: {device}\nUbicación: {location}\n\nSi no eras tú, puedes ir a Ajustes — Cerrar todas las otras sesiones.\n\nGracias.\nEl equipo de Telegram"; -"lng_new_version7003" = "Telegram Desktop se actualizó a la versión {version}\n\n— Fueron añadidos los idiomas español e italiano.\n\nLa versión completa del historial está aquí:\n{link}"; +"lng_new_version7004" = "Telegram Desktop fue actualizada a la versión {version}\n\n- Se añadieron los idiomas alemán y holandés.\n\nEl historial completo está disponible aquí:\n{link}"; // Mac specific diff --git a/Telegram/SourceFiles/langs/lang_it.strings b/Telegram/SourceFiles/langs/lang_it.strings index 0fc306f5c..48af9f354 100644 --- a/Telegram/SourceFiles/langs/lang_it.strings +++ b/Telegram/SourceFiles/langs/lang_it.strings @@ -119,7 +119,6 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_bad_phone_noreg" = "Numero di telefono non registrato."; "lng_bad_code" = "Hai inserito un codice non valido. Per favore riprova."; "lng_bad_name" = "Per favore inserisci il tuo nome e cognome."; -"lng_bad_chat_title" = "Inserisci il nuovo titolo della chat."; "lng_bad_photo" = "Immagine selezionata non valida."; "lng_signup_title" = "Informazioni e foto"; @@ -129,25 +128,19 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_signup_lastname" = "Cognome"; "lng_dlg_filter" = "Cerca"; -"lng_dlg_conversations" = "Chat"; -"lng_dlg_messages" = "Messaggi"; "lng_dlg_new_group_name" = "Nome gruppo"; "lng_dlg_create_group" = "Crea"; "lng_no_contacts" = "Non hai contatti"; "lng_contacts_loading" = "Caricamento.."; "lng_contacts_not_found" = "Nessun contatto trovato"; -"lng_settings_profile" = "Profilo"; -"lng_settings_edit" = "Modifica"; "lng_settings_save" = "Salva"; -"lng_settings_cancel" = "Annulla"; "lng_settings_upload" = "Imposta foto profilo"; -"lng_settings_badsize" = "Questa immagine ha una dimensione errata, prova con un'altra."; "lng_settings_crop_profile" = "Seleziona un'area quadrata per la tua foto profilo"; "lng_settings_uploading_photo" = "Caricamento foto.."; -"lng_username_title" = "Cambia nome utente"; -"lng_username_about" = "Puoi scegliere un nome utente su Telegram.\nSe lo fai, le altre persone potranno trovarti\ntramite questo nome utente e contattarti \nsenza conoscere il tuo numero di telefono.\n\nPuoi usare a-z, 0-9 e underscore.\nLa lunghezza minima è di 5 caratteri."; +"lng_username_title" = "Cambia username"; +"lng_username_about" = "Puoi scegliere un username su Telegram.\nSe lo fai, le altre persone potranno trovarti\ntramite questo nome utente e contattarti \nsenza conoscere il tuo numero di telefono.\n\nPuoi usare a-z, 0-9 e underscore.\nLa lunghezza minima è di 5 caratteri."; "lng_username_invalid" = "Il nome non è valido."; "lng_username_occupied" = "Il nome è già occupato."; "lng_username_too_short" = "Il nome è troppo corto."; @@ -157,8 +150,8 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_settings_section_contact_info" = "Informazioni di contatto"; "lng_settings_phone_number" = "Numero di telefono:"; -"lng_settings_username" = "Nome utente:"; -"lng_settings_choose_username" = "scegli nome utente"; +"lng_settings_username" = "Username:"; +"lng_settings_choose_username" = "scegli username"; "lng_settings_change_username" = "Cambia"; "lng_settings_section_notify" = "Notifiche"; @@ -259,7 +252,6 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_profile_group_info" = "Nome gruppo"; "lng_profile_add_contact" = "Aggiungi contatto"; "lng_profile_edit_contact" = "Modifica"; -"lng_profile_edit_group" = "Modifica"; "lng_profile_enable_notifications" = "Notifiche"; "lng_profile_clear_history" = "Cancella la cronologia"; "lng_profile_send_message" = "Invia messaggio"; @@ -303,7 +295,6 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_action_kick_user" = "{from} ha espulso {user}"; "lng_action_user_left" = "{from} ha lasciato il gruppo"; "lng_action_user_joined" = "{from} si è unito al gruppo"; -"lng_action_user_photo" = "{from} ha aggiunto una nuova foto profilo"; "lng_action_user_registered" = "{from} si è appena unito a Telegram"; "lng_action_removed_photo" = "{from} ha rimosso la foto del gruppo"; "lng_action_changed_photo" = "{from} ha cambiato la foto del gruppo"; @@ -330,10 +321,10 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_in_dlg_photo" = "Foto"; "lng_in_dlg_video" = "Video"; -"lng_in_dlg_geo" = "Mappa"; "lng_in_dlg_contact" = "Contatto"; "lng_in_dlg_audio" = "Audio"; "lng_in_dlg_document" = "File"; +"lng_in_dlg_sticker" = "Sticker"; "lng_send_button" = "Invia"; "lng_message_ph" = "Scrivi un messaggio.."; @@ -434,10 +425,8 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_selected_delete_sure" = "Vuoi eliminare {count:_not_used_|# messaggio|# messaggi}?"; "lng_selected_delete_confirm" = "Elimina"; -"lng_emoji_no_recent" = "Le emoji recenti saranno qui"; - "lng_about_version" = "Versione {version}"; -"lng_about_text" = "App ufficiale di messaggistica basata su [a href=\"https://core.telegram.org/mtproto\"]MTProto[/a] e le\n [a href=\"https://core.telegram.org/api\"]API Telegram[/a] per velocità e sicurezza\n\nQuesto software è sotto licenza [a href=\"https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE\"]GNU GPL[/a] versione 3, \nil source code è disponibile su [a href=\"https://github.com/telegramdesktop/tdesktop\"]GitHub[/a]."; +"lng_about_text" = "App ufficiale di messaggistica basata su [a href=\"https://core.telegram.org/mtproto\"]MTProto[/a] e \nle [a href=\"https://core.telegram.org/api\"]API Telegram[/a] per velocità e sicurezza\n\nQuesto software è sotto licenza [a href=\"https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE\"]GNU GPL[/a] versione 3, \nil source code è disponibile su [a href=\"https://github.com/telegramdesktop/tdesktop\"]GitHub[/a]."; "lng_about_done" = "Fatto"; "lng_search_found_results" = "{count:Nessun messaggio trovato|Trovato # messaggio|Trovati # messaggi}"; @@ -451,12 +440,15 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_mediaview_profile_photo" = "Foto profilo"; "lng_mediaview_n_of_count" = "Foto {n} di {count}"; "lng_mediaview_doc_image" = "File"; +"lng_mediaview_today" = "oggi alle {time}"; +"lng_mediaview_yesterday" = "ieri alle {time}"; +"lng_mediaview_date_time" = "{date} alle {time}"; "lng_mediaview_saved" = "L'immagine è stata salvata nella tua cartella [c]Download[/c]"; "lng_new_authorization" = "{name},\nAbbiamo rilevato un accesso al tuo account da un nuovo dispositivo il {day}, {date} alle {time}\n\nDispositivo: {device}\nPosizione: {location}\n\nSe non sei tu, puoi andare su Impostazioni – Termina tutte le sessioni. \n\nGrazie, \nIl Team di Telegram"; -"lng_new_version7003" = "Telegram desktop si è aggiornato alla versione {version}\n\n— Aggiunti l'Italiano e lo Spagnolo\n\nLa cronologia degli update è disponibile qui:\n{link}"; +"lng_new_version7004" = "Telegram Desktop si è aggiornato alla versione {version}\n\n— Aggiunti il Tedesco e l'Olandese.\n\nLa cronologia degli update è disponibile qui:\n{link}"; // Mac specific diff --git a/Telegram/SourceFiles/langs/lang_nl.strings b/Telegram/SourceFiles/langs/lang_nl.strings new file mode 100644 index 000000000..502820ca8 --- /dev/null +++ b/Telegram/SourceFiles/langs/lang_nl.strings @@ -0,0 +1,482 @@ +/* +This file is part of Telegram Desktop, +the official desktop version of Telegram messaging app, see https://telegram.org + +Telegram Desktop is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +It is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE +Copyright (c) 2014 John Preston, https://desktop.telegram.org +*/ +"lng_language_name" = "Nederlands"; +"lng_switch_to_this" = "Overschakelen naar Nederlands"; + +"lng_menu_contacts" = "Contacten"; +"lng_menu_settings" = "Instellingen"; +"lng_menu_about" = "Over"; +"lng_menu_update" = "Bijwerken"; +"lng_menu_restart" = "Herstarten"; +"lng_menu_back" = "Vorige"; + +"lng_open_from_tray" = "Telegram openen"; +"lng_minimize_to_tray" = "Minimaliseer naar systeemvak"; +"lng_quit_from_tray" = "Telegram afsluiten"; +"lng_tray_icon_text" = "Telegram is nog steeds actief,\nJe kunt dit wijzigen via instellingen.\n\nAls dit icoon verdwijnt van het systeemvak,\nkun je deze terugslepen vanaf de verborgen iconen."; + +"lng_month1" = "januari"; +"lng_month2" = "februari"; +"lng_month3" = "maart"; +"lng_month4" = "april"; +"lng_month5" = "mei"; +"lng_month6" = "juni"; +"lng_month7" = "juli"; +"lng_month8" = "augustus"; +"lng_month9" = "september"; +"lng_month10" = "oktober"; +"lng_month11" = "november"; +"lng_month12" = "december"; + +"lng_weekday1" = "ma"; +"lng_weekday2" = "di"; +"lng_weekday3" = "wo"; +"lng_weekday4" = "do"; +"lng_weekday5" = "vr"; +"lng_weekday6" = "za"; +"lng_weekday7" = "zo"; + +"lng_weekday1_full" = "maandag"; +"lng_weekday2_full" = "dinsdag"; +"lng_weekday3_full" = "woensdag"; +"lng_weekday4_full" = "donderdag"; +"lng_weekday5_full" = "vrijdag"; +"lng_weekday6_full" = "zaterdag"; +"lng_weekday7_full" = "zondag"; + +"lng_month_day" = "{day} {month}"; + +"lng_cancel" = "Annuleren"; +"lng_continue" = "Doorgaan"; +"lng_close" = "Sluiten"; +"lng_connecting" = "Verbinden"; +"lng_reconnecting" = "Opnieuw verbinden {count:nu|over # s|over # s}"; +"lng_reconnecting_try_now" = "Probeer nu"; + +"lng_status_service_notifications" = "servicemeldingen"; +"lng_status_offline" = "lang geleden gezien"; +"lng_status_recently" = "recent gezien"; +"lng_status_last_week" = "afgelopen week gezien"; +"lng_status_last_month" = "afgelopen maand gezien"; +"lng_status_invisible" = "onzichtbaar"; +"lng_status_lastseen_now" = "laatst gezien zojuist"; +"lng_status_lastseen_minutes" = "laatst gezien {count:_not_used_|# min|# min} geleden"; +"lng_status_lastseen_hours" = "laatst gezien {count:_not_used_|# uur|# uur} geleden"; +"lng_status_lastseen_today" = "laatst gezien vandaag om {time}"; +"lng_status_lastseen_yesterday" = "laatst gezien gisteren om {time}"; +"lng_status_lastseen_date" = "laatst gezien {date}"; +"lng_status_lastseen_date_time" = "laatst gezien {date} om {time}"; +"lng_status_online" = "online"; +"lng_status_connecting" = "verbinden"; + +"lng_chat_status_unaccessible" = "groep is ontoegankelijk"; +"lng_chat_status_members" = "{count:geen deelnemers|# deelnemer|# deelnemers}"; +"lng_chat_status_members_online" = "{count:_not_used_|# deelnemer|# deelnemers}, {count_online:_not_used_|# online|# online}"; + +"lng_server_error" = "Interne serverfout."; +"lng_flood_error" = "Teveel pogingen. Probeer het later opnieuw."; +"lng_deleted" = "Onbekend"; + +"lng_intro" = "Welkom bij de officiële [a href=\"https://telegram.org/\"]Telegram[/a] desktop-app.\n[b]Snel[/b] en [b]veilig[/b]."; +"lng_start_msgs" = "BEGIN MET CHATTEN"; + +"lng_intro_next" = "VOLGENDE"; +"lng_intro_finish" = "AANMELDEN"; + +"lng_phone_ph" = "Je telefoonnummer"; +"lng_phone_title" = "Je telefoon"; +"lng_phone_desc" = "Bevestig je landnummer en \nvoer je telefoonnummer in."; +"lng_phone_notreg" = "Als je nog geen Telegram-account hebt,\nkun je je [b]aanmelden [/b] met [a href=\"https://telegram.org/\"]iOS / Android[/a] of {signup_start}hier »{signup_end}"; +"lng_country_code" = "Landnummer"; +"lng_bad_country_code" = "Ongeldig landnummer"; +"lng_country_ph" = "Zoeken"; +"lng_country_done" = "Gereed"; +"lng_country_none" = "Land niet gevonden"; +"lng_country_select" = "Land kiezen"; + +"lng_code_ph" = "Je code"; +"lng_code_desc" = "We hebben een bericht met activatiecode\nverstuurd naar je nummer, geef deze hieronder in."; +"lng_code_call" = "Telegram belt je over {minutes}:{seconds}"; +"lng_code_calling" = "Oproepverzoek versturen naar Telegram"; +"lng_code_called" = "Telegram heeft je nummer gebeld"; + +"lng_bad_phone" = "Ongeldig telefoonnummer. Probeer het opnieuw."; +"lng_bad_phone_noreg" = "Telefoonnummer is niet geregistreerd."; +"lng_bad_code" = "Je hebt een ongeldige code ingevoerd. Probeer het opnieuw."; +"lng_bad_name" = "Voer je voor- en achternaam in."; +"lng_bad_photo" = "Ongeldig bestand gekozen."; + +"lng_signup_title" = "Informatie en foto"; +"lng_signup_desc" = "Voer je naam en\nupload een foto."; + +"lng_signup_firstname" = "Voornaam"; +"lng_signup_lastname" = "Achternaam"; + +"lng_dlg_filter" = "Zoeken"; +"lng_dlg_new_group_name" = "Groepsnaam"; +"lng_dlg_create_group" = "Maak"; +"lng_no_contacts" = "Je hebt geen contacten"; +"lng_contacts_loading" = "Bezig met laden"; +"lng_contacts_not_found" = "Geen contacten gevonden"; + +"lng_settings_save" = "Opslaan"; +"lng_settings_upload" = "Profielfoto instellen"; +"lng_settings_crop_profile" = "Kies een vierkant gebied voor de foto"; +"lng_settings_uploading_photo" = "Foto uploaden"; + +"lng_username_title" = "Gebruikersnaam wijzigen"; +"lng_username_about" = "Je kunt hier je gebruikersnaam kiezen. \nHiermee kunnen anderen je vinden \nen contact met je opnemen zonder \nje telefoonnummer te weten.\n\na-z, 0-9 en underscore is toegestaan. \nDe minimale lengte is 5 tekens."; +"lng_username_invalid" = "Deze naam is ongeldig."; +"lng_username_occupied" = "Sorry, deze gebruikersnaam is al bezet."; +"lng_username_too_short" = "Deze naam is te kort."; +"lng_username_bad_symbols" = "Sorry, deze naam bevat ongeldige tekens."; +"lng_username_available" = "Deze naam is beschikbaar."; +"lng_username_not_found" = "Gebruiker @{user} niet gevonden."; + +"lng_settings_section_contact_info" = "Contactgegevens"; +"lng_settings_phone_number" = "Telefoonnummer:"; +"lng_settings_username" = "Gebruikersnaam:"; +"lng_settings_choose_username" = "gebruikersnaam kiezen"; +"lng_settings_change_username" = "Wijzig"; + +"lng_settings_section_notify" = "Meldingen"; +"lng_settings_desktop_notify" = "Desktopmeldingen"; +"lng_settings_show_name" = "Afzender weergeven"; +"lng_settings_show_preview" = "Voorvertoning weergeven"; +"lng_settings_sound_notify" = "Geluiden afspelen"; + +"lng_notification_preview" = "Je hebt een nieuw bericht"; + +"lng_settings_section_general" = "Algemeen"; +"lng_settings_change_lang" = "Taal wijzigen"; +"lng_languages" = "Talen"; +"lng_sure_save_language" = "Telegram moet herstarten\nom de taal te wijzigen"; +"lng_settings_auto_update" = "Automatisch bijwerken"; +"lng_settings_current_version" = "Versie {version}"; +"lng_settings_check_now" = "Controleer op updates"; +"lng_settings_update_checking" = "Op updates controleren"; +"lng_settings_latest_installed" = "Meest recente versie is geïnstalleerd."; +"lng_settings_downloading" = "Update downloaden {ready} / {total} MB"; +"lng_settings_update_ready" = "Nieuwe versie staat klaar"; +"lng_settings_update_now" = "Nu herstarten"; +"lng_settings_update_fail" = "Controleren op updates mislukt"; +"lng_settings_workmode_tray" = "Pictogram in systeemvak weergeven"; +"lng_settings_workmode_window" = "Pictogram op taakbalk weergeven"; +"lng_settings_auto_start" = "Telegram uitvoeren bij opstarten"; +"lng_settings_start_min" = "Minimaliseren bij uitvoeren"; +"lng_settings_add_sendto" = "Telegram toevoegen aan \"Kopiëren naar\"-menu"; +"lng_settings_scale_label" = "Interfaceschaal"; +"lng_settings_scale_auto" = "Auto ({cur})"; + +"lng_settings_section_chat" = "Chatopties"; +"lng_settings_replace_emojis" = "Emoji's vervangen"; +"lng_settings_view_emojis" = "Lijst bekijken"; +"lng_settings_emoji_list" = "Lijst met ondersteunde emoji's"; +"lng_settings_send_enter" = "Versturen met Enter"; +"lng_settings_send_ctrlenter" = "Versturen met Ctrl+Enter"; +"lng_settings_send_cmdenter" = "Versturen met Cmd+Enter"; +"lng_settings_cats_and_dogs" = "Katten en honden toestaan"; + +"lng_download_path_dont_ask" = "Niet voor iedere download vragen"; +"lng_download_path_label" = "Downloadpad:"; +"lng_download_path_temp" = "temp map"; +"lng_download_path_default" = "standaardmap"; +"lng_download_path_clear" = "Alles wissen"; +"lng_download_path_header" = "Downloadmap kiezen"; +"lng_download_path_default_radio" = "Telegram-map «Downloads»"; +"lng_download_path_temp_radio" = "Temp map, bij uitloggen of deïnstallatie opschonen\nAangepaste map, handmatig opschonen"; +"lng_download_path_dir_radio" = "Aangepaste map, handmatig opschonen"; +"lng_download_path_choose" = "Downloadmap kiezen"; +"lng_sure_clear_downloads" = "Wil je all gedownloaden bestanden wissen uit de tijdelijk map? Dit gebeurt automatisch bij uitloggen of deïnstallatie."; +"lng_download_path_failed" = "Download kon niet worden gestart. De oorzaak kan een ongeldige downloadmap zijn.\n\nJe kunt de map aanpassen via instellingen."; +"lng_download_path_settings" = "Ga naar Instellingen"; +"lng_download_finish_failed" = "Downloaden mislukt.\n\nWil je het opnieuw proberen?"; +"lng_download_path_clearing" = "Wissen"; +"lng_download_path_cleared" = "Gewist!"; +"lng_download_path_clear_failed" = "Wissen mislukt"; + +"lng_settings_section_cache" = "Lokale opslag"; +"lng_settings_no_images_cached" = "Geen cache-afbeeldingen gevonden!"; +"lng_settings_images_cached" = "Cache: {count:_not_used_|# image|# images}, {size}"; +"lng_local_images_clear" = "Alles wissen"; +"lng_local_images_clearing" = "Wissen"; +"lng_local_images_cleared" = "Gewist!"; +"lng_local_images_clear_failed" = "Wissen mislukt"; + +"lng_settings_section_advanced" = "Geavanceerd"; +"lng_connection_type" = "Verbindingstype:"; +"lng_connection_auto_connecting" = "Standaard (verbinden)"; +"lng_connection_auto" = "Standaard ({type} wordt gebruikt)"; +"lng_connection_http_proxy" = "HTTP met proxy"; +"lng_connection_tcp_proxy" = "TCP met proxy"; +"lng_connection_header" = "Verbindingstype"; +"lng_connection_auto_rb" = "Auto (TCP indien beschikbaar of HTTP)"; +"lng_connection_http_proxy_rb" = "HTTP met aangepaste http-proxy"; +"lng_connection_tcp_proxy_rb" = "TCP met aangepaste socks5-proxy"; +"lng_connection_host_ph" = "Hostnaam"; +"lng_connection_port_ph" = "Poort"; +"lng_connection_user_ph" = "Gebruikersnaam"; +"lng_connection_password_ph" = "Wachtwoord"; +"lng_connection_save" = "Opslaan"; +"lng_settings_reset" = "Beëindig alle andere sessies"; +"lng_settings_reset_sure" = "Alle apparaten behalve het huidige apparaat uitloggen?"; +"lng_settings_reset_button" = "Beëindigen"; +"lng_settings_reset_done" = "Alle andere sessies zijn beëindigd"; +"lng_settings_logout" = "Uitloggen"; +"lng_sure_logout" = "Weet je zeker dat je wilt uitloggen?"; + +"lng_settings_need_restart" = "Herstarten is vereist om sommige\ninstellingen toe te passen, herstarten?"; +"lng_settings_restart_now" = "Herstarten"; +"lng_settings_restart_later" = "Later"; + +"lng_profile_chat_unaccessible" = "Groep is ontoegankelijk"; +"lng_topbar_info" = "Info"; +"lng_profile_settings_section" = "Instellingen"; +"lng_profile_participants_section" = "Deelnemers"; +"lng_profile_info" = "Contactinformatie"; +"lng_profile_group_info" = "Groepsinformatie"; +"lng_profile_add_contact" = "Contact toevoegen"; +"lng_profile_edit_contact" = "Wijzig"; +"lng_profile_enable_notifications" = "Meldingen"; +"lng_profile_clear_history" = "Geschiedenis wissen"; +"lng_profile_send_message" = "Bericht sturen"; +"lng_profile_share_contact" = "Contact delen"; +"lng_profile_delete_contact" = "Verwijder"; +"lng_profile_set_group_photo" = "Foto instellen"; +"lng_profile_add_participant" = "Lid toevoegen"; +"lng_profile_delete_and_exit" = "Verlaat"; +"lng_profile_kick" = "Verwijder"; +"lng_profile_sure_kick" = " {user} uit de groep verwijderen?"; +"lng_profile_loading" = "Bezig met laden"; +"lng_profile_shared_media" = "Gedeelde media"; +"lng_profile_no_media" = "Geen media in deze chat."; +"lng_profile_photos" = "{count:_not_used_|# foto|# foto's} »"; +"lng_profile_photos_header" = "Overzicht van foto's"; +"lng_profile_videos" = "{count:_not_used_|# video|# video's} »"; +"lng_profile_videos_header" = "Overzicht van video's"; +"lng_profile_documents" = "{count:_not_used_|# bestand|# bestanden} »"; +"lng_profile_documents_header" = "Overzicht van bestanden"; +"lng_profile_audios" = "{count:_not_used_|# spraakbericht|# spraakberichten} »"; +"lng_profile_audios_header" = "Overzicht van spraakberichten"; +"lng_profile_show_all_types" = "Alles weergeven"; +"lng_profile_copy_phone" = "Telefoonnummer kopiëren"; + +"lng_participant_filter" = "Zoeken"; +"lng_participant_invite" = "Uitnodigen"; +"lng_create_new_group" = "Nieuwe groep"; +"lng_create_group_next" = "Volgende"; +"lng_create_group_title" = "Nieuwe groep"; + +"lng_sure_delete_contact" = "{contact} echt verwijderen uit contacten?"; +"lng_sure_delete_history" = "Geschiedenis met {contact} echt wissen? \n\nDeze actie kan niet ongedaan worden gemaakt."; + +"lng_sure_delete_and_exit" = "Wil je de groep «{group}» verlaten en de geschiedenis wissen?\n\nDeze actie kan niet ongedaan worden gemaakt."; + +"lng_sure_enable_debug" = "Wil je DEBUG-mode inschakelen?\n\nAlle netwerkgebeurtenissen zullen worden gelogd."; + +"lng_message_empty" = "(leeg)"; + +"lng_action_add_user" = "{from} heeft {user} toegevoegd"; +"lng_action_kick_user" = "{from} heeft {user} verwijderd"; +"lng_action_user_left" = "{from} heeft de groep verlaten"; +"lng_action_user_joined" = "{from} neemt deel aan de groep"; +"lng_action_user_registered" = "{from} heeft nu Telegram"; +"lng_action_removed_photo" = "{from} heeft de groepsafbeelding verwijderd"; +"lng_action_changed_photo" = "{from} heeft de groepsafbeelding gewijzigd"; +"lng_action_changed_title" = "{from} heeft de groepsnaam gewijzigd naar «{title}»"; +"lng_action_created_chat" = "{from} heeft de groep «{title}» gemaakt"; + +"lng_forwarded_from" = "Doorgestuurd van"; + +"lng_attach_failed" = "Mislukt"; +"lng_attach_file" = "Bestand"; +"lng_attach_photo" = "Foto"; + +"lng_media_type" = "Mediatype"; +"lng_media_type_photos" = "Foto's"; +"lng_media_type_videos" = "Video's"; +"lng_media_type_documents" = "Bestanden"; +"lng_media_type_audios" = "Spraakberichten"; + +"lng_media_open_with" = "Openen met"; +"lng_media_download" = "Downloaden"; +"lng_media_cancel" = "Annuleren"; +"lng_media_video" = "Video"; +"lng_media_audio" = "Spraakbericht"; + +"lng_in_dlg_photo" = "Foto"; +"lng_in_dlg_video" = "Video"; +"lng_in_dlg_contact" = "Contact"; +"lng_in_dlg_audio" = "Geluidsbestand"; +"lng_in_dlg_document" = "Bestand"; +"lng_in_dlg_sticker" = "Sticker"; + +"lng_send_button" = "Stuur"; +"lng_message_ph" = "Bericht schrijven"; +"lng_empty_history" = ""; +"lng_willbe_history" = "Kies een chat om te beginnen"; +"lng_message_with_from" = "[c]{from}:[/c] {message}"; +"lng_from_you" = "Jij"; + +"lng_typing" = "aan het typen"; +"lng_user_typing" = "{user} is aan het typen"; +"lng_users_typing" = "{user} en {second_user} zijn aan het typen"; +"lng_many_typing" = "{count:_not_used_|# is|# zijn} aan het typen"; +"lng_unread_bar" = "{count:_not_used_|# ongelezen bericht|# ongelezen berichten}"; + +"lng_maps_point" = "Locatie"; +"lng_save_photo" = "Afbeelding opslaan"; +"lng_save_video" = "Video opslaan"; +"lng_save_audio" = "Geluidsbestand opslaan"; +"lng_save_document" = "Bestand opslaan"; +"lng_save_downloaded" = "{ready} / {total} {mb}"; +"lng_duration_and_size" = "{duration}, {size}"; +"lng_choose_images" = "Afbeeldingen kiezen"; + +"lng_context_open_link" = "Link openen"; +"lng_context_copy_link" = "Link kopiëren"; +"lng_context_open_email" = "Naar dit adres sturen"; +"lng_context_copy_email" = "E-mailadres kopiëren"; +"lng_context_open_hashtag" = "Zoeken op hashtag"; +"lng_context_copy_hashtag" = "Hashtag kopiëren"; +"lng_context_open_image" = "Afbeelding openen"; +"lng_context_save_image" = "Afbeelding opslaan als"; +"lng_context_forward_image" = "Afbeelding doorsturen"; +"lng_context_delete_image" = "Afbeelding verwijderen"; +"lng_context_copy_image" = "Afbeelding kopiëren"; +"lng_context_close_image" = "Afbeelding sluiten"; +"lng_context_cancel_download" = "Download annuleren"; +"lng_context_show_in_folder" = "Weergeven in map"; +"lng_context_show_in_finder" = "Weergeven in Finder"; +"lng_context_open_video" = "Video openen"; +"lng_context_save_video" = "Video opslaan als"; +"lng_context_open_audio" = "Geluidsbestand openen"; +"lng_context_save_audio" = "Geluidsbestand opslaan als"; +"lng_context_open_document" = "Bestand openen"; +"lng_context_save_document" = "Bestand opslaan als"; +"lng_context_forward_file" = "Bestand doorsturen"; +"lng_context_delete_file" = "Bestand verwijderen"; +"lng_context_close_file" = "Bestand sluiten"; +"lng_context_copy_text" = "Bericht kopiëren"; +"lng_context_to_msg" = "Naar bericht gaan"; +"lng_context_forward_msg" = "Bericht doorsturen"; +"lng_context_delete_msg" = "Bericht verwijderen"; +"lng_context_select_msg" = "Bericht kiezen"; +"lng_context_cancel_upload" = "Upload annuleren"; +"lng_context_copy_selected" = "Tekstselectie kopiëren"; +"lng_context_forward_selected" = "Selectie doorsturen"; +"lng_context_delete_selected" = "Selectie verwijderen"; +"lng_context_clear_selection" = "Selectie wissen"; +"lng_really_send_image" = "Wil je deze afbeeldingen versturen?"; +"lng_really_send_file" = "Wil je dit bestand versturen?"; +"lng_really_share_contact" = "Wil je dit contact delen?"; +"lng_send_image_compressed" = "Gecomprimeerde afbeelding sturen"; + +"lng_forward_choose" = "Ontvanger kiezen"; +"lng_forward_confirm" = "Doorsturen naar {recipient}?"; +"lng_forward_share_contact" = "Contact delen met {recipient}?"; +"lng_forward_send_file_confirm" = " «{name}» naar {recipient} versturen?"; +"lng_forward_send_files_confirm" = "Gekozen bestanden naar {recipient} sturen?"; +"lng_forward" = "Doorsturen"; +"lng_forward_send" = "Stuur"; + +"lng_contact_phone" = "Telefoonnummer"; +"lng_enter_contact_data" = "Nieuw contact"; +"lng_edit_group_title" = "Groepsnaam bewerken"; +"lng_edit_contact_title" = "Naam bewerken"; +"lng_edit_self_title" = "Je naam bewerken"; +"lng_confirm_contact_data" = "Nieuw contact"; +"lng_add_contact" = "Opslaan"; +"lng_add_contact_button" = "Contact toevoegen"; +"lng_contacts_header" = "Contacten"; +"lng_contact_not_joined" = "{name} heeft zich nog niet aangemeld bij Telegram, je kunt je vriend een uitnodiging sturen.\n\nWe infomeren je wanneer een contact van jou lid is geworden van Telegram."; +"lng_try_other_contact" = "Probeer een andere"; +"lng_contacts_done" = "Annuleren"; + +"lng_drag_images_here" = "Sleep afbeeldingen hierheen"; +"lng_drag_photos_here" = "Sleep foto's hierheen"; +"lng_drag_files_here" = "Sleep bestanden hierheen"; + +"lng_drag_to_send_quick" = "om ze snel te versturen"; +"lng_drag_to_send_no_compression" = "om ze ongecomprimeerd te versturen"; +"lng_drag_to_send_documents" = "om ze als bestanden te versturen"; + +"lng_selected_clear" = "Annuleren"; +"lng_selected_delete" = "Verwijder"; +"lng_selected_forward" = "Doorsturen"; +"lng_selected_count" = "{count:_not_used_|# bericht|# berichten}"; +"lng_selected_cancel_sure_this" = "Wil je deze upload annuleren?"; +"lng_selected_delete_sure_this" = "Wil je dit bericht verwijderen?"; +"lng_selected_delete_sure" = "Wil je {count:_not_used_|# bericht|# berichten} verwijderen?"; +"lng_selected_delete_confirm" = "Verwijder"; + +"lng_about_version" = "Versie {version}"; +"lng_about_text" = "Officiële Telegram app gebaseerd op [a href=\"https://core.telegram.org/mtproto\"]MTProto[/a] en de\n[a href=\"https://core.telegram.org/api\"]Telegram API[/a] voor snelheid en veiligheid.\n\nDeze software valt onder [a href=\"https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE\"]GNU GPL[/a] versie 3,\nDe broncode is beschikbaar via [a href=\"https://github.com/telegramdesktop/tdesktop\"]GitHub[/a]."; +"lng_about_done" = "Gereed"; + +"lng_search_found_results" = "{count:geen berichten gevonden|# berichten gevonden|# berichten gevonden}"; +"lng_search_global_results" = "Wereldwijde zoekresultaten"; + +"lng_mediaview_save" = "Downloaden"; +"lng_mediaview_forward" = "Doorsturen"; +"lng_mediaview_delete" = "Verwijder"; +"lng_mediaview_single_photo" = "Foto"; +"lng_mediaview_group_photo" = "Groepsafbeelding"; +"lng_mediaview_profile_photo" = "Profielfoto"; +"lng_mediaview_n_of_count" = "Foto {n} van {count}"; +"lng_mediaview_doc_image" = "Bestand"; +"lng_mediaview_today" = "vandaag om {time}"; +"lng_mediaview_yesterday" = "gisteren om {time}"; +"lng_mediaview_date_time" = "{date} om {time}"; + +"lng_mediaview_saved" = "Het bestand is opgeslagen in je [c]Downloads[/c]-map"; + +"lng_new_authorization" = "{name},\nEr is op je account ingelogd vanaf een nieuw apparaat op {day}, {date} om {time}\n\nApparaat: {device}\nLocatie: {location}\n\nAls jij dit niet was, kun je alle sessies beëindigen via Instellingen – Beëindig alle andere sessies.\n\nBedankt,\nHet Telegram-Team"; + +"lng_new_version7004" = "Telegram is bijgewerkt naar versie {version}\n\n— Nederlands en Duits zijn toegevoegd.\n\nVolledige versiegeschiedenis is hier te vinden:\n{link}"; + +// Mac specific + +"lng_mac_choose_app" = "Kies een programma"; +"lng_mac_choose_text" = "Kies een programma voor het openen van het bestand \"{file}\"."; +"lng_mac_enable_filter" = "Activeren:"; +"lng_mac_recommended_apps" = "Aanbevolen programma's"; +"lng_mac_all_apps" = "Alle programma's"; +"lng_mac_always_open_with" = "Altijd openen met"; +"lng_mac_this_app_can_open" = "Dit programma kan \"{file}\" openen."; +"lng_mac_not_known_app" = "Het is niet bekend of dit programma \"{file}\" kan openen."; + +"lng_mac_menu_about" = "Over Telegram"; +"lng_mac_menu_preferences" = "Voorkeuren"; +"lng_mac_menu_file" = "Bestand"; +"lng_mac_menu_logout" = "Uitloggen"; +"lng_mac_menu_edit" = "Wijzig"; +"lng_mac_menu_undo" = "Herstel"; +"lng_mac_menu_redo" = "Opnieuw"; +"lng_mac_menu_cut" = "Knippen"; +"lng_mac_menu_copy" = "Kopiëren"; +"lng_mac_menu_paste" = "Plakken"; +"lng_mac_menu_delete" = "Verwijder"; +"lng_mac_menu_select_all" = "Alles selecteren"; +"lng_mac_menu_window" = "Venster"; +"lng_mac_menu_contacts" = "Contacten"; +"lng_mac_menu_add_contact" = "Contact toevoegen"; +"lng_mac_menu_new_group" = "Nieuwe groep"; +"lng_mac_menu_show" = "Telegram weergeven"; + +// Keys finished diff --git a/Telegram/SourceFiles/localimageloader.cpp b/Telegram/SourceFiles/localimageloader.cpp index d34425db0..62e058925 100644 --- a/Telegram/SourceFiles/localimageloader.cpp +++ b/Telegram/SourceFiles/localimageloader.cpp @@ -38,6 +38,7 @@ void LocalImageLoaderPrivate::prepareImages() { PeerId peer; uint64 id, jpeg_id = 0; ToPrepareMediaType type; + bool animated = false; bool ctrlShiftEnter = false; { QMutexLocker lock(loader->toPrepareMutex()); @@ -72,7 +73,7 @@ void LocalImageLoaderPrivate::prepareImages() { } } if (type != ToPrepareAuto && info.size() < MaxUploadPhotoSize) { - img = App::readImage(file); + img = App::readImage(file, 0, true, &animated); } if (type == ToPrepareDocument) { mime = QMimeDatabase().mimeTypeForFile(info).name(); @@ -80,7 +81,7 @@ void LocalImageLoaderPrivate::prepareImages() { filename = info.fileName(); filesize = info.size(); } else if (!data.isEmpty()) { - img = App::readImage(data); + img = App::readImage(data, 0, true, &animated); if (type == ToPrepareAuto) { if (!img.isNull() && data.size() < MaxUploadPhotoSize) { type = ToPreparePhoto; @@ -133,6 +134,8 @@ void LocalImageLoaderPrivate::prepareImages() { PreparedPhotoThumbs photoThumbs; QVector photoSizes; + QVector attributes(1, MTP_documentAttributeFilename(MTP_string(filename))); + MTPPhotoSize thumb(MTP_photoSizeEmpty(MTP_string(""))); MTPPhoto photo(MTP_photoEmpty(MTP_long(0))); MTPDocument document(MTP_documentEmpty(MTP_long(0))); @@ -141,15 +144,15 @@ void LocalImageLoaderPrivate::prepareImages() { if (type == ToPreparePhoto) { int32 w = img.width(), h = img.height(); - QPixmap thumb = (w > 100 || h > 100) ? QPixmap::fromImage(img.scaled(100, 100, Qt::KeepAspectRatio, Qt::SmoothTransformation)) : QPixmap::fromImage(img); + QPixmap thumb = (w > 100 || h > 100) ? QPixmap::fromImage(img.scaled(100, 100, Qt::KeepAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly) : QPixmap::fromImage(img); photoThumbs.insert('s', thumb); photoSizes.push_back(MTP_photoSize(MTP_string("s"), MTP_fileLocationUnavailable(MTP_long(0), MTP_int(0), MTP_long(0)), MTP_int(thumb.width()), MTP_int(thumb.height()), MTP_int(0))); - QPixmap medium = (w > 320 || h > 320) ? QPixmap::fromImage(img.scaled(320, 320, Qt::KeepAspectRatio, Qt::SmoothTransformation)) : QPixmap::fromImage(img); + QPixmap medium = (w > 320 || h > 320) ? QPixmap::fromImage(img.scaled(320, 320, Qt::KeepAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly) : QPixmap::fromImage(img); photoThumbs.insert('m', medium); photoSizes.push_back(MTP_photoSize(MTP_string("m"), MTP_fileLocationUnavailable(MTP_long(0), MTP_int(0), MTP_long(0)), MTP_int(medium.width()), MTP_int(medium.height()), MTP_int(0))); - QPixmap full = (w > 1280 || h > 1280) ? QPixmap::fromImage(img.scaled(1280, 1280, Qt::KeepAspectRatio, Qt::SmoothTransformation)) : QPixmap::fromImage(img); + QPixmap full = (w > 1280 || h > 1280) ? QPixmap::fromImage(img.scaled(1280, 1280, Qt::KeepAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly) : QPixmap::fromImage(img); photoThumbs.insert('y', full); photoSizes.push_back(MTP_photoSize(MTP_string("y"), MTP_fileLocationUnavailable(MTP_long(0), MTP_int(0), MTP_long(0)), MTP_int(full.width()), MTP_int(full.height()), MTP_int(0))); @@ -164,8 +167,10 @@ void LocalImageLoaderPrivate::prepareImages() { jpeg_id = id; } else if ((type == ToPrepareVideo || type == ToPrepareDocument) && !img.isNull()) { int32 w = img.width(), h = img.height(); + if (animated) attributes.push_back(MTP_documentAttributeAnimated()); + attributes.push_back(MTP_documentAttributeImageSize(MTP_int(w), MTP_int(h))); - QPixmap full = (w > 90 || h > 90) ? QPixmap::fromImage(img.scaled(90, 90, Qt::KeepAspectRatio, Qt::SmoothTransformation)) : QPixmap::fromImage(img); + QPixmap full = (w > 90 || h > 90) ? QPixmap::fromImage(img.scaled(90, 90, Qt::KeepAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly) : QPixmap::fromImage(img, Qt::ColorOnly); { QBuffer jpegBuffer(&jpeg); @@ -179,7 +184,7 @@ void LocalImageLoaderPrivate::prepareImages() { } if (type == ToPrepareDocument) { - document = MTP_document(MTP_long(id), MTP_long(0), MTP_int(MTP::authedId()), MTP_int(unixtime()), MTP_string(filename), MTP_string(mime), MTP_int(filesize), thumb, MTP_int(MTP::maindc())); + document = MTP_document(MTP_long(id), MTP_long(0), MTP_int(unixtime()), MTP_string(mime), MTP_int(filesize), thumb, MTP_int(MTP::maindc()), MTP_vector(attributes)); } { diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index 03addd333..023a7fa4d 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -29,10 +29,11 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org #include "audio.h" TopBarWidget::TopBarWidget(MainWidget *w) : TWidget(w), - a_over(0), _drawShadow(true), _selCount(0), _selStrWidth(0), _animating(false), + a_over(0), _drawShadow(true), _selCount(0), _selStrLeft(-st::topBarButton.width / 2), _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), + _selectionButtonsWidth(_clearSelection.width() + _forward.width() + _delete.width()), _forwardDeleteWidth(qMax(_forward.textWidth(), _delete.textWidth())), _info(this, lang(lng_topbar_info), st::topBarButton), _edit(this, lang(lng_profile_edit_contact), st::topBarButton), _leaveGroup(this, lang(lng_profile_delete_and_exit), st::topBarButton), @@ -170,7 +171,7 @@ void TopBarWidget::paintEvent(QPaintEvent *e) { } else { p.setFont(st::linkFont->f); p.setPen(st::btnDefLink.color->p); - p.drawText(st::topBarSelectedPos.x(), st::topBarSelectedPos.y() + st::linkFont->ascent, _selStr); + p.drawText(_selStrLeft, st::topBarButton.textTop + st::linkFont->ascent, _selStr); } } if (_drawShadow) { @@ -197,12 +198,51 @@ void TopBarWidget::mousePressEvent(QMouseEvent *e) { void TopBarWidget::resizeEvent(QResizeEvent *e) { int32 r = width(); if (!_forward.isHidden()) { - int32 availX = st::topBarSelectedPos.x() + _selStrWidth, availW = r - (_clearSelection.width() + st::topBarButton.width / 2) - availX; - _forward.move(availX + (availW - _forward.width() - _delete.width() - st::topBarActionSkip) / 2, (st::topBarHeight - _forward.height()) / 2); - _delete.move(availX + (availW + _forward.width() - _delete.width() + st::topBarActionSkip) / 2, (st::topBarHeight - _forward.height()) / 2); + int32 fullW = r - (_selectionButtonsWidth + (_selStrWidth - st::topBarButton.width) + st::topBarActionSkip); + int32 selectedClearWidth = st::topBarButton.width, forwardDeleteWidth = st::topBarActionButton.width - _forwardDeleteWidth, skip = st::topBarActionSkip; + while (fullW < 0) { + int fit = 0; + if (selectedClearWidth < -2 * (st::topBarMinPadding + 1)) { + fullW += 4; + selectedClearWidth += 2; + } else if (selectedClearWidth < -2 * st::topBarMinPadding) { + fullW += (-2 * st::topBarMinPadding - selectedClearWidth) * 2; + selectedClearWidth = -2 * st::topBarMinPadding; + } else { + ++fit; + } + if (fullW >= 0) break; + + if (forwardDeleteWidth > 2 * (st::topBarMinPadding + 1)) { + fullW += 4; + forwardDeleteWidth -= 2; + } else if (forwardDeleteWidth > 2 * st::topBarMinPadding) { + fullW += (forwardDeleteWidth - 2 * st::topBarMinPadding) * 2; + forwardDeleteWidth = 2 * st::topBarMinPadding; + } else { + ++fit; + } + if (fullW >= 0) break; + + if (skip > st::topBarMinPadding) { + --skip; + ++fullW; + } else { + ++fit; + } + if (fullW >= 0 || fit >= 3) break; + } + _clearSelection.setWidth(selectedClearWidth); + _forward.setWidth(_forwardDeleteWidth + forwardDeleteWidth); + _delete.setWidth(_forwardDeleteWidth + forwardDeleteWidth); + _selStrLeft = -selectedClearWidth / 2; + + int32 availX = _selStrLeft + _selStrWidth, availW = r - (_clearSelection.width() + selectedClearWidth / 2) - availX; + _forward.move(availX + (availW - _forward.width() - _delete.width() - skip) / 2, (st::topBarHeight - _forward.height()) / 2); + _delete.move(availX + (availW + _forward.width() - _delete.width() + skip) / 2, (st::topBarHeight - _forward.height()) / 2); + _clearSelection.move(r -= _clearSelection.width(), 0); } if (!_info.isHidden()) _info.move(r -= _info.width(), 0); - if (!_clearSelection.isHidden()) _clearSelection.move(r -= _clearSelection.width(), 0); if (!_deleteContact.isHidden()) _deleteContact.move(r -= _deleteContact.width(), 0); if (!_leaveGroup.isHidden()) _leaveGroup.move(r -= _leaveGroup.width(), 0); if (!_edit.isHidden()) _edit.move(r -= _edit.width(), 0); @@ -1070,7 +1110,7 @@ void MainWidget::documentLoadProgress(mtpFileLoader *loader) { if (reader.supportsAnimation() && reader.imageCount() > 1 && item) { startGif(item, already); } else { - App::wnd()->showDocument(document, QPixmap::fromImage(App::readImage(already, 0, false)), item); + App::wnd()->showDocument(document, QPixmap::fromImage(App::readImage(already, 0, false), Qt::ColorOnly), item); } } else { psOpenFile(already); @@ -2573,13 +2613,6 @@ void MainWidget::feedUpdate(const MTPUpdate &update) { user->photosCount = -1; user->photos.clear(); } - if (false && d.vuser_id.v != MTP::authedId() && d.vphoto.type() == mtpc_userProfilePhoto) { - MTPPhoto photo(App::photoFromUserPhoto(MTP_int(user->id & 0xFFFFFFFF), d.vdate, d.vphoto)); - HistoryMedia *media = new HistoryPhoto(photo.c_photo(), 100); - if (App::history(user->id)->loadedAtBottom()) { - App::history(user->id)->addToBackService(clientMsgId(), date(d.vdate), lng_action_user_photo(lt_from, user->name), false, true, media); - } - } } if (App::main()) App::main()->peerUpdated(user); if (App::wnd()) App::wnd()->mediaOverviewUpdated(user); diff --git a/Telegram/SourceFiles/mainwidget.h b/Telegram/SourceFiles/mainwidget.h index d6cb446e3..e8abb6a47 100644 --- a/Telegram/SourceFiles/mainwidget.h +++ b/Telegram/SourceFiles/mainwidget.h @@ -80,12 +80,14 @@ private: uint32 _selCount; QString _selStr; - int32 _selStrWidth; + int32 _selStrLeft, _selStrWidth; bool _animating; FlatButton _clearSelection; FlatButton _forward, _delete; + int32 _selectionButtonsWidth, _forwardDeleteWidth; + FlatButton _info; FlatButton _edit, _leaveGroup, _addContact, _deleteContact; FlatButton _mediaType; diff --git a/Telegram/SourceFiles/mediaview.cpp b/Telegram/SourceFiles/mediaview.cpp index 84dff89e7..638ef57d3 100644 --- a/Telegram/SourceFiles/mediaview.cpp +++ b/Telegram/SourceFiles/mediaview.cpp @@ -173,11 +173,11 @@ void MediaView::updateControls() { } QDateTime d(date(_photo ? _photo->date : _doc->date)), dNow(date(unixtime())); if (d.date() == dNow.date()) { - _dateText = lng_status_lastseen_today(lt_time, d.time().toString(qsl("hh:mm"))); + _dateText = lng_mediaview_today(lt_time, d.time().toString(qsl("hh:mm"))); } else if (d.date().addDays(1) == dNow.date()) { - _dateText = lng_status_lastseen_yesterday(lt_time, d.time().toString(qsl("hh:mm"))); + _dateText = lng_mediaview_yesterday(lt_time, d.time().toString(qsl("hh:mm"))); } else { - _dateText = lng_status_lastseen_date_time(lt_date, d.date().toString(qsl("dd.MM.yy")), lt_time, d.time().toString(qsl("hh:mm"))); + _dateText = lng_mediaview_date_time(lt_date, d.date().toString(qsl("dd.MM.yy")), lt_time, d.time().toString(qsl("hh:mm"))); } _fromName.setText(st::medviewNameFont, _from->name); updateHeader(); @@ -1194,23 +1194,6 @@ bool MediaView::event(QEvent *e) { return true; } } - } else if (e->type() == QEvent::Wheel) { - QWheelEvent *ev = static_cast(e); - if (ev->phase() == Qt::ScrollBegin) { - _accumScroll = ev->angleDelta(); - LOG(("Scrolling begin: %1 sum %2").arg(ev->angleDelta().x()).arg(_accumScroll.x())); - } else { - _accumScroll += ev->angleDelta(); - if (ev->phase() == Qt::ScrollEnd) { - LOG(("Scrolling end: %1 sum %2").arg(ev->angleDelta().x()).arg(_accumScroll.x())); - if (ev->orientation() == Qt::Horizontal) { - if (_accumScroll.x() * _accumScroll.x() > _accumScroll.y() * _accumScroll.y() && _accumScroll.x() != 0) { - moveToPhoto(_accumScroll.x() > 0 ? -1 : 1); - } - _accumScroll = QPoint(); - } - } - } } return QWidget::event(e); } diff --git a/Telegram/SourceFiles/mtproto/mtpCoreTypes.h b/Telegram/SourceFiles/mtproto/mtpCoreTypes.h index 4497c7037..9ab02bdc0 100644 --- a/Telegram/SourceFiles/mtproto/mtpCoreTypes.h +++ b/Telegram/SourceFiles/mtproto/mtpCoreTypes.h @@ -367,7 +367,7 @@ static const mtpTypeId mtpLayers[] = { mtpc_invokeWithLayer17, mtpc_invokeWithLayer18, }, mtpLayerMaxSingle = sizeof(mtpLayers) / sizeof(mtpLayers[0]); -static const mtpPrime mtpCurrentLayer = 20; +static const mtpPrime mtpCurrentLayer = 22; template class MTPBoxed : public bareT { diff --git a/Telegram/SourceFiles/mtproto/mtpScheme.cpp b/Telegram/SourceFiles/mtproto/mtpScheme.cpp index 75164f403..80227ab8a 100644 --- a/Telegram/SourceFiles/mtproto/mtpScheme.cpp +++ b/Telegram/SourceFiles/mtproto/mtpScheme.cpp @@ -51,174 +51,178 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP int32 lev = level + types.size() - 1; switch (type) { - case mtpc_documentEmpty: + case mtpc_inputPhoneContact: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ documentEmpty"); + to.add("{ inputPhoneContact"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" client_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" phone: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_document: + case mtpc_messages_dhConfigNotModified: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ document"); + to.add("{ messages_dhConfigNotModified"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" random: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_dhConfig: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_dhConfig"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" g: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" p: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" random: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_chatFull: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ chatFull"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" participants: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" chat_photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" notify_settings: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_peerUser: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ peerUser"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_peerChat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ peerChat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputFileLocation: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputFileLocation"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" volume_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" local_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" secret: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputVideoFileLocation: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputVideoFileLocation"); to.add("\n").addSpaces(lev); } switch (stage) { case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" file_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 7: to.add(" thumb: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 8: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_messages_messages: + case mtpc_inputEncryptedFileLocation: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messages_messages"); + to.add("{ inputEncryptedFileLocation"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_messages_messagesSlice: + case mtpc_inputAudioFileLocation: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messages_messagesSlice"); + to.add("{ inputAudioFileLocation"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_contact: + case mtpc_inputDocumentFileLocation: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ contact"); + to.add("{ inputDocumentFileLocation"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" mutual: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_contacts_blocked: + case mtpc_contacts_suggested: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ contacts_blocked"); + to.add("{ contacts_suggested"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" blocked: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" results: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_contacts_blockedSlice: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_blockedSlice"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" blocked: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_encryptedMessage: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ encryptedMessage"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_encryptedMessageService: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ encryptedMessageService"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_help_inviteText: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ help_inviteText"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contactStatus: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contactStatus"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" status: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - case mtpc_config: if (stage) { to.add(",\n").addSpaces(lev); @@ -237,171 +241,6 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_upload_file: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ upload_file"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" type: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" mtime: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contactFound: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contactFound"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_foreignLinkUnknown: - to.add("{ contacts_foreignLinkUnknown }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_contacts_foreignLinkRequested: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_foreignLinkRequested"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" has_phone: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_foreignLinkMutual: - to.add("{ contacts_foreignLinkMutual }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputFile: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputFile"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" parts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" md5_checksum: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputFileBig: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputFileBig"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" parts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_affectedHistory: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_affectedHistory"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_chatEmpty: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ chatEmpty"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_chat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ chat"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" participants_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" left: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_chatForbidden: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ chatForbidden"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geoChat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geoChat"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" address: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" venue: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" geo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 7: to.add(" participants_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 8: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 9: to.add(" checked_in: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 10: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - case mtpc_encryptedChatEmpty: if (stage) { to.add(",\n").addSpaces(lev); @@ -482,110 +321,205 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_contacts_link: + case mtpc_contacts_importedContacts: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ contacts_link"); + to.add("{ contacts_importedContacts"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" my_link: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" foreign_link: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" user: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_pong: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ pong"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" ping_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_chatFull: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_chatFull"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" full_chat: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" imported: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" retry_contacts: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_bad_msg_notification: + case mtpc_auth_checkedPhone: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ bad_msg_notification"); + to.add("{ auth_checkedPhone"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" bad_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" bad_msg_seqno: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" error_code: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" phone_registered: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" phone_invited: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_bad_server_salt: + case mtpc_geoPointEmpty: + to.add("{ geoPointEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_geoPoint: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ bad_server_salt"); + to.add("{ geoPoint"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" bad_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" bad_msg_seqno: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" error_code: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" new_server_salt: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" long: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" lat: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_geochats_located: + case mtpc_contacts_foreignLinkUnknown: + to.add("{ contacts_foreignLinkUnknown }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_contacts_foreignLinkRequested: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ geochats_located"); + to.add("{ contacts_foreignLinkRequested"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" results: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" has_phone: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_accountDaysTTL: + case mtpc_contacts_foreignLinkMutual: + to.add("{ contacts_foreignLinkMutual }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPhotoCropAuto: + to.add("{ inputPhotoCropAuto }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPhotoCrop: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ accountDaysTTL"); + to.add("{ inputPhotoCrop"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" days: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" crop_left: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" crop_top: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" crop_width: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; + case mtpc_resPQ: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ resPQ"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" pq: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" server_public_key_fingerprints: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_privacyKeyStatusTimestamp: + to.add("{ privacyKeyStatusTimestamp }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messageActionEmpty: + to.add("{ messageActionEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messageActionChatCreate: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageActionChatCreate"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageActionChatEditTitle: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageActionChatEditTitle"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageActionChatEditPhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageActionChatEditPhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageActionChatDeletePhoto: + to.add("{ messageActionChatDeletePhoto }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messageActionChatAddUser: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageActionChatAddUser"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageActionChatDeleteUser: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageActionChatDeleteUser"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageActionGeoChatCreate: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageActionGeoChatCreate"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" address: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageActionGeoChatCheckin: + to.add("{ messageActionGeoChatCheckin }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + case mtpc_inputMessagesFilterEmpty: to.add("{ inputMessagesFilterEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; @@ -610,14 +544,6 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP to.add("{ inputMessagesFilterAudio }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - case mtpc_peerNotifyEventsEmpty: - to.add("{ peerNotifyEventsEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_peerNotifyEventsAll: - to.add("{ peerNotifyEventsAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - case mtpc_p_q_inner_data: if (stage) { to.add(",\n").addSpaces(lev); @@ -636,195 +562,16 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_privacyValueAllowContacts: - to.add("{ privacyValueAllowContacts }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_privacyValueAllowAll: - to.add("{ privacyValueAllowAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_privacyValueAllowUsers: + case mtpc_photos_photo: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ privacyValueAllowUsers"); + to.add("{ photos_photo"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" users: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_privacyValueDisallowContacts: - to.add("{ privacyValueDisallowContacts }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_privacyValueDisallowAll: - to.add("{ privacyValueDisallowAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_privacyValueDisallowUsers: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ privacyValueDisallowUsers"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" users: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_server_DH_inner_data: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ server_DH_inner_data"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" g: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" dh_prime: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" g_a: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" server_time: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contactBlocked: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contactBlocked"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_destroy_session_ok: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ destroy_session_ok"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" session_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_destroy_session_none: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ destroy_session_none"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" session_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_chatFull: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ chatFull"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" participants: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" chat_photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" notify_settings: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_help_support: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ help_support"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" user: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_wallPaper: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ wallPaper"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" sizes: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" color: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_wallPaperSolid: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ wallPaperSolid"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" bg_color: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" color: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_msg_detailed_info: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ msg_detailed_info"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" answer_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" status: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_msg_new_detailed_info: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ msg_new_detailed_info"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" answer_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" status: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; @@ -1230,379 +977,156 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_auth_authorization: + case mtpc_help_appUpdate: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ auth_authorization"); + to.add("{ help_appUpdate"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" expires: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" user: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" critical: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" url: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" text: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_inputUserEmpty: - to.add("{ inputUserEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + case mtpc_help_noAppUpdate: + to.add("{ help_noAppUpdate }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - case mtpc_inputUserSelf: - to.add("{ inputUserSelf }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputUserContact: + case mtpc_geochats_located: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ inputUserContact"); + to.add("{ geochats_located"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" results: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_inputUserForeign: + case mtpc_videoEmpty: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ inputUserForeign"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputEncryptedFileEmpty: - to.add("{ inputEncryptedFileEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputEncryptedFileUploaded: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputEncryptedFileUploaded"); + to.add("{ videoEmpty"); to.add("\n").addSpaces(lev); } switch (stage) { case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" parts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" md5_checksum: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_inputEncryptedFile: + case mtpc_video: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ inputEncryptedFile"); + to.add("{ video"); to.add("\n").addSpaces(lev); } switch (stage) { case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" caption: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" duration: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 7: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 8: to.add(" thumb: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 9: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 10: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 11: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_inputEncryptedFileBigUploaded: + case mtpc_accountDaysTTL: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ inputEncryptedFileBigUploaded"); + to.add("{ accountDaysTTL"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" parts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" days: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_messages_statedMessage: + case mtpc_inputGeoPointEmpty: + to.add("{ inputGeoPointEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputGeoPoint: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messages_statedMessage"); + to.add("{ inputGeoPoint"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" message: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" lat: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" long: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_messages_statedMessageLink: + case mtpc_updates_differenceEmpty: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messages_statedMessageLink"); + to.add("{ updates_differenceEmpty"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" message: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" links: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_photos_photos: + case mtpc_updates_difference: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ photos_photos"); + to.add("{ updates_difference"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" photos: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" new_messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" new_encrypted_messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" other_updates: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" state: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_photos_photosSlice: + case mtpc_updates_differenceSlice: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ photos_photosSlice"); + to.add("{ updates_differenceSlice"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" photos: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_chat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_chat"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputFileLocation: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputFileLocation"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" volume_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" local_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" secret: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputVideoFileLocation: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputVideoFileLocation"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputEncryptedFileLocation: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputEncryptedFileLocation"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputAudioFileLocation: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputAudioFileLocation"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputDocumentFileLocation: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputDocumentFileLocation"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_notifyPeer: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ notifyPeer"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_notifyUsers: - to.add("{ notifyUsers }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_notifyChats: - to.add("{ notifyChats }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_notifyAll: - to.add("{ notifyAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_chatPhotoEmpty: - to.add("{ chatPhotoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_chatPhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ chatPhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" photo_small: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" photo_big: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_resPQ: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ resPQ"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" pq: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" server_public_key_fingerprints: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_auth_sentCode: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ auth_sentCode"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" phone_registered: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" phone_code_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" send_call_timeout: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" is_password: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_auth_sentAppCode: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ auth_sentAppCode"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" phone_registered: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" phone_code_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" send_call_timeout: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" is_password: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputAppEvent: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputAppEvent"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" time: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" peer: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" data: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_rpc_answer_unknown: - to.add("{ rpc_answer_unknown }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_rpc_answer_dropped_running: - to.add("{ rpc_answer_dropped_running }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_rpc_answer_dropped: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ rpc_answer_dropped"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" seq_no: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" new_messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" new_encrypted_messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" other_updates: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" intermediate_state: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; @@ -1625,393 +1149,25 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_dh_gen_ok: + case mtpc_messages_messageEmpty: + to.add("{ messages_messageEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messages_message: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ dh_gen_ok"); + to.add("{ messages_message"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" new_nonce_hash1: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" message: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_dh_gen_retry: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ dh_gen_retry"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" new_nonce_hash2: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_dh_gen_fail: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ dh_gen_fail"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" new_nonce_hash3: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_sentMessage: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sentMessage"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_sentMessageLink: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sentMessageLink"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" links: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_msgs_state_req: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ msgs_state_req"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" msg_ids: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_chatParticipantsForbidden: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ chatParticipantsForbidden"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_chatParticipants: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ chatParticipants"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" admin_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" participants: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_account_sentChangePhoneCode: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ account_sentChangePhoneCode"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" phone_code_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" send_call_timeout: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_audioEmpty: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ audioEmpty"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_audio: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ audio"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" duration: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 7: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_peerUser: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ peerUser"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_peerChat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ peerChat"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_dialogs: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_dialogs"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" dialogs: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_dialogsSlice: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_dialogsSlice"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" dialogs: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_myLinkEmpty: - to.add("{ contacts_myLinkEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_contacts_myLinkRequested: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_myLinkRequested"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" contact: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_myLinkContact: - to.add("{ contacts_myLinkContact }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputPhoneContact: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputPhoneContact"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" client_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" phone: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_msgs_all_info: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ msgs_all_info"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" msg_ids: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; - case 1: to.add(" info: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputPeerEmpty: - to.add("{ inputPeerEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputPeerSelf: - to.add("{ inputPeerSelf }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputPeerContact: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputPeerContact"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputPeerForeign: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputPeerForeign"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputPeerChat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputPeerChat"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_importedContact: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ importedContact"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" client_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_auth_checkedPhone: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ auth_checkedPhone"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" phone_registered: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" phone_invited: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_chats: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_chats"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_help_appUpdate: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ help_appUpdate"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" critical: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" url: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" text: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_help_noAppUpdate: - to.add("{ help_noAppUpdate }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - case mtpc_messages_sentEncryptedMessage: if (stage) { to.add(",\n").addSpaces(lev); @@ -2039,177 +1195,208 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_dialog: + case mtpc_chatPhotoEmpty: + to.add("{ chatPhotoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_chatPhoto: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ dialog"); + to.add("{ chatPhoto"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" top_message: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" unread_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" notify_settings: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" photo_small: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" photo_big: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_msgs_state_info: + case mtpc_server_DH_inner_data: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ msgs_state_info"); + to.add("{ server_DH_inner_data"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" req_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" info: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" g: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" dh_prime: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" g_a: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" server_time: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_contacts_suggested: + case mtpc_inputAudioEmpty: + to.add("{ inputAudioEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputAudio: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ contacts_suggested"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" results: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputPrivacyValueAllowContacts: - to.add("{ inputPrivacyValueAllowContacts }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputPrivacyValueAllowAll: - to.add("{ inputPrivacyValueAllowAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputPrivacyValueAllowUsers: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputPrivacyValueAllowUsers"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputPrivacyValueDisallowContacts: - to.add("{ inputPrivacyValueDisallowContacts }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputPrivacyValueDisallowAll: - to.add("{ inputPrivacyValueDisallowAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputPrivacyValueDisallowUsers: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputPrivacyValueDisallowUsers"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_encryptedFileEmpty: - to.add("{ encryptedFileEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_encryptedFile: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ encryptedFile"); + to.add("{ inputAudio"); to.add("\n").addSpaces(lev); } switch (stage) { case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_inputChatPhotoEmpty: - to.add("{ inputChatPhotoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputChatUploadedPhoto: + case mtpc_upload_file: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ inputChatUploadedPhoto"); + to.add("{ upload_file"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" crop: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" type: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" mtime: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_inputChatPhoto: + case mtpc_documentAttributeImageSize: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ inputChatPhoto"); + to.add("{ documentAttributeImageSize"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" crop: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_photoEmpty: + case mtpc_documentAttributeAnimated: + to.add("{ documentAttributeAnimated }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_documentAttributeSticker: + to.add("{ documentAttributeSticker }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_documentAttributeVideo: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ photoEmpty"); + to.add("{ documentAttributeVideo"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" duration: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_photo: + case mtpc_documentAttributeAudio: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ photo"); + to.add("{ documentAttributeAudio"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" caption: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" geo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" sizes: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" duration: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; + case mtpc_documentAttributeFilename: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ documentAttributeFilename"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" file_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_rpc_error: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ rpc_error"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" error_code: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" error_message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geochats_statedMessage: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geochats_statedMessage"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" message: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_storage_fileUnknown: + to.add("{ storage_fileUnknown }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_fileJpeg: + to.add("{ storage_fileJpeg }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_fileGif: + to.add("{ storage_fileGif }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_filePng: + to.add("{ storage_filePng }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_filePdf: + to.add("{ storage_filePdf }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_fileMp3: + to.add("{ storage_fileMp3 }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_fileMov: + to.add("{ storage_fileMov }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_filePartial: + to.add("{ storage_filePartial }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_fileMp4: + to.add("{ storage_fileMp4 }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_storage_fileWebp: + to.add("{ storage_fileWebp }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + case mtpc_messageEmpty: if (stage) { to.add(",\n").addSpaces(lev); @@ -2281,128 +1468,253 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_privacyKeyStatusTimestamp: - to.add("{ privacyKeyStatusTimestamp }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputNotifyPeer: + case mtpc_msg_resend_req: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ inputNotifyPeer"); + to.add("{ msg_resend_req"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" msg_ids: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_inputNotifyUsers: - to.add("{ inputNotifyUsers }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputNotifyChats: - to.add("{ inputNotifyChats }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputNotifyAll: - to.add("{ inputNotifyAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputNotifyGeoChatPeer: + case mtpc_msg_detailed_info: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ inputNotifyGeoChatPeer"); + to.add("{ msg_detailed_info"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" answer_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" status: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_updates_state: + case mtpc_msg_new_detailed_info: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ updates_state"); + to.add("{ msg_new_detailed_info"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" qts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" answer_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" status: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageMediaEmpty: + to.add("{ messageMediaEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messageMediaPhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageMediaPhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageMediaVideo: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageMediaVideo"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" video: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageMediaGeo: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageMediaGeo"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" geo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageMediaContact: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageMediaContact"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageMediaUnsupported: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageMediaUnsupported"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageMediaDocument: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageMediaDocument"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" document: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messageMediaAudio: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageMediaAudio"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" audio: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_documentEmpty: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ documentEmpty"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_document: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ document"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" unread_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" thumb: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 7: to.add(" attributes: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_inputPeerNotifyEventsEmpty: - to.add("{ inputPeerNotifyEventsEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputPeerNotifyEventsAll: - to.add("{ inputPeerNotifyEventsAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_auth_exportedAuthorization: + case mtpc_inputFile: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ auth_exportedAuthorization"); + to.add("{ inputFile"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" parts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" md5_checksum: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_geochats_messages: + case mtpc_inputFileBig: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ geochats_messages"); + to.add("{ inputFileBig"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" parts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_geochats_messagesSlice: + case mtpc_inputChatPhotoEmpty: + to.add("{ inputChatPhotoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputChatUploadedPhoto: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ geochats_messagesSlice"); + to.add("{ inputChatUploadedPhoto"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" crop: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_contacts_found: + case mtpc_inputChatPhoto: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ contacts_found"); + to.add("{ inputChatPhoto"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" results: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" crop: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_msgs_state_req: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ msgs_state_req"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" msg_ids: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; @@ -2449,6 +1761,590 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP to.add("{ userStatusLastMonth }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + case mtpc_notifyPeer: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ notifyPeer"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_notifyUsers: + to.add("{ notifyUsers }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_notifyChats: + to.add("{ notifyChats }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_notifyAll: + to.add("{ notifyAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_bad_msg_notification: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ bad_msg_notification"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" bad_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" bad_msg_seqno: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" error_code: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_bad_server_salt: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ bad_server_salt"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" bad_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" bad_msg_seqno: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" error_code: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" new_server_salt: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_dh_gen_ok: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ dh_gen_ok"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" new_nonce_hash1: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_dh_gen_retry: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ dh_gen_retry"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" new_nonce_hash2: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_dh_gen_fail: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ dh_gen_fail"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" new_nonce_hash3: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputPeerNotifyEventsEmpty: + to.add("{ inputPeerNotifyEventsEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPeerNotifyEventsAll: + to.add("{ inputPeerNotifyEventsAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputUserEmpty: + to.add("{ inputUserEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputUserSelf: + to.add("{ inputUserSelf }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputUserContact: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputUserContact"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputUserForeign: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputUserForeign"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputPeerEmpty: + to.add("{ inputPeerEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPeerSelf: + to.add("{ inputPeerSelf }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPeerContact: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputPeerContact"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputPeerForeign: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputPeerForeign"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputPeerChat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputPeerChat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_chats: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_chats"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_account_privacyRules: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ account_privacyRules"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" rules: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_destroy_session_ok: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ destroy_session_ok"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" session_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_destroy_session_none: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ destroy_session_none"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" session_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_userFull: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ userFull"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" link: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" profile_photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" notify_settings: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" blocked: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" real_first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" real_last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_help_support: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ help_support"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" user: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_found: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_found"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" results: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contactBlocked: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contactBlocked"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_msgs_ack: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ msgs_ack"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" msg_ids: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_fileLocationUnavailable: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ fileLocationUnavailable"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" volume_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" local_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" secret: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_fileLocation: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ fileLocation"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" volume_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" local_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" secret: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputPeerNotifySettings: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputPeerNotifySettings"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" mute_until: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" sound: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" show_previews: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" events_mask: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputGeoChat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputGeoChat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputEncryptedFileEmpty: + to.add("{ inputEncryptedFileEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputEncryptedFileUploaded: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputEncryptedFileUploaded"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" parts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" md5_checksum: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputEncryptedFile: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputEncryptedFile"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputEncryptedFileBigUploaded: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputEncryptedFileBigUploaded"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" parts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_peerNotifySettingsEmpty: + to.add("{ peerNotifySettingsEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_peerNotifySettings: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ peerNotifySettings"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" mute_until: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" sound: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" show_previews: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" events_mask: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_link: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_link"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" my_link: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" foreign_link: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" user: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_sentMessage: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_sentMessage"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_sentMessageLink: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_sentMessageLink"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" links: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputDocumentEmpty: + to.add("{ inputDocumentEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputDocument: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputDocument"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_chatLocated: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ chatLocated"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" distance: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputNotifyPeer: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputNotifyPeer"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputNotifyUsers: + to.add("{ inputNotifyUsers }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputNotifyChats: + to.add("{ inputNotifyChats }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputNotifyAll: + to.add("{ inputNotifyAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputNotifyGeoChatPeer: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputNotifyGeoChatPeer"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_client_DH_inner_data: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ client_DH_inner_data"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" retry_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" g_b: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + case mtpc_inputMediaEmpty: to.add("{ inputMediaEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; @@ -2592,8 +2488,8 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } switch (stage) { case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" file_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" attributes: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; @@ -2608,8 +2504,8 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP switch (stage) { case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; case 1: to.add(" thumb: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" file_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" attributes: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; @@ -2627,36 +2523,96 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_peerNotifySettingsEmpty: - to.add("{ peerNotifySettingsEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_peerNotifySettings: + case mtpc_msgs_state_info: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ peerNotifySettings"); + to.add("{ msgs_state_info"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" mute_until: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" sound: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" show_previews: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" events_mask: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" req_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" info: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_account_privacyRules: + case mtpc_chatParticipantsForbidden: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ account_privacyRules"); + to.add("{ chatParticipantsForbidden"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" rules: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_chatParticipants: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ chatParticipants"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" admin_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" participants: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contactStatus: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contactStatus"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" status: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_rpc_answer_unknown: + to.add("{ rpc_answer_unknown }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_rpc_answer_dropped_running: + to.add("{ rpc_answer_dropped_running }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_rpc_answer_dropped: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ rpc_answer_dropped"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" seq_no: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_msgs_all_info: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ msgs_all_info"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" msg_ids: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; + case 1: to.add(" info: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; @@ -2675,419 +2631,194 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_geoPointEmpty: - to.add("{ geoPointEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_geoPoint: + case mtpc_http_wait: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ geoPoint"); + to.add("{ http_wait"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" long: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" lat: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" max_delay: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" wait_after: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" max_wait: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_inputEncryptedChat: + case mtpc_auth_exportedAuthorization: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ inputEncryptedChat"); + to.add("{ auth_exportedAuthorization"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_inputPeerNotifySettings: + case mtpc_messages_messages: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ inputPeerNotifySettings"); + to.add("{ messages_messages"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" mute_until: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" sound: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" show_previews: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" events_mask: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_messageEmpty: - to.add("{ messages_messageEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_messages_message: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_message"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" message: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_photoSizeEmpty: + case mtpc_messages_messagesSlice: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ photoSizeEmpty"); + to.add("{ messages_messagesSlice"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_photoSize: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ photoSize"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" location: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } + case mtpc_inputPrivacyKeyStatusTimestamp: + to.add("{ inputPrivacyKeyStatusTimestamp }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - case mtpc_photoCachedSize: + case mtpc_contacts_blocked: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ photoCachedSize"); + to.add("{ contacts_blocked"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" location: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_nearestDc: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ nearestDc"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" country: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" this_dc: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" nearest_dc: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geoChatMessageEmpty: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geoChatMessageEmpty"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geoChatMessage: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geoChatMessage"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" from_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" media: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geoChatMessageService: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geoChatMessageService"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" from_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" action: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_photos_photo: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ photos_photo"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" blocked: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_inputGeoPointEmpty: - to.add("{ inputGeoPointEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputGeoPoint: + case mtpc_contacts_blockedSlice: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ inputGeoPoint"); + to.add("{ contacts_blockedSlice"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" lat: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" long: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" blocked: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_messageMediaEmpty: - to.add("{ messageMediaEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + case mtpc_inputPrivacyValueAllowContacts: + to.add("{ inputPrivacyValueAllowContacts }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - case mtpc_messageMediaPhoto: + case mtpc_inputPrivacyValueAllowAll: + to.add("{ inputPrivacyValueAllowAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPrivacyValueAllowUsers: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messageMediaPhoto"); + to.add("{ inputPrivacyValueAllowUsers"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_messageMediaVideo: + case mtpc_inputPrivacyValueDisallowContacts: + to.add("{ inputPrivacyValueDisallowContacts }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPrivacyValueDisallowAll: + to.add("{ inputPrivacyValueDisallowAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPrivacyValueDisallowUsers: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messageMediaVideo"); + to.add("{ inputPrivacyValueDisallowUsers"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" video: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_messageMediaGeo: + case mtpc_contact: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messageMediaGeo"); + to.add("{ contact"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" geo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" mutual: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_messageMediaContact: + case mtpc_peerNotifyEventsEmpty: + to.add("{ peerNotifyEventsEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_peerNotifyEventsAll: + to.add("{ peerNotifyEventsAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messages_statedMessage: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messageMediaContact"); + to.add("{ messages_statedMessage"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" message: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_messageMediaUnsupported: + case mtpc_messages_statedMessageLink: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messageMediaUnsupported"); + to.add("{ messages_statedMessageLink"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageMediaDocument: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageMediaDocument"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" document: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageMediaAudio: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageMediaAudio"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" audio: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_client_DH_inner_data: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ client_DH_inner_data"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" retry_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" g_b: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_server_DH_params_fail: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ server_DH_params_fail"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" new_nonce_hash: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_server_DH_params_ok: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ server_DH_params_ok"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" encrypted_answer: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputDocumentEmpty: - to.add("{ inputDocumentEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputDocument: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputDocument"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_msgs_ack: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ msgs_ack"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" msg_ids: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_rpc_error: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ rpc_error"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" error_code: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" error_message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputPhotoEmpty: - to.add("{ inputPhotoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputPhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputPhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" message: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" links: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; @@ -3108,6 +2839,212 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; + case mtpc_account_sentChangePhoneCode: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ account_sentChangePhoneCode"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_code_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" send_call_timeout: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_importedContact: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ importedContact"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" client_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_chatEmpty: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ chatEmpty"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_chat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ chat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" participants_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" left: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_chatForbidden: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ chatForbidden"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geoChat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geoChat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" address: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" venue: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" geo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 7: to.add(" participants_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 8: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 9: to.add(" checked_in: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 10: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_future_salts: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ future_salts"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" req_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" now: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" salts: "); ++stages.back(); types.push_back(mtpc_vector); vtypes.push_back(mtpc_future_salt); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_new_session_created: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ new_session_created"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" first_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" unique_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" server_salt: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_auth_sentCode: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ auth_sentCode"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_registered: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" phone_code_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" send_call_timeout: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" is_password: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_auth_sentAppCode: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ auth_sentAppCode"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_registered: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" phone_code_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" send_call_timeout: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" is_password: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_auth_authorization: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ auth_authorization"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" expires: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" user: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_wallPaper: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ wallPaper"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" sizes: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" color: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_wallPaperSolid: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ wallPaperSolid"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" bg_color: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" color: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + case mtpc_userEmpty: if (stage) { to.add(",\n").addSpaces(lev); @@ -3216,214 +3153,110 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_http_wait: + case mtpc_geoChatMessageEmpty: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ http_wait"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" max_delay: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" wait_after: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" max_wait: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputPhotoCropAuto: - to.add("{ inputPhotoCropAuto }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputPhotoCrop: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputPhotoCrop"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" crop_left: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" crop_top: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" crop_width: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputGeoChat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputGeoChat"); + to.add("{ geoChatMessageEmpty"); to.add("\n").addSpaces(lev); } switch (stage) { case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_inputPrivacyKeyStatusTimestamp: - to.add("{ inputPrivacyKeyStatusTimestamp }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_fileUnknown: - to.add("{ storage_fileUnknown }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_fileJpeg: - to.add("{ storage_fileJpeg }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_fileGif: - to.add("{ storage_fileGif }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_filePng: - to.add("{ storage_filePng }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_filePdf: - to.add("{ storage_filePdf }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_fileMp3: - to.add("{ storage_fileMp3 }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_fileMov: - to.add("{ storage_fileMov }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_filePartial: - to.add("{ storage_filePartial }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_fileMp4: - to.add("{ storage_fileMp4 }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_storage_fileWebp: - to.add("{ storage_fileWebp }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_future_salt: + case mtpc_geoChatMessage: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ future_salt"); + to.add("{ geoChatMessage"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" valid_since: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" valid_until: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" salt: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_updates_differenceEmpty: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ updates_differenceEmpty"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_updates_difference: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ updates_difference"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" new_messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" new_encrypted_messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" other_updates: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" state: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_updates_differenceSlice: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ updates_differenceSlice"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" new_messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" new_encrypted_messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" other_updates: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" intermediate_state: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_videoEmpty: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ videoEmpty"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_video: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ video"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" from_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" caption: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" duration: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 7: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 8: to.add(" thumb: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 9: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 10: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 11: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" media: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_chatLocated: + case mtpc_geoChatMessageService: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ chatLocated"); + to.add("{ geoChatMessageService"); to.add("\n").addSpaces(lev); } switch (stage) { case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" distance: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" from_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" action: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; + case mtpc_encryptedFileEmpty: + to.add("{ encryptedFileEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_encryptedFile: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ encryptedFile"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contactFound: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contactFound"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_myLinkEmpty: + to.add("{ contacts_myLinkEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_contacts_myLinkRequested: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_myLinkRequested"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" contact: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_myLinkContact: + to.add("{ contacts_myLinkContact }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + case mtpc_messages_statedMessages: if (stage) { to.add(",\n").addSpaces(lev); @@ -3459,6 +3292,456 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; + case mtpc_messages_dialogs: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_dialogs"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" dialogs: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_dialogsSlice: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_dialogsSlice"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" dialogs: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputEncryptedChat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputEncryptedChat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_contactsNotModified: + to.add("{ contacts_contactsNotModified }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_contacts_contacts: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_contacts"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" contacts: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_userProfilePhotoEmpty: + to.add("{ userProfilePhotoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_userProfilePhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ userProfilePhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" photo_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" photo_small: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" photo_big: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_help_inviteText: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ help_inviteText"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_future_salt: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ future_salt"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" valid_since: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" valid_until: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" salt: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_encryptedMessage: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ encryptedMessage"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_encryptedMessageService: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ encryptedMessageService"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_chat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_chat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geochats_messages: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geochats_messages"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geochats_messagesSlice: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geochats_messagesSlice"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" messages: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_audioEmpty: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ audioEmpty"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_audio: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ audio"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" duration: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" mime_type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 7: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputAppEvent: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputAppEvent"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" time: "); ++stages.back(); types.push_back(mtpc_double); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" peer: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" data: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_inputPhotoEmpty: + to.add("{ inputPhotoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_inputPhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ inputPhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_server_DH_params_fail: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ server_DH_params_fail"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" new_nonce_hash: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_server_DH_params_ok: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ server_DH_params_ok"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" encrypted_answer: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_sendMessageTypingAction: + to.add("{ sendMessageTypingAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_sendMessageCancelAction: + to.add("{ sendMessageCancelAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_sendMessageRecordVideoAction: + to.add("{ sendMessageRecordVideoAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_sendMessageUploadVideoAction: + to.add("{ sendMessageUploadVideoAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_sendMessageRecordAudioAction: + to.add("{ sendMessageRecordAudioAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_sendMessageUploadAudioAction: + to.add("{ sendMessageUploadAudioAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_sendMessageUploadPhotoAction: + to.add("{ sendMessageUploadPhotoAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_sendMessageUploadDocumentAction: + to.add("{ sendMessageUploadDocumentAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_sendMessageGeoLocationAction: + to.add("{ sendMessageGeoLocationAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_sendMessageChooseContactAction: + to.add("{ sendMessageChooseContactAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_pong: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ pong"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" ping_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_affectedHistory: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_affectedHistory"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_photoEmpty: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photoEmpty"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_photo: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photo"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" caption: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" geo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 6: to.add(" sizes: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_nearestDc: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ nearestDc"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" country: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" this_dc: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" nearest_dc: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_photoSizeEmpty: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photoSizeEmpty"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_photoSize: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photoSize"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" location: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" size: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_photoCachedSize: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photoCachedSize"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" type: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" location: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" w: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" h: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + case mtpc_chatParticipant: if (stage) { to.add(",\n").addSpaces(lev); @@ -3474,33 +3757,121 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_fileLocationUnavailable: + case mtpc_updates_state: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ fileLocationUnavailable"); + to.add("{ updates_state"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" volume_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" local_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" secret: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" qts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" unread_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_fileLocation: + case mtpc_photos_photos: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ fileLocation"); + to.add("{ photos_photos"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" volume_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" local_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" secret: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" photos: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_photos_photosSlice: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photos_photosSlice"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" photos: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_chatFull: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_chatFull"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" full_chat: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_dialog: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ dialog"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" top_message: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" unread_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" notify_settings: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_privacyValueAllowContacts: + to.add("{ privacyValueAllowContacts }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_privacyValueAllowAll: + to.add("{ privacyValueAllowAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_privacyValueAllowUsers: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ privacyValueAllowUsers"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" users: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_privacyValueDisallowContacts: + to.add("{ privacyValueDisallowContacts }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_privacyValueDisallowAll: + to.add("{ privacyValueDisallowAll }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_privacyValueDisallowUsers: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ privacyValueDisallowUsers"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" users: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; @@ -3595,326 +3966,22 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_geochats_statedMessage: + case mtpc_messages_getDhConfig: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ geochats_statedMessage"); + to.add("{ messages_getDhConfig"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" message: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" chats: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" seq: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" random_length: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_future_salts: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ future_salts"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" req_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" now: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" salts: "); ++stages.back(); types.push_back(mtpc_vector); vtypes.push_back(mtpc_future_salt); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_sendMessageTypingAction: - to.add("{ sendMessageTypingAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_sendMessageCancelAction: - to.add("{ sendMessageCancelAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_sendMessageRecordVideoAction: - to.add("{ sendMessageRecordVideoAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_sendMessageUploadVideoAction: - to.add("{ sendMessageUploadVideoAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_sendMessageRecordAudioAction: - to.add("{ sendMessageRecordAudioAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_sendMessageUploadAudioAction: - to.add("{ sendMessageUploadAudioAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_sendMessageUploadPhotoAction: - to.add("{ sendMessageUploadPhotoAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_sendMessageUploadDocumentAction: - to.add("{ sendMessageUploadDocumentAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_sendMessageGeoLocationAction: - to.add("{ sendMessageGeoLocationAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_sendMessageChooseContactAction: - to.add("{ sendMessageChooseContactAction }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_contacts_contacts: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_contacts"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" contacts: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_contactsNotModified: - to.add("{ contacts_contactsNotModified }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_userFull: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ userFull"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" link: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" profile_photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" notify_settings: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" blocked: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" real_first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 6: to.add(" real_last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_importedContacts: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_importedContacts"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" imported: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" retry_contacts: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; - case 2: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_msg_resend_req: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ msg_resend_req"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" msg_ids: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_long); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_userProfilePhotoEmpty: - to.add("{ userProfilePhotoEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_userProfilePhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ userProfilePhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" photo_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" photo_small: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" photo_big: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_inputAudioEmpty: - to.add("{ inputAudioEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_inputAudio: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ inputAudio"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" access_hash: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageActionEmpty: - to.add("{ messageActionEmpty }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_messageActionChatCreate: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageActionChatCreate"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" users: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageActionChatEditTitle: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageActionChatEditTitle"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageActionChatEditPhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageActionChatEditPhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageActionChatDeletePhoto: - to.add("{ messageActionChatDeletePhoto }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_messageActionChatAddUser: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageActionChatAddUser"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageActionChatDeleteUser: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageActionChatDeleteUser"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageActionGeoChatCreate: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messageActionGeoChatCreate"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" address: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messageActionGeoChatCheckin: - to.add("{ messageActionGeoChatCheckin }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_messages_dhConfigNotModified: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_dhConfigNotModified"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" random: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_dhConfig: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_dhConfig"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" g: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" p: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" random: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_new_session_created: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ new_session_created"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" first_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" unique_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" server_salt: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_destroy_session: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ destroy_session"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" session_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } + case mtpc_account_getAccountTTL: + to.add("{ account_getAccountTTL }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; case mtpc_contacts_getSuggested: @@ -3930,6 +3997,125 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; + case mtpc_help_getConfig: + to.add("{ help_getConfig }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messages_requestEncryption: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_requestEncryption"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" user_id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" g_a: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_acceptEncryption: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_acceptEncryption"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" g_b: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_rpc_drop_answer: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ rpc_drop_answer"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" req_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_importContacts: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_importContacts"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" contacts: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" replace: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_deleteContact: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_deleteContact"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_auth_sendCode: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ auth_sendCode"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" sms_type: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" api_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" api_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" lang_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_sendMessage: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_sendMessage"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_auth_exportAuthorization: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ auth_exportAuthorization"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + case mtpc_messages_getMessages: if (stage) { to.add(",\n").addSpaces(lev); @@ -3979,19 +4165,6 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_contacts_deleteContact: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_deleteContact"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - case mtpc_contacts_getBlocked: if (stage) { to.add(",\n").addSpaces(lev); @@ -4006,25 +4179,538 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_help_getInviteText: + case mtpc_req_pq: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ help_getInviteText"); + to.add("{ req_pq"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" lang_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_help_getConfig: - to.add("{ help_getConfig }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + case mtpc_updates_getDifference: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ updates_getDifference"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" qts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } break; - case mtpc_help_getSupport: - to.add("{ help_getSupport }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + case mtpc_account_getNotifySettings: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ account_getNotifySettings"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_sendMedia: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_sendMedia"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" media: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_editChatTitle: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_editChatTitle"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_editChatPhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_editChatPhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_addChatUser: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_addChatUser"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" user_id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" fwd_limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_deleteChatUser: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_deleteChatUser"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" user_id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_createChat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_createChat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_forwardMessage: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_forwardMessage"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_getStatuses: + to.add("{ contacts_getStatuses }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_photos_uploadProfilePhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photos_uploadProfilePhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" caption: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" geo_point: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" crop: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_readHistory: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_readHistory"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" read_contents: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_deleteHistory: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_deleteHistory"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_help_getAppUpdate: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ help_getAppUpdate"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" device_model: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" system_version: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" app_version: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" lang_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geochats_getLocated: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geochats_getLocated"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" geo_point: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" radius: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_get_future_salts: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ get_future_salts"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" num: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_auth_checkPhone: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ auth_checkPhone"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_auth_signUp: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ auth_signUp"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" phone_code_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" phone_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_auth_signIn: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ auth_signIn"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" phone_code_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" phone_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_auth_importAuthorization: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ auth_importAuthorization"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_photos_deletePhotos: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photos_deletePhotos"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_receivedQueue: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_receivedQueue"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" max_qts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_account_updateProfile: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ account_updateProfile"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_importCard: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_importCard"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" export_card: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_account_updateUsername: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ account_updateUsername"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" username: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_resolveUsername: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_resolveUsername"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" username: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_account_changePhone: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ account_changePhone"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" phone_code_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" phone_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_sendEncrypted: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_sendEncrypted"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" data: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_sendEncryptedFile: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_sendEncryptedFile"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" data: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_sendEncryptedService: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_sendEncryptedService"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" data: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_upload_getFile: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ upload_getFile"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" location: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_getDialogs: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_getDialogs"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_exportCard: + to.add("{ contacts_exportCard }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messages_deleteMessages: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_deleteMessages"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_restoreMessages: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_restoreMessages"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_receivedMessages: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_receivedMessages"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_readMessageContents: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_readMessageContents"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_contacts_getContacts: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_getContacts"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } break; case mtpc_geochats_checkin: @@ -4115,188 +4801,53 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_messages_readHistory: + case mtpc_photos_getUserPhotos: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ messages_readHistory"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" read_contents: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_deleteHistory: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_deleteHistory"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_requestEncryption: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_requestEncryption"); + to.add("{ photos_getUserPhotos"); to.add("\n").addSpaces(lev); } switch (stage) { case 0: to.add(" user_id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" g_a: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_acceptEncryption: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_acceptEncryption"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" g_b: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" key_fingerprint: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_auth_exportAuthorization: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ auth_exportAuthorization"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" dc_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_ping: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ ping"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" ping_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_ping_delay_disconnect: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ ping_delay_disconnect"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" ping_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" disconnect_delay: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_getFullChat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_getFullChat"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_geochats_getFullChat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ geochats_getFullChat"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_search: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_search"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" q: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_account_getNotifySettings: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ account_getNotifySettings"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_getDhConfig: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_getDhConfig"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" random_length: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_upload_getFile: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ upload_getFile"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" location: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; case 1: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; + case mtpc_photos_updateProfilePhoto: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ photos_updateProfilePhoto"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" crop: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_help_getInviteText: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ help_getInviteText"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" lang_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_help_getNearestDc: + to.add("{ help_getNearestDc }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + case mtpc_geochats_getRecents: if (stage) { to.add(",\n").addSpaces(lev); @@ -4347,52 +4898,21 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_geochats_getLocated: + case mtpc_set_client_DH_params: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ geochats_getLocated"); + to.add("{ set_client_DH_params"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" geo_point: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" radius: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" encrypted_data: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_account_getPrivacy: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ account_getPrivacy"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" key: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_account_setPrivacy: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ account_setPrivacy"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" key: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" rules: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_help_getNearestDc: - to.add("{ help_getNearestDc }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - case mtpc_invokeAfterMsg: if (stage) { to.add(",\n").addSpaces(lev); @@ -4439,45 +4959,144 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_users_getUsers: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ users_getUsers"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - case mtpc_account_getWallPapers: to.add("{ account_getWallPapers }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - case mtpc_rpc_drop_answer: + case mtpc_users_getFullUser: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ rpc_drop_answer"); + to.add("{ users_getFullUser"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" req_msg_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; - case mtpc_contacts_getStatuses: - to.add("{ contacts_getStatuses }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_auth_checkPhone: + case mtpc_req_DH_params: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ auth_checkPhone"); + to.add("{ req_DH_params"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" p: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 3: to.add(" q: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 4: to.add(" public_key_fingerprint: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 5: to.add(" encrypted_data: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_account_getPrivacy: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ account_getPrivacy"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" key: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_account_setPrivacy: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ account_setPrivacy"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" key: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" rules: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_destroy_session: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ destroy_session"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" session_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_getChats: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_getChats"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_help_getSupport: + to.add("{ help_getSupport }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_contacts_search: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ contacts_search"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" q: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_ping: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ ping"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" ping_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_ping_delay_disconnect: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ ping_delay_disconnect"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" ping_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" disconnect_delay: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_account_sendChangePhoneCode: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ account_sendChangePhoneCode"); to.add("\n").addSpaces(lev); } switch (stage) { @@ -4486,6 +5105,65 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; + case mtpc_messages_forwardMessages: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_forwardMessages"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_messages_sendBroadcast: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_sendBroadcast"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" contacts: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; + case 1: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; + case 2: to.add(" media: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_updates_getState: + to.add("{ updates_getState }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); + break; + + case mtpc_messages_getFullChat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_getFullChat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + + case mtpc_geochats_getFullChat: + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ geochats_getFullChat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; + } + break; + case mtpc_register_saveDeveloperInfo: if (stage) { to.add(",\n").addSpaces(lev); @@ -4824,618 +5502,15 @@ void mtpTextSerializeType(MTPStringLogger &to, const mtpPrime *&from, const mtpP } break; - case mtpc_updates_getState: - to.add("{ updates_getState }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_auth_signUp: + case mtpc_users_getUsers: if (stage) { to.add(",\n").addSpaces(lev); } else { - to.add("{ auth_signUp"); + to.add("{ users_getUsers"); to.add("\n").addSpaces(lev); } switch (stage) { - case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" phone_code_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" phone_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_auth_signIn: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ auth_signIn"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" phone_code_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" phone_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_auth_importAuthorization: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ auth_importAuthorization"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" bytes: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_sendMedia: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sendMedia"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" media: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_editChatTitle: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_editChatTitle"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_editChatPhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_editChatPhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_addChatUser: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_addChatUser"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" user_id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" fwd_limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_deleteChatUser: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_deleteChatUser"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" user_id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_createChat: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_createChat"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" users: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_forwardMessage: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_forwardMessage"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_req_DH_params: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ req_DH_params"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" p: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" q: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" public_key_fingerprint: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 5: to.add(" encrypted_data: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_set_client_DH_params: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ set_client_DH_params"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" server_nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" encrypted_data: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_account_updateProfile: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ account_updateProfile"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" first_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" last_name: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_importCard: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_importCard"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" export_card: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_account_updateUsername: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ account_updateUsername"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" username: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_resolveUsername: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_resolveUsername"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" username: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_account_changePhone: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ account_changePhone"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" phone_code_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" phone_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_photos_uploadProfilePhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ photos_uploadProfilePhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" caption: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" geo_point: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" crop: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_users_getFullUser: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ users_getFullUser"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_updates_getDifference: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ updates_getDifference"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" pts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" qts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_req_pq: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ req_pq"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" nonce: "); ++stages.back(); types.push_back(mtpc_int128); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_auth_sendCode: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ auth_sendCode"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" sms_type: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" api_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" api_hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 4: to.add(" lang_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_account_getAccountTTL: - to.add("{ account_getAccountTTL }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_messages_forwardMessages: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_forwardMessages"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_sendBroadcast: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sendBroadcast"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" contacts: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" media: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_receivedQueue: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_receivedQueue"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" max_qts: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_photos_getUserPhotos: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ photos_getUserPhotos"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" user_id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_sendMessage: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sendMessage"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" message: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_exportCard: - to.add("{ contacts_exportCard }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); - break; - - case mtpc_messages_deleteMessages: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_deleteMessages"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_restoreMessages: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_restoreMessages"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_receivedMessages: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_receivedMessages"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_readMessageContents: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_readMessageContents"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_account_sendChangePhoneCode: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ account_sendChangePhoneCode"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" phone_number: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_get_future_salts: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ get_future_salts"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" num: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_getContacts: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_getContacts"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" hash: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_getDialogs: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_getDialogs"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" offset: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" max_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" limit: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_contacts_importContacts: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ contacts_importContacts"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" contacts: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" replace: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_photos_updateProfilePhoto: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ photos_updateProfilePhoto"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" crop: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_getChats: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_getChats"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" id: "); ++stages.back(); types.push_back(0); vtypes.push_back(mtpc_int); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_help_getAppUpdate: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ help_getAppUpdate"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" device_model: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" system_version: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" app_version: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" lang_code: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_sendEncrypted: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sendEncrypted"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" data: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_sendEncryptedFile: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sendEncryptedFile"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" data: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; - case 3: to.add(" file: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; - } - break; - - case mtpc_messages_sendEncryptedService: - if (stage) { - to.add(",\n").addSpaces(lev); - } else { - to.add("{ messages_sendEncryptedService"); - to.add("\n").addSpaces(lev); - } - switch (stage) { - case 0: to.add(" peer: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); break; - case 1: to.add(" random_id: "); ++stages.back(); types.push_back(mtpc_long); vtypes.push_back(0); stages.push_back(0); break; - case 2: to.add(" data: "); ++stages.back(); types.push_back(mtpc_bytes); vtypes.push_back(0); stages.push_back(0); break; + case 0: to.add(" id: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); break; } break; diff --git a/Telegram/SourceFiles/mtproto/mtpScheme.h b/Telegram/SourceFiles/mtproto/mtpScheme.h index 12f065d9d..4ccd815c2 100644 --- a/Telegram/SourceFiles/mtproto/mtpScheme.h +++ b/Telegram/SourceFiles/mtproto/mtpScheme.h @@ -187,8 +187,8 @@ enum { mtpc_contacts_myLinkRequested = 0x6c69efee, mtpc_contacts_myLinkContact = 0xc240ebd9, mtpc_contacts_link = 0xeccea3f5, - mtpc_contacts_contacts = 0x6f8b8cb2, mtpc_contacts_contactsNotModified = 0xb74ba9d2, + mtpc_contacts_contacts = 0x6f8b8cb2, mtpc_contacts_importedContacts = 0xad524315, mtpc_contacts_blocked = 0x1c138d15, mtpc_contacts_blockedSlice = 0x900802a1, @@ -293,8 +293,8 @@ enum { mtpc_updateDcOptions = 0x8e5e9873, mtpc_inputMediaUploadedAudio = 0x4e498cab, mtpc_inputMediaAudio = 0x89938781, - mtpc_inputMediaUploadedDocument = 0x34e794bd, - mtpc_inputMediaUploadedThumbDocument = 0x3e46de5d, + mtpc_inputMediaUploadedDocument = 0xffe76b78, + mtpc_inputMediaUploadedThumbDocument = 0x41481486, mtpc_inputMediaDocument = 0xd184e841, mtpc_messageMediaDocument = 0x2fda2204, mtpc_messageMediaAudio = 0xc6b68300, @@ -307,7 +307,7 @@ enum { mtpc_audioEmpty = 0x586988d8, mtpc_audio = 0xc7ac6496, mtpc_documentEmpty = 0x36f8c871, - mtpc_document = 0x9efc6326, + mtpc_document = 0xf9a39f4f, mtpc_help_support = 0x17c6b5f6, mtpc_notifyPeer = 0x9fd40bd8, mtpc_notifyUsers = 0xb4c83b4c, @@ -351,6 +351,12 @@ enum { mtpc_accountDaysTTL = 0xb8d0afdf, mtpc_account_sentChangePhoneCode = 0xa4f58c4c, mtpc_updateUserPhone = 0x12b9417b, + mtpc_documentAttributeImageSize = 0x6c37c15c, + mtpc_documentAttributeAnimated = 0x11b58939, + mtpc_documentAttributeSticker = 0xfb0a5727, + mtpc_documentAttributeVideo = 0x5910cccb, + mtpc_documentAttributeAudio = 0x51448e5, + mtpc_documentAttributeFilename = 0x15590068, mtpc_invokeAfterMsg = 0xcb9f372d, mtpc_invokeAfterMsgs = 0x3dc4b4f0, mtpc_auth_checkPhone = 0x6fe51dfb, @@ -409,6 +415,7 @@ enum { mtpc_updates_getDifference = 0xa041495, mtpc_photos_updateProfilePhoto = 0xeef579a0, mtpc_photos_uploadProfilePhoto = 0xd50f9c88, + mtpc_photos_deletePhotos = 0x87cf7f2f, mtpc_upload_saveFilePart = 0xb304a621, mtpc_upload_getFile = 0xe3a6cfb5, mtpc_help_getConfig = 0xc4f9186b, @@ -949,6 +956,12 @@ class MTPDaccountDaysTTL; class MTPaccount_sentChangePhoneCode; class MTPDaccount_sentChangePhoneCode; +class MTPdocumentAttribute; +class MTPDdocumentAttributeImageSize; +class MTPDdocumentAttributeVideo; +class MTPDdocumentAttributeAudio; +class MTPDdocumentAttributeFilename; + // Boxed types definitions typedef MTPBoxed MTPResPQ; @@ -1078,6 +1091,7 @@ typedef MTPBoxed MTPPrivacyRule; typedef MTPBoxed MTPaccount_PrivacyRules; typedef MTPBoxed MTPAccountDaysTTL; typedef MTPBoxed MTPaccount_SentChangePhoneCode; +typedef MTPBoxed MTPDocumentAttribute; // Type classes definitions @@ -2240,8 +2254,8 @@ private: friend MTPinputMedia MTP_inputMediaVideo(const MTPInputVideo &_id); friend MTPinputMedia MTP_inputMediaUploadedAudio(const MTPInputFile &_file, MTPint _duration, const MTPstring &_mime_type); friend MTPinputMedia MTP_inputMediaAudio(const MTPInputAudio &_id); - friend MTPinputMedia MTP_inputMediaUploadedDocument(const MTPInputFile &_file, const MTPstring &_file_name, const MTPstring &_mime_type); - friend MTPinputMedia MTP_inputMediaUploadedThumbDocument(const MTPInputFile &_file, const MTPInputFile &_thumb, const MTPstring &_file_name, const MTPstring &_mime_type); + friend MTPinputMedia MTP_inputMediaUploadedDocument(const MTPInputFile &_file, const MTPstring &_mime_type, const MTPVector &_attributes); + friend MTPinputMedia MTP_inputMediaUploadedThumbDocument(const MTPInputFile &_file, const MTPInputFile &_thumb, const MTPstring &_mime_type, const MTPVector &_attributes); friend MTPinputMedia MTP_inputMediaDocument(const MTPInputDocument &_id); mtpTypeId _type; @@ -4413,8 +4427,8 @@ private: explicit MTPcontacts_contacts(mtpTypeId type); explicit MTPcontacts_contacts(MTPDcontacts_contacts *_data); - friend MTPcontacts_contacts MTP_contacts_contacts(const MTPVector &_contacts, const MTPVector &_users); friend MTPcontacts_contacts MTP_contacts_contactsNotModified(); + friend MTPcontacts_contacts MTP_contacts_contacts(const MTPVector &_contacts, const MTPVector &_users); mtpTypeId _type; }; @@ -6621,7 +6635,7 @@ private: explicit MTPdocument(MTPDdocument *_data); friend MTPdocument MTP_documentEmpty(const MTPlong &_id); - friend MTPdocument MTP_document(const MTPlong &_id, const MTPlong &_access_hash, MTPint _user_id, MTPint _date, const MTPstring &_file_name, const MTPstring &_mime_type, MTPint _size, const MTPPhotoSize &_thumb, MTPint _dc_id); + friend MTPdocument MTP_document(const MTPlong &_id, const MTPlong &_access_hash, MTPint _date, const MTPstring &_mime_type, MTPint _size, const MTPPhotoSize &_thumb, MTPint _dc_id, const MTPVector &_attributes); mtpTypeId _type; }; @@ -7038,6 +7052,87 @@ private: }; typedef MTPBoxed MTPaccount_SentChangePhoneCode; +class MTPdocumentAttribute : private mtpDataOwner { +public: + MTPdocumentAttribute() : mtpDataOwner(0), _type(0) { + } + MTPdocumentAttribute(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons) : mtpDataOwner(0), _type(0) { + read(from, end, cons); + } + + MTPDdocumentAttributeImageSize &_documentAttributeImageSize() { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_documentAttributeImageSize) throw mtpErrorWrongTypeId(_type, mtpc_documentAttributeImageSize); + split(); + return *(MTPDdocumentAttributeImageSize*)data; + } + const MTPDdocumentAttributeImageSize &c_documentAttributeImageSize() const { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_documentAttributeImageSize) throw mtpErrorWrongTypeId(_type, mtpc_documentAttributeImageSize); + return *(const MTPDdocumentAttributeImageSize*)data; + } + + MTPDdocumentAttributeVideo &_documentAttributeVideo() { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_documentAttributeVideo) throw mtpErrorWrongTypeId(_type, mtpc_documentAttributeVideo); + split(); + return *(MTPDdocumentAttributeVideo*)data; + } + const MTPDdocumentAttributeVideo &c_documentAttributeVideo() const { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_documentAttributeVideo) throw mtpErrorWrongTypeId(_type, mtpc_documentAttributeVideo); + return *(const MTPDdocumentAttributeVideo*)data; + } + + MTPDdocumentAttributeAudio &_documentAttributeAudio() { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_documentAttributeAudio) throw mtpErrorWrongTypeId(_type, mtpc_documentAttributeAudio); + split(); + return *(MTPDdocumentAttributeAudio*)data; + } + const MTPDdocumentAttributeAudio &c_documentAttributeAudio() const { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_documentAttributeAudio) throw mtpErrorWrongTypeId(_type, mtpc_documentAttributeAudio); + return *(const MTPDdocumentAttributeAudio*)data; + } + + MTPDdocumentAttributeFilename &_documentAttributeFilename() { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_documentAttributeFilename) throw mtpErrorWrongTypeId(_type, mtpc_documentAttributeFilename); + split(); + return *(MTPDdocumentAttributeFilename*)data; + } + const MTPDdocumentAttributeFilename &c_documentAttributeFilename() const { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_documentAttributeFilename) throw mtpErrorWrongTypeId(_type, mtpc_documentAttributeFilename); + return *(const MTPDdocumentAttributeFilename*)data; + } + + uint32 innerLength() const; + mtpTypeId type() const; + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); + void write(mtpBuffer &to) const; + + typedef void ResponseType; + +private: + explicit MTPdocumentAttribute(mtpTypeId type); + explicit MTPdocumentAttribute(MTPDdocumentAttributeImageSize *_data); + explicit MTPdocumentAttribute(MTPDdocumentAttributeVideo *_data); + explicit MTPdocumentAttribute(MTPDdocumentAttributeAudio *_data); + explicit MTPdocumentAttribute(MTPDdocumentAttributeFilename *_data); + + friend MTPdocumentAttribute MTP_documentAttributeImageSize(MTPint _w, MTPint _h); + friend MTPdocumentAttribute MTP_documentAttributeAnimated(); + friend MTPdocumentAttribute MTP_documentAttributeSticker(); + friend MTPdocumentAttribute MTP_documentAttributeVideo(MTPint _duration, MTPint _w, MTPint _h); + friend MTPdocumentAttribute MTP_documentAttributeAudio(MTPint _duration); + friend MTPdocumentAttribute MTP_documentAttributeFilename(const MTPstring &_file_name); + + mtpTypeId _type; +}; +typedef MTPBoxed MTPDocumentAttribute; + // Type constructors with data class MTPDresPQ : public mtpDataImpl { @@ -7557,25 +7652,25 @@ class MTPDinputMediaUploadedDocument : public mtpDataImpl &_attributes) : vfile(_file), vmime_type(_mime_type), vattributes(_attributes) { } MTPInputFile vfile; - MTPstring vfile_name; MTPstring vmime_type; + MTPVector vattributes; }; class MTPDinputMediaUploadedThumbDocument : public mtpDataImpl { public: MTPDinputMediaUploadedThumbDocument() { } - MTPDinputMediaUploadedThumbDocument(const MTPInputFile &_file, const MTPInputFile &_thumb, const MTPstring &_file_name, const MTPstring &_mime_type) : vfile(_file), vthumb(_thumb), vfile_name(_file_name), vmime_type(_mime_type) { + MTPDinputMediaUploadedThumbDocument(const MTPInputFile &_file, const MTPInputFile &_thumb, const MTPstring &_mime_type, const MTPVector &_attributes) : vfile(_file), vthumb(_thumb), vmime_type(_mime_type), vattributes(_attributes) { } MTPInputFile vfile; MTPInputFile vthumb; - MTPstring vfile_name; MTPstring vmime_type; + MTPVector vattributes; }; class MTPDinputMediaDocument : public mtpDataImpl { @@ -9732,18 +9827,17 @@ class MTPDdocument : public mtpDataImpl { public: MTPDdocument() { } - MTPDdocument(const MTPlong &_id, const MTPlong &_access_hash, MTPint _user_id, MTPint _date, const MTPstring &_file_name, const MTPstring &_mime_type, MTPint _size, const MTPPhotoSize &_thumb, MTPint _dc_id) : vid(_id), vaccess_hash(_access_hash), vuser_id(_user_id), vdate(_date), vfile_name(_file_name), vmime_type(_mime_type), vsize(_size), vthumb(_thumb), vdc_id(_dc_id) { + MTPDdocument(const MTPlong &_id, const MTPlong &_access_hash, MTPint _date, const MTPstring &_mime_type, MTPint _size, const MTPPhotoSize &_thumb, MTPint _dc_id, const MTPVector &_attributes) : vid(_id), vaccess_hash(_access_hash), vdate(_date), vmime_type(_mime_type), vsize(_size), vthumb(_thumb), vdc_id(_dc_id), vattributes(_attributes) { } MTPlong vid; MTPlong vaccess_hash; - MTPint vuser_id; MTPint vdate; - MTPstring vfile_name; MTPstring vmime_type; MTPint vsize; MTPPhotoSize vthumb; MTPint vdc_id; + MTPVector vattributes; }; class MTPDhelp_support : public mtpDataImpl { @@ -9860,6 +9954,49 @@ public: MTPint vsend_call_timeout; }; +class MTPDdocumentAttributeImageSize : public mtpDataImpl { +public: + MTPDdocumentAttributeImageSize() { + } + MTPDdocumentAttributeImageSize(MTPint _w, MTPint _h) : vw(_w), vh(_h) { + } + + MTPint vw; + MTPint vh; +}; + +class MTPDdocumentAttributeVideo : public mtpDataImpl { +public: + MTPDdocumentAttributeVideo() { + } + MTPDdocumentAttributeVideo(MTPint _duration, MTPint _w, MTPint _h) : vduration(_duration), vw(_w), vh(_h) { + } + + MTPint vduration; + MTPint vw; + MTPint vh; +}; + +class MTPDdocumentAttributeAudio : public mtpDataImpl { +public: + MTPDdocumentAttributeAudio() { + } + MTPDdocumentAttributeAudio(MTPint _duration) : vduration(_duration) { + } + + MTPint vduration; +}; + +class MTPDdocumentAttributeFilename : public mtpDataImpl { +public: + MTPDdocumentAttributeFilename() { + } + MTPDdocumentAttributeFilename(const MTPstring &_file_name) : vfile_name(_file_name) { + } + + MTPstring vfile_name; +}; + // RPC methods class MTPreq_pq { // RPC method 'req_pq' @@ -12644,6 +12781,45 @@ public: } }; +class MTPphotos_deletePhotos { // RPC method 'photos.deletePhotos' +public: + MTPVector vid; + + MTPphotos_deletePhotos() { + } + MTPphotos_deletePhotos(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_photos_deletePhotos) { + read(from, end, cons); + } + MTPphotos_deletePhotos(const MTPVector &_id) : vid(_id) { + } + + uint32 innerLength() const { + return vid.innerLength(); + } + mtpTypeId type() const { + return mtpc_photos_deletePhotos; + } + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_photos_deletePhotos) { + vid.read(from, end); + } + void write(mtpBuffer &to) const { + vid.write(to); + } + + typedef MTPVector ResponseType; +}; +class MTPphotos_DeletePhotos : public MTPBoxed { +public: + MTPphotos_DeletePhotos() { + } + MTPphotos_DeletePhotos(const MTPphotos_deletePhotos &v) : MTPBoxed(v) { + } + MTPphotos_DeletePhotos(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = 0) : MTPBoxed(from, end, cons) { + } + MTPphotos_DeletePhotos(const MTPVector &_id) : MTPBoxed(MTPphotos_deletePhotos(_id)) { + } +}; + class MTPupload_saveFilePart { // RPC method 'upload.saveFilePart' public: MTPlong vfile_id; @@ -15889,11 +16065,11 @@ inline uint32 MTPinputMedia::innerLength() const { } case mtpc_inputMediaUploadedDocument: { const MTPDinputMediaUploadedDocument &v(c_inputMediaUploadedDocument()); - return v.vfile.innerLength() + v.vfile_name.innerLength() + v.vmime_type.innerLength(); + return v.vfile.innerLength() + v.vmime_type.innerLength() + v.vattributes.innerLength(); } case mtpc_inputMediaUploadedThumbDocument: { const MTPDinputMediaUploadedThumbDocument &v(c_inputMediaUploadedThumbDocument()); - return v.vfile.innerLength() + v.vthumb.innerLength() + v.vfile_name.innerLength() + v.vmime_type.innerLength(); + return v.vfile.innerLength() + v.vthumb.innerLength() + v.vmime_type.innerLength() + v.vattributes.innerLength(); } case mtpc_inputMediaDocument: { const MTPDinputMediaDocument &v(c_inputMediaDocument()); @@ -15972,16 +16148,16 @@ inline void MTPinputMedia::read(const mtpPrime *&from, const mtpPrime *end, mtpT if (!data) setData(new MTPDinputMediaUploadedDocument()); MTPDinputMediaUploadedDocument &v(_inputMediaUploadedDocument()); v.vfile.read(from, end); - v.vfile_name.read(from, end); v.vmime_type.read(from, end); + v.vattributes.read(from, end); } break; case mtpc_inputMediaUploadedThumbDocument: _type = cons; { if (!data) setData(new MTPDinputMediaUploadedThumbDocument()); MTPDinputMediaUploadedThumbDocument &v(_inputMediaUploadedThumbDocument()); v.vfile.read(from, end); v.vthumb.read(from, end); - v.vfile_name.read(from, end); v.vmime_type.read(from, end); + v.vattributes.read(from, end); } break; case mtpc_inputMediaDocument: _type = cons; { if (!data) setData(new MTPDinputMediaDocument()); @@ -16045,15 +16221,15 @@ inline void MTPinputMedia::write(mtpBuffer &to) const { case mtpc_inputMediaUploadedDocument: { const MTPDinputMediaUploadedDocument &v(c_inputMediaUploadedDocument()); v.vfile.write(to); - v.vfile_name.write(to); v.vmime_type.write(to); + v.vattributes.write(to); } break; case mtpc_inputMediaUploadedThumbDocument: { const MTPDinputMediaUploadedThumbDocument &v(c_inputMediaUploadedThumbDocument()); v.vfile.write(to); v.vthumb.write(to); - v.vfile_name.write(to); v.vmime_type.write(to); + v.vattributes.write(to); } break; case mtpc_inputMediaDocument: { const MTPDinputMediaDocument &v(c_inputMediaDocument()); @@ -16133,11 +16309,11 @@ inline MTPinputMedia MTP_inputMediaUploadedAudio(const MTPInputFile &_file, MTPi inline MTPinputMedia MTP_inputMediaAudio(const MTPInputAudio &_id) { return MTPinputMedia(new MTPDinputMediaAudio(_id)); } -inline MTPinputMedia MTP_inputMediaUploadedDocument(const MTPInputFile &_file, const MTPstring &_file_name, const MTPstring &_mime_type) { - return MTPinputMedia(new MTPDinputMediaUploadedDocument(_file, _file_name, _mime_type)); +inline MTPinputMedia MTP_inputMediaUploadedDocument(const MTPInputFile &_file, const MTPstring &_mime_type, const MTPVector &_attributes) { + return MTPinputMedia(new MTPDinputMediaUploadedDocument(_file, _mime_type, _attributes)); } -inline MTPinputMedia MTP_inputMediaUploadedThumbDocument(const MTPInputFile &_file, const MTPInputFile &_thumb, const MTPstring &_file_name, const MTPstring &_mime_type) { - return MTPinputMedia(new MTPDinputMediaUploadedThumbDocument(_file, _thumb, _file_name, _mime_type)); +inline MTPinputMedia MTP_inputMediaUploadedThumbDocument(const MTPInputFile &_file, const MTPInputFile &_thumb, const MTPstring &_mime_type, const MTPVector &_attributes) { + return MTPinputMedia(new MTPDinputMediaUploadedThumbDocument(_file, _thumb, _mime_type, _attributes)); } inline MTPinputMedia MTP_inputMediaDocument(const MTPInputDocument &_id) { return MTPinputMedia(new MTPDinputMediaDocument(_id)); @@ -19093,13 +19269,13 @@ inline mtpTypeId MTPcontacts_contacts::type() const { inline void MTPcontacts_contacts::read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons) { if (cons != _type) setData(0); switch (cons) { + case mtpc_contacts_contactsNotModified: _type = cons; break; case mtpc_contacts_contacts: _type = cons; { if (!data) setData(new MTPDcontacts_contacts()); MTPDcontacts_contacts &v(_contacts_contacts()); v.vcontacts.read(from, end); v.vusers.read(from, end); } break; - case mtpc_contacts_contactsNotModified: _type = cons; break; default: throw mtpErrorUnexpected(cons, "MTPcontacts_contacts"); } } @@ -19114,19 +19290,19 @@ inline void MTPcontacts_contacts::write(mtpBuffer &to) const { } 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; + case mtpc_contacts_contacts: setData(new MTPDcontacts_contacts()); break; default: throw mtpErrorBadTypeId(type, "MTPcontacts_contacts"); } } 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)); -} inline MTPcontacts_contacts MTP_contacts_contactsNotModified() { return MTPcontacts_contacts(mtpc_contacts_contactsNotModified); } +inline MTPcontacts_contacts MTP_contacts_contacts(const MTPVector &_contacts, const MTPVector &_users) { + return MTPcontacts_contacts(new MTPDcontacts_contacts(_contacts, _users)); +} inline MTPcontacts_importedContacts::MTPcontacts_importedContacts() : mtpDataOwner(new MTPDcontacts_importedContacts()) { } @@ -22123,7 +22299,7 @@ inline uint32 MTPdocument::innerLength() const { } case mtpc_document: { const MTPDdocument &v(c_document()); - return v.vid.innerLength() + v.vaccess_hash.innerLength() + v.vuser_id.innerLength() + v.vdate.innerLength() + v.vfile_name.innerLength() + v.vmime_type.innerLength() + v.vsize.innerLength() + v.vthumb.innerLength() + v.vdc_id.innerLength(); + return v.vid.innerLength() + v.vaccess_hash.innerLength() + v.vdate.innerLength() + v.vmime_type.innerLength() + v.vsize.innerLength() + v.vthumb.innerLength() + v.vdc_id.innerLength() + v.vattributes.innerLength(); } } return 0; @@ -22145,13 +22321,12 @@ inline void MTPdocument::read(const mtpPrime *&from, const mtpPrime *end, mtpTyp MTPDdocument &v(_document()); v.vid.read(from, end); v.vaccess_hash.read(from, end); - v.vuser_id.read(from, end); v.vdate.read(from, end); - v.vfile_name.read(from, end); v.vmime_type.read(from, end); v.vsize.read(from, end); v.vthumb.read(from, end); v.vdc_id.read(from, end); + v.vattributes.read(from, end); } break; default: throw mtpErrorUnexpected(cons, "MTPdocument"); } @@ -22166,13 +22341,12 @@ inline void MTPdocument::write(mtpBuffer &to) const { const MTPDdocument &v(c_document()); v.vid.write(to); v.vaccess_hash.write(to); - v.vuser_id.write(to); v.vdate.write(to); - v.vfile_name.write(to); v.vmime_type.write(to); v.vsize.write(to); v.vthumb.write(to); v.vdc_id.write(to); + v.vattributes.write(to); } break; } } @@ -22190,8 +22364,8 @@ inline MTPdocument::MTPdocument(MTPDdocument *_data) : mtpDataOwner(_data), _typ inline MTPdocument MTP_documentEmpty(const MTPlong &_id) { return MTPdocument(new MTPDdocumentEmpty(_id)); } -inline MTPdocument MTP_document(const MTPlong &_id, const MTPlong &_access_hash, MTPint _user_id, MTPint _date, const MTPstring &_file_name, const MTPstring &_mime_type, MTPint _size, const MTPPhotoSize &_thumb, MTPint _dc_id) { - return MTPdocument(new MTPDdocument(_id, _access_hash, _user_id, _date, _file_name, _mime_type, _size, _thumb, _dc_id)); +inline MTPdocument MTP_document(const MTPlong &_id, const MTPlong &_access_hash, MTPint _date, const MTPstring &_mime_type, MTPint _size, const MTPPhotoSize &_thumb, MTPint _dc_id, const MTPVector &_attributes) { + return MTPdocument(new MTPDdocument(_id, _access_hash, _date, _mime_type, _size, _thumb, _dc_id, _attributes)); } inline MTPhelp_support::MTPhelp_support() : mtpDataOwner(new MTPDhelp_support()) { @@ -22689,6 +22863,123 @@ inline MTPaccount_sentChangePhoneCode MTP_account_sentChangePhoneCode(const MTPs return MTPaccount_sentChangePhoneCode(new MTPDaccount_sentChangePhoneCode(_phone_code_hash, _send_call_timeout)); } +inline uint32 MTPdocumentAttribute::innerLength() const { + switch (_type) { + case mtpc_documentAttributeImageSize: { + const MTPDdocumentAttributeImageSize &v(c_documentAttributeImageSize()); + return v.vw.innerLength() + v.vh.innerLength(); + } + case mtpc_documentAttributeVideo: { + const MTPDdocumentAttributeVideo &v(c_documentAttributeVideo()); + return v.vduration.innerLength() + v.vw.innerLength() + v.vh.innerLength(); + } + case mtpc_documentAttributeAudio: { + const MTPDdocumentAttributeAudio &v(c_documentAttributeAudio()); + return v.vduration.innerLength(); + } + case mtpc_documentAttributeFilename: { + const MTPDdocumentAttributeFilename &v(c_documentAttributeFilename()); + return v.vfile_name.innerLength(); + } + } + return 0; +} +inline mtpTypeId MTPdocumentAttribute::type() const { + if (!_type) throw mtpErrorUninitialized(); + return _type; +} +inline void MTPdocumentAttribute::read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons) { + if (cons != _type) setData(0); + switch (cons) { + case mtpc_documentAttributeImageSize: _type = cons; { + if (!data) setData(new MTPDdocumentAttributeImageSize()); + MTPDdocumentAttributeImageSize &v(_documentAttributeImageSize()); + v.vw.read(from, end); + v.vh.read(from, end); + } break; + case mtpc_documentAttributeAnimated: _type = cons; break; + case mtpc_documentAttributeSticker: _type = cons; break; + case mtpc_documentAttributeVideo: _type = cons; { + if (!data) setData(new MTPDdocumentAttributeVideo()); + MTPDdocumentAttributeVideo &v(_documentAttributeVideo()); + v.vduration.read(from, end); + v.vw.read(from, end); + v.vh.read(from, end); + } break; + case mtpc_documentAttributeAudio: _type = cons; { + if (!data) setData(new MTPDdocumentAttributeAudio()); + MTPDdocumentAttributeAudio &v(_documentAttributeAudio()); + v.vduration.read(from, end); + } break; + case mtpc_documentAttributeFilename: _type = cons; { + if (!data) setData(new MTPDdocumentAttributeFilename()); + MTPDdocumentAttributeFilename &v(_documentAttributeFilename()); + v.vfile_name.read(from, end); + } break; + default: throw mtpErrorUnexpected(cons, "MTPdocumentAttribute"); + } +} +inline void MTPdocumentAttribute::write(mtpBuffer &to) const { + switch (_type) { + case mtpc_documentAttributeImageSize: { + const MTPDdocumentAttributeImageSize &v(c_documentAttributeImageSize()); + v.vw.write(to); + v.vh.write(to); + } break; + case mtpc_documentAttributeVideo: { + const MTPDdocumentAttributeVideo &v(c_documentAttributeVideo()); + v.vduration.write(to); + v.vw.write(to); + v.vh.write(to); + } break; + case mtpc_documentAttributeAudio: { + const MTPDdocumentAttributeAudio &v(c_documentAttributeAudio()); + v.vduration.write(to); + } break; + case mtpc_documentAttributeFilename: { + const MTPDdocumentAttributeFilename &v(c_documentAttributeFilename()); + v.vfile_name.write(to); + } break; + } +} +inline MTPdocumentAttribute::MTPdocumentAttribute(mtpTypeId type) : mtpDataOwner(0), _type(type) { + switch (type) { + case mtpc_documentAttributeImageSize: setData(new MTPDdocumentAttributeImageSize()); break; + case mtpc_documentAttributeAnimated: break; + case mtpc_documentAttributeSticker: break; + case mtpc_documentAttributeVideo: setData(new MTPDdocumentAttributeVideo()); break; + case mtpc_documentAttributeAudio: setData(new MTPDdocumentAttributeAudio()); break; + case mtpc_documentAttributeFilename: setData(new MTPDdocumentAttributeFilename()); break; + default: throw mtpErrorBadTypeId(type, "MTPdocumentAttribute"); + } +} +inline MTPdocumentAttribute::MTPdocumentAttribute(MTPDdocumentAttributeImageSize *_data) : mtpDataOwner(_data), _type(mtpc_documentAttributeImageSize) { +} +inline MTPdocumentAttribute::MTPdocumentAttribute(MTPDdocumentAttributeVideo *_data) : mtpDataOwner(_data), _type(mtpc_documentAttributeVideo) { +} +inline MTPdocumentAttribute::MTPdocumentAttribute(MTPDdocumentAttributeAudio *_data) : mtpDataOwner(_data), _type(mtpc_documentAttributeAudio) { +} +inline MTPdocumentAttribute::MTPdocumentAttribute(MTPDdocumentAttributeFilename *_data) : mtpDataOwner(_data), _type(mtpc_documentAttributeFilename) { +} +inline MTPdocumentAttribute MTP_documentAttributeImageSize(MTPint _w, MTPint _h) { + return MTPdocumentAttribute(new MTPDdocumentAttributeImageSize(_w, _h)); +} +inline MTPdocumentAttribute MTP_documentAttributeAnimated() { + return MTPdocumentAttribute(mtpc_documentAttributeAnimated); +} +inline MTPdocumentAttribute MTP_documentAttributeSticker() { + return MTPdocumentAttribute(mtpc_documentAttributeSticker); +} +inline MTPdocumentAttribute MTP_documentAttributeVideo(MTPint _duration, MTPint _w, MTPint _h) { + return MTPdocumentAttribute(new MTPDdocumentAttributeVideo(_duration, _w, _h)); +} +inline MTPdocumentAttribute MTP_documentAttributeAudio(MTPint _duration) { + return MTPdocumentAttribute(new MTPDdocumentAttributeAudio(_duration)); +} +inline MTPdocumentAttribute MTP_documentAttributeFilename(const MTPstring &_file_name) { + return MTPdocumentAttribute(new MTPDdocumentAttributeFilename(_file_name)); +} + // Human-readable text serialization #if (defined _DEBUG || defined _WITH_DEBUG) diff --git a/Telegram/SourceFiles/mtproto/scheme.tl b/Telegram/SourceFiles/mtproto/scheme.tl index ffcc89f51..f1a41272c 100644 --- a/Telegram/SourceFiles/mtproto/scheme.tl +++ b/Telegram/SourceFiles/mtproto/scheme.tl @@ -301,8 +301,8 @@ contacts.myLinkContact#c240ebd9 = contacts.MyLink; contacts.link#eccea3f5 my_link:contacts.MyLink foreign_link:contacts.ForeignLink user:User = contacts.Link; -contacts.contacts#6f8b8cb2 contacts:Vector users:Vector = contacts.Contacts; contacts.contactsNotModified#b74ba9d2 = contacts.Contacts; +contacts.contacts#6f8b8cb2 contacts:Vector users:Vector = contacts.Contacts; contacts.importedContacts#ad524315 imported:Vector retry_contacts:Vector users:Vector = contacts.ImportedContacts; @@ -459,8 +459,8 @@ updateDcOptions#8e5e9873 dc_options:Vector = Update; inputMediaUploadedAudio#4e498cab file:InputFile duration:int mime_type:string = InputMedia; inputMediaAudio#89938781 id:InputAudio = InputMedia; -inputMediaUploadedDocument#34e794bd file:InputFile file_name:string mime_type:string = InputMedia; -inputMediaUploadedThumbDocument#3e46de5d file:InputFile thumb:InputFile file_name:string mime_type:string = InputMedia; +inputMediaUploadedDocument#ffe76b78 file:InputFile mime_type:string attributes:Vector = InputMedia; +inputMediaUploadedThumbDocument#41481486 file:InputFile thumb:InputFile mime_type:string attributes:Vector = InputMedia; inputMediaDocument#d184e841 id:InputDocument = InputMedia; messageMediaDocument#2fda2204 document:Document = MessageMedia; @@ -479,7 +479,7 @@ audioEmpty#586988d8 id:long = Audio; audio#c7ac6496 id:long access_hash:long user_id:int date:int duration:int mime_type:string size:int dc_id:int = Audio; documentEmpty#36f8c871 id:long = Document; -document#9efc6326 id:long access_hash:long user_id:int date:int file_name:string mime_type:string size:int thumb:PhotoSize dc_id:int = Document; +document#f9a39f4f id:long access_hash:long date:int mime_type:string size:int thumb:PhotoSize dc_id:int attributes:Vector = Document; help.support#17c6b5f6 phone_number:string user:User = help.Support; @@ -542,6 +542,13 @@ account.sentChangePhoneCode#a4f58c4c phone_code_hash:string send_call_timeout:in updateUserPhone#12b9417b user_id:int phone:string = Update; +documentAttributeImageSize#6c37c15c w:int h:int = DocumentAttribute; +documentAttributeAnimated#11b58939 = DocumentAttribute; +documentAttributeSticker#fb0a5727 = DocumentAttribute; +documentAttributeVideo#5910cccb duration:int w:int h:int = DocumentAttribute; +documentAttributeAudio#51448e5 duration:int = DocumentAttribute; +documentAttributeFilename#15590068 file_name:string = DocumentAttribute; + ---functions--- invokeAfterMsg#cb9f372d msg_id:long query:!X = X; @@ -610,6 +617,7 @@ updates.getDifference#a041495 pts:int date:int qts:int = updates.Difference; photos.updateProfilePhoto#eef579a0 id:InputPhoto crop:InputPhotoCrop = UserProfilePhoto; photos.uploadProfilePhoto#d50f9c88 file:InputFile caption:string geo_point:InputGeoPoint crop:InputPhotoCrop = photos.Photo; +photos.deletePhotos#87cf7f2f id:Vector = Vector; upload.saveFilePart#b304a621 file_id:long file_part:int bytes:bytes = Bool; upload.getFile#e3a6cfb5 location:InputFileLocation offset:int limit:int = upload.File; diff --git a/Telegram/SourceFiles/overviewwidget.cpp b/Telegram/SourceFiles/overviewwidget.cpp index 472fd6ad2..29cea6a74 100644 --- a/Telegram/SourceFiles/overviewwidget.cpp +++ b/Telegram/SourceFiles/overviewwidget.cpp @@ -565,7 +565,7 @@ QPixmap OverviewInner::genPix(PhotoData *photo, int32 size) { } img.setDevicePixelRatio(cRetinaFactor()); photo->forget(); - return QPixmap::fromImage(img); + return QPixmap::fromImage(img, Qt::ColorOnly); } void OverviewInner::paintEvent(QPaintEvent *e) { diff --git a/Telegram/SourceFiles/pspecific_linux.cpp b/Telegram/SourceFiles/pspecific_linux.cpp index 8db3ac2a2..b96ae63ac 100644 --- a/Telegram/SourceFiles/pspecific_linux.cpp +++ b/Telegram/SourceFiles/pspecific_linux.cpp @@ -50,7 +50,7 @@ namespace { }; PsMainWindow::PsMainWindow(QWidget *parent) : QMainWindow(parent), -posInited(false), trayIcon(0), trayIconMenu(0), icon256(qsl(":/gui/art/icon256.png")), iconbig256(icon256), wndIcon(QPixmap::fromImage(icon256)) { +posInited(false), trayIcon(0), trayIconMenu(0), icon256(qsl(":/gui/art/icon256.png")), iconbig256(icon256), wndIcon(QPixmap::fromImage(icon256, Qt::ColorOnly)) { connect(&psIdleTimer, SIGNAL(timeout()), this, SLOT(psIdleTimeout())); psIdleTimer.setSingleShot(false); } diff --git a/Telegram/SourceFiles/pspecific_mac.cpp b/Telegram/SourceFiles/pspecific_mac.cpp index 3daffd037..1a27f8f89 100644 --- a/Telegram/SourceFiles/pspecific_mac.cpp +++ b/Telegram/SourceFiles/pspecific_mac.cpp @@ -71,7 +71,7 @@ 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/icon256.png")), iconbig256(qsl(":/gui/art/iconbig256.png")), wndIcon(QPixmap::fromImage(iconbig256)), +posInited(false), trayIcon(0), trayIconMenu(0), icon256(qsl(":/gui/art/icon256.png")), iconbig256(qsl(":/gui/art/iconbig256.png")), wndIcon(QPixmap::fromImage(iconbig256, Qt::ColorOnly)), psLogout(0), psUndo(0), psRedo(0), psCut(0), psCopy(0), psPaste(0), psDelete(0), psSelectAll(0), psContacts(0), psAddContact(0), psNewGroup(0), psShowTelegram(0) { QImage tray(qsl(":/gui/art/osxtray.png")); trayImg = tray.copy(0, cRetina() ? 0 : tray.width() / 2, tray.width() / (cRetina() ? 2 : 4), tray.width() / (cRetina() ? 2 : 4)); @@ -206,8 +206,8 @@ void PsMainWindow::psUpdateCounter() { int32 size = cRetina() ? 44 : 22; _placeCounter(img, size, counter, bg, (dm && !important) ? st::counterMacInvColor : st::counterColor); _placeCounter(imgsel, size, counter, st::white, st::counterMacInvColor); - icon.addPixmap(QPixmap::fromImage(img)); - icon.addPixmap(QPixmap::fromImage(imgsel), QIcon::Selected); + icon.addPixmap(QPixmap::fromImage(img, Qt::ColorOnly)); + icon.addPixmap(QPixmap::fromImage(imgsel, Qt::ColorOnly), QIcon::Selected); trayIcon->setIcon(icon); } } diff --git a/Telegram/SourceFiles/pspecific_wnd.cpp b/Telegram/SourceFiles/pspecific_wnd.cpp index 7b0447bee..841828642 100644 --- a/Telegram/SourceFiles/pspecific_wnd.cpp +++ b/Telegram/SourceFiles/pspecific_wnd.cpp @@ -860,7 +860,7 @@ namespace { }; -PsMainWindow::PsMainWindow(QWidget *parent) : QMainWindow(parent), ps_hWnd(0), ps_menu(0), icon256(qsl(":/gui/art/icon256.png")), iconbig256(qsl(":/gui/art/iconbig256.png")), wndIcon(QPixmap::fromImage(icon256)), +PsMainWindow::PsMainWindow(QWidget *parent) : QMainWindow(parent), ps_hWnd(0), ps_menu(0), icon256(qsl(":/gui/art/icon256.png")), iconbig256(qsl(":/gui/art/iconbig256.png")), wndIcon(QPixmap::fromImage(icon256, Qt::ColorOnly)), ps_iconBig(0), ps_iconSmall(0), ps_iconOverlay(0), trayIcon(0), trayIconMenu(0), posInited(false), ps_tbHider_hWnd(createTaskbarHider()), psIdle(false) { tbCreatedMsgId = RegisterWindowMessage(L"TaskbarButtonCreated"); connect(&psIdleTimer, SIGNAL(timeout()), this, SLOT(psIdleTimeout())); @@ -988,10 +988,10 @@ void PsMainWindow::psUpdateCounter() { int32 counter = App::histories().unreadFull; style::color bg = (App::histories().unreadMuted < counter) ? st::counterBG : st::counterMuteBG; QIcon iconSmall, iconBig; - iconSmall.addPixmap(QPixmap::fromImage(iconWithCounter(16, counter, bg, true))); - iconSmall.addPixmap(QPixmap::fromImage(iconWithCounter(32, counter, bg, true))); - iconBig.addPixmap(QPixmap::fromImage(iconWithCounter(32, tbListInterface ? 0 : counter, bg, false))); - iconBig.addPixmap(QPixmap::fromImage(iconWithCounter(64, tbListInterface ? 0 : counter, bg, false))); + iconSmall.addPixmap(QPixmap::fromImage(iconWithCounter(16, counter, bg, true), Qt::ColorOnly)); + iconSmall.addPixmap(QPixmap::fromImage(iconWithCounter(32, counter, bg, true), Qt::ColorOnly)); + iconBig.addPixmap(QPixmap::fromImage(iconWithCounter(32, tbListInterface ? 0 : counter, bg, false), Qt::ColorOnly)); + iconBig.addPixmap(QPixmap::fromImage(iconWithCounter(64, tbListInterface ? 0 : counter, bg, false), Qt::ColorOnly)); if (trayIcon) { trayIcon->setIcon(iconSmall); } @@ -1005,8 +1005,8 @@ void PsMainWindow::psUpdateCounter() { if (tbListInterface) { if (counter > 0) { QIcon iconOverlay; - iconOverlay.addPixmap(QPixmap::fromImage(iconWithCounter(-16, counter, bg, false))); - iconOverlay.addPixmap(QPixmap::fromImage(iconWithCounter(-32, counter, bg, false))); + iconOverlay.addPixmap(QPixmap::fromImage(iconWithCounter(-16, counter, bg, false), Qt::ColorOnly)); + iconOverlay.addPixmap(QPixmap::fromImage(iconWithCounter(-32, counter, bg, false), Qt::ColorOnly)); ps_iconOverlay = _qt_createHIcon(iconOverlay, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON)); } QString description = counter > 0 ? QString("%1 unread messages").arg(counter) : qsl("No unread messages"); diff --git a/Telegram/SourceFiles/qmime/freedesktop.org.xml b/Telegram/SourceFiles/qmime/freedesktop.org.xml index a419a4b8f..a59288028 100644 --- a/Telegram/SourceFiles/qmime/freedesktop.org.xml +++ b/Telegram/SourceFiles/qmime/freedesktop.org.xml @@ -1094,7 +1094,7 @@ - + PKCS#7 Message or Certificate PKCS @@ -1967,7 +1967,7 @@ - + SGF record تسجيلة SGF Zapisanaja hulnia SGF @@ -5602,7 +5602,7 @@ - + @@ -9726,7 +9726,7 @@ - + Genesis ROM Genesis ROM Genesis ROM @@ -12540,11 +12540,11 @@ Matroska 串流 - + - + - + @@ -12694,11 +12694,11 @@ WebM 視訊 - + - + - + @@ -12925,7 +12925,7 @@ - + @@ -13394,7 +13394,7 @@ - + NES ROM NES ROM NES ROM @@ -14224,7 +14224,7 @@ - + OLE2 compound document storage تخزين مجمع مستند OLE2 @@ -15954,7 +15954,7 @@ - + Shorten audio Shorten سمعي Aŭdyjo Shorten @@ -16204,7 +16204,7 @@ - + Super NES ROM Super NES ROM Super Nintendo ROM @@ -18246,10 +18246,10 @@ DTS audio - - - - + + + + @@ -18258,7 +18258,7 @@ DTSHD audio - + @@ -20213,7 +20213,7 @@ Âm thanh RIFF RIFF 音频 RIFF 音訊 - + @@ -21183,6 +21183,58 @@ + + WebP image + صورة WebP + WebP rəsmi + Vyjava WebP + Изображение — WebP + imatge WebP + Obrázek WebP + Delwedd WebP + WebP-billede + WebP-Bild + εικόνα WebP + WebP image + WebP-bildo + imagen WebP + WebP irudia + WebP-kuva + WebP mynd + image WebP + íomhá WebP + imaxe WebP + תמונת WebP + WebP slika + WebP-kép + Citra WebP + Immagine WebP + WebP 画像 + WebP суреті + WebP 그림 + WebP paveikslėlis + WebP attēls + Imej WebP + WebP-bilde + WebP-afbeelding + WebP-bilete + Obraz WebP + imagem WebP + Imagem WebP + Imagine WebP + изображение WebP + Obrázok WebP + Slikovna datoteka WebP + Figurë WebP + WebP слика + WebP-bild + WebP görüntüsü + зображення WebP + Ảnh WebP + WebP 图像 + WebP 影像 + + DirectDraw surface مساحة DirectDraw @@ -21541,8 +21593,8 @@ - - + + Canon CRW raw image صورة Canon CRW خامة @@ -21594,7 +21646,7 @@ - + Canon CR2 raw image صورة Canon CR2 خامة @@ -21987,11 +22039,11 @@ Olympus Raw Format - - - - - + + + + + @@ -22039,7 +22091,7 @@ Panasonic 原生影像 - + @@ -22077,7 +22129,7 @@ Panasonic raw2 影像 - + @@ -22176,9 +22228,9 @@ X3 Foveon - + - + @@ -24784,14 +24836,14 @@ WMF Windows Metafile - + - + - + @@ -30849,7 +30901,7 @@ 资源位置 資源位置 - + uuencoded file @@ -33140,9 +33192,9 @@ - + - + digital photos الصور الرقمية ličbavyja zdymki @@ -33190,7 +33242,7 @@ - + Video CD Video CD Videa CD @@ -33239,7 +33291,7 @@ - + Super Video CD Super Video CD Super Video CD @@ -33288,7 +33340,7 @@ - + video DVD DVD مرئي videa DVD @@ -33341,7 +33393,7 @@ - + audio CD CD سمعي aŭdyjo CD @@ -33387,7 +33439,7 @@ - + blank CD disc قرص CD فارغ čysty dysk CD @@ -33432,7 +33484,7 @@ - + blank DVD disc قرص DVD فارغ čysty dysk DVD @@ -33477,7 +33529,7 @@ - + blank Blu-ray disc قرص بلو-راي فارغ čysty dysk Blu-ray @@ -33522,7 +33574,7 @@ - + blank HD DVD disc قرص HD DVD فارغ čysty dysk HD DVD @@ -33567,7 +33619,7 @@ - + audio DVD DVD سمعي aŭdyjo DVD @@ -33617,7 +33669,7 @@ - + Blu-ray video disc قرص بلو-راي مرئي Videadysk Blu-ray @@ -33667,7 +33719,7 @@ - + HD DVD video disc قرص HD DVD مرئي Videadysk HD DVD @@ -33717,7 +33769,7 @@ - + e-book reader Четец на е-книги lector de llibres electrònics @@ -33755,7 +33807,7 @@ - + Picture CD Picture CD Picture CD @@ -33803,7 +33855,7 @@ - + portable audio player مشغل الملفات المسموعة المحمولة pieranosny aŭdyjoplayer @@ -33848,7 +33900,7 @@ - + software برنامج prahrama @@ -33894,7 +33946,7 @@ - + UNIX software برنامج يونكس Софтуер за UNIX @@ -33942,7 +33994,7 @@ - + Windows software برنامج ويندوز Софтуер — Windows @@ -33988,7 +34040,7 @@ - + TriG RDF document TriG TriG RDF Graph Triple Language diff --git a/Telegram/SourceFiles/stdafx.cpp b/Telegram/SourceFiles/stdafx.cpp index 388f334e9..3d407c2ba 100644 --- a/Telegram/SourceFiles/stdafx.cpp +++ b/Telegram/SourceFiles/stdafx.cpp @@ -21,6 +21,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org #ifdef Q_OS_WIN Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin) Q_IMPORT_PLUGIN(AccessibleFactory) +Q_IMPORT_PLUGIN(QWebpPlugin) #elif defined Q_OS_MAC //Q_IMPORT_PLUGIN(AVFServicePlugin) Q_IMPORT_PLUGIN(AVFMediaPlayerServicePlugin) diff --git a/Telegram/SourceFiles/telegram.qrc b/Telegram/SourceFiles/telegram.qrc index 875071ad1..e62c014fb 100644 --- a/Telegram/SourceFiles/telegram.qrc +++ b/Telegram/SourceFiles/telegram.qrc @@ -44,5 +44,7 @@ langs/lang_it.strings langs/lang_es.strings + langs/lang_de.strings + langs/lang_nl.strings diff --git a/Telegram/SourceFiles/title.cpp b/Telegram/SourceFiles/title.cpp index bb2ab7849..ac7b22fc6 100644 --- a/Telegram/SourceFiles/title.cpp +++ b/Telegram/SourceFiles/title.cpp @@ -244,7 +244,7 @@ void TitleWidget::updateCounter() { case dbisOneAndHalf: size = -24; break; case dbisTwo: size = -32; break; } - _counter = QPixmap::fromImage(App::wnd()->iconWithCounter(size, counter, bg, false)); + _counter = QPixmap::fromImage(App::wnd()->iconWithCounter(size, counter, bg, false), Qt::ColorOnly); _counter.setDevicePixelRatio(cRetinaFactor()); update(QRect(st::titleIconPos, st::titleIconImg.pxSize())); } else { diff --git a/Telegram/SourceFiles/window.cpp b/Telegram/SourceFiles/window.cpp index 599167e2f..48decd342 100644 --- a/Telegram/SourceFiles/window.cpp +++ b/Telegram/SourceFiles/window.cpp @@ -165,7 +165,7 @@ void NotifyWindow::updateNotifyDisplay() { peerPhoto->load(true, true); } } else { - static QPixmap icon = QPixmap::fromImage(App::wnd()->iconLarge().scaled(st::notifyPhotoSize, st::notifyPhotoSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + static QPixmap icon = QPixmap::fromImage(App::wnd()->iconLarge().scaled(st::notifyPhotoSize, st::notifyPhotoSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::ColorOnly); p.drawPixmap(st::notifyPhotoPos.x(), st::notifyPhotoPos.y(), icon); } @@ -209,7 +209,7 @@ void NotifyWindow::updateNotifyDisplay() { } } - pm = QPixmap::fromImage(img); + pm = QPixmap::fromImage(img, Qt::ColorOnly); update(); } @@ -221,7 +221,7 @@ void NotifyWindow::updatePeerPhoto() { p.drawPixmap(st::notifyPhotoPos.x(), st::notifyPhotoPos.y(), peerPhoto->pix(st::notifyPhotoSize)); } peerPhoto = ImagePtr(); - pm = QPixmap::fromImage(img); + pm = QPixmap::fromImage(img, Qt::ColorOnly); update(); } } @@ -847,10 +847,10 @@ void Window::setupTrayIcon() { if (trayIcon) trayIcon->deleteLater(); trayIcon = new QSystemTrayIcon(this); #ifdef Q_OS_MAC - QIcon icon(QPixmap::fromImage(psTrayIcon())); - icon.addPixmap(QPixmap::fromImage(psTrayIcon(true)), QIcon::Selected); + QIcon icon(QPixmap::fromImage(psTrayIcon(), Qt::ColorOnly)); + icon.addPixmap(QPixmap::fromImage(psTrayIcon(true), Qt::ColorOnly), QIcon::Selected); #else - QIcon icon(QPixmap::fromImage(iconLarge())); + QIcon icon(QPixmap::fromImage(iconLarge(), Qt::ColorOnly)); #endif trayIcon->setIcon(icon); @@ -1488,7 +1488,7 @@ QImage Window::iconWithCounter(int size, int count, style::color bg, bool smallI placeSmallCounter(img, size, count, bg, QPoint(), st::counterColor); } else { QPainter p(&img); - p.drawPixmap(size / 2, size / 2, QPixmap::fromImage(iconWithCounter(-size / 2, count, bg, false))); + p.drawPixmap(size / 2, size / 2, QPixmap::fromImage(iconWithCounter(-size / 2, count, bg, false), Qt::ColorOnly)); } return img; } diff --git a/Telegram/Telegram.plist b/Telegram/Telegram.plist index cd9d01bb4..e161e39ae 100644 --- a/Telegram/Telegram.plist +++ b/Telegram/Telegram.plist @@ -11,7 +11,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.7.3 + 0.7.4 CFBundleSignature ???? CFBundleURLTypes diff --git a/Telegram/Telegram.rc b/Telegram/Telegram.rc index 618634620..9dd3f70cf 100644 Binary files a/Telegram/Telegram.rc and b/Telegram/Telegram.rc differ diff --git a/Telegram/Telegram.vcxproj b/Telegram/Telegram.vcxproj index 6e92eec24..4fd78b1a5 100644 --- a/Telegram/Telegram.vcxproj +++ b/Telegram/Telegram.vcxproj @@ -79,7 +79,7 @@ Windows $(OutDir)$(ProjectName).exe .\..\..\Libraries\lzma\C\Util\LzmaLib\Debug;.\..\..\Libraries\libexif-0.6.20\win32\Debug;.\..\..\Libraries\libogg-1.3.2\win32\VS2010\Win32\Debug;.\..\..\Libraries\opus\win32\VS2010\Win32\Debug;.\..\..\Libraries\opusfile\win32\VS2010\Win32\Debug;.\..\..\Libraries\openal-soft\build\Debug;.\..\..\Libraries\zlib-1.2.8\contrib\vstudio\vc11\x86\ZlibStatDebug;.\..\..\Libraries\OpenSSL-Win32\lib\VC\static;$(QTDIR)\lib;$(QTDIR)\plugins;%(AdditionalLibraryDirectories) - kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;qtmaind.lib;glu32.lib;opengl32.lib;Strmiids.lib;Qt5Cored.lib;Qt5Guid.lib;Qt5Widgetsd.lib;Qt5Networkd.lib;Qt5PlatformSupportd.lib;platforms\qwindowsd.lib;accessible\qtaccessiblewidgetsd.lib;libeay32MTd.lib;ssleay32MTd.lib;Crypt32.lib;zlibstat.lib;LzmaLib.lib;lib_exif.lib;UxTheme.lib;DbgHelp.lib;OpenAL32.lib;common.lib;opusfile.lib;opus.lib;libogg_static.lib;celt.lib;silk_common.lib;silk_float.lib;%(AdditionalDependencies) + kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;qtmaind.lib;glu32.lib;opengl32.lib;Strmiids.lib;Qt5Cored.lib;Qt5Guid.lib;Qt5Widgetsd.lib;Qt5Networkd.lib;Qt5PlatformSupportd.lib;platforms\qwindowsd.lib;accessible\qtaccessiblewidgetsd.lib;imageformats\qwebpd.lib;libeay32MTd.lib;ssleay32MTd.lib;Crypt32.lib;zlibstat.lib;LzmaLib.lib;lib_exif.lib;UxTheme.lib;DbgHelp.lib;OpenAL32.lib;common.lib;opusfile.lib;opus.lib;libogg_static.lib;celt.lib;silk_common.lib;silk_float.lib;%(AdditionalDependencies) true @@ -108,7 +108,7 @@ Windows $(OutDir)$(ProjectName).exe .\..\..\Libraries\lzma\C\Util\LzmaLib\Release;.\..\..\Libraries\libexif-0.6.20\win32\Release;.\..\..\Libraries\libogg-1.3.2\win32\VS2010\Win32\Release;.\..\..\Libraries\opus\win32\VS2010\Win32\Release;.\..\..\Libraries\opusfile\win32\VS2010\Win32\Release;.\..\..\Libraries\openal-soft\build\Release;.\..\..\Libraries\zlib-1.2.8\contrib\vstudio\vc11\x86\ZlibStatRelease;.\..\..\Libraries\OpenSSL-Win32\lib\VC\static;$(QTDIR)\lib;$(QTDIR)\plugins;%(AdditionalLibraryDirectories) - kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;qtmain.lib;glu32.lib;opengl32.lib;Strmiids.lib;Qt5Core.lib;Qt5Gui.lib;Qt5Widgets.lib;Qt5Network.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;accessible\qtaccessiblewidgets.lib;libeay32MT.lib;ssleay32MT.lib;Crypt32.lib;zlibstat.lib;lib_exif.lib;UxTheme.lib;DbgHelp.lib;LzmaLib.lib;OpenAL32.lib;common.lib;opusfile.lib;opus.lib;libogg_static.lib;celt.lib;silk_common.lib;silk_float.lib;%(AdditionalDependencies) + kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;qtmain.lib;glu32.lib;opengl32.lib;Strmiids.lib;Qt5Core.lib;Qt5Gui.lib;Qt5Widgets.lib;Qt5Network.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;accessible\qtaccessiblewidgets.lib;imageformats\qwebp.lib;libeay32MT.lib;ssleay32MT.lib;Crypt32.lib;zlibstat.lib;lib_exif.lib;UxTheme.lib;DbgHelp.lib;LzmaLib.lib;OpenAL32.lib;common.lib;opusfile.lib;opus.lib;libogg_static.lib;celt.lib;silk_common.lib;silk_float.lib;%(AdditionalDependencies) $(SolutionDir)$(Platform)\$(Configuration)Intermediate\$(TargetName).lib $(IntDir)$(TargetName).pgd @@ -135,7 +135,7 @@ Windows $(OutDir)$(ProjectName).exe .\..\..\Libraries\lzma\C\Util\LzmaLib\Release;.\..\..\Libraries\libexif-0.6.20\win32\Release;.\..\..\Libraries\libogg-1.3.2\win32\VS2010\Win32\Release;.\..\..\Libraries\opus\win32\VS2010\Win32\Release;.\..\..\Libraries\opusfile\win32\VS2010\Win32\Release;.\..\..\Libraries\openal-soft\build\Release;.\..\..\Libraries\zlib-1.2.8\contrib\vstudio\vc11\x86\ZlibStatRelease;.\..\..\Libraries\OpenSSL-Win32\lib\VC\static;$(QTDIR)\lib;$(QTDIR)\plugins;%(AdditionalLibraryDirectories) - kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;qtmain.lib;glu32.lib;opengl32.lib;Strmiids.lib;Qt5Core.lib;Qt5Gui.lib;Qt5Widgets.lib;Qt5Network.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;accessible\qtaccessiblewidgets.lib;libeay32MT.lib;ssleay32MT.lib;Crypt32.lib;zlibstat.lib;lib_exif.lib;UxTheme.lib;DbgHelp.lib;LzmaLib.lib;OpenAL32.lib;common.lib;opusfile.lib;opus.lib;libogg_static.lib;celt.lib;silk_common.lib;silk_float.lib;%(AdditionalDependencies) + kernel32.lib;user32.lib;shell32.lib;uuid.lib;ole32.lib;advapi32.lib;ws2_32.lib;gdi32.lib;comdlg32.lib;oleaut32.lib;imm32.lib;winmm.lib;qtmain.lib;glu32.lib;opengl32.lib;Strmiids.lib;Qt5Core.lib;Qt5Gui.lib;Qt5Widgets.lib;Qt5Network.lib;Qt5PlatformSupport.lib;platforms\qwindows.lib;accessible\qtaccessiblewidgets.lib;imageformats\qwebp.lib;libeay32MT.lib;ssleay32MT.lib;Crypt32.lib;zlibstat.lib;lib_exif.lib;UxTheme.lib;DbgHelp.lib;LzmaLib.lib;OpenAL32.lib;common.lib;opusfile.lib;opus.lib;libogg_static.lib;celt.lib;silk_common.lib;silk_float.lib;%(AdditionalDependencies) $(SolutionDir)$(Platform)\$(Configuration)Intermediate\$(TargetName).lib @@ -1777,8 +1777,10 @@ + + diff --git a/Telegram/Telegram.vcxproj.filters b/Telegram/Telegram.vcxproj.filters index 2ecce7cae..848c332f5 100644 --- a/Telegram/Telegram.vcxproj.filters +++ b/Telegram/Telegram.vcxproj.filters @@ -1051,5 +1051,11 @@ langs + + langs + + + langs + \ No newline at end of file diff --git a/Telegram/Telegram.xcodeproj/project.pbxproj b/Telegram/Telegram.xcodeproj/project.pbxproj index 2b49650a7..e4d3573e7 100644 --- a/Telegram/Telegram.xcodeproj/project.pbxproj +++ b/Telegram/Telegram.xcodeproj/project.pbxproj @@ -1589,7 +1589,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 0.7.3; + CURRENT_PROJECT_VERSION = 0.7.4; DEBUG_INFORMATION_FORMAT = dwarf; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; @@ -1607,7 +1607,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 0.7.3; + CURRENT_PROJECT_VERSION = 0.7.4; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; GCC_OPTIMIZATION_LEVEL = fast; GCC_PREFIX_HEADER = ./SourceFiles/stdafx.h; @@ -1633,10 +1633,10 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = ""; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 0.7.3; + CURRENT_PROJECT_VERSION = 0.7.4; DEBUG_INFORMATION_FORMAT = dwarf; DYLIB_COMPATIBILITY_VERSION = 0.7; - DYLIB_CURRENT_VERSION = 0.7.3; + DYLIB_CURRENT_VERSION = 0.7.4; ENABLE_STRICT_OBJC_MSGSEND = YES; FRAMEWORK_SEARCH_PATHS = ""; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; @@ -1776,10 +1776,10 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = ""; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 0.7.3; + CURRENT_PROJECT_VERSION = 0.7.4; DEBUG_INFORMATION_FORMAT = dwarf; DYLIB_COMPATIBILITY_VERSION = 0.7; - DYLIB_CURRENT_VERSION = 0.7.3; + DYLIB_CURRENT_VERSION = 0.7.4; ENABLE_STRICT_OBJC_MSGSEND = YES; FRAMEWORK_SEARCH_PATHS = ""; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; diff --git a/Telegram/Version.sh b/Telegram/Version.sh index d433d5cbe..58276c474 100755 --- a/Telegram/Version.sh +++ b/Telegram/Version.sh @@ -1,2 +1,2 @@ -echo 7003 0.7.3 +echo 7004 0.7.4