shorten long names in messages displayed in statusbar
This commit is contained in:
@@ -480,9 +480,15 @@ void Browser::ClearDirectory(const std::string &path) const
|
||||
if (S_ISDIR(file_stat.st_mode))
|
||||
ClearDirectory(full_path);
|
||||
if (remove(full_path.c_str()) == 0)
|
||||
ShowMessage("Deleting \"%s\"...", full_path.c_str());
|
||||
{
|
||||
static const char msg[] = "Deleting \"%s\"...";
|
||||
ShowMessage(msg, Shorten(TO_WSTRING(full_path), COLS-static_strlen(msg)).c_str());
|
||||
}
|
||||
else
|
||||
ShowMessage("Couldn't remove \"%s\": %s", full_path.c_str(), strerror(errno));
|
||||
{
|
||||
static const char msg[] = "Couldn't remove \"%s\": %s";
|
||||
ShowMessage(msg, Shorten(TO_WSTRING(full_path), COLS-static_strlen(msg)-25).c_str(), strerror(errno));
|
||||
}
|
||||
}
|
||||
closedir(dir);
|
||||
}
|
||||
|
||||
12
src/conv.cpp
12
src/conv.cpp
@@ -174,6 +174,18 @@ MPD::Song::SetFunction IntoSetFunction(mpd_tag_type tag)
|
||||
}
|
||||
#endif // HAVE_TAGLIB_H
|
||||
|
||||
std::string Shorten(const std::basic_string<my_char_t> &s, size_t max_length)
|
||||
{
|
||||
if (s.length() <= max_length)
|
||||
return TO_STRING(s);
|
||||
if (max_length < 2)
|
||||
return "";
|
||||
std::basic_string<my_char_t> result(s, 0, max_length/2-1);
|
||||
result += U("..");
|
||||
result += s.substr(s.length()-max_length/2+1);
|
||||
return TO_STRING(result);
|
||||
}
|
||||
|
||||
void EscapeUnallowedChars(std::string &s)
|
||||
{
|
||||
static const std::string unallowed_chars = "\"*/:<>?\\|";
|
||||
|
||||
@@ -56,6 +56,8 @@ mpd_tag_type IntoTagItem(char);
|
||||
MPD::Song::SetFunction IntoSetFunction(mpd_tag_type);
|
||||
#endif // HAVE_TAGLIB_H
|
||||
|
||||
std::string Shorten(const std::basic_string<my_char_t> &s, size_t max_length);
|
||||
|
||||
void EscapeUnallowedChars(std::string &);
|
||||
|
||||
void EscapeHtml(std::string &s);
|
||||
|
||||
@@ -317,11 +317,11 @@ void Connection::Move(const std::string &path, int from, int to) const
|
||||
mpd_response_finish(itsConnection);
|
||||
}
|
||||
|
||||
void Connection::Rename(const std::string &from, const std::string &to) const
|
||||
bool Connection::Rename(const std::string &from, const std::string &to) const
|
||||
{
|
||||
if (!itsConnection)
|
||||
return;
|
||||
(isCommandsListEnabled ? mpd_send_rename : mpd_run_rename)(itsConnection, from.c_str(), to.c_str());
|
||||
return false;
|
||||
return (isCommandsListEnabled ? mpd_send_rename : mpd_run_rename)(itsConnection, from.c_str(), to.c_str());
|
||||
}
|
||||
|
||||
void Connection::GetPlaylistChanges(unsigned version, SongList &v) const
|
||||
@@ -527,11 +527,11 @@ bool Connection::CommitCommandsList()
|
||||
return !CheckForErrors();
|
||||
}
|
||||
|
||||
void Connection::DeletePlaylist(const std::string &name) const
|
||||
bool Connection::DeletePlaylist(const std::string &name) const
|
||||
{
|
||||
if (!itsConnection)
|
||||
return;
|
||||
(isCommandsListEnabled ? mpd_send_rm : mpd_run_rm)(itsConnection, name.c_str());
|
||||
return false;
|
||||
return (isCommandsListEnabled ? mpd_send_rm : mpd_run_rm)(itsConnection, name.c_str());
|
||||
}
|
||||
|
||||
bool Connection::SavePlaylist(const std::string &name) const
|
||||
|
||||
@@ -162,13 +162,13 @@ namespace MPD
|
||||
void StartCommandsList();
|
||||
bool CommitCommandsList();
|
||||
|
||||
void DeletePlaylist(const std::string &) const;
|
||||
bool DeletePlaylist(const std::string &) const;
|
||||
bool SavePlaylist(const std::string &) const;
|
||||
void ClearPlaylist(const std::string &) const;
|
||||
void AddToPlaylist(const std::string &, const Song &) const;
|
||||
void AddToPlaylist(const std::string &, const std::string &) const;
|
||||
void Move(const std::string &, int, int) const;
|
||||
void Rename(const std::string &, const std::string &) const;
|
||||
bool Rename(const std::string &, const std::string &) const;
|
||||
|
||||
void StartSearch(bool) const;
|
||||
void StartFieldSearch(mpd_tag_type);
|
||||
|
||||
@@ -595,7 +595,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
std::string name = myScreen == myBrowser ? myBrowser->Main()->Current().name : myPlaylistEditor->Playlists->Current();
|
||||
LockStatusbar();
|
||||
Statusbar() << "Delete playlist \"" << name << "\" ? [" << fmtBold << 'y' << fmtBoldEnd << '/' << fmtBold << 'n' << fmtBoldEnd << "] ";
|
||||
Statusbar() << "Delete playlist \"" << Shorten(TO_WSTRING(name), COLS-28) << "\" ? [" << fmtBold << 'y' << fmtBoldEnd << '/' << fmtBold << 'n' << fmtBoldEnd << "]";
|
||||
wFooter->Refresh();
|
||||
input = 0;
|
||||
do
|
||||
@@ -607,10 +607,13 @@ int main(int argc, char *argv[])
|
||||
UnlockStatusbar();
|
||||
if (input == 'y')
|
||||
{
|
||||
Mpd.DeletePlaylist(locale_to_utf_cpy(name));
|
||||
ShowMessage("Playlist \"%s\" deleted!", name.c_str());
|
||||
if (myBrowser->Main() && !myBrowser->isLocal() && myBrowser->CurrentDir() == "/")
|
||||
myBrowser->GetDirectory("/");
|
||||
if (Mpd.DeletePlaylist(locale_to_utf_cpy(name)))
|
||||
{
|
||||
static const char msg[] = "Playlist \"%s\" deleted!";
|
||||
ShowMessage(msg, Shorten(TO_WSTRING(name), COLS-static_strlen(msg)).c_str());
|
||||
if (myBrowser->Main() && !myBrowser->isLocal() && myBrowser->CurrentDir() == "/")
|
||||
myBrowser->GetDirectory("/");
|
||||
}
|
||||
}
|
||||
else
|
||||
ShowMessage("Aborted!");
|
||||
@@ -640,7 +643,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
std::string name = item.type == itSong ? item.song->GetName() : item.name;
|
||||
LockStatusbar();
|
||||
Statusbar() << "Delete " << (item.type == itSong ? "file" : "directory") << " \"" << name << "\" ? [" << fmtBold << 'y' << fmtBoldEnd << '/' << fmtBold << 'n' << fmtBoldEnd << "] ";
|
||||
Statusbar() << "Delete " << (item.type == itSong ? "file" : "directory") << " \"" << Shorten(TO_WSTRING(name), COLS-30) << "\" ? [" << fmtBold << 'y' << fmtBoldEnd << '/' << fmtBold << 'n' << fmtBoldEnd << "] ";
|
||||
wFooter->Refresh();
|
||||
input = 0;
|
||||
do
|
||||
@@ -662,14 +665,18 @@ int main(int argc, char *argv[])
|
||||
|
||||
if (remove(path.c_str()) == 0)
|
||||
{
|
||||
ShowMessage("\"%s\" has been successfuly deleted!", name.c_str());
|
||||
static const char msg[] = "\"%s\" deleted!";
|
||||
ShowMessage(msg, Shorten(TO_WSTRING(name), COLS-static_strlen(msg)).c_str());
|
||||
if (!myBrowser->isLocal())
|
||||
Mpd.UpdateDirectory(myBrowser->CurrentDir());
|
||||
else
|
||||
myBrowser->GetDirectory(myBrowser->CurrentDir());
|
||||
}
|
||||
else
|
||||
ShowMessage("Couldn't remove \"%s\": %s", name.c_str(), strerror(errno));
|
||||
{
|
||||
static const char msg[] = "Couldn't remove \"%s\": %s";
|
||||
ShowMessage(msg, Shorten(TO_WSTRING(name), COLS-static_strlen(msg)-25).c_str(), strerror(errno));
|
||||
}
|
||||
}
|
||||
else
|
||||
ShowMessage("Aborted!");
|
||||
@@ -1375,7 +1382,8 @@ int main(int argc, char *argv[])
|
||||
std::string path = Config.mpd_music_dir + (*it)->GetFile();
|
||||
if (!TagEditor::WriteTags(**it))
|
||||
{
|
||||
ShowMessage("Error updating tags in \"%s\"!", (*it)->GetFile().c_str());
|
||||
static const char msg[] = "Error while updating tags in \"%s\"!";
|
||||
ShowMessage(msg, Shorten(TO_WSTRING((*it)->GetFile()), COLS-static_strlen(msg)).c_str());
|
||||
success = 0;
|
||||
break;
|
||||
}
|
||||
@@ -1406,14 +1414,16 @@ int main(int argc, char *argv[])
|
||||
TagLib::FileRef f(locale_to_utf_cpy(path).c_str());
|
||||
if (f.isNull())
|
||||
{
|
||||
ShowMessage("Error opening file \"%s\"!", (*myLibrary->Songs)[i].GetFile().c_str());
|
||||
static const char msg[] = "Error while opening file \"%s\"!";
|
||||
ShowMessage(msg, Shorten(TO_WSTRING((*myLibrary->Songs)[i].GetFile()), COLS-static_strlen(msg)).c_str());
|
||||
success = 0;
|
||||
break;
|
||||
}
|
||||
f.tag()->setAlbum(ToWString(new_album));
|
||||
if (!f.save())
|
||||
{
|
||||
ShowMessage("Error writing tags in \"%s\"!", (*myLibrary->Songs)[i].GetFile().c_str());
|
||||
static const char msg[] = "Error while writing tags in \"%s\"!";
|
||||
ShowMessage(msg, Shorten(TO_WSTRING((*myLibrary->Songs)[i].GetFile()), COLS-static_strlen(msg)).c_str());
|
||||
success = 0;
|
||||
break;
|
||||
}
|
||||
@@ -1438,11 +1448,14 @@ int main(int argc, char *argv[])
|
||||
std::string full_new_dir = Config.mpd_music_dir + myTagEditor->CurrentDir() + "/" + locale_to_utf_cpy(new_dir);
|
||||
if (rename(full_old_dir.c_str(), full_new_dir.c_str()) == 0)
|
||||
{
|
||||
static const char msg[] = "Directory renamed to \"%s\"";
|
||||
ShowMessage(msg, Shorten(TO_WSTRING(new_dir), COLS-static_strlen(msg)).c_str());
|
||||
Mpd.UpdateDirectory(myTagEditor->CurrentDir());
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowMessage("Cannot rename \"%s\" to \"%s\"!", old_dir.c_str(), new_dir.c_str());
|
||||
static const char msg[] = "Couldn't rename \"%s\": %s";
|
||||
ShowMessage(msg, Shorten(TO_WSTRING(old_dir), COLS-static_strlen(msg)-25).c_str(), strerror(errno));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1472,13 +1485,17 @@ int main(int argc, char *argv[])
|
||||
int rename_result = rename(full_old_dir.c_str(), full_new_dir.c_str());
|
||||
if (rename_result == 0)
|
||||
{
|
||||
ShowMessage("\"%s\" renamed to \"%s\"", old_dir.c_str(), new_dir.c_str());
|
||||
static const char msg[] = "Directory renamed to \"%s\"";
|
||||
ShowMessage(msg, Shorten(TO_WSTRING(new_dir), COLS-static_strlen(msg)).c_str());
|
||||
if (!myBrowser->isLocal())
|
||||
Mpd.UpdateDirectory(locale_to_utf_cpy(FindSharedDir(old_dir, new_dir)));
|
||||
myBrowser->GetDirectory(myBrowser->CurrentDir());
|
||||
}
|
||||
else
|
||||
ShowMessage("Cannot rename \"%s\" to \"%s\"!", old_dir.c_str(), new_dir.c_str());
|
||||
{
|
||||
static const char msg[] = "Couldn't rename \"%s\": %s";
|
||||
ShowMessage(msg, Shorten(TO_WSTRING(old_dir), COLS-static_strlen(msg)-25).c_str(), strerror(errno));
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (myScreen->ActiveWindow() == myPlaylistEditor->Playlists || (myScreen == myBrowser && myBrowser->Main()->Current().type == itPlaylist))
|
||||
@@ -1490,12 +1507,15 @@ int main(int argc, char *argv[])
|
||||
UnlockStatusbar();
|
||||
if (!new_name.empty() && new_name != old_name)
|
||||
{
|
||||
Mpd.Rename(locale_to_utf_cpy(old_name), locale_to_utf_cpy(new_name));
|
||||
ShowMessage("Playlist \"%s\" renamed to \"%s\"", old_name.c_str(), new_name.c_str());
|
||||
if (myBrowser->Main() && !myBrowser->isLocal())
|
||||
myBrowser->GetDirectory("/");
|
||||
if (myPlaylistEditor->Main())
|
||||
myPlaylistEditor->Playlists->Clear(0);
|
||||
if (Mpd.Rename(locale_to_utf_cpy(old_name), locale_to_utf_cpy(new_name)))
|
||||
{
|
||||
static const char msg[] = "Playlist renamed to \"%s\"";
|
||||
ShowMessage(msg, Shorten(TO_WSTRING(new_name), COLS-static_strlen(msg)).c_str());
|
||||
if (myBrowser->Main() && !myBrowser->isLocal())
|
||||
myBrowser->GetDirectory("/");
|
||||
if (myPlaylistEditor->Main())
|
||||
myPlaylistEditor->Playlists->Clear(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -621,7 +621,8 @@ void TagEditor::EnterPressed()
|
||||
ShowMessage("Writing tags in \"%s\"...", (*it)->GetName().c_str());
|
||||
if (!WriteTags(**it))
|
||||
{
|
||||
ShowMessage("Error writing tags in \"%s\"!", (*it)->GetFile().c_str());
|
||||
static const char msg[] = "Error while writing tags in \"%s\"!";
|
||||
ShowMessage(msg, Shorten(TO_WSTRING((*it)->GetFile()), COLS-static_strlen(msg)).c_str());
|
||||
success = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ void TinyTagEditor::SwitchTo()
|
||||
{
|
||||
if (itsEdited.isStream())
|
||||
{
|
||||
ShowMessage("Cannot edit streams!");
|
||||
ShowMessage("Streams cannot be edited!");
|
||||
}
|
||||
else if (GetTags())
|
||||
{
|
||||
@@ -77,11 +77,11 @@ void TinyTagEditor::SwitchTo()
|
||||
}
|
||||
else
|
||||
{
|
||||
std::string message = "Cannot read file '";
|
||||
std::string message = "Couldn't read file \"";
|
||||
if (itsEdited.isFromDB())
|
||||
message += Config.mpd_music_dir;
|
||||
message += itsEdited.GetFile();
|
||||
message += "'!";
|
||||
message += Shorten(TO_WSTRING(itsEdited.GetFile()), COLS-message.length()-3);
|
||||
message += "\"!";
|
||||
ShowMessage("%s", message.c_str());
|
||||
}
|
||||
}
|
||||
@@ -142,7 +142,7 @@ void TinyTagEditor::EnterPressed()
|
||||
}
|
||||
}
|
||||
else
|
||||
ShowMessage("Error writing tags!");
|
||||
ShowMessage("Error while writing tags!");
|
||||
}
|
||||
if (option > 20)
|
||||
myOldScreen->SwitchTo();
|
||||
|
||||
Reference in New Issue
Block a user