aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/visualization.milkdrop/resources/language/English/strings.xml11
-rw-r--r--addons/visualization.milkdrop/resources/language/Hungarian/strings.xml40
-rw-r--r--addons/visualization.milkdrop/resources/settings.xml16
-rw-r--r--xbmc/visualizations/Milkdrop/MilkdropXBMC.cpp487
4 files changed, 145 insertions, 409 deletions
diff --git a/addons/visualization.milkdrop/resources/language/English/strings.xml b/addons/visualization.milkdrop/resources/language/English/strings.xml
index 64dab7bb31..f776d72480 100644
--- a/addons/visualization.milkdrop/resources/language/English/strings.xml
+++ b/addons/visualization.milkdrop/resources/language/English/strings.xml
@@ -11,4 +11,15 @@
<string id="30007">Maximum Refresh Rate</string>
<string id="30008">Enable Stereo 3D</string>
<string id="30009">Preset Pack</string>
+ <string id="30010">User Preset Folder </string>
+ <string id="30011">Preset Shuffle Mode</string>
+
+ <string id="30020">WA51 Presets</string>
+ <string id="30021">Winamp Presets</string>
+ <string id="30022">User Defined Preset Folder</string>
+
+ <!-- setting value formats -->
+ <string id="30050">%2.0f secs</string>
+ <string id="30051">%2.0f %%</string>
+ <string id="30052">%2.0f fps</string>
</strings>
diff --git a/addons/visualization.milkdrop/resources/language/Hungarian/strings.xml b/addons/visualization.milkdrop/resources/language/Hungarian/strings.xml
index 73b16ed51d..b10a72525a 100644
--- a/addons/visualization.milkdrop/resources/language/Hungarian/strings.xml
+++ b/addons/visualization.milkdrop/resources/language/Hungarian/strings.xml
@@ -1,14 +1,26 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<strings>
- <!-- beállítás feliratok -->
- <string id="30000">Automatikus keverési idő</string>
- <string id="30001">Idő a beállításkészletek között</string>
- <string id="30002">Többlet véletlen idő</string>
- <string id="30003">Anisotropic szűrés bekapcsolása</string>
- <string id="30004">Éles váltások engedélyezése</string>
- <string id="30005">Hangerőküszöb az éles váltásokhoz</string>
- <string id="30006">Átlagos idő az éles váltások között</string>
- <string id="30007">Maximális frissítési frekvencia</string>
- <string id="30008">Sztereó 3D engedélyezése</string>
- <string id="30009">Beállításkészlet-csomag</string>
-</strings>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<strings>
+ <!-- beállítás feliratok -->
+ <string id="30000">Automatikus keverési idő</string>
+ <string id="30001">Idő a beállításkészletek között</string>
+ <string id="30002">Többlet véletlen idő</string>
+ <string id="30003">Anisotropic szűrés bekapcsolása</string>
+ <string id="30004">Éles váltások engedélyezése</string>
+ <string id="30005">Hangerőküszöb az éles váltásokhoz</string>
+ <string id="30006">Átlagos idő az éles váltások között</string>
+ <string id="30007">Maximális frissítési frekvencia</string>
+ <string id="30008">Sztereó 3D engedélyezése</string>
+ <string id="30009">Beállításkészlet-csomag</string>
+ <string id="30010">Saját-készlet mappa </string>
+ <string id="30011">Keverési mód</string>
+
+ <string id="30020">WA51 beállításkészlet</string>
+ <string id="30021">Winamp beállításkészlet</string>
+ <string id="30022">Felhasználói készlet</string>
+
+ <!-- beállítási érték formátumok -->
+ <string id="30050">%2.0f mp</string>
+ <string id="30051">%2.0f %%</string>
+ <string id="30052">%2.0f fps</string>
+
+</strings>
diff --git a/addons/visualization.milkdrop/resources/settings.xml b/addons/visualization.milkdrop/resources/settings.xml
new file mode 100644
index 0000000000..6cd58f6047
--- /dev/null
+++ b/addons/visualization.milkdrop/resources/settings.xml
@@ -0,0 +1,16 @@
+<settings>
+ <setting id="lastpresetfolder" type="text" default="" visible="false" />
+ <setting id="lastpresetidx" type="integer" default="0" visible="false" />
+ <setting id="lastlockedstatus" type="bool" default="false" visible="false" />
+ <setting id="Preset Pack" type="enum" label="30009" lvalues="30020|30021|30022" default="0"/>
+ <setting id="User Preset Folder" type="folder" visible="eq(-1,2)" source="" label="30010" default=""/>
+ <setting id="Preset Shuffle Mode" type="bool" label="30011" default="true"/>
+ <setting id="Automatic Blend Time" type="rangeofnum" label="30000" rangestart="1" rangeend="10" elements="10" valueformat="30050" default="0"/>
+ <setting id="Time Between Presets" type="rangeofnum" label="30001" rangestart="5" rangeend="50" elements="10" valueformat="30050" default="0"/>
+ <setting id="Additional Random Time" type="rangeofnum" label="30002" rangestart="5" rangeend="50" elements="10" valueformat="30050" default="0"/>
+ <setting id="Enable Hard Cuts" type="bool" label="30004" default="false"/>
+ <setting id="Loudness Threshold For Hard Cuts" type="rangeofnum" enable="eq(-1,true)" label="30005" rangestart="0" rangeend="100" elements="11" valueformat="30051" default="0"/>
+ <setting id="Average Time Between Hard Cuts" type="rangeofnum" enable="eq(-2,true)" label="30006" rangestart="5" rangeend="120" elements="24" valueformat="30050" default="0"/>
+ <setting id="Maximum Refresh Rate" type="rangeofnum" label="30007" rangestart="20" rangeend="60" elements="9" valueformat="30052" default="6"/>
+ <setting id="Enable Stereo 3d" type="bool" label="30008" default="false"/>
+</settings>
diff --git a/xbmc/visualizations/Milkdrop/MilkdropXBMC.cpp b/xbmc/visualizations/Milkdrop/MilkdropXBMC.cpp
index cfe2bb0bf5..7b54e92ef4 100644
--- a/xbmc/visualizations/Milkdrop/MilkdropXBMC.cpp
+++ b/xbmc/visualizations/Milkdrop/MilkdropXBMC.cpp
@@ -19,75 +19,60 @@
*
*/
-#include <windows.h>
-#include <io.h>
#include "vis_milkdrop/Plugin.h"
#include "../../addons/include/xbmc_vis_dll.h"
-#include "../../addons/include/xbmc_addon_cpp_dll.h"
#include "XmlDocument.h"
#include <string>
#include <direct.h>
-
-#define strnicmp _strnicmp
-#define strcmpi _strcmpi
-
CPlugin* g_plugin=NULL;
char g_visName[512];
-#define PRESETS_DIR "special://xbmc/addons/visualization.milkdrop/presets"
+#define PRESETS_DIR "zip://special%3A%2F%2Fxbmc%2Faddons%2Fvisualization.milkdrop%2Fpresets%2F"
-char m_szPresetSave[256] = "";
-char g_packFolder[256] = "Milkdrop";
+bool g_UserPackFolder;
std::string g_configFile;
-// settings vector
-std::vector<DllSetting> g_vecSettings;
-StructSetting** g_structSettings;
-unsigned int g_uiVisElements;
-
-int htoi(const char *str) /* Convert hex string to integer */
-{
- unsigned int digit, number = 0;
- while (*str)
- {
- if (isdigit(*str))
- digit = *str - '0';
- else
- digit = tolower(*str)-'a'+10;
- number<<=4;
- number+=digit;
- str++;
- }
- return number;
-}
-
+int lastPresetIndx =0;
+char lastPresetDir[1024] = "";
+bool lastLockedStatus = false;
+// Sets a new preset file or directory and make it active. Also recovers last state of the preset if it is the same as last time
void SetPresetDir(const char *pack)
{
int len = strlen(pack);
- if (len >= 4 && strcmpi(pack + len - 4, ".zip") == 0)
+ if (len >= 4 && strcmp(pack + len - 4, ".zip") == 0)
{
// Zip file
- strcpy(g_plugin->m_szPresetDir, "zip://special%3A%2F%2Fxbmc%2Faddons%2Fvisualization.milkdrop%2Fpresets%2F");
+ strcpy(g_plugin->m_szPresetDir, PRESETS_DIR);
strcat(g_plugin->m_szPresetDir, pack);
strcat(g_plugin->m_szPresetDir, "/");
}
- else if (len >= 4 && strcmpi(pack + len - 4, ".rar") == 0)
+ else if (len >= 4 && strcmp(pack + len - 4, ".rar") == 0)
{
// Rar file
- strcpy(g_plugin->m_szPresetDir, "zip://special%3A%2F%2Fxbmc%2Faddons%2Fvisualization.milkdrop%2Fpresets%2F");
+ strcpy(g_plugin->m_szPresetDir, PRESETS_DIR);
strcat(g_plugin->m_szPresetDir, pack);
strcat(g_plugin->m_szPresetDir, "/");
}
else
{
// Normal folder
- strcpy(g_plugin->m_szPresetDir, PRESETS_DIR);
- strcat(g_plugin->m_szPresetDir, "/");
- strcat(g_plugin->m_szPresetDir, pack);
- strcat(g_plugin->m_szPresetDir, "/");
+ strcpy(g_plugin->m_szPresetDir, pack);
+ }
+ if (strcmp (g_plugin->m_szPresetDir, lastPresetDir) == 0)
+ {
+ // If we have a valid last preset state AND the preset file(dir) is the same as last time
+ g_plugin->UpdatePresetList();
+ g_plugin->m_bHoldPreset = lastLockedStatus;
+ g_plugin->m_nCurrentPreset = lastPresetIndx;
+ strcpy(g_plugin->m_szCurrentPresetFile, g_plugin->m_szPresetDir);
+ strcat(g_plugin->m_szCurrentPresetFile, g_plugin->m_pPresetAddr[g_plugin->m_nCurrentPreset]);
+ g_plugin->LoadPreset(g_plugin->m_szCurrentPresetFile, g_plugin->m_fBlendTimeUser);
}
+ else
+ // If it is the first run or a newly chosen preset pack we choose a random preset as first
+ g_plugin->LoadRandomPreset(g_plugin->m_fBlendTimeUser);
}
void Preinit()
@@ -105,34 +90,26 @@ extern "C" ADDON_STATUS Create(void* hdl, void* props)
return STATUS_UNKNOWN;
VIS_PROPS* visprops = (VIS_PROPS*)props;
- strcpy(g_visName, visprops->name);
- g_configFile = std::string(visprops->profile) + std::string("milkdrop.conf");
_mkdir(visprops->profile);
-
+
Preinit();
g_plugin->PluginInitialize((LPDIRECT3DDEVICE9)visprops->device, visprops->x, visprops->y, visprops->width, visprops->height, visprops->pixelRatio);
- return STATUS_NEED_SETTINGS;
+ return STATUS_NEED_SAVEDSETTINGS; // We need some settings to be saved later before we quit this plugin
}
extern "C" void Start(int iChannels, int iSamplesPerSec, int iBitsPerSample, const char* szSongName)
-{
-
-}
+{}
-void SaveSettings();
extern "C" void Stop()
{
if(g_plugin)
{
- SaveSettings();
g_plugin->PluginQuit();
delete g_plugin;
g_plugin = NULL;
}
- g_vecSettings.clear();
- g_uiVisElements = 0;
}
unsigned char waves[2][576];
@@ -153,7 +130,6 @@ extern "C" void AudioData(const short* pAudioData, int iAudioDataLength, float *
if (ipos >= 576) break;
}
}
-
}
extern "C" void Render()
@@ -202,311 +178,11 @@ extern "C" bool OnAction(long flags, const void *param)
g_plugin->LoadRandomPreset(g_plugin->m_fBlendTimeUser);
ret = true;
}
- /*if (ret)
- SaveSettings();*/
- return ret;
-}
-
-void FindPresetPacks()
-{
- struct _finddata_t c_file;
- long hFile;
- int numPacks = 0;
- DllSetting setting10(DllSetting::SPIN, "Preset Pack", "30009");
- char searchFolder[255];
- sprintf(searchFolder, "%s/*", PRESETS_DIR);
-
- if( (hFile = _findfirst(searchFolder, &c_file )) != -1L ) // note: returns filename -without- path
- {
- do
- {
- char szFilename[512];
- strcpy(szFilename, c_file.name);
-
- bool pack = false;
- int len = strlen(c_file.name);
- if (len < 4 || (strcmpi(c_file.name + len - 4, ".zip") != 0 && strcmpi(c_file.name + len - 4, ".rar") != 0))
- {
- if (c_file.attrib & _A_SUBDIR && c_file.name[0] != '.')
- {
- pack = true;
- }
- }
- else
- {
- pack = true;
- }
-
- if (pack)
- {
- setting10.AddEntry(szFilename);
-
- if(strcmp(m_szPresetSave, "") == 0)
- strcpy(m_szPresetSave, szFilename);
-
- if (strcmpi(m_szPresetSave, szFilename) == 0)
- {
- // Found current
- setting10.current = numPacks;
- }
- numPacks++;
- }
- }
- while(_findnext(hFile,&c_file) == 0);
-
- _findclose( hFile );
- }
-
- g_vecSettings.push_back(setting10);
-
+ return ret;
}
void LoadSettings()
-{
- XmlNode node;
- CXmlDocument doc;
-
- char szXMLFile[1024];
- strcpy(szXMLFile,g_configFile.c_str());
-
- // update our settings structure
- // setup our settings structure (passable to GUI)
- g_vecSettings.clear();
- g_uiVisElements = 0;
-
- // Load the config file
- if (doc.Load(szXMLFile) >= 0)
- {
- node = doc.GetNextNode(XML_ROOT_NODE);
- while(node > 0)
- {
- if (!strcmpi(doc.GetNodeTag(node),"PresetPack"))
- {
- char* nodeStr = doc.GetNodeText(node);
-
- // Check if its a zip or a folder
- SetPresetDir(nodeStr);
- // save dir so that we can resave the .xml file
- strcpy(m_szPresetSave, nodeStr);
- }
- if (!strcmpi(doc.GetNodeTag(node),"PresetPackFolder"))
- {
- strcpy(g_packFolder, doc.GetNodeText(node));
- }
- else if (!strcmpi(doc.GetNodeTag(node),"EnableRating"))
- {
- g_plugin->m_bEnableRating = !strcmpi(doc.GetNodeText(node),"true");
- }
- else if (!strcmpi(doc.GetNodeTag(node),"InstaScan"))
- {
- g_plugin->m_bInstaScan = !strcmpi(doc.GetNodeText(node),"true");
- }
- else if (!strcmpi(doc.GetNodeTag(node),"HardCutsDisabled"))
- {
- g_plugin->m_bHardCutsDisabled = !strcmpi(doc.GetNodeText(node),"true");
- }
- else if (!strcmpi(doc.GetNodeTag(node),"TexSize"))
- {
- g_plugin->m_nTexSize = atoi(doc.GetNodeText(node));
- if (g_plugin->m_nTexSize != 256 && g_plugin->m_nTexSize != 512 && g_plugin->m_nTexSize != 1024 && g_plugin->m_nTexSize != 2048)
- {
- g_plugin->m_nTexSize = 1024;
- }
- }
- else if (!strcmpi(doc.GetNodeTag(node),"MeshSize"))
- {
- g_plugin->m_nGridX = atoi(doc.GetNodeText(node));
- if (g_plugin->m_nGridX <= 8)
- {
- g_plugin->m_nGridX = 8;
- }
-
- g_plugin->m_nGridY = g_plugin->m_nGridX*3/4;
-
- if (g_plugin->m_nGridX > MAX_GRID_X)
- g_plugin->m_nGridX = MAX_GRID_X;
- if (g_plugin->m_nGridY > MAX_GRID_Y)
- g_plugin->m_nGridY = MAX_GRID_Y;
- }
- else if (!strcmpi(doc.GetNodeTag(node),"BlendTimeAuto"))
- {
- g_plugin->m_fBlendTimeAuto = (float)atof(doc.GetNodeText(node));
- }
- else if (!strcmpi(doc.GetNodeTag(node),"TimeBetweenPresets"))
- {
- g_plugin->m_fTimeBetweenPresets = (float)atof(doc.GetNodeText(node));
- char txt[255];
- sprintf(txt, "Time between %d\n", g_plugin->m_fTimeBetweenPresets);
- OutputDebugString(txt);
- }
- else if (!strcmpi(doc.GetNodeTag(node),"TimeBetweenPresetsRand"))
- {
- g_plugin->m_fTimeBetweenPresetsRand = (float)atof(doc.GetNodeText(node));
- }
- else if (!strcmpi(doc.GetNodeTag(node),"HardCutLoudnessThresh"))
- {
- g_plugin->m_fHardCutLoudnessThresh = (float)atof(doc.GetNodeText(node));
- }
- else if (!strcmpi(doc.GetNodeTag(node),"HardCutHalflife"))
- {
- g_plugin->m_fHardCutHalflife = (float)atof(doc.GetNodeText(node));
- }
- else if (!strcmpi(doc.GetNodeTag(node),"MaxFPS"))
- {
- g_plugin->m_max_fps_fs = atoi(doc.GetNodeText(node));
- }
- else if (!strcmpi(doc.GetNodeTag(node),"HoldPreset"))
- {
- g_plugin->m_bHoldPreset = atoi(doc.GetNodeText(node)) == 1;
- }
- else if (!strcmpi(doc.GetNodeTag(node),"CurrentPreset"))
- {
- g_plugin->m_nCurrentPreset = atoi(doc.GetNodeText(node));
- printf("loaded current preset = %i", g_plugin->m_nCurrentPreset);
- }
- else if (!strcmpi(doc.GetNodeTag(node),"Stereo3d"))
- {
- g_plugin->m_bAlways3D = !strcmpi(doc.GetNodeText(node),"true");
- }
- else if (!strcmpi(doc.GetNodeTag(node),"LeftEyeCol"))
- {
- int col = htoi((doc.GetNodeText(node)));
- char* cPtr = (char*)&col;
- g_plugin->m_cLeftEye3DColor[0] = cPtr[3];
- g_plugin->m_cLeftEye3DColor[1] = cPtr[2];
- g_plugin->m_cLeftEye3DColor[2] = cPtr[1];
- }
- else if (!strcmpi(doc.GetNodeTag(node),"RightEyeCol"))
- {
- int col = htoi((doc.GetNodeText(node)));
- char* cPtr = (char*)&col;
- g_plugin->m_cRightEye3DColor[0] = cPtr[3];
- g_plugin->m_cRightEye3DColor[1] = cPtr[2];
- g_plugin->m_cRightEye3DColor[2] = cPtr[1];
- }
- node = doc.GetNextNode(node);
- }
-
- doc.Close();
- FindPresetPacks();
- }
- else
- {
- FindPresetPacks();
- if(strcmp(m_szPresetSave,"") != 0)
- {
- SetPresetDir(m_szPresetSave);
- }
- }
-
- g_plugin->UpdatePresetList();
-
- DllSetting setting(DllSetting::SPIN, "Automatic Blend Time", "30000");
- for (int i=0; i < 50; i++)
- {
- char temp[10];
- sprintf(temp, "%2.1f secs", (float)(i + 1)/5);
- setting.AddEntry(temp);
- }
- setting.current = (int)(g_plugin->m_fBlendTimeAuto * 5 - 1);
- g_vecSettings.push_back(setting);
- DllSetting setting2(DllSetting::SPIN, "Time Between Presets", "30001");
- for (int i=0; i < 55; i++)
- {
- char temp[10];
- sprintf(temp, "%i secs", i + 5);
- setting2.AddEntry(temp);
- }
- setting2.current = (int)(g_plugin->m_fTimeBetweenPresets - 5);
- g_vecSettings.push_back(setting2);
- DllSetting setting3(DllSetting::SPIN, "Additional Random Time", "30002");
- for (int i=0; i < 55; i++)
- {
- char temp[10];
- sprintf(temp, "%i secs", i + 5);
- setting3.AddEntry(temp);
- }
- setting3.current = (int)(g_plugin->m_fTimeBetweenPresetsRand - 5);
- g_vecSettings.push_back(setting3);
- DllSetting setting5(DllSetting::CHECK, "Enable Hard Cuts", "30004");
- setting5.current = g_plugin->m_bHardCutsDisabled ? 0 : 1;
- g_vecSettings.push_back(setting5);
- DllSetting setting6(DllSetting::SPIN, "Loudness Threshold For Hard Cuts", "30005");
- for (int i=0; i <= 100; i+=5)
- {
- char temp[10];
- sprintf(temp, "%i%%", i);
- setting6.AddEntry(temp);
- }
- setting6.current = (int)((g_plugin->m_fHardCutLoudnessThresh - 1.25f) * 10.0f);
- g_vecSettings.push_back(setting6);
- DllSetting setting7(DllSetting::SPIN, "Average Time Between Hard Cuts", "30006");
- for (int i=0; i <= 115; i+=5)
- {
- char temp[10];
- sprintf(temp, "%i secs", i+5);
- setting7.AddEntry(temp);
- }
- setting7.current = (int)((g_plugin->m_fHardCutHalflife - 5)/5);
- g_vecSettings.push_back(setting7);
- DllSetting setting8(DllSetting::SPIN, "Maximum Refresh Rate" ,"30007");
- for (int i=20; i <= 60; i+=5)
- {
- char temp[10];
- sprintf(temp, "%i fps", i);
- setting8.AddEntry(temp);
- }
- setting8.current = (g_plugin->m_max_fps_fs - 20) / 5;
- g_vecSettings.push_back(setting8);
-
- DllSetting setting9(DllSetting::CHECK, "Enable Stereo 3d" ,"30008");
- setting9.current = g_plugin->m_bAlways3D ? 1 : 0;
- g_vecSettings.push_back(setting9);
-
-}
-
-void SaveSettings()
-{
- char szXMLFile[1024];
- strcpy(szXMLFile,g_configFile.c_str());
-
- WriteXML doc;
- if (!doc.Open(szXMLFile, "visualisation"))
- return;
-
- doc.WriteTag("PresetPackFolder", g_packFolder);
- doc.WriteTag("PresetPack", m_szPresetSave);
- doc.WriteTag("EnableRating", g_plugin->m_bEnableRating);
- doc.WriteTag("InstaScan", g_plugin->m_bInstaScan);
- doc.WriteTag("HardCutsDisabled", g_plugin->m_bHardCutsDisabled);
- doc.WriteTag("TexSize", g_plugin->m_nTexSize);
- doc.WriteTag("MeshSize", g_plugin->m_nGridX);
- doc.WriteTag("BlendTimeAuto", g_plugin->m_fBlendTimeAuto);
- doc.WriteTag("TimeBetweenPresets", g_plugin->m_fTimeBetweenPresets);
- doc.WriteTag("TimeBetweenPresetsRand", g_plugin->m_fTimeBetweenPresetsRand);
-
- doc.WriteTag("HardCutLoudnessThresh", g_plugin->m_fHardCutLoudnessThresh);
- doc.WriteTag("HardCutHalflife", g_plugin->m_fHardCutHalflife);
- doc.WriteTag("MaxFPS", g_plugin->m_max_fps_fs);
- doc.WriteTag("HoldPreset", g_plugin->m_bHoldPreset ? 1 : 0);
- doc.WriteTag("CurrentPreset", g_plugin->m_nCurrentPreset);
- doc.WriteTag("Stereo3d", g_plugin->m_bAlways3D ? true : false);
-
- unsigned int col;
- char* c = (char*)&col;
- c[0] = 0;
- c[1] = g_plugin->m_cLeftEye3DColor[2];
- c[2] = g_plugin->m_cLeftEye3DColor[1];
- c[3] = g_plugin->m_cLeftEye3DColor[0];
- doc.WriteTag("LeftEyeCol", col, "%08X");
- c[0] = 0;
- c[1] = g_plugin->m_cRightEye3DColor[2];
- c[2] = g_plugin->m_cRightEye3DColor[1];
- c[3] = g_plugin->m_cRightEye3DColor[0];
- doc.WriteTag("RightEyeCol", col, "%08X");
-
- doc.Close();
-}
+{}
//-- GetPresets ---------------------------------------------------------------
// Return a list of presets to XBMC for display
@@ -572,10 +248,7 @@ extern "C" ADDON_STATUS GetStatus()
extern "C" unsigned int GetSettings(StructSetting ***sSet)
{
- Preinit();
- g_uiVisElements = DllUtils::VecToStruct(g_vecSettings, &g_structSettings);
- *sSet = g_structSettings;
- return g_uiVisElements;
+ return 0;
}
//-- FreeSettings --------------------------------------------------------------
@@ -584,7 +257,6 @@ extern "C" unsigned int GetSettings(StructSetting ***sSet)
extern "C" void FreeSettings()
{
- DllUtils::FreeStruct(g_uiVisElements, &g_structSettings);
}
//-- UpdateSetting ------------------------------------------------------------
@@ -595,53 +267,78 @@ extern "C" ADDON_STATUS SetSetting(const char* id, const void* value)
if (!id || !value)
return STATUS_UNKNOWN;
- Preinit();
-
- if (strcmpi(id, "Use Preset") == 0)
+ if (strcmp(id, "###GetSavedSettings") == 0) // We have some settings to be saved in the settings.xml file
+ {
+ if (strcmp((char*)value, "0") == 0)
+ {
+ strcpy((char*)id, "lastpresetfolder");
+ strcpy((char*)value, g_plugin->m_szPresetDir);
+ }
+ if (strcmp((char*)value, "1") == 0)
+ {
+ strcpy((char*)id, "lastlockedstatus");
+ strcpy((char*)value, (g_plugin->m_bHoldPreset ? "true" : "false"));
+ }
+ if (strcmp((char*)value, "2") == 0)
+ {
+ strcpy((char*)id, "lastpresetidx");
+ sprintf ((char*)value, "%i", g_plugin->m_nCurrentPreset);
+ }
+ if (strcmp((char*)value, "3") == 0)
+ {
+ strcpy((char*)id, "###End");
+ }
+ return STATUS_OK;
+ }
+ // It is now time to set the settings got from xmbc
+ if (strcmp(id, "Use Preset") == 0)
OnAction(34, &value);
- else if (strcmpi(id, "Automatic Blend Time") == 0)
- g_plugin->m_fBlendTimeAuto = (float)(*(int*)value + 1) / 5.0f;
- else if (strcmpi(id, "Time Between Presets") == 0)
- g_plugin->m_fTimeBetweenPresets = (float)(*(int*)value + 5);
- else if (strcmpi(id, "Additional Random Time") == 0)
- g_plugin->m_fTimeBetweenPresetsRand = (float)(*(int*)value + 5);
- else if (strcmpi(id, "Enable Hard Cuts") == 0)
- g_plugin->m_bHardCutsDisabled = *(int*)value == 0;
- else if (strcmpi(id, "Loudness Threshold For Hard Cuts") == 0)
- g_plugin->m_fHardCutLoudnessThresh = (float)(*(int*)value)/10.0f + 1.25f;
- else if (strcmpi(id, "Average Time Between Hard Cuts") == 0)
+ else if (strcmp(id, "Automatic Blend Time") == 0)
+ g_plugin->m_fBlendTimeAuto = (float)(*(int*)value + 1);
+ else if (strcmp(id, "Time Between Presets") == 0)
+ g_plugin->m_fTimeBetweenPresets = (float)(*(int*)value*5 + 5);
+ else if (strcmp(id, "Additional Random Time") == 0)
+ g_plugin->m_fTimeBetweenPresetsRand = (float)(*(int*)value*5 + 5);
+ else if (strcmp(id, "Enable Hard Cuts") == 0)
+ g_plugin->m_bHardCutsDisabled = *(bool*)value == false;
+ else if (strcmp(id, "Loudness Threshold For Hard Cuts") == 0)
+ g_plugin->m_fHardCutLoudnessThresh = (float)(*(int*)value)/5.0f + 1.25f;
+ else if (strcmp(id, "Average Time Between Hard Cuts") == 0)
g_plugin->m_fHardCutHalflife = (float)*(int*)value*5 + 5;
- else if (strcmpi(id, "Maximum Refresh Rate") == 0)
+ else if (strcmp(id, "Maximum Refresh Rate") == 0)
g_plugin->m_max_fps_fs = *(int*)value*5 + 20;
- else if (strcmpi(id, "Enable Stereo 3d") == 0)
- g_plugin->m_bAlways3D = *(int*)value == 1;
- else if (strcmpi(id, "Preset Pack") == 0)
+ else if (strcmp(id, "Enable Stereo 3d") == 0)
+ g_plugin->m_bAlways3D = *(bool*)value;
+ else if (strcmp(id, "lastlockedstatus") == 0)
+ lastLockedStatus = *(bool*)value;
+ else if (strcmp(id, "lastpresetidx") == 0)
+ lastPresetIndx = *(int*)value;
+ else if (strcmp(id, "lastpresetfolder") == 0)
+ strcpy(lastPresetDir, (char*)value);
+ else if (strcmp(id, "Preset Shuffle Mode") == 0)
+ g_plugin->m_bSequentialPresetOrder = !*(bool*)value;
+ else if (strcmp(id, "Preset Pack") == 0)
{
-
- if(!g_vecSettings.empty() && !g_vecSettings[0].entry.empty() && *(int*)value < g_vecSettings[0].entry.size())
- {
- if(strncmp(m_szPresetSave, g_vecSettings[0].entry[*(int*)value], sizeof(m_szPresetSave)) != 0)
+ if (*(int*)value == 0)
{
- // Check if its a zip or a folder
- SetPresetDir(g_vecSettings[0].entry[*(int*)value]);
-
- // save dir so that we can resave the .xml file
- sprintf(m_szPresetSave, "%s", g_vecSettings[0].entry[*(int*)value]);
-
- g_plugin->m_bHoldPreset = false; // Disable locked preset as its no longer there
- g_plugin->UpdatePresetList();
-
- // set current preset index to -1 because current preset is no longer in the list
- g_plugin->m_nCurrentPreset = -1;
- g_plugin->LoadRandomPreset(g_plugin->m_fBlendTimeUser);
+ g_UserPackFolder = false;;
+ SetPresetDir ("WA51-presets(265).zip");
}
+ else if (*(int*)value == 1)
+ {
+ g_UserPackFolder = false;
+ SetPresetDir ("Winamp-presets(436).zip");
}
+ else if (*(int*)value == 2)
+ g_UserPackFolder = true;
+ }
+ else if (strcmp(id, "User Preset Folder") ==0 )
+ {
+ if (g_UserPackFolder) SetPresetDir ((char*)value);
}
else
return STATUS_UNKNOWN;
- SaveSettings();
-
return STATUS_OK;
}
@@ -651,4 +348,4 @@ extern "C" ADDON_STATUS SetSetting(const char* id, const void* value)
extern "C" unsigned int GetSubModules(char ***names)
{
return 0; // this vis supports 0 sub modules
-} \ No newline at end of file
+}