/****************************************************************************
**
** Copyright (C) 2017 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt local connectivity modules.
**
** $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 ndefeditor
\title NDEF Editor Example
\brief An example about reading and writing NFC Data Exchange Format (NDEF) messages to NFC Forum Tags.

The NDEF Editor example reads and writes NFC Data Exchange Format
(NDEF) messages to NFC Forum Tags. NDEF messages can be composed by
adding records of supported types. Additionally, NDEF messages can be
loaded/saved from/into a file located in the file system of the
machine where the application is running.

\image ndefeditor.png

\section1 NFC Tag detection

The MainWindow class is able to detect if a NFC Tag is in the range
for read/write operations. It can also detect if connectivity has been
lost. This is achieved by connecting the MainWindow class private
handlers to the signals QNearFieldManager::targetDetected and
QNearFieldManager::targetLost.

\snippet ndefeditor/mainwindow.cpp QNearFieldManager init

Through the UI a user requests when to start the detection of a NFC
Tag by calling the method QNearFieldManager::startTargetDetection.

\snippet ndefeditor/mainwindow.cpp QNearFieldManager start detection

Once the target is detected the MainWindow connects the following
signals to its internal private slots:
QNearFieldTarget::ndefMessageRead, QNearFieldTarget::NdefReadError,
QNearFieldTarget::ndefMessagesWritten,
QNearFieldTarget::NdefWriteError and QNearFieldTarget::error

\snippet ndefeditor/mainwindow.cpp QNearFieldTarget detected

If during the process of reading or writing to a NFC Tag the
connection is lost, the MainWindow reacts to this event by
scheduling the target deletion (QObject::deleteLater).

\snippet ndefeditor/mainwindow.cpp QNearFieldTarget lost

\section1 Record creation

The main window of the ndefeditor example manages the composition and
creation of NFC records. The UI contains a QScrollArea where
RecordEditors are added dynamically on a user requests basis. The
following methods of the MainWindow class provide an interface towards
each of the record editing classes managing the different types of
records.

\snippet ndefeditor/mainwindow.h 0

The following sections explain each of the record editing classes.
\section1 Record editing classes

\section2 TextRecordEditor

The TextRecordEditor is a QWidget that can handle editing the values
of text record that has been requested by the user. For each text
record, there is a new instance of this class.

\snippet ndefeditor/textrecordeditor.h 0

\section2 UriRecordEditor

The UriRecordEditor is a QWidget that can handle editing the values of
Uri record that has been requested by the user. For each new Uri
record there is a new instance of this class.

\snippet ndefeditor/urirecordeditor.h 0

\section2 MimeImageRecordEditor

The UriRecordEditor is a QWidget that can handle editing the values of
a Mime Image record that has been requested by the user. For each Mime
Image record there is a new instance of this class.

\snippet ndefeditor/mimeimagerecordeditor.h 0


\include examples-run.qdocinc

\sa {Qt NFC}
*/
