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"};
|
"Choose"};
|
||||||
QStringSetting streamlinkOpts = {"/external/streamlink/options", ""};
|
QStringSetting streamlinkOpts = {"/external/streamlink/options", ""};
|
||||||
|
|
||||||
|
// Custom URI Scheme
|
||||||
|
QStringSetting customURIScheme = {"/external/urischeme"};
|
||||||
|
|
||||||
/// Misc
|
/// Misc
|
||||||
BoolSetting betaUpdates = {"/misc/beta", false};
|
BoolSetting betaUpdates = {"/misc/beta", false};
|
||||||
#ifdef Q_OS_LINUX
|
#ifdef Q_OS_LINUX
|
||||||
|
|
|
@ -68,6 +68,23 @@ ExternalToolsPage::ExternalToolsPage()
|
||||||
this->managedConnections_);
|
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);
|
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()
|
void Split::showViewerList()
|
||||||
{
|
{
|
||||||
auto viewerDock = new QDockWidget("Viewer List", this);
|
auto viewerDock = new QDockWidget("Viewer List", this);
|
||||||
|
|
|
@ -126,6 +126,7 @@ public slots:
|
||||||
void openInBrowser();
|
void openInBrowser();
|
||||||
void openBrowserPlayer();
|
void openBrowserPlayer();
|
||||||
void openInStreamlink();
|
void openInStreamlink();
|
||||||
|
void openWithCustomScheme();
|
||||||
void copyToClipboard();
|
void copyToClipboard();
|
||||||
void showSearch();
|
void showSearch();
|
||||||
void showViewerList();
|
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->setMargin(0);
|
||||||
layout->setSpacing(0);
|
layout->setSpacing(0);
|
||||||
this->setLayout(layout);
|
this->setLayout(layout);
|
||||||
|
@ -289,6 +296,12 @@ std::unique_ptr<QMenu> SplitHeader::createMainMenu()
|
||||||
#endif
|
#endif
|
||||||
menu->addAction(OPEN_IN_STREAMLINK, this->split_,
|
menu->addAction(OPEN_IN_STREAMLINK, this->split_,
|
||||||
&Split::openInStreamlink);
|
&Split::openInStreamlink);
|
||||||
|
|
||||||
|
if (!getSettings()->customURIScheme.getValue().isEmpty())
|
||||||
|
{
|
||||||
|
menu->addAction("Open with URI Scheme", this->split_,
|
||||||
|
&Split::openWithCustomScheme);
|
||||||
|
}
|
||||||
menu->addSeparator();
|
menu->addSeparator();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue