/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
    \page desktop-integration.html
    \title Desktop Integration
    \brief Integrating with the user's desktop environment.

    \ingroup best-practices
    \ingroup qt-gui-concepts

    Qt applications behave well in the user's desktop environment, but certain
    integrations require additional, and sometimes platform specific, techniques.

    \tableofcontents

    \section1 Useful Classes

    Various classes in Qt are designed to help developers integrate applications into
    users' desktop environments. These classes enable developers to take advantage
    of native services while still using a cross-platform API.

    \annotatedlist desktop

    \section1 Opening External Resources

    Although Qt provides facilities to handle and display resources, such as
    \l{QImageIOHandler}{common image formats} and \l{QTextDocument}{HTML},
    it is sometimes necessary to open files and external resources using external
    applications.

    QDesktopServices provides an interface to services offered by the user's desktop
    environment. In particular, the \l{QDesktopServices::}{openUrl()} function is
    used to open resources using the appropriate application, which may have been
    specifically configured by the user.

    \section1 System Tray Icons

    Many modern desktop environments feature docks or panels with \e{system trays}
    in which applications can install icons. Applications often use system tray icons
    to display status information, either by updating the icon itself or by showing
    information in "balloon messages". Additionally, many applications provide
    pop-up menus that can be accessed via their system tray icons.

    The QSystemTrayIcon class exposes all of the above features via an intuitive
    Qt-style API that can be used on all desktop platforms.

    \section1 Desktop Widgets

    On systems where the user's desktop is displayed using more than one screen,
    certain types of applications may need to obtain information about the
    configuration of the user's workspace to ensure that new windows and dialogs
    are opened in appropriate locations.

    The QDesktopWidget class can be used to monitor the positions of widgets and
    notify applications about changes to the way the desktop is split over the
    available screens. This enables applications to implement policies for
    positioning new windows so that, for example, they do not distract a user
    who is working on a specific task.
*/
