mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-13 19:49:51 +01:00
Added ability to open stream in external video player via URI scheme. (#1623)
This commit is contained in:
parent
5afb2800c9
commit
f489d23a8d
|
@ -257,6 +257,9 @@ public:
|
|||
"Choose"};
|
||||
QStringSetting streamlinkOpts = {"/external/streamlink/options", ""};
|
||||
|
||||
// Custom URI Scheme
|
||||
QStringSetting customURIScheme = {"/external/urischeme"};
|
||||
|
||||
/// Misc
|
||||
BoolSetting betaUpdates = {"/misc/beta", false};
|
||||
#ifdef Q_OS_LINUX
|
||||
|
|
|
@ -68,6 +68,23 @@ ExternalToolsPage::ExternalToolsPage()
|
|||
this->managedConnections_);
|
||||
}
|
||||
|
||||
{
|
||||
auto group = layout.emplace<QGroupBox>("Custom URI Scheme");
|
||||
auto groupLayout = group.setLayoutType<QFormLayout>();
|
||||
|
||||
const auto description = new QLabel(
|
||||
"You can open video streams directly in any video player that "
|
||||
"has built-in Twitch support and has own URI Scheme.\nE.g.: "
|
||||
"IINA for macOS and Potplayer (with extension) for Windows.");
|
||||
description->setWordWrap(true);
|
||||
description->setStyleSheet("color: #bbb");
|
||||
|
||||
groupLayout->setWidget(0, QFormLayout::SpanningRole, description);
|
||||
|
||||
groupLayout->addRow("URI Scheme:", this->createLineEdit(
|
||||
getSettings()->customURIScheme));
|
||||
}
|
||||
|
||||
layout->addStretch(1);
|
||||
}
|
||||
|
||||
|
|
|
@ -534,6 +534,23 @@ void Split::openInStreamlink()
|
|||
}
|
||||
}
|
||||
|
||||
void Split::openWithCustomScheme()
|
||||
{
|
||||
const auto scheme = getSettings()->customURIScheme.getValue();
|
||||
if (scheme.isEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
const auto channel = this->getChannel().get();
|
||||
|
||||
if (const auto twitchChannel = dynamic_cast<TwitchChannel *>(channel))
|
||||
{
|
||||
QDesktopServices::openUrl(QString("%1https://twitch.tv/%2")
|
||||
.arg(scheme)
|
||||
.arg(twitchChannel->getName()));
|
||||
}
|
||||
}
|
||||
|
||||
void Split::showViewerList()
|
||||
{
|
||||
auto viewerDock = new QDockWidget("Viewer List", this);
|
||||
|
|
|
@ -126,6 +126,7 @@ public slots:
|
|||
void openInBrowser();
|
||||
void openBrowserPlayer();
|
||||
void openInStreamlink();
|
||||
void openWithCustomScheme();
|
||||
void copyToClipboard();
|
||||
void showSearch();
|
||||
void showViewerList();
|
||||
|
|
|
@ -245,6 +245,13 @@ void SplitHeader::initializeLayout()
|
|||
}
|
||||
});
|
||||
|
||||
getSettings()->customURIScheme.connect([this] {
|
||||
if (const auto drop = this->dropdownButton_)
|
||||
{
|
||||
drop->setMenu(this->createMainMenu());
|
||||
}
|
||||
});
|
||||
|
||||
layout->setMargin(0);
|
||||
layout->setSpacing(0);
|
||||
this->setLayout(layout);
|
||||
|
@ -289,6 +296,12 @@ std::unique_ptr<QMenu> SplitHeader::createMainMenu()
|
|||
#endif
|
||||
menu->addAction(OPEN_IN_STREAMLINK, this->split_,
|
||||
&Split::openInStreamlink);
|
||||
|
||||
if (!getSettings()->customURIScheme.getValue().isEmpty())
|
||||
{
|
||||
menu->addAction("Open with URI Scheme", this->split_,
|
||||
&Split::openWithCustomScheme);
|
||||
}
|
||||
menu->addSeparator();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue