Notification 通知提醒框

优质
小牛编辑
129浏览
2023-12-01

Display a notification message globally.

Basic

The simplest usage that close the notification box after 4.5s.

<w class="button-container">
  <button ref="notification-basic" class="btn btn-primary">Open the notification box</button>
</w>
#include <LCUI.h>
#include <LCUI/gui/widget.h>
#include <LCDesign/ui/components/notification.h>

static void OpenNotification(LCUI_Widget w, LCUI_WidgetEvent e, void *arg)
{
    LCDesign_OpenNormalNotification(
        L"Notification Title",
        L"This is the content of the notification. This is the content of "
        L"the notification. This is the content of the notification.",
        NULL, 4500);
}

// ... other code

    LCUI_Widget btn = LCUIWidget_GetById("btn-open-notification");
    Widget_BindEvent(btn, "click", OpenNotification, NULL, NULL);

// ... other code

Placement

A notification box can appear from the top right, bottom-right, bottom-left or top-left of the viewport.

<w class="button-container">
  <button ref="notification-top-left" class="btn">top-left</button>
  <button ref="notification-top-right" class="btn">top-right</button>
  <button ref="notification-bottom-left" class="btn">bottom-left</button>
  <button ref="notification-bottom-right" class="btn">bottom-right</button>
</w>
#include <LCUI.h>
#include <LCUI/gui/widget.h>
#include <LCDesign/ui/components/notification.h>

static void OpenNotificationAtTopLeft(LCUI_Widget w, LCUI_WidgetEvent e,
                                      void *arg)
{
    LCDesign_OpenNormalNotification(
        L"Notification Title",
        L"This is the content of the notification. This is the content of "
        L"the notification. This is the content of the notification.",
        "top-left", 4500);
}

static void OpenNotificationAtTopRight(LCUI_Widget w, LCUI_WidgetEvent e,
                                       void *arg)
{
    LCDesign_OpenNormalNotification(
        L"Notification Title",
        L"This is the content of the notification. This is the content of "
        L"the notification. This is the content of the notification.",
        "top-right", 4500);
}

static void OpenNotificationAtBottomLeft(LCUI_Widget w, LCUI_WidgetEvent e,
                                         void *arg)
{
    LCDesign_OpenNormalNotification(
        L"Notification Title",
        L"This is the content of the notification. This is the content of "
        L"the notification. This is the content of the notification.",
        "bottom-left", 4500);
}

static void OpenNotificationAtBottomRight(LCUI_Widget w, LCUI_WidgetEvent e,
                                          void *arg)
{
    LCDesign_OpenNormalNotification(
        L"Notification Title",
        L"This is the content of the notification. This is the content of "
        L"the notification. This is the content of the notification.",
        "bottom-right", 4500);
}

// ... other code

    LCUI_Widget btn;

    btn = LCUIWidget_GetById("btn-open-at-top-left");
    Widget_BindEvent(btn, "click", OpenNotificationAtTopLeft, NULL, NULL);

    btn = LCUIWidget_GetById("btn-open-at-top-right");
    Widget_BindEvent(btn, "click", OpenNotificationAtTopRight, NULL, NULL);

    btn = LCUIWidget_GetById("btn-open-at-bottom-left");
    Widget_BindEvent(btn, "click", OpenNotificationAtBottomLeft, NULL, NULL);

    btn = LCUIWidget_GetById("btn-open-at-bottom-right");
    Widget_BindEvent(btn, "click", OpenNotificationAtBottomRight, NULL, NULL);

// ... other code

Customize duration

Duration can be used to specify how long the notification stays open. After the duration time elapses, the notification closes automatically. If you set the value to 0, the notification box will never close automatically.

<w class="button-container">
  <button ref="notification-custom-duration" class="btn btn-primary">Open the notification box</button>
</w>
#include <LCUI.h>
#include <LCUI/gui/widget.h>
#include <LCDesign/ui/components/notification.h>

static void OpenNotification(LCUI_Widget w, LCUI_WidgetEvent e, void *arg)
{
    LCDesign_OpenNormalNotification(
        L"Notification Title",
        L"This is the content of the notification. This is the content of "
        L"the notification. This is the content of the notification.",
        NULL, 0);
}

// ... other code

    LCUI_Widget btn = LCUIWidget_GetById("btn-open-notification");
    Widget_BindEvent(btn, "click", OpenNotification, NULL, NULL);

// ... other code

Notification with icon

A notification box with a icon at the left side.

<w class="button-container">
  <button ref="notification-success" class="btn">Success</button>
  <button ref="notification-info" class="btn">Info</button>
  <button ref="notification-warning" class="btn">Warning</button>
  <button ref="notification-error" class="btn">Error</button>
</w>
#include <LCUI.h>
#include <LCUI/gui/widget.h>
#include <LCDesign/ui/components/notification.h>

static void OpenSuccessNotification(LCUI_Widget w, LCUI_WidgetEvent e,
                                    void *arg)
{
    LCDesign_OpenSuccessNotification(
        L"Notification Title",
        L"This is the content of the notification. This is the content of "
        L"the notification. This is the content of the notification.",
        NULL, 4500);
}

static void OpenInfoNotification(LCUI_Widget w, LCUI_WidgetEvent e, void *arg)
{
    LCDesign_OpenInfoNotification(
        L"Notification Title",
        L"This is the content of the notification. This is the content of "
        L"the notification. This is the content of the notification.",
        NULL, 4500);
}

static void OpenWarningNotification(LCUI_Widget w, LCUI_WidgetEvent e, void *arg)
{
    LCDesign_OpenWarningNotification(
        L"Notification Title",
        L"This is the content of the notification. This is the content of "
        L"the notification. This is the content of the notification.",
        NULL, 4500);
}

static void OpenErrorNotification(LCUI_Widget w, LCUI_WidgetEvent e, void *arg)
{
    LCDesign_OpenErrorNotification(
        L"Notification Title",
        L"This is the content of the notification. This is the content of "
        L"the notification. This is the content of the notification.",
        NULL, 4500);
}

// ... other code

    LCUI_Widget btn;

    btn = LCUIWidget_GetById("btn-open-success-notification");
    Widget_BindEvent(btn, "click", OpenSuccessNotification, NULL, NULL);

    btn = LCUIWidget_GetById("btn-open-info-notification");
    Widget_BindEvent(btn, "click", OpenInfoNotification, NULL, NULL);

    btn = LCUIWidget_GetById("btn-open-warning-notification");
    Widget_BindEvent(btn, "click", OpenWarningNotification, NULL, NULL);

    btn = LCUIWidget_GetById("btn-open-error-notification");
    Widget_BindEvent(btn, "click", OpenErrorNotification, NULL, NULL);

// ... other code

Customized Icon

The icon can be customized to any widget.

<w class="button-container">
  <button ref="notification-custom-icon" class="btn btn-primary">Open the notification box</button>
</w>
#include <LCUI.h>
#include <LCUI/gui/widget.h>
#include <LCDesign/ui/components/notification.h>

static void OpenNotification(LCUI_Widget w, LCUI_WidgetEvent e, void *arg)
{
    LCUI_Widget icon;
    LCDesign_NotificationConfigRec config;

    icon = LCUIWidget_New("icon");
    Icon_SetName(icon, "emoticon-happy-outline");
    Widget_SetStyleString(icon, "color", "#108ee9");

    config.icon = icon;
    config.duration = 4500;
    config.placement = NULL;
    config.title = L"Notification Title";
    config.description =
        L"This is the content of the notification. This is the content of "
        L"the notification. This is the content of the notification.";
    LCDesign_OpenNotification(&config);
}

// ... other code

    LCUI_Widget btn = LCUIWidget_GetById("btn-open-notification");
    Widget_BindEvent(btn, "click", OpenNotification, NULL, NULL);

// ... other code