From 0f414c1d5abb6c8493909cf264a9370197ca3110 Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 3 Dec 2014 18:07:24 +0300 Subject: [PATCH] telegram.me links support added for os x --- Telegram/SourceFiles/mainwidget.cpp | 2 +- Telegram/SourceFiles/pspecific_mac_p.mm | 4 ++-- Telegram/SourceFiles/window.cpp | 9 +++++++++ Telegram/Telegram.plist | 15 +++++++++++++++ .../platforms/cocoa/qcocoaapplicationdelegate.mm | 2 +- 5 files changed, 28 insertions(+), 4 deletions(-) diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index 072c8105fc..c4a97ed1c4 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -1843,7 +1843,7 @@ void MainWidget::start(const MTPUser &user) { } void MainWidget::openLocalUrl(const QString &url) { - QRegularExpressionMatch m = QRegularExpression(qsl("^tg://resolve/\\?domain=([a-zA-Z0-9\\.\\_]+)$"), QRegularExpression::CaseInsensitiveOption).match(url.trimmed()); + QRegularExpressionMatch m = QRegularExpression(qsl("^tg://resolve/?\\?domain=([a-zA-Z0-9\\.\\_]+)$"), QRegularExpression::CaseInsensitiveOption).match(url.trimmed()); if (m.hasMatch()) { openUserByName(m.captured(1)); } diff --git a/Telegram/SourceFiles/pspecific_mac_p.mm b/Telegram/SourceFiles/pspecific_mac_p.mm index e4d6351759..d4bb182c2c 100644 --- a/Telegram/SourceFiles/pspecific_mac_p.mm +++ b/Telegram/SourceFiles/pspecific_mac_p.mm @@ -36,6 +36,8 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org @end +ApplicationDelegate *_sharedDelegate = nil; + @implementation ApplicationDelegate { } @@ -54,8 +56,6 @@ Copyright (c) 2014 John Preston, https://desktop.telegram.org @end -ApplicationDelegate *_sharedDelegate = nil; - class QNSString { public: QNSString(const QString &str) : _str([NSString stringWithUTF8String:str.toUtf8().constData()]) { diff --git a/Telegram/SourceFiles/window.cpp b/Telegram/SourceFiles/window.cpp index 56659b96c9..1b6fdda92b 100644 --- a/Telegram/SourceFiles/window.cpp +++ b/Telegram/SourceFiles/window.cpp @@ -734,6 +734,15 @@ QRect Window::iconRect() const { bool Window::eventFilter(QObject *obj, QEvent *evt) { if (obj == App::app() && (evt->type() == QEvent::ApplicationActivate)) { QTimer::singleShot(1, this, SLOT(checkHistoryActivation())); + } else if (obj == App::app() && (evt->type() == QEvent::FileOpen)) { + QString url = static_cast(evt)->url().toEncoded(); + if (!url.trimmed().midRef(0, 5).compare(qsl("tg://"), Qt::CaseInsensitive)) { + cSetStartUrl(url); + if (!cStartUrl().isEmpty() && App::main() && App::self()) { + App::main()->openLocalUrl(cStartUrl()); + cSetStartUrl(QString()); + } + } } else if (obj == this && evt->type() == QEvent::WindowStateChange) { Qt::WindowState state = (windowState() & Qt::WindowMinimized) ? Qt::WindowMinimized : ((windowState() & Qt::WindowMaximized) ? Qt::WindowMaximized : ((windowState() & Qt::WindowFullScreen) ? Qt::WindowFullScreen : Qt::WindowNoState)); psStateChanged(state); diff --git a/Telegram/Telegram.plist b/Telegram/Telegram.plist index 9158401f36..e3d7d9425b 100644 --- a/Telegram/Telegram.plist +++ b/Telegram/Telegram.plist @@ -14,6 +14,21 @@ 0.6.15 CFBundleSignature ???? + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLIconFile + AppIcon.icns + CFBundleURLName + com.tdesktop.TelegramUrl + CFBundleURLSchemes + + tg + + + NOTE NSPrincipalClass diff --git a/Telegram/_qt_5_3_1_patch/qtbase/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm b/Telegram/_qt_5_3_1_patch/qtbase/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm index 91399ae191..0cf6dc6f5f 100644 --- a/Telegram/_qt_5_3_1_patch/qtbase/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm +++ b/Telegram/_qt_5_3_1_patch/qtbase/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm @@ -411,7 +411,7 @@ static void cleanupCocoaApplicationDelegate() { Q_UNUSED(replyEvent); NSString *urlString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue]; - QWindowSystemInterface::handleFileOpenEvent(QCFString::toQString(urlString)); + QWindowSystemInterface::handleFileOpenEvent(QUrl::fromNSURL([NSURL URLWithString:urlString])); } - (void)appleEventQuit:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent