User Tools

Site Tools


script_roll_clock

===== About the script ====== * Purpose : Rolling Clock Widget (swipe for date) * Author : Jappie Toutenhoofd (https://plus.google.com/+JappieToutenhoofd) * Link: https://plus.google.com/+JappieToutenhoofd/posts/ ====== How to use the script ====== * Import both script's from here. * Add a text-item and theme it as you like. Then name it 'X'. * Run 'Roll-Clock-create' from an empty spot. ====== Script code ====== ======= Roll-Clock-create ======= <code> // Style a Text-item and give it a name. Let's say 'X'. var nameXample = "X"; var RC_script = LL.getScriptByName("Roll-Clock"); if ( RC_script == null) { alert( "Also install 'Roll-Clock' not just 'Roll-Clock-create'."); return;} var Touch = LL.getEvent(); if (Touch.getItem() != null) { alert( "Run from empty spot. \n Do NOT set 'item menu'. \n Only set 'Lightning menu' in script-editor."); return;} var Tcont = Touch.getContainer(); if ( Tcont.getId() == 99) { alert( "Cool, but messy! Let's not do this."); return;} var Xmpl = Tcont.getItemByName(nameXample); if (Xmpl == null) { alert( "Style a Text-Item and give it the name: " + nameXample); return;} var background = Xmpl.getBoxBackground("n"); var xe = Xmpl.getProperties(); var bordercolor = xe.getBox("i.box").getColor("bl", "n"); var bordersize = xe.getBox("i.box").getSize( "bl"); var labelsize = xe.getFloat( "s.labelFontSize"); var labelcolor = xe.getInteger("s.labelFontColor"); var labelfont = xe.getString( "s.labelFontTypeFace"); var labelstyle = xe.getString( "s.labelFontStyle"); var labelshadow = xe.getBoolean("s.labelShadow"); var shadowradius = xe.getFloat( "s.labelShadowRadius"); var offsetx = xe.getFloat( "s.labelShadowOffsetX"); var offsety = xe.getFloat( "s.labelShadowOffsetY"); var shadowcolor = xe.getInteger("s.labelShadowColor"); var clockbase = Tcont.addPanel( Touch.getTouchX(), Touch.getTouchY(), (3* Tcont.getCellWidth()), Tcont.getCellHeight()); var ce = clockbase.getProperties().edit(); ce.getBox("i.box").setColor("bl,br,bt,bb", "ns", bordercolor); ce.getBox("i.box").setSize( "bl,br,bt,bb", bordersize ); ce.commit(); var cc = clockbase.getContainer(); var ce = cc.getProperties().edit(); ce.setBoolean("newOnGrid" ,true ); ce.setBoolean("allowDualPosition" ,true ); ce.setBoolean("useDesktopSize" ,false); ce.setString ("scrollingDirection","NONE"); ce.setString ("gridPColumnMode" ,"NUM" ); ce.setString ("gridLColumnMode" ,"NUM"); ce.setString ("gridPRowMode" ,"NUM" ); ce.setString ("gridLRowMode" ,"NUM"); ce.setInteger("gridPColumnNum" ,5); ce.setInteger("gridLColumnNum" ,5); ce.setInteger("gridPRowNum" ,1); ce.setInteger("gridLRowNum" ,1); ce.commit(); for(var i=0;i<=4;++i) { var dgt = cc.addPanel(0,0, cc.getCellWidth(), cc.getCellHeight()); dgt.setCell(i,0,(i+1),1,true); dgt.setName("dgt"+i); var de = dgt.getProperties().edit(); de.getBox("i.box").setColor("bl,br,bt,bb", "ns", bordercolor); de.getBox("i.box").setSize( "bl,br,bt,bb", bordersize ); de.commit(); var dc = dgt.getContainer() var de = dc.getProperties().edit(); de.setBoolean("newOnGrid" ,true ); de.setBoolean("allowDualPosition" ,true ); de.setBoolean("useDesktopSize" ,false); de.setString ("scrollingDirection","Y"); de.setString ("gridPColumnMode" ,"NUM"); de.setString ("gridLColumnMode" ,"NUM"); de.setString ("gridPRowMode" ,"NUM"); de.setString ("gridLRowMode" ,"NUM"); de.setInteger("gridPColumnNum" ,1); de.setInteger("gridLColumnNum" ,1); de.setInteger("gridPRowNum" ,1); de.setInteger("gridLRowNum" ,1); de.getBox("i.box").setColor("bl,br,bt,bb", "ns", bordercolor); de.setBoolean("i.enabled" , false); de.commit(); if ( i == 2) { var newItem = dc.addShortcut( ":" ,new Intent(),0,0); newItem.setCell(0, 0, 1, 1, true); newItem.setBoxBackground(background, "n", true); var ed = newItem.getProperties().edit(); ed.setBoolean("s.iconVisibility" , false); ed.setBoolean("s.labelVisibility", true ); ed.setInteger("s.labelFontColor", labelcolor); ed.setFloat("s.labelFontSize", labelsize); ed.setString( "s.labelFontTypeFace", labelfont); ed.setString( "s.labelFontStyle", labelstyle); ed.setBoolean("s.labelShadow", labelshadow ); ed.setFloat( "s.labelShadowRadius", shadowradius); ed.setFloat( "s.labelShadowOffsetX", offsetx); ed.setFloat( "s.labelShadowOffsetY", offsety); ed.setInteger("s.labelShadowColor", shadowcolor); ed.setBoolean("i.enabled" , false); ed.commit(); var newItem = dc.addShortcut( "/" ,new Intent(),0,0); newItem.setCell(0, 1, 1, 2, true); newItem.setBoxBackground(background, "n", true); var ed = newItem.getProperties().edit(); ed.setBoolean("s.iconVisibility" , false); ed.setBoolean("s.labelVisibility", true ); ed.setInteger("s.labelFontColor", labelcolor); ed.setFloat("s.labelFontSize", labelsize); ed.setString( "s.labelFontTypeFace", labelfont); ed.setString( "s.labelFontStyle", labelstyle); ed.setBoolean("s.labelShadow", labelshadow ); ed.setFloat( "s.labelShadowRadius", shadowradius); ed.setFloat( "s.labelShadowOffsetX", offsetx); ed.setFloat( "s.labelShadowOffsetY", offsety); ed.setInteger("s.labelShadowColor", shadowcolor); ed.setBoolean("i.enabled" , false); ed.commit(); } else for(var j=0;j<=9;++j) { var newItem = dc.addShortcut( j ,new Intent(),0,0); newItem.setCell(0, j, 1, (j+1), true); newItem.setBoxBackground(background, "n", true); var ed = newItem.getProperties().edit(); ed.setBoolean("s.iconVisibility" , false); ed.setBoolean("s.labelVisibility", true ); ed.setInteger("s.labelFontColor", labelcolor); ed.setFloat("s.labelFontSize", labelsize); ed.setString( "s.labelFontTypeFace", labelfont); ed.setString( "s.labelFontStyle", labelstyle); ed.setBoolean("s.labelShadow", labelshadow ); ed.setFloat( "s.labelShadowRadius", shadowradius); ed.setFloat( "s.labelShadowOffsetX", offsetx); ed.setFloat( "s.labelShadowOffsetY", offsety); ed.setInteger("s.labelShadowColor", shadowcolor); ed.setBoolean("i.enabled" , false); ed.commit(); } } var click = cc.addShortcut("click", new Intent(), 0, 0); click.setCell(0, 0, 5, 1, true); var pe = click.getProperties().edit(); pe.setBoolean("s.iconVisibility", false); pe.setBoolean("s.labelVisibility", false); pe.setEventHandler("i.resumed", EventHandler.RUN_SCRIPT, RC_script.getId()); pe.setEventHandler("i.paused", EventHandler.RUN_SCRIPT, RC_script.getId()); pe.setEventHandler("i.tap", EventHandler.RUN_SCRIPT, RC_script.getId()); pe.setEventHandler("i.swipeUp", EventHandler.RUN_SCRIPT, RC_script.getId()); pe.setEventHandler("i.swipeDown", EventHandler.RUN_SCRIPT, RC_script.getId()); pe.commit(); // hack: the resumed event is triggered as soon as the item is created, hence before the "i.resumed" event handler is set // the following lines will effectively pause and resume the launcher, and start the clock var intent = new Intent(); intent.setClassName( "net.pierrox.lightning_launcher_extreme", "net.pierrox.lightning_launcher.activities.Dashboard"); intent['putExtra(java.lang.String,int)']("p", LL.getCurrentDesktop().getId()); LL.startActivity(intent); </code> ======= Roll-Clock ======= <code> var Period = 3500; var evnt = LL.getEvent(); var item = evnt.getItem(); var aktie = evnt.getSource(); var dgt0 = item.getParent().getItemByName("dgt0").getContainer(); var dgt1 = item.getParent().getItemByName("dgt1").getContainer(); var dgt2 = item.getParent().getItemByName("dgt2").getContainer(); var dgt3 = item.getParent().getItemByName("dgt3").getContainer(); var dgt4 = item.getParent().getItemByName("dgt4").getContainer(); var Hgt = dgt2.getCellHeight(); var curSt = dgt2.getPositionY(); var newSt = 0; TimerCancel(); if (aktie == "I_PAUSED") { return;}; if (aktie == "I_RESUMED") { refresh(); }; if (aktie == "I_CLICK") { switchState(); }; if (aktie == "I_SWIPE_UP") { curSt=0; switchState(); }; if (aktie == "I_SWIPE_DOWN") { curSt=1; switchState(); }; function refresh() { newSt = 0; setPos(); // reseting the timer is in setPos-function. }; function TimerCancel() { var id = item.getTag(); if (id != null) { clearTimeout(parseInt(id)); }; }; function switchState() { if (curSt == 0) { newSt = 1; } else { newSt = 0; }; setPos(); }; function setPos() // get current Date and Time { var dt = new Date(); if (newSt == 0) { var dt01 = dt.getHours().toString().split(""); var dt34 = dt.getMinutes().toString().split(""); } else { var dt01 = dt.getDate().toString().split(""); var dt34 = (1 + dt.getMonth()).toString().split(""); } if (dt01.length == 1) {dt01.unshift(0);}; if (dt34.length == 1) {dt34.unshift(0);}; // move all containers to their position. Hgt = dgt2.getCellHeight(); dgt0.setPosition(0,( dt01[0] * Hgt),1,true); dgt1.setPosition(0,( dt01[1] * Hgt),1,true); dgt2.setPosition(0,( newSt * Hgt),1,true); dgt3.setPosition(0,( dt34[0] * Hgt),1,true); dgt4.setPosition(0,( dt34[1] * Hgt),1,true); // set the timer again item.setTag(setTimeout(refresh, Period)); }; </code>

script_roll_clock.txt · Last modified: 2015/04/29 20:53 by jappie