support for dirs/playlists rename in browser

This commit is contained in:
unK
2008-09-19 23:29:32 +02:00
parent ce9fed322d
commit 6ff6f6e258
4 changed files with 71 additions and 13 deletions

View File

@@ -2313,35 +2313,79 @@ int main(int argc, char *argv[])
}
else if (wCurrent == mEditorDirs)
{
string old_dir = mEditorDirs->Current().first;
LockStatusbar();
wFooter->WriteXY(0, Config.statusbar_visibility, "Directory: ", 1);
string new_dir = wFooter->GetString(mEditorDirs->Current().first);
string new_dir = wFooter->GetString(old_dir);
UnlockStatusbar();
if (!new_dir.empty() && new_dir != mEditorDirs->Current().first)
if (!new_dir.empty() && new_dir != old_dir)
{
string old_dir = Config.mpd_music_dir + mEditorDirs->Current().second;
new_dir = Config.mpd_music_dir + editor_browsed_dir + "/" + new_dir;
if (rename(old_dir.c_str(), new_dir.c_str()) == 0)
string full_old_dir = Config.mpd_music_dir + editor_browsed_dir + "/" + old_dir;
string full_new_dir = Config.mpd_music_dir + editor_browsed_dir + "/" + new_dir;
if (rename(full_old_dir.c_str(), full_new_dir.c_str()) == 0)
{
ShowMessage("'" + mEditorDirs->Current().first + "' renamed to '" + new_dir);
Mpd->UpdateDirectory(editor_browsed_dir);
ShowMessage("'" + old_dir + "' renamed to '" + new_dir + "'");
}
else
ShowMessage("Cannot rename '" + old_dir + "' to '" + new_dir + "'!");
ShowMessage("Cannot rename '" + full_old_dir + "' to '" + full_new_dir + "'!");
}
}
else
# endif // HAVE_TAGLIB_H
if (wCurrent == mPlaylistList)
if (wCurrent == mBrowser && mBrowser->Current().type == itDirectory)
{
string old_dir = mBrowser->Current().name;
LockStatusbar();
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Directory:[/b] ", 1);
string new_dir = wFooter->GetString(old_dir);
UnlockStatusbar();
if (!new_dir.empty() && new_dir != old_dir)
{
string full_old_dir = Config.mpd_music_dir + old_dir;
string full_new_dir = Config.mpd_music_dir + new_dir;
if (rename(full_old_dir.c_str(), full_new_dir.c_str()) == 0)
{
ShowMessage("'" + old_dir + "' renamed to '" + new_dir + "'");
Mpd->UpdateDirectory(FindSharedDir(old_dir, new_dir));
}
else
ShowMessage("Cannot rename '" + full_old_dir + "' to '" + full_new_dir + "'!");
}
}
// blah, this key is already reserved for TagEditor. I'll merge this to its screen later.
/*else if (wCurrent == mBrowser && mBrowser->Current().type == itSong)
{
string old_name = mBrowser->Current().song->GetFile();
LockStatusbar();
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Filename:[/b] ", 1);
string new_name = wFooter->GetString(old_name);
UnlockStatusbar();
if (!new_name.empty() && new_name != old_name)
{
string full_old_name = Config.mpd_music_dir + old_name;
string full_new_name = Config.mpd_music_dir + new_name;
if (rename(full_old_name.c_str(), full_new_name.c_str()) == 0)
{
Mpd->UpdateDirectory(FindSharedDir(old_name, new_name));
ShowMessage("'" + old_name + "' renamed to '" + new_name + "'");
}
else
ShowMessage("Cannot rename '" + old_name + "' to '" + new_name + "'!");
}
}*/
else if (wCurrent == mPlaylistList || wCurrent == mBrowser && mBrowser->Current().type == itPlaylist)
{
string old_name = wCurrent == mPlaylistList ? mPlaylistList->GetOption() : mBrowser->Current().name;
LockStatusbar();
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Playlist:[/b] ", 1);
string new_name = wFooter->GetString(mPlaylistList->GetOption());
string new_name = wFooter->GetString(old_name);
UnlockStatusbar();
if (!new_name.empty() && new_name != mPlaylistList->GetOption())
if (!new_name.empty() && new_name != old_name)
{
Mpd->Rename(mPlaylistList->GetOption(), new_name);
ShowMessage("Playlist '" + mPlaylistList->GetOption() + "' renamed to '" + new_name + "'");
Mpd->Rename(old_name, new_name);
ShowMessage("Playlist '" + old_name + "' renamed to '" + new_name + "'");
GetDirectory("/");
mPlaylistList->Clear(0);
}
}