Skip to content

Commit

Permalink
Merge pull request #361 from MediaPortal/MP1-5233_Fix_Edit_of_Share_F…
Browse files Browse the repository at this point in the history
…older_in_GUISettings_plugin

MP1-5233: Plugins: Fix Edit of Share Folder in GUISettings plugin
  • Loading branch information
andrewjswan authored Feb 7, 2025
2 parents f885f96 + 84ad743 commit 83c0ab7
Show file tree
Hide file tree
Showing 3 changed files with 147 additions and 16 deletions.
2 changes: 2 additions & 0 deletions mediaportal/MediaPortal.Base/language/strings_en.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2454,6 +2454,8 @@
<String id="300239">MadVR</String>
<String id="300240">A video file is playing</String>
<String id="300241">Do you want to stop video playback?</String>
<String id="300242">Do not display folder jpg if PIN is set</String>
<String id="300243">Host detected method</String>
<String id="350001">Press Info/F9 for quick settings...</String>
<String id="350002">Movies</String>
<String id="350003">PlayDisc</String>
Expand Down
125 changes: 109 additions & 16 deletions mediaportal/WindowPlugins/GUISettings/GUISettingsCommon_ShareFolders.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ public class GUIShareFolders : GUIInternalWindow
private bool _folderCreateThumbs = true; // Future use
private bool _folderEachFolderIsMovie = false; // Future use

private bool _folderEnableWakeOnLan = false;
private string _folderHostDetectMethod = "Default";
private bool _folderDonotFolderJpgIfPin = true;

private string _folderDefaultLayout = "List";
private int _folderDefaultLayoutIndex = 0; // Currrent selected folder layout
private string _section = string.Empty;
Expand Down Expand Up @@ -283,6 +287,9 @@ protected override void OnClicked(int controlId, GUIControl control, Action.Acti
FolderInfo(_shareFolderListItem).CreateThumbs = _folderCreateThumbs;
FolderInfo(_shareFolderListItem).EachFolderIsMovie = _folderEachFolderIsMovie;
FolderInfo(_shareFolderListItem).PinCode = _folderPin;
FolderInfo(_shareFolderListItem).EnableWakeOnLan = _folderEnableWakeOnLan;
FolderInfo(_shareFolderListItem).HostDetectMethod = _folderHostDetectMethod;
FolderInfo(_shareFolderListItem).DonotFolderJpgIfPin = _folderDonotFolderJpgIfPin;
// Almost forgot this, needed for proper sort :)
_shareFolderListItem.Label = _folderName;
_shareFolderListItem.OnItemSelected += OnItemSelected;
Expand Down Expand Up @@ -329,6 +336,9 @@ protected override void OnClicked(int controlId, GUIControl control, Action.Acti
FolderInfo(_shareFolderListItem).CreateThumbs = _folderCreateThumbs;
FolderInfo(_shareFolderListItem).EachFolderIsMovie = _folderEachFolderIsMovie;
FolderInfo(_shareFolderListItem).DefaultLayout = SettingsSharesHelper.ProperLayoutFromDefault(_folderDefaultLayoutIndex);
FolderInfo(_shareFolderListItem).EnableWakeOnLan = _folderEnableWakeOnLan;
FolderInfo(_shareFolderListItem).HostDetectMethod = _folderHostDetectMethod;
FolderInfo(_shareFolderListItem).DonotFolderJpgIfPin = _folderDonotFolderJpgIfPin;
// Add changes to a listitem
videosShareListcontrol.SelectedListItem.AlbumInfoTag = _shareFolderListItem.AlbumInfoTag;
videosShareListcontrol.SelectedListItem.Label = _folderName;
Expand Down Expand Up @@ -373,8 +383,10 @@ private void Update()
_folderEachFolderIsMovie = FolderInfo(_shareFolderListItem).EachFolderIsMovie;
_folderDefaultLayout = FolderInfo(_shareFolderListItem).DefaultLayout.ToString();
_folderDefaultLayoutIndex = SettingsSharesHelper.ProperDefaultFromLayout(FolderInfo(_shareFolderListItem).DefaultLayout);

}
_folderEnableWakeOnLan = FolderInfo(_shareFolderListItem).EnableWakeOnLan;
_folderHostDetectMethod = FolderInfo(_shareFolderListItem).HostDetectMethod;
_folderDonotFolderJpgIfPin = FolderInfo(_shareFolderListItem).DonotFolderJpgIfPin;
}

// Skin properties update
private void SetProperties()
Expand Down Expand Up @@ -772,6 +784,13 @@ private void OnAddEditFolder()
//dlg.AddLocalizedString(1374); // layout
dlg.AddLocalizedString(300059);// Pin

dlg.AddLocalizedString(300242);// Do not display folder jpg if PIN set
if (IsUncNetwork(_folderPath))
{
dlg.AddLocalizedString(1990); // Wake up server
dlg.AddLocalizedString(300243); // Host detected method
}

if (_selectedOption != -1)
dlg.SelectedLabel = _selectedOption;

Expand All @@ -795,7 +814,7 @@ private void OnAddEditFolder()
OnAddPath();
break;
case 109:
OnThumb();
OnMenuBool(ref _folderCreateThumbs);
break;
case 300221:
OnMovieFolder();
Expand All @@ -806,6 +825,18 @@ private void OnAddEditFolder()
case 300059:
OnAddPin();
break;

case 300242:
OnMenuBool(ref _folderDonotFolderJpgIfPin);
break;

case 1990:
OnMenuBool(ref _folderEnableWakeOnLan);
break;

case 300243:
OnHostDetecedMethod();
break;
}
}

Expand Down Expand Up @@ -983,7 +1014,7 @@ private bool RequestPin()
return false;
}

private void OnThumb()
private void OnMovieFolder()
{
GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU);

Expand All @@ -995,11 +1026,11 @@ private void OnThumb()

dlg.Reset();
dlg.SetHeading(GUILocalizeStrings.Get(496)); //Menu
int selected = 0;
if (!_folderCreateThumbs)
int selected = 1;

if (_folderEachFolderIsMovie)
{
selected = 1;
selected = 0;
}

dlg.Add(GUILocalizeStrings.Get(200031)); //Yes
Expand All @@ -1017,17 +1048,67 @@ private void OnThumb()

if (dlg.SelectedLabel == 0)
{
_folderCreateThumbs = true;
_folderEachFolderIsMovie = true;
}
else
{
_folderCreateThumbs = false;
_folderEachFolderIsMovie = false;
}

OnAddEditFolder();
}

private void OnHostDetecedMethod()
{
GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU);

if (dlg == null)
{
OnAddEditFolder();
return;
}

dlg.Reset();
dlg.SetHeading(GUILocalizeStrings.Get(496)); //Menu

dlg.Add("Default");
dlg.Add("Ping");
dlg.Add("Samba");
dlg.Add("NetUse");

switch(_folderHostDetectMethod)
{
case "Default":
dlg.SelectedLabel = 0;
break;

case "Ping":
dlg.SelectedLabel = 1;
break;

case "Samba":
dlg.SelectedLabel = 2;
break;

case "NetUse":
dlg.SelectedLabel = 3;
break;
}

dlg.DoModal(GetID);

if (dlg.SelectedLabel < 0)
{
OnAddEditFolder();
return;
}

_folderHostDetectMethod = dlg.SelectedLabelText;

OnAddEditFolder();
}

private void OnMovieFolder()
private void OnMenuBool(ref bool bValue)
{
GUIDialogMenu dlg = (GUIDialogMenu)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_MENU);

Expand All @@ -1039,11 +1120,11 @@ private void OnMovieFolder()

dlg.Reset();
dlg.SetHeading(GUILocalizeStrings.Get(496)); //Menu
int selected = 1;
int selected = 0;

if (_folderEachFolderIsMovie)
if (!bValue)
{
selected = 0;
selected = 1;
}

dlg.Add(GUILocalizeStrings.Get(200031)); //Yes
Expand All @@ -1061,11 +1142,11 @@ private void OnMovieFolder()

if (dlg.SelectedLabel == 0)
{
_folderEachFolderIsMovie = true;
bValue = true;
}
else
{
_folderEachFolderIsMovie = false;
bValue = false;
}

OnAddEditFolder();
Expand Down Expand Up @@ -1119,5 +1200,17 @@ private void Sort()
videosShareListcontrol.Add(item);
}
}

private static bool IsUncNetwork(string strPath)
{
string strDetectedFolderName = string.Empty;
if (!Util.Utils.IsUNCNetwork(strPath))
{
// Check if letter drive is a network drive
strDetectedFolderName = Util.Utils.FindUNCPaths(strPath);
}

return Util.Utils.IsUNCNetwork(strDetectedFolderName) || Util.Utils.IsUNCNetwork(strPath);
}
}
}
36 changes: 36 additions & 0 deletions mediaportal/WindowPlugins/GUISettings/GUISettings_SharesHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ public class ShareData
public bool ScanShare = false;
public bool CreateThumbs = true;
public bool EachFolderIsMovie = false;
public bool EnableWakeOnLan = false;
public string HostDetectMethod = "Default";
public bool DonotFolderJpgIfPin = true;

public bool HasPinCode
{
Expand Down Expand Up @@ -244,6 +247,9 @@ public void LoadSettings(string section)
string sharePort = String.Format("shareport{0}", index);
string shareRemotePath = String.Format("shareremotepath{0}", index);
string shareViewPath = String.Format("shareview{0}", index);
string sharewakeonlan = string.Format("sharewakeonlan{0}", index);
string hostdetectmethod = string.Format("hostdetectmethod{0}", index);
string sharedonotfolderjpgifpin = string.Format("sharedonotfolderjpgifpin{0}", index);

string shareNameData = xmlreader.GetValueAsString(section, shareName, "");
string sharePathData = xmlreader.GetValueAsString(section, sharePath, "");
Expand All @@ -266,6 +272,9 @@ public void LoadSettings(string section)
int sharePortData = xmlreader.GetValueAsInt(section, sharePort, 21);
string shareRemotePathData = xmlreader.GetValueAsString(section, shareRemotePath, "/");
int shareLayout = xmlreader.GetValueAsInt(section, shareViewPath, (int)GUIFacadeControl.Layout.List);
bool shareWakeOnLan = xmlreader.GetValueAsBool(section, sharewakeonlan, false);
string hostDetectMethod = xmlreader.GetValueAsString(section, hostdetectmethod, "Default");
bool sharedonotFolderJpgIfPin = xmlreader.GetValueAsBool(section, sharedonotfolderjpgifpin, true);

// For Music Shares, we can indicate, if we want to scan them every time
bool shareScanData = false;
Expand Down Expand Up @@ -295,6 +304,9 @@ public void LoadSettings(string section)
newShare.Port = sharePortData;
newShare.RemoteFolder = shareRemotePathData;
newShare.DefaultLayout = (GUIFacadeControl.Layout)shareLayout;
newShare.EnableWakeOnLan = shareWakeOnLan;
newShare.HostDetectMethod = hostDetectMethod;
newShare.DonotFolderJpgIfPin = sharedonotFolderJpgIfPin;

newShare.ScanShare = shareScanData;

Expand Down Expand Up @@ -329,6 +341,9 @@ public void SetDefaultDrives(string section, bool addOpticalDrives)
string sharePort = String.Format("shareport{0}", index);
string shareRemotePath = String.Format("shareremotepath{0}", index);
string shareViewPath = String.Format("shareview{0}", index);
string sharewakeonlan = string.Format("sharewakeonlan{0}", index);
string hostdetectmethod = string.Format("hostdetectmethod{0}", index);
string sharedonotfolderjpgifpin = string.Format("sharedonotfolderjpgifpin{0}", index);

xmlwriter.RemoveEntry(section, shareName);
xmlwriter.RemoveEntry(section, sharePath);
Expand All @@ -340,6 +355,9 @@ public void SetDefaultDrives(string section, bool addOpticalDrives)
xmlwriter.RemoveEntry(section, sharePort);
xmlwriter.RemoveEntry(section, shareRemotePath);
xmlwriter.RemoveEntry(section, shareViewPath);
xmlwriter.RemoveEntry(section, sharewakeonlan);
xmlwriter.RemoveEntry(section, hostdetectmethod);
xmlwriter.RemoveEntry(section, sharedonotfolderjpgifpin);
}
}

Expand Down Expand Up @@ -380,6 +398,9 @@ public void SaveSettings(string section)
string sharePort = String.Format("shareport{0}", index);
string shareRemotePath = String.Format("shareremotepath{0}", index);
string shareViewPath = String.Format("shareview{0}", index);
string sharewakeonlan = string.Format("sharewakeonlan{0}", index);
string hostdetectmethod = string.Format("hostdetectmethod{0}", index);
string sharedonotfolderjpgifpin = string.Format("sharedonotfolderjpgifpin{0}", index);

xmlwriter.RemoveEntry(section, shareName);
xmlwriter.RemoveEntry(section, sharePath);
Expand All @@ -391,6 +412,9 @@ public void SaveSettings(string section)
xmlwriter.RemoveEntry(section, sharePort);
xmlwriter.RemoveEntry(section, shareRemotePath);
xmlwriter.RemoveEntry(section, shareViewPath);
xmlwriter.RemoveEntry(section, sharewakeonlan);
xmlwriter.RemoveEntry(section, hostdetectmethod);
xmlwriter.RemoveEntry(section, sharedonotfolderjpgifpin);

if (section == "music" || section == "movies")
{
Expand Down Expand Up @@ -421,6 +445,9 @@ public void SaveSettings(string section)
//ThumbsCreate (default true)
bool thumbsCreate = true;
bool folderIsMovie = false;
bool shareWakeOnLan = false;
string hostDetectMethod = "Default";
bool sharedonotFolderJpgIfPin = true;

if (_shareListControl != null && _shareListControl.Count > index)
{
Expand All @@ -442,6 +469,9 @@ public void SaveSettings(string section)
// ThumbsCreate
thumbsCreate = shareData.CreateThumbs;
folderIsMovie = shareData.EachFolderIsMovie;
shareWakeOnLan = shareData.EnableWakeOnLan;
hostDetectMethod = shareData.HostDetectMethod;
sharedonotFolderJpgIfPin = shareData.DonotFolderJpgIfPin;

if (shareNameData == _defaultShare)
{
Expand All @@ -458,6 +488,12 @@ public void SaveSettings(string section)
xmlwriter.SetValue(section, sharePort, sharePortData.ToString());
xmlwriter.SetValue(section, shareRemotePath, shareRemotePathData);
xmlwriter.SetValue(section, shareViewPath, shareLayout);
xmlwriter.SetValueAsBool(section, sharewakeonlan, shareWakeOnLan);
if (!string.IsNullOrEmpty(hostdetectmethod) || hostdetectmethod != "Default")
{
xmlwriter.SetValue(section, hostdetectmethod, hostDetectMethod);
}
xmlwriter.SetValueAsBool(section, sharedonotfolderjpgifpin, sharedonotFolderJpgIfPin);

if (section == "music" || section == "movies")
{
Expand Down

0 comments on commit 83c0ab7

Please sign in to comment.