/****************************************************************************
**
** 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$
**
****************************************************************************/

/*!
    \example activeqt/qutlook
    \title Qutlook Example (ActiveQt)

    \brief The Qutlook example demonstrates the use of ActiveQt to automate
    Outlook. The example makes use of the \l dumpcpp tool to generate
    a C++ namespace for the type library describing the Outlook
    Object Model.

    The project file for the example looks like this:

    \snippet activeqt/qutlook/qutlook.pro 1
    \snippet activeqt/qutlook/qutlook.pro 2

    The project file uses the \c dumpcpp tool to add an MS Outlook type library to the project.
    If this fails, then the generated makefile will just print an error message, otherwise
    the build step will now run the \e dumpcpp tool on the type library, and
    generate a header and a cpp file (in this case, \c msoutl.h and \c msoutl.cpp) that
    declares and implement an easy to use API to the Outlook objects.

    \snippet activeqt/qutlook/addressview.h 0

    The AddressView class is a QWidget subclass for the user interface. The QTreeView widget
    will display the contents of Outlook's Contact folder as provided by the \c{model}.

    \snippet activeqt/qutlook/addressview.cpp 0
    The AddressBookModel class is a QAbstractListModel subclass that communicates directly with
    Outlook, using a QHash for caching.

    \snippet activeqt/qutlook/addressview.cpp 1
    The constructor initializes Outlook. The various signals Outlook provides to notify about
    contents changes are connected to the \c updateOutlook() slot.

    \snippet activeqt/qutlook/addressview.cpp 2
    The destructor logs off from the session.

    \snippet activeqt/qutlook/addressview.cpp 3
    The \c rowCount() implementation returns the number of entries as reported by Outlook. \c columnCount
    and \c headerData are implemented to show four columns in the tree view.

    \snippet activeqt/qutlook/addressview.cpp 4
    The \c headerData() implementation returns hardcoded strings.

    \snippet activeqt/qutlook/addressview.cpp 5
    The \c data() implementation is the core of the model. If the requested data is in the cache the
    cached value is used, otherwise the data is acquired from Outlook.

    \snippet activeqt/qutlook/addressview.cpp 6
    The \c changeItem() slot is called when the user changes the current entry using the user interface.
    The Outlook item is accessed using the Outlook API, and is modified using the property setters.
    Finally, the item is saved to Outlook, and removed from the cache. Note that the model does not
    signal the view of the data change, as Outlook will emit a signal on its own.

    \snippet activeqt/qutlook/addressview.cpp 7
    The \c addItem() slot calls the CreateItem method of Outlook to create a new contact item,
    sets the properties of the new item to the values entered by the user and saves the item.

    \snippet activeqt/qutlook/addressview.cpp 8
    The \c update() slot clears the cache, and emits the reset() signal to notify the view about the
    data change requiring a redraw of the contents.

    \snippet activeqt/qutlook/addressview.cpp 9
    \snippet activeqt/qutlook/addressview.cpp 10
    The rest of the file implements the user interface using only Qt APIs, i.e. without communicating
    with Outlook directly.

    \snippet activeqt/qutlook/main.cpp 0

    The \c main() entry point function finally instantiates the user interface and enters the
    event loop.

    To build the example you must first build the QAxContainer
    library. Then run your make tool in \c examples/activeqt/qutlook
    and run the resulting \c qutlook.exe.
*/
