mirror of https://github.com/procxx/kepka.git
version 0.7.4 - german and dutch languages, some lang fixes
This commit is contained in:
parent
6e969d5e85
commit
a495c247ac
|
@ -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%..
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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<MTPDocumentAttribute> &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) {
|
||||
|
|
|
@ -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<MTPDocumentAttribute> &attributes = QVector<MTPDocumentAttribute>(), 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);
|
||||
|
|
|
@ -455,15 +455,15 @@ void Application::uploadProfilePhoto(const QImage &tosend, const PeerId &peerId)
|
|||
PreparedPhotoThumbs photoThumbs;
|
||||
QVector<MTPPhotoSize> 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);
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -36,6 +36,8 @@ public:
|
|||
void setText(const QString &text);
|
||||
void setWidth(int32 w);
|
||||
|
||||
int32 textWidth() const;
|
||||
|
||||
~FlatButton() {
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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<uint64, uint64> 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<Image> {
|
||||
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)) {
|
||||
}
|
||||
|
|
|
@ -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<MTPDocumentAttribute> &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<MTPDocumentAttribute> &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<HistoryForwarded*>(msg) ? dynamic_cast<HistoryForwarded*>(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();
|
||||
}
|
||||
|
|
|
@ -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<MTPDocumentAttribute> &attributes = QVector<MTPDocumentAttribute>(), const QString &mime = QString(), const ImagePtr &thumb = ImagePtr(), int32 dc = 0, int32 size = 0);
|
||||
void setattributes(const QVector<MTPDocumentAttribute> &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:
|
||||
|
||||
|
|
|
@ -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<MTPDocumentAttribute> _composeDocumentAttributes(DocumentData *document) {
|
||||
QVector<MTPDocumentAttribute> 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<MTPDocumentAttribute>(attributes);
|
||||
}
|
||||
}
|
||||
|
||||
void HistoryWidget::onDocumentUploaded(MsgId newId, const MTPInputFile &file) {
|
||||
if (!MTP::authedId()) return;
|
||||
HistoryMessage *item = dynamic_cast<HistoryMessage*>(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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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]);
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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<MTPPhotoSize> photoSizes;
|
||||
|
||||
QVector<MTPDocumentAttribute> 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<MTPDocumentAttribute>(attributes));
|
||||
}
|
||||
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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<QWheelEvent*>(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);
|
||||
}
|
||||
|
|
|
@ -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 <typename bareT>
|
||||
class MTPBoxed : public bareT {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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> MTPResPQ;
|
||||
|
@ -1078,6 +1091,7 @@ typedef MTPBoxed<MTPprivacyRule> MTPPrivacyRule;
|
|||
typedef MTPBoxed<MTPaccount_privacyRules> MTPaccount_PrivacyRules;
|
||||
typedef MTPBoxed<MTPaccountDaysTTL> MTPAccountDaysTTL;
|
||||
typedef MTPBoxed<MTPaccount_sentChangePhoneCode> MTPaccount_SentChangePhoneCode;
|
||||
typedef MTPBoxed<MTPdocumentAttribute> 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<MTPDocumentAttribute> &_attributes);
|
||||
friend MTPinputMedia MTP_inputMediaUploadedThumbDocument(const MTPInputFile &_file, const MTPInputFile &_thumb, const MTPstring &_mime_type, const MTPVector<MTPDocumentAttribute> &_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<MTPContact> &_contacts, const MTPVector<MTPUser> &_users);
|
||||
friend MTPcontacts_contacts MTP_contacts_contactsNotModified();
|
||||
friend MTPcontacts_contacts MTP_contacts_contacts(const MTPVector<MTPContact> &_contacts, const MTPVector<MTPUser> &_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<MTPDocumentAttribute> &_attributes);
|
||||
|
||||
mtpTypeId _type;
|
||||
};
|
||||
|
@ -7038,6 +7052,87 @@ private:
|
|||
};
|
||||
typedef MTPBoxed<MTPaccount_sentChangePhoneCode> 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> MTPDocumentAttribute;
|
||||
|
||||
// Type constructors with data
|
||||
|
||||
class MTPDresPQ : public mtpDataImpl<MTPDresPQ> {
|
||||
|
@ -7557,25 +7652,25 @@ class MTPDinputMediaUploadedDocument : public mtpDataImpl<MTPDinputMediaUploaded
|
|||
public:
|
||||
MTPDinputMediaUploadedDocument() {
|
||||
}
|
||||
MTPDinputMediaUploadedDocument(const MTPInputFile &_file, const MTPstring &_file_name, const MTPstring &_mime_type) : vfile(_file), vfile_name(_file_name), vmime_type(_mime_type) {
|
||||
MTPDinputMediaUploadedDocument(const MTPInputFile &_file, const MTPstring &_mime_type, const MTPVector<MTPDocumentAttribute> &_attributes) : vfile(_file), vmime_type(_mime_type), vattributes(_attributes) {
|
||||
}
|
||||
|
||||
MTPInputFile vfile;
|
||||
MTPstring vfile_name;
|
||||
MTPstring vmime_type;
|
||||
MTPVector<MTPDocumentAttribute> vattributes;
|
||||
};
|
||||
|
||||
class MTPDinputMediaUploadedThumbDocument : public mtpDataImpl<MTPDinputMediaUploadedThumbDocument> {
|
||||
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<MTPDocumentAttribute> &_attributes) : vfile(_file), vthumb(_thumb), vmime_type(_mime_type), vattributes(_attributes) {
|
||||
}
|
||||
|
||||
MTPInputFile vfile;
|
||||
MTPInputFile vthumb;
|
||||
MTPstring vfile_name;
|
||||
MTPstring vmime_type;
|
||||
MTPVector<MTPDocumentAttribute> vattributes;
|
||||
};
|
||||
|
||||
class MTPDinputMediaDocument : public mtpDataImpl<MTPDinputMediaDocument> {
|
||||
|
@ -9732,18 +9827,17 @@ class MTPDdocument : public mtpDataImpl<MTPDdocument> {
|
|||
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<MTPDocumentAttribute> &_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<MTPDocumentAttribute> vattributes;
|
||||
};
|
||||
|
||||
class MTPDhelp_support : public mtpDataImpl<MTPDhelp_support> {
|
||||
|
@ -9860,6 +9954,49 @@ public:
|
|||
MTPint vsend_call_timeout;
|
||||
};
|
||||
|
||||
class MTPDdocumentAttributeImageSize : public mtpDataImpl<MTPDdocumentAttributeImageSize> {
|
||||
public:
|
||||
MTPDdocumentAttributeImageSize() {
|
||||
}
|
||||
MTPDdocumentAttributeImageSize(MTPint _w, MTPint _h) : vw(_w), vh(_h) {
|
||||
}
|
||||
|
||||
MTPint vw;
|
||||
MTPint vh;
|
||||
};
|
||||
|
||||
class MTPDdocumentAttributeVideo : public mtpDataImpl<MTPDdocumentAttributeVideo> {
|
||||
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<MTPDdocumentAttributeAudio> {
|
||||
public:
|
||||
MTPDdocumentAttributeAudio() {
|
||||
}
|
||||
MTPDdocumentAttributeAudio(MTPint _duration) : vduration(_duration) {
|
||||
}
|
||||
|
||||
MTPint vduration;
|
||||
};
|
||||
|
||||
class MTPDdocumentAttributeFilename : public mtpDataImpl<MTPDdocumentAttributeFilename> {
|
||||
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<MTPInputPhoto> vid;
|
||||
|
||||
MTPphotos_deletePhotos() {
|
||||
}
|
||||
MTPphotos_deletePhotos(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_photos_deletePhotos) {
|
||||
read(from, end, cons);
|
||||
}
|
||||
MTPphotos_deletePhotos(const MTPVector<MTPInputPhoto> &_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<MTPlong> ResponseType;
|
||||
};
|
||||
class MTPphotos_DeletePhotos : public MTPBoxed<MTPphotos_deletePhotos> {
|
||||
public:
|
||||
MTPphotos_DeletePhotos() {
|
||||
}
|
||||
MTPphotos_DeletePhotos(const MTPphotos_deletePhotos &v) : MTPBoxed<MTPphotos_deletePhotos>(v) {
|
||||
}
|
||||
MTPphotos_DeletePhotos(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = 0) : MTPBoxed<MTPphotos_deletePhotos>(from, end, cons) {
|
||||
}
|
||||
MTPphotos_DeletePhotos(const MTPVector<MTPInputPhoto> &_id) : MTPBoxed<MTPphotos_deletePhotos>(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<MTPDocumentAttribute> &_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<MTPDocumentAttribute> &_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<MTPContact> &_contacts, const MTPVector<MTPUser> &_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<MTPContact> &_contacts, const MTPVector<MTPUser> &_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<MTPDocumentAttribute> &_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)
|
||||
|
||||
|
|
|
@ -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<Contact> users:Vector<User> = contacts.Contacts;
|
||||
contacts.contactsNotModified#b74ba9d2 = contacts.Contacts;
|
||||
contacts.contacts#6f8b8cb2 contacts:Vector<Contact> users:Vector<User> = contacts.Contacts;
|
||||
|
||||
contacts.importedContacts#ad524315 imported:Vector<ImportedContact> retry_contacts:Vector<long> users:Vector<User> = contacts.ImportedContacts;
|
||||
|
||||
|
@ -459,8 +459,8 @@ updateDcOptions#8e5e9873 dc_options:Vector<DcOption> = 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<DocumentAttribute> = InputMedia;
|
||||
inputMediaUploadedThumbDocument#41481486 file:InputFile thumb:InputFile mime_type:string attributes:Vector<DocumentAttribute> = 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<DocumentAttribute> = 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<InputPhoto> = Vector<long>;
|
||||
|
||||
upload.saveFilePart#b304a621 file_id:long file_part:int bytes:bytes = Bool;
|
||||
upload.getFile#e3a6cfb5 location:InputFileLocation offset:int limit:int = upload.File;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -1094,7 +1094,7 @@
|
|||
<glob pattern="*.pgp"/>
|
||||
<glob pattern="*.gpg"/>
|
||||
</mime-type>
|
||||
|
||||
|
||||
<mime-type type="application/pkcs7-mime">
|
||||
<comment>PKCS#7 Message or Certificate</comment>
|
||||
<acronym>PKCS</acronym>
|
||||
|
@ -1967,7 +1967,7 @@
|
|||
<sub-class-of type="video/x-flv"/>
|
||||
</mime-type>
|
||||
<mime-type type="application/x-go-sgf">
|
||||
|
||||
|
||||
<comment>SGF record</comment>
|
||||
<comment xml:lang="ar">تسجيلة SGF</comment>
|
||||
<comment xml:lang="be@latin">Zapisanaja hulnia SGF</comment>
|
||||
|
@ -5602,7 +5602,7 @@
|
|||
<generic-icon name="x-office-document"/>
|
||||
<magic priority="50">
|
||||
<match value="WPC" type="string" offset="1"/>
|
||||
|
||||
|
||||
</magic>
|
||||
<glob pattern="*.wp"/>
|
||||
<glob pattern="*.wp4"/>
|
||||
|
@ -9726,7 +9726,7 @@
|
|||
</magic>
|
||||
</mime-type>
|
||||
<mime-type type="application/x-genesis-rom">
|
||||
|
||||
|
||||
<comment>Genesis ROM</comment>
|
||||
<comment xml:lang="ar">Genesis ROM</comment>
|
||||
<comment xml:lang="be@latin">Genesis ROM</comment>
|
||||
|
@ -12540,11 +12540,11 @@
|
|||
<comment xml:lang="zh_TW">Matroska 串流</comment>
|
||||
<generic-icon name="video-x-generic"/>
|
||||
<magic priority="50">
|
||||
|
||||
|
||||
<match value="0x1a45dfa3" type="big32" offset="0">
|
||||
|
||||
|
||||
<match value="0x4282" type="big16" offset="5:65">
|
||||
|
||||
|
||||
<match value="matroska" type="string" offset="8:75"/>
|
||||
</match>
|
||||
</match>
|
||||
|
@ -12694,11 +12694,11 @@
|
|||
<comment xml:lang="zh_TW">WebM 視訊</comment>
|
||||
<glob pattern="*.webm"/>
|
||||
<magic priority="50">
|
||||
|
||||
|
||||
<match value="0x1a45dfa3" type="big32" offset="0">
|
||||
|
||||
|
||||
<match value="0x4282" type="big16" offset="5:65">
|
||||
|
||||
|
||||
<match value="webm" type="string" offset="8:75"/>
|
||||
</match>
|
||||
</match>
|
||||
|
@ -12925,7 +12925,7 @@
|
|||
<glob pattern="*.mobi"/>
|
||||
<glob pattern="*.prc"/>
|
||||
<magic priority="30">
|
||||
|
||||
|
||||
<match value="TEXtREAd" type="string" offset="60"/>
|
||||
</magic>
|
||||
<magic priority="80">
|
||||
|
@ -13394,7 +13394,7 @@
|
|||
</magic>
|
||||
</mime-type>
|
||||
<mime-type type="application/x-nes-rom">
|
||||
|
||||
|
||||
<comment>NES ROM</comment>
|
||||
<comment xml:lang="ar">NES ROM</comment>
|
||||
<comment xml:lang="be@latin">NES ROM</comment>
|
||||
|
@ -14224,7 +14224,7 @@
|
|||
</magic>
|
||||
<glob pattern="*.ogm"/>
|
||||
</mime-type>
|
||||
|
||||
|
||||
<mime-type type="application/x-ole-storage">
|
||||
<comment>OLE2 compound document storage</comment>
|
||||
<comment xml:lang="ar">تخزين مجمع مستند OLE2</comment>
|
||||
|
@ -15954,7 +15954,7 @@
|
|||
<glob pattern="*.spl"/>
|
||||
</mime-type>
|
||||
<mime-type type="application/x-shorten">
|
||||
|
||||
|
||||
<comment>Shorten audio</comment>
|
||||
<comment xml:lang="ar">Shorten سمعي</comment>
|
||||
<comment xml:lang="be@latin">Aŭdyjo Shorten</comment>
|
||||
|
@ -16204,7 +16204,7 @@
|
|||
<glob pattern="*.gg"/>
|
||||
</mime-type>
|
||||
<mime-type type="application/vnd.nintendo.snes.rom">
|
||||
|
||||
|
||||
<comment>Super NES ROM</comment>
|
||||
<comment xml:lang="ar">Super NES ROM</comment>
|
||||
<comment xml:lang="be@latin">Super Nintendo ROM</comment>
|
||||
|
@ -18246,10 +18246,10 @@
|
|||
<mime-type type="audio/vnd.dts">
|
||||
<comment>DTS audio</comment>
|
||||
<magic priority="50">
|
||||
<match value="0x7FFE8001" type="big32" offset="0"/>
|
||||
<match value="0xFE7F0180" type="little32" offset="0"/>
|
||||
<match value="0x1FFFE800" type="big32" offset="0"/>
|
||||
<match value="0xFF1F00E8" type="little32" offset="0"/>
|
||||
<match value="0x7FFE8001" type="big32" offset="0"/>
|
||||
<match value="0xFE7F0180" type="little32" offset="0"/>
|
||||
<match value="0x1FFFE800" type="big32" offset="0"/>
|
||||
<match value="0xFF1F00E8" type="little32" offset="0"/>
|
||||
</magic>
|
||||
<alias type="audio/x-dts"/>
|
||||
<glob pattern="*.dts"/>
|
||||
|
@ -18258,7 +18258,7 @@
|
|||
<comment>DTSHD audio</comment>
|
||||
<sub-class-of type="audio/vnd.dts"/>
|
||||
<magic priority="60">
|
||||
<match value="0x64582025" type="big32" offset="0:18725"/>
|
||||
<match value="0x64582025" type="big32" offset="0:18725"/>
|
||||
</magic>
|
||||
<alias type="audio/x-dtshd"/>
|
||||
<glob pattern="*.dtshd"/>
|
||||
|
@ -20213,7 +20213,7 @@
|
|||
<comment xml:lang="vi">Âm thanh RIFF</comment>
|
||||
<comment xml:lang="zh_CN">RIFF 音频</comment>
|
||||
<comment xml:lang="zh_TW">RIFF 音訊</comment>
|
||||
|
||||
|
||||
<magic priority="45">
|
||||
<match value="RIFF" type="string" offset="0"/>
|
||||
</magic>
|
||||
|
@ -21183,6 +21183,58 @@
|
|||
</magic>
|
||||
<glob pattern="*.ora"/>
|
||||
</mime-type>
|
||||
<mime-type type="image/webp">
|
||||
<comment>WebP image</comment>
|
||||
<comment xml:lang="ar">صورة WebP</comment>
|
||||
<comment xml:lang="az">WebP rəsmi</comment>
|
||||
<comment xml:lang="be@latin">Vyjava WebP</comment>
|
||||
<comment xml:lang="bg">Изображение — WebP</comment>
|
||||
<comment xml:lang="ca">imatge WebP</comment>
|
||||
<comment xml:lang="cs">Obrázek WebP</comment>
|
||||
<comment xml:lang="cy">Delwedd WebP</comment>
|
||||
<comment xml:lang="da">WebP-billede</comment>
|
||||
<comment xml:lang="de">WebP-Bild</comment>
|
||||
<comment xml:lang="el">εικόνα WebP</comment>
|
||||
<comment xml:lang="en_GB">WebP image</comment>
|
||||
<comment xml:lang="eo">WebP-bildo</comment>
|
||||
<comment xml:lang="es">imagen WebP</comment>
|
||||
<comment xml:lang="eu">WebP irudia</comment>
|
||||
<comment xml:lang="fi">WebP-kuva</comment>
|
||||
<comment xml:lang="fo">WebP mynd</comment>
|
||||
<comment xml:lang="fr">image WebP</comment>
|
||||
<comment xml:lang="ga">íomhá WebP</comment>
|
||||
<comment xml:lang="gl">imaxe WebP</comment>
|
||||
<comment xml:lang="he">תמונת WebP</comment>
|
||||
<comment xml:lang="hr">WebP slika</comment>
|
||||
<comment xml:lang="hu">WebP-kép</comment>
|
||||
<comment xml:lang="id">Citra WebP</comment>
|
||||
<comment xml:lang="it">Immagine WebP</comment>
|
||||
<comment xml:lang="ja">WebP 画像 </comment>
|
||||
<comment xml:lang="kk">WebP суреті</comment>
|
||||
<comment xml:lang="ko">WebP 그림</comment>
|
||||
<comment xml:lang="lt">WebP paveikslėlis</comment>
|
||||
<comment xml:lang="lv">WebP attēls</comment>
|
||||
<comment xml:lang="ms">Imej WebP</comment>
|
||||
<comment xml:lang="nb">WebP-bilde</comment>
|
||||
<comment xml:lang="nl">WebP-afbeelding</comment>
|
||||
<comment xml:lang="nn">WebP-bilete</comment>
|
||||
<comment xml:lang="pl">Obraz WebP</comment>
|
||||
<comment xml:lang="pt">imagem WebP</comment>
|
||||
<comment xml:lang="pt_BR">Imagem WebP</comment>
|
||||
<comment xml:lang="ro">Imagine WebP</comment>
|
||||
<comment xml:lang="ru">изображение WebP</comment>
|
||||
<comment xml:lang="sk">Obrázok WebP</comment>
|
||||
<comment xml:lang="sl">Slikovna datoteka WebP</comment>
|
||||
<comment xml:lang="sq">Figurë WebP</comment>
|
||||
<comment xml:lang="sr">WebP слика</comment>
|
||||
<comment xml:lang="sv">WebP-bild</comment>
|
||||
<comment xml:lang="tr">WebP görüntüsü</comment>
|
||||
<comment xml:lang="uk">зображення WebP</comment>
|
||||
<comment xml:lang="vi">Ảnh WebP</comment>
|
||||
<comment xml:lang="zh_CN">WebP 图像</comment>
|
||||
<comment xml:lang="zh_TW">WebP 影像</comment>
|
||||
<glob pattern="*.webp"/>
|
||||
</mime-type>
|
||||
<mime-type type="image/x-dds">
|
||||
<comment>DirectDraw surface</comment>
|
||||
<comment xml:lang="ar">مساحة DirectDraw</comment>
|
||||
|
@ -21541,8 +21593,8 @@
|
|||
<sub-class-of type="image/tiff"/>
|
||||
<glob pattern="*.dng"/>
|
||||
</mime-type>
|
||||
|
||||
|
||||
|
||||
|
||||
<mime-type type="image/x-canon-crw">
|
||||
<comment>Canon CRW raw image</comment>
|
||||
<comment xml:lang="ar">صورة Canon CRW خامة</comment>
|
||||
|
@ -21594,7 +21646,7 @@
|
|||
</magic>
|
||||
<glob pattern="*.crw"/>
|
||||
</mime-type>
|
||||
|
||||
|
||||
<mime-type type="image/x-canon-cr2">
|
||||
<comment>Canon CR2 raw image</comment>
|
||||
<comment xml:lang="ar">صورة Canon CR2 خامة</comment>
|
||||
|
@ -21987,11 +22039,11 @@
|
|||
<expanded-acronym>Olympus Raw Format</expanded-acronym>
|
||||
<sub-class-of type="image/x-dcraw"/>
|
||||
<magic priority="50">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<match value="IIRO\x08\x00\x00\x00" type="string" offset="0"/>
|
||||
</magic>
|
||||
<glob pattern="*.orf"/>
|
||||
|
@ -22039,7 +22091,7 @@
|
|||
<comment xml:lang="zh_TW">Panasonic 原生影像</comment>
|
||||
<sub-class-of type="image/x-dcraw"/>
|
||||
<magic priority="50">
|
||||
|
||||
|
||||
<match value="IIU\x00\x08\x00\x00\x00" type="string" offset="0"/>
|
||||
</magic>
|
||||
<glob pattern="*.raw"/>
|
||||
|
@ -22077,7 +22129,7 @@
|
|||
<comment xml:lang="zh_TW">Panasonic raw2 影像</comment>
|
||||
<sub-class-of type="image/x-dcraw"/>
|
||||
<magic priority="50">
|
||||
|
||||
|
||||
<match value="IIU\x00\x18\x00\x00\x00" type="string" offset="0"/>
|
||||
</magic>
|
||||
<glob pattern="*.rw2"/>
|
||||
|
@ -22176,9 +22228,9 @@
|
|||
<expanded-acronym>X3 Foveon</expanded-acronym>
|
||||
<sub-class-of type="image/x-dcraw"/>
|
||||
<magic priority="50">
|
||||
|
||||
|
||||
<match value="FOVb" type="string" offset="0">
|
||||
|
||||
|
||||
<match value="0x00FF00FF" type="little32" offset="4" mask="0xFF00FF00"/>
|
||||
</match>
|
||||
</magic>
|
||||
|
@ -24784,14 +24836,14 @@
|
|||
<acronym>WMF</acronym>
|
||||
<expanded-acronym>Windows Metafile</expanded-acronym>
|
||||
<magic priority="50">
|
||||
|
||||
|
||||
<match value="0x9AC6CDD7" type="little32" offset="0">
|
||||
|
||||
|
||||
<match value="0x0001" type="little16" offset="22">
|
||||
<match value="0x0009" type="little16" offset="24"/>
|
||||
</match>
|
||||
</match>
|
||||
|
||||
|
||||
<match value="0x0001" type="little16" offset="0">
|
||||
<match value="0x0009" type="little16" offset="2"/>
|
||||
</match>
|
||||
|
@ -30849,7 +30901,7 @@
|
|||
<comment xml:lang="zh_CN">资源位置</comment>
|
||||
<comment xml:lang="zh_TW">資源位置</comment>
|
||||
<sub-class-of type="text/plain"/>
|
||||
|
||||
|
||||
</mime-type>
|
||||
<mime-type type="text/x-uuencode">
|
||||
<comment>uuencoded file</comment>
|
||||
|
@ -33140,9 +33192,9 @@
|
|||
<alias type="zz-application/zz-winassoc-hlp"/>
|
||||
</mime-type>
|
||||
|
||||
|
||||
|
||||
<mime-type type="x-content/image-dcf">
|
||||
|
||||
|
||||
<comment>digital photos</comment>
|
||||
<comment xml:lang="ar">الصور الرقمية</comment>
|
||||
<comment xml:lang="be@latin">ličbavyja zdymki</comment>
|
||||
|
@ -33190,7 +33242,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/video-vcd">
|
||||
|
||||
|
||||
<comment>Video CD</comment>
|
||||
<comment xml:lang="ar">Video CD</comment>
|
||||
<comment xml:lang="be@latin">Videa CD</comment>
|
||||
|
@ -33239,7 +33291,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/video-svcd">
|
||||
|
||||
|
||||
<comment>Super Video CD</comment>
|
||||
<comment xml:lang="ar">Super Video CD</comment>
|
||||
<comment xml:lang="be@latin">Super Video CD</comment>
|
||||
|
@ -33288,7 +33340,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/video-dvd">
|
||||
|
||||
|
||||
<comment>video DVD</comment>
|
||||
<comment xml:lang="ar">DVD مرئي</comment>
|
||||
<comment xml:lang="be@latin">videa DVD</comment>
|
||||
|
@ -33341,7 +33393,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/audio-cdda">
|
||||
|
||||
|
||||
<comment>audio CD</comment>
|
||||
<comment xml:lang="ar">CD سمعي</comment>
|
||||
<comment xml:lang="be@latin">aŭdyjo CD</comment>
|
||||
|
@ -33387,7 +33439,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/blank-cd">
|
||||
|
||||
|
||||
<comment>blank CD disc</comment>
|
||||
<comment xml:lang="ar">قرص CD فارغ</comment>
|
||||
<comment xml:lang="be@latin">čysty dysk CD</comment>
|
||||
|
@ -33432,7 +33484,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/blank-dvd">
|
||||
|
||||
|
||||
<comment>blank DVD disc</comment>
|
||||
<comment xml:lang="ar">قرص DVD فارغ</comment>
|
||||
<comment xml:lang="be@latin">čysty dysk DVD</comment>
|
||||
|
@ -33477,7 +33529,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/blank-bd">
|
||||
|
||||
|
||||
<comment>blank Blu-ray disc</comment>
|
||||
<comment xml:lang="ar">قرص بلو-راي فارغ</comment>
|
||||
<comment xml:lang="be@latin">čysty dysk Blu-ray</comment>
|
||||
|
@ -33522,7 +33574,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/blank-hddvd">
|
||||
|
||||
|
||||
<comment>blank HD DVD disc</comment>
|
||||
<comment xml:lang="ar">قرص HD DVD فارغ</comment>
|
||||
<comment xml:lang="be@latin">čysty dysk HD DVD</comment>
|
||||
|
@ -33567,7 +33619,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/audio-dvd">
|
||||
|
||||
|
||||
<comment>audio DVD</comment>
|
||||
<comment xml:lang="ar">DVD سمعي</comment>
|
||||
<comment xml:lang="be@latin">aŭdyjo DVD</comment>
|
||||
|
@ -33617,7 +33669,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/video-bluray">
|
||||
|
||||
|
||||
<comment>Blu-ray video disc</comment>
|
||||
<comment xml:lang="ar">قرص بلو-راي مرئي</comment>
|
||||
<comment xml:lang="be@latin">Videadysk Blu-ray</comment>
|
||||
|
@ -33667,7 +33719,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/video-hddvd">
|
||||
|
||||
|
||||
<comment>HD DVD video disc</comment>
|
||||
<comment xml:lang="ar">قرص HD DVD مرئي</comment>
|
||||
<comment xml:lang="be@latin">Videadysk HD DVD</comment>
|
||||
|
@ -33717,7 +33769,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/ebook-reader">
|
||||
|
||||
|
||||
<comment>e-book reader</comment>
|
||||
<comment xml:lang="bg">Четец на е-книги</comment>
|
||||
<comment xml:lang="ca">lector de llibres electrònics</comment>
|
||||
|
@ -33755,7 +33807,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/image-picturecd">
|
||||
|
||||
|
||||
<comment>Picture CD</comment>
|
||||
<comment xml:lang="ar">Picture CD</comment>
|
||||
<comment xml:lang="be@latin">Picture CD</comment>
|
||||
|
@ -33803,7 +33855,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/audio-player">
|
||||
|
||||
|
||||
<comment>portable audio player</comment>
|
||||
<comment xml:lang="ar">مشغل الملفات المسموعة المحمولة</comment>
|
||||
<comment xml:lang="be@latin">pieranosny aŭdyjoplayer</comment>
|
||||
|
@ -33848,7 +33900,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/software">
|
||||
|
||||
|
||||
<comment>software</comment>
|
||||
<comment xml:lang="ar">برنامج</comment>
|
||||
<comment xml:lang="be@latin">prahrama</comment>
|
||||
|
@ -33894,7 +33946,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/unix-software">
|
||||
|
||||
|
||||
<comment>UNIX software</comment>
|
||||
<comment xml:lang="ar">برنامج يونكس</comment>
|
||||
<comment xml:lang="bg">Софтуер за UNIX</comment>
|
||||
|
@ -33942,7 +33994,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="x-content/win32-software">
|
||||
|
||||
|
||||
<comment>Windows software</comment>
|
||||
<comment xml:lang="ar">برنامج ويندوز</comment>
|
||||
<comment xml:lang="bg">Софтуер — Windows</comment>
|
||||
|
@ -33988,7 +34040,7 @@
|
|||
</mime-type>
|
||||
|
||||
<mime-type type="application/x-trig">
|
||||
|
||||
|
||||
<comment>TriG RDF document</comment>
|
||||
<acronym>TriG</acronym>
|
||||
<expanded-acronym>TriG RDF Graph Triple Language</expanded-acronym>
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -44,5 +44,7 @@
|
|||
<qresource prefix="/langs">
|
||||
<file alias="lang_it.strings">langs/lang_it.strings</file>
|
||||
<file alias="lang_es.strings">langs/lang_es.strings</file>
|
||||
<file alias="lang_de.strings">langs/lang_de.strings</file>
|
||||
<file alias="lang_nl.strings">langs/lang_nl.strings</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.7.3</string>
|
||||
<string>0.7.4</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
|
|
Binary file not shown.
|
@ -79,7 +79,7 @@
|
|||
<SubSystem>Windows</SubSystem>
|
||||
<OutputFile>$(OutDir)$(ProjectName).exe</OutputFile>
|
||||
<AdditionalLibraryDirectories>.\..\..\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)</AdditionalLibraryDirectories>
|
||||
<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;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)</AdditionalDependencies>
|
||||
<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)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ImageHasSafeExceptionHandlers />
|
||||
<IgnoreSpecificDefaultLibraries>
|
||||
|
@ -108,7 +108,7 @@
|
|||
<SubSystem>Windows</SubSystem>
|
||||
<OutputFile>$(OutDir)$(ProjectName).exe</OutputFile>
|
||||
<AdditionalLibraryDirectories>.\..\..\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)</AdditionalLibraryDirectories>
|
||||
<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;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)</AdditionalDependencies>
|
||||
<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)</AdditionalDependencies>
|
||||
<ImageHasSafeExceptionHandlers />
|
||||
<ImportLibrary>$(SolutionDir)$(Platform)\$(Configuration)Intermediate\$(TargetName).lib</ImportLibrary>
|
||||
<ProfileGuidedDatabase>$(IntDir)$(TargetName).pgd</ProfileGuidedDatabase>
|
||||
|
@ -135,7 +135,7 @@
|
|||
<SubSystem>Windows</SubSystem>
|
||||
<OutputFile>$(OutDir)$(ProjectName).exe</OutputFile>
|
||||
<AdditionalLibraryDirectories>.\..\..\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)</AdditionalLibraryDirectories>
|
||||
<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;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)</AdditionalDependencies>
|
||||
<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)</AdditionalDependencies>
|
||||
<ImageHasSafeExceptionHandlers>
|
||||
</ImageHasSafeExceptionHandlers>
|
||||
<ImportLibrary>$(SolutionDir)$(Platform)\$(Configuration)Intermediate\$(TargetName).lib</ImportLibrary>
|
||||
|
@ -1777,8 +1777,10 @@
|
|||
<ResourceCompile Include="Telegram.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="SourceFiles\langs\lang_de.strings" />
|
||||
<None Include="SourceFiles\langs\lang_es.strings" />
|
||||
<None Include="SourceFiles\langs\lang_it.strings" />
|
||||
<None Include="SourceFiles\langs\lang_nl.strings" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
|
|
@ -1051,5 +1051,11 @@
|
|||
<None Include="SourceFiles\langs\lang_es.strings">
|
||||
<Filter>langs</Filter>
|
||||
</None>
|
||||
<None Include="SourceFiles\langs\lang_de.strings">
|
||||
<Filter>langs</Filter>
|
||||
</None>
|
||||
<None Include="SourceFiles\langs\lang_nl.strings">
|
||||
<Filter>langs</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -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;
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
echo 7003 0.7.3
|
||||
echo 7004 0.7.4
|
||||
|
||||
|
|
Loading…
Reference in New Issue