Skip to content

Commit e8d0457

Browse files
committed
Merge branch 'main' into alvinashcraft/main-settings-uris-copilot-personalization
2 parents 3f88738 + 7b5ecdd commit e8d0457

38 files changed

+573
-428
lines changed

.openpublishing.redirection.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8277,7 +8277,7 @@
82778277
},
82788278
{
82798279
"source_path": "hub/dev-home/project-ironsides.md",
8280-
"redirect_url": "windows/dev-home/dev-diagnostics",
8280+
"redirect_url": "/windows/dev-home/dev-diagnostics",
82818281
"redirect_document_id": false
82828282
}
82838283
]

hub/android/wsa/release-notes.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ These release notes are based on updates to the Windows Subsystem for Android&tr
1515

1616
For the latest information on Windows Subsystem for Android™️, see the [WSA GitHub repository Discussions](https://github.com/microsoft/WSA/discussions).
1717

18+
For the latest information on Windows Subsystem for Android™️, see the [WSA GitHub repository Discussions](https://github.com/microsoft/WSA/discussions).
19+
1820
## Build 2304.40000.3.0
1921

2022
June 1, 2023

hub/apps/design/controls/tab-view.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,13 @@ private void TabView_TabCloseRequested(muxc.TabView sender, muxc.TabViewTabClose
9595

9696
There are a number of ways to take advantage of or extend a [TabView](/uwp/api/microsoft.ui.xaml.controls.tabview)'s functionality.
9797

98+
### Tab tear-out
99+
100+
Starting in Windows App SDK 1.6, TabView supports a [CanTearOutTabs](/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.controls.tabview.cantearouttabs) mode which provides an enhanced experience for dragging tabs out to a new window. When this new option is enabled, tab dragging is very much like the tab drag experience in Edge and Chrome where a new window is immediately created during the drag, allowing the user to drag it to the edge of the screen to maximize or snap the window in one smooth motion. This implementation also doesn't use drag-and-drop APIs, so it isn't impacted by any limitations in those APIs.
101+
102+
> [!NOTE]
103+
> Tab tear-out is supported in processes running elevated as Administrator.
104+
98105
### Bind TabItemsSource to a TabViewItemCollection
99106

100107
```xaml

hub/apps/design/input/cortana-deep-link-into-your-app.md

Lines changed: 82 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ keywords: cortana
1111

1212
>[!WARNING]
1313
> This feature is no longer supported as of the Windows 10 May 2020 Update (version 2004, codename "20H1").
14-
>
15-
> See [Cortana in Microsoft 365](/microsoft-365/admin/misc/cortana-integration) for how Cortana is transforming modern productivity experiences.
1614
1715
Provide deep links from a background app in **Cortana** that launch the app to the foreground in a specific state or context.
1816

@@ -72,19 +70,19 @@ Finally, we call the [**ReportSuccessAsync**](/uwp/api/Windows.ApplicationModel.
7270
private async Task SendCompletionMessageForDestination(string destination)
7371
{
7472
...
75-
IEnumerable<Model.Trip> trips = store.Trips.Where(p => p.Destination == destination);
73+
IEnumerable<Model.Trip> trips = store.Trips.Where(p => p.Destination == destination);
7674

77-
var userMessage = new VoiceCommandUserMessage();
78-
var destinationsContentTiles = new List<VoiceCommandContentTile>();
75+
var userMessage = new VoiceCommandUserMessage();
76+
var destinationsContentTiles = new List<VoiceCommandContentTile>();
7977
...
80-
var response = VoiceCommandResponse.CreateResponse(userMessage, destinationsContentTiles);
78+
var response = VoiceCommandResponse.CreateResponse(userMessage, destinationsContentTiles);
8179

82-
if (trips.Count() > 0)
83-
{
84-
response.AppLaunchArgument = destination;
85-
}
80+
if (trips.Count() > 0)
81+
{
82+
response.AppLaunchArgument = destination;
83+
}
8684

87-
await voiceServiceConnection.ReportSuccessAsync(response);
85+
await voiceServiceConnection.ReportSuccessAsync(response);
8886
}
8987
```
9088

@@ -113,80 +111,80 @@ Here, we add two content tiles with different [**AppLaunchArgument**](/uwp/api/W
113111
/// <param name="destination">The destination specified in the voice command.</param>
114112
private async Task SendCompletionMessageForDestination(string destination)
115113
{
116-
// If this operation is expected to take longer than 0.5 seconds, the task must
117-
// supply a progress response to Cortana before starting the operation, and
118-
// updates must be provided at least every 5 seconds.
119-
string loadingTripToDestination = string.Format(
120-
cortanaResourceMap.GetValue("LoadingTripToDestination", cortanaContext).ValueAsString,
121-
destination);
122-
await ShowProgressScreen(loadingTripToDestination);
123-
Model.TripStore store = new Model.TripStore();
124-
await store.LoadTrips();
125-
126-
// Query for the specified trip.
114+
// If this operation is expected to take longer than 0.5 seconds, the task must
115+
// supply a progress response to Cortana before starting the operation, and
116+
// updates must be provided at least every 5 seconds.
117+
string loadingTripToDestination = string.Format(
118+
cortanaResourceMap.GetValue("LoadingTripToDestination", cortanaContext).ValueAsString,
119+
destination);
120+
await ShowProgressScreen(loadingTripToDestination);
121+
Model.TripStore store = new Model.TripStore();
122+
await store.LoadTrips();
123+
124+
// Query for the specified trip.
127125
// The destination should be in the phrase list. However, there might be
128126
// multiple trips to the destination. We pick the first.
129-
IEnumerable<Model.Trip> trips = store.Trips.Where(p => p.Destination == destination);
130-
131-
var userMessage = new VoiceCommandUserMessage();
132-
var destinationsContentTiles = new List<VoiceCommandContentTile>();
133-
if (trips.Count() == 0)
134-
{
135-
string foundNoTripToDestination = string.Format(
136-
cortanaResourceMap.GetValue("FoundNoTripToDestination", cortanaContext).ValueAsString,
137-
destination);
138-
userMessage.DisplayMessage = foundNoTripToDestination;
139-
userMessage.SpokenMessage = foundNoTripToDestination;
140-
}
141-
else
142-
{
143-
// Set plural or singular title.
144-
string message = "";
145-
if (trips.Count() > 1)
146-
{
147-
message = cortanaResourceMap.GetValue("PluralUpcomingTrips", cortanaContext).ValueAsString;
148-
}
149-
else
150-
{
151-
message = cortanaResourceMap.GetValue("SingularUpcomingTrip", cortanaContext).ValueAsString;
152-
}
153-
userMessage.DisplayMessage = message;
154-
userMessage.SpokenMessage = message;
155-
156-
// Define a tile for each destination.
157-
foreach (Model.Trip trip in trips)
158-
{
159-
int i = 1;
160-
161-
var destinationTile = new VoiceCommandContentTile();
162-
163-
destinationTile.ContentTileType = VoiceCommandContentTileType.TitleWith68x68IconAndText;
164-
destinationTile.Image = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///AdventureWorks.VoiceCommands/Images/GreyTile.png"));
165-
166-
destinationTile.AppLaunchArgument = trip.Destination;
167-
destinationTile.Title = trip.Destination;
168-
if (trip.StartDate != null)
169-
{
170-
destinationTile.TextLine1 = trip.StartDate.Value.ToString(dateFormatInfo.LongDatePattern);
171-
}
172-
else
173-
{
174-
destinationTile.TextLine1 = trip.Destination + " " + i;
175-
}
176-
177-
destinationsContentTiles.Add(destinationTile);
178-
i++;
179-
}
180-
}
181-
182-
var response = VoiceCommandResponse.CreateResponse(userMessage, destinationsContentTiles);
183-
184-
if (trips.Count() > 0)
185-
{
186-
response.AppLaunchArgument = destination;
187-
}
188-
189-
await voiceServiceConnection.ReportSuccessAsync(response);
127+
IEnumerable<Model.Trip> trips = store.Trips.Where(p => p.Destination == destination);
128+
129+
var userMessage = new VoiceCommandUserMessage();
130+
var destinationsContentTiles = new List<VoiceCommandContentTile>();
131+
if (trips.Count() == 0)
132+
{
133+
string foundNoTripToDestination = string.Format(
134+
cortanaResourceMap.GetValue("FoundNoTripToDestination", cortanaContext).ValueAsString,
135+
destination);
136+
userMessage.DisplayMessage = foundNoTripToDestination;
137+
userMessage.SpokenMessage = foundNoTripToDestination;
138+
}
139+
else
140+
{
141+
// Set plural or singular title.
142+
string message = "";
143+
if (trips.Count() > 1)
144+
{
145+
message = cortanaResourceMap.GetValue("PluralUpcomingTrips", cortanaContext).ValueAsString;
146+
}
147+
else
148+
{
149+
message = cortanaResourceMap.GetValue("SingularUpcomingTrip", cortanaContext).ValueAsString;
150+
}
151+
userMessage.DisplayMessage = message;
152+
userMessage.SpokenMessage = message;
153+
154+
// Define a tile for each destination.
155+
foreach (Model.Trip trip in trips)
156+
{
157+
int i = 1;
158+
159+
var destinationTile = new VoiceCommandContentTile();
160+
161+
destinationTile.ContentTileType = VoiceCommandContentTileType.TitleWith68x68IconAndText;
162+
destinationTile.Image = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///AdventureWorks.VoiceCommands/Images/GreyTile.png"));
163+
164+
destinationTile.AppLaunchArgument = trip.Destination;
165+
destinationTile.Title = trip.Destination;
166+
if (trip.StartDate != null)
167+
{
168+
destinationTile.TextLine1 = trip.StartDate.Value.ToString(dateFormatInfo.LongDatePattern);
169+
}
170+
else
171+
{
172+
destinationTile.TextLine1 = trip.Destination + " " + i;
173+
}
174+
175+
destinationsContentTiles.Add(destinationTile);
176+
i++;
177+
}
178+
}
179+
180+
var response = VoiceCommandResponse.CreateResponse(userMessage, destinationsContentTiles);
181+
182+
if (trips.Count() > 0)
183+
{
184+
response.AppLaunchArgument = destination;
185+
}
186+
187+
await voiceServiceConnection.ReportSuccessAsync(response);
190188
}
191189
```
192190

@@ -203,7 +201,7 @@ userMessage.SpokenMessage =
203201
"You have one trip to Vegas coming up.";
204202

205203
response = VoiceCommandResponse.CreateResponse(userMessage);
206-
response.AppLaunchArgument = Las Vegas;
204+
response.AppLaunchArgument = "Las Vegas";
207205
await VoiceCommandServiceConnection.RequestAppLaunchAsync(response);
208206
```
209207

0 commit comments

Comments
 (0)