Kezdőoldal > .NET, Windows7 > Windows7 –es alkalmazások fejlesztése – Part I. – Taskbar

Windows7 –es alkalmazások fejlesztése – Part I. – Taskbar

2010. április 19. hétfő Hozzászólás Go to comments

Tavaly ősszél végigjártuk az országot a Windows7 fejlesztés mikéntjével kapcsolatban. Ki is adtunk egy tutorialt. Ezt a tutorialt publikálnám itt is. Az első feladatnál a Windows7 taskbar innovációit ismerjük meg közelebbről.

A Start Solution innen tölthető le

Feladat ismertetése

Az első feladatunk egy WPF-ben készült videó lejátszó alkalmazást Windows7 által nyújtott lehetőségekkel kibővíteni. A Taskbar tulajdonságait felhasználjuk, ezáltal kihasználjuk a Windows 7-ben megjelent új felhasználói felületek egy részét. Ezenkívül felkészítjük az alkalmazásunkat, hogy a User Account Control  (UAC) -al is együtt tudjon működni, hisz ez az új biztonsági technika sok bosszúságot tud okozni a fejlesztőknek, pedig látni fogjuk, hogy nem is olyan bonyolult az UAC-al együtt működni. Ezen kívül, még néhány apróbb feladat segítségével bemutatásra kerülnek a lényegesebb fejlesztői újdonságok is.

Szoftver követelmények

A feladat teljesítéséhez, az alábbi szoftverkomponensekre lesz szükség:

  • Microsoft® Visual Studio 2008 SP1
  • Microsoft® .NET 3.5 SP1
  • Microsoft® Windows 7
  • Windows® API Code Pack for Microsoft® .NET Framework

·         A grafikus kártyának támogatnia kell a Windows® Aero szolgáltatást

·         Windows Media Player 10 vagy nagyobb (Windows7 esetében ez adott)

Minden szükséges szoftvert ingyenesen beszerezhetsz a Microsoft MSDNAA programjából, amennyiben egy felsőoktatási intézményben tanulsz és legalább 1 kreditnyi informatikai tárgyat felvettél, jogosult vagy a szoftverek ingyenes használatára. A szoftverek oktatási és kutatási célra használhatók, amíg az adott intézmény tagja vagy. Közel 100 Microsoft terméket tölthetsz le és használhatsz ingyen. (Windows 7, Windows Server 2003/2008, Microsoft Visual Studio 2008, SQL Server, BizTalk stb.)

További információk az MSDNAA programról a Devportál – Akadémia szakmai közösség alatt találsz.  Amennyiben kérdésed van az MSDNAA programmal kapcsolatban a Devportál fórumán felteheted.

 


 

Fejlesztés

Ahhoz, hogy az újdonságokat kihasználjuk, szükségünk lesz a Windows® API Code Pack for Microsoft® .NET Framework dll-re. Ennek a dll-nek a segítségével tudjuk elérni legegyszerűbben a Windows 7 (illetve a Windows Vista) featurer-eket managelt kódból. Persze ezeket az újdonságokat el lehetne érni más úton is, de .NET alól így lesz a legegyszerűbb.

Ez a DLL számos olyan újdonságot tartalmaz, ami a Windows 7 –ben, illetve Windows Vistában megjelent. A tálcakezeléstől kezdve, a testre szabható dialógusokig, vagy éppen az alkalmazás helyreállításáig minden szükséges segítséget biztosít számunkra.

 

Az alábbi lista tömören összefoglalja, hogy ez a szerelvény mit is biztosít a fejlesztők számára:

  • ·         Windows 7 tálca (Jump List, Icon, Progress Bar, betekintő nézet stb.)
  • ·         Windows Shell Search API támogatás
  • ·         Explorer Browser Control
  • ·         Windows 7 library-k támogatása
  • ·         Windows Vista and Windows 7 dialógusok.
  • ·         Windows Vista and Windows 7 Task dialógusok.
  • ·        Direct3D 11.0, Direct3D 10.1/10.0, DXGI 1.0/1.1, Direct2D 1.0, DirectWrite, Windows Imaging Component (WIC) API-k. (DirectWrite és WIC részlegesen támogatott)
  • ·         Sensor Platform API
  • ·         Power Management API
  • ·         Application Restart and Recovery API
  • ·         Network List Manager API

A Windows® API Code Pack for Microsoft® .NET Framework –ről a project oldalán részletesebb információkat és dokumentációt is találhatunk. Weboldal: http://code.msdn.microsoft.com/WindowsAPICodePack

Feladatunk első részében a Windows 7 tálcájával ismerkedünk meg, míg továbbiakban szemezgetve néhány egyéb tulajdonságot tekintünk meg közelebbről.

Feladat

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 az alábbi linkről is letöltheted:

http://devportal.hu

Clipboard02

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:

Clipboard03

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

Clipboard04 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);

    }

}

 

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.

clip_image013

Ikonnal

clip_image015

Ikon nélkül

 

ProgressBar a tálcán

Clipboard07

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);

}

 
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).

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

Advertisements
Kategóriák:.NET, Windows7
  1. Még nincs hozzászólás.
  1. No trackbacks yet.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s

%d blogger ezt kedveli: