Skip to content

Commit

Permalink
#171 - create mask counter number
Browse files Browse the repository at this point in the history
  • Loading branch information
jwallet committed May 6, 2020
1 parent 2786411 commit 98932b1
Show file tree
Hide file tree
Showing 20 changed files with 267 additions and 62 deletions.
28 changes: 24 additions & 4 deletions EspionSpotify.Tests/UserSettingTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ internal void DefaultUserSettings_ReturnsDefault()
Assert.Equal(1, userSettings.InternalOrderNumber);
Assert.False(userSettings.HasRecordingTimerEnabled);
Assert.Equal(0.0, userSettings.RecordingTimerMilliseconds);
Assert.Null(userSettings.OrderNumber);
Assert.Null(userSettings.OrderNumberAsFile);
Assert.Null(userSettings.OrderNumberAsTag);
Assert.False(userSettings.IsSpotifyAPISet);
}

Expand All @@ -39,10 +40,29 @@ internal void RecordingTimer_ReturnsRecordingTimerMilliseconds()
}

[Fact]
internal void InternalOrderNumber_ReturnsOrderNumberValue()
internal void OrderNumberMask_ReturnsMaskAsMax()
{
Assert.Equal(1, new UserSettings { OrderNumberInfrontOfFileEnabled = true }.OrderNumber);
Assert.Equal(1, new UserSettings { OrderNumberInMediaTagEnabled = true }.OrderNumber);
Assert.Equal(99999, new UserSettings { OrderNumberMask = "00000" }.OrderNumberMax);
}

[Fact]
internal void HasOrderNumberEnabled_ReturnsAsExpected()
{
Assert.True(new UserSettings { OrderNumberInfrontOfFileEnabled = true }.HasOrderNumberEnabled);
Assert.True(new UserSettings { OrderNumberInMediaTagEnabled = true }.HasOrderNumberEnabled);
Assert.False(new UserSettings().HasOrderNumberEnabled);
}

[Fact]
internal void InternalOrderNumber_ReturnsOrderNumberAsFile()
{
Assert.Equal(1, new UserSettings { OrderNumberInfrontOfFileEnabled = true }.OrderNumberAsFile);
}

[Fact]
internal void InternalOrderNumber_ReturnsOrderNumberAsTag()
{
Assert.Equal(1, new UserSettings { OrderNumberInMediaTagEnabled = true }.OrderNumberAsTag);
}

[Fact]
Expand Down
16 changes: 16 additions & 0 deletions EspionSpotify.Tests/WatcherTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -229,5 +229,21 @@ internal void IsNewTrack_ReturnsExpectedResults()
Assert.False(watcher.IsNewTrack(new Track { Artist = "Spotify Free" }));
Assert.True(watcher.IsNewTrack(new Track { Artist = "Artist", Title = "Title" }));
}

[Theory]
[InlineData(true, 10000, true)]
[InlineData(true, 9999, true)]
[InlineData(false, 9999, false)]
[InlineData(true, 9998, false)]
internal void IsMaxOrderNumberAsFileExceeded_ReturnsExpectedResults(bool enabled, int orderNumber, bool expected)
{
_userSettings.OrderNumberInfrontOfFileEnabled = enabled;
_userSettings.OrderNumberInMediaTagEnabled = true;
_userSettings.OrderNumberMask = "0000";
_userSettings.InternalOrderNumber = orderNumber;
var watcher = new Watcher(_formMock, _userSettings, new Track(), _fileSystem);

Assert.Equal(expected, watcher.IsMaxOrderNumberAsFileExceeded);
}
}
}
3 changes: 3 additions & 0 deletions EspionSpotify/App.config
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,9 @@
<value>
</value>
</setting>
<setting name="OrderNumberMask" serializeAs="String">
<value>000</value>
</setting>
</EspionSpotify.Properties.Settings>
</userSettings>
</configuration>
2 changes: 2 additions & 0 deletions EspionSpotify/Enums/TranslationKeys.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public enum TranslationKeys
logAd,
logDeleting,
logInvalidOutput,
logMaxFileSequenceReached,
logMissingDlls,
logNoAccessOutput,
logPreviousLogs,
Expand Down Expand Up @@ -65,6 +66,7 @@ public enum TranslationKeys
tipDonate,
tipFAQ,
tipInstallVirtualCableDriver,
tipNumModifierHold,
tipPath,
tipRelease,
tipUninstallVirtualCableDriver,
Expand Down
2 changes: 1 addition & 1 deletion EspionSpotify/FileManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ private static string GenerateFileName(Track track, UserSettings userSettings)
fileName = Regex.Replace(fileName, _windowsExlcudedChars, string.Empty);
}

var trackNumber = userSettings.OrderNumber?.ToString("000 ") ?? null;
var trackNumber = userSettings.OrderNumberInfrontOfFileEnabled ? (userSettings.OrderNumberAsFile ?? 0).ToString($"{userSettings.OrderNumberMask} ") : null;
return Regex.Replace($"{trackNumber}{fileName}", @"\s", userSettings.TrackTitleSeparator); ;
}

Expand Down
22 changes: 20 additions & 2 deletions EspionSpotify/Models/UserSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,14 @@ public class UserSettings
public string RecordingTimer { get; set; }
public string SpotifyAPIClientId { get; set; }
public string SpotifyAPISecretId { get; set; }
public string OrderNumberMask { get; set; } = "000";
public int OrderNumberMax
{
get
{
return Convert.ToInt32(OrderNumberMask.Replace('0', '9').ToString());
}
}

public IMainAudioSession AudioSession { get => _audioSession; }

Expand All @@ -48,9 +56,19 @@ public double RecordingTimerMilliseconds
: 0.0;
}

public int? OrderNumber
public bool HasOrderNumberEnabled
{
get => OrderNumberInfrontOfFileEnabled || OrderNumberInMediaTagEnabled;
}

public int? OrderNumberAsTag
{
get => OrderNumberInMediaTagEnabled ? (int?)InternalOrderNumber : null;
}

public int? OrderNumberAsFile
{
get => OrderNumberInfrontOfFileEnabled || OrderNumberInMediaTagEnabled ? (int?)InternalOrderNumber : null;
get => OrderNumberInfrontOfFileEnabled ? (int?)Math.Min(InternalOrderNumber, OrderNumberMax) : null;
}

public bool IsSpotifyAPISet
Expand Down
12 changes: 12 additions & 0 deletions EspionSpotify/Properties/Settings.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions EspionSpotify/Properties/Settings.settings
Original file line number Diff line number Diff line change
Expand Up @@ -70,5 +70,8 @@
<Value Profile="(Default)">
</Value>
</Setting>
<Setting Name="OrderNumberMask" Type="System.String" Scope="User">
<Value Profile="(Default)">000</Value>
</Setting>
</Settings>
</SettingsFile>
2 changes: 1 addition & 1 deletion EspionSpotify/Recorder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ private async Task UpdateOutputFileBasedOnMediaFormat()
{
Track = _track,
OrderNumberInMediaTagEnabled = _userSettings.OrderNumberInMediaTagEnabled,
Count = _userSettings.OrderNumber,
Count = _userSettings.OrderNumberAsTag,
CurrentFile = _currentOutputFile.ToString()
};
await mp3TagsInfo.SaveMediaTags();
Expand Down
2 changes: 2 additions & 0 deletions EspionSpotify/Translations/I18nKeys.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ public static class I18nKeys
public static TranslationKeys LogAd { get => TranslationKeys.logAd; }
public static TranslationKeys LogDeleting { get => TranslationKeys.logDeleting; }
public static TranslationKeys LogInvalidOutput { get => TranslationKeys.logInvalidOutput; }
public static TranslationKeys LogMaxFileSequenceReached { get => TranslationKeys.logMaxFileSequenceReached; }
public static TranslationKeys LogMissingDlls { get => TranslationKeys.logMissingDlls; }
public static TranslationKeys LogNoAccessOutput { get => TranslationKeys.logNoAccessOutput; }
public static TranslationKeys LogPreviousLogs { get => TranslationKeys.logPreviousLogs; }
Expand Down Expand Up @@ -72,6 +73,7 @@ public static class I18nKeys
public static TranslationKeys TipFAQ { get => TranslationKeys.tipFAQ; }
public static TranslationKeys TipDirectory { get => TranslationKeys.tipDirectory; }
public static TranslationKeys TipInstallVirtualCableDriver { get => TranslationKeys.tipInstallVirtualCableDriver; }
public static TranslationKeys TipNumModifierHold { get => TranslationKeys.tipNumModifierHold; }
public static TranslationKeys TipPath { get => TranslationKeys.tipPath; }
public static TranslationKeys TipRelease { get => TranslationKeys.tipRelease; }
public static TranslationKeys TipUninstallVirtualCableDriver { get => TranslationKeys.tipUninstallVirtualCableDriver; }
Expand Down
24 changes: 21 additions & 3 deletions EspionSpotify/Translations/de.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 20 additions & 12 deletions EspionSpotify/Translations/de.resx
Original file line number Diff line number Diff line change
Expand Up @@ -177,14 +177,6 @@
<value>Werbung stummschalten</value>
<comment>interface</comment>
</data>
<data name="lblNumFiles" xml:space="preserve">
<value>Füge Aufnahmereihenfolgenummer am Anfang aller Dateinamen hinzu</value>
<comment>interface</comment>
</data>
<data name="lblNumTracks" xml:space="preserve">
<value>Ersetze die Titelnummer durch die Aufnahmereihenfolgenummer</value>
<comment>interface</comment>
</data>
<data name="lblPath" xml:space="preserve">
<value>Ausgabepfad:</value>
<comment>interface</comment>
Expand All @@ -193,10 +185,6 @@
<value>Aufnahmegerät:</value>
<comment>interface</comment>
</data>
<data name="lblRecordingNum" xml:space="preserve">
<value>Wähle die Startnummer der Aufnahmereihenfolgenummer</value>
<comment>interface</comment>
</data>
<data name="lblRecordUnknownTrackType" xml:space="preserve">
<value>Aufnehmen nicht erkannte Stücke als Werbung</value>
<comment>interface</comment>
Expand Down Expand Up @@ -389,4 +377,24 @@
<value>Speichere</value>
<comment>interface</comment>
</data>
<data name="tipNumModifierHold" xml:space="preserve">
<value>STRG wirkt sich auf den Maskenwert aus</value>
<comment>interface</comment>
</data>
<data name="lblNumFiles" xml:space="preserve">
<value>Fügen Sie die Zählernummer vor allen Dateinamen hinzu</value>
<comment>interface</comment>
</data>
<data name="lblNumTracks" xml:space="preserve">
<value>Ersetzen Sie die Titelnummer durch den Zählerwert</value>
<comment>interface</comment>
</data>
<data name="lblRecordingNum" xml:space="preserve">
<value>Wählen Sie die Startposition des Zählers</value>
<comment>interface</comment>
</data>
<data name="logMaxFileSequenceReached" xml:space="preserve">
<value>// Zähler: Maximales Dateisequenzpräfix von {0} erreicht</value>
<comment>console</comment>
</data>
</root>
24 changes: 21 additions & 3 deletions EspionSpotify/Translations/en.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 11 additions & 3 deletions EspionSpotify/Translations/en.resx
Original file line number Diff line number Diff line change
Expand Up @@ -178,11 +178,11 @@
<comment>interface</comment>
</data>
<data name="lblNumFiles" xml:space="preserve">
<value>Add the recording order number infront of all files name</value>
<value>Add the counter number in front of all files name</value>
<comment>interface</comment>
</data>
<data name="lblNumTracks" xml:space="preserve">
<value>Replace track numbers by the recording order number</value>
<value>Replace track number by the counter value</value>
<comment>interface</comment>
</data>
<data name="lblPath" xml:space="preserve">
Expand All @@ -194,7 +194,7 @@
<comment>interface</comment>
</data>
<data name="lblRecordingNum" xml:space="preserve">
<value>Choose the starting position of the recording order number</value>
<value>Choose the starting position of the counter</value>
<comment>interface</comment>
</data>
<data name="lblRecordUnknownTrackType" xml:space="preserve">
Expand Down Expand Up @@ -389,4 +389,12 @@
<value>Duplicate</value>
<comment>interface</comment>
</data>
<data name="logMaxFileSequenceReached" xml:space="preserve">
<value>// Counter: Max file sequence prefix of {0} reached</value>
<comment>console</comment>
</data>
<data name="tipNumModifierHold" xml:space="preserve">
<value>CTRL affects the mask value</value>
<comment>interface</comment>
</data>
</root>

0 comments on commit 98932b1

Please sign in to comment.