Begin rewriting Player in C++
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -88,4 +88,7 @@ out/
|
|||||||
.direnv
|
.direnv
|
||||||
dist
|
dist
|
||||||
CMakePresets.json
|
CMakePresets.json
|
||||||
CMakeUserPresets.json
|
CMakeUserPresets.json
|
||||||
|
|
||||||
|
ext/*
|
||||||
|
!ext/.gitkeep
|
||||||
6
.vscode/settings.json
vendored
Normal file
6
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"files.associations": {
|
||||||
|
"flake.lock": "json",
|
||||||
|
"qobject": "cpp"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,15 +1,22 @@
|
|||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
|
||||||
|
|
||||||
project(qyouradio VERSION 0.1 LANGUAGES CXX)
|
project(qyouradio VERSION 0.1 LANGUAGES CXX)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
find_package(Qt6 REQUIRED COMPONENTS Quick Multimedia)
|
find_package(Qt6 REQUIRED COMPONENTS Core Quick Multimedia)
|
||||||
|
find_package(DiscordSDK)
|
||||||
|
|
||||||
qt_standard_project_setup(REQUIRES 6.8)
|
qt_standard_project_setup(REQUIRES 6.8)
|
||||||
|
|
||||||
|
configure_file(buildFlags.h.in buildFlags.h)
|
||||||
|
|
||||||
qt_add_executable(appqyouradio
|
qt_add_executable(appqyouradio
|
||||||
main.cpp
|
main.cpp
|
||||||
|
buildFlags.h
|
||||||
|
player.cpp player.h
|
||||||
resources/qyouradio.rc
|
resources/qyouradio.rc
|
||||||
resources/resource.h
|
resources/resource.h
|
||||||
)
|
)
|
||||||
@@ -28,7 +35,7 @@ qt_add_qml_module(appqyouradio
|
|||||||
VERSION 1.0
|
VERSION 1.0
|
||||||
QML_FILES
|
QML_FILES
|
||||||
Main.qml
|
Main.qml
|
||||||
Player.qml
|
# Player.qml
|
||||||
ViewPlayer.qml
|
ViewPlayer.qml
|
||||||
ViewSettings.qml
|
ViewSettings.qml
|
||||||
)
|
)
|
||||||
@@ -44,10 +51,18 @@ set_target_properties(appqyouradio PROPERTIES
|
|||||||
WIN32_EXECUTABLE TRUE
|
WIN32_EXECUTABLE TRUE
|
||||||
)
|
)
|
||||||
|
|
||||||
|
target_include_directories(appqyouradio PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
|
||||||
|
|
||||||
target_link_libraries(appqyouradio
|
target_link_libraries(appqyouradio
|
||||||
PUBLIC Qt6::Quick Qt6::Multimedia
|
PUBLIC Qt6::Quick Qt6::Multimedia
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (DiscordSDK_FOUND)
|
||||||
|
target_link_libraries(appqyouradio
|
||||||
|
PRIVATE DiscordSDK::DiscordSDK
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
install(TARGETS appqyouradio
|
install(TARGETS appqyouradio
|
||||||
BUNDLE DESTINATION .
|
BUNDLE DESTINATION .
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
{ stdenv
|
{ stdenv
|
||||||
, lib
|
, lib
|
||||||
|
, alsa-lib
|
||||||
|
, xorg
|
||||||
, clang
|
, clang
|
||||||
, qtbase
|
, qtbase
|
||||||
, qtdeclarative
|
, qtdeclarative
|
||||||
@@ -18,6 +20,10 @@ stdenv.mkDerivation {
|
|||||||
src = ./.;
|
src = ./.;
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
# alsa-lib
|
||||||
|
# xorg.libX11
|
||||||
|
# xorg.libXext
|
||||||
|
|
||||||
qtbase
|
qtbase
|
||||||
qtdeclarative
|
qtdeclarative
|
||||||
qtlocation
|
qtlocation
|
||||||
|
|||||||
1
buildFlags.h.in
Normal file
1
buildFlags.h.in
Normal file
@@ -0,0 +1 @@
|
|||||||
|
#cmakedefine01 DiscordSDK_FOUND
|
||||||
103
cmake/FindDiscordSDK.cmake
Normal file
103
cmake/FindDiscordSDK.cmake
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
# Locate Discord Social SDK library and headers.
|
||||||
|
#
|
||||||
|
# Copyright (c) 2025 hat_kid
|
||||||
|
# https://github.com/thehatkid/DiscordSocialSDKExample
|
||||||
|
#
|
||||||
|
# Usage of this module as follows:
|
||||||
|
# find_package(DiscordSDK)
|
||||||
|
#
|
||||||
|
# Variables defined by this module:
|
||||||
|
# DISCORDSDK_FOUND Whether was found library and headers.
|
||||||
|
# DISCORDSDK_INCLUDE_DIR SDK include path.
|
||||||
|
# DISCORDSDK_LIBRARY SDK shared library path.
|
||||||
|
# DISCORDSDK_IMPLIB Win32: SDK object library path to link.
|
||||||
|
|
||||||
|
# Set SDK root directory path (You can change it to different path)
|
||||||
|
set(DISCORDSDK_ROOT_DIR "${CMAKE_SOURCE_DIR}/ext/discord_social_sdk" CACHE PATH "Discord Social SDK root path")
|
||||||
|
|
||||||
|
# Set SDK library build variant
|
||||||
|
set(DISCORDSDK_VARIANT "release" CACHE STRING "Discord Social SDK library variant")
|
||||||
|
|
||||||
|
set_property(CACHE DISCORDSDK_VARIANT PROPERTY STRINGS "release" "debug")
|
||||||
|
|
||||||
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
set(DISCORDSDK_VARIANT "debug")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Find SDK include directory path
|
||||||
|
find_path(
|
||||||
|
DISCORDSDK_INCLUDE_DIR
|
||||||
|
NAMES cdiscord.h discordpp.h
|
||||||
|
PATHS ${DISCORDSDK_ROOT_DIR}/include
|
||||||
|
DOC "Discord Social SDK include directory"
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
|
||||||
|
# Find SDK library path
|
||||||
|
if(WIN32)
|
||||||
|
find_file(
|
||||||
|
DISCORDSDK_LIBRARY
|
||||||
|
NAMES discord_partner_sdk.dll
|
||||||
|
PATHS ${DISCORDSDK_ROOT_DIR}/bin/${DISCORDSDK_VARIANT}
|
||||||
|
DOC "Discord Social SDK Windows Dynamic Link Library (.dll)"
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
find_file(
|
||||||
|
DISCORDSDK_IMPLIB
|
||||||
|
NAMES discord_partner_sdk.lib
|
||||||
|
PATHS ${DISCORDSDK_ROOT_DIR}/lib/${DISCORDSDK_VARIANT}
|
||||||
|
DOC "Discord Social SDK Windows Object Library (.lib)"
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
find_library(
|
||||||
|
DISCORDSDK_LIBRARY
|
||||||
|
NAMES libdiscord_partner_sdk discord_partner_sdk
|
||||||
|
PATHS ${DISCORDSDK_ROOT_DIR}/lib/${DISCORDSDK_VARIANT}
|
||||||
|
DOC "Discord Social SDK shared library"
|
||||||
|
NO_DEFAULT_PATH
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
mark_as_advanced(
|
||||||
|
DISCORDSDK_ROOT_DIR
|
||||||
|
DISCORDSDK_VARIANT
|
||||||
|
DISCORDSDK_INCLUDE_DIR
|
||||||
|
DISCORDSDK_LIBRARY
|
||||||
|
)
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
DiscordSDK
|
||||||
|
REQUIRED_VARS DISCORDSDK_IMPLIB DISCORDSDK_LIBRARY DISCORDSDK_INCLUDE_DIR
|
||||||
|
)
|
||||||
|
mark_as_advanced(DISCORDSDK_IMPLIB)
|
||||||
|
else()
|
||||||
|
find_package_handle_standard_args(
|
||||||
|
DiscordSDK
|
||||||
|
REQUIRED_VARS DISCORDSDK_LIBRARY DISCORDSDK_INCLUDE_DIR
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT DiscordSDK_FOUND)
|
||||||
|
message("Could NOT find Discord Social SDK redistributable! Please check for SDK files in ${DISCORDSDK_ROOT_DIR}")
|
||||||
|
else()
|
||||||
|
# Add imported shared library as DiscordSDK::DiscordSDK
|
||||||
|
add_library(DiscordSDK::DiscordSDK SHARED IMPORTED)
|
||||||
|
|
||||||
|
set_target_properties(
|
||||||
|
DiscordSDK::DiscordSDK PROPERTIES
|
||||||
|
IMPORTED_LOCATION ${DISCORDSDK_LIBRARY}
|
||||||
|
INTERFACE_COMPILE_DEFINITIONS DISCORDPP_IMPLEMENTATION
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES ${DISCORDSDK_INCLUDE_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
set_target_properties(
|
||||||
|
DiscordSDK::DiscordSDK PROPERTIES
|
||||||
|
IMPORTED_IMPLIB ${DISCORDSDK_IMPLIB}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
0
ext/.gitkeep
Normal file
0
ext/.gitkeep
Normal file
8
main.cpp
8
main.cpp
@@ -1,7 +1,9 @@
|
|||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
#include <QGuiApplication>
|
#include <QGuiApplication>
|
||||||
#include <QQmlApplicationEngine>
|
#include <QQmlApplicationEngine>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
#include "buildFlags.h"
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@@ -14,6 +16,12 @@ int main(int argc, char *argv[])
|
|||||||
engine.loadFromModule("qyouradio", "Main");
|
engine.loadFromModule("qyouradio", "Main");
|
||||||
|
|
||||||
app.setWindowIcon(QIcon(":/resources/logo.png"));
|
app.setWindowIcon(QIcon(":/resources/logo.png"));
|
||||||
|
|
||||||
|
#if DiscordSDK_FOUND
|
||||||
|
qInfo("Has Discord Social SDK: true");
|
||||||
|
#else
|
||||||
|
qInfo("Has Discord Social SDK: false");
|
||||||
|
#endif
|
||||||
|
|
||||||
return app.exec();
|
return app.exec();
|
||||||
}
|
}
|
||||||
|
|||||||
21
player.cpp
Normal file
21
player.cpp
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#include "player.h"
|
||||||
|
|
||||||
|
Player::Player(QObject *parent) : QObject(parent)
|
||||||
|
{
|
||||||
|
qDebug("Player::Player(): Constructed");
|
||||||
|
}
|
||||||
|
|
||||||
|
Player::~Player()
|
||||||
|
{
|
||||||
|
qDebug("Player::~Player(): Destructed");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Player::startPlaying(int index)
|
||||||
|
{
|
||||||
|
qDebug("Player::startPlaying(): Success, I can call between both environments!");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Player::stopPlaying()
|
||||||
|
{
|
||||||
|
qDebug("Player::stopPlaying(): Success, I can even tell C++ to stop!");
|
||||||
|
}
|
||||||
18
player.h
Normal file
18
player.h
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QObject>
|
||||||
|
#include <QtQmlIntegration/qqmlintegration.h>
|
||||||
|
|
||||||
|
class Player : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
QML_SINGLETON
|
||||||
|
QML_ELEMENT
|
||||||
|
public:
|
||||||
|
Player(QObject *parent = nullptr);
|
||||||
|
~Player();
|
||||||
|
|
||||||
|
Q_INVOKABLE void startPlaying(int index);
|
||||||
|
Q_INVOKABLE void stopPlaying();
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user