Add sort tags to context view

This commit is contained in:
Mark
2025-07-28 12:26:49 +02:00
committed by Jonas Kvinge
parent 27e782d8cf
commit e45b9aabeb
4 changed files with 87 additions and 0 deletions

View File

@@ -64,15 +64,21 @@ ContextSettingsPage::ContextSettingsPage(SettingsDialog *dialog, QWidget *parent
// Create and populate the helper menus
QMenu *menu = new QMenu(this);
menu->addAction(ui_->action_title);
menu->addAction(ui_->action_titlesort);
menu->addAction(ui_->action_album);
menu->addAction(ui_->action_albumsort);
menu->addAction(ui_->action_artist);
menu->addAction(ui_->action_artistsort);
menu->addAction(ui_->action_albumartist);
menu->addAction(ui_->action_albumartistsort);
menu->addAction(ui_->action_track);
menu->addAction(ui_->action_disc);
menu->addAction(ui_->action_year);
menu->addAction(ui_->action_originalyear);
menu->addAction(ui_->action_composer);
menu->addAction(ui_->action_composersort);
menu->addAction(ui_->action_performer);
menu->addAction(ui_->action_performersort);
menu->addAction(ui_->action_grouping);
menu->addAction(ui_->action_filename);
menu->addAction(ui_->action_url);

View File

@@ -486,6 +486,54 @@
<string>Add song original year tag</string>
</property>
</action>
<action name="action_artistsort">
<property name="text">
<string>%artistsort%</string>
</property>
<property name="toolTip">
<string>Add song artistsort tag</string>
</property>
</action>
<action name="action_albumartistsort">
<property name="text">
<string>%albumartistsort%</string>
</property>
<property name="toolTip">
<string>Add song albumartistsort tag</string>
</property>
</action>
<action name="action_titlesort">
<property name="text">
<string>%titlesort%</string>
</property>
<property name="toolTip">
<string>Add song titlesort tag</string>
</property>
</action>
<action name="action_composersort">
<property name="text">
<string>%composersort%</string>
</property>
<property name="toolTip">
<string>Add song composersort tag</string>
</property>
</action>
<action name="action_performersort">
<property name="text">
<string>%performersort%</string>
</property>
<property name="toolTip">
<string>Add song performersort tag</string>
</property>
</action>
<action name="action_albumsort">
<property name="text">
<string>%albumsort%</string>
</property>
<property name="toolTip">
<string>Add song albumsort tag</string>
</property>
</action>
</widget>
<resources/>
<connections/>

View File

@@ -142,15 +142,27 @@ QString ReplaceVariable(const QString &variable, const Song &song, const QString
if (variable == "%title%"_L1) {
value = song.PrettyTitle();
}
else if (variable == "%titlesort%"_L1) {
value = song.titlesort();
}
else if (variable == "%album%"_L1) {
value = song.album();
}
else if (variable == "%albumsort%"_L1) {
value = song.albumsort();
}
else if (variable == "%artist%"_L1) {
value = song.artist();
}
else if (variable == "%artistsort%"_L1) {
value = song.artistsort();
}
else if (variable == "%albumartist%"_L1) {
value = song.effective_albumartist();
}
else if (variable == "%albumartistsort%"_L1) {
value = song.albumartistsort();
}
else if (variable == "%track%"_L1) {
value.setNum(song.track());
}
@@ -169,9 +181,15 @@ QString ReplaceVariable(const QString &variable, const Song &song, const QString
else if (variable == "%composer%"_L1) {
value = song.composer();
}
else if (variable == "%composersort%"_L1) {
value = song.composersort();
}
else if (variable == "%performer%"_L1) {
value = song.performer();
}
else if (variable == "%performersort%"_L1) {
value = song.performersort();
}
else if (variable == "%grouping%"_L1) {
value = song.grouping();
}

View File

@@ -186,16 +186,22 @@ TEST(UtilitiesTest, ReplaceVariable) {
Song song;
song.set_title(Utilities::GetRandomStringWithChars(8));
song.set_titlesort(Utilities::GetRandomStringWithChars(8));
song.set_album(Utilities::GetRandomStringWithChars(8));
song.set_albumsort(Utilities::GetRandomStringWithChars(8));
song.set_artist(Utilities::GetRandomStringWithChars(8));
song.set_artistsort(Utilities::GetRandomStringWithChars(8));
song.set_albumartist(Utilities::GetRandomStringWithChars(8));
song.set_albumartistsort(Utilities::GetRandomStringWithChars(8));
song.set_track(5);
song.set_disc(2);
song.set_year(1999);
song.set_originalyear(2000);
song.set_genre(Utilities::GetRandomStringWithChars(8));
song.set_composer(Utilities::GetRandomStringWithChars(8));
song.set_composersort(Utilities::GetRandomStringWithChars(8));
song.set_performer(Utilities::GetRandomStringWithChars(8));
song.set_performersort(Utilities::GetRandomStringWithChars(8));
song.set_grouping(Utilities::GetRandomStringWithChars(8));
song.set_length_nanosec(900000000000);
song.set_url(QUrl(u"file:///home/jonas/Music/test_song.flac"_s));
@@ -204,16 +210,22 @@ TEST(UtilitiesTest, ReplaceVariable) {
song.set_rating(1.0);
ASSERT_EQ(Utilities::ReplaceVariable(u"%title%"_s, song, ""_L1), song.title());
ASSERT_EQ(Utilities::ReplaceVariable(u"%titlesort%"_s, song, ""_L1), song.titlesort());
ASSERT_EQ(Utilities::ReplaceVariable(u"%album%"_s, song, ""_L1), song.album());
ASSERT_EQ(Utilities::ReplaceVariable(u"%albumsort%"_s, song, ""_L1), song.albumsort());
ASSERT_EQ(Utilities::ReplaceVariable(u"%artist%"_s, song, ""_L1), song.artist());
ASSERT_EQ(Utilities::ReplaceVariable(u"%artistsort%"_s, song, ""_L1), song.artistsort());
ASSERT_EQ(Utilities::ReplaceVariable(u"%albumartist%"_s, song, ""_L1), song.effective_albumartist());
ASSERT_EQ(Utilities::ReplaceVariable(u"%albumartistsort%"_s, song, ""_L1), song.albumartistsort());
ASSERT_EQ(Utilities::ReplaceVariable(u"%track%"_s, song, ""_L1), QString::number(song.track()));
ASSERT_EQ(Utilities::ReplaceVariable(u"%disc%"_s, song, ""_L1), QString::number(song.disc()));
ASSERT_EQ(Utilities::ReplaceVariable(u"%year%"_s, song, ""_L1), QString::number(song.year()));
ASSERT_EQ(Utilities::ReplaceVariable(u"%originalyear%"_s, song, ""_L1), QString::number(song.originalyear()));
ASSERT_EQ(Utilities::ReplaceVariable(u"%genre%"_s, song, ""_L1), song.genre());
ASSERT_EQ(Utilities::ReplaceVariable(u"%composer%"_s, song, ""_L1), song.composer());
ASSERT_EQ(Utilities::ReplaceVariable(u"%composersort%"_s, song, ""_L1), song.composersort());
ASSERT_EQ(Utilities::ReplaceVariable(u"%performer%"_s, song, ""_L1), song.performer());
ASSERT_EQ(Utilities::ReplaceVariable(u"%performersort%"_s, song, ""_L1), song.performersort());
ASSERT_EQ(Utilities::ReplaceVariable(u"%grouping%"_s, song, ""_L1), song.grouping());
ASSERT_EQ(Utilities::ReplaceVariable(u"%length%"_s, song, ""_L1), song.PrettyLength());
ASSERT_EQ(Utilities::ReplaceVariable(u"%filename%"_s, song, ""_L1), song.basefilename());
@@ -230,7 +242,9 @@ TEST(UtilitiesTest, ReplaceMessage) {
song.set_title(Utilities::GetRandomStringWithChars(8));
song.set_album(Utilities::GetRandomStringWithChars(8));
song.set_artist(Utilities::GetRandomStringWithChars(8));
song.set_artistsort(Utilities::GetRandomStringWithChars(8));
song.set_albumartist(Utilities::GetRandomStringWithChars(8));
song.set_albumartistsort(Utilities::GetRandomStringWithChars(8));
song.set_track(5);
song.set_disc(2);
song.set_year(1999);
@@ -246,6 +260,7 @@ TEST(UtilitiesTest, ReplaceMessage) {
song.set_rating(1.0);
ASSERT_EQ(Utilities::ReplaceMessage(u"%title% - %artist%"_s, song, ""_L1), song.title() + u" - "_s + song.artist());
ASSERT_EQ(Utilities::ReplaceMessage(u"%artistsort% - %albumartistsort%"_s, song, ""_L1), song.artistsort() + u" - "_s + song.albumartistsort());
}