From 199c7462167322aee95f198a0d215d85672bd89c Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Wed, 8 Jul 2020 19:38:30 +0300 Subject: [PATCH] Added main touchbar. --- Telegram/CMakeLists.txt | 2 + .../platform/mac/touchbar/mac_touchbar_main.h | 28 +++++++++ .../mac/touchbar/mac_touchbar_main.mm | 57 +++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_main.h create mode 100644 Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_main.mm diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt index 262de38529..84a85bd7c3 100644 --- a/Telegram/CMakeLists.txt +++ b/Telegram/CMakeLists.txt @@ -901,6 +901,8 @@ PRIVATE platform/mac/touchbar/mac_touchbar_audio.mm platform/mac/touchbar/mac_touchbar_common.h platform/mac/touchbar/mac_touchbar_common.mm + platform/mac/touchbar/mac_touchbar_main.h + platform/mac/touchbar/mac_touchbar_main.mm platform/win/audio_win.cpp platform/win/audio_win.h platform/win/file_utilities_win.cpp diff --git a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_main.h b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_main.h new file mode 100644 index 0000000000..f03546eafc --- /dev/null +++ b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_main.h @@ -0,0 +1,28 @@ +/* +This file is part of Telegram Desktop, +the official desktop application for the Telegram messaging service. + +For license and copyright information please follow this link: +https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL +*/ +#pragma once + +#import + +namespace Window { +class Controller; +} // namespace Window + +namespace TouchBar::Main { + +const auto kPinnedPanelItemIdentifier = @"pinnedPanel"; +const auto kPopoverInputItemIdentifier = @"popoverInput"; +const auto kPopoverPickerItemIdentifier = @"pickerButtons"; + +} // namespace TouchBar::Main + +API_AVAILABLE(macos(10.12.2)) +@interface TouchBarMain : NSTouchBar +- (id)init:(not_null)controller + touchBarSwitches:(rpl::producer<>)touchBarSwitches; +@end diff --git a/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_main.mm b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_main.mm new file mode 100644 index 0000000000..000207e837 --- /dev/null +++ b/Telegram/SourceFiles/platform/mac/touchbar/mac_touchbar_main.mm @@ -0,0 +1,57 @@ +/* +This file is part of Telegram Desktop, +the official desktop application for the Telegram messaging service. + +For license and copyright information please follow this link: +https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL +*/ +#include "platform/mac/touchbar/mac_touchbar_main.h" + +#include "platform/mac/touchbar/items/mac_formatter_item.h" +#include "platform/mac/touchbar/items/mac_pinned_chats_item.h" +#include "platform/mac/touchbar/items/mac_scrubber_item.h" +#include "platform/mac/touchbar/mac_touchbar_common.h" +#include "window/window_controller.h" +#include "window/window_session_controller.h" + +#import + +#ifndef OS_OSX + +using namespace TouchBar::Main; + +#pragma mark - TouchBarMain + +@interface TouchBarMain() +@end // @interface TouchBarMain + +@implementation TouchBarMain + +- (id)init:(not_null)controller + touchBarSwitches:(rpl::producer<>)touchBarSwitches { + self = [super init]; + if (!self) { + return self; + } + + auto *pin = [[[NSCustomTouchBarItem alloc] + initWithIdentifier:kPinnedPanelItemIdentifier] autorelease]; + pin.view = [[[PinnedDialogsPanel alloc] + init:(&controller->sessionController()->session()) + destroyEvent:std::move(touchBarSwitches)] autorelease]; + + auto *sticker = [[[StickerEmojiPopover alloc] + init:controller + identifier:kPopoverPickerItemIdentifier] autorelease]; + + auto *format = [[[TextFormatPopover alloc] + init:kPopoverInputItemIdentifier] autorelease]; + + self.templateItems = [NSSet setWithArray:@[pin, sticker, format]]; + + return self; +} + +@end // @implementation TouchBarMain + +#endif // OS_OSX