123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619 |
- /*---------------------------------------------------
- -----------------------------------------------------
- Filename: pledit.m
- Version: 3.1
- Type: maki
- Date: 18. Sep. 2007 - 19:42
- Author: Martin Poehlmann aka Deimos
- E-Mail: [email protected]
- Internet: www.skinconsortium.com
- www.martin.deimos.de.vu
- -----------------------------------------------------
- ---------------------------------------------------*/
- #include "lib/std.mi"
- //#define DEBUG
- #define FILE_NAME "pledit.m"
- #include "lib/com/debug.m"
- #define PL_GUID "{45F3F7C1-A6F3-4EE6-A15E-125E92FC3F8D}"
- #define PLC_POPPLER_POS 200
- #include "attribs/init_playlist.m"
- Function fitContent (int playlistw, int playlistx);
- Function fit (group g, int x, int rx, int y, int ry, int w, int rw, int h, int rh);
- Function int updatePoppler(int w);
- Function int updateMainPoppler(int w);
- Global Frame dualwnd, pl_dualwnd, mainframe;
- Global Group g_playlist, g_player, g_sui, g_buttons, g_mcv, g_cover, g_upper, wdh_pl;
- Global Button p_enlarge, p_small;
- Global Button p_resize;
- Global int down_x, down_gx, isresizing;
- Global layout normal;
- Global Container player;
- //Global WindowHolder wdh_pl;
- Global Text pl_time;
- Global Button pe_add, pe_rem, pe_sel, pe_misc, pe_manage;
- Global Boolean startup, isBig, bypass_nocomp;
- Global Timer dc_openPl, dc_closePl, dc_loadWnd;
- Global Int COMP_Y, COMP_H, SUI_Y, SUI_H, BOTTOMSPACER, MAX_PL_H;
- Global Int DEF_PL_W, SIDESPACER;
- Global Int min_infowidth;
- System.onScriptLoaded ()
- {
- initAttribs_Playlist();
- normal = getScriptGroup();
- player = normal.getContainer();
- isBig = (getParam() == "big");
- if (isBig)
- {
- mainframe = normal.getObject("player.mainframe.big");
- }
- else
- {
- mainframe = normal.getObject("player.mainframe");
- }
- dualwnd = mainframe.findObject("player.dualwnd");
- g_mcv = dualwnd.findObject("player.component.fileinfo");
- g_upper = dualwnd.findObject("player.component.playlist.frame");
- pl_dualwnd = dualwnd.findObject("playlist.dualwnd");
- g_playlist = pl_dualwnd.findObject("player.component.playlist");
- g_cover = pl_dualwnd.findObject("player.component.playlist.albumart");
- g_player = dualwnd.findObject("player.layout");
- g_sui = normal.getObject("sui.content");
- g_buttons = g_playlist.getObject("player.component.playlist.buttons");
- p_enlarge = g_buttons.getObject("player.playlist.enlarge");
- p_small = g_buttons.getObject("player.playlist.small");
- p_resize = g_playlist.getObject("player.resize");
- wdh_pl = g_playlist.getObject("playlistpro");
- pl_time = g_buttons.getObject("PLTime");
- pe_add = g_buttons.getObject("player.playlist.add");
- pe_rem = g_buttons.getObject("player.playlist.rem");
- pe_sel = g_buttons.getObject("player.playlist.sel");
- pe_misc = g_buttons.getObject("player.playlist.misc");
- pe_manage = g_buttons.getObject("player.playlist.manage");
- min_infowidth = stringtoInteger(dualwnd.getXmlParam("maxwidth"));
- dc_openPl = new Timer;
- dc_openPl.setDelay(1);
- dc_closePl = new Timer;
- dc_closePl.setDelay(1);
- dc_loadWnd = new Timer;
- dc_loadWnd.setDelay(1);
- // Global Definitions:
- DEF_PL_W = g_playlist.getGuiW(); // (-)
- SIDESPACER = g_sui.getGuiX(); // (+)
- COMP_Y = mainframe.getGuiY(); // (+)
- COMP_H = mainframe.getGuiH(); // (+)
- SUI_Y = g_sui.getGuiY(); // (+)
- SUI_H = g_sui.getGuiH(); // (-)
- BOTTOMSPACER = SUI_Y + SUI_H; // (-)
- MAX_PL_H = BOTTOMSPACER - COMP_Y; // (-)
- startup = 1;
- // show playlist album art if checked
- playlist_cover_attrib.onDataChanged();
- //Bento v0.8 hack
- if (mainframe.getPosition() < stringToInteger(mainframe.getXmlParam("minwidth")))
- {
- mainframe.setPosition(stringToInteger(mainframe.getXmlParam("minwidth")));
- }
- }
- system.onScriptUnloading ()
- {
- int pos = pl_dualwnd.getPosition();
- if (pos > 0) setPrivateInt(getSkinName(), "playlist_cover_poppler", pos);
- delete dc_loadWnd;
- }
- dc_loadWnd.onTimer ()
- {
- stop();
- int pos = dualwnd.getPosition();
- if (pos > 0) updatePoppler(pos);
- playlist_enlarge_attrib.onDataChanged();
- if (dualwnd.getPosition() > 0
- #ifdef DOHIDEMCV
- || dualwnd.getXMlParam("from") == "left"
- #endif
- ) dc_openPL.start();
- else wdh_pl.hide(); //hideWa2Component(PL_GUID);
- }
- playlist_enlarge_attrib.onDataChanged ()
- {
- int pl_w = dualwnd.getPosition();
- #ifdef DOHIDEMCV
- if (dualwnd.getXmlParam("from") == "left")
- {
- pl_w = dualwnd.getWidth() - 8;
- }
- #endif
- int pl_x = 0 - ( pl_w + SIDESPACER ); // (-)
- if (getData() == "1")
- {
- int sui_w = pl_x - SIDESPACER; // (-)
- dualwnd.setXmlParam("relath", "1");
- dualwnd.setXmlParam("h", integerToString(0));
- mainframe.setXmlParam("relath", "1");
- mainframe.setXmlParam("h", integerToString(MAX_PL_H));
- g_sui.setXmlParam("w", integerToString(sui_w-8));
- int pos = getPrivateInt(getSkinName(), "playlist_cover_poppler", PLC_POPPLER_POS);
- if (playlist_cover_attrib.getData() == "1" && pos > 0 && getPrivateString(getSkinName(), "Component", "Media Library") != "Hidden")
- {
- g_cover.show();
- pl_dualwnd.setPosition (pos);
- }
- else
- {
- pl_dualwnd.setPosition (0);
- g_cover.hide();
- }
- p_enlarge.hide();
- p_small.show();
- }
- else
- {
- int sui_w = 0 - SIDESPACER - SIDESPACER; // (-)
- int pc_w = pl_x - SIDESPACER; // (-)
- g_cover.hide();
- if (playlist_cover_attrib.getData() == "1")
- {
- int pos = pl_dualwnd.getPosition();
- if (pos > 0) setPrivateInt(getSkinName(), "playlist_cover_poppler", pos);
- }
- pl_dualwnd.setPosition (0);
- dualwnd.setXmlParam("h", integerToString(COMP_H-3));
- dualwnd.setXmlParam("relath", "0");
- mainframe.setXmlParam("h", integerToString(COMP_H));
- mainframe.setXmlParam("relath", "0");
- g_sui.setXmlParam("w", integerToString(sui_w));
- p_enlarge.show();
- p_small.hide();
- }
- }
- g_playlist.onResize (int x, int y, int w, int h)
- {
- int pos = dualwnd.getPosition();
- debugString(integerToString(pos), 9);
- updateMainPoppler(min_infowidth - pos - 8);
- if (pos > 0
- #ifdef DOHIDEMCV
- || dualwnd.getXMlParam("from") == "left"
- #endif
- )
- {
- //setPrivateInt(getSkinName(), "pledit poppler width", dualwnd.getPosition());
- if (!wdh_pl.isVisible())
- {
- setPrivateString(getSkinName(), "Pledit_pos", "top");
- g_sui.sendAction("hide_comp", "pe", 0,0,0,0);
- dc_openPl.start();
- }
- if (isBig)
- {
- if (w > 189)
- {
- pe_add.show();
- pe_rem.show();
- pe_sel.show();
- pe_misc.show();
- pe_manage.show();
- }
- else if (w <= 189 && w >158)
- {
- pe_add.show();
- pe_rem.show();
- pe_sel.show();
- pe_misc.show();
- pe_manage.hide();
- }
- else if (w <= 158 && w >127)
- {
- pe_add.show();
- pe_rem.show();
- pe_sel.show();
- pe_misc.hide();
- pe_manage.hide();
- }
- else if (w <= 127 && w >96)
- {
- pe_add.show();
- pe_rem.show();
- pe_sel.hide();
- pe_misc.hide();
- pe_manage.hide();
- }
- else if (w <= 96 && w >65)
- {
- pe_add.show();
- pe_rem.hide();
- pe_sel.hide();
- pe_misc.hide();
- pe_manage.hide();
- }
- else
- {
- pe_add.hide();
- pe_rem.hide();
- pe_sel.hide();
- pe_misc.hide();
- pe_manage.hide();
- }
- }
- else
- {
- if (w > 146)
- {
- pe_add.show();
- pe_rem.show();
- pe_sel.show();
- pe_misc.show();
- pe_manage.show();
- }
- else if (w <= 146 && w >122)
- {
- pe_add.show();
- pe_rem.show();
- pe_sel.show();
- pe_misc.show();
- pe_manage.hide();
- }
- else if (w <= 122 && w >98)
- {
- pe_add.show();
- pe_rem.show();
- pe_sel.show();
- pe_misc.hide();
- pe_manage.hide();
- }
- else if (w <= 98 && w >74)
- {
- pe_add.show();
- pe_rem.show();
- pe_sel.hide();
- pe_misc.hide();
- pe_manage.hide();
- }
- else if (w <= 74 && w >50)
- {
- pe_add.show();
- pe_rem.hide();
- pe_sel.hide();
- pe_misc.hide();
- pe_manage.hide();
- }
- else
- {
- pe_add.hide();
- pe_rem.hide();
- pe_sel.hide();
- pe_misc.hide();
- pe_manage.hide();
- }
- }
- }
- else wdh_pl.hide();
- if (playlist_enlarge_attrib.getdata() == "1")
- {
- int sui_w = - g_playlist.getWidth() - (2 * SIDESPACER) - 8;
- g_sui.setXmlParam("w", integerToString(sui_w));
- if (startup)
- {
- startup = 0;
- mainframe.setXmlParam("relath", "1");
- mainframe.setXmlParam("h", integerToString(MAX_PL_H));
- dualwnd.setXmlParam("relath", "1");
- dualwnd.setXmlParam("h", integerToString(0));
- }
- }
- }
- normal.onSetVisible (Boolean onoff)
- {
- if (onoff)
- {
- playlist_enlarge_attrib.onDataChanged();
- int pos = dualwnd.getPosition();
- if (pos > 0
- #ifdef DOHIDEMCV
- || dualwnd.getXMlParam("from") == "left"
- #endif
- )
- {
- updatePoppler(pos);
- dc_openPL.start();
- }
- else wdh_pl.hide();//hideWa2Component(PL_GUID);
- }
- }
- normal.onUserResize (int x, int y, int w, int h)
- {
- int pos = dualwnd.getPosition();
- if (pos > 0) updatePoppler(pos);
- }
- /** Hide pl_time if it cannot be full displayed */
- pl_time.onResize (int x, int y, int w, int h)
- {
- if (w < getTextWidth())
- {
- hide();
- }
- else
- {
- show();
- }
- }
- pl_time.onTextChanged (String newtxt)
- {
- if (getWidth() < getTextWidth())
- {
- hide();
- }
- else
- {
- show();
- }
- }
- /** Playlist Component Handling */
- System.onGetCancelComponent (String guid, boolean goingvisible)
- {
- if (getPrivateString(getSkinName(), "Pledit_pos", "top") == "sui")
- {
- return;
- }
- debugString(DEBUG_PREFIX "System.onGetCancelComponent ( "+ guid + " , " + integerToString(goingvisible) + " )", D_WTF);
- if (guid == PL_GUID)
- {
- Boolean isShade = player.getCurLayout() != normal;
- if (goingvisible == TRUE && !isShade)
- {
- int poppler_w = getPrivateInt(getSkinName(), "pledit poppler width", 200);
- if (poppler_w < 1) poppler_w = 200;
- g_playlist.show();
- updatePoppler(poppler_w);
- dc_openPl.start();
- return FALSE;
- }
- else
- {
- if (dualwnd.getPosition() > 0) setPrivateInt(getSkinName(), "pledit poppler width", dualwnd.getPosition());
- wdh_pl.hide();
- dualwnd.setPosition(0);
- return FALSE;
- }
- }
- }
- normal.onAction (String action, String param, Int x, int y, int p1, int p2, GuiObject source)
- {
- if (action == "load_comp" && strlower(param) == "pledit")
- {
- int poppler_w = getPrivateInt(getSkinName(), "pledit poppler width", 200);
- if (dualwnd.getPosition() > 0) poppler_w = dualwnd.getPosition();
- if (dualwnd.getPosition() == 0) poppler_w = 200;
- updatePoppler(poppler_w);
- dc_openPl.start();
- }
- if (action == "hide_comp" && strlower(param) == "pledit")
- {
- setPrivateInt(getSkinName(), "pledit poppler width", dualwnd.getPosition());
- wdh_pl.hide();
- dualwnd.setPosition(0);
- }
- if (action == "pledit_posupdate")
- {
- int pos = dualwnd.getPosition();
- if (pos > 0) updatePoppler(pos);
- }
- if (action == "sui")
- {
- if (param == "tonocomp")
- {
- if (playlist_cover_attrib.getData() == "1")
- {
- int pos = pl_dualwnd.getPosition();
- if (pos > 0) setPrivateInt(getSkinName(), "playlist_cover_poppler", pos);
- }
- bypass_nocomp = TRUE; //we need to add a bypass otherwise playlist_cover_attrib will be turned OFF
- pl_dualwnd.setPosition (0);
- g_cover.hide();
- bypass_nocomp = FALSE;
- }
- else if (param == "fromnocomp")
- {
- playlist_cover_attrib.onDataChanged ();
- }
- }
- }
- dualwnd.onAction (String action, String param, Int x, int y, int p1, int p2, GuiObject source)
- {
- if (action == "set_maxwidth")
- {
- // update poppler for playlist/infocomp
- updatePoppler(dualwnd.getPosition());
- // update poppler bands for player/infocomp
- min_infowidth = x;
- updateMainPoppler(min_infowidth - dualwnd.getPosition() - 8);
- }
- }
- wdh_pl.onSetVisible (Boolean onoff)
- {
- debugString("wdh_pl set visible: " + integerToString(onoff), 9);
- if (onoff)
- {
- playlist_cover_attrib.onDataChanged();
- }
- else
- {
- int pos = pl_dualwnd.getPosition();
- if (pos > 0) setPrivateInt(getSkinName(), "playlist_cover_poppler", pos);
- }
- }
- updatePoppler(int w)
- {
- if (dualwnd.getPosition() == 0 && w == 0) return;
- int min_w = stringToInteger(dualwnd.getXmlParam("minwidth"));
- int max_w = stringToInteger(dualwnd.getXmlParam("maxwidth"));
- if (max_w < 0) max_w = dualwnd.getWidth() + max_w;
- debugString("max_w: " + integerToString(max_w), 9);
- boolean reset = FALSE;
- reset += (w == 0);
- reset += (w < min_w);
- if (reset) w = min_w;
- // Prevent the playlist from overlapping the player
- if (w > max_w)
- {
- w = max_w;
- // Resize the player to get more space
- if (max_w < min_w)
- {
- w = min_w;
- int mainframe_pos = mainframe.getPosition() - (min_w - max_w); // I need to save this in a variable first, otherwise mainframe.setPos will crash...
- mainframe.setPosition(mainframe_pos);
- }
- }
- debugString("set poppler: " + integerToString(w), 9);
- dualwnd.setPosition(w);
- }
- updateMainPoppler (int w)
- {
- mainframe.setXmlparam("maxwidth", integerToString(w));
- }
- dc_openPl.onTimer ()
- {
- dc_openPl.stop();
- debugString("dc_openPl called!", 9);
- wdh_pl.show();
- g_playlist.show();
- g_upper.show();
- //if (!wdh_pl.isVisible()) debugInt(g_playlist.getWidth());
- }
- dc_closePl.onTimer ()
- {
- dc_closePl.stop();
- wdh_pl.hide();
- }
- //----------------------------------------------------------------------------------------------------------------
- // Playlist Album Art Handles
- //----------------------------------------------------------------------------------------------------------------
- Global boolean attrib_bypass = false;
- playlist_cover_attrib.onDataChanged ()
- {
- if (attrib_bypass)
- return;
- if (playlist_enlarge_attrib.getData() == "0")
- return;
- if (getData() == "1")
- {
- int pos = getPrivateInt(getSkinName(), "playlist_cover_poppler", PLC_POPPLER_POS);
- if (pos > 0 && getPrivateString(getSkinName(), "Component", "Media Library") != "Hidden")
- {
- pl_dualwnd.setPosition (pos);
- g_cover.show();
- }
- else
- {
- pl_dualwnd.setPosition (0);
- g_cover.hide();
- }
- }
- else
- {
- int pos = pl_dualwnd.getPosition();
- if (pos > 0) setPrivateInt(getSkinName(), "playlist_cover_poppler", pos);
- pl_dualwnd.setPosition(0);
- g_cover.hide();
- }
- }
- Global Boolean bypass;
- player.onBeforeSwitchToLayout (Layout oldlayout, Layout newlayout)
- {
- if (oldlayout == normal)
- {
- bypass = 1;
- }
- }
- g_cover.onSetVisible (Boolean onoff)
- {
- if (bypass)
- {
- bypass = 0;
- return;
- }
- if (!onoff && !bypass_nocomp && playlist_cover_attrib.getdata() == "1" && getPrivateString(getSkinName(), "Component", "Media Library") != "Hidden" && playlist_enlarge_attrib.getData() == "1" && dualwnd.getPosition() > 0)
- {
- playlist_cover_attrib.setdata("0");
- }
- else if (onoff && !bypass_nocomp && playlist_cover_attrib.getdata() == "0" && dualwnd.getPosition() > 0)
- {
- attrib_bypass = true;
- playlist_cover_attrib.setdata("1");
- attrib_bypass = false;
- }
- }
|