Freigeben über


Windows Vista Sidebar Gadgets på 30 minuter #4

För att se alla postningar om Windows Sidebar Gadgets så klickar du här.

Docked/Undocked

Hittills har jag skrivit att en Gadget körs och tillhör Sidebar. Detta är sant med en viss modifikation, alla Gadgets körs i Sibebars runtime, men de måste inte visas och befinna sig i Sidebar. Alla Gadgets kan frikopplas från Sidebar genom att man håller ner vänster musknapp på sin Gadget och drar ut den från sin Sidebar. Nu kan man positionera den var man vill på Skrivbordet.

En finess med detta är att dels kan användaren lägga sin Gadget var man vill, men framförallt så kan utvecklaren utnyttja funktionaliteten att en Gadget som är frikopplad från Sidebar också kan ha en annan storlek än de 130 pixels i bredd som är maximalt när den är ihopkopplad med Sidebar.

En Gadget som är ihopkopplad med Sidebar kallas dockad/docked och en som är frikopplad kallas odockad/undocked.

Genom att i sin Gadget använda de inbyggda API:er som är åtkomliga för en Gadget via script så kan man kolla om en Gadget är docked/undocked och därefter ändra storleken på sin Gadget via klassisk DHTML. Namnrymden man använder är ”System.Gadget”.

Följande rad JavaScript returnerar sant/falskt för huruvida Gadget:en är docked/undocked:

System.Gadget.docked

Genom att binda en funktion till de händelsehanterare/event handlers som finns så kan man enkelt justera storleken på sin Gadget efter hur användaren flyttar sin Gadget. Händelsehanterarna är följande vilka jag valt att få min JavaScript-funktion ”checkState” att trigga på:

System.Gadget.onDock = checkState;
System.Gadget.onUndock = checkState;

Genom att byta ut koden i sin fil "test.html" från föregående postning till nedanstående så får man en Gadget som kommer att se ut som på bilden i docked/undocked tillstånd.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="https://www.w3.org/1999/xhtml" >

<head>

<title>Test Gadget</title>

<style type="text/css">

body{

width: 130px;

height: 110px;

margin-top:0;

margin-left:0;

margin-right: 0;

margin-bottom: 0;

}

div.myContent{

width: 120px;

height: 100px;

background-color: #ff0000;

filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#666666', EndColorStr='#000000');

border: double 5px #ffffff;

}

p.myText{

font-family: verdana;

font-size: 24px;

font-weight: bold;

color: #ffffff;

text-align: center;

padding: 3px;

}

</style>

<script type="text/javascript" language="javascript">

function initGadget(){

checkState();

System.Gadget.onDock = checkState;

System.Gadget.onUndock = checkState;

}

function checkState()

{

if(!System.Gadget.docked)

{

undockedState();

}

else if (System.Gadget.docked)

{

dockedState();

}

}

function undockedState()

{

document.body.style.width=300;

document.body.style.height=200;

document.getElementById("content").style.width=290;

document.getElementById("content").style.height=190;

}

function dockedState()

{

document.body.style.width=130;

document.body.style.height=100;

document.getElementById("content").style.width=120;

document.getElementById("content").style.height=90;

}

</script>

</head>

<body onload="initGadget()">

<div id="content" class="myContent">

<p class="myText">Test<br />av<br />André</p>

</div>

</body>

</html>

Comments

  • Anonymous
    February 27, 2007
    Tjena André! Bra serie med artiklar om gadgets! Fortsätt så! Tänkte prova att slänga ut en fråga som jag undrat över, som kanske inte har med detta ämne direkt, men lite i alla fall. Vet du möjligtvis om det går att konfigurera så att Vistas Sidebar INTE tonar sig mot mörkt ute på kanten av skärmen? Jag vill att Sidebar skall vara helt genomskinlig. /Kristofer

  • Anonymous
    March 02, 2007
    Jag har inte sett någon info om detta någonstans. Ska kolla om jag kan hitta något, men jag tror inte man kan styra genomskinligheten.

  • Anonymous
    March 14, 2007
    The comment has been removed

  • Anonymous
    March 14, 2007
    The comment has been removed

  • Anonymous
    March 14, 2007
    The comment has been removed