/*!
    \qmltype TitleBar
    \inherits Control
    \inqmlmodule org.deepin.dtk
    \ingroup QML_TYPES
    \brief 提供一种统一样式风格的标题栏控件.

    TitleBar 控件用于标准样式风格的 TitleBar 控件，与 DialogTitleBar
    不同， TitleBar 只被用于 ApplicationWindow 中的标题栏。通常情况下，
    标题栏适配 ApplicationWindow 的布局，需要放置在 header 属性中，例如
    以下代码：

    \qml
    import org.deepin.dtk 1.0

    ApplicationWindow {
        id: root

        flags: Qt.Window | Qt.WindowMinMaxButtonsHint | Qt.WindowCloseButtonHint | Qt.WindowTitleHint
        header: TitleBar {}
    }
    \endqml

    TitleBar 主要用于 DTK 中适配的无标题窗口，在去除系统标题栏后， DTK 应用需要
    添加一个应用内的 TitleBar 控件，当作应用统一的标题栏。这在 UOS/Deepin 操作
    系统中非常友好，例如以下代码：

    \qml
    import org.deepin.dtk 1.0

    ApplicationWindow {
        id: root

        header: TitleBar {}
        DWindow.enabled: true
        DWindow.windowRadius: 16
    }
    \endqml

    TitleBar 默认是最顶层控件，其他所有控件无法越过 TitleBar ，并且 TitleBar 中提供了
    通用标题栏的默认布局，如应用图标，应用标题，菜单按钮，最大化最小化关闭按钮等等。TitleBar
    还支持添加额外的自定义内容，这取决于应用想要实现的样式，例如以下代码：

    添加中心区域的代码如下：
    \qml
    import org.deepin.dtk 1.0

    ApplicationWindow {
        id: root

        header: TitleBar {
            content: Item {
                SearchEdit {
                    anchors.centerIn: parent
                    width: 300
                    placeholder: "搜索"
                }
            }
        }
        DWindow.enabled: true
        DWindow.windowRadius: 16
    }
    \endqml

    添加左侧区域的代码如下：
    \qml
    import org.deepin.dtk 1.0

    ApplicationWindow {
        id: root

        header: TitleBar {
            leftContent: ActionButton {
                icon.name: "window_sidebar"
            }
        }
        DWindow.enabled: true
        DWindow.windowRadius: 16
    }
    \endqml

    Titlebar 适配的 ApplicationWindow 中的 flags 属性。 WindowMinMaxButtonsHint 属性
    控制标题栏的最大化最小化按钮 WindowCloseButtonHint 属性控制关闭按钮;WindowTitleHint 属性
    控制在标题文本属性;在xcb环境下，还能够通过修改 MotifDecoration 来控制窗口的标题，其中 DECOR_MINIMIZE
    表示最小化按钮， DECOR_MAXIMIZE 表示最大化按钮 DECOR_TITLE 表示窗口标题。
 */

/*!
    \qmlproperty string org.deepin.dtk::TitleBar::title

    \c title 属性用于控制标题栏的标题文本
 */

/*!
    \qmlproperty DciIcon org.deepin.dtk::TitleBar::icon

    \c icon 属性用于控制标题栏的图标， \c icon 的类型是 DciIcon，能同时
    兼容 QtIcon 和 DciIcon。
 */

/*!
    \qmlproperty Component org.deepin.dtk::TitleBar::leftContent

    \c leftContent 属性用于添加标题左侧区域的组件，例如添加侧边栏按钮等等。
 */

/*!
    \qmlproperty Component org.deepin.dtk::TitleBar::content

    \c content 属性用于添加标题中心区域的组件，当存在多个组件时，可以使用
    布局进行排列。
 */

/*!
    \qmlproperty Component org.deepin.dtk::TitleBar::menu

    \c menu 属性用于控制 Option 按钮的弹出菜单。默认情况下 TitleBar 会提供
    一个默认的菜单，当需要自定义菜单时，菜单项需要进行手动调整。
    例如以下代码：
    \qml
    import org.deepin.dtk 1.0

    ApplicationWindow {
        id: root

        ButtonGroup {
            id: activeColorSelector
            onCheckedButtonChanged: {
                root.palette.highlight = checkedButton.color
            }
        }

        header: TitleBar {
        menu: Menu {
            Action {
                text: "Light Theme"
            }
            Action {
                text: "Dark Theme"
            }
            MenuItem {
                contentItem: Item {
                    Row {
                        anchors.centerIn: parent
                        Repeater {
                            model: ["#d8316c", "#ff5d00", "#f8cb00", "#23c400", "#00a48a", "#0081ff", "#3c02d7", "#8c00d4"]
                            delegate: ColorButton {
                                color: modelData
                                Component.onCompleted: {
                                    activeColorSelector.addButton(this)
                                }
                            }
                        }
                    }
                }
            }
        }
        DWindow.enabled: true
        DWindow.windowRadius: 16
    }
    \endqml
 */

/*!
    \qmlproperty bool org.deepin.dtk::TitleBar::menuDisabled

    \c menuDisabled 属性可以将 menu 属性设置禁用或者启用，默认情况下为 false。
 */

/*!
    \qmlproperty Component org.deepin.dtk::TitleBar::aboutDialog

    \c aboutDialog 属性控制应用的关于对话框。其使用方式如下所示：
    \qml
    import org.deepin.dtk 1.0

    ApplicationWindow {
        id: root
        DWindow.enabled: true
        DWindow.windowRadius: 16

        header: TitleBar {
            aboutDialog: AboutDialog {
                modality: Qt.NonModal
                version: qsTr(String("Version: %1").arg(Qt.application.version))
                productName: qsTr(appProductName)
                companyLogo: "file://" + DTK.deepinDistributionOrgLogo
                websiteName: DTK.deepinWebsiteName
                websiteLink: DTK.deepinWebsiteLink
                license: appLicense === "" ? "" : qsTr(String("%1 is released under %2").arg(appProductName).arg(appLicense))
            }
        }
    }
    \endqml

    \sa AboutDialog
 */

/*!
    \qmlproperty bool org.deepin.dtk::TitleBar::fullScreenButtonVisible

    \c fullScreenButtonVisible 属性控制 TitleBar 在全屏时按钮是否可见。默认情况下，
    该值是 true。
 */

/*!
    \qmlsignal org.deepin.dtk::TitleBar::toggleWindowState()

    \c toggleWindowState 信号当窗口状态发生变化时触发。例如双击最大化等操作时。
 */

/*!
    \qmlproperty bool org.deepin.dtk::TitleBar::windowButtonGroup

    \c windowButtonGroup 是默认的窗口按钮组，包含最小化、最大化、关闭按钮。
    默认情况下，该属性已经由 TitleBar 提供。
 */

/*!
    \qmlproperty bool org.deepin.dtk::TitleBar::autoHideOnFullscreen

    \c autoHideOnFullscreen 属性表示是否在全屏时自动关闭标题栏。默认情况下，该
    值为 false。
 */

/*!
    \qmlproperty bool org.deepin.dtk::TitleBar::embedMode

    \c embedMode 属性表示是否属于嵌入模式，当 DWindow.enabled 属性为
    false 时， embedMode 为 true， 否则为 false。 嵌入模式下的标题栏
    上的 WindowButtonGroup 上的按钮均有系统标题栏提供。
 */

/*!
    \qmlproperty bool org.deepin.dtk::TitleBar::separatorVisible

    \c separatorVisible 属性控制分隔符是否可见。默认情况下，该值为 true。
 */

/*!
    \qmlproperty bool org.deepin.dtk::TitleBar::enableInWindowBlendBlur

    \c enableInWindowBlendBlur 属性表示是否开启窗口内模糊，默认情况下为 false。
    \sa InWindowBlur
 */

/*!
    \qmlproperty Palette org.deepin.dtk::TitleBar::textColor

    \c textColor 属性控制文本和图标等颜色，即前景色相关颜色。
 */
