Le novità di Windows 7 per gli sviluppatori

6 pagine in totale: <<Indietro 1 [2] 3 4 5 6 Avanti >>

E' possibile istruire la task bar per mostrare gli elementi frequenti o quelli recenti, una volta creata la classe JumpList per una specifica finestra/app.

// Jump list per la finestra corrente 
jumpList = JumpList.CreateJumpListForIndividualWindow(null, this); 
jumpList.KnownCategoryToDisplay = JumpListKnownCategoryType.Frequent;

Eventualmente è possibile aggiungere manualmente un file tra la lista dei file recenti:

jumpList.AddToRecent(@"c:\mioFile.miaEstensione");

La pressione da parte dell'utente causa l'apertura del file con la relativa applicazione associata che presumibilmente è l'applicazione sviluppata.

I link invece sono collegamenti ad applicazioni con eventuali argomenti che causano quindi l'apertura di un nuovo processo. Questi possono essere inseriti all'interno della categoria predefinita "Task" o all'interno di una o più categorie personalizzate che si possono creare. Nel primo caso basta utilizzare il metodo AddUserTasks istanziando l'oggetto JumpListLink in base al percorso completo dell'eseguibile, eventualmente specificando l'icona, gli argomenti e la directory di lavoro.

// Link tra i task standard su app/shell 
jumpList.AddUserTasks(new JumpListLink(@"c:\windows\notepad.exe", "Apri notepad"));

Per creare una categoria invece si utilizza il metodo AddCustomCategories specificando solo il nome della categoria poiché non è possibile personalizzare il layout il quale dev'essere standard. Nella categoria custom è possibile inserire sia link che item che possono venire utili anche per creare azioni da eseguire direttamente sull'applicazione in esecuzione. Per farlo è possibile sfruttare gli argomenti da passare al nuovo processo che verrà eseguito:

// Categoria personalizzata 
JumpListCustomCategory jc = new JumpListCustomCategory("Categoria personalizzata"); 
jumpList.AddCustomCategories(jc); 
 
string appPath = Environment.CommandLine.Substring(1, Environment.CommandLine.Length - 3); 
 
// Task personalizzato che punta all'applicazione stessa 
JumpListLink item = new JumpListLink(appPath, "Task personalizzato"); 
item.Arguments = "myTask"; 
jc.AddJumpListItems(item);

Nel codice precedente viene inserito un link che punta al processo stesso specificando un argomento. Normalmente questa causa l'apertura di un nuovo processo, ma è possibile sfruttare tecniche basate su mutex per impedire che si apra una nuova finestra e notificando il processo originale del task da eseguire (tecnica usata da applicazioni come Live Messenger). Nel codice allegato all'articolo è presente un esempio che fa uso di mutex e di un servizio WCF basato su named pipe per eseguire il task sul processo principale. Alla fine il risultato che si ottiene nella jump list è il seguente:

Jumplist personalizzata

Le thumbnail delle finestre

Restando sempre nel tema della task bar, una nuova caratteristica è rappresentata dalla thumbnail, una piccola finestra che mostra un'anteprima del contenuto della finestra. Il suo compito è facilitare il passaggio tra un'applicazione e l'altra e viene sfruttata ampiamente da Internet Explorer 8, prodotto nativo con Windows 7. Normalmente infatti la taskbar redirige l'output della finestra principale di un processo direttamente sulla thumbnail principale, ma è invece possibile personalizzare questo comportamento e aggiungere quante thumbnail si vogliono secondo le proprie logiche, così come fa Internet Explorer per ogni tab di navigazione corrente.

Per personalizzare la thumbnail con le Windows API code pack si ha disposizione la classe TabbedThumbnailManager che permette di indicare uno o più tab in riferimento ad un handle o ad un elemento WPF. Nel primo caso il lavoro viene tutto compiuto dal sistema operativo che cattura ogni paint della finestra e ne crea una versione rimpicciolita. Questa tecnica è la più prestazionale e l'unica opzione che si ha disposizione è restringere la zona da mostrare nella thumbnail attraverso il metodo SetThumbnailClip. E' possibile però ottenere più versatilità creando l'oggetto TabbedThumbnail su un controllo WPF e ottenendo così automaticamente uno screenshot di un oggetto:

tabbedThumbnail = new TabbedThumbnail(this, this.mioControllo, new Vector()); 
tabbedThumbnail.Tooltip = "Tooltip thumbnail"; 
tabbedThumbnail.Title = "Titolo thumbnail"; 
 
// Aggiungo la thumbnail all'applicazione corrente 
TaskbarManager.Instance.TabbedThumbnail.AddThumbnailPreview(tabbedThumbnail); 
TaskbarManager.Instance.TabbedThumbnail.SetActiveTab(tabbedThumbnail);

Nell'esempio precedente viene creato un TabbedThumbnail sulla finestra controllo catturando il rendering del controllo. Vengono inoltre impostati il tooltip da mostrare e il titolo, per poi aggiungere l'oggetto con il metodo AddThumbnailPreview. Da questo momento la thumbnail mostrata sarà sempre quella scattata all'atto della preparazione, perciò ogni qual volta si vuole aggiornare il rendering da mostrare è necessario chiamare il metodo TaskbarManager.Instance.TabbedThumbnail.InvalidateThumbnails(). Utilizzando invece il metodo ClippingRectangle è possibile specificare la regione del controllo da utilizzare come thumb. Un ipotetico utilizzo può essere quello di mostrare nella thumb solo una parte della finestra dell'applicazione, focalizzandosi sul controllo dove il mouse e la tastiera sono posizionati.

Nel codice allegato è presente l'intero codice per fare ciò sfruttando un timer che viene scatenato ogni qual volta che si muove il mouse. Il risultato che si ottiene è il seguente:

Thumbnail personalizzata

Come si può vedere, viene illustrata solo una parte della finestra, posizionando al centro la TextBox nel quale si stava scrivendo.

6 pagine in totale: <<Indietro 1 [2] 3 4 5 6 Avanti >>

Attenzione: Questo articolo contiene un allegato.

Contenuti dell'articolo

Commenti

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Segnala su:  Facebook  Messenger  Twitter        |

TUTORIALS

Silverlight

.NET Framework

Accesso ai dati

Architettura e design software

Windows Azure

TOP TEN ARTICOLI
ARTICOLI VIA E-EMAIL

Iscriviti alla nostra newsletter nuoviarticoli per ricevere via e-mail le notifiche!

Iscrivi subito! »»»

MEDIA
IN EVIDENZA
MISC