diff --git a/CMakeLists.txt b/CMakeLists.txt index d0289643..96fbd795 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,6 +88,7 @@ find_package(Qt5Concurrent REQUIRED) find_package(Qt5Network REQUIRED) find_package(Qt5Test REQUIRED) find_package(Qt5Xml REQUIRED) +find_package(Qt5Multimedia REQUIRED) # The Qt5 cmake files don't provide its install paths, so ask qmake. include(QMakeQuery) diff --git a/application/CMakeLists.txt b/application/CMakeLists.txt index 94ba56d0..ae7501fb 100644 --- a/application/CMakeLists.txt +++ b/application/CMakeLists.txt @@ -297,7 +297,7 @@ qt5_add_resources(MULTIMC_RESOURCES ${MULTIMC_QRCS}) # Add executable add_executable(MultiMC MACOSX_BUNDLE WIN32 ${MULTIMC_SOURCES} ${MULTIMC_UI} ${MULTIMC_RESOURCES} ${MULTIMC_RCS}) -target_link_libraries(MultiMC MultiMC_gui ${QUAZIP_LIBRARIES} hoedown MultiMC_rainbow LocalPeer ganalytics) +target_link_libraries(MultiMC MultiMC_gui ${QUAZIP_LIBRARIES} hoedown MultiMC_rainbow LocalPeer ganalytics Qt5::Multimedia) if(DEFINED MultiMC_APP_BINARY_NAME) set_target_properties(MultiMC PROPERTIES OUTPUT_NAME "${MultiMC_APP_BINARY_NAME}") endif() diff --git a/application/MainWindow.cpp b/application/MainWindow.cpp index 34ffc54b..514ee7f5 100644 --- a/application/MainWindow.cpp +++ b/application/MainWindow.cpp @@ -1285,7 +1285,7 @@ void MainWindow::downloadUpdates(GoUpdate::Status status) void MainWindow::onCatToggled(bool state) { - setCatBackground(state); + setCatBackground(state, false); MMC->settings()->set("TheCat", state); } @@ -1299,8 +1299,9 @@ T non_stupid_abs(T in) } } -void MainWindow::setCatBackground(bool enabled) +void MainWindow::setCatBackground(bool enabled, bool initial) { + static int currentMeow = 0; if (enabled) { QDateTime now = QDateTime::currentDateTime(); @@ -1317,9 +1318,28 @@ GroupView background-repeat: none; background-color:palette(base); })").arg(cat)); + if(!initial) { + const char * sounds[] = { + "/home/peterix/meows/Fiona52fixed.wav", + "/home/peterix/meows/Fiona72.wav", + "/home/peterix/meows/Fiona76.wav", + "/home/peterix/meows/Fiona81.wav", + "/home/peterix/meows/Fiona85.wav" + }; + qDebug() << "PLAY MEOW" << currentMeow; + meow.setSource(QUrl::fromLocalFile(sounds[currentMeow])); + meow.setLoopCount(1); + meow.play(); + int newMeow = qrand() % 4; + if(newMeow == currentMeow) { + newMeow++; + } + currentMeow = newMeow; + } } else { + meow.stop(); view->setStyleSheet(QString()); } } diff --git a/application/MainWindow.h b/application/MainWindow.h index a415b5e8..3e497837 100644 --- a/application/MainWindow.h +++ b/application/MainWindow.h @@ -20,6 +20,7 @@ #include #include #include +#include #include "BaseInstance.h" #include "minecraft/auth/MojangAccount.h" @@ -189,7 +190,7 @@ private slots: private: void addInstance(QString url = QString()); void activateInstance(InstancePtr instance); - void setCatBackground(bool enabled); + void setCatBackground(bool enabled, bool initial = true); void updateInstanceToolIcon(QString new_icon); void setSelectedInstanceById(const QString &id); @@ -200,6 +201,8 @@ private: private: std::unique_ptr ui; + QSoundEffect meow; + // these are managed by Qt's memory management model! GroupView *view = nullptr; InstanceProxyModel *proxymodel = nullptr;