//*****************************************************************************
// Copyright (c) 2024 Autodesk, Inc.
// All rights reserved.
//
// SPDX-License-Identifier: Apache-2.0
//
//*****************************************************************************

// IMPORTANT: This file (not the template) is auto-generated by qt2mu.py script.
//            The prefered way to do a fix is to handrolled it or modify the
//            qt2mu.py script. If it is not possible, manual editing is ok but
//            it could be lost in future generations.

#ifndef __MuQt6__QFileDialogType__h__
#define __MuQt6__QFileDialogType__h__
#include <iostream>
#include <Mu/Class.h>
#include <Mu/MuProcess.h>
#include <QtCore/QtCore>
#include <QtGui/QtGui>
#include <QtWidgets/QtWidgets>
#include <QtNetwork/QtNetwork>
#include <QtWebEngineWidgets/QtWebEngineWidgets>
#include <QtQml/QtQml>
#include <QtQuick/QtQuick>
#include <QtQuickWidgets/QtQuickWidgets>
#include <QtSvg/QtSvg>
#include <QSvgWidget>
#include <MuQt6/Bridge.h>

namespace Mu
{
    class MuQt_QFileDialog;

    class QFileDialogType : public Class
    {
    public:
        typedef MuQt_QFileDialog MuQtType;
        typedef QFileDialog QtType;

        //
        //  Constructors
        //

        QFileDialogType(Context* context, const char* name,
                        Class* superClass = 0, Class* superClass2 = 0);

        virtual ~QFileDialogType();

        static bool isInheritable() { return true; }

        static inline ClassInstance* cachedInstance(const MuQtType*);

        //
        //  Class API
        //

        virtual void load();

        MemberFunction* _func[12];
    };

    // Inheritable object

    class MuQt_QFileDialog : public QFileDialog
    {
    public:
        virtual ~MuQt_QFileDialog();
        MuQt_QFileDialog(Pointer muobj, const CallEnvironment*, QWidget* parent,
                         Qt::WindowFlags flags);
        MuQt_QFileDialog(Pointer muobj, const CallEnvironment*, QWidget* parent,
                         const QString& caption, const QString& directory,
                         const QString& filter);
        virtual void setVisible(bool visible);

    protected:
        virtual void accept();
        virtual void changeEvent(QEvent* e);
        virtual void done(int result);

    public:
        virtual QSize minimumSizeHint() const;
        virtual QSize sizeHint() const;

    protected:
        virtual void closeEvent(QCloseEvent* e);
        virtual void contextMenuEvent(QContextMenuEvent* e);
        virtual bool eventFilter(QObject* o, QEvent* e);
        virtual void keyPressEvent(QKeyEvent* e);
        virtual void resizeEvent(QResizeEvent* _p15);
        virtual void showEvent(QShowEvent* event);

    public:
        void accept_pub() { accept(); }

        void accept_pub_parent() { QFileDialog::accept(); }

        void changeEvent_pub(QEvent* e) { changeEvent(e); }

        void changeEvent_pub_parent(QEvent* e) { QFileDialog::changeEvent(e); }

        void done_pub(int result) { done(result); }

        void done_pub_parent(int result) { QFileDialog::done(result); }

        void closeEvent_pub(QCloseEvent* e) { closeEvent(e); }

        void closeEvent_pub_parent(QCloseEvent* e)
        {
            QFileDialog::closeEvent(e);
        }

        void contextMenuEvent_pub(QContextMenuEvent* e) { contextMenuEvent(e); }

        void contextMenuEvent_pub_parent(QContextMenuEvent* e)
        {
            QFileDialog::contextMenuEvent(e);
        }

        bool eventFilter_pub(QObject* o, QEvent* e)
        {
            return eventFilter(o, e);
        }

        bool eventFilter_pub_parent(QObject* o, QEvent* e)
        {
            return QFileDialog::eventFilter(o, e);
        }

        void keyPressEvent_pub(QKeyEvent* e) { keyPressEvent(e); }

        void keyPressEvent_pub_parent(QKeyEvent* e)
        {
            QFileDialog::keyPressEvent(e);
        }

        void resizeEvent_pub(QResizeEvent* _p15) { resizeEvent(_p15); }

        void resizeEvent_pub_parent(QResizeEvent* _p15)
        {
            QFileDialog::resizeEvent(_p15);
        }

        void showEvent_pub(QShowEvent* event) { showEvent(event); }

        void showEvent_pub_parent(QShowEvent* event)
        {
            QFileDialog::showEvent(event);
        }

    public:
        const QFileDialogType* _baseType;
        ClassInstance* _obj;
        const CallEnvironment* _env;
    };

    inline ClassInstance*
    QFileDialogType::cachedInstance(const QFileDialogType::MuQtType* obj)
    {
        return obj->_obj;
    }

} // namespace Mu

#endif // __MuQt__QFileDialogType__h__
