diff --git a/doc/Doxyfile b/doc/Doxyfile
index 2ab1bf4..cddd903 100644
--- a/doc/Doxyfile
+++ b/doc/Doxyfile
@@ -250,6 +250,7 @@ ALIASES                = "accessors{1}=
| Accessors<
 						 storedAc{1}= | 
|---|
| STORED | \1 | 
 \
 						 userAc{1}=| USER | \1 | 
 \
 						 "constantAc=| CONSTANT | 
" \
+						 "readonlyAc=| READ ONLY | 
" \
 						 "finalAc=| FINAL | 
" \
 						 "default{1}=Default: \1 
" \
 						 "readAcFn{1}=READ accessor for \1" \
@@ -896,7 +897,16 @@ RECURSIVE              = YES
 # run.
 
 EXCLUDE                = ../src/3rdparty \
-						 ../src/plugins
+						 ../src/plugins \
+						 ../src/imports/mvvmquick/settingsuibuilder.h \
+						 ../src/imports/mvvmquick/TintIcon.qml \
+						 ../src/imports/mvvmquick/MsgBoxBase.qml \
+						 ../src/imports/mvvmquick/MsgBox.qml \
+						 ../src/imports/mvvmquick/InputDialog.qml \
+						 ../src/imports/mvvmquick/ListSection.qml \
+						 ../src/imports/mvvmquick/OverviewListView.qml \
+						 ../src/imports/mvvmquick/AndroidFileDialog.qml \
+						 ../src/imports/mvvmquick/AndroidFolderDialog.qml
 
 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
 # directories that are symbolic links (a Unix file system feature) are excluded
@@ -919,7 +929,8 @@ EXCLUDE_PATTERNS       = moc_* \
 						 *_p.* \
 						 *.cpp \
 						 */src/mvvmquick/*.qml \
-						 */src/mvvmdatasyncquick/*.qml
+						 */src/mvvmdatasyncquick/*.qml \
+						 */imports/mvvmquick/*model.h
 
 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
 # (namespaces, classes, functions, etc.) that should be excluded from the
@@ -935,6 +946,9 @@ EXCLUDE_SYMBOLS        = QtMvvm::__helpertypes \
 						 QtMvvmQuickDeclarativeModule \
 						 QtMvvmDataSyncCoreDeclarativeModule \
 						 QtMvvmDataSyncQuickDeclarativeModule \
+						 QtMvvm::MultiFilterProxyModel \
+						 QtMvvm::SettingsEntryModel \
+						 QtMvvm::SettingsSectionModel \
 						 \
 						 QAbstractAspect \
 						 QAndroidActivityResultReceiver \
@@ -956,7 +970,6 @@ EXCLUDE_SYMBOLS        = QtMvvm::__helpertypes \
 						 ApplicationWindow \
 						 Dialog \
 						 Drawer \
-						 FileChooser \
 						 Item \
 						 Label \
 						 ListView \
diff --git a/doc/qtmvvm.dox b/doc/qtmvvm.dox
index e308889..554704d 100644
--- a/doc/qtmvvm.dox
+++ b/doc/qtmvvm.dox
@@ -66,6 +66,26 @@ The following list shows which classes belong to which Qt module, in alphabetica
 
 Current Version
         1.0
+
+Available Types
+- @ref QtMvvm::InputViewFactory "InputViewFactory" (uncreatable)
+- QuickPresenter (singleton)
+- FileChooser
+- AlertDialog
+- ContrastToolBar
+- ToolBarLabel
+- ActionButton
+- RoundActionButton
+- MenuButton
+- FileDialog
+- FolderDialog
+- PresenterProgress
+- PresentingStackView
+- PopupPresenter
+- DialogPresenter
+- PresentingDrawer
+- SettingsView
+- QtMvvmApp
 */
 
 /*!
diff --git a/src/imports/mvvmquick/androidfilechooser.cpp b/src/imports/mvvmquick/androidfilechooser.cpp
index 73eb071..a00379c 100644
--- a/src/imports/mvvmquick/androidfilechooser.cpp
+++ b/src/imports/mvvmquick/androidfilechooser.cpp
@@ -16,26 +16,6 @@ AndroidFileChooser::AndroidFileChooser(QObject *parent) :
 
 AndroidFileChooser::~AndroidFileChooser() {}
 
-QString AndroidFileChooser::title() const
-{
-	return _title;
-}
-
-QUrl AndroidFileChooser::folderUrl() const
-{
-	return _folderUrl;
-}
-
-AndroidFileChooser::ChooserType AndroidFileChooser::type() const
-{
-	return _type;
-}
-
-QStringList AndroidFileChooser::mimeTypes() const
-{
-	return _mimeTypes;
-}
-
 AndroidFileChooser::ChooserFlags AndroidFileChooser::chooserFlags() const
 {
 	return _flags;
@@ -83,42 +63,6 @@ void AndroidFileChooser::open()
 							 this);
 }
 
-void AndroidFileChooser::setTitle(const QString &title)
-{
-	if (_title == title)
-		return;
-
-	_title = title;
-	emit titleChanged(title);
-}
-
-void AndroidFileChooser::setFolderUrl(const QUrl &contentUrl)
-{
-	if (_folderUrl == contentUrl)
-		return;
-
-	_folderUrl = contentUrl;
-	emit folderUrlChanged(contentUrl);
-}
-
-void AndroidFileChooser::setType(AndroidFileChooser::ChooserType type)
-{
-	if (_type == type)
-		return;
-
-	_type = type;
-	emit typeChanged(type);
-}
-
-void AndroidFileChooser::setMimeTypes(const QStringList &mimeType)
-{
-	if (_mimeTypes == mimeType)
-		return;
-
-	_mimeTypes = mimeType;
-	emit mimeTypesChanged(mimeType);
-}
-
 void AndroidFileChooser::setChooserFlags(ChooserFlags chooserFlags)
 {
 	if (_flags == chooserFlags)
diff --git a/src/imports/mvvmquick/androidfilechooser.h b/src/imports/mvvmquick/androidfilechooser.h
index 125d71d..551f2b1 100644
--- a/src/imports/mvvmquick/androidfilechooser.h
+++ b/src/imports/mvvmquick/androidfilechooser.h
@@ -8,73 +8,166 @@
 #include 
 #include 
 
+#ifdef DOXYGEN_RUN
+namespace de::skycoder42::QtMvvm::Quick {
+
+/*! @brief A QML class access the native file chooser on android
+ *
+ * @since 1.0
+ *
+ * @warning Available on android only!
+ *
+ * A C++ wrapper around the android java API to access the native file chooser. It can only
+ * be used on Android, and serves as the base for the android implementation of the file and
+ * folder dialogs.
+ *
+ * @sa FileDialog, FolderDialog
+ */
+class FileChooser : public QtObject
+#else
 namespace QtMvvm {
 
 class AndroidFileChooser : public QObject, public QAndroidActivityResultReceiver
+#endif
 {
 	Q_OBJECT
 
-	Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged)
-
-	Q_PROPERTY(QUrl folderUrl READ folderUrl WRITE setFolderUrl NOTIFY folderUrlChanged)
-	Q_PROPERTY(ChooserType type READ type WRITE setType NOTIFY typeChanged)
-	Q_PROPERTY(QStringList mimeTypes READ mimeTypes WRITE setMimeTypes NOTIFY mimeTypesChanged)
+	/*! @brief The activity title/description of the file chooser
+	 *
+	 * @default{Empty}
+	 *
+	 * @accessors{
+	 *	@memberAc{title}
+	 *  @notifyAc{titleChanged()}
+	 * }
+	 */
+	Q_PROPERTY(QString title MEMBER _title NOTIFY titleChanged)
+
+	/*! @brief The URL of the place to show the dialog from
+	 *
+	 * @default{Empty}
+	 *
+	 * @accessors{
+	 *	@memberAc{folderUrl}
+	 *  @notifyAc{folderUrlChanged()}
+	 * }
+	 */
+	Q_PROPERTY(QUrl folderUrl MEMBER _folderUrl NOTIFY folderUrlChanged)
+	/*! @brief The type of URL to get
+	 *
+	 * @default{`FileChooser::OpenDocument`}
+	 *
+	 * Basically the open mode to get a fitting URL for.
+	 *
+	 * @accessors{
+	 *	@memberAc{type}
+	 *  @notifyAc{typeChanged()}
+	 * }
+	 *
+	 * @sa FileChooser::ChooserType
+	 */
+	Q_PROPERTY(ChooserType type MEMBER _type NOTIFY typeChanged)
+	/*! @brief A list of acceptable mimetypes. Can contain wildcards
+	 *
+	 * @default{`["*@/*"]` (with just 1 slash instead of `@/`)}
+	 *
+	 * @accessors{
+	 *	@memberAc{mimeTypes}
+	 *  @notifyAc{mimeTypesChanged()}
+	 * }
+	 */
+	Q_PROPERTY(QStringList mimeTypes MEMBER _mimeTypes NOTIFY mimeTypesChanged)
+	/*! @brief Additional flags to configure the chooser
+	 *
+	 * @default{`FileChooser::OpenableFlag | FileChooser::AlwaysGrantWriteFlag`}
+	 *
+	 * @accessors{
+	 *	@memberAc{chooserFlags}
+	 *  @notifyAc{chooserFlagsChanged()}
+	 * }
+	 *
+	 * @sa FileChooser::ChooserFlag
+	 */
 	Q_PROPERTY(ChooserFlags chooserFlags READ chooserFlags WRITE setChooserFlags NOTIFY chooserFlagsChanged)
 
+	/*! @brief The chooser result url(s) the user selected
+	 *
+	 * @default{Invalid}
+	 *
+	 * Can either be a single QUrl or a QList. The list is only returned when
+	 * FileChooser::OpenMultipleDocuments is used as FileChooser::type. For all other cases
+	 * a single QUrl is returned.
+	 *
+	 * @accessors{
+	 *	@memberAc{folderUrl}
+	 *  @notifyAc{folderUrlChanged()}
+	 *  @readonlyAc
+	 * }
+	 */
 	Q_PROPERTY(QVariant result READ result NOTIFY resultChanged)
 
 public:
+	//! The different modes the chooser can return urls for
 	enum ChooserType {
-		GetContent = 0,
-		OpenDocument = 1,
-		OpenMultipleDocuments = 2,
-		CreateDocument = 3,
-		OpenDocumentTree = 4
+		GetContent = 0, //!< Get a non-permanent, read only content url
+		OpenDocument = 1, //!< Get a permanent content url
+		OpenMultipleDocuments = 2, //!< Get a list of permanent content urls
+		CreateDocument = 3, //!< Create a new permanent content url
+		OpenDocumentTree = 4 //!< Get a URL to content folder
 	};
 	Q_ENUM(ChooserType)
 
+	//! Extra flags to configure how to open the URLs
 	enum ChooserFlag {
-		OpenableFlag = 0x01,
-		LocalOnlyFlag = 0x02,
-		AlwaysGrantWriteFlag = 0x04,
-		PersistPermissionsFlag = 0x08
+		OpenableFlag = 0x01, //!< The returned URL must be openable (for reading)
+		LocalOnlyFlag = 0x02, //!< Only local files are allowed
+		AlwaysGrantWriteFlag = 0x04, //!< Always allow writing, not only for FileChooser::CreateDocument
+		PersistPermissionsFlag = 0x08 //!< Persist the permission to access the content across reboots
 	};
 	Q_DECLARE_FLAGS(ChooserFlags, ChooserFlag)
 	Q_FLAG(ChooserFlags)
 
+	//! @private
 	explicit AndroidFileChooser(QObject *parent = nullptr);
 	~AndroidFileChooser();
 
-	QString title() const;
-	QUrl folderUrl() const;
-	ChooserType type() const;
-	QStringList mimeTypes() const;
+	//! @private
 	ChooserFlags chooserFlags() const;
-
+	//! @private
 	QVariant result() const;
 
+#ifdef DOXYGEN_RUN
+public:
+#else
 public Q_SLOTS:
+#endif
+	//! Opens the file chooser by sending the show intent
 	void open();
 
-	void setTitle(const QString &title);
-	void setFolderUrl(const QUrl &folderUrl);
-	void setType(ChooserType type);
-	void setMimeTypes(const QStringList &mimeTypes);
+	//! @private
 	void setChooserFlags(ChooserFlags chooserFlags);
 
 Q_SIGNALS:
+	//! Emitted when the user select a url (or multiple)
 	void accepted();
+	//! Emitted when the user cancels without selecting a url
 	void rejected();
 
+	//! @notifyAcFn{FileChooser::title}
 	void titleChanged(const QString &title);
+	//! @notifyAcFn{FileChooser::folderUrl}
 	void folderUrlChanged(const QUrl &folderUrl);
+	//! @notifyAcFn{FileChooser::type}
 	void typeChanged(ChooserType type);
+	//! @notifyAcFn{FileChooser::mimeTypes}
 	void mimeTypesChanged(const QStringList &mimeTypes);
+	//! @notifyAcFn{FileChooser::chooserFlags}
 	void chooserFlagsChanged(ChooserFlags chooserFlags);
-
+	//! @notifyAcFn{FileChooser::result}
 	void resultChanged(QVariant result);
 
 protected:
+	//! @private
 	void handleActivityResult(int receiverRequestCode, int resultCode, const QAndroidJniObject &data) override;
 
 private:
diff --git a/src/imports/mvvmquick/qqmlquickpresenter.h b/src/imports/mvvmquick/qqmlquickpresenter.h
index d506dd7..cc4c1f5 100644
--- a/src/imports/mvvmquick/qqmlquickpresenter.h
+++ b/src/imports/mvvmquick/qqmlquickpresenter.h
@@ -16,41 +16,139 @@
 
 #include 
 
+#ifdef DOXYGEN_RUN
+namespace de::skycoder42::QtMvvm::Quick {
+
+/*! @brief A QML singleton to access common presenter methods globally
+ *
+ * @since 1.0
+ *
+ * The main purpose of the class is to create a communication channel between the QML code and
+ * the C++ presenter logic.
+ *
+ * @sa QtMvvm::QuickPresenter
+ */
+class QuickPresenter : public QtObject
+#else
 namespace QtMvvm {
 
 class QQmlQuickPresenter : public QObject
+#endif
 {
 	Q_OBJECT
 
+	/*! @brief The name of the currently active Quick Controls 2 Style
+	 *
+	 * @default{`QQuickStyle::name()`}
+	 *
+	 * @accessors{
+	 *	@memberAc{currentStyle}
+	 *  @readonlyAc
+	 *  @constantAc
+	 * }
+	 */
 	Q_PROPERTY(QString currentStyle READ currentStyle CONSTANT)
+	/*! @brief The view factory provided by the C++ presenter
+	 *
+	 * @default{`QtMvvm::QuickPresenter::inputViewFactory`}
+	 *
+	 * @accessors{
+	 *	@memberAc{inputViewFactory}
+	 *  @notifyAc{inputViewFactoryChanged()}
+	 *  @readonlyAc
+	 * }
+	 */
 	Q_PROPERTY(InputViewFactory* inputViewFactory READ inputViewFactory NOTIFY inputViewFactoryChanged)
 
+	/*! @brief The primary presenter QML object.
+	 *
+	 * @default{`null`}
+	 *
+	 * This property must be set in the root QML component that is loaded by the qml
+	 * application in order to actually make presenting possible. When using the QtMvvmApp,
+	 * this is take care of automatically.
+	 *
+	 * @accessors{
+	 *	@memberAc{qmlPresenter}
+	 *  @notifyAc{qmlPresenterChanged()}
+	 * }
+	 *
+	 * @sa QtMvvmApp
+	 */
 	Q_PROPERTY(QObject* qmlPresenter MEMBER _qmlPresenter NOTIFY qmlPresenterChanged)
+	/*! @brief Specifies whether the presenter is currently loading a new view component
+	 *
+	 * @default{`false`}
+	 *
+	 * @accessors{
+	 *	@memberAc{viewLoading}
+	 *  @notifyAc{viewLoadingChanged()}
+	 *  @readonlyAc
+	 * }
+	 *
+	 * @sa QuickPresenter::loadingProgress
+	 */
 	Q_PROPERTY(bool viewLoading READ isViewLoading NOTIFY viewLoadingChanged)
+	/*! @brief Reports the current loading progress when currently loading a new view
+	 *
+	 * @default{`0.0`}
+	 *
+	 * Is limited to the interval `[0.0,0.1]`
+	 *
+	 * @accessors{
+	 *	@memberAc{loadingProgress}
+	 *  @notifyAc{loadingProgressChanged()}
+	 *  @readonlyAc
+	 * }
+	 *
+	 * @sa QuickPresenter::viewLoading
+	 */
 	Q_PROPERTY(qreal loadingProgress READ loadingProgress NOTIFY loadingProgressChanged)
 
 public:
+	//! @private
 	explicit QQmlQuickPresenter(QQmlEngine *engine);
 
+	//! @private
 	QString currentStyle() const;
+	//! @private
 	InputViewFactory* inputViewFactory() const;
-
+	//! @private
 	bool isViewLoading() const;
+	//! @private
 	qreal loadingProgress() const;
 
-	Q_INVOKABLE QStringList mimeTypeFilters(const QStringList &mimeTypes) const;
+#ifndef DOXYGEN_RUN
+#define static
+#endif
+	//! Converts a list of mimetypes into a list of extension filters, for a file dialog
+	Q_INVOKABLE static QStringList mimeTypeFilters(const QStringList &mimeTypes) const;
 
+#ifdef DOXYGEN_RUN
+public:
+#else
 public Q_SLOTS:
-	void toggleDrawer();
-	void popView();
+#endif
+	//! Toggles the state of the current drawer, if any is beeing used
+	static void toggleDrawer();
+	//! Pops the current top level view
+	static void popView();
 
-	void hapticLongPress();
+	//! Performs haptic feedback of a long press (Android only)
+	static void hapticLongPress();
+
+#ifndef DOXYGEN_RUN
+#undef static
+#endif
 
 Q_SIGNALS:
+	//! @notifyAcFn{QuickPresenter::qmlPresenter}
 	void qmlPresenterChanged(QObject* qmlPresenter);
+	//! @notifyAcFn{QuickPresenter::viewLoading}
 	void viewLoadingChanged(bool viewLoading);
+	//! @notifyAcFn{QuickPresenter::loadingProgress}
 	void loadingProgressChanged(qreal loadingProgress);
-
+	//! @notifyAcFn{QuickPresenter::inputViewFactory}
 	void inputViewFactoryChanged(InputViewFactory* inputViewFactory);
 
 private Q_SLOTS: