4.9 KiB
Classes and structures
class Animation: header source
Animation helper class with two easing-in animations: linear and exponential.
class AsyncMessageQueue: header
Header-only asynchronous message queue. Used by TwoWayPipeMessageIPC
.
class TwoWayPipeMessageIPC: header
Header-only asynchronous IPC messaging class. Used by the runner to communicate with the settings window.
class D2DSVG: header source
Class for loading, rendering and for some basic modifications of SVG graphics.
class D2DText: header source
Class for rendering text using DirectX.
class D2DWindow: header source
Base class for creating borderless windows, with DirectX enabled rendering pipeline.
class DPIAware: header source
Helper class for creating DPI-aware applications.
struct MonitorInfo: header source
Class for obtaining information about physical displays connected to the machine.
class Settings, class PowerToyValues, class CustomActionObject: header source
Classes used to define settings screens for the PowerToys modules.
class Tasklist: header source
Class that can detect the position of the windows buttons on the taskbar. It also detects which window will react to pressing WinKey + number
.
struct WindowsColors: header source
Class for detecting the current Windows color scheme.
Helpers
Common helpers: header source
Various helper functions.
Settings helpers: header
Helper methods for the settings.
Start visible helper: header source
Contains function to test if the Start menu is visible.
Toast Notifications
Notifications API header source
To use UWP-style toast notifications, simply include the header and call one of these functions:
void show_toast(std::wstring_view message); // #1
void show_toast_background_activated( // #2
std::wstring_view message,
std::wstring_view background_handler_id,
std::vector<std::wstring_view> button_labels);
We might add more functions in the future if the need arises, e.g. show_toast_xml
which will accept raw XML for rich customization.
Description:
#1
is for sending simple notifications without any callbacks or buttons#2
is capable of showing a toast with multiple buttons and background activationmessage
is a plain-text argument
Implement a toast activation handler/callback as a function in handler_functions.cpp and register its background_handler_id
via handlers_map
, e.g.:
// Your .cpp where you'd like to show a toast
#include <common/notifications.h>
void some_func() {
// ...
notifications::show_toast_background_activated(
L"Toast message!", // text displayed in a toast
L"awesome_toast", // activation handler id
{L"Press me!", L"Also could press me!", L"I'm here to be pressed!"} // buttons in a toast
);
// handler_functions.cpp
void awesome_toast_handler(IBackgroundTaskInstance, const size_t button_id)
{
switch(button_id)
{
case 0:
// handle "Press me!" button click
case 1:
// handle "Also could press me!" button click
case 2:
// handle "I'm here to be pressed!" button click
}
}
namespace
{
const std::unordered_map<std::wstring_view, handler_function_t> handlers_map = {
// ...other handlers...
{L"awesome_toast", awesome_toast_handler}
};}
Note: since background activation implies that your toast handler will be invoked in a separate process, you can't share data directly from within a handler and your PT process. Also, since PT is currently a Desktop Bridge app, foreground activation is handled the same as background, therefore we don't make a dedicated API for it. You can read more on the rationale of the current design here.