mirror of
https://github.com/Aitum/obs-aitum-multistream.git
synced 2024-11-25 03:33:28 +01:00
Abstract platform icons into utils
This commit is contained in:
parent
19680098bf
commit
a054d60f66
@ -51,11 +51,13 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_SOURCE_D
|
|||||||
|
|
||||||
target_sources(${PROJECT_NAME} PRIVATE
|
target_sources(${PROJECT_NAME} PRIVATE
|
||||||
config-dialog.cpp
|
config-dialog.cpp
|
||||||
|
config-utils.cpp
|
||||||
output-dialog.cpp
|
output-dialog.cpp
|
||||||
multistream.cpp
|
multistream.cpp
|
||||||
file-updater.c
|
file-updater.c
|
||||||
resources.qrc
|
resources.qrc
|
||||||
config-dialog.hpp
|
config-dialog.hpp
|
||||||
|
config-utils.hpp
|
||||||
output-dialog.hpp
|
output-dialog.hpp
|
||||||
multistream.hpp
|
multistream.hpp
|
||||||
file-updater.h)
|
file-updater.h)
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <util/platform.h>
|
#include <util/platform.h>
|
||||||
#include "output-dialog.hpp"
|
#include "output-dialog.hpp"
|
||||||
|
#include "config-utils.hpp"
|
||||||
|
|
||||||
template<typename T> std::string to_string_with_precision(const T a_value, const int n = 6)
|
template<typename T> std::string to_string_with_precision(const T a_value, const int n = 6)
|
||||||
{
|
{
|
||||||
@ -41,30 +42,6 @@ template<typename T> std::string to_string_with_precision(const T a_value, const
|
|||||||
void RemoveWidget(QWidget *widget);
|
void RemoveWidget(QWidget *widget);
|
||||||
void RemoveLayoutItem(QLayoutItem *item);
|
void RemoveLayoutItem(QLayoutItem *item);
|
||||||
|
|
||||||
// Platform icons deciphered from endpoints
|
|
||||||
QIcon OBSBasicSettings::getPlatformFromEndpoint(QString endpoint)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (endpoint.contains(QString::fromUtf8(".contribute.live-video.net")) ||
|
|
||||||
endpoint.contains(QString::fromUtf8(".twitch.tv"))) { // twitch
|
|
||||||
return platformIconTwitch;
|
|
||||||
} else if (endpoint.contains(QString::fromUtf8(".youtube.com"))) { // youtube
|
|
||||||
return platformIconYouTube;
|
|
||||||
} else if (endpoint.contains(QString::fromUtf8("fa723fc1b171.global-contribute.live-video.net"))) { // kick
|
|
||||||
return platformIconKick;
|
|
||||||
} else if (endpoint.contains(QString::fromUtf8(".tiktokcdn-"))) { // tiktok
|
|
||||||
return platformIconTikTok;
|
|
||||||
} else if (endpoint.contains(QString::fromUtf8(".pscp.tv"))) { // twitter
|
|
||||||
return platformIconTwitter;
|
|
||||||
} else if (endpoint.contains(QString::fromUtf8("livepush.trovo.live"))) { // trovo
|
|
||||||
return platformIconTrovo;
|
|
||||||
} else if (endpoint.contains(QString::fromUtf8(".facebook.com"))) { // facebook
|
|
||||||
return platformIconFacebook;
|
|
||||||
} else { // unknown
|
|
||||||
return platformIconUnknown;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
OBSBasicSettings::OBSBasicSettings(QMainWindow *parent) : QDialog(parent)
|
OBSBasicSettings::OBSBasicSettings(QMainWindow *parent) : QDialog(parent)
|
||||||
{
|
{
|
||||||
setMinimumWidth(983);
|
setMinimumWidth(983);
|
||||||
@ -438,7 +415,7 @@ void OBSBasicSettings::AddServer(QFormLayout *outputsLayout, obs_data_t *setting
|
|||||||
auto server_title_layout = new QHBoxLayout;
|
auto server_title_layout = new QHBoxLayout;
|
||||||
|
|
||||||
auto platformIconLabel = new QLabel;
|
auto platformIconLabel = new QLabel;
|
||||||
auto platformIcon = getPlatformFromEndpoint(QString::fromUtf8(obs_data_get_string(settings, "stream_server")));
|
auto platformIcon = ConfigUtils::getPlatformIconFromEndpoint(QString::fromUtf8(obs_data_get_string(settings, "stream_server")));
|
||||||
platformIconLabel->setPixmap(platformIcon.pixmap(30, 30));
|
platformIconLabel->setPixmap(platformIcon.pixmap(30, 30));
|
||||||
server_title_layout->addWidget(platformIconLabel, 0);
|
server_title_layout->addWidget(platformIconLabel, 0);
|
||||||
|
|
||||||
|
@ -55,17 +55,6 @@ private:
|
|||||||
|
|
||||||
QPushButton *verticalAddButton;
|
QPushButton *verticalAddButton;
|
||||||
|
|
||||||
// Platform icons
|
|
||||||
QIcon platformIconTwitch = QIcon(":/aitum/media/twitch.png");
|
|
||||||
QIcon platformIconYouTube = QIcon(":/aitum/media/youtube.png");
|
|
||||||
QIcon platformIconKick = QIcon(":/aitum/media/kick.png");
|
|
||||||
QIcon platformIconTikTok = QIcon(":/aitum/media/tiktok.png");
|
|
||||||
QIcon platformIconTwitter = QIcon(":/aitum/media/twitter.png");
|
|
||||||
QIcon platformIconTrovo = QIcon(":/aitum/media/trovo.png");
|
|
||||||
QIcon platformIconFacebook = QIcon(":/aitum/media/facebook.png");
|
|
||||||
QIcon platformIconUnknown = QIcon(":/aitum/media/unknown.png");
|
|
||||||
QIcon getPlatformFromEndpoint(QString endpoint);
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void SetGeneralIcon(const QIcon &icon);
|
void SetGeneralIcon(const QIcon &icon);
|
||||||
void SetStreamIcon(const QIcon &icon);
|
void SetStreamIcon(const QIcon &icon);
|
||||||
|
57
config-utils.cpp
Normal file
57
config-utils.cpp
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
#include "config-utils.hpp"
|
||||||
|
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QString>
|
||||||
|
#include <QFormLayout>
|
||||||
|
#include <QGroupBox>
|
||||||
|
#include <QComboBox>
|
||||||
|
#include <QAbstractButton>
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QIcon>
|
||||||
|
|
||||||
|
#include "obs.h"
|
||||||
|
#include "obs-module.h"
|
||||||
|
#include "obs-frontend-api.h"
|
||||||
|
#include <util/dstr.h>
|
||||||
|
|
||||||
|
|
||||||
|
// Generate buttons for default/custom stuff
|
||||||
|
QPushButton *ConfigUtils::generateButton(QString buttonText) {
|
||||||
|
auto styles = QString::fromUtf8("QPushButton[unselected=\"true\"] { background: pink; }");
|
||||||
|
|
||||||
|
auto button = new QPushButton(buttonText);
|
||||||
|
button->setStyleSheet(styles);
|
||||||
|
|
||||||
|
return button;
|
||||||
|
}
|
||||||
|
|
||||||
|
// For setting the active property stuff on buttons
|
||||||
|
void ConfigUtils::updateButtonStyles(QPushButton *defaultButton, QPushButton *customButton, int activeIndex) {
|
||||||
|
defaultButton->setProperty("unselected", activeIndex != 0 ? true : false);
|
||||||
|
customButton->setProperty("unselected", activeIndex != 1 ? true : false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Platform icons deciphered from endpoints
|
||||||
|
QIcon ConfigUtils::getPlatformIconFromEndpoint(QString endpoint)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (endpoint.contains(QString::fromUtf8(".contribute.live-video.net")) ||
|
||||||
|
endpoint.contains(QString::fromUtf8(".twitch.tv"))) { // twitch
|
||||||
|
return QIcon(":/aitum/media/twitch.png");
|
||||||
|
} else if (endpoint.contains(QString::fromUtf8(".youtube.com"))) { // youtube
|
||||||
|
return QIcon(":/aitum/media/youtube.png");
|
||||||
|
} else if (endpoint.contains(QString::fromUtf8("fa723fc1b171.global-contribute.live-video.net"))) { // kick
|
||||||
|
return QIcon(":/aitum/media/kick.png");
|
||||||
|
} else if (endpoint.contains(QString::fromUtf8(".tiktokcdn-"))) { // tiktok
|
||||||
|
return QIcon(":/aitum/media/tiktok.png");
|
||||||
|
} else if (endpoint.contains(QString::fromUtf8(".pscp.tv"))) { // twitter
|
||||||
|
return QIcon(":/aitum/media/twitter.png");
|
||||||
|
} else if (endpoint.contains(QString::fromUtf8("livepush.trovo.live"))) { // trovo
|
||||||
|
return QIcon(":/aitum/media/trovo.png");
|
||||||
|
} else if (endpoint.contains(QString::fromUtf8(".facebook.com"))) { // facebook
|
||||||
|
return QIcon(":/aitum/media/facebook.png");
|
||||||
|
} else { // unknown
|
||||||
|
return QIcon(":/aitum/media/unknown.png");
|
||||||
|
}
|
||||||
|
}
|
20
config-utils.hpp
Normal file
20
config-utils.hpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QComboBox>
|
||||||
|
#include <QFormLayout>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QGroupBox>
|
||||||
|
#include <QIcon>
|
||||||
|
#include <QString>
|
||||||
|
#include "obs.h"
|
||||||
|
|
||||||
|
class ConfigUtils {
|
||||||
|
public:
|
||||||
|
static QPushButton *generateButton(QString buttonText);
|
||||||
|
static void updateButtonStyles(QPushButton *defaultButton, QPushButton *customButton, int activeIndex);
|
||||||
|
|
||||||
|
|
||||||
|
static QIcon getPlatformIconFromEndpoint(QString endpoint);
|
||||||
|
};
|
@ -24,7 +24,7 @@ Server="Server"
|
|||||||
Key="Key"
|
Key="Key"
|
||||||
Stream="Stream"
|
Stream="Stream"
|
||||||
EditServerSettings="Output Settings"
|
EditServerSettings="Output Settings"
|
||||||
EditEncoderSettings="Encoder Settings"
|
EditEncoderSettings="Advanced Settings"
|
||||||
BackButton="< Back"
|
BackButton="< Back"
|
||||||
SaveOutput="Save Output"
|
SaveOutput="Save Output"
|
||||||
CreateOutput="Create Output"
|
CreateOutput="Create Output"
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include <util/config-file.h>
|
#include <util/config-file.h>
|
||||||
#include <util/platform.h>
|
#include <util/platform.h>
|
||||||
|
#include "config-utils.hpp"
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include "file-updater.h"
|
#include "file-updater.h"
|
||||||
}
|
}
|
||||||
@ -106,30 +108,6 @@ void RemoveWidget(QWidget *widget)
|
|||||||
delete widget;
|
delete widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Platform icons deciphered from endpoints
|
|
||||||
QIcon MultistreamDock::getPlatformFromEndpoint(QString endpoint)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (endpoint.contains(QString::fromUtf8(".contribute.live-video.net")) ||
|
|
||||||
endpoint.contains(QString::fromUtf8(".twitch.tv"))) { // twitch
|
|
||||||
return platformIconTwitch;
|
|
||||||
} else if (endpoint.contains(QString::fromUtf8(".youtube.com"))) { // youtube
|
|
||||||
return platformIconYouTube;
|
|
||||||
} else if (endpoint.contains(QString::fromUtf8("fa723fc1b171.global-contribute.live-video.net"))) { // kick
|
|
||||||
return platformIconKick;
|
|
||||||
} else if (endpoint.contains(QString::fromUtf8(".tiktokcdn-"))) { // tiktok
|
|
||||||
return platformIconTikTok;
|
|
||||||
} else if (endpoint.contains(QString::fromUtf8(".pscp.tv"))) { // twitter
|
|
||||||
return platformIconTwitter;
|
|
||||||
} else if (endpoint.contains(QString::fromUtf8("livepush.trovo.live"))) { // trovo
|
|
||||||
return platformIconTrovo;
|
|
||||||
} else if (endpoint.contains(QString::fromUtf8(".facebook.com"))) { // facebook
|
|
||||||
return platformIconFacebook;
|
|
||||||
} else { // unknown
|
|
||||||
return platformIconUnknown;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Output button styling
|
// Output button styling
|
||||||
void MultistreamDock::outputButtonStyle(QPushButton *button)
|
void MultistreamDock::outputButtonStyle(QPushButton *button)
|
||||||
{
|
{
|
||||||
@ -217,7 +195,7 @@ MultistreamDock::MultistreamDock(QWidget *parent) : QFrame(parent)
|
|||||||
|
|
||||||
// blank because we're not pulling settings through from bis, fix this
|
// blank because we're not pulling settings through from bis, fix this
|
||||||
mainPlatformIconLabel = new QLabel;
|
mainPlatformIconLabel = new QLabel;
|
||||||
auto platformIcon = getPlatformFromEndpoint(QString::fromUtf8(""));
|
auto platformIcon = ConfigUtils::getPlatformIconFromEndpoint(QString::fromUtf8(""));
|
||||||
|
|
||||||
mainPlatformIconLabel->setPixmap(platformIcon.pixmap(30, 30));
|
mainPlatformIconLabel->setPixmap(platformIcon.pixmap(30, 30));
|
||||||
|
|
||||||
@ -362,7 +340,7 @@ MultistreamDock::MultistreamDock(QWidget *parent) : QFrame(parent)
|
|||||||
auto url = QString::fromUtf8(obs_service_get_connect_info(service, OBS_SERVICE_CONNECT_INFO_SERVER_URL));
|
auto url = QString::fromUtf8(obs_service_get_connect_info(service, OBS_SERVICE_CONNECT_INFO_SERVER_URL));
|
||||||
if (url != mainPlatformUrl) {
|
if (url != mainPlatformUrl) {
|
||||||
mainPlatformUrl = url;
|
mainPlatformUrl = url;
|
||||||
auto platformIcon = getPlatformFromEndpoint(url);
|
auto platformIcon = ConfigUtils::getPlatformIconFromEndpoint(url);
|
||||||
mainPlatformIconLabel->setPixmap(platformIcon.pixmap(30, 30));
|
mainPlatformIconLabel->setPixmap(platformIcon.pixmap(30, 30));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -572,7 +550,7 @@ void MultistreamDock::LoadOutput(obs_data_t *data, bool vertical)
|
|||||||
auto l2 = new QHBoxLayout;
|
auto l2 = new QHBoxLayout;
|
||||||
|
|
||||||
auto platformIconLabel = new QLabel;
|
auto platformIconLabel = new QLabel;
|
||||||
auto platformIcon = getPlatformFromEndpoint(endpoint);
|
auto platformIcon = ConfigUtils::getPlatformIconFromEndpoint(endpoint);
|
||||||
|
|
||||||
platformIconLabel->setPixmap(platformIcon.pixmap(30, 30));
|
platformIconLabel->setPixmap(platformIcon.pixmap(30, 30));
|
||||||
|
|
||||||
|
@ -48,20 +48,9 @@ private:
|
|||||||
void storeMainStreamEncoders();
|
void storeMainStreamEncoders();
|
||||||
QStringList mainEncoderDescriptions = QStringList(MAX_OUTPUT_VIDEO_ENCODERS);
|
QStringList mainEncoderDescriptions = QStringList(MAX_OUTPUT_VIDEO_ENCODERS);
|
||||||
|
|
||||||
QIcon getPlatformFromEndpoint(QString endpoint);
|
|
||||||
|
|
||||||
QIcon streamActiveIcon = QIcon(":/aitum/media/streaming.svg");
|
QIcon streamActiveIcon = QIcon(":/aitum/media/streaming.svg");
|
||||||
QIcon streamInactiveIcon = QIcon(":/aitum/media/stream.svg");
|
QIcon streamInactiveIcon = QIcon(":/aitum/media/stream.svg");
|
||||||
|
|
||||||
// Platform icons
|
|
||||||
QIcon platformIconTwitch = QIcon(":/aitum/media/twitch.png");
|
|
||||||
QIcon platformIconYouTube = QIcon(":/aitum/media/youtube.png");
|
|
||||||
QIcon platformIconKick = QIcon(":/aitum/media/kick.png");
|
|
||||||
QIcon platformIconTikTok = QIcon(":/aitum/media/tiktok.png");
|
|
||||||
QIcon platformIconTwitter = QIcon(":/aitum/media/twitter.png");
|
|
||||||
QIcon platformIconTrovo = QIcon(":/aitum/media/trovo.png");
|
|
||||||
QIcon platformIconFacebook = QIcon(":/aitum/media/facebook.png");
|
|
||||||
QIcon platformIconUnknown = QIcon(":/aitum/media/unknown.png");
|
|
||||||
|
|
||||||
static void frontend_event(enum obs_frontend_event event, void *private_data);
|
static void frontend_event(enum obs_frontend_event event, void *private_data);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user