terminal/src/cascadia/TerminalApp/Toast.h

39 lines
910 B
C
Raw Normal View History

Add an action for identifying windows (#9523) ## Summary of the Pull Request This is a follow up to #9300. Now that we have names on our windows, it would be nice to see who is named what. So this adds two actions: * `identifyWindow`: This action will pop up a little toast (#8592) displaying the name and ID of the window, and is bound by default. ![identify-window-toast-000](https://user-images.githubusercontent.com/18356694/111529085-bf710580-872f-11eb-8880-b0b617596cfc.gif) * `identifyWindows`: This action will request that ALL windows pop up that toast. This is meant to feel like the "Identify" button on the Windows display settings. However, sometimes, it's wonky. ![teaching-tip-dismiss-001](https://user-images.githubusercontent.com/18356694/111529292-fe06c000-872f-11eb-8d4a-5688e4ce1175.gif) That's being tracked upstream on https://github.com/microsoft/microsoft-ui-xaml/issues/4382 Because it's so wonky, we won't bind that by default. Maybe if we get that fixed, then we'll change the default binding from `identifyWindow` to `identifyWindows` ## References ## PR Checklist * [x] Closes https://github.com/microsoft/terminal/projects/5#card-51431492 * [x] I work here * [x] Tests added/passed * [ ] Requires documentation to be updated ## Detailed Description of the Pull Request / Additional comments You may note that there are some macros to make interacting with lots and lots of actions easier. There's a lot of boilerplate whenever you need to make a new action, so I thought: "Can we make that easier?" Turns out you can make it a _LOT_ easier, but that work is still behind another PR after this one. Get excited
2021-03-30 18:08:03 +02:00
/*++
Copyright (c) Microsoft Corporation
Licensed under the MIT license.
Module Name:
- Toast.h
Module Description:
- This is a helper class for wrapping a TeachingTip with a timer to
automatically dismiss it. Callers should add the TeachingTip wherever they'd
like in the UI tree, then wrap that TeachingTip in a toast like so:
```
std::unique_ptr<Toast> myToast = std::make_unique<Toast>(MyTeachingTip());
```
- Then, you can show the TeachingTip with
```
myToast->Open();
```
which will open the tip and close it after a brief timeout.
--*/
#pragma once
#include "pch.h"
class Toast : public std::enable_shared_from_this<Toast>
{
public:
Toast(const winrt::Microsoft::UI::Xaml::Controls::TeachingTip& tip);
void Open();
private:
winrt::Microsoft::UI::Xaml::Controls::TeachingTip _tip;
winrt::Windows::UI::Xaml::DispatcherTimer _timer;
};