//! The Presenter plugin allows sending and receiving simple 'pings', with an optional message. Usually these are displayed as notifications.
use serde::{Deserialize, Serialize};

/// This packet is a presentation remote event.
///
/// <https://invent.kde.org/network/kdeconnect-meta/blob/master/protocol.md#kdeconnectpresenter>
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct PresenterPacket {
    /// A double precision integer indicating a position delta on the X-axis.
    #[serde(skip_serializing_if = "Option::is_none")]
    #[serde(default)]
    pub dx: Option<u64>,

    /// A double precision integer indicating a position delta on the Y-axis.
    #[serde(skip_serializing_if = "Option::is_none")]
    #[serde(default)]
    pub dy: Option<u64>,

    /// Stop controlling the virtual pointer.
    #[serde(skip_serializing_if = "Option::is_none")]
    #[serde(default)]
    pub stop: Option<bool>,
}
