tag editor: fix filename change detection

This commit is contained in:
Andrzej Rybczak
2014-08-27 06:09:22 +02:00
parent e7c2e7790f
commit e3e6aa09cc
6 changed files with 24 additions and 24 deletions

View File

@@ -371,12 +371,12 @@ void Display::Tags(NC::Menu<MPD::MutableSong> &menu)
} }
else if (i == 12) else if (i == 12)
{ {
if (s.getNewURI().empty()) if (s.getNewName().empty())
menu << Charset::utf8ToLocale(s.getName()); menu << Charset::utf8ToLocale(s.getName());
else else
menu << Charset::utf8ToLocale(s.getName()) menu << Charset::utf8ToLocale(s.getName())
<< Config.color2 << " -> " << NC::Color::End << Config.color2 << " -> " << NC::Color::End
<< Charset::utf8ToLocale(s.getNewURI()); << Charset::utf8ToLocale(s.getNewName());
} }
} }
#endif // HAVE_TAGLIB_H #endif // HAVE_TAGLIB_H

View File

@@ -18,6 +18,7 @@
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/ ***************************************************************************/
#include "statusbar.h"
#include <boost/algorithm/string/split.hpp> #include <boost/algorithm/string/split.hpp>
#include "mutable_song.h" #include "mutable_song.h"
@@ -138,18 +139,17 @@ void MutableSong::setComment(const std::string &value, unsigned idx)
replaceTag(MPD_TAG_COMMENT, Song::getComment(idx), value, idx); replaceTag(MPD_TAG_COMMENT, Song::getComment(idx), value, idx);
} }
const std::string &MutableSong::getNewURI() const const std::string &MutableSong::getNewName() const
{ {
return m_uri; return m_name;
} }
void MutableSong::setNewURI(const std::string &value) void MutableSong::setNewName(const std::string &value)
{ {
std::string orig_uri = getURI(); if (getName() == value)
if (orig_uri == value) m_name.clear();
m_uri.clear();
else else
m_uri = value; m_name = value;
} }
unsigned MutableSong::getDuration() const unsigned MutableSong::getDuration() const
@@ -191,12 +191,12 @@ void MutableSong::setTags(SetFunction set, const std::string &value, const std::
bool MutableSong::isModified() const bool MutableSong::isModified() const
{ {
return !m_uri.empty() || !m_tags.empty(); return !m_name.empty() || !m_tags.empty();
} }
void MutableSong::clearModifications() void MutableSong::clearModifications()
{ {
m_uri.clear(); m_name.clear();
m_tags.clear(); m_tags.clear();
} }

View File

@@ -58,8 +58,8 @@ struct MutableSong : public Song
void setDisc(const std::string &value, unsigned idx = 0); void setDisc(const std::string &value, unsigned idx = 0);
void setComment(const std::string &value, unsigned idx = 0); void setComment(const std::string &value, unsigned idx = 0);
const std::string &getNewURI() const; const std::string &getNewName() const;
void setNewURI(const std::string &value); void setNewName(const std::string &value);
virtual unsigned getDuration() const OVERRIDE; virtual unsigned getDuration() const OVERRIDE;
virtual time_t getMTime() const OVERRIDE; virtual time_t getMTime() const OVERRIDE;
@@ -105,7 +105,7 @@ private:
return result; return result;
} }
std::string m_uri; std::string m_name;
time_t m_mtime; time_t m_mtime;
unsigned m_duration; unsigned m_duration;
std::map<Tag, std::string> m_tags; std::map<Tag, std::string> m_tags;

View File

@@ -398,7 +398,7 @@ void TagEditor::enterPressed()
success = 0; success = 0;
} }
if (!FParserUsePreview) if (!FParserUsePreview)
s.setNewURI(new_file + extension); s.setNewName(new_file + extension);
*FParserPreview << file << Config.color2 << " -> " << NC::Color::End; *FParserPreview << file << Config.color2 << " -> " << NC::Color::End;
if (new_file.empty()) if (new_file.empty())
*FParserPreview << Config.empty_tags_color << Config.empty_tag << NC::Color::End; *FParserPreview << Config.empty_tags_color << Config.empty_tag << NC::Color::End;
@@ -523,7 +523,7 @@ void TagEditor::enterPressed()
else if (w == Tags) else if (w == Tags)
{ {
MPD::MutableSong &s = Tags->current().value(); MPD::MutableSong &s = Tags->current().value();
std::string old_name = s.getNewURI().empty() ? s.getName() : s.getNewURI(); std::string old_name = s.getNewName().empty() ? s.getName() : s.getNewName();
size_t last_dot = old_name.rfind("."); size_t last_dot = old_name.rfind(".");
std::string extension = old_name.substr(last_dot); std::string extension = old_name.substr(last_dot);
old_name = old_name.substr(0, last_dot); old_name = old_name.substr(0, last_dot);
@@ -531,8 +531,8 @@ void TagEditor::enterPressed()
Statusbar::put() << NC::Format::Bold << "New filename: " << NC::Format::NoBold; Statusbar::put() << NC::Format::Bold << "New filename: " << NC::Format::NoBold;
std::string new_name = wFooter->getString(old_name); std::string new_name = wFooter->getString(old_name);
Statusbar::unlock(); Statusbar::unlock();
if (!new_name.empty() && new_name != old_name) if (!new_name.empty())
s.setNewURI(new_name + extension); s.setNewName(new_name + extension);
Tags->scroll(NC::Scroll::Down); Tags->scroll(NC::Scroll::Down);
} }
} }
@@ -1203,7 +1203,7 @@ std::string SongToString(const MPD::MutableSong &s)
if (i < 11) if (i < 11)
result = (s.*SongInfo::Tags[i].Get)(0); result = (s.*SongInfo::Tags[i].Get)(0);
else if (i == 12) else if (i == 12)
result = s.getNewURI().empty() ? s.getName() : s.getName() + " -> " + s.getNewURI(); result = s.getNewName().empty() ? s.getName() : s.getName() + " -> " + s.getNewName();
return result.empty() ? Config.empty_tag : result; return result.empty() ? Config.empty_tag : result;
} }

View File

@@ -299,12 +299,12 @@ bool write(MPD::MutableSong &s)
if (!f.save()) if (!f.save())
return false; return false;
if (!s.getNewURI().empty()) if (!s.getNewName().empty())
{ {
std::string new_name; std::string new_name;
if (s.isFromDatabase()) if (s.isFromDatabase())
new_name += Config.mpd_music_dir; new_name += Config.mpd_music_dir;
new_name += s.getDirectory() + "/" + s.getNewURI(); new_name += s.getDirectory() + "/" + s.getNewName();
if (std::rename(old_name.c_str(), new_name.c_str()) == 0 && !s.isFromDatabase()) if (std::rename(old_name.c_str(), new_name.c_str()) == 0 && !s.isFromDatabase())
{ {
// FIXME // FIXME

View File

@@ -115,14 +115,14 @@ void TinyTagEditor::enterPressed()
else if (option == 20) else if (option == 20)
{ {
Statusbar::put() << NC::Format::Bold << "Filename: " << NC::Format::NoBold; Statusbar::put() << NC::Format::Bold << "Filename: " << NC::Format::NoBold;
std::string filename = itsEdited.getNewURI().empty() ? itsEdited.getName() : itsEdited.getNewURI(); std::string filename = itsEdited.getNewName().empty() ? itsEdited.getName() : itsEdited.getNewName();
size_t dot = filename.rfind("."); size_t dot = filename.rfind(".");
std::string extension = filename.substr(dot); std::string extension = filename.substr(dot);
filename = filename.substr(0, dot); filename = filename.substr(0, dot);
std::string new_name = Global::wFooter->getString(filename); std::string new_name = Global::wFooter->getString(filename);
itsEdited.setNewURI(new_name + extension); itsEdited.setNewName(new_name + extension);
w.at(option).value().clear(); w.at(option).value().clear();
w.at(option).value() << NC::Format::Bold << "Filename:" << NC::Format::NoBold << ' ' << (itsEdited.getNewURI().empty() ? itsEdited.getName() : itsEdited.getNewURI()); w.at(option).value() << NC::Format::Bold << "Filename:" << NC::Format::NoBold << ' ' << (itsEdited.getNewName().empty() ? itsEdited.getName() : itsEdited.getNewName());
} }
Statusbar::unlock(); Statusbar::unlock();