Tomislav Bronzin Microsoft Regional Director & MVP CITUS Ltd. http://www.citusgrupa.com Session Code: CLI308
Download ReportTranscript Tomislav Bronzin Microsoft Regional Director & MVP CITUS Ltd. http://www.citusgrupa.com Session Code: CLI308
Tomislav Bronzin Microsoft Regional Director & MVP CITUS Ltd. http://www.citusgrupa.com Session Code: CLI308 About Tomislav Bronzin Microsoft Regional Director & MVP Software Architect – CITUS Ltd. Consultant and trainer on .NET architecture and development, http://www.citusgrupa.com METRO Trainer for Windows 7 and Unified Communication INETA Europe Vice President http://europe.ineta.org One of the leaders of Microsoft Community in Europe Recent projects: Protect@Work, Competence Manager, Forest Management, Smarthome, Speaker: TechEd Europe, DevDays , DevReach, WinDays, Sinergija, NT Konferenca, Vizija Contact at [email protected] Agenda How the taskbar evaluated? Design considerations for the new Taskbar Managed wrappers around native APIs: Windows API Code Pack .NET 4 use WPF Best practices and UI guidelines A word about compatibility Some Metrics The evolution was justified, but… More than 90% of sessions have fewer than 15 windows More than 70% of sessions have fewer than 10 Non-default taskbar options are used by 0-10% of users Design Goals For New Taskbar Single launch surface for frequent programs and destinations Easily controllable Clean, noise-free, and simple New opportunities for extensibility Taskbar Buttons Consolidation Quick launch Notification area icon Desktop shortcut Running application windows Running Not running Active Multiple windows and hover Taskbar Buttons Design considerations Only users can pin applications to the taskbar The icon’s hot-track color is the icon’s dominant color Test icons with high DPI Test with various themes and glass colors The New Taskbar …and beyond Windows API Code Pack for Microsoft .NET Framework Managed class library to ease .NET Framework access to Windows 7: Taskbar Jump Lists, Icon Overlay, Progress Bar, Tabbed Thumbnails, and Thumbnail Toolbars, Libraries, Known Folders, Sensor platform, etc and some Windows 7 & Vista features UAC, power management, restart and recovery, network awareness, Aero Glass and more Download it (with samples) from: http://code.msdn.microsoft.com/WindowsAPICodePack Windows API Code Pack for Microsoft .NET Framework Enables access to Windows 7 Taskbar APIs from managed code Contains the TaskbarManager class that wraps parts of the Windows Shell API Static functions to manage Jump Lists, set Application ID, custom switching, thumbnail buttons, and more Requirements: Windows 7 RTM + SDK for Win 7 RTM .NET Framework 3.5 SP1 How Are Windows Grouped? Enter: Application ID It’s a string, not a GUID Limited to 128 characters Naming convention – Company.Product.SubProduct.Version All your application components have it: Process, shortcut, window, taskbar button, document type Application ID Heuristics of determining the Application ID Application ID can “fall back” to a larger scope if needed Process Shortcut Windows Default computation Jump List Application ID Document Type Registrations Setting the Application ID Process-wide – affects all windows in the current process: TaskbarManager.Instance.ApplicationId = "MS.Taskbar.Concepts.1"; Window ID – affects only ONE window: TaskbarManager winTaskbar = TaskbarManager.Instance; winTaskbar.SetApplicationIdForSpecificWindow(winHandle, appID); (un)Grouping Windows Jump List It’s a mini Start menu Jump Lists A detailed look Pinned category Destinations (“nouns”) Known categories Custom categories Tasks (“verbs”) User tasks Taskbar tasks Jump Lists Design considerations Surface key destinations and tasks Recent and frequent are free Pinned is also free (if users use it) Respect items the user removes! Addictive: You don’t look for documents anywhere else! You also expect the common tasks to be there Customizing the Jump List Step 1: Get the free stuff to work Associate your program with the file extension RegisterFileAssociations( progId, registerInHKCU, appId, openWith, extensions ); Use common file dialogs CommonOpenFileDialog = ...; dialog.ShowDialog(); Use explicit recent document API JumpList jumpList = JumpList.CreateJumpList(); jumpList.AddToRecent(fileName); Customizing the Jump List Step 2: Adding tasks What would your user like to do? Launch your application with special arguments? Launch other applications? Tasks are IShellLink objects Rich shortcut semantics including arguments, working directory, icon, and so on. Customizing the Jump List Step 2: Adding tasks JumpList jumpList; jumpList.AddUserTasks(new JumpListLink(System.IO.Path.Combine(systemFolder, "notepad.exe"), "Open Notepad"); jumpList.AddUserTasks(new JumpListSeparator()); jumpList.Refresh(); Tasks and destinations …in a Jump List Customizing the Jump List Step 3: Do you have categories? Does it make sense to categorize documents? Is frequent, recent, pinned not enough? For example, Inbox, Outbox, Sales, Marketing … Categories contain IShellItem or IShellLink objects These are documents: You need a file association Customizing the Jump List Step 3: Adding categories category1 = new JumpListCustomCategory("Custom Category 1"); //JumpList.AddCustomCategories(category1); category1.AddJumpListItems(new JumpListItem(path)); jumpList.Refresh(); Addin Custom Categories …in a Jump List Thumbnail Toolbars Remote control from the taskbar Thumbnail Toolbars Design considerations You get up to seven buttons Can’t add or delete; can hide and disable Tasks are not thumbnail buttons! Tasks Thumbnail Buttons Entry point Application-wide Can act dynamically Menu or toolbar Window-specific Must be static Creating Thumbnail Toolbars private ThumbnailToolbarButton buttonFirst; buttonFirst = new ThumbnailToolbarButton (TaskbarConcepts.Resources.first, "First Image"); buttonFirst.Enabled = false; buttonFirst.Click += buttonFirst_Click; private void buttonFirst_Click(object sender, EventArgs e) { ShowList(0); } Get More From Taskbar Buttons Overlay and progress icons Consolidate: Uncluttered notification area Provide progress and additional information through the taskbar button It’s free if you use standard progress dialogs Taskbar Overlay and Progress Design considerations Notification area is now user controlled: Leave yourself out if possible! Use taskbar buttons for custom progress or status information Taskbar Overlay and Progress The APIs TaskbarManager winTaskbar = TaskbarManager.Instance; // Icon winTaskbar.SetOverlayIcon(icon, "icon1"); // Set normal progressbar winTaskbar.SetProgressValue((int)progressSlider.Value, 100); winTaskbar.SetProgressState(TaskbarProgressBarState.Normal); . . . // Remove progressbar winTaskbar.SetProgressState(TaskbarProgressBarState.NoProgress); Overlay & Progress Icons …in Taskbar Button Live Thumbnails Live thumbnails: A livepreview Windows Vista®: One thumbnail per window Windows 7: Grouped thumbnails Peek Preview (Aero Peek) Live peek without a click Live Thumbnails and Peek Design considerations Desktop Window Manager (DWM) only talks to top-level windows Child windows need a custom representation The thumbnail might be “too much” or “not enough” What if you could … Test your thumbnails to make sure they are useful If they aren’t, customize them! Thumbnail Clip (Zoom) Zoom into the important parts! Customizing Live Thumbnails TabbedThumbnail preview = new TabbedThumbnail(Application.Current.MainWindow, image, offset); TaskbarManager.Instance.TabbedThumbnail.AddThumbnailPreview(prev iew); TaskbarManager.Instance.TabbedThumbnail.SetActiveTab(preview); Customizing Peek Preview TabbedThumbnail preview = TaskbarManager.Instance.TabbedThumbnail. GetThumbnailPreview(image); if (preview != null) preview.InvalidatePreview(); Summary Quick launch is deprecated Notification area should be kept clean Proper file associations are crucial for mostrecently used or most-frequently used and custom categories Users will expect destinations and tasks Should child windows have thumbnails? Bad/Good examples: Bad: Microsoft VS 2008, Office Outlook® 2007 Good: Office Outlook 2010 Resources www.microsoft.com/teched www.microsoft.com/learning Sessions On-Demand & Community Microsoft Certification & Training Resources http://microsoft.com/technet http://microsoft.com/msdn Resources for IT Professionals Resources for Developers Related Content DEV309 The Windows API Code Pack: How Managed Code Developers Can Easily Access Exciting New Windows Vista and Windows 7 Features CLI09-IS For Developers: Common Application Compatibility Issues between Windows XP, Windows Vista, and Windows 7 WCL08-HOL Windows 7: Mitigating Application Issues Using Shims WCL05-HOL Windows 7: Application Compatibility Toolkit 5.5 Complete an evaluation on CommNet and enter to win an Xbox 360 Elite! © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.