diff options
Diffstat (limited to 'src/plugins/CommandLineOptions/IncDecVolumeOption')
4 files changed, 159 insertions, 0 deletions
diff --git a/src/plugins/CommandLineOptions/IncDecVolumeOption/CMakeLists.txt b/src/plugins/CommandLineOptions/IncDecVolumeOption/CMakeLists.txt new file mode 100644 index 000000000..542f4fab2 --- /dev/null +++ b/src/plugins/CommandLineOptions/IncDecVolumeOption/CMakeLists.txt @@ -0,0 +1,48 @@ +project(libincdecvolumeoption) + +cmake_minimum_required(VERSION 2.4.0) + +if(COMMAND cmake_policy) +cmake_policy(SET CMP0003 NEW) +endif(COMMAND cmake_policy) + + +# qt plugin +ADD_DEFINITIONS( -Wall ) +ADD_DEFINITIONS(${QT_DEFINITIONS}) +ADD_DEFINITIONS(-DQT_PLUGIN) +ADD_DEFINITIONS(-DQT_NO_DEBUG) +ADD_DEFINITIONS(-DQT_SHARED) +ADD_DEFINITIONS(-DQT_THREAD) + +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +SET(QT_INCLUDES + ${QT_INCLUDES} + ${CMAKE_CURRENT_BINARY_DIR}/../../../ +) + +# libqmmpui +include_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../) +link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmpui) + +SET(libincdecvolumeoption_SRCS + incdecvolumeoption.cpp +) + +SET(libincdecvolumeoption_MOC_HDRS + incdecvolumeoption.h +) + +QT4_ADD_RESOURCES(libincdecvolumeoption_RCC_SRCS ${libincdecvolumeoption_RCCS}) + +QT4_WRAP_CPP(libincdecvolumeoption_MOC_SRCS ${libincdecvolumeoption_MOC_HDRS}) + + +# Don't forget to include output directory, otherwise +# the UI file won't be wrapped! +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +ADD_LIBRARY(incdecvolumeoption SHARED ${libincdecvolumeoption_SRCS} ${libincdecvolumeoption_MOC_SRCS}) +target_link_libraries(incdecvolumeoption ${QT_LIBRARIES} -lqmmpui) +install(TARGETS incdecvolumeoption DESTINATION ${LIB_DIR}/qmmp/CommandLineOptions) diff --git a/src/plugins/CommandLineOptions/IncDecVolumeOption/IncDecVolumeOption.pro b/src/plugins/CommandLineOptions/IncDecVolumeOption/IncDecVolumeOption.pro new file mode 100644 index 000000000..8b98e14db --- /dev/null +++ b/src/plugins/CommandLineOptions/IncDecVolumeOption/IncDecVolumeOption.pro @@ -0,0 +1,26 @@ +include(../../plugins.pri) + +CONFIG += release \ +warn_on \ +plugin \ + lib + +TARGET =$$PLUGINS_PREFIX/CommandLineOptions/incdecvolumeoption +QMAKE_CLEAN =$$PLUGINS_PREFIX/CommandLineOptions/libincdecvolumeoption.so + +TEMPLATE = lib +QMAKE_LIBDIR += ../../../../lib + +isEmpty(LIB_DIR){ + LIB_DIR = /lib +} +target.path = $$LIB_DIR/qmmp/CommandLineOptions +INSTALLS += target + +INCLUDEPATH += ../../../../src + +LIBS += -lqmmpui + +HEADERS += incdecvolumeoption.h + +SOURCES += incdecvolumeoption.cpp diff --git a/src/plugins/CommandLineOptions/IncDecVolumeOption/incdecvolumeoption.cpp b/src/plugins/CommandLineOptions/IncDecVolumeOption/incdecvolumeoption.cpp new file mode 100644 index 000000000..93a7dd21d --- /dev/null +++ b/src/plugins/CommandLineOptions/IncDecVolumeOption/incdecvolumeoption.cpp @@ -0,0 +1,60 @@ +#include <QtPlugin> +#include <QTranslator> + +#include "incdecvolumeoption.h" + +bool IncDecVolumeCommandLineOption::identify(const QString & str) const +{ + if ( + str == QString("--volume-inc") || + str == QString("--volume-dec") + ) + { + return TRUE; + } + + return FALSE; +} + +const QString IncDecVolumeCommandLineOption::helpString() const +{ + return QString( + "--volume-inc " + tr("Increase volume with step 5")+"\n" + "--volume-dec " + tr("Decrease volume with step 5")+"\n" + ); +} + + +void IncDecVolumeCommandLineOption::executeCommand(const QString& opt_str, CommandLineManager* clm, Control* ctrl) +{ + int volume = qMax(clm->leftVolume(), clm->rightVolume()); + int balance = 0; + int left = clm->leftVolume(); + int right = clm->rightVolume(); + if (left || right) + balance = (right - left)*100/volume; + + if (opt_str == "--volume-inc") + { + volume = qMin (100, volume + 5); + } + else if (opt_str == "--volume-dec") + { + volume = qMax (0, volume - 5); + } + ctrl->setVolume(volume-qMax(balance,0)*volume/100, + volume+qMin(balance,0)*volume/100); +} + +const QString IncDecVolumeCommandLineOption::name() const +{ + return "IncDecVolumeCommandLineOption"; +} + +QTranslator *IncDecVolumeCommandLineOption::createTranslator(QObject *parent) +{ + Q_UNUSED(parent); + return 0; +} + +Q_EXPORT_PLUGIN(IncDecVolumeCommandLineOption) diff --git a/src/plugins/CommandLineOptions/IncDecVolumeOption/incdecvolumeoption.h b/src/plugins/CommandLineOptions/IncDecVolumeOption/incdecvolumeoption.h new file mode 100644 index 000000000..cc27260f6 --- /dev/null +++ b/src/plugins/CommandLineOptions/IncDecVolumeOption/incdecvolumeoption.h @@ -0,0 +1,25 @@ +#ifndef IncDecVolumeCommandLineOption_H +#define IncDecVolumeCommandLineOption_H + +#include <QString> +#include <QObject> + +#include <qmmpui/commandlineoption.h> +#include <qmmpui/control.h> +#include <qmmpui/commandlinemanager.h> + + +class IncDecVolumeCommandLineOption : public QObject, public CommandLineOption +{ +Q_OBJECT +Q_INTERFACES(CommandLineOption) +public: + virtual bool identify(const QString& opt_str)const; + virtual const QString name()const; + virtual const QString helpString()const; + virtual void executeCommand(const QString& opt_str, CommandLineManager* clm, Control* ctrl); + virtual QTranslator *createTranslator(QObject *parent); +}; + +#endif + |
