actions: new action: set_volume

This commit is contained in:
Andrzej Rybczak
2013-04-06 14:07:35 +02:00
parent a4160790cf
commit ead12406e3
4 changed files with 32 additions and 5 deletions

View File

@@ -1204,6 +1204,22 @@ void SetCrossfade::run()
}
}
void SetVolume::run()
{
using Global::wFooter;
Statusbar::lock();
Statusbar::put() << "Set volume to: ";
std::string strvolume = wFooter->getString(3);
Statusbar::unlock();
int volume = boost::lexical_cast<int>(strvolume);
if (volume >= 0 && volume <= 100)
{
if (Mpd.SetVolume(volume))
Statusbar::msg("Volume set to %d%%", volume);
}
}
bool EditSong::canBeRun() const
{
# ifdef HAVE_TAGLIB_H
@@ -2490,6 +2506,7 @@ void populateActions()
insert_action(new Actions::ToggleConsume());
insert_action(new Actions::ToggleCrossfade());
insert_action(new Actions::SetCrossfade());
insert_action(new Actions::SetVolume());
insert_action(new Actions::EditSong());
insert_action(new Actions::EditLibraryTag());
insert_action(new Actions::EditLibraryAlbum());

View File

@@ -41,7 +41,7 @@ enum class Type
ToggleLyricsFetcher, ToggleFetchingLyricsInBackground, TogglePlayingSongCentering,
UpdateDatabase, JumpToPlayingSong, ToggleRepeat, Shuffle, ToggleRandom,
StartSearching, SaveTagChanges, ToggleSingle, ToggleConsume, ToggleCrossfade,
SetCrossfade, EditSong, EditLibraryTag, EditLibraryAlbum, EditDirectoryName,
SetCrossfade, SetVolume, EditSong, EditLibraryTag, EditLibraryAlbum, EditDirectoryName,
EditPlaylistName, EditLyrics, JumpToBrowser, JumpToMediaLibrary,
JumpToPlaylistEditor, ToggleScreenLock, JumpToTagEditor, JumpToPositionInSong,
ReverseSelection, RemoveSelection, SelectAlbum, AddSelectedItems,
@@ -593,6 +593,14 @@ protected:
virtual void run();
};
struct SetVolume : public BaseAction
{
SetVolume() : BaseAction(Type::SetVolume, "set_volume") { }
protected:
virtual void run();
};
struct EditSong : public BaseAction
{
EditSong() : BaseAction(Type::EditSong, "edit_song") { }

View File

@@ -799,14 +799,16 @@ void Connection::SetConsume(bool mode)
}
}
void Connection::SetVolume(unsigned vol)
bool Connection::SetVolume(unsigned vol)
{
if (!itsConnection || vol > 100)
return;
return false;
assert(!isCommandsListEnabled);
GoBusy();
if (mpd_run_set_volume(itsConnection, vol) && !supportsIdle)
bool success = mpd_run_set_volume(itsConnection, vol);
if (success && !supportsIdle)
UpdateStatus();
return success;
}
std::string Connection::GetReplayGainMode()

View File

@@ -187,7 +187,7 @@ public:
void SetSingle(bool);
void SetConsume(bool);
void SetCrossfade(unsigned);
void SetVolume(unsigned);
bool SetVolume(unsigned);
std::string GetReplayGainMode();
void SetReplayGainMode(ReplayGainMode);