
Iniciado por
chucky11
Si esa es la solucion, no hay problema en corregir eso.
Al final habían algunos cambios más (más llamadas a la misma función en el mismo item y la nueva función devuelve "yes/no" en vez de "true/false". El item completo modificado:
Código:
<item>
<title>$[HDD_FORMAT]</title>
<disable>
<script>
isDisabled = "yes";
isInterHddExist = isInternalHddExist();
isExterHddExist = isExterHddExist();
if(IsItemDisasble("HddDisable") == "false" && (isInterHddExist == "yes" || isExterHddExist == "true" )){
if(IsItemDisasble("DualHDDProject") == "true"){
isDisabled = "no";
}
}
isDisabled;
</script>
</disable>
<mediaDisplay>
<onEnter>
setFullScreenFade(64);
isInterHddExist = isInternalHddExist();
isExterHddExist = isExterHddExist();
print("1 isInterHddExist=",isInterHddExist);
print("1 isExterHddExist=",isExterHddExist);
popupHeader = "$[HDD_FORMAT]";
popupMessageSize = 1;
popupMessages = "$[HDD_MANUAL_FORMAT]?";
popupOptionSize = 0;
if (isInterHddExist == "yes") {
popupOptionSize += 1;
/* modify by zhangbin */
/* popupOptions = pushBackStringArray(popupOptions, "Internal HDD"); */
if (isExistTwoInternalHDDPort() == "yes")
{
popupOptions = pushBackStringArray(popupOptions, "$[DEVICE_HDD_1]");
}
else
{
popupOptions = pushBackStringArray(popupOptions, "$[INTERNAL_HDD]");
}
}
if (isExterHddExist == "true") {
popupOptionSize += 1;
/* modify by zhangbin */
/* popupOptions = pushBackStringArray(popupOptions, "External HDD"); */
if (isExistTwoInternalHDDPort() == "yes")
{
popupOptions = pushBackStringArray(popupOptions, "$[DEVICE_HDD_2]");
}
else if (isJupiterUsbHddPort() == "yes") {
popupOptions = pushBackStringArray(popupOptions, "$[DEVICE_HDD]");
}
else
{
popupOptions = pushBackStringArray(popupOptions, "$[EXTERNAL_HDD]");
}
}
</onEnter>
</mediaDisplay>
<onClick>
<script>
isInterHddExist = isInternalHddExist();
isOnlyOneExtHddExist = isOnlyOneExtHddExist();
print("2 isInterHddExist=",isInterHddExist);
print("2 isOnlyOneExtHddExist=",isOnlyOneExtHddExist);
rss = "rss_file://./setup_menu/scripts/passwordCheck.rss";
ret = doModalRss(rss);
if (ret == "OK")
{
rss = "rss_file://./setup_menu/scripts/dynamicPopup.rss";
ret = doModalRss(rss);
print("2 doModalRss, ret=",ret);
if (ret == "$[DEVICE_HDD_1]" || ret == "$[INTERNAL_HDD]") {
if (isInterHddExist == "yes") {
APName = "HddUtilAP";
MenuType = "TopMenu";
MenuLink = "Internal HDD";
BltType = "NoBitBlt";
menuCmd(APName, MenuType, MenuLink, BltType);
redrawDisplay("no");
}
}
else if (ret == "$[DEVICE_HDD_2]" || ret == "$[EXTERNAL_HDD]") {
if (isOnlyOneExtHddExist == "true") {
APName = "HddUtilAP";
MenuType = "TopMenu";
MenuLink = "External HDD";
BltType = "NoBitBlt";
menuCmd(APName, MenuType, MenuLink, BltType);
redrawDisplay("no");
}
else {
ret = doModalRss(rss, "mediaDisplay", "popupDialog", 0);
}
}
else if (isJupiterUsbHddPort() == "yes") {
if (isExterHddExist() == "true") {
APName = "HddUtilAP";
MenuType = "TopMenu";
MenuLink = "External HDD";
BltType = "NoBitBlt";
menuCmd(APName, MenuType, MenuLink, BltType);
redrawDisplay("no");
}
else {
ret = doModalRss(rss, "mediaDisplay", "popupDialog", 0);
}
}
}
null;
</script>
</onClick>
</item>
De esta forma SÍ aparece la opción Formatear en el menú Sistema (al menos en mi 3200) y si la seleccionas te pide la contraseña (0000 como bien has dicho en múltiples ocasiones) y te da la opción de formatear el HDD. Ahí me he parado (no quería formatear), así que todavía falta comprobar si la APName "HddUtilAP" formateará correctamente el disco o tendrá problemas por usar la misma función que falla para comprobar que existe el disco o vete tú a saber.
Por otra parte, este item funciona para los reproductores con un único disco. A continuación hay otro item con el mismo title para reproductores con 2 discos. Ahora mismo no sé si algún reproductor de Woxter incorpora 2 discos o si, por ejemplo, en el i-cube 5000, que supongo tiene 2 puertos sata (para disco y para la grabadora), funcionará igual o no (habrá que comprobar si isInternalHddExist() funciona igual allí o si el disco se supone que es el HDD1 o el HDD2).
Saludos.