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 // Create and populate the helper menus
QMenu *menu = new QMenu(this); QMenu *menu = new QMenu(this);
menu->addAction(ui_->action_title); menu->addAction(ui_->action_title);
menu->addAction(ui_->action_titlesort);
menu->addAction(ui_->action_album); menu->addAction(ui_->action_album);
menu->addAction(ui_->action_albumsort);
menu->addAction(ui_->action_artist); menu->addAction(ui_->action_artist);
menu->addAction(ui_->action_artistsort);
menu->addAction(ui_->action_albumartist); menu->addAction(ui_->action_albumartist);
menu->addAction(ui_->action_albumartistsort);
menu->addAction(ui_->action_track); menu->addAction(ui_->action_track);
menu->addAction(ui_->action_disc); menu->addAction(ui_->action_disc);
menu->addAction(ui_->action_year); menu->addAction(ui_->action_year);
menu->addAction(ui_->action_originalyear); menu->addAction(ui_->action_originalyear);
menu->addAction(ui_->action_composer); menu->addAction(ui_->action_composer);
menu->addAction(ui_->action_composersort);
menu->addAction(ui_->action_performer); menu->addAction(ui_->action_performer);
menu->addAction(ui_->action_performersort);
menu->addAction(ui_->action_grouping); menu->addAction(ui_->action_grouping);
menu->addAction(ui_->action_filename); menu->addAction(ui_->action_filename);
menu->addAction(ui_->action_url); menu->addAction(ui_->action_url);

View File

@@ -486,6 +486,54 @@
<string>Add song original year tag</string> <string>Add song original year tag</string>
</property> </property>
</action> </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> </widget>
<resources/> <resources/>
<connections/> <connections/>

View File

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

View File

@@ -186,16 +186,22 @@ TEST(UtilitiesTest, ReplaceVariable) {
Song song; Song song;
song.set_title(Utilities::GetRandomStringWithChars(8)); song.set_title(Utilities::GetRandomStringWithChars(8));
song.set_titlesort(Utilities::GetRandomStringWithChars(8));
song.set_album(Utilities::GetRandomStringWithChars(8)); song.set_album(Utilities::GetRandomStringWithChars(8));
song.set_albumsort(Utilities::GetRandomStringWithChars(8));
song.set_artist(Utilities::GetRandomStringWithChars(8)); song.set_artist(Utilities::GetRandomStringWithChars(8));
song.set_artistsort(Utilities::GetRandomStringWithChars(8));
song.set_albumartist(Utilities::GetRandomStringWithChars(8)); song.set_albumartist(Utilities::GetRandomStringWithChars(8));
song.set_albumartistsort(Utilities::GetRandomStringWithChars(8));
song.set_track(5); song.set_track(5);
song.set_disc(2); song.set_disc(2);
song.set_year(1999); song.set_year(1999);
song.set_originalyear(2000); song.set_originalyear(2000);
song.set_genre(Utilities::GetRandomStringWithChars(8)); song.set_genre(Utilities::GetRandomStringWithChars(8));
song.set_composer(Utilities::GetRandomStringWithChars(8)); song.set_composer(Utilities::GetRandomStringWithChars(8));
song.set_composersort(Utilities::GetRandomStringWithChars(8));
song.set_performer(Utilities::GetRandomStringWithChars(8)); song.set_performer(Utilities::GetRandomStringWithChars(8));
song.set_performersort(Utilities::GetRandomStringWithChars(8));
song.set_grouping(Utilities::GetRandomStringWithChars(8)); song.set_grouping(Utilities::GetRandomStringWithChars(8));
song.set_length_nanosec(900000000000); song.set_length_nanosec(900000000000);
song.set_url(QUrl(u"file:///home/jonas/Music/test_song.flac"_s)); 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); song.set_rating(1.0);
ASSERT_EQ(Utilities::ReplaceVariable(u"%title%"_s, song, ""_L1), song.title()); 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"%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"%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"%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"%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"%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"%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"%originalyear%"_s, song, ""_L1), QString::number(song.originalyear()));
ASSERT_EQ(Utilities::ReplaceVariable(u"%genre%"_s, song, ""_L1), song.genre()); 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"%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"%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"%grouping%"_s, song, ""_L1), song.grouping());
ASSERT_EQ(Utilities::ReplaceVariable(u"%length%"_s, song, ""_L1), song.PrettyLength()); ASSERT_EQ(Utilities::ReplaceVariable(u"%length%"_s, song, ""_L1), song.PrettyLength());
ASSERT_EQ(Utilities::ReplaceVariable(u"%filename%"_s, song, ""_L1), song.basefilename()); 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_title(Utilities::GetRandomStringWithChars(8));
song.set_album(Utilities::GetRandomStringWithChars(8)); song.set_album(Utilities::GetRandomStringWithChars(8));
song.set_artist(Utilities::GetRandomStringWithChars(8)); song.set_artist(Utilities::GetRandomStringWithChars(8));
song.set_artistsort(Utilities::GetRandomStringWithChars(8));
song.set_albumartist(Utilities::GetRandomStringWithChars(8)); song.set_albumartist(Utilities::GetRandomStringWithChars(8));
song.set_albumartistsort(Utilities::GetRandomStringWithChars(8));
song.set_track(5); song.set_track(5);
song.set_disc(2); song.set_disc(2);
song.set_year(1999); song.set_year(1999);
@@ -246,6 +260,7 @@ TEST(UtilitiesTest, ReplaceMessage) {
song.set_rating(1.0); 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"%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());
} }