Skip to content

Commit

Permalink
Added context menu items for new delay reference options.
Browse files Browse the repository at this point in the history
Delay references changed in MP1 context menu are now saved (persistent).
Default delaytime in core set to 0ms.
Allow for 0ms in delay references times to prevent validation issues.
Indenting changes.
  • Loading branch information
RickDB authored and RickDB committed Jun 14, 2016
1 parent 8b39ad2 commit 699f6b7
Show file tree
Hide file tree
Showing 8 changed files with 185 additions and 101 deletions.
3 changes: 3 additions & 0 deletions AtmoLight.Core/AtmoLight.Core.csproj
Expand Up @@ -32,6 +32,8 @@
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile />
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
<RestorePackages>true</RestorePackages>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols>
Expand Down Expand Up @@ -117,6 +119,7 @@
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
Expand Down
24 changes: 10 additions & 14 deletions AtmoLight.Core/Core.cs
Expand Up @@ -549,15 +549,6 @@ public bool IsDelayEnabled()
return delayEnabled;
}

/// <summary>
/// Returns the delay time.
/// </summary>
/// <returns>Delay in ms.</returns>
public int GetDelayTime()
{
return delayTime;
}

/// <summary>
/// Returns the delay tick.
/// </summary>
Expand Down Expand Up @@ -1132,16 +1123,21 @@ public void ChangeProfile()
/// Enables the delay.
/// </summary>
/// <param name="delay">Delay in ms.</param>
public void EnableDelay(int delay = -1)
public void EnableDelay(int delay = 0)
{
if (delay > 0)
{
delayTime = delay;
}
delayTime = delay;
delayEnabled = true;
Log.Info("Adding {0}ms delay to LEDs.", delayTime);
}

/// <summary>
/// Returns the delay.
/// </summary>
public int GetDelayTime()
{
return delayTime;
}

/// <summary>
/// Disables the delay.
/// </summary>
Expand Down
7 changes: 7 additions & 0 deletions AtmoLight.MediaPortal1.sln
Expand Up @@ -13,6 +13,13 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AtmoLight.MediaPortal1", "A
{1A2ADEB0-CEB7-40F2-A146-91724EA884E0} = {1A2ADEB0-CEB7-40F2-A146-91724EA884E0}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{25B3A4FD-1E74-4209-A2E0-8CCCC1720D6F}"
ProjectSection(SolutionItems) = preProject
.nuget\NuGet.Config = .nuget\NuGet.Config
.nuget\NuGet.exe = .nuget\NuGet.exe
.nuget\NuGet.targets = .nuget\NuGet.targets
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down
103 changes: 86 additions & 17 deletions AtmoLight.MediaPortal1/Plugin.cs
Expand Up @@ -69,6 +69,9 @@ public class Plugin : ISetupForm, IPlugin
private int delayRefresh50 = 0; // Helper for delay value 50 if set
private int delayRefresh59 = 0;// Helper for delay value 59 if set

// Refresh rates
static int[] refreshRates = { 23, 24, 50, 59 };

// SetupForm
private SetupForm atmoLightSetupForm;

Expand Down Expand Up @@ -164,13 +167,14 @@ public void Start()
// General settings
if (Settings.delay)
{
coreObject.EnableDelay();
//initialist usuable settings for delay calculations
if (Settings.delayReferenceTime23 > 0) delayRefresh23 = 23;
if (Settings.delayReferenceTime24 > 0) delayRefresh24 = 24;
if (Settings.delayReferenceTime50 > 0) delayRefresh50 = 50;
if (Settings.delayReferenceTime59 > 0) delayRefresh59 = 59;
coreObject.EnableDelay();
}

coreObject.SetGIFPath(Settings.gifFile);
coreObject.SetReInitOnError(Settings.restartOnError);
coreObject.SetStaticColor(Settings.staticColorRed, Settings.staticColorGreen, Settings.staticColorBlue);
Expand Down Expand Up @@ -1123,22 +1127,25 @@ private void DialogContextMenu()
// Toggle Blackbar Detection
dlg.Add(new GUIListItem(Localization.Translate("ContextMenu", "BlackbarDetection")));

// Delay
if (coreObject.GetCurrentEffect() == ContentEffect.MediaPortalLiveMode)
// Toggle Delay and Change Delay
if (coreObject.IsDelayEnabled())
{
// Toggle Delay and Change Delay
if (coreObject.IsDelayEnabled())
dlg.Add(new GUIListItem(Localization.Translate("ContextMenu", "DelayOff")));

if (coreObject.GetCurrentEffect() == ContentEffect.MediaPortalLiveMode && coreObject.GetDelayTime() > 0)
{
dlg.Add(new GUIListItem(Localization.Translate("ContextMenu", "DelayOff")));
dlg.Add(
new GUIListItem(Localization.Translate("ContextMenu", "ChangeDelay") + " (" + coreObject.GetDelayTime() +
Localization.Translate("Common", "MS") + ")"));
dlg.Add(new GUIListItem(Localization.Translate("ContextMenu", "ChangeDelay") + " (" + coreObject.GetDelayTime() +
Localization.Translate("Common", "MS") + ")"));
}
else
{
dlg.Add(new GUIListItem(Localization.Translate("ContextMenu", "DelayOn")));
dlg.Add(new GUIListItem(Localization.Translate("ContextMenu", "ChangeDelay")));
}
}
else
{
dlg.Add(new GUIListItem(Localization.Translate("ContextMenu", "DelayOn")));
}

// Change Static Color
if (coreObject.GetCurrentEffect() == ContentEffect.StaticColor)
Expand Down Expand Up @@ -1393,16 +1400,78 @@ private void DialogContextMenu()
}
}
// Change Delay
else if (dlg.SelectedLabelText ==
Localization.Translate("ContextMenu", "ChangeDelay") + " (" + coreObject.GetDelayTime() +
Localization.Translate("Common", "MS") + ")")
else if (dlg.SelectedLabelText == Localization.Translate("ContextMenu", "ChangeDelay") || dlg.SelectedLabelText ==
Localization.Translate("ContextMenu", "ChangeDelay") + " (" + coreObject.GetDelayTime() +
Localization.Translate("Common", "MS") + ")")
{
if ((int.TryParse(GetKeyboardString(""), out delayTimeHelper)) && (delayTimeHelper >= 0) &&

GUIDialogMenu dlgSetReferenceTime =
(GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU);
dlgSetReferenceTime.Reset();
dlgSetReferenceTime.SetHeading(Localization.Translate("ContextMenu", "SelectDelayReferenceTime"));

foreach (int refreshRate in refreshRates)
{
string formattedRefreshRate = "";
if(refreshRate == 23)
{
formattedRefreshRate = string.Format("{0}hz ({1})MS", refreshRate, Settings.delayReferenceTime23);
}
if (refreshRate == 24)
{
formattedRefreshRate = string.Format("{0}hz ({1})MS", refreshRate, Settings.delayReferenceTime24);
}
if (refreshRate == 50)
{
formattedRefreshRate = string.Format("{0}hz ({1})MS", refreshRate, Settings.delayReferenceTime50);
}
if (refreshRate == 59)
{
formattedRefreshRate = string.Format("{0}hz ({1})MS", refreshRate, Settings.delayReferenceTime59);
}

dlgSetReferenceTime.Add(formattedRefreshRate);
}

dlgSetReferenceTime.SelectedLabel = 0;
dlgSetReferenceTime.DoModal(GUIWindowManager.ActiveWindow);
int selectedRefreshrate = 0;
if (dlgSetReferenceTime.SelectedLabel >= 0)
{
string selectedItem = dlgSetReferenceTime.SelectedLabelText.Replace("hz", string.Empty).Replace(" (" + Settings.delayReferenceTime23 + ")MS", string.Empty)
.Replace(" (" + Settings.delayReferenceTime24 + ")MS", string.Empty).Replace(" (" + Settings.delayReferenceTime50 + ")MS", string.Empty)
.Replace(" (" + Settings.delayReferenceTime59 + ")MS", string.Empty).Trim();
bool isValidInteger = int.TryParse(selectedItem, out selectedRefreshrate);
}

if (selectedRefreshrate > 0 && (int.TryParse(GetKeyboardString(""), out delayTimeHelper)) && (delayTimeHelper >= 0) &&
(delayTimeHelper <= 1000))
{
coreObject.SetDelay(delayTimeHelper);
Settings.delayReferenceTime =
(int)(((float)delayTimeHelper * (float)GetRefreshRate()) / Settings.delayReferenceRefreshRate);
switch (selectedRefreshrate)
{
case 23:
Settings.delayReferenceTime23 = delayTimeHelper;
Settings.SaveSpecificSetting("DelayTime23", delayTimeHelper.ToString());
Log.Debug("Set delay reference for 23hz to {0}ms", delayTimeHelper);
break;
case 24:
Settings.delayReferenceTime24 = delayTimeHelper;
Settings.SaveSpecificSetting("DelayTime24", delayTimeHelper.ToString());
Log.Debug("Set delay reference for 24hz to {0}ms", delayTimeHelper);
break;
case 50:
Settings.delayReferenceTime50 = delayTimeHelper;
Settings.SaveSpecificSetting("DelayTime50", delayTimeHelper.ToString());
Log.Debug("Set delay reference for 50hz to {0}ms", delayTimeHelper);
break;
case 59:
Settings.delayReferenceTime59 = delayTimeHelper;
Settings.SaveSpecificSetting("DelayTime59", delayTimeHelper.ToString());
Log.Debug("Set delay reference for 59hz to {0}ms", delayTimeHelper);
break;
}

UpdateDelay();
}
else
{
Expand Down
1 change: 1 addition & 0 deletions AtmoLight.MediaPortal1/Resources/language/en.xml
Expand Up @@ -140,6 +140,7 @@
<string name="BlackbarDetection2.35:1">Manual 2.35:1 (21x9)</string>
<string name="Reinitialise">Reconnect to lost targets</string>
<string name="AtmoLightDisabled">AtmoLight disabled</string>
<string name="SelectDelayReferenceTime">Select delay reference</string>
</ContextMenu>
<AmbiBox>
<string name="AmbiBox">AmbiBox</string>
Expand Down
40 changes: 23 additions & 17 deletions AtmoLight.MediaPortal1/Settings.cs
Expand Up @@ -294,29 +294,35 @@ public static void LoadSettings()
lowCPU = reader.GetValueAsBool("atmolight", "lowCPU", false);
lowCPUTime = reader.GetValueAsInt("atmolight", "lowCPUTime", 0);
delay = reader.GetValueAsBool("atmolight", "Delay", false);
//old refresh delay settings
delayReferenceRefreshRate = reader.GetValueAsInt("atmolight", "DelayRefreshRate",0);
delayReferenceTime = reader.GetValueAsInt("atmolight", "DelayTime",0);
//new
delayReferenceRefreshRate = reader.GetValueAsInt("atmolight", "DelayRefreshRate", 0);

// Legacy reference time
delayReferenceTime = reader.GetValueAsInt("atmolight", "DelayTime", 0);

// New reference times
delayReferenceTime23 = reader.GetValueAsInt("atmolight", "DelayTime23", 0);
delayReferenceTime24 = reader.GetValueAsInt("atmolight", "DelayTime24", 0);
delayReferenceTime50 = reader.GetValueAsInt("atmolight", "DelayTime50", 0);
delayReferenceTime59 = reader.GetValueAsInt("atmolight", "DelayTime59", 0);

//if all of the specific refresh values are 0, assume upgrade setting from single rate
if (delayReferenceTime23 ==0 && delayReferenceTime24 == 0 && delayReferenceTime50 ==0 && delayReferenceTime59 == 0)
// If all of the specific refresh values are 0, assume upgrade setting from single rate
if (delayReferenceTime23 == 0 && delayReferenceTime24 == 0 && delayReferenceTime50 == 0 && delayReferenceTime59 == 0)
{
switch (delayReferenceRefreshRate)
{
case 23: delayReferenceTime23 = delayReferenceTime;
break;
case 24: delayReferenceTime24 = delayReferenceTime;
break;
case 50: delayReferenceTime50 = delayReferenceTime;
break;
case 59: delayReferenceTime59 = delayReferenceTime;
break;
}
switch (delayReferenceRefreshRate)
{
case 23:
delayReferenceTime23 = delayReferenceTime;
break;
case 24:
delayReferenceTime24 = delayReferenceTime;
break;
case 50:
delayReferenceTime50 = delayReferenceTime;
break;
case 59:
delayReferenceTime59 = delayReferenceTime;
break;
}
}
exitAtmoWin = reader.GetValueAsBool("atmolight", "ExitAtmoWin", true);
startAtmoWin = reader.GetValueAsBool("atmolight", "StartAtmoWin", true);
Expand Down
18 changes: 9 additions & 9 deletions AtmoLight.MediaPortal1/SetupForm.Designer.cs

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

0 comments on commit 699f6b7

Please sign in to comment.