From a8eebdfe5237a6b0028e61da9337bb80043fe692 Mon Sep 17 00:00:00 2001 From: fullgream Date: Mon, 24 Feb 2025 15:32:40 +0300 Subject: [PATCH] Add Qt files and first form files --- .gitignore | 2 + src/.gitignore | 74 +++++++++++++++++++++++++++++++++++ src/CMakeLists.txt | 64 +++++++++++++++++++++++++++++++ src/main-window.cpp | 15 ++++++++ src/main-window.h | 21 ++++++++++ src/main-window.ui | 22 +++++++++++ src/main.cpp | 29 ++++++++++++++ src/music-player.cpp | 14 +++++++ src/music-player.h | 22 +++++++++++ src/music-player.ui | 91 ++++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 354 insertions(+) create mode 100644 src/.gitignore create mode 100644 src/CMakeLists.txt create mode 100644 src/main-window.cpp create mode 100644 src/main-window.h create mode 100644 src/main-window.ui create mode 100644 src/main.cpp create mode 100644 src/music-player.cpp create mode 100644 src/music-player.h create mode 100644 src/music-player.ui diff --git a/.gitignore b/.gitignore index 10dcc38..cd40f3b 100644 --- a/.gitignore +++ b/.gitignore @@ -164,3 +164,5 @@ dist .yarn/install-state.gz .pnp.* +# Qt build +build-* diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 0000000..4a0b530 --- /dev/null +++ b/src/.gitignore @@ -0,0 +1,74 @@ +# This file is used to ignore files which are generated +# ---------------------------------------------------------------------------- + +*~ +*.autosave +*.a +*.core +*.moc +*.o +*.obj +*.orig +*.rej +*.so +*.so.* +*_pch.h.cpp +*_resource.rc +*.qm +.#* +*.*# +core +!core/ +tags +.DS_Store +.directory +*.debug +Makefile* +*.prl +*.app +moc_*.cpp +ui_*.h +qrc_*.cpp +Thumbs.db +*.res +*.rc +/.qmake.cache +/.qmake.stash + +# qtcreator generated files +*.pro.user* +CMakeLists.txt.user* + +# xemacs temporary files +*.flc + +# Vim temporary files +.*.swp + +# Visual Studio generated files +*.ib_pdb_index +*.idb +*.ilk +*.pdb +*.sln +*.suo +*.vcproj +*vcproj.*.*.user +*.ncb +*.sdf +*.opensdf +*.vcxproj +*vcxproj.* + +# MinGW generated files +*.Debug +*.Release + +# Python byte code +*.pyc + +# Binaries +# -------- +*.dll +*.exe + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..424e396 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,64 @@ +cmake_minimum_required(VERSION 3.25) + +project("Music Manager" VERSION 0.1 LANGUAGES CXX) + +set(PROGRAM_NAME "Music Manager") + +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) + +set(PROJECT_SOURCES + main.cpp + # Main menu + main-window.cpp main-window.h main-window.ui + # Music player + music-player.h music-player.cpp music-player.ui +) + +if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) + qt_add_executable(fullgream-music-manager + MANUAL_FINALIZATION + ${PROJECT_SOURCES} + ) +# Define target properties for Android with Qt 6 as: +# set_property(TARGET fullgream-music-manager APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR +# ${CMAKE_CURRENT_SOURCE_DIR}/android) +# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation +else() + if(ANDROID) + add_library(fullgream-music-manager SHARED + ${PROJECT_SOURCES} + ) +# Define properties for Android with Qt 5 after find_package() calls as: +# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android") + else() + add_executable(fullgream-music-manager + ${PROJECT_SOURCES} + ) + endif() +endif() + +target_link_libraries(fullgream-music-manager PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) + +set_target_properties(fullgream-music-manager PROPERTIES + MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com + MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} + MACOSX_BUNDLE TRUE + WIN32_EXECUTABLE TRUE +) + +install(TARGETS fullgream-music-manager + BUNDLE DESTINATION . + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +if(QT_VERSION_MAJOR EQUAL 6) + qt_finalize_executable(fullgream-music-manager) +endif() diff --git a/src/main-window.cpp b/src/main-window.cpp new file mode 100644 index 0000000..4871dc6 --- /dev/null +++ b/src/main-window.cpp @@ -0,0 +1,15 @@ +#include "main-window.h" +#include "./ui_main-window.h" + +MainWindow::MainWindow(QWidget *parent) + : QMainWindow(parent) + , ui(new Ui::MainWindow) +{ + ui->setupUi(this); +} + +MainWindow::~MainWindow() +{ + delete ui; +} + diff --git a/src/main-window.h b/src/main-window.h new file mode 100644 index 0000000..4643e32 --- /dev/null +++ b/src/main-window.h @@ -0,0 +1,21 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +QT_BEGIN_NAMESPACE +namespace Ui { class MainWindow; } +QT_END_NAMESPACE + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + MainWindow(QWidget *parent = nullptr); + ~MainWindow(); + +private: + Ui::MainWindow *ui; +}; +#endif // MAINWINDOW_H diff --git a/src/main-window.ui b/src/main-window.ui new file mode 100644 index 0000000..b232854 --- /dev/null +++ b/src/main-window.ui @@ -0,0 +1,22 @@ + + + MainWindow + + + + 0 + 0 + 800 + 600 + + + + MainWindow + + + + + + + + diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..33b8d75 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,29 @@ +#include "main-window.h" +#include "music-player.h" + +#include +#include +#include +using std::string; + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + if (argc > 1) { + string pathToMusic = ""; + for (int p = 1; p < argc; p++) { + pathToMusic += argv[p]; + pathToMusic += " "; + } + pathToMusic = pathToMusic.substr(0, pathToMusic.length() - 1); + qDebug() << pathToMusic.c_str(); + MusicPlayer mp; + mp.show(); + return a.exec(); + } + else { + MainWindow w; + w.show(); + return a.exec(); + } +} diff --git a/src/music-player.cpp b/src/music-player.cpp new file mode 100644 index 0000000..55b8ad0 --- /dev/null +++ b/src/music-player.cpp @@ -0,0 +1,14 @@ +#include "music-player.h" +#include "ui_music-player.h" + +MusicPlayer::MusicPlayer(QWidget *parent) : + QWidget(parent), + ui(new Ui::MusicPlayer) +{ + ui->setupUi(this); +} + +MusicPlayer::~MusicPlayer() +{ + delete ui; +} diff --git a/src/music-player.h b/src/music-player.h new file mode 100644 index 0000000..8a97aa1 --- /dev/null +++ b/src/music-player.h @@ -0,0 +1,22 @@ +#ifndef MUSICPLAYER_H +#define MUSICPLAYER_H + +#include + +namespace Ui { +class MusicPlayer; +} + +class MusicPlayer : public QWidget +{ + Q_OBJECT + +public: + explicit MusicPlayer(QWidget *parent = nullptr); + ~MusicPlayer(); + +private: + Ui::MusicPlayer *ui; +}; + +#endif // MUSICPLAYER_H diff --git a/src/music-player.ui b/src/music-player.ui new file mode 100644 index 0000000..1f3003a --- /dev/null +++ b/src/music-player.ui @@ -0,0 +1,91 @@ + + + MusicPlayer + + + + 0 + 0 + 539 + 132 + + + + FullGreaM's Music Player + + + + + 0 + 30 + 541 + 16 + + + + Qt::Horizontal + + + + + + 10 + 0 + 531 + 31 + + + + MusicName.mp3 + + + + + + 0 + 50 + 541 + 41 + + + + + + + > + + + + + + + 0 + + + + + + + i + + + + + + + + + 10 + 100 + 531 + 23 + + + + Repeat + + + + + +