aboutsummaryrefslogtreecommitdiff
path: root/Src/resources/skins/Winamp Modern/scripts/configtarget.m
blob: 2aad82e276d8d601ef558a5344054313487c5224 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#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);
}