Akadémia alcsoport

Keresés

Windows7 újdonságai – Fejlesztői Tutorial II. Nyíl

A feladat egy része előre el van készítve. Nyisd meg a mellékelt solutiont, és miután lefordítottad és futtattad az alkalmazást (F5) az alábbi kép fog fogadni.

FIGYELEM! A solution és hozzá tartozó fájlokat innen tölthetitek le.

1 

A lejátszó egy egyszerű, de teljes értékű media player. Főbb funkcionalitásai a következők:

  • Audio és videó fájlok megnyitása, lejátszása.

  • Play, Pause, Stop funkciól

  • Beletekerhetünk a videóba.

  • Hangerő szabályzó

  • Balance szabályzó.

Egyszerű működőképes lejátszó, de jó volna, ha felkészítenénk arra, hogy a Windows7 felhasználói felületének újdonságait is kihasználja.  Először a megújult tálcával ismerkedünk meg, és ennek a lehetőségeivel egészítjük ki a fentebbi alkalmazást.

A beillesztendő kódok előtt van egy Task szöveg elem. Ez jelöli azt, hogy a C# kódba hova is kell tennünk a kódokat. A forrásfájlba a legtöbb beillesztendő elem helye előtt található egy Task – x  Pl: (Task – 1.3) comment, amely a kezdő .NET es fejlesztőket segíti, hogy az adott kódsort, hova is kell illesztenie.

A kódok után pedig található egy néhány soros magyarázat, hogy az adott kód mit is csinál pontosan. Ezek a magyarázatok az alábbi ikonnal vannak ellátva.  

Taskbar – Avagy a tálca forradalma

A tutorial első részében az új tálcával foglalkozunk. A tálca több tekintetben is megváltozott. Egy korszak zárult le vele, hisz közel 2 évtizeden keresztül a hagyományosnak tekinthető tálcát használtuk a Windowsokban, ahol csak az éppen futó alkalmazásokat tudtuk elérni, váltani köztük, vagy esetleg a helyi menüt alkalmazva parancsokat tudtunk elhelyezni az alkalmazáshoz (Igaz utóbbi kivitelezése elég problémás feladat volt).  De immár az új tálcával kinyíltak a lehetőségek a fejlesztők előtt. Funkcionalitást, látványos elemeket adhatunk egyszerűen hozzá, ezzel is fokozva a felhasználói élményt és kényelmet.

Természetesen a tálcának a használata is megváltozott ezzel. Az alábbi ábra az új tálca állapotait szemlélteti:

2

Láthatjuk, hogy mind vizuálisan mind felhasználói tekintetben is változott a tálca, és hogy minden állapotnak külön vizuális visszacsatolása van a felhasználó felé, ezzel is segítve a felhasználó eligazodását a futó alkalmazásai között.  

De most már ismerkedjünk meg azzal, hogy milyen kényelmi és funkcionális szolgáltatásokat is nyújt a fejlesztők számára az új tálca.

Taskbar állapot ikonok

3 Sokszor előfordul az, hogy szeretnénk jelezni a felhasználó számára, hogy az alkalmazás jelenleg milyen állapotban van (Lásd: Windows Live Messenger tálcán lévő állapot jelzője) vagy épp azt, hogy történt-e valamilyen különleges esemény. Eddig nem igazán tudtuk értesíteni a felhasználót a tálcán. Esetleg villogtattuk a tálcán lévő program ikonját, de különösebb lehetőségünk nem igazán volt. Az új Windows 7 tálca ezen a téren is segítségünkre lehet, ugyanis az alkalmazásunk ikon területét különböző állapotjelző ikonokkal is felvértezhetjük, így rögtön láthatja a felhasználó, hogy történt-e valamilyen különleges esemény a programunkkal.

Az alábbi feladatban a média lejátszó állapotáról fogjuk értesíteni a felhasználót. Amennyiben a hangerőszabályzó értéke nulla, abban az esetben a tálcán ezt jelezni fogjuk, így a felhasználó rögtön értesülhet az alkalmazásunk jelenlegi „néma” állapotáról.

1.      Nyissuk meg a MediaWindow.xaml.cs állományt.

2.       Navigáljunk el sliderVolume_DragCompleted eseményhez.

(Ez az esemény, akkor fog bekövetkezni, amikor a média lejátszónkon a hangerő szabályzó csúszkáját eltoljuk, és elengedjük.)

3.      Egészítsük ki az eseményt az alábbi kóddal: (Task -1)

if (TaskbarManager.IsPlatformSupported)
{
    if (sliderVolume.Value == 0)
    {
        Icon icon = new Icon("Images\\mute.ico");
        TaskbarManager.Instance.SetOverlayIcon(icon, "Mute");
    }
    else
    {
         TaskbarManager.Instance.SetOverlayIcon(null, null);
    }
}

info

Ez a kódrészlet annyit csinál, hogy először megvizsgálja, hogy az adott platform támogatja-e azt, hogy a Taskbar újdonságait használjuk. Értelemszerűen, ezek az újdonságok nem működnek például Windows XP-n, így ott kivételt dobna a program. Célszerű mindig ellenőrizni, hogy támogatott-e az adott platformon.

Ezt követően megvizsgáljuk a sliderVolume (Hangerőszabályzó csúszka) értékét. Amennyiben az érték 0, tehát nincs hang akkor töltsünk be egy icon-t (ez az icon egy resourceként definiált ikon) majd a TaskbarManager.Instance.SetOverlayIcon metódusa segítségével adjuk át az ikont, valamint ha szeretnénk, akkor ToolTipet is megadhatunk. Ebben az esetben a tooltip a „Mute” szót fogja kiírni.  Ellenkező esetben, ha elmozgatjuk a hangerő szabályzó csúszkáját, és nem a 0-án hagyjuk az értékét akkor az ikont eltávolítjuk a tálcáról. Ekkor a TaskbarManager.Instance.SetOverlayIcon metódus ikon tulajdonságának null értéket adunk át.

 

4.      Ha ezzel megvagyunk, fordítsuk le az alkalmazást (Ctrl+Shift+B) és futtassuk (F5). 

5.      Miután elindult az alkalmazás töltsünk be egy filmet. Indítsuk el a Play gombra kattintva.

6.       Állítsuk a hangerőszabályzót 0 állapotba. Toljuk a csúszkát a bal sarokba.  Ekkor az alább látható ikon jelenik meg a tálcán az alkalmazásunk jobb alsó sarkában. Ha elvisszük a 0 értékről a hangerőszabályzó csúszkát, akkor az ikont eltávolítjuk.

9

Ikonnal

91

Ikon nélkül

 

ProgressBar a tálcán

Az eddigi Windows operációs rendszerekben, amíg egy hosszabb feladat tartott egy alkalmazásnál (PL: Internet Explorrel való fájl letöltés), akkor nem igazán tudtuk interaktívan értesíteni a felhasználót, hogy a feladat éppen hol is tart. Esetlegesen volt egy ablakunk, amiben volt egy Progressbar, ami egy becslést adott a felhasználó számára, hogy a feladat hol is tart éppen. De nagyobb, hosszadalmasabb feladatoknál a felhasználó csak lerakta a tálcára és várt. Jó esetben nem feledkezett el arról, hogy van egy hosszadalmas taskja. Ha meg megfeledkezett, akkor akár órák múlva jött rá, hogy bizony az a feladat már lefutott, csak ő elfelejtett ránézni. A Windows 7 új tálcája ezen a téren is változást hozott. Immár, ha hosszadalmasabb feladatot végez az adott program, akkor a tálca területét is felhasználhatja progressbarként. Ilyenkor a felhasználó, ha csak ránéz a tálcára, rögtön kap egy vizuális visszacsatolást, hogy a feladata éppen hol is tart.  Ezt a funkciót fogjuk mi is implementálni a média lejátszónál. Nem valami stílszerűen, az éppen lejátszott videó idő csuszkáját ábrázoljuk vele a taskbarunk progressbarján.

1.      Nyissuk meg a MediaWindow.xaml.cs állományt.

2.      Navigáljunk el sliderTime_ValueChanged eseményhez, és adjuk hozzá az alábbi kódsorokat. (Task -2)

(Ez az esemény, akkor fog bekövetkezni, amikor a média lejátszónkon a TimeLine szabályzó csúszkáját eltoljuk, és felengedjük.)

if (TaskbarManager.IsPlatformSupported)

{

TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal);

TaskbarManager.Instance.SetProgressValue((int)sliderTime.Value, (int)sliderTime.Maximum);

}

clip_image009 
A kód csupán annyit csinál, hogy beállítja, milyen Statusbar típust használjunk. 5 féle típus létezik, a Normal, Error, Indeterminate, No Progress, Paused.  Ezt követően beállítjuk a statusbar jelnlegi értékét. Ez jelen esetben az időcsúszka aktuális értéke. Maximális értéke pedig a csúszka maximuma.

3.      Fordítsuk le az alkalmazást (Ctrl+Shift+B) és futtassuk (F5).  

4.      41 Miután elindult az alkalmazás, töltsünk be egy filmet. Indítsuk el a Play gombra kattintva. Ekkor a tálcán az alkalmazásunk ikonjában egy progressbar fog elindulni, és annak függvényében módosul, amennyire az idő változik a filmen.

Thumnail Toolbar5

 Szintén egy hasznos újdonság az, hogy parancs felületeket kapunk Windows 7 tálcájától. Ez a funkció számunkra lehetővé teszi, hogy már a betekintőből irányíthassuk az alkalmazásunkat, mintha egy távirányítónk lenne a tálcán az alkalmazásunkhoz.  Erre kitűnő példa a Windows Media Player legújabb 12- es változatta.

Az ábrán is kitűnően látszik, hogy akár a betekintőből is indíthatjuk, vagy épp léptethetjük a Windows Media Playert. Így ahhoz, hogy a legfontosabb műveleteket elvégezzük, nem kell megnyitni az alkalmazást, elég csak fölé vinni az egeret a tálcán és a betekintőben meg is jelenik az előre definiált vezérlő felület. Ez egy nagyon jó és hasznos kényelmi funkció, annyira, hogy a Windows 7 beta és RC felméréseiből is kiderült, hogy a felhasználók ezt az újdonságot ítélték az egyik legkényelmesebb tálca funkciónak, és meglepően hamar elkezdték ezt a funkciót hétköznapi szinten is használni.

Ennek tudatában célszerű a mi alkalmazásunkat is felkészíteni, hasonló funkcionalitással. Hisz az egyik legfontosabb elvárás mindig az, hogy a felhasználónak mindig könnyű legyen az élete, és az alkalmazásunkat a lehető legegyszerűbben tudja használni.

Így most mi is felkészítjük a média lejátszónkat hasonló funkciókkal.

1.      Nyissuk meg a MediaWindow.xaml.cs állományt.

2.      Adjuk hozzá az alábbi sorokat a MediaWindow konstruktora elé. Az alábbi ThumnailButtonokat fogjuk később példányosítani. (Task - 3.1)

private ThumbnailToolbarButton btnMiniPlay;
private ThumbnailToolbarButton btnMiniStop;

private ThumbnailToolbarButton btnMiniPause;

3.      Navigáljunk el az AddButtonToThumbnail metódushoz, és adjuk hozzá az alábbi kódot. (Task – 3.2)

if (TaskbarManager.IsPlatformSupported)
{
    btnMiniPlay = new ThumbnailToolbarButton(Properties.Resources.Play, "Play");
    btnMiniPlay.Enabled = false;
    btnMiniPlay.Click += new EventHandler(btnMiniPlay_Click);

 

    btnMiniStop = new ThumbnailToolbarButton(Properties.Resources.Stop, "Stop");
    btnMiniStop.Enabled = false;
    btnMiniStop.Click += new EventHandler(btnMiniStop_Click);

 

    btnMiniPause = new ThumbnailToolbarButton(Properties.Resources.Pause, "Pause");
    btnMiniPause.Enabled = false;
    btnMiniPause.Click += new EventHandler(btnMiniPause_Click);

   TaskbarManager.Instance.ThumbnailToolbars.AddButtons(new WindowInteropHelper(Application.Current.MainWindow).Handle,

        btnMiniPlay, btnMiniPause, btnMiniStop);

}

 

info A kód a szokásos ellenőrzéssel kezdődik. Mégpedig azzal, hogy az adott platform támogatja-e, hogy mi gombokat adjunk hozzá a betekintő nézethez.  Ezt követően példányosítunk 3 ThumbnailToolBarButtont. Egy Playt, egy Stop-ot és egy Pause-t. A ThumbnailToolBarButton konstruktorában megadjuk, hogy milyen képet jelenítsen meg a toolbaron valamint a Tooltip feliratát is meghatározzuk. A képek az alkalmazás egy resource fájljában vannak, így könnyedén elérhetjük őket a kódból.  Ezt követően letiltjuk a gombokat, hogy amíg, nem lehet addig ne is használjuk őket.  Majd feliratkozunk a Click eseményükre. Az esemény feliratkozás nagyon egyszerüen történhet a Visual Studio segítségével. Amikor a += kiírjuk nyomjunk 2x a Tab-ra és a studio legenerálja számunkra az adott eseményt egy majdnem üres törzzsel. Utolsó lépésként pedig hozzáadjuk a gombjainkat a ThumbnailToolbar-hoz. Innentől kezdeve a gombjaink megjelennek a betekintő nézet alján.

 

4.      Ha az eseményeket legeneráltuk, akkor a törzsét meg kell határoznunk. A megfelelő funkciók már egy-egy előre definiált metódusba vannak elhelyezve, így csak meg kell hívni őket. (Task -3.3)

private void btnMiniPlay_Click(object sender, EventArgs e)
{
    Play();
}

 

private void btnMiniPause_Click(object sender, EventArgs e)
{
    Pause();
}

 

private void btnMiniStop_Click(object sender, EventArgs e)
{
    Stop();
}

 6

5.      A btnOpen_Click eseményhez adjuk hozzá az alábbi sorokat, ezzel engedélyezzük az ThumbnailButtonokat, ha egy fájlt előtte már betöltöttünk. (Task – 3.4)

btnMiniPause.Enabled = true;
btnMiniPlay.Enabled = true;
btnMiniStop.Enabled = true; 

6.      Fordítsuk le az alkalmazást (Ctrl+Shift+B) és futtassuk (F5).  

7.      Miután elindult az alkalmazás, töltsünk be egy filmet, és a filmet most a betekintő nézetből indítsuk el. Vigyük az egérkurzort az alkalmazás ikonja fölé és kattintsunk a Play gombra. Ekkor a film lejátszásra kerül. Figyeljük meg azt is, hogy magában a betekintő nézetben is láthatjuk a filmet. Ezt már a Windows Vistától tudjuk, de a navigálás már Windows 7es újdonság.7

Taskbar Jump List

 Az, hogy parancsokat adhatunk ki a betekintő nézetben hasznos, viszont nem mindig elég, hisz a hely kicsi, és inkább csak a legfontosabb parancsokat helyezzük el a betekintő nézetben. Viszont szükségünk lehet egy jóval nagyobb funkcionalitást nyújtó helyre. Erre és ehhez hasonló esetekre találták ki a Jump Listet, vagy durva magyarsággal az ugró listát. Ez a menüelem akkor jelenik meg, ha az alkalmazás ikonjára jobb egérgombbal kattintunk a tálcán.

Itt viszont már szép számmal elhelyezhetünk menüpontokat. Például a Windows Live Messenger –nél, egyszerűen változtathatunk jelenlegi állapotunkon, indíthatunk el más alkalmazásokat vagy épp a leggyakrabban használatos elemeket találhatjuk a listában (Ezeket a menüket a Start menüben is megtalálhatjuk). Ez szintén egy olyan újdonság, amely a felhasználó életét könnyebbé teheti, így hát tegyük azzá avval, hogy az általunk készített Media playert is felkészítjük erre. A feladatunkban az egyszerűség kedvéért, csak egy külső alkalmazást fogunk elindítani a JumpListből.

1.      Nyissuk meg a MediaWindow.xaml.cs állományt.

2.      Navigáljunk el az AddJumpList metódushoz.

3.      Adjuk hozzá a következő sorokat (Task - 4)

if (TaskbarManager.IsPlatformSupported)
{
    string mediaPlayerPath = @"C:\Program Files\Windows Media Player\wmplayer.exe";
    IJumpListTask myTask = new JumpListLink(mediaPlayerPath, "Windows Media Player")
    {
        IconReference = new Microsoft.WindowsAPICodePack.Shell.IconReference(mediaPlayerPath, 0)
    };               
    JumpList jumplist = JumpList.CreateJumpList();
    jumplist.AddUserTasks(myTask);
    jumplist.Refresh();
}

 

info A kód megvizsgálja, hogy vajon a platform amin futatjuk az alkalmazást az megfelelő-e? Ha igen akkor készítünk egy JumpListLinket, amelynek megadjuk az elérési útvonalat, amit meg kell nyitnia, valamint a címkét ami meg fog jelenni a JumpListben. Ezt követően az IconReference segítségével meghatározzuk az elem ikonját, ami jelen esetben ugyan abból a forrásból származik mint maga a cél alkalmazás.

Készítünk egy JumpList-et úgy, hogy meghívjuk a JumpList CreateJumpList metódusát, majd átadjuk a számára az előbb létrehozott JumpListTaskot.

 

Opcionális

Ha a leggyakoribb vagy a mostanában használt elemeket, fájlokat is beleszeretnéd rakni a JumpListbe akkor a következőt kell beállítanod.

jumplist.KnownCategoryToDisplay = JumpListKnownCategoryType.Recent

Ezt követően hozzá adhatod az elemeket a Recenthez az AddToRecent metódus segítségével.

jumplist.AddToRecent(…);

8

FIGYELEM! Ebben az esetben regisztrálni kell az adott fájltípust az alkalmazásunkhoz!

4.      Fordítsuk le az alkalmazást (ctrl+shift+b) és indítsuk el (F5)

5.      Kattintsunk a tálcán az alkalmazás ikonjára jobb egérgombbal, ekkor az alábbi kép fog fogadni minket. Kattintsunk a Windows Media Player ikonjára. Ekkor a Media Player be fog töltődni.


Elküldve 2010. 01. 03. 21:07 by Turoczy Attila Megtekintve: 505 alkalommal