From 84c2a33c1863ac2f8030f057f4e253116de310b1 Mon Sep 17 00:00:00 2001 From: John Preston Date: Mon, 15 Jun 2015 20:19:24 +0300 Subject: [PATCH] 0.8.25.dev version with ipv6, bots profiles, keyboard and command autocomplete + elided text align fixed --- Telegram/PrepareWin.bat | 10 +- Telegram/Resources/lang.strings | 14 +- Telegram/Resources/style.txt | 41 +- Telegram/Resources/style_classes.txt | 8 + Telegram/SourceFiles/apiwrap.cpp | 17 +- Telegram/SourceFiles/apiwrap.h | 2 +- Telegram/SourceFiles/app.cpp | 153 ++++- Telegram/SourceFiles/app.h | 12 +- Telegram/SourceFiles/application.cpp | 6 +- Telegram/SourceFiles/art/sprite.png | Bin 170214 -> 170813 bytes Telegram/SourceFiles/art/sprite_200x.png | Bin 223607 -> 224571 bytes Telegram/SourceFiles/boxes/contactsbox.cpp | 162 +++-- Telegram/SourceFiles/boxes/contactsbox.h | 13 +- Telegram/SourceFiles/config.h | 6 +- Telegram/SourceFiles/dialogswidget.cpp | 53 +- Telegram/SourceFiles/dialogswidget.h | 5 +- Telegram/SourceFiles/dropdown.cpp | 238 +++++-- Telegram/SourceFiles/dropdown.h | 9 +- Telegram/SourceFiles/gui/flattextarea.cpp | 36 +- Telegram/SourceFiles/gui/flattextarea.h | 4 +- Telegram/SourceFiles/gui/scrollarea.cpp | 4 + Telegram/SourceFiles/gui/scrollarea.h | 2 + Telegram/SourceFiles/gui/text.cpp | 63 +- Telegram/SourceFiles/gui/text.h | 3 +- Telegram/SourceFiles/history.cpp | 104 ++- Telegram/SourceFiles/history.h | 44 +- Telegram/SourceFiles/historywidget.cpp | 698 +++++++++++++++++--- Telegram/SourceFiles/historywidget.h | 85 ++- Telegram/SourceFiles/mainwidget.cpp | 24 +- Telegram/SourceFiles/mainwidget.h | 5 +- Telegram/SourceFiles/profilewidget.cpp | 150 ++++- Telegram/SourceFiles/profilewidget.h | 13 +- Telegram/SourceFiles/settings.cpp | 1 + Telegram/SourceFiles/settings.h | 1 + Telegram/SourceFiles/structs.cpp | 9 +- Telegram/SourceFiles/structs.h | 6 +- Telegram/SourceFiles/types.h | 3 +- Telegram/SourceFiles/window.cpp | 1 + Telegram/Telegram.plist | 2 +- Telegram/Telegram.rc | Bin 5540 -> 5540 bytes Telegram/Telegram.xcodeproj/project.pbxproj | 12 +- Telegram/Version.sh | 2 +- 42 files changed, 1667 insertions(+), 354 deletions(-) diff --git a/Telegram/PrepareWin.bat b/Telegram/PrepareWin.bat index d7b546d08..262c7a1fa 100644 --- a/Telegram/PrepareWin.bat +++ b/Telegram/PrepareWin.bat @@ -1,10 +1,10 @@ @echo OFF -set "AppVersion=8024" -set "AppVersionStrSmall=0.8.24" -set "AppVersionStr=0.8.24" -set "AppVersionStrFull=0.8.24.0" -set "DevChannel=0" +set "AppVersion=8025" +set "AppVersionStrSmall=0.8.25" +set "AppVersionStr=0.8.25" +set "AppVersionStrFull=0.8.25.0" +set "DevChannel=1" if %DevChannel% neq 0 goto preparedev diff --git a/Telegram/Resources/lang.strings b/Telegram/Resources/lang.strings index 7ecf842e1..f0fb249ad 100644 --- a/Telegram/Resources/lang.strings +++ b/Telegram/Resources/lang.strings @@ -70,6 +70,8 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_status_service_notifications" = "service notifications"; "lng_status_bot" = "bot"; +"lng_status_bot_reads_all" = "sees all messages"; +"lng_status_bot_not_reads_all" = "only sees messages starting with /"; "lng_status_offline" = "last seen a long time ago"; "lng_status_recently" = "last seen recently"; "lng_status_last_week" = "last seen within a week"; @@ -334,7 +336,10 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_profile_chat_unaccessible" = "Group is unaccessible"; "lng_topbar_info" = "Info"; +"lng_profile_about_section" = "About"; "lng_profile_settings_section" = "Settings"; +"lng_profile_bot_settings" = "Settings"; +"lng_profile_bot_help" = "Help"; "lng_profile_participants_section" = "Members"; "lng_profile_info" = "Contact info"; "lng_profile_group_info" = "Group info"; @@ -344,6 +349,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_profile_clear_history" = "Clear history"; "lng_profile_send_message" = "Send Message"; "lng_profile_share_contact" = "Share Contact"; +"lng_profile_invite_to_group" = "Add to Group"; "lng_profile_delete_contact" = "Delete"; "lng_profile_set_group_photo" = "Set Photo"; "lng_profile_add_participant" = "Add Member"; @@ -458,6 +464,12 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_from_you" = "You"; "lng_bot_description" = "What can this bot do?"; +"lng_bot_choose_group" = "Choose Group"; +"lng_bot_no_groups" = "You have no groups"; +"lng_bot_groups_not_found" = "No groups found"; +"lng_bot_sure_invite" = "Add the bot to «{group}»?"; +"lng_bot_already_in_group" = "The bot is already a member of the group."; + "lng_typing" = "typing"; "lng_user_typing" = "{user} is typing"; "lng_users_typing" = "{user} and {second_user} are typing"; @@ -587,7 +599,7 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org "lng_new_version_wrap" = "Telegram Desktop was updated to version {version}\n\n{changes}\n\nFull version history is available here:\n{link}"; "lng_new_version_minor" = "— Bug fixes and other minor improvements"; -"lng_new_version_text" = "— Improved sticker panel\n— Bug fixes and minor stuff"; +"lng_new_version_text" = "This new version includes support for bots using the new bot API. If you're an engineer, create your own bots like @quiz_bot or @hot_or_bot using the @botfather.\n\nLearn more at {blog_link}"; "lng_menu_insert_unicode" = "Insert Unicode control character"; diff --git a/Telegram/Resources/style.txt b/Telegram/Resources/style.txt index 038a267b1..7b34bbfb9 100644 --- a/Telegram/Resources/style.txt +++ b/Telegram/Resources/style.txt @@ -992,6 +992,18 @@ btnAttachEmoji: iconedButton(btnAttachDocument) { width: 33px; } +btnBotKbShow: iconedButton(btnAttachEmoji) { + icon: sprite(375px, 74px, 21px, 16px); + iconPos: point(6px, 16px); + downIcon: sprite(375px, 74px, 21px, 16px); + downIconPos: point(6px, 16px); +} +btnBotKbHide: iconedButton(btnAttachEmoji) { + icon: sprite(352px, 74px, 23px, 14px); + iconPos: point(5px, 17px); + downIcon: sprite(352px, 74px, 23px, 14px); + downIconPos: point(5px, 17px); +} btnRecordAudio: sprite(363px, 366px, 16px, 24px); btnRecordAudioActive: sprite(379px, 366px, 16px, 24px); recordSignalColor: #f17077; @@ -1041,7 +1053,7 @@ textRectMargins: margins(-2px, -1px, -2px, -1px); taMsgField: flatTextarea(taDefFlat) { font: msgFont; } -maxFieldHeight: 250px; +maxFieldHeight: 265px; newMsgSound: ':/gui/art/newmsg.wav'; @@ -1658,6 +1670,31 @@ stickerIconLeft: sprite(342px, 72px, 40px, 1px); stickerIconRight: sprite(342px, 73px, 40px, 1px); stickerIconMove: 400; +botKbDuration: 200; +botKbBg: #f7f7f7; +botKbOverBg: #e8ecef; +botKbDownBg: #dfe3e6; +botKbColor: #8a8a8f; +botKbFont: font(16px); +botKbButton: botKeyboardButton { + margin: 10px; + padding: 14px; + height: 46px; + textTop: 13px; + downTextTop: 14px; +} +botKbTinyButton: botKeyboardButton { + margin: 4px; + padding: 3px; + height: 25px; + textTop: 2px; + downTextTop: 3px; +} +botKbScroll: flatScroll(newScroll) { + deltax: 3px; + width: 10px; +} + mvBgColor: #222; mvBgOpacity: 0.92; mvThickFont: font(fsize semibold); @@ -1887,6 +1924,8 @@ mentionPadding: margins(8px, 5px, 8px, 5px); mentionTop: 11px; mentionFont: linkFont; mentionPhotoSize: msgPhotoSize; +botCommandFont: font(fsize semibold); +botDescFont: font(fsize italic); sessionsHeight: 440px; sessionHeight: 70px; diff --git a/Telegram/Resources/style_classes.txt b/Telegram/Resources/style_classes.txt index 69dc94fe9..2f06f4a85 100644 --- a/Telegram/Resources/style_classes.txt +++ b/Telegram/Resources/style_classes.txt @@ -259,3 +259,11 @@ dropdown { duration: number; width: number; } + +botKeyboardButton { + margin: number; + padding: number; + height: number; + textTop: number; + downTextTop: number; +} diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp index a87b1bd57..56fcd6f5d 100644 --- a/Telegram/SourceFiles/apiwrap.cpp +++ b/Telegram/SourceFiles/apiwrap.cpp @@ -119,6 +119,19 @@ void ApiWrap::gotChatFull(PeerData *peer, const MTPmessages_ChatFull &result) { App::feedUsers(d.vusers); App::feedChats(d.vchats); App::feedParticipants(f.vparticipants); + const QVector &v(f.vbot_info.c_vector().v); + for (QVector::const_iterator i = v.cbegin(), e = v.cend(); i < e; ++i) { + switch (i->type()) { + case mtpc_botInfo: { + const MTPDbotInfo &b(i->c_botInfo()); + UserData *user = App::userLoaded(b.vuser_id.v); + if (user) { + user->setBotInfo(*i); + emit fullPeerUpdated(user); + } + } break; + } + } PhotoData *photo = App::feedPhoto(f.vchat_photo); ChatData *chat = peer->asChat(); if (chat) { @@ -132,7 +145,7 @@ void ApiWrap::gotChatFull(PeerData *peer, const MTPmessages_ChatFull &result) { App::main()->gotNotifySetting(MTP_inputNotifyPeer(peer->input), f.vnotify_settings); _fullRequests.remove(peer); - emit fullPeerLoaded(peer); + emit fullPeerUpdated(peer); } void ApiWrap::gotUserFull(PeerData *peer, const MTPUserFull &result) { @@ -145,7 +158,7 @@ void ApiWrap::gotUserFull(PeerData *peer, const MTPUserFull &result) { peer->asUser()->setBotInfo(d.vbot_info); _fullRequests.remove(peer); - emit fullPeerLoaded(peer); + emit fullPeerUpdated(peer); } bool ApiWrap::gotPeerFailed(PeerData *peer, const RPCError &error) { diff --git a/Telegram/SourceFiles/apiwrap.h b/Telegram/SourceFiles/apiwrap.h index 6a8b80cd7..5b7daff30 100644 --- a/Telegram/SourceFiles/apiwrap.h +++ b/Telegram/SourceFiles/apiwrap.h @@ -40,7 +40,7 @@ public: signals: - void fullPeerLoaded(PeerData *peer); + void fullPeerUpdated(PeerData *peer); public slots: diff --git a/Telegram/SourceFiles/app.cpp b/Telegram/SourceFiles/app.cpp index a8cb9df03..38d7df130 100644 --- a/Telegram/SourceFiles/app.cpp +++ b/Telegram/SourceFiles/app.cpp @@ -55,6 +55,9 @@ namespace { typedef QHash WebPagesData; WebPagesData webPagesData; + typedef QMap ReplyMarkups; + ReplyMarkups replyMarkups; + VideoItems videoItems; AudioItems audioItems; DocumentItems documentItems; @@ -208,7 +211,7 @@ namespace App { int32 onlineForSort(UserData *user, int32 now) { if (isServiceUser(user->id) || user->botInfo) { - return now - 1; + return -1; } int32 online = user->onlineTill; if (online <= 0) { @@ -343,6 +346,7 @@ namespace App { data->setName(lang(lng_deleted), QString(), QString(), QString()); data->setPhoto(MTP_userProfilePhotoEmpty()); data->access = UserNoAccess; + data->setBotInfoVersion(-1); wasContact = (data->contact > 0); status = &emptyStatus; data->contact = -1; @@ -382,7 +386,13 @@ namespace App { status = d.has_status() ? &d.vstatus : &emptyStatus; } wasContact = (data->contact > 0); - if (d.has_bot_info_version()) data->setBotInfoVersion(d.vbot_info_version.v); + if (d.has_bot_info_version()) { + data->setBotInfoVersion(d.vbot_info_version.v); + data->botInfo->readsAllHistory = (d.vflags.v & MTPDuser_flag_bot_reads_all); + data->botInfo->cantJoinGroups = (d.vflags.v & MTPDuser_flag_bot_cant_join); + } else { + data->setBotInfoVersion(-1); + } data->contact = (flags & (MTPDuser_flag_contact | MTPDuser_flag_mutual_contact)) ? 1 : (data->phone.isEmpty() ? -1 : 0); if ((flags & MTPDuser_flag_self) && ::self != data) { ::self = data; @@ -446,6 +456,7 @@ namespace App { if (data->version < d.vversion.v) { data->version = d.vversion.v; data->participants = ChatData::Participants(); + data->botStatus = 0; } } break; case mtpc_chatForbidden: { @@ -479,6 +490,7 @@ namespace App { if (data->version < d.vversion.v) { data->version = d.vversion.v; data->participants = ChatData::Participants(); + data->botStatus = 0; }/**/ } break; } @@ -492,7 +504,7 @@ namespace App { return data; } - void feedParticipants(const MTPChatParticipants &p) { + void feedParticipants(const MTPChatParticipants &p, bool requestBotInfos) { switch (p.type()) { case mtpc_chatParticipantsForbidden: { const MTPDchatParticipantsForbidden &d(p.c_chatParticipantsForbidden()); @@ -519,17 +531,24 @@ namespace App { } } else { chat->participants = ChatData::Participants(); + chat->botStatus = 0; break; } } if (!chat->participants.isEmpty()) { + int32 botStatus = -1; for (ChatData::Participants::iterator i = chat->participants.begin(), e = chat->participants.end(); i != e;) { if (i.value() < pversion) { i = chat->participants.erase(i); } else { + if (i.key()->botInfo) { + botStatus = (botStatus > 0 || i.key()->botInfo->readsAllHistory) ? 2 : 1; + if (requestBotInfos && !i.key()->botInfo->inited) App::api()->requestFullPeer(i.key()); + } ++i; } } + chat->botStatus = botStatus; } if (App::main()) App::main()->peerUpdated(chat); } @@ -545,6 +564,7 @@ namespace App { if (user) { if (chat->participants.isEmpty() && chat->count) { chat->count++; + chat->botStatus = 0; } else if (chat->participants.find(user) == chat->participants.end()) { chat->participants[user] = (chat->participants.isEmpty() ? 1 : chat->participants.begin().value()); if (d.vinviter_id.v == MTP::authedId()) { @@ -553,9 +573,14 @@ namespace App { chat->cankick.remove(user); } chat->count++; + if (user->botInfo) { + chat->botStatus = (chat->botStatus > 0 || !user->botInfo->readsAllHistory) ? 2 : 1; + if (!user->botInfo->inited) App::api()->requestFullPeer(user); + } } } else { chat->participants = ChatData::Participants(); + chat->botStatus = 0; chat->count++; } if (App::main()) App::main()->peerUpdated(chat); @@ -576,9 +601,23 @@ namespace App { chat->participants.erase(i); chat->count--; } + if (chat->botStatus > 0 && user->botInfo) { + int32 botStatus = -1; + for (ChatData::Participants::const_iterator j = chat->participants.cbegin(), e = chat->participants.cend(); j != e; ++j) { + if (j.key()->botInfo) { + if (botStatus > 0 || !j.key()->botInfo->readsAllHistory) { + botStatus = 2; + break; + } + botStatus = 1; + } + } + chat->botStatus = botStatus; + } } } else { chat->participants = ChatData::Participants(); + chat->botStatus = 0; chat->count--; } if (App::main()) App::main()->peerUpdated(chat); @@ -1479,6 +1518,7 @@ namespace App { } ::maxMsgId = 0; ::hoveredItem = ::pressedItem = ::hoveredLinkItem = ::pressedLinkItem = ::contextItem = 0; + replyMarkups.clear(); } void historyClearItems() { @@ -1634,6 +1674,9 @@ namespace App { prepareCorners(MediaviewSaveCorners, st::msgRadius, st::emojiPanHover); prepareCorners(EmojiHoverCorners, st::msgRadius, st::emojiPanHover); prepareCorners(StickerHoverCorners, st::msgRadius, st::emojiPanHover); + prepareCorners(BotKeyboardCorners, st::msgRadius, st::botKbBg); + prepareCorners(BotKeyboardOverCorners, st::msgRadius, st::botKbOverBg); + prepareCorners(BotKeyboardDownCorners, st::msgRadius, st::botKbDownBg); prepareCorners(MessageInCorners, st::msgRadius, st::msgInBg, &st::msgInShadow); prepareCorners(MessageInSelectedCorners, st::msgRadius, st::msgInSelectBg, &st::msgInSelectShadow); @@ -1928,6 +1971,106 @@ namespace App { if (changeInMin) App::main()->updateMutedIn(changeInMin); } + void feedReplyMarkup(MsgId msgId, const MTPReplyMarkup &markup) { + ReplyMarkup data; + switch (markup.type()) { + case mtpc_replyKeyboardMarkup: { + const MTPDreplyKeyboardMarkup &d(markup.c_replyKeyboardMarkup()); + const QVector &v(d.vrows.c_vector().v); + if (!v.isEmpty()) { + data.reserve(v.size()); + for (int32 i = 0, l = v.size(); i < l; ++i) { + switch (v.at(i).type()) { + case mtpc_keyboardButtonRow: { + const MTPDkeyboardButtonRow &r(v.at(i).c_keyboardButtonRow()); + const QVector &b(r.vbuttons.c_vector().v); + if (!b.isEmpty()) { + QList btns; + btns.reserve(b.size()); + for (int32 j = 0, s = b.size(); j < s; ++j) { + switch (b.at(j).type()) { + case mtpc_keyboardButton: { + btns.push_back(qs(b.at(j).c_keyboardButton().vtext)); + } break; + } + } + if (!btns.isEmpty()) data.push_back(btns); + } + } break; + } + } + if (!data.isEmpty()) { + replyMarkups.insert(msgId, data); + } + } + } break; + } + } + + void clearReplyMarkup(MsgId msgId) { + replyMarkups.remove(msgId); + } + + const ReplyMarkup &replyMarkup(MsgId msgId) { + static ReplyMarkup zeroMarkup; + if (zeroMarkup.isEmpty()) { + QList cmds; + cmds.push_back("Test command 1Test comma"); + cmds.push_back("Test comma" + emojiGetSequence(0)); + zeroMarkup.push_back(cmds); + cmds.clear(); + cmds.push_back("123 Test command 1"); + cmds.push_back("321 Test command 3"); + cmds.push_back("123 Test command 4"); + zeroMarkup.push_back(cmds); + cmds.clear(); + cmds.push_back("Test command 11111"); + cmds.push_back("Test command 222222"); + cmds.push_back("Test command 33333"); + cmds.push_back("Test command 444444"); + cmds.push_back("Test command 55555"); + zeroMarkup.push_back(cmds); + cmds.clear(); + cmds.push_back("123 1"); + cmds.push_back("321 3"); + zeroMarkup.push_back(cmds); + cmds.clear(); + cmds.push_back("Test command 11111"); + cmds.push_back("Test command 222222"); + cmds.push_back("Test command 33333"); + cmds.push_back("Test command 444444"); + cmds.push_back("Test command 55555"); + cmds.push_back("123 Test command 1"); + cmds.push_back("321 Test command 3"); + cmds.push_back("123 Test command 4"); + zeroMarkup.push_back(cmds); + cmds.clear(); + cmds.push_back("Test command 11111"); + cmds.push_back("Test command 222222"); + cmds.push_back("Test command 33333"); + cmds.push_back("Test command 444444"); + cmds.push_back("Test command 55555"); + cmds.push_back("123 Test command 1"); + cmds.push_back("321 Test command 3"); + cmds.push_back("123 Test command 4"); + zeroMarkup.push_back(cmds); + cmds.clear(); + cmds.push_back("Test command 11111"); + cmds.push_back("Test command 222222"); + cmds.push_back("Test command 33333"); + cmds.push_back("Test command 444444"); + cmds.push_back("Test command 55555"); + cmds.push_back("123 Test command 1"); + cmds.push_back("321 Test command 3"); + cmds.push_back("123 Test command 4"); + zeroMarkup.push_back(cmds); + cmds.clear(); + } + ReplyMarkups::const_iterator i = replyMarkups.constFind(msgId); + if (i == replyMarkups.cend() || true) return zeroMarkup; + return i.value(); + } + void setProxySettings(QNetworkAccessManager &manager) { if (cConnectionType() == dbictHttpProxy) { const ConnectionProxy &p(cConnectionProxy()); @@ -1946,9 +2089,9 @@ namespace App { } } - void sendBotCommand(const QString &cmd) { + void sendBotCommand(const QString &cmd, MsgId replyTo) { if (App::main()) { - App::main()->sendBotCommand(cmd); + App::main()->sendBotCommand(cmd, replyTo); } } diff --git a/Telegram/SourceFiles/app.h b/Telegram/SourceFiles/app.h index 86639d91d..056db79c9 100644 --- a/Telegram/SourceFiles/app.h +++ b/Telegram/SourceFiles/app.h @@ -35,6 +35,7 @@ typedef QHash VideoItems; typedef QHash AudioItems; typedef QHash DocumentItems; typedef QHash WebPageItems; +typedef QList > ReplyMarkup; enum RoundCorners { MaskCorners = 0x00, // for images @@ -48,6 +49,9 @@ enum RoundCorners { MediaviewSaveCorners, EmojiHoverCorners, StickerHoverCorners, + BotKeyboardCorners, + BotKeyboardOverCorners, + BotKeyboardDownCorners, InShadowCorners, // for photos without bg InSelectedShadowCorners, @@ -99,7 +103,7 @@ namespace App { UserData *feedUsers(const MTPVector &users); // returns last user ChatData *feedChats(const MTPVector &chats); // returns last chat - void feedParticipants(const MTPChatParticipants &p); + void feedParticipants(const MTPChatParticipants &p, bool requestBotInfos = false); void feedParticipantAdd(const MTPDupdateChatParticipantAdd &d); void feedParticipantDelete(const MTPDupdateChatParticipantDelete &d); void feedMsgs(const MTPVector &msgs, int msgsState = 0); // 2 - new read message, 1 - new unread message, 0 - not new message, -1 - searched message @@ -222,10 +226,14 @@ namespace App { void unregMuted(PeerData *peer); void updateMuted(); + void feedReplyMarkup(MsgId msgId, const MTPReplyMarkup &markup); + void clearReplyMarkup(MsgId msgId); + const ReplyMarkup &replyMarkup(MsgId msgId); + void setProxySettings(QNetworkAccessManager &manager); void setProxySettings(QTcpSocket &socket); - void sendBotCommand(const QString &cmd); + void sendBotCommand(const QString &cmd, MsgId replyTo = 0); void searchByHashtag(const QString &tag); void openUserByName(const QString &username, bool toProfile = false); void joinGroupByHash(const QString &hash); diff --git a/Telegram/SourceFiles/application.cpp b/Telegram/SourceFiles/application.cpp index f86acc229..c1b086843 100644 --- a/Telegram/SourceFiles/application.cpp +++ b/Telegram/SourceFiles/application.cpp @@ -640,10 +640,10 @@ void Application::checkMapVersion() { psRegisterCustomScheme(); if (Local::oldMapVersion()) { QString versionFeatures; - if (DevChannel && Local::oldMapVersion() < 8023) { - versionFeatures = QString::fromUtf8("\xe2\x80\x94 Improved sticker panel\n\xe2\x80\x94 Bug fixes and minor stuff");// .replace('@', qsl("@") + QChar(0x200D)); + if (DevChannel && Local::oldMapVersion() < 8025) { + versionFeatures = QString::fromUtf8("\xe2\x80\x94 IPv6 connections support\n\xe2\x80\x94 Bug fixes and minor stuff");// .replace('@', qsl("@") + QChar(0x200D)); } else if (!DevChannel && Local::oldMapVersion() < 8024) { - versionFeatures = lang(lng_new_version_text).trimmed(); + versionFeatures = lng_new_version_text(lt_blog_link, qsl("https://telegram.org/blog/bot-revolution"));// lang(lng_new_version_text).trimmed(); } if (!versionFeatures.isEmpty()) { versionFeatures = lng_new_version_wrap(lt_version, QString::fromStdWString(AppVersionStr), lt_changes, versionFeatures, lt_link, qsl("https://desktop.telegram.org/#changelog")); diff --git a/Telegram/SourceFiles/art/sprite.png b/Telegram/SourceFiles/art/sprite.png index 9840c1ea6286ab622f7b580ec7f824cfc05c86a2..329aeef7b1dc9d3975f357aae40aa65fb39ef5f9 100644 GIT binary patch delta 50381 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 delta 49772 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 T;w+;K3Vu`-wG_(b%mV)(4+^Fu diff --git a/Telegram/SourceFiles/art/sprite_200x.png b/Telegram/SourceFiles/art/sprite_200x.png index c6b647f0c6252855cc32a44b8d7745a099b55fe3..0786e72ae6d23a5624ed5f2ba50575e9f11c60a0 100644 GIT binary patch delta 102844 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

%fd)eVqT!-;Ot$u$A0@^m&!xacBw&{>ej{ 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 W7;DM>i`4ljcxh`~R4-Sx3I88gCK&ku delta 101491 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

&Rrm3MR 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, _sel(0), _filteredSel(-1), @@ -35,7 +37,7 @@ _addContactLnk(this, lang(lng_add_contact_button)) { init(); } -ContactsInner::ContactsInner(ChatData *chat) : _chat(chat), _creatingChat(false), +ContactsInner::ContactsInner(ChatData *chat) : _chat(chat), _bot(0), _creatingChat(false), _addToChat(0), _contacts(&App::main()->contactsList()), _sel(0), _filteredSel(-1), @@ -47,6 +49,24 @@ _addContactLnk(this, lang(lng_add_contact_button)) { init(); } +ContactsInner::ContactsInner(UserData *bot) : _chat(0), _bot(bot), _creatingChat(false), _addToChat(0), +_contacts(new DialogsIndexed(DialogsSortByAdd)), +_sel(0), +_filteredSel(-1), +_mouseSel(false), +_selCount(0), +_searching(false), +_byUsernameSel(-1), +_addContactLnk(this, lang(lng_add_contact_button)) { + DialogsIndexed &v(App::main()->dialogsList()); + for (DialogRow *r = v.list.begin; r != v.list.end; r = r->next) { + if (r->history->peer->chat && !r->history->peer->asChat()->forbidden) { + _contacts->addToEnd(r->history); + } + } + init(); +} + void ContactsInner::init() { connect(&_addContactLnk, SIGNAL(clicked()), App::wnd(), SLOT(onShowAddContact())); @@ -59,10 +79,21 @@ void ContactsInner::init() { connect(App::main(), SIGNAL(dialogRowReplaced(DialogRow *, DialogRow *)), this, SLOT(onDialogRowReplaced(DialogRow *, DialogRow *))); connect(App::main(), SIGNAL(peerUpdated(PeerData*)), this, SLOT(peerUpdated(PeerData *))); - connect(App::main(), SIGNAL(peerNameChanged(PeerData *, const PeerData::Names &, const PeerData::NameFirstChars &)), this, SLOT(peerUpdated(PeerData *))); + connect(App::main(), SIGNAL(peerNameChanged(PeerData *, const PeerData::Names &, const PeerData::NameFirstChars &)), this, SLOT(onPeerNameChanged(PeerData *, const PeerData::Names &, const PeerData::NameFirstChars &))); connect(App::main(), SIGNAL(peerPhotoChanged(PeerData *)), this, SLOT(peerUpdated(PeerData *))); } +void ContactsInner::onPeerNameChanged(PeerData *peer, const PeerData::Names &oldNames, const PeerData::NameFirstChars &oldChars) { + if (bot()) { + _contacts->peerNameChanged(peer, oldNames, oldChars); + } + peerUpdated(peer); +} + +void ContactsInner::onAddBot() { + App::main()->addParticipants(_addToChat, QVector(1, _bot)); +} + void ContactsInner::peerUpdated(PeerData *peer) { if (_chat && (!peer || peer == _chat)) { if (_chat->forbidden) { @@ -81,8 +112,8 @@ void ContactsInner::peerUpdated(PeerData *peer) { } } } - } else if (!peer->chat) { - ContactsData::iterator i = _contactsData.find(peer->asUser()); + } else { + ContactsData::iterator i = _contactsData.find(peer); if (i != _contactsData.cend()) { for (DialogRow *row = _contacts->list.begin; row->next; row = row->next) { if (row->attached == i.value()) row->attached = 0; @@ -136,14 +167,23 @@ void ContactsInner::loadProfilePhotos(int32 yFrom) { ContactsInner::ContactData *ContactsInner::contactData(DialogRow *row) { ContactData *data = (ContactData*)row->attached; if (!data) { - UserData *user = row->history->peer->asUser(); - ContactsData::const_iterator i = _contactsData.constFind(user); + PeerData *peer = row->history->peer; + ContactsData::const_iterator i = _contactsData.constFind(peer); if (i == _contactsData.cend()) { - _contactsData.insert(user, data = new ContactData()); - data->inchat = _chat ? _chat->participants.contains(user) : false; + _contactsData.insert(peer, data = new ContactData()); + data->inchat = (_chat && !peer->chat) ? _chat->participants.contains(peer->asUser()) : false; data->check = false; - data->name.setText(st::profileListNameFont, user->name, _textNameOptions); - data->online = App::onlineText(user, _time); + data->name.setText(st::profileListNameFont, peer->name, _textNameOptions); + if (peer->chat) { + ChatData *chat = peer->asChat(); + if (chat->forbidden) { + data->online = lang(lng_chat_status_unaccessible); + } else { + data->online = lng_chat_status_members(lt_count, chat->count); + } + } else { + data->online = App::onlineText(peer->asUser(), _time); + } } else { data = i.value(); } @@ -152,9 +192,11 @@ ContactsInner::ContactData *ContactsInner::contactData(DialogRow *row) { return data; } -void ContactsInner::paintDialog(QPainter &p, UserData *user, ContactData *data, bool sel) { +void ContactsInner::paintDialog(QPainter &p, PeerData *peer, ContactData *data, bool sel) { int32 left = st::profileListPadding.width(); + UserData *user = peer->chat ? 0 : peer->asUser(); + if (data->inchat || data->check || _selCount + (_chat ? _chat->count : 0) >= cMaxGroupCount()) { sel = false; } @@ -163,7 +205,7 @@ void ContactsInner::paintDialog(QPainter &p, UserData *user, ContactData *data, p.fillRect(0, 0, width(), 2 * st::profileListPadding.height() + st::profileListPhotoSize, ((data->inchat || data->check) ? st::profileActiveBG : st::profileHoverBG)->b); } - p.drawPixmap(left, st::profileListPadding.height(), user->photo->pix(st::profileListPhotoSize)); + p.drawPixmap(left, st::profileListPadding.height(), peer->photo->pix(st::profileListPhotoSize)); if (data->inchat || data->check) { p.setPen(st::white->p); @@ -181,8 +223,7 @@ void ContactsInner::paintDialog(QPainter &p, UserData *user, ContactData *data, p.drawPixmap(QPoint(width() - st::contactsImg.pxWidth() - st::profileCheckDeltaX, st::profileListPadding.height() + (st::profileListPhotoSize - st::contactsImg.pxHeight()) / 2 - st::profileCheckDeltaY), App::sprite(), st::contactsImg); } - - bool uname = (data->online.at(0) == '@'); + bool uname = user && (data->online.at(0) == '@'); p.setFont(st::profileSubFont->f); if (uname && !data->inchat && !data->check && !_lastQuery.isEmpty() && user->username.startsWith(_lastQuery, Qt::CaseInsensitive)) { int32 availw = width() - (left + st::profileListPhotoSize + st::profileListPadding.width() * 2); @@ -200,8 +241,10 @@ void ContactsInner::paintDialog(QPainter &p, UserData *user, ContactData *data, } else { if (data->inchat || data->check) { p.setPen(st::white->p); + } else if (user && (uname || App::onlineColorUse(user->onlineTill, _time))) { + p.setPen(st::profileOnlineColor->p); } else { - p.setPen(((uname || App::onlineColorUse(user->onlineTill, _time)) ? st::profileOnlineColor : st::profileOfflineColor)->p); + p.setPen(st::profileOfflineColor->p); } p.drawText(left + st::profileListPhotoSize + st::profileListPadding.width(), st::profileListPadding.height() + st::profileListPhotoSize - st::profileListStatusBottom, data->online); } @@ -224,7 +267,7 @@ void ContactsInner::paintEvent(QPaintEvent *e) { DialogRow *drawFrom = _contacts->list.current; p.translate(0, drawFrom->pos * rh); while (drawFrom != _contacts->list.end && drawFrom->pos * rh < yTo) { - paintDialog(p, drawFrom->history->peer->asUser(), contactData(drawFrom), (drawFrom == _sel)); + paintDialog(p, drawFrom->history->peer, contactData(drawFrom), (drawFrom == _sel)); p.translate(0, rh); drawFrom = drawFrom->next; } @@ -253,13 +296,29 @@ void ContactsInner::paintEvent(QPaintEvent *e) { } else { p.setFont(st::noContactsFont->f); p.setPen(st::noContactsColor->p); - p.drawText(QRect(0, 0, width(), st::noContactsHeight - ((cContactsReceived() && !_searching) ? st::noContactsFont->height : 0)), lang((cContactsReceived() && !_searching) ? lng_no_contacts : lng_contacts_loading), style::al_center); + QString text; + int32 skip = 0; + if (bot()) { + text = lang(cDialogsReceived() ? lng_bot_no_groups : lng_contacts_loading); + } else if (cContactsReceived() && !_searching) { + text = lang(lng_no_contacts); + skip = st::noContactsFont->height; + } else { + text = lang(lng_contacts_loading); + } + p.drawText(QRect(0, 0, width(), st::noContactsHeight - skip), text, style::al_center); } } else { if (_filtered.isEmpty() && _byUsernameFiltered.isEmpty()) { p.setFont(st::noContactsFont->f); p.setPen(st::noContactsColor->p); - p.drawText(QRect(0, 0, width(), st::noContactsHeight), lang((cContactsReceived() && !_searching) ? lng_contacts_not_found : lng_contacts_loading), style::al_center); + QString text; + if (bot()) { + text = lang(cDialogsReceived() ? lng_bot_groups_not_found : lng_contacts_loading); + } else { + text = lang((cContactsReceived() && !_searching) ? lng_contacts_not_found : lng_contacts_loading); + } + p.drawText(QRect(0, 0, width(), st::noContactsHeight), text, style::al_center); } else { if (!_filtered.isEmpty()) { int32 from = (yFrom >= 0) ? (yFrom / rh) : 0; @@ -269,7 +328,7 @@ void ContactsInner::paintEvent(QPaintEvent *e) { p.translate(0, from * rh); for (; from < to; ++from) { - paintDialog(p, _filtered[from]->history->peer->asUser(), contactData(_filtered[from]), (_filteredSel == from)); + paintDialog(p, _filtered[from]->history->peer, contactData(_filtered[from]), (_filteredSel == from)); p.translate(0, rh); } } @@ -371,25 +430,32 @@ void ContactsInner::chooseParticipant() { } } else { int32 rh = st::profileListPhotoSize + st::profileListPadding.height() * 2, from; - PeerId peer = 0; + PeerData *peer = 0; if (_filter.isEmpty()) { if (_byUsernameSel >= 0 && _byUsernameSel < _byUsername.size()) { - peer = _byUsername[_byUsernameSel]->id; - } else { - peer = _sel ? _sel->history->peer->id : 0; + peer = _byUsername[_byUsernameSel]; + } else if (_sel) { + peer = _sel->history->peer; } } else { if (_byUsernameSel >= 0 && _byUsernameSel < _byUsernameFiltered.size()) { - peer = _byUsernameFiltered[_byUsernameSel]->id; + peer = _byUsernameFiltered[_byUsernameSel]; } else { if (_filteredSel < 0 || _filteredSel >= _filtered.size()) return; - peer = _filtered[_filteredSel]->history->peer->id; + peer = _filtered[_filteredSel]->history->peer; } } if (peer) { - App::wnd()->hideSettings(true); - App::main()->showPeer(peer, 0, false, true); - App::wnd()->hideLayer(); + if (bot() && peer->chat) { + _addToChat = peer->asChat(); + ConfirmBox *box = new ConfirmBox(lng_bot_sure_invite(lt_group, peer->name)); + connect(box, SIGNAL(confirmed()), this, SLOT(onAddBot())); + App::wnd()->replaceLayer(box); + } else { + App::wnd()->hideSettings(true); + App::main()->showPeer(peer->id, 0, false, true); + App::wnd()->hideLayer(); + } } } parentWidget()->update(); @@ -562,8 +628,10 @@ void ContactsInner::updateFilter(QString filter) { refresh(); - _searching = true; - emit searchByUsername(); + if (!bot()) { + _searching = true; + emit searchByUsername(); + } } if (parentWidget()) parentWidget()->update(); loadProfilePhotos(0); @@ -612,6 +680,8 @@ void ContactsInner::peopleReceived(const QString &query, const QVectorbotInfo && u->botInfo->cantJoinGroups && (_chat || _creatingChat)) continue; // skip bot's that can't be invited to groups + ContactData *d = new ContactData(); _byUsernameDatas.push_back(d); d->inchat = _chat ? _chat->participants.contains(u) : false; @@ -634,7 +704,7 @@ void ContactsInner::refresh() { if (!_addContactLnk.isHidden()) _addContactLnk.hide(); resize(width(), (_contacts->list.count * rh) + (_byUsername.isEmpty() ? 0 : (st::searchedBarHeight + _byUsername.size() * rh))); } else { - if (cContactsReceived()) { + if (cContactsReceived() && !bot()) { if (_addContactLnk.isHidden()) _addContactLnk.show(); } else { if (!_addContactLnk.isHidden()) _addContactLnk.hide(); @@ -656,6 +726,10 @@ ChatData *ContactsInner::chat() const { return _chat; } +UserData *ContactsInner::bot() const { + return _bot; +} + bool ContactsInner::creatingChat() const { return _creatingChat; } @@ -664,6 +738,7 @@ ContactsInner::~ContactsInner() { for (ContactsData::iterator i = _contactsData.begin(), e = _contactsData.end(); i != e; ++i) { delete *i; } + if (_bot) delete _contacts; } void ContactsInner::resizeEvent(QResizeEvent *e) { @@ -796,8 +871,8 @@ QVector ContactsInner::selected() { QVector result; result.reserve(_contactsData.size()); for (ContactsData::const_iterator i = _contactsData.cbegin(), e = _contactsData.cend(); i != e; ++i) { - if (i.value()->check) { - result.push_back(i.key()); + if (i.value()->check && !i.key()->chat) { + result.push_back(i.key()->asUser()); } } for (int32 i = 0, l = _byUsername.size(); i < l; ++i) { @@ -812,7 +887,7 @@ QVector ContactsInner::selectedInputs() { QVector result; result.reserve(_contactsData.size()); for (ContactsData::const_iterator i = _contactsData.cbegin(), e = _contactsData.cend(); i != e; ++i) { - if (i.value()->check) { + if (i.value()->check && !i.key()->chat) { result.push_back(i.key()->inputUser); } } @@ -854,6 +929,14 @@ _cancel(this, lang(lng_cancel), st::btnSelectCancel) { init(); } +ContactsBox::ContactsBox(UserData *bot) : ItemListBox(st::boxNoTopScroll), _inner(bot), +_addContact(this, lang(lng_add_contact_button), st::contactsAdd), +_filter(this, st::contactsFilter, lang(lng_participant_filter)), +_next(this, lang(lng_create_group_next), st::btnSelectDone), +_cancel(this, lang(lng_cancel), st::contactsClose) { + init(); +} + void ContactsBox::init() { ItemListBox::init(&_inner, _cancel.height(), st::contactsAdd.height + st::newGroupNamePadding.top() + _filter.height() + st::newGroupNamePadding.bottom()); @@ -961,14 +1044,17 @@ void ContactsBox::hideAll() { void ContactsBox::showAll() { ItemListBox::showAll(); - _addContact.show(); _filter.show(); if (_inner.chat() || _inner.creatingChat()) { _next.show(); _addContact.hide(); } else { _next.hide(); - _addContact.show(); + if (_inner.bot()) { + _addContact.hide(); + } else { + _addContact.show(); + } } _cancel.show(); } @@ -1010,6 +1096,8 @@ void ContactsBox::paintEvent(QPaintEvent *e) { // paint button sep p.fillRect(st::btnSelectCancel.width, size().height() - st::btnSelectCancel.height, st::lineWidth, st::btnSelectCancel.height, st::btnSelectSep->b); + } else if (_inner.bot()) { + paintTitle(p, lang(lng_bot_choose_group), true); } else { paintTitle(p, lang(lng_contacts_header), true); } diff --git a/Telegram/SourceFiles/boxes/contactsbox.h b/Telegram/SourceFiles/boxes/contactsbox.h index a6b1612fa..7fd8fc834 100644 --- a/Telegram/SourceFiles/boxes/contactsbox.h +++ b/Telegram/SourceFiles/boxes/contactsbox.h @@ -30,6 +30,7 @@ public: ContactsInner(bool creatingChat); ContactsInner(ChatData *chat); + ContactsInner(UserData *bot); void init(); void paintEvent(QPaintEvent *e); @@ -39,7 +40,7 @@ public: void mousePressEvent(QMouseEvent *e); void resizeEvent(QResizeEvent *e); - void paintDialog(QPainter &p, UserData *user, ContactData *data, bool sel); + void paintDialog(QPainter &p, PeerData *peer, ContactData *data, bool sel); void updateFilter(QString filter = QString()); void selectSkip(int32 dir); @@ -59,6 +60,7 @@ public: void refresh(); ChatData *chat() const; + UserData *bot() const; bool creatingChat() const; ~ContactsInner(); @@ -75,11 +77,17 @@ public slots: void updateSel(); void peerUpdated(PeerData *peer); + void onPeerNameChanged(PeerData *peer, const PeerData::Names &oldNames, const PeerData::NameFirstChars &oldChars); + + void onAddBot(); private: ChatData *_chat; + UserData *_bot; bool _creatingChat; + + ChatData *_addToChat; int32 _time; @@ -99,7 +107,7 @@ private: bool inchat; bool check; }; - typedef QMap ContactsData; + typedef QMap ContactsData; ContactsData _contactsData; ContactData *contactData(DialogRow *row); @@ -125,6 +133,7 @@ public: ContactsBox(bool creatingChat = false); ContactsBox(ChatData *chat); + ContactsBox(UserData *bot); void keyPressEvent(QKeyEvent *e); void paintEvent(QPaintEvent *e); void resizeEvent(QResizeEvent *e); diff --git a/Telegram/SourceFiles/config.h b/Telegram/SourceFiles/config.h index ed4ff4b95..f669db538 100644 --- a/Telegram/SourceFiles/config.h +++ b/Telegram/SourceFiles/config.h @@ -17,9 +17,9 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org */ #pragma once -static const int32 AppVersion = 8024; -static const wchar_t *AppVersionStr = L"0.8.24"; -static const bool DevChannel = false; +static const int32 AppVersion = 8025; +static const wchar_t *AppVersionStr = L"0.8.25"; +static const bool DevChannel = true; static const wchar_t *AppNameOld = L"Telegram Win (Unofficial)"; static const wchar_t *AppName = L"Telegram Desktop"; diff --git a/Telegram/SourceFiles/dialogswidget.cpp b/Telegram/SourceFiles/dialogswidget.cpp index 9384227d3..ba2300413 100644 --- a/Telegram/SourceFiles/dialogswidget.cpp +++ b/Telegram/SourceFiles/dialogswidget.cpp @@ -28,9 +28,9 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org #include "localstorage.h" DialogsListWidget::DialogsListWidget(QWidget *parent, MainWidget *main) : QWidget(parent), -dialogs(false), -contactsNoDialogs(true), -contacts(true), +dialogs(DialogsSortByDate), +contactsNoDialogs(DialogsSortByName), +contacts(DialogsSortByName), sel(0), contactSel(false), selByMouse(false), @@ -64,6 +64,8 @@ int32 DialogsListWidget::searchedOffset() const { } void DialogsListWidget::paintEvent(QPaintEvent *e) { + if (!App::main()) return; + QRect r(e->rect()); bool trivial = (rect() == r); @@ -95,7 +97,7 @@ void DialogsListWidget::paintEvent(QPaintEvent *e) { } p.translate(0, from * st::mentionHeight); if (from < hashtagResults.size()) { - int32 to = (r.bottom() / int32(st::mentionHeight)) + 1, w = width(); + int32 to = (r.bottom() / int32(st::mentionHeight)) + 1, w = width(), htagwidth = w - st::dlgPaddingHor * 2; if (to > hashtagResults.size()) to = hashtagResults.size(); p.setFont(st::mentionFont->f); p.setPen(st::black->p); @@ -106,8 +108,27 @@ void DialogsListWidget::paintEvent(QPaintEvent *e) { int skip = (st::mentionHeight - st::notifyClose.icon.pxHeight()) / 2; p.drawPixmap(QPoint(w - st::notifyClose.icon.pxWidth() - skip, skip), App::sprite(), st::notifyClose.icon); } - QString tag = st::mentionFont->m.elidedText('#' + hashtagResults.at(from), Qt::ElideRight, w - st::dlgPaddingHor * 2); - p.drawText(st::dlgPaddingHor, st::mentionTop + st::mentionFont->ascent, tag); + + QString first = (_hashtagFilter.size() < 2) ? QString() : ('#' + hashtagResults.at(from).mid(0, _hashtagFilter.size() - 1)), second = (_hashtagFilter.size() < 2) ? ('#' + hashtagResults.at(from)) : hashtagResults.at(from).mid(_hashtagFilter.size() - 1); + int32 firstwidth = st::mentionFont->m.width(first), secondwidth = st::mentionFont->m.width(second); + if (htagwidth < firstwidth + secondwidth) { + if (htagwidth < firstwidth + st::mentionFont->elidew) { + first = st::mentionFont->m.elidedText(first + second, Qt::ElideRight, htagwidth); + second = QString(); + } else { + second = st::mentionFont->m.elidedText(second, Qt::ElideRight, htagwidth - firstwidth); + } + } + + p.setFont(st::mentionFont->f); + if (!first.isEmpty()) { + p.setPen(st::profileOnlineColor->p); + p.drawText(st::dlgPaddingHor, st::mentionTop + st::mentionFont->ascent, first); + } + if (!second.isEmpty()) { + p.setPen(st::profileOfflineColor->p); + p.drawText(st::dlgPaddingHor + firstwidth, st::mentionTop + st::mentionFont->ascent, second); + } p.translate(0, st::mentionHeight); } } @@ -607,8 +628,9 @@ void DialogsListWidget::onFilterUpdate(QString newFilter, bool force) { } } -void DialogsListWidget::onHashtagFilterUpdate(QString newFilter) { +void DialogsListWidget::onHashtagFilterUpdate(QStringRef newFilter) { if (newFilter.isEmpty() || newFilter.at(0) != '#') { + _hashtagFilter = QString(); if (!hashtagResults.isEmpty()) { hashtagResults.clear(); refresh(true); @@ -616,6 +638,7 @@ void DialogsListWidget::onHashtagFilterUpdate(QString newFilter) { } return; } + _hashtagFilter = newFilter.toString(); if (cRecentSearchHashtags().isEmpty() && cRecentWriteHashtags().isEmpty()) { Local::readRecentHashtags(); } @@ -624,7 +647,7 @@ void DialogsListWidget::onHashtagFilterUpdate(QString newFilter) { if (!recent.isEmpty()) { hashtagResults.reserve(qMin(recent.size(), 5)); for (RecentHashtagPack::const_iterator i = recent.cbegin(), e = recent.cend(); i != e; ++i) { - if (i->first.startsWith(newFilter.midRef(1), Qt::CaseInsensitive) && i->first.size() + 1 != newFilter.size()) { + if (i->first.startsWith(_hashtagFilter.midRef(1), Qt::CaseInsensitive) && i->first.size() + 1 != newFilter.size()) { hashtagResults.push_back(i->first); if (hashtagResults.size() == 5) break; } @@ -1604,7 +1627,10 @@ void DialogsWidget::onSearchMore(MsgId minMsgId) { void DialogsWidget::loadDialogs() { if (dlgPreloading) return; - if (dlgCount >= 0 && dlgOffset >= dlgCount) return; + if (dlgCount >= 0 && dlgOffset >= dlgCount) { + cSetDialogsReceived(true); + return; + } int32 loadCount = dlgOffset ? DialogsPerPage : DialogsFirstLoad; dlgPreloading = MTP::send(MTPmessages_GetDialogs(MTP_int(dlgOffset), MTP_int(0), MTP_int(loadCount)), rpcDone(&DialogsWidget::dialogsReceived), rpcFail(&DialogsWidget::dialogsFailed)); @@ -1752,12 +1778,13 @@ void DialogsWidget::onFilterUpdate(bool force) { void DialogsWidget::onFilterCursorMoved(int from, int to) { if (to < 0) to = _filter.cursorPosition(); - QString t = _filter.text(), r; + QString t = _filter.text(); + QStringRef r; for (int start = to; start > 0;) { --start; if (t.size() <= start) break; if (t.at(start) == '#') { - r = t.mid(start, to - start); + r = t.midRef(start, to - start); break; } if (!t.at(start).isLetterOrNumber() && t.at(start) != '_') break; @@ -1886,6 +1913,10 @@ DialogsIndexed &DialogsWidget::contactsList() { return list.contactsList(); } +DialogsIndexed &DialogsWidget::dialogsList() { + return list.dialogsList(); +} + void DialogsWidget::onAddContact() { App::wnd()->replaceLayer(new AddContactBox()); } diff --git a/Telegram/SourceFiles/dialogswidget.h b/Telegram/SourceFiles/dialogswidget.h index 308225034..7d6fb8372 100644 --- a/Telegram/SourceFiles/dialogswidget.h +++ b/Telegram/SourceFiles/dialogswidget.h @@ -94,7 +94,7 @@ public: bool hasFilteredResults() const; void onFilterUpdate(QString newFilter, bool force = false); - void onHashtagFilterUpdate(QString newFilter); + void onHashtagFilterUpdate(QStringRef newFilter); void itemRemoved(HistoryItem *item); void itemReplaced(HistoryItem *oldItem, HistoryItem *newItem); @@ -130,7 +130,7 @@ private: bool contactSel; bool selByMouse; - QString filter; + QString filter, _hashtagFilter; QStringList hashtagResults; int32 hashtagSel; @@ -197,6 +197,7 @@ public: void removeContact(UserData *user); DialogsIndexed &contactsList(); + DialogsIndexed &dialogsList(); void enableShadow(bool enable = true); diff --git a/Telegram/SourceFiles/dropdown.cpp b/Telegram/SourceFiles/dropdown.cpp index bdc0f937d..5c566bed7 100644 --- a/Telegram/SourceFiles/dropdown.cpp +++ b/Telegram/SourceFiles/dropdown.cpp @@ -779,7 +779,7 @@ void EmojiPanInner::paintEvent(QPaintEvent *e) { int32 index = i * EmojiPanPerRow + j; if (index >= size) break; - float64 hover = (!_picker.isHidden() && c * emojiTabShift + index == _pickerSel) ? 1 : _hovers[c][index]; + float64 hover = (!_picker.isHidden() && c * MatrixRowShift + index == _pickerSel) ? 1 : _hovers[c][index]; QPoint w(st::emojiPanPadding + j * st::emojiPanSize.width(), y + i * st::emojiPanSize.height()); if (hover > 0) { @@ -817,7 +817,7 @@ void EmojiPanInner::mousePressEvent(QMouseEvent *e) { _pressedSel = _selected; if (_selected >= 0 && _selected != SwitcherSelected) { - int tab = (_selected / emojiTabShift), sel = _selected % emojiTabShift; + int tab = (_selected / MatrixRowShift), sel = _selected % MatrixRowShift; if (tab < emojiTabCount && sel < _emojis[tab].size() && _emojis[tab][sel]->color) { _pickerSel = _selected; if (cEmojiVariants().constFind(_emojis[tab][sel]->code) == cEmojiVariants().cend()) { @@ -838,7 +838,7 @@ void EmojiPanInner::mouseReleaseEvent(QMouseEvent *e) { if (_picker.rect().contains(_picker.mapFromGlobal(_lastMousePos))) { return _picker.mouseReleaseEvent(0); } else if (_pickerSel >= 0) { - int tab = (_pickerSel / emojiTabShift), sel = _pickerSel % emojiTabShift; + int tab = (_pickerSel / MatrixRowShift), sel = _pickerSel % MatrixRowShift; if (tab < emojiTabCount && sel < _emojis[tab].size() && _emojis[tab][sel]->color) { if (cEmojiVariants().constFind(_emojis[tab][sel]->code) != cEmojiVariants().cend()) { _picker.hideStart(); @@ -860,11 +860,11 @@ void EmojiPanInner::mouseReleaseEvent(QMouseEvent *e) { return; } - if (_selected >= emojiTabCount * emojiTabShift) { + if (_selected >= emojiTabCount * MatrixRowShift) { return; } - int tab = (_selected / emojiTabShift), sel = _selected % emojiTabShift; + int tab = (_selected / MatrixRowShift), sel = _selected % MatrixRowShift; if (sel < _emojis[tab].size()) { EmojiPtr emoji(_emojis[tab][sel]); if (emoji->color && !_picker.isHidden()) return; @@ -917,7 +917,7 @@ void EmojiPanInner::onSaveConfig() { } void EmojiPanInner::onShowPicker() { - int tab = (_pickerSel / emojiTabShift), sel = _pickerSel % emojiTabShift; + int tab = (_pickerSel / MatrixRowShift), sel = _pickerSel % MatrixRowShift; if (tab < emojiTabCount && sel < _emojis[tab].size() && _emojis[tab][sel]->color) { int32 y = 0; for (int c = 0; c <= tab; ++c) { @@ -952,7 +952,7 @@ void EmojiPanInner::onColorSelected(EmojiPtr emoji) { cRefEmojiVariants().insert(emoji->code, emojiKey(emoji)); } if (_pickerSel >= 0) { - int tab = (_pickerSel / emojiTabShift), sel = _pickerSel % emojiTabShift; + int tab = (_pickerSel / MatrixRowShift), sel = _pickerSel % MatrixRowShift; if (tab >= 0 && tab < emojiTabCount) { _emojis[tab][sel] = emoji; update(); @@ -991,7 +991,7 @@ void EmojiPanInner::clearSelection(bool fast) { _lastMousePos = mapToGlobal(QPoint(-10, -10)); if (fast) { for (Animations::const_iterator i = _animations.cbegin(); i != _animations.cend(); ++i) { - int index = qAbs(i.key()) - 1, tab = (index / emojiTabShift), sel = index % emojiTabShift; + int index = qAbs(i.key()) - 1, tab = (index / MatrixRowShift), sel = index % MatrixRowShift; (index == SwitcherSelected ? _switcherHover : _hovers[tab][sel]) = 0; } _animations.clear(); @@ -1055,7 +1055,7 @@ void EmojiPanInner::updateSelected() { if (selIndex >= _emojis[c].size()) { selIndex = -1; } else { - selIndex += c * emojiTabShift; + selIndex += c * MatrixRowShift; } } break; @@ -1098,7 +1098,7 @@ void EmojiPanInner::updateSelected() { bool EmojiPanInner::animStep(float64 ms) { uint64 now = getms(); for (Animations::iterator i = _animations.begin(); i != _animations.end();) { - int index = qAbs(i.key()) - 1, tab = (index / emojiTabShift), sel = index % emojiTabShift; + int index = qAbs(i.key()) - 1, tab = (index / MatrixRowShift), sel = index % MatrixRowShift; float64 dt = float64(now - i.value()) / st::emojiPanDuration; if (dt >= 1) { (index == SwitcherSelected ? _switcherHover : _hovers[tab][sel]) = (i.key() > 0) ? 1 : 0; @@ -1293,11 +1293,11 @@ void StickerPanInner::mouseReleaseEvent(QMouseEvent *e) { emit switchToEmoji(); return; } - if (_selected >= emojiTabShift * _setIds.size()) { + if (_selected >= MatrixRowShift * _setIds.size()) { return; } - int tab = (_selected / emojiTabShift), sel = _selected % emojiTabShift; + int tab = (_selected / MatrixRowShift), sel = _selected % MatrixRowShift; if (_setIds[tab] == RecentStickerSetId && sel >= _sets[tab].size() && sel < _sets[tab].size() * 2 && _custom.at(sel - _sets[tab].size())) { clearSelection(true); bool refresh = false; @@ -1362,7 +1362,7 @@ void StickerPanInner::clearSelection(bool fast) { _lastMousePos = mapToGlobal(QPoint(-10, -10)); if (fast) { for (Animations::const_iterator i = _animations.cbegin(); i != _animations.cend(); ++i) { - int index = qAbs(i.key()) - 1, tab = (index / emojiTabShift), sel = index % emojiTabShift; + int index = qAbs(i.key()) - 1, tab = (index / MatrixRowShift), sel = index % MatrixRowShift; (index == SwitcherSelected ? _switcherHover : _hovers[tab][sel]) = 0; } _animations.clear(); @@ -1554,7 +1554,7 @@ void StickerPanInner::updateSelected() { ytill = y + st::emojiPanHeader + ((cnt / StickerPanPerRow) + ((cnt % StickerPanPerRow) ? 1 : 0)) * st::stickerPanSize.height(); if (p.y() >= y && p.y() < ytill) { if (!special && p.y() >= y && p.y() < y + st::emojiPanHeader && sx + st::stickerPanPadding >= width() - st::emojiPanHeaderLeft - st::notifyClose.icon.pxWidth() && sx + st::stickerPanPadding < width() - st::emojiPanHeaderLeft) { - selIndex = c * emojiTabShift + _sets[c].size(); + selIndex = c * MatrixRowShift + _sets[c].size(); } else { y += st::emojiPanHeader; if (p.y() >= y && sx >= 0 && sx < StickerPanPerRow * st::stickerPanSize.width()) { @@ -1568,7 +1568,7 @@ void StickerPanInner::updateSelected() { selIndex += _sets[c].size(); } } - selIndex += c * emojiTabShift; + selIndex += c * MatrixRowShift; } } } @@ -1578,12 +1578,12 @@ void StickerPanInner::updateSelected() { } bool startanim = false; - int oldSel = _selected, oldSelTab = oldSel / emojiTabShift, xOldSel = -1, newSel = selIndex, newSelTab = newSel / emojiTabShift, xNewSel = -1; - if (oldSel >= 0 && oldSelTab < _setIds.size() && _setIds[oldSelTab] == RecentStickerSetId && oldSel >= oldSelTab * emojiTabShift + _sets[oldSelTab].size()) { + int oldSel = _selected, oldSelTab = oldSel / MatrixRowShift, xOldSel = -1, newSel = selIndex, newSelTab = newSel / MatrixRowShift, xNewSel = -1; + if (oldSel >= 0 && oldSelTab < _setIds.size() && _setIds[oldSelTab] == RecentStickerSetId && oldSel >= oldSelTab * MatrixRowShift + _sets[oldSelTab].size()) { xOldSel = oldSel; oldSel -= _sets[oldSelTab].size(); } - if (newSel >= 0 && newSelTab < _setIds.size() && _setIds[newSelTab] == RecentStickerSetId && newSel >= newSelTab * emojiTabShift + _sets[newSelTab].size()) { + if (newSel >= 0 && newSelTab < _setIds.size() && _setIds[newSelTab] == RecentStickerSetId && newSel >= newSelTab * MatrixRowShift + _sets[newSelTab].size()) { xNewSel = newSel; newSel -= _sets[newSelTab].size(); } @@ -1627,7 +1627,7 @@ void StickerPanInner::updateSelected() { bool StickerPanInner::animStep(float64 ms) { uint64 now = getms(); for (Animations::iterator i = _animations.begin(); i != _animations.end();) { - int index = qAbs(i.key()) - 1, tab = (index / emojiTabShift), sel = index % emojiTabShift; + int index = qAbs(i.key()) - 1, tab = (index / MatrixRowShift), sel = index % MatrixRowShift; float64 dt = float64(now - i.value()) / st::emojiPanDuration; if (dt >= 1) { (index == SwitcherSelected ? _switcherHover : _hovers[tab][sel]) = (i.key() > 0) ? 1 : 0; @@ -2403,7 +2403,7 @@ void EmojiPan::onDelayedHide() { _removingSetId = 0; } -MentionsInner::MentionsInner(MentionsDropdown *parent, MentionRows *rows, HashtagRows *hrows) : _parent(parent), _rows(rows), _hrows(hrows), _sel(-1), _mouseSel(false), _overDelete(false) { +MentionsInner::MentionsInner(MentionsDropdown *parent, MentionRows *rows, HashtagRows *hrows, BotCommandRows *crows) : _parent(parent), _rows(rows), _hrows(hrows), _crows(crows), _sel(-1), _mouseSel(false), _overDelete(false) { } void MentionsInner::paintEvent(QPaintEvent *e) { @@ -2413,28 +2413,26 @@ void MentionsInner::paintEvent(QPaintEvent *e) { int32 availwidth = width() - 2 * st::mentionPadding.left() - st::mentionPhotoSize - 2 * st::mentionPadding.right(); int32 htagleft = st::btnAttachPhoto.width + st::taMsgField.textMrg.left() - st::dlgShadow, htagwidth = width() - st::mentionPadding.right() - htagleft; - int32 from = qFloor(e->rect().top() / st::mentionHeight), to = qFloor(e->rect().bottom() / st::mentionHeight) + 1, last = _rows->isEmpty() ? _hrows->size() : _rows->size(); + int32 from = qFloor(e->rect().top() / st::mentionHeight), to = qFloor(e->rect().bottom() / st::mentionHeight) + 1; + int32 last = _rows->isEmpty() ? (_hrows->isEmpty() ? _crows->size() : _hrows->size()) : _rows->size(); + bool hasUsername = _parent->filter().indexOf('@') > 1; for (int32 i = from; i < to; ++i) { if (i >= last) break; if (i == _sel) { p.fillRect(0, i * st::mentionHeight, width(), st::mentionHeight, st::dlgHoverBG->b); int skip = (st::mentionHeight - st::notifyClose.icon.pxHeight()) / 2; - if (_rows->isEmpty()) p.drawPixmap(QPoint(width() - st::notifyClose.icon.pxWidth() - skip, i * st::mentionHeight + skip), App::sprite(), st::notifyClose.icon); + if (!_hrows->isEmpty()) p.drawPixmap(QPoint(width() - st::notifyClose.icon.pxWidth() - skip, i * st::mentionHeight + skip), App::sprite(), st::notifyClose.icon); } p.setPen(st::black->p); - if (_rows->isEmpty()) { - QString tag = st::mentionFont->m.elidedText('#' + _hrows->at(last - i - 1), Qt::ElideRight, htagwidth); - p.setFont(st::mentionFont->f); - p.drawText(htagleft, i * st::mentionHeight + st::mentionTop + st::mentionFont->ascent, tag); - } else { + if (!_rows->isEmpty()) { UserData *user = _rows->at(last - i - 1); QString first = (_parent->filter().size() < 2) ? QString() : ('@' + user->username.mid(0, _parent->filter().size() - 1)), second = (_parent->filter().size() < 2) ? ('@' + user->username) : user->username.mid(_parent->filter().size() - 1); int32 firstwidth = st::mentionFont->m.width(first), secondwidth = st::mentionFont->m.width(second), unamewidth = firstwidth + secondwidth, namewidth = user->nameText.maxWidth(); if (availwidth < unamewidth + namewidth) { namewidth = (availwidth * namewidth) / (namewidth + unamewidth); unamewidth = availwidth - namewidth; - if (firstwidth <= unamewidth) { + if (firstwidth < unamewidth + st::mentionFont->elidew) { if (firstwidth < unamewidth) { first = st::mentionFont->m.elidedText(first, Qt::ElideRight, unamewidth); } else if (!second.isEmpty()) { @@ -2448,14 +2446,96 @@ void MentionsInner::paintEvent(QPaintEvent *e) { user->photo->load(); p.drawPixmap(st::mentionPadding.left(), i * st::mentionHeight + st::mentionPadding.top(), user->photo->pixRounded(st::mentionPhotoSize)); user->nameText.drawElided(p, 2 * st::mentionPadding.left() + st::mentionPhotoSize, i * st::mentionHeight + st::mentionTop, namewidth); + p.setFont(st::mentionFont->f); - p.setPen(st::profileOnlineColor->p); p.drawText(2 * st::mentionPadding.left() + st::mentionPhotoSize + namewidth + st::mentionPadding.right(), i * st::mentionHeight + st::mentionTop + st::mentionFont->ascent, first); if (!second.isEmpty()) { p.setPen(st::profileOfflineColor->p); p.drawText(2 * st::mentionPadding.left() + st::mentionPhotoSize + namewidth + st::mentionPadding.right() + firstwidth, i * st::mentionHeight + st::mentionTop + st::mentionFont->ascent, second); } + } else if (!_hrows->isEmpty()) { + QString first = (_parent->filter().size() < 2) ? QString() : ('#' + _hrows->at(last - i - 1).mid(0, _parent->filter().size() - 1)), second = (_parent->filter().size() < 2) ? ('#' + _hrows->at(last - i - 1)) : _hrows->at(last - i - 1).mid(_parent->filter().size() - 1); + int32 firstwidth = st::mentionFont->m.width(first), secondwidth = st::mentionFont->m.width(second); + if (htagwidth < firstwidth + secondwidth) { + if (htagwidth < firstwidth + st::mentionFont->elidew) { + first = st::mentionFont->m.elidedText(first + second, Qt::ElideRight, htagwidth); + second = QString(); + } else { + second = st::mentionFont->m.elidedText(second, Qt::ElideRight, htagwidth - firstwidth); + } + } + + p.setFont(st::mentionFont->f); + if (!first.isEmpty()) { + p.setPen(st::profileOnlineColor->p); + p.drawText(htagleft, i * st::mentionHeight + st::mentionTop + st::mentionFont->ascent, first); + } + if (!second.isEmpty()) { + p.setPen(st::profileOfflineColor->p); + p.drawText(htagleft + firstwidth, i * st::mentionHeight + st::mentionTop + st::mentionFont->ascent, second); + } + } else { + UserData *user = _crows->at(last - i - 1).first; + + const BotCommand &command = _crows->at(last - i - 1).second; + QString toHighlight = command.command; + int32 botStatus = _parent->chat() ? _parent->chat()->botStatus : -1; + if (hasUsername || botStatus == 0 || botStatus == 2) { + toHighlight += '@' + user->username; + if (botStatus == 0 || botStatus == 2) { + user->photo->load(); + p.drawPixmap(st::mentionPadding.left(), i * st::mentionHeight + st::mentionPadding.top(), user->photo->pixRounded(st::mentionPhotoSize)); + } + } + + int32 addleft = 0, widthleft = htagwidth; + QString first = (_parent->filter().size() < 2) ? QString() : ('/' + toHighlight.mid(0, _parent->filter().size() - 1)), second = (_parent->filter().size() < 2) ? ('/' + toHighlight) : toHighlight.mid(_parent->filter().size() - 1); + int32 firstwidth = st::botCommandFont->m.width(first), secondwidth = st::botCommandFont->m.width(second); + if (htagwidth < firstwidth + secondwidth) { + if (htagwidth < firstwidth + st::botCommandFont->elidew) { + first = st::botCommandFont->m.elidedText(first + second, Qt::ElideRight, htagwidth); + second = QString(); + } else { + second = st::botCommandFont->m.elidedText(second, Qt::ElideRight, htagwidth - firstwidth); + } + } + p.setFont(st::botCommandFont->f); + if (!first.isEmpty()) { + p.setPen(st::profileOnlineColor->p); + p.drawText(htagleft, i * st::mentionHeight + st::mentionTop + st::mentionFont->ascent, first); + } + if (!second.isEmpty()) { + p.setPen(st::profileOfflineColor->p); + p.drawText(htagleft + firstwidth, i * st::mentionHeight + st::mentionTop + st::mentionFont->ascent, second); + } + addleft += firstwidth + secondwidth + st::mentionPadding.left(); + widthleft -= firstwidth + secondwidth + st::mentionPadding.left(); + + QString params = command.params; + if (widthleft > st::mentionFont->elidew && !params.isEmpty()) { + p.setFont(st::mentionFont->f); + int32 paramswidth = st::mentionFont->m.width(params); + if (widthleft < paramswidth) { + params = st::mentionFont->m.elidedText(params, Qt::ElideRight, widthleft); + } + p.setPen(st::profileOfflineColor->p); + p.drawText(htagleft + addleft, i * st::mentionHeight + st::mentionTop + st::mentionFont->ascent, params); + + addleft += paramswidth + st::mentionPadding.left(); + widthleft -= paramswidth + st::mentionPadding.left(); + } + QString description = command.description; + if (widthleft > st::botDescFont->elidew && !description.isEmpty()) { + p.setFont(st::botDescFont->f); + int32 descwidth = st::botDescFont->m.width(description); + if (widthleft < descwidth) { + description = st::botDescFont->m.elidedText(description, Qt::ElideRight, widthleft); + descwidth = st::botDescFont->m.width(description); + } + p.setPen(st::profileOfflineColor->p); + p.drawText(htagleft + addleft + (widthleft - descwidth), i * st::mentionHeight + st::mentionTop + st::mentionFont->ascent, description); + } } } @@ -2476,7 +2556,7 @@ void MentionsInner::clearSel() { bool MentionsInner::moveSel(int direction) { _mouseSel = false; - int32 maxSel = (_rows->isEmpty() ? _hrows->size() : _rows->size()); + int32 maxSel = (_rows->isEmpty() ? (_hrows->isEmpty() ? _crows->size() : _hrows->size()) : _rows->size()); if (_sel >= maxSel || _sel < 0) { if (direction < 0) setSel(maxSel - 1, true); return (_sel >= 0 && _sel < maxSel); @@ -2488,9 +2568,23 @@ bool MentionsInner::moveSel(int direction) { } bool MentionsInner::select() { - int32 maxSel = (_rows->isEmpty() ? _hrows->size() : _rows->size()); + int32 maxSel = (_rows->isEmpty() ? (_hrows->isEmpty() ? _crows->size() : _hrows->size()) : _rows->size()); if (_sel >= 0 && _sel < maxSel) { - QString result = _rows->isEmpty() ? ('#' + _hrows->at(_hrows->size() - _sel - 1)) : ('@' + _rows->at(_rows->size() - _sel - 1)->username); + QString result; + if (!_rows->isEmpty()) { + result = '@' + _rows->at(_rows->size() - _sel - 1)->username; + } else if (!_hrows->isEmpty()) { + result = '#' + _hrows->at(_hrows->size() - _sel - 1); + } else { + UserData *user = _crows->at(_crows->size() - _sel - 1).first; + const BotCommand &command(_crows->at(_crows->size() - _sel - 1).second); + int32 botStatus = _parent->chat() ? _parent->chat()->botStatus : -1; + if (botStatus == 0 || botStatus == 2 || _parent->filter().indexOf('@') > 1) { + result = '/' + command.command + '@' + user->username; + } else { + result = '/' + command.command; + } + } emit chosen(result); return true; } @@ -2542,7 +2636,7 @@ void MentionsInner::leaveEvent(QEvent *e) { void MentionsInner::setSel(int sel, bool scroll) { _sel = sel; parentWidget()->update(); - int32 maxSel = _rows->isEmpty() ? _hrows->size() : _rows->size(); + int32 maxSel = _rows->isEmpty() ? (_hrows->isEmpty() ? _crows->size() : _hrows->size()) : _rows->size(); if (scroll && _sel >= 0 && _sel < maxSel) emit mustScrollTo(_sel * st::mentionHeight, (_sel + 1) * st::mentionHeight); } @@ -2552,7 +2646,7 @@ void MentionsInner::onUpdateSelected(bool force) { int w = width(), mouseY = mouse.y(); _overDelete = _rows->isEmpty() && (mouse.x() >= w - st::mentionHeight); - int32 sel = mouseY / int32(st::mentionHeight), maxSel = _rows->isEmpty() ? _hrows->size() : _rows->size(); + int32 sel = mouseY / int32(st::mentionHeight), maxSel = _rows->isEmpty() ? (_hrows->isEmpty() ? _crows->size() : _hrows->size()) : _rows->size(); if (sel < 0 || sel >= maxSel) { sel = -1; } @@ -2570,7 +2664,7 @@ void MentionsInner::onParentGeometryChanged() { } MentionsDropdown::MentionsDropdown(QWidget *parent) : QWidget(parent), -_scroll(this, st::mentionScroll), _inner(this, &_rows, &_hrows), _chat(0), _hiding(false), a_opacity(0), _shadow(st::dropdownDef.shadow) { +_scroll(this, st::mentionScroll), _inner(this, &_rows, &_hrows, &_crows), _chat(0), _hiding(false), a_opacity(0), _shadow(st::dropdownDef.shadow) { _hideTimer.setSingleShot(true); connect(&_hideTimer, SIGNAL(timeout()), this, SLOT(hideStart())); connect(&_inner, SIGNAL(chosen(QString)), this, SIGNAL(chosen(QString))); @@ -2608,8 +2702,9 @@ void MentionsDropdown::paintEvent(QPaintEvent *e) { } -void MentionsDropdown::showFiltered(ChatData *chat, QString start) { - _chat = chat; +void MentionsDropdown::showFiltered(PeerData *peer, QString start) { + _chat = peer->chat ? peer->asChat() : 0; + _user = peer->chat ? 0 : peer->asUser(); start = start.toLower(); bool toDown = (_filter != start); if (toDown) { @@ -2621,10 +2716,11 @@ void MentionsDropdown::showFiltered(ChatData *chat, QString start) { void MentionsDropdown::updateFiltered(bool toDown) { int32 now = unixtime(); - QMultiMap ordered; MentionRows rows; HashtagRows hrows; + BotCommandRows crows; if (_filter.at(0) == '@') { + QMultiMap ordered; rows.reserve(_chat->participants.isEmpty() ? _chat->lastAuthors.size() : _chat->participants.size()); if (_chat->participants.isEmpty()) { if (_chat->count > 0) { @@ -2653,23 +2749,79 @@ void MentionsDropdown::updateFiltered(bool toDown) { rows.push_back(i.value()); } } - } else { + } else if (_filter.at(0) == '#') { const RecentHashtagPack &recent(cRecentWriteHashtags()); hrows.reserve(recent.size()); for (RecentHashtagPack::const_iterator i = recent.cbegin(), e = recent.cend(); i != e; ++i) { if (_filter.size() > 1 && (!i->first.startsWith(_filter.midRef(1), Qt::CaseInsensitive) || i->first.size() + 1 == _filter.size())) continue; hrows.push_back(i->first); } + } else if (_filter.at(0) == '/') { + bool hasUsername = _filter.indexOf('@') > 1; + QMap bots; + int32 cnt = 0; + if (_chat) { + if (_chat->participants.isEmpty()) { + if (_chat->count > 0) { + App::api()->requestFullPeer(_chat); + } + } else { + int32 index = 0; + for (ChatData::Participants::const_iterator i = _chat->participants.cbegin(), e = _chat->participants.cend(); i != e; ++i) { + UserData *user = i.key(); + if (!user->botInfo || user->botInfo->commands.isEmpty()) continue; + bots.insert(user, true); + cnt += user->botInfo->commands.size(); + } + } + } else if (_user->botInfo) { + cnt = _user->botInfo->commands.size(); + bots.insert(_user, true); + } + if (cnt) { + crows.reserve(cnt); + int32 botStatus = _chat ? _chat->botStatus : -1; + if (_chat) { + for (MentionRows::const_iterator i = _chat->lastAuthors.cbegin(), e = _chat->lastAuthors.cend(); i != e; ++i) { + UserData *user = *i; + if (!user->botInfo || user->botInfo->commands.isEmpty()) continue; + for (int32 j = 0, l = user->botInfo->commands.size(); j < l; ++j) { + if (_filter.size() > 1) { + QString toFilter = (hasUsername || botStatus == 0 || botStatus == 2) ? user->botInfo->commands.at(j).command + '@' + user->username : user->botInfo->commands.at(j).command; + if (!toFilter.startsWith(_filter.midRef(1), Qt::CaseInsensitive) || toFilter.size() + 1 == _filter.size()) continue; + } + crows.push_back(qMakePair(user, user->botInfo->commands.at(j))); + } + if (!bots.isEmpty()) { + bots.remove(user); + } + } + } + if (!bots.isEmpty()) { + for (QMap::const_iterator i = bots.cbegin(), e = bots.cend(); i != e; ++i) { + UserData *user = i.key(); + for (int32 j = 0, l = user->botInfo->commands.size(); j < l; ++j) { + if (_filter.size() > 1) { + QString toFilter = (hasUsername || botStatus == 0 || botStatus == 2) ? user->botInfo->commands.at(j).command + '@' + user->username : user->botInfo->commands.at(j).command; + if (!toFilter.startsWith(_filter.midRef(1), Qt::CaseInsensitive) || toFilter.size() + 1 == _filter.size()) continue; + } + crows.push_back(qMakePair(user, user->botInfo->commands.at(j))); + } + } + } + } } - if (rows.isEmpty() && hrows.isEmpty()) { + if (rows.isEmpty() && hrows.isEmpty() && crows.isEmpty()) { if (!isHidden()) { hideStart(); _rows.clear(); _hrows.clear(); + _crows.clear(); } } else { _rows = rows; _hrows = hrows; + _crows = crows; bool hidden = _hiding || isHidden(); if (hidden) { show(); @@ -2692,7 +2844,7 @@ void MentionsDropdown::setBoundings(QRect boundings) { } void MentionsDropdown::recount(bool toDown) { - int32 h = (_rows.isEmpty() ? _hrows.size() : _rows.size()) * st::mentionHeight, oldst = _scroll.scrollTop(), st = oldst; + int32 h = (_rows.isEmpty() ? (_hrows.isEmpty() ? _crows.size() : _hrows.size()) : _rows.size()) * st::mentionHeight, oldst = _scroll.scrollTop(), st = oldst; if (_inner.height() != h) { st += h - _inner.height(); @@ -2780,6 +2932,10 @@ const QString &MentionsDropdown::filter() const { return _filter; } +ChatData *MentionsDropdown::chat() const { + return _chat; +} + int32 MentionsDropdown::innerTop() { return _scroll.scrollTop(); } diff --git a/Telegram/SourceFiles/dropdown.h b/Telegram/SourceFiles/dropdown.h index 7a136f72c..c54b19126 100644 --- a/Telegram/SourceFiles/dropdown.h +++ b/Telegram/SourceFiles/dropdown.h @@ -467,6 +467,7 @@ private: typedef QList MentionRows; typedef QList HashtagRows; +typedef QList > BotCommandRows; class MentionsDropdown; class MentionsInner : public QWidget { @@ -474,7 +475,7 @@ class MentionsInner : public QWidget { public: - MentionsInner(MentionsDropdown *parent, MentionRows *rows, HashtagRows *hrows); + MentionsInner(MentionsDropdown *parent, MentionRows *rows, HashtagRows *hrows, BotCommandRows *crows); void paintEvent(QPaintEvent *e); @@ -505,6 +506,7 @@ private: MentionsDropdown *_parent; MentionRows *_rows; HashtagRows *_hrows; + BotCommandRows *_crows; int32 _sel; bool _mouseSel; QPoint _mousePos; @@ -523,13 +525,14 @@ public: void fastHide(); - void showFiltered(ChatData *chat, QString start); + void showFiltered(PeerData *peer, QString start); void updateFiltered(bool toDown = false); void setBoundings(QRect boundings); bool animStep(float64 ms); const QString &filter() const; + ChatData *chat() const; int32 innerTop(); int32 innerBottom(); @@ -556,11 +559,13 @@ private: QPixmap _cache; MentionRows _rows; HashtagRows _hrows; + BotCommandRows _crows; ScrollArea _scroll; MentionsInner _inner; ChatData *_chat; + UserData *_user; QString _filter; QRect _boundings; diff --git a/Telegram/SourceFiles/gui/flattextarea.cpp b/Telegram/SourceFiles/gui/flattextarea.cpp index e0b5cf28b..3b5a18e3a 100644 --- a/Telegram/SourceFiles/gui/flattextarea.cpp +++ b/Telegram/SourceFiles/gui/flattextarea.cpp @@ -179,7 +179,7 @@ EmojiPtr FlatTextarea::getSingleEmoji() const { return 0; } -void FlatTextarea::getMentionHashtagStart(QString &start) const { +void FlatTextarea::getMentionHashtagBotCommandStart(QString &start) const { int32 pos = textCursor().position(); if (textCursor().anchor() != pos) return; @@ -195,11 +195,16 @@ void FlatTextarea::getMentionHashtagStart(QString &start) const { QTextCharFormat f = fr.charFormat(); if (f.isImageFormat()) continue; + bool mentionInCommand = false; QString t(fr.text()); for (int i = pos - p; i > 0; --i) { if (t.at(i - 1) == '@') { if ((pos - p - i < 1 || t.at(i).isLetter()) && (i < 2 || !(t.at(i - 2).isLetterOrNumber() || t.at(i - 2) == '_'))) { start = t.mid(i - 1, pos - p - i + 1); + } else if ((pos - p - i < 1 || t.at(i).isLetter()) && i > 2 && (t.at(i - 2).isLetterOrNumber() || t.at(i - 2) == '_') && !mentionInCommand) { + mentionInCommand = true; + --i; + continue; } return; } else if (t.at(i - 1) == '#') { @@ -207,15 +212,20 @@ void FlatTextarea::getMentionHashtagStart(QString &start) const { start = t.mid(i - 1, pos - p - i + 1); } return; + } else if (t.at(i - 1) == '/') { + if (i < 2) { + start = t.mid(i - 1, pos - p - i + 1); + } + return; } - if (pos - p - i > 63) break; + if (pos - p - i > 127 || (!mentionInCommand && (pos - p - i > 63))) break; if (!t.at(i - 1).isLetterOrNumber() && t.at(i - 1) != '_') break; } return; } } -void FlatTextarea::onMentionOrHashtagInsert(QString mentionOrHashtag) { +void FlatTextarea::onMentionHashtagOrBotCommandInsert(QString str) { QTextCursor c(textCursor()); int32 pos = c.position(); @@ -231,31 +241,37 @@ void FlatTextarea::onMentionOrHashtagInsert(QString mentionOrHashtag) { QTextCharFormat f = fr.charFormat(); if (f.isImageFormat()) continue; + bool mentionInCommand = false; QString t(fr.text()); for (int i = pos - p; i > 0; --i) { - if (t.at(i - 1) == '@' || t.at(i - 1) == '#') { + if (t.at(i - 1) == '@' || t.at(i - 1) == '#' || t.at(i - 1) == '/') { if ((i == pos - p || t.at(i).isLetter() || t.at(i - 1) == '#') && (i < 2 || !(t.at(i - 2).isLetterOrNumber() || t.at(i - 2) == '_'))) { c.setPosition(p + i - 1, QTextCursor::MoveAnchor); int till = p + i; - for (; (till < e) && (till - p - i + 1 < mentionOrHashtag.size()); ++till) { - if (t.at(till - p).toLower() != mentionOrHashtag.at(till - p - i + 1).toLower()) { + for (; (till < e) && (till - p - i + 1 < str.size()); ++till) { + if (t.at(till - p).toLower() != str.at(till - p - i + 1).toLower()) { break; } } - if (till - p - i + 1 == mentionOrHashtag.size() && till < e && t.at(till - p) == ' ') { + if (till - p - i + 1 == str.size() && till < e && t.at(till - p) == ' ') { ++till; } c.setPosition(till, QTextCursor::KeepAnchor); - c.insertText(mentionOrHashtag + ' '); + c.insertText(str + ' '); return; + } else if ((i == pos - p || t.at(i).isLetter()) && t.at(i - 1) == '@' && i > 2 && (t.at(i - 2).isLetterOrNumber() || t.at(i - 2) == '_') && !mentionInCommand) { + mentionInCommand = true; + --i; + continue; } break; } - if (pos - p - i > 63) break; + if (pos - p - i > 127 || (!mentionInCommand && (pos - p - i > 63))) break; if (!t.at(i - 1).isLetterOrNumber() && t.at(i - 1) != '_') break; } + break; } - c.insertText(mentionOrHashtag + ' '); + c.insertText(str + ' '); } void FlatTextarea::getSingleEmojiFragment(QString &text, QTextFragment &fragment) const { diff --git a/Telegram/SourceFiles/gui/flattextarea.h b/Telegram/SourceFiles/gui/flattextarea.h index 4df93d25c..fc69f0e9f 100644 --- a/Telegram/SourceFiles/gui/flattextarea.h +++ b/Telegram/SourceFiles/gui/flattextarea.h @@ -49,7 +49,7 @@ public: QSize minimumSizeHint() const; EmojiPtr getSingleEmoji() const; - void getMentionHashtagStart(QString &start) const; + void getMentionHashtagBotCommandStart(QString &start) const; void removeSingleEmoji(); QString getText(int32 start = 0, int32 end = -1) const; bool hasText() const; @@ -72,7 +72,7 @@ public slots: void onUndoAvailable(bool avail); void onRedoAvailable(bool avail); - void onMentionOrHashtagInsert(QString mentionOrHashtag); + void onMentionHashtagOrBotCommandInsert(QString str); signals: diff --git a/Telegram/SourceFiles/gui/scrollarea.cpp b/Telegram/SourceFiles/gui/scrollarea.cpp index 6ba255889..d7ecbceec 100644 --- a/Telegram/SourceFiles/gui/scrollarea.cpp +++ b/Telegram/SourceFiles/gui/scrollarea.cpp @@ -661,3 +661,7 @@ void ScrollArea::updateColors(const style::color &bar, const style::color &bg, c hor.update(); vert.update(); } + +ScrollArea::~ScrollArea() { + takeWidget(); +} diff --git a/Telegram/SourceFiles/gui/scrollarea.h b/Telegram/SourceFiles/gui/scrollarea.h index 014a7a391..5408d52a5 100644 --- a/Telegram/SourceFiles/gui/scrollarea.h +++ b/Telegram/SourceFiles/gui/scrollarea.h @@ -131,6 +131,8 @@ public: void updateColors(const style::color &bar, const style::color &bg, const style::color &barOver, const style::color &bgOver); + ~ScrollArea(); + public slots: void scrollToY(int toTop, int toBottom = -1); diff --git a/Telegram/SourceFiles/gui/text.cpp b/Telegram/SourceFiles/gui/text.cpp index 9611fc93e..97b22da04 100644 --- a/Telegram/SourceFiles/gui/text.cpp +++ b/Telegram/SourceFiles/gui/text.cpp @@ -30,7 +30,7 @@ namespace { const QRegularExpression _reMailStart(qsl("^[a-zA-Z\\-_\\.0-9]{1,256}\\@")); const QRegularExpression _reHashtag(qsl("(^|[\\s\\.,:;<>|'\"\\[\\]\\{\\}`\\~\\!\\%\\^\\*\\(\\)\\-\\+=\\x10])#[\\w]{2,64}([\\W]|$)"), QRegularExpression::UseUnicodePropertiesOption); const QRegularExpression _reMention(qsl("(^|[\\s\\.,:;<>|'\"\\[\\]\\{\\}`\\~\\!\\%\\^\\*\\(\\)\\-\\+=\\x10])@[A-Za-z_0-9]{5,32}([\\W]|$)"), QRegularExpression::UseUnicodePropertiesOption); - const QRegularExpression _reBotCommand(qsl("(^|[\\s\\.,:;<>|'\"\\[\\]\\{\\}`\\~\\!\\%\\^\\*\\(\\)\\-\\+=\\x10])/[\\w]{1,64}([\\W]|$)"), QRegularExpression::UseUnicodePropertiesOption); + const QRegularExpression _reBotCommand(qsl("(^|[\\s\\.,:;<>|'\"\\[\\]\\{\\}`\\~\\!\\%\\^\\*\\(\\)\\-\\+=\\x10])/[\\w]{1,64}(@[A-Za-z_0-9]{5,32})?([\\W]|$)"), QRegularExpression::UseUnicodePropertiesOption); QSet _validProtocols, _validTopDomains; const style::textStyle *_textStyle = 0; @@ -1104,9 +1104,33 @@ public: if (_yTo >= 0 && _y + _yDelta >= _yTo) return false; if (_y + _yDelta + _fontHeight <= _yFrom) return true; + uint16 trimmedLineEnd = _lineEnd; + for (; trimmedLineEnd > _lineStart; --trimmedLineEnd) { + QChar ch = _t->_text.at(trimmedLineEnd - 1); + if ((ch != QChar::Space || trimmedLineEnd == _lineStart + 1) && ch != QChar::LineFeed) { + break; + } + } + ITextBlock *_endBlock = (_endBlockIter == _end) ? 0 : (*_endBlockIter); bool elidedLine = _elideLast && _endBlock && (_y + _lineHeight >= _yTo); + int blockIndex = _lineStartBlock; + ITextBlock *currentBlock = _t->_blocks[blockIndex]; + ITextBlock *nextBlock = (++blockIndex < _blocksSize) ? _t->_blocks[blockIndex] : 0; + + int32 delta = (currentBlock->from() < _lineStart ? qMin(_lineStart - currentBlock->from(), 2) : 0); + _localFrom = _lineStart - delta; + int32 lineEnd = (_endBlock && _endBlock->from() < trimmedLineEnd && !elidedLine) ? qMin(uint16(trimmedLineEnd + 2), _blockEnd(_t, _endBlockIter, _end)) : trimmedLineEnd; + + QString lineText = _t->_text.mid(_localFrom, lineEnd - _localFrom); + int32 lineStart = delta, lineLength = trimmedLineEnd - _lineStart; + + if (elidedLine) { + initParagraphBidi(); + prepareElidedLine(lineText, lineStart, lineLength, _endBlock); + } + QFixed x = _x; if (_align & Qt::AlignHCenter) { x += (_wLeft / 2).toInt(); @@ -1154,34 +1178,9 @@ public: } } - /* // lpadding is counted to _wLeft - for (; _lineStart < _lineEnd; ++_lineStart) { - if (_t->_text.at(_lineStart) != QChar::Space) { - break; - } - }/**/ - for (; _lineEnd > _lineStart; --_lineEnd) { - QChar ch = _t->_text.at(_lineEnd - 1); - if ((ch != QChar::Space || _lineEnd == _lineStart + 1) && ch != QChar::LineFeed) { - break; - } - }/**/ - if (_lineEnd == _lineStart && !elidedLine) return true; + if (trimmedLineEnd == _lineStart && !elidedLine) return true; - initParagraphBidi(); // if was not inited - - int blockIndex = _lineStartBlock; - ITextBlock *currentBlock = _t->_blocks[blockIndex]; - ITextBlock *nextBlock = (++blockIndex < _blocksSize) ? _t->_blocks[blockIndex] : 0; - - int32 delta = (currentBlock->from() < _lineStart ? qMin(_lineStart - currentBlock->from(), 2) : 0); - _localFrom = _lineStart - delta; - int32 lineEnd = (_endBlock && _endBlock->from() < _lineEnd && !elidedLine) ? qMin(uint16(_lineEnd + 2), _blockEnd(_t, _endBlockIter, _end)) : _lineEnd; - - QString lineText = _t->_text.mid(_localFrom, lineEnd - _localFrom); - int32 lineStart = delta, lineLength = _lineEnd - _lineStart; - - if (elidedLine) prepareElidedLine(lineText, lineStart, lineLength, _endBlock); + if (!elidedLine) initParagraphBidi(); // if was not inited _f = _t->_font; QStackTextEngine engine(lineText, _f->f); @@ -1218,7 +1217,7 @@ public: } if (si.analysis.flags == QScriptAnalysis::Object) { if (_type == TextBlockEmoji || _type == TextBlockSkip) { - si.width = currentBlock->f_width() + (nextBlock == _endBlock && (!nextBlock || nextBlock->from() >= _lineEnd) ? 0 : currentBlock->f_rpadding()); + si.width = currentBlock->f_width() + (nextBlock == _endBlock && (!nextBlock || nextBlock->from() >= trimmedLineEnd) ? 0 : currentBlock->f_rpadding()); } } } @@ -1266,8 +1265,8 @@ public: *_getSymbolAfter = false; *_getSymbolUpon = false; } else { - *_getSymbol = (_lineEnd > _lineStart) ? (_lineEnd - 1) : _lineStart; - *_getSymbolAfter = (_lineEnd > _lineStart) ? true : false; + *_getSymbol = (trimmedLineEnd > _lineStart) ? (trimmedLineEnd - 1) : _lineStart; + *_getSymbolAfter = (trimmedLineEnd > _lineStart) ? true : false; *_getSymbolUpon = false; } return false; @@ -4152,7 +4151,7 @@ LinkRanges textParseLinks(const QString &text, int32 flags, bool rich) { // some if (!mBotCommand.capturedRef(1).isEmpty()) { ++botCommandOffset; } - if (!mBotCommand.capturedRef(2).isEmpty()) { + if (!mBotCommand.capturedRef(3).isEmpty()) { --botCommandEnd; } } diff --git a/Telegram/SourceFiles/gui/text.h b/Telegram/SourceFiles/gui/text.h index a16f4c782..55d11368a 100644 --- a/Telegram/SourceFiles/gui/text.h +++ b/Telegram/SourceFiles/gui/text.h @@ -435,8 +435,7 @@ struct TextParseOptions { int32 maxh; Qt::LayoutDirection dir; }; -extern const TextParseOptions _defaultOptions; -extern const TextParseOptions _textPlainOptions; +extern const TextParseOptions _defaultOptions, _textPlainOptions; enum TextSelectType { TextSelectLetters = 0x01, diff --git a/Telegram/SourceFiles/history.cpp b/Telegram/SourceFiles/history.cpp index 2de3d31a6..4ac7c817c 100644 --- a/Telegram/SourceFiles/history.cpp +++ b/Telegram/SourceFiles/history.cpp @@ -109,6 +109,14 @@ namespace { inline const HistoryForwarded *toHistoryForwarded(const HistoryItem *item) { return item ? item->toHistoryForwarded() : 0; } + inline const TextParseOptions &itemTextParseOptions(HistoryItem *item) { + History *h = item->history(); + UserData *f = item->from(); + if ((!h->peer->chat && h->peer->asUser()->botInfo) || (!f->chat && f->asUser()->botInfo) || (h->peer->chat && h->peer->asChat()->botStatus >= 0)) { + return _historyBotOptions; + } + return _historyTextOptions; + } } void historyInit() { @@ -155,7 +163,7 @@ void DialogRow::paint(QPainter &p, int32 w, bool act, bool sel) const { rectForName.setLeft(rectForName.left() + st::dlgChatImgSkip); } - HistoryItem *last = history->last; + HistoryItem *last = history->lastMsg; if (!last) { p.setFont(st::dlgHistFont->f); p.setPen((act ? st::dlgActiveColor : st::dlgSystemColor)->p); @@ -296,9 +304,11 @@ History::History(const PeerId &peerId) : width(0), height(0) , peer(App::peer(peerId)) , oldLoaded(false) , newLoaded(true) -, last(0) +, lastMsg(0) , activeMsgId(0) , draftToId(0) +, lastKeyboardId(0) +, lastKeyboardFrom(0) , lastWidth(0) , lastScrollTop(History::ScrollMax) , mute(isNotifyMuted(peer->notify)) @@ -377,7 +387,7 @@ bool DialogsList::del(const PeerId &peerId, DialogRow *replacedBy) { } void DialogsIndexed::peerNameChanged(PeerData *peer, const PeerData::Names &oldNames, const PeerData::NameFirstChars &oldChars) { - if (byName) { + if (sortMode == DialogsSortByName) { DialogRow *mainRow = list.adjustByName(peer); if (!mainRow) return; @@ -406,7 +416,7 @@ void DialogsIndexed::peerNameChanged(PeerData *peer, const PeerData::Names &oldN for (PeerData::NameFirstChars::const_iterator i = toAdd.cbegin(), e = toAdd.cend(); i != e; ++i) { DialogsIndex::iterator j = index.find(*i); if (j == index.cend()) { - j = index.insert(*i, new DialogsList(byName)); + j = index.insert(*i, new DialogsList(sortMode)); } j.value()->addByName(history); } @@ -428,7 +438,7 @@ void DialogsIndexed::peerNameChanged(PeerData *peer, const PeerData::Names &oldN } } for (PeerData::NameFirstChars::const_iterator i = toRemove.cbegin(), e = toRemove.cend(); i != e; ++i) { - history->dialogs.remove(*i); + if (sortMode == DialogsSortByDate) history->dialogs.remove(*i); DialogsIndex::iterator j = index.find(*i); if (j != index.cend()) { j.value()->del(peer->id, mainRow); @@ -437,9 +447,13 @@ void DialogsIndexed::peerNameChanged(PeerData *peer, const PeerData::Names &oldN for (PeerData::NameFirstChars::const_iterator i = toAdd.cbegin(), e = toAdd.cend(); i != e; ++i) { DialogsIndex::iterator j = index.find(*i); if (j == index.cend()) { - j = index.insert(*i, new DialogsList(byName)); + j = index.insert(*i, new DialogsList(sortMode)); + } + if (sortMode == DialogsSortByDate) { + history->dialogs.insert(*i, j.value()->addByPos(history)); + } else { + j.value()->addToEnd(history); } - history->dialogs.insert(*i, j.value()->addByPos(history)); } } } @@ -535,7 +549,7 @@ HistoryItem *Histories::addToBack(const MTPmessage &msg, int msgState) { if (!h.value()->loadedAtBottom()) { HistoryItem *item = h.value()->addToHistory(msg); if (item) { - h.value()->last = item; + h.value()->lastMsg = item; if (msgState > 0) { h.value()->newItemAdded(item); } @@ -586,6 +600,9 @@ HistoryItem *History::createItem(HistoryBlock *block, const MTPmessage &msg, boo } else { result = new HistoryMessage(this, block, msg.c_message()); } + if (msg.c_message().has_reply_markup()) { + App::feedReplyMarkup(msgId, msg.c_message().vreply_markup); + } break; case mtpc_messageService: { @@ -762,7 +779,7 @@ HistoryItem *History::doAddToBack(HistoryBlock *to, bool newBlock, HistoryItem * } } to->push_back(adding); - last = adding; + lastMsg = adding; adding->y = to->height; if (width) { int32 dh = adding->resize(width); @@ -785,12 +802,23 @@ HistoryItem *History::doAddToBack(HistoryBlock *to, bool newBlock, HistoryItem * } } } - if (peer->chat && adding->from()->id) { - QList *lastAuthors = &(peer->asChat()->lastAuthors); - int prev = lastAuthors->indexOf(adding->from()); - if (prev > 0) { - lastAuthors->removeAt(prev); - lastAuthors->push_front(adding->from()); + if (adding->from()->id) { + if (peer->chat) { + QList *lastAuthors = &(peer->asChat()->lastAuthors); + int prev = lastAuthors->indexOf(adding->from()); + if (prev > 0) { + lastAuthors->removeAt(prev); + } + if (prev) { + lastAuthors->push_front(adding->from()); + } + } + if (adding->hasReplyMarkup()) { + lastKeyboardId = adding->id; + lastKeyboardFrom = adding->from()->id; + } else if (lastKeyboardFrom == adding->from()->id) { + lastKeyboardId = 0; + lastKeyboardFrom = 0; } } return adding; @@ -894,7 +922,15 @@ void History::addToFront(const QVector &slice) { } } } - if (lastAuthors && item->from()->id && !lastAuthors->contains(item->from())) lastAuthors->push_back(item->from()); + if (item->from()->id) { + if (lastAuthors && !lastAuthors->contains(item->from())) { + if (item->hasReplyMarkup() && !lastKeyboardId) { + lastKeyboardId = item->id; + lastKeyboardFrom = item->from()->id; + } + lastAuthors->push_back(item->from()); + } + } } if (App::wnd()) App::wnd()->mediaOverviewUpdated(peer); } @@ -1143,9 +1179,9 @@ void History::fixLastMessage(bool wasAtBottom) { wasAtBottom = false; } if (wasAtBottom) { - last = back()->back(); + lastMsg = back()->back(); } else { - last = 0; + lastMsg = 0; if (App::main()) { App::main()->checkPeerHistory(peer); } @@ -1161,12 +1197,12 @@ void History::loadAround(MsgId msgId) { if (!item || !item->block()) { clear(true); } - newLoaded = last && !last->detached(); + newLoaded = lastMsg && !lastMsg->detached(); } else { if (!loadedAtBottom()) { clear(true); } - newLoaded = isEmpty() || (last && !last->detached()); + newLoaded = isEmpty() || (lastMsg && !lastMsg->detached()); } } } @@ -1252,7 +1288,7 @@ void History::clear(bool leaveItems) { setMsgCount(0); if (!leaveItems) { setUnreadCount(0); - last = 0; + lastMsg = 0; } height = 0; oldLoaded = false; @@ -1478,7 +1514,7 @@ void HistoryItem::destroy() { bool wasAtBottom = history()->loadedAtBottom(); _history->removeNotification(this); detach(); - if (history()->last == this) { + if (history()->lastMsg == this) { history()->fixLastMessage(wasAtBottom); } HistoryMedia *m = getMedia(true); @@ -1554,8 +1590,7 @@ HistoryPhoto::HistoryPhoto(const MTPDphoto &photo, const QString &caption, Histo , _caption(st::minPhotoSize) , openl(new PhotoLink(data)) { if (!caption.isEmpty()) { - bool bot = (!parent->history()->peer->chat && parent->history()->peer->asUser()->botInfo) || (!parent->from()->chat && parent->from()->asUser()->botInfo); - _caption.setText(st::msgFont, caption + textcmdSkipBlock(parent->timeWidth(true), st::msgDateFont->height - st::msgDateDelta.y()), bot ? _historyBotOptions : _historyTextOptions); + _caption.setText(st::msgFont, caption + textcmdSkipBlock(parent->timeWidth(true), st::msgDateFont->height - st::msgDateDelta.y()), itemTextParseOptions(parent)); } init(); } @@ -1955,8 +1990,7 @@ HistoryVideo::HistoryVideo(const MTPDvideo &video, const QString &caption, Histo , _uplDone(0) { if (!caption.isEmpty()) { - bool bot = (!parent->history()->peer->chat && parent->history()->peer->asUser()->botInfo) || (!parent->from()->chat && parent->from()->asUser()->botInfo); - _caption.setText(st::msgFont, caption + textcmdSkipBlock(parent->timeWidth(true), st::msgDateFont->height - st::msgDateDelta.y()), bot ? _historyBotOptions : _historyTextOptions); + _caption.setText(st::msgFont, caption + textcmdSkipBlock(parent->timeWidth(true), st::msgDateFont->height - st::msgDateDelta.y()), itemTextParseOptions(parent)); } _size = formatDurationAndSizeText(data->duration, data->size); @@ -4664,11 +4698,10 @@ void HistoryMessage::initMediaFromDocument(DocumentData *doc) { void HistoryMessage::initDimensions(const QString &text) { if (!_media || !text.isEmpty()) { // !justMedia() - bool bot = (!history()->peer->chat && history()->peer->asUser()->botInfo) || (!from()->chat && from()->asUser()->botInfo); if (_media && _media->isDisplayed()) { - _text.setText(st::msgFont, text, bot ? _historyBotOptions : _historyTextOptions); + _text.setText(st::msgFont, text, itemTextParseOptions(this)); } else { - _text.setText(st::msgFont, text + textcmdSkipBlock(timeWidth(true), st::msgDateFont->height - st::msgDateDelta.y()), bot ? _historyBotOptions : _historyTextOptions); + _text.setText(st::msgFont, text + textcmdSkipBlock(timeWidth(true), st::msgDateFont->height - st::msgDateDelta.y()), itemTextParseOptions(this)); } } } @@ -4684,18 +4717,17 @@ void HistoryMessage::initDimensions(const HistoryItem *parent) { _maxw += st::msgPadding.left() + st::msgPadding.right(); if (_media) { _media->initDimensions(this); - bool bot = (!history()->peer->chat && history()->peer->asUser()->botInfo) || (!from()->chat && from()->asUser()->botInfo); if (_media->isDisplayed() && _text.hasSkipBlock()) { QString was = HistoryMessage::selectedText(FullItemSel); if (!was.isEmpty()) { - _text.setText(st::msgFont, was, bot ? _historyBotOptions : _historyTextOptions); // without date skip + _text.setText(st::msgFont, was, itemTextParseOptions(this)); // without date skip _textWidth = 0; _textHeight = 0; } } else if (!_media->isDisplayed() && !_text.hasSkipBlock()) { QString was = HistoryMessage::selectedText(FullItemSel); if (!was.isEmpty()) { - _text.setText(st::msgFont, was + textcmdSkipBlock(timeWidth(true), st::msgDateFont->height - st::msgDateDelta.y()), bot ? _historyBotOptions : _historyTextOptions); // without date skip + _text.setText(st::msgFont, was + textcmdSkipBlock(timeWidth(true), st::msgDateFont->height - st::msgDateDelta.y()), itemTextParseOptions(this)); // without date skip _textWidth = 0; _textHeight = 0; } @@ -4749,18 +4781,17 @@ void HistoryMessage::setMedia(const MTPmessageMedia &media) { } QString t; initMedia(media, t); - bool bot = (!history()->peer->chat && history()->peer->asUser()->botInfo) || (!from()->chat && from()->asUser()->botInfo); if (_media && _media->isDisplayed() && !mediaWasDisplayed) { QString was = HistoryMessage::selectedText(FullItemSel); if (!was.isEmpty()) { - _text.setText(st::msgFont, was, bot ? _historyBotOptions : _historyTextOptions); // without date skip + _text.setText(st::msgFont, was, itemTextParseOptions(this)); // without date skip _textWidth = 0; _textHeight = 0; } } else if (mediaWasDisplayed && (!_media || !_media->isDisplayed())) { QString was = HistoryMessage::selectedText(FullItemSel); if (!was.isEmpty()) { - _text.setText(st::msgFont, was + textcmdSkipBlock(timeWidth(true), st::msgDateFont->height - st::msgDateDelta.y()), bot ? _historyBotOptions : _historyTextOptions); // without date skip + _text.setText(st::msgFont, was + textcmdSkipBlock(timeWidth(true), st::msgDateFont->height - st::msgDateDelta.y()), itemTextParseOptions(this)); // without date skip _textWidth = 0; _textHeight = 0; } @@ -5069,6 +5100,9 @@ HistoryMessage::~HistoryMessage() { _media->unregItem(this); delete _media; } + if (_flags & MTPDmessage::flag_reply_markup) { + App::clearReplyMarkup(id); + } } HistoryForwarded::HistoryForwarded(History *history, HistoryBlock *block, const MTPDmessage &msg) : HistoryMessage(history, block, msg.vid.v, msg.vflags.v, ::date(msg.vdate), msg.vfrom_id.v, textClean(qs(msg.vmessage)), msg.vmedia) diff --git a/Telegram/SourceFiles/history.h b/Telegram/SourceFiles/history.h index 7dbf50316..0a0adfeb5 100644 --- a/Telegram/SourceFiles/history.h +++ b/Telegram/SourceFiles/history.h @@ -198,7 +198,7 @@ struct History : public QList { PeerData *peer; bool oldLoaded, newLoaded; - HistoryItem *last; + HistoryItem *lastMsg; MsgId activeMsgId; typedef QList NotifyQueue; @@ -238,8 +238,8 @@ struct History : public QList { } } } - if (last == old) { - last = item; + if (lastMsg == old) { + lastMsg = item; } // showFrom can't be detached } @@ -251,6 +251,9 @@ struct History : public QList { int32 lastWidth, lastScrollTop; bool mute; + MsgId lastKeyboardId; + PeerId lastKeyboardFrom; + mtpRequestId sendRequestId; // for dialog drawing @@ -284,8 +287,14 @@ struct History : public QList { static const int32 ScrollMax = INT_MAX; }; +enum DialogsSortMode { + DialogsSortByDate, + DialogsSortByName, + DialogsSortByAdd +}; + struct DialogsList { - DialogsList(bool sortByName) : begin(&last), end(&last), byName(sortByName), count(0), current(&last) { + DialogsList(DialogsSortMode sortMode) : begin(&last), end(&last), sortMode(sortMode), count(0), current(&last) { } void adjustCurrent(int32 y, int32 h) const { @@ -323,10 +332,10 @@ struct DialogsList { end->pos++; if (begin == end) { begin = current = result; - if (!byName && updatePos) history->posInDialogs = 0; + if (sortMode == DialogsSortByDate && updatePos) history->posInDialogs = 0; } else { end->prev->next = result; - if (!byName && updatePos) history->posInDialogs = end->prev->history->posInDialogs + 1; + if (sortMode == DialogsSortByDate && updatePos) history->posInDialogs = end->prev->history->posInDialogs + 1; } rowByPeer.insert(history->peer->id, result); ++count; @@ -334,7 +343,7 @@ struct DialogsList { } void bringToTop(DialogRow *row, bool updatePos = true) { - if (!byName && updatePos && row != begin) { + if (sortMode == DialogsSortByDate && updatePos && row != begin) { row->history->posInDialogs = begin->history->posInDialogs - 1; } insertBefore(row, begin); @@ -389,7 +398,7 @@ struct DialogsList { } DialogRow *adjustByName(const PeerData *peer) { - if (!byName) return 0; + if (sortMode != DialogsSortByName) return 0; RowByPeer::iterator i = rowByPeer.find(peer->id); if (i == rowByPeer.cend()) return 0; @@ -408,7 +417,7 @@ struct DialogsList { } DialogRow *addByName(History *history) { - if (!byName) return 0; + if (sortMode != DialogsSortByName) return 0; DialogRow *row = addToEnd(history), *change = row; const QString &peerName(history->peer->name); @@ -425,7 +434,7 @@ struct DialogsList { } void adjustByPos(DialogRow *row) { - if (byName) return; + if (sortMode != DialogsSortByDate) return; DialogRow *change = row; while (change->prev && change->prev->history->posInDialogs > row->history->posInDialogs) { @@ -440,7 +449,7 @@ struct DialogsList { } DialogRow *addByPos(History *history) { - if (byName) return 0; + if (sortMode != DialogsSortByDate) return 0; DialogRow *row = addToEnd(history, false); adjustByPos(row); @@ -475,7 +484,7 @@ struct DialogsList { DialogRow last; DialogRow *begin, *end; - bool byName; + DialogsSortMode sortMode; int32 count; typedef QHash RowByPeer; @@ -485,7 +494,7 @@ struct DialogsList { }; struct DialogsIndexed { - DialogsIndexed(bool sortByName) : byName(sortByName), list(byName) { + DialogsIndexed(DialogsSortMode sortMode) : sortMode(sortMode), list(sortMode) { } History::DialogLinks addToEnd(History *history) { @@ -499,7 +508,7 @@ struct DialogsIndexed { for (PeerData::NameFirstChars::const_iterator i = history->peer->chars.cbegin(), e = history->peer->chars.cend(); i != e; ++i) { DialogsIndex::iterator j = index.find(*i); if (j == index.cend()) { - j = index.insert(*i, new DialogsList(byName)); + j = index.insert(*i, new DialogsList(sortMode)); } result.insert(*i, j.value()->addToEnd(history)); } @@ -517,7 +526,7 @@ struct DialogsIndexed { for (PeerData::NameFirstChars::const_iterator i = history->peer->chars.cbegin(), e = history->peer->chars.cend(); i != e; ++i) { DialogsIndex::iterator j = index.find(*i); if (j == index.cend()) { - j = index.insert(*i, new DialogsList(byName)); + j = index.insert(*i, new DialogsList(sortMode)); } j.value()->addByName(history); } @@ -556,7 +565,7 @@ struct DialogsIndexed { void clear(); - bool byName; + DialogsSortMode sortMode; DialogsList list; typedef QMap DialogsIndex; DialogsIndex index; @@ -678,6 +687,9 @@ public: void markMediaRead() { _flags &= ~MTPDmessage_flag_media_unread; } + bool hasReplyMarkup() const { + return _flags & MTPDmessage::flag_reply_markup; + } virtual bool needCheck() const { return true; } diff --git a/Telegram/SourceFiles/historywidget.cpp b/Telegram/SourceFiles/historywidget.cpp index b5194d55f..f47960b82 100644 --- a/Telegram/SourceFiles/historywidget.cpp +++ b/Telegram/SourceFiles/historywidget.cpp @@ -1163,24 +1163,30 @@ void HistoryList::onTouchSelect() { } void HistoryList::onUpdateSelected() { - if (!hist || hist->isEmpty()) return; + if (!hist) return; QPoint mousePos(mapFromGlobal(_dragPos)); QPoint point(historyWidget->clampMousePosition(mousePos)); - adjustCurrent(point.y()); + HistoryBlock *block = 0; + HistoryItem *item = 0; + QPoint m; + if (!hist->isEmpty()) { + adjustCurrent(point.y()); - HistoryBlock *block = (*hist)[currentBlock]; - HistoryItem *item = (*block)[currentItem]; - App::mousedItem(item); - QPoint m = mapMouseToItem(point, item); - if (item->hasPoint(m.x(), m.y())) { - updateMsg(App::hoveredItem()); - App::hoveredItem(item); - updateMsg(App::hoveredItem()); - } else if (App::hoveredItem()) { - updateMsg(App::hoveredItem()); - App::hoveredItem(0); + block = (*hist)[currentBlock]; + item = (*block)[currentItem]; + + App::mousedItem(item); + m = mapMouseToItem(point, item); + if (item->hasPoint(m.x(), m.y())) { + updateMsg(App::hoveredItem()); + App::hoveredItem(item); + updateMsg(App::hoveredItem()); + } else if (App::hoveredItem()) { + updateMsg(App::hoveredItem()); + App::hoveredItem(0); + } } linkTipTimer.start(1000); @@ -1193,7 +1199,7 @@ void HistoryList::onUpdateSelected() { botInfo->text.getState(lnk, inText, point.x() - botDescRect.left() - st::msgPadding.left(), point.y() - botDescRect.top() - st::msgPadding.top() - st::botDescSkip - st::msgNameFont->height, botDescWidth); lnkInDesc = true; } - } else { + } else if (item) { item->getState(lnk, inText, m.x(), m.y()); } if (lnk != textlnkOver()) { @@ -1223,7 +1229,7 @@ void HistoryList::onUpdateSelected() { } else if (inText && (_selected.isEmpty() || _selected.cbegin().value() != FullItemSel)) { cur = style::cur_text; } - } else { + } else if (item) { if (item != _dragItem || (m - _dragStartPos).manhattanLength() >= QApplication::startDragDistance()) { if (_dragAction == PrepareDrag) { _dragAction = Dragging; @@ -1372,14 +1378,27 @@ void HistoryList::onParentGeometryChanged() { } } -MessageField::MessageField(HistoryWidget *history, const style::flatTextarea &st, const QString &ph, const QString &val) : FlatTextarea(history, st, ph, val), history(history) { +MessageField::MessageField(HistoryWidget *history, const style::flatTextarea &st, const QString &ph, const QString &val) : FlatTextarea(history, st, ph, val), history(history), _maxHeight(st::maxFieldHeight) { connect(this, SIGNAL(changed()), this, SLOT(onChange())); } +void MessageField::setMaxHeight(int32 maxHeight) { + _maxHeight = maxHeight; + int newh = ceil(document()->size().height()) + 2 * fakeMargin(), minh = st::btnSend.height - 2 * st::sendPadding; + if (newh > _maxHeight) { + newh = _maxHeight; + } else if (newh < minh) { + newh = minh; + } + if (height() != newh) { + resize(width(), newh); + } +} + void MessageField::onChange() { int newh = ceil(document()->size().height()) + 2 * fakeMargin(), minh = st::btnSend.height - 2 * st::sendPadding; - if (newh > st::maxFieldHeight) { - newh = st::maxFieldHeight; + if (newh > _maxHeight) { + newh = _maxHeight; } else if (newh < minh) { newh = minh; } @@ -1427,6 +1446,273 @@ void MessageField::focusInEvent(QFocusEvent *e) { emit focused(); } +BotKeyboard::BotKeyboard() : _wasForMsgId(0), _hoverAnim(animFunc(this, &BotKeyboard::hoverStep)), _st(&st::botKbButton), _sel(-1), _down(-1) { + setGeometry(0, 0, _st->margin, _st->margin); + setMouseTracking(true); + + _cmdTipTimer.setSingleShot(true); + connect(&_cmdTipTimer, SIGNAL(timeout()), this, SLOT(showCommandTip())); +} + +void BotKeyboard::paintEvent(QPaintEvent *e) { + Painter p(this); + + QRect r(e->rect()); + p.setClipRect(r); + p.fillRect(r, st::white->b); + + p.setPen(st::botKbColor->p); + p.setFont(st::botKbFont->f); + for (int32 i = 0, l = _btns.size(); i != l; ++i) { + int32 j = 0, s = _btns.at(i).size(); + for (; j != s; ++j) { + const Button &btn(_btns.at(i).at(j)); + QRect rect(btn.rect); + if (rect.top() >= r.bottom()) break; + if (rect.bottom() < r.top()) continue; + + if (rtl()) rect.moveLeft(width() - rect.left() - rect.width()); + + if (_down == i * MatrixRowShift + j) { + App::roundRect(p, rect, st::botKbDownBg, BotKeyboardDownCorners); + btn.text.drawElided(p, rect.x(), rect.y() + _st->downTextTop, rect.width(), 1, style::al_top); + } else { + App::roundRect(p, rect, st::botKbBg, BotKeyboardCorners); + float64 hover = btn.hover; + if (hover > 0) { + p.setOpacity(hover); + App::roundRect(p, rect, st::botKbOverBg, BotKeyboardOverCorners); + p.setOpacity(1); + } + btn.text.drawElided(p, rect.x(), rect.y() + _st->textTop, rect.width(), 1, style::al_top); + } + } + if (j < s) break; + } +} + +void BotKeyboard::resizeEvent(QResizeEvent *e) { + updateStyle(); + int32 h = (_btns.size() + 1) * _st->margin + _btns.size() * _st->height; + if (height() != h) { + resize(width(), h); + return; + } + + int32 y = _st->margin; + for (int32 i = 0, l = _btns.size(); i != l; ++i) { + int32 j = 0, s = _btns.at(i).size(); + + float64 widthForText = width() - (s * _st->margin + st::botKbScroll.width + s * 2 * _st->padding), widthOfText = 0.; + for (; j != s; ++j) { + Button &btn(_btns[i][j]); + if (btn.text.isEmpty()) btn.text.setText(st::botKbFont, textOneLine(btn.cmd), _textPlainOptions); + if (!btn.cwidth) btn.cwidth = btn.cmd.size(); + if (!btn.cwidth) btn.cwidth = 1; + widthOfText += qMax(btn.text.maxWidth(), 1); + } + + float64 x = _st->margin, coef = widthForText / widthOfText; + for (j = 0; j != s; ++j) { + Button &btn(_btns[i][j]); + float64 tw = widthForText / float64(s)/*qMax(btn.text.maxWidth(), 1) * coef*/, w = 2 * _st->padding + tw; + if (w < _st->padding) w = _st->padding; + + btn.rect = QRect(qRound(x), y, qRound(w), _st->height); + x += w + _st->margin; + + btn.full = tw >= btn.text.maxWidth(); + } + y += _st->height + _st->margin; + } +} + +void BotKeyboard::mousePressEvent(QMouseEvent *e) { + _lastMousePos = e->globalPos(); + updateSelected(); + _down = _sel; + update(); +} + +void BotKeyboard::mouseMoveEvent(QMouseEvent *e) { + _lastMousePos = e->globalPos(); + updateSelected(); +} + +void BotKeyboard::mouseReleaseEvent(QMouseEvent *e) { + int32 down = _down; + _down = -1; + + _lastMousePos = e->globalPos(); + updateSelected(); + if (_sel == down && down >= 0) { + int row = (down / MatrixRowShift), col = down % MatrixRowShift; + App::sendBotCommand(_btns.at(row).at(col).cmd, _wasForMsgId); + } +} + +void BotKeyboard::leaveEvent(QEvent *e) { + _lastMousePos = QPoint(-1, -1); + updateSelected(); +} + +bool BotKeyboard::updateMarkup(HistoryItem *to) { + if (to && to->hasReplyMarkup()) { + if (_wasForMsgId == to->id) return false; + + _wasForMsgId = to->id; + clearSelection(); + _btns.clear(); + const ReplyMarkup &markup(App::replyMarkup(to->id)); + if (!markup.isEmpty()) { + int32 i = 0, l = qMin(markup.size(), 32); + _btns.reserve(l); + for (; i != l; ++i) { + const QList &row(markup.at(i)); + QList