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