winamp/Src/resources/skins/Winamp Modern/scripts/configtarget.m
2024-09-24 14:54:57 +02:00

98 lines
3.5 KiB
Objective-C

#include <lib/std.mi>
// ------------------------------------------------------------------------------------
Global GuiObject target;
Global ComponentBucket buck;
// ------------------------------------------------------------------------------------
Function turnAllOffExcept(GuiObject except);
Function turnOn(GuiObject obj);
Function turnOff(GuiObject obj);
// ------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------
// init
// ------------------------------------------------------------------------------------
System.onScriptLoaded() {
target = getScriptGroup().findObject("skin.config.target");
buck = getScriptGroup().findObject("my.bucket");
// turn off all
GuiObject o = NULL;
turnAllOffExcept(o);
}
// ------------------------------------------------------------------------------------
// save scroller position
// ------------------------------------------------------------------------------------
System.onScriptUnloading() {
if (buck) {
setPrivateInt("configmenu", "last_scroll", buck.getScroll());
}
}
// ------------------------------------------------------------------------------------
// turn on last open
// ------------------------------------------------------------------------------------
buck.onStartup() {
setScroll(getPrivateInt("configmenu", "last_scroll", 0));
Group g = buck.enumChildren(getPrivateInt("configmenu", "last_page", 0));
if (!g) g = buck.enumChildren(0);
if (!g) return;
ToggleButton btn = g.getObject("btn");
if (btn) btn.leftClick();
}
// ------------------------------------------------------------------------------------
// this is called by the bucket button to switch to a new group
// ------------------------------------------------------------------------------------
target.onAction(String action, String param, int x, int y, int p1, int p2, GuiObject source) {
if (getToken(action,";",0) == "switchto") {
String grp = getToken(action, ";", 1);
String is_subpage = getToken(action, ";", 2);
target.setXmlParam("groupid", grp);
if (is_subpage!="subpage") turnAllOffExcept(source.getParent()); // getParent because the source is the button itself, the parent is the whole group item in the bucket
}
}
// ------------------------------------------------------------------------------------
// turn off all buttons except for the parameter, also save last_page param based on param item
// ------------------------------------------------------------------------------------
turnAllOffExcept(GuiObject except) {
if (!buck) return;
int i=0;
// enumerate all inserted groups, turn them off if they're not our exception
while (i<buck.getNumChildren()) {
GuiObject obj = buck.enumChildren(i);
if (obj == except) { // otherwise record last page
setPrivateInt("configmenu", "last_page", i);
i++;
continue;
}
if (obj == NULL) { break; } // shoundnt happen
turnOff(obj);
i++;
}
// turn on the clicked item
if (except) turnOn(except);
}
// ------------------------------------------------------------------------------------
turnOn(GuiObject obj) {
Group gobj = obj;
// otherwise we just need this :
ToggleButton tg = gobj.getObject("btn");
tg.setActivated(1);
}
// ------------------------------------------------------------------------------------
turnOff(GuiObject obj) {
Group gobj = obj;
// otherwise we just need this :
ToggleButton tg = gobj.getObject("btn");
tg.setActivated(0);
}