/*
 * Copyright (c) Contributors to the Open 3D Engine Project.
 * For complete copyright and license terms please see the LICENSE at the root of this distribution.
 *
 * SPDX-License-Identifier: Apache-2.0 OR MIT
 *
 */


// Description : These are helper classes for containing the data from the
//               generic overwrite dialog.

#ifndef CRYINCLUDE_EDITOR_DIALOGS_GENERIC_USEROPTIONS_H
#define CRYINCLUDE_EDITOR_DIALOGS_GENERIC_USEROPTIONS_H
#pragma once


// Small helper class.
// Hint: have one for files and other for directories.
// Hint: used a CUserOptionsReferenceCountHelper to automatically control the reference counts
// of any CUserOptions variable: usefull for recursion when you don't want to use
// only static variables. See example in FileUtill.cpp, function CopyTree.
class CUserOptions
{
    //////////////////////////////////////////////////////////////////////////
    // Types & typedefs
public:
    enum EOption
    {
        ENotSet,
        EYes = 6,
        ENo = 7,
        ECancel = 2,
    };

    class CUserOptionsReferenceCountHelper
    {
    public:
        CUserOptionsReferenceCountHelper(CUserOptions& roUserOptions);
        virtual ~CUserOptionsReferenceCountHelper();
    protected:
        CUserOptions&   m_roReferencedUserOptionsObject;
    };
protected:
private:
    //////////////////////////////////////////////////////////////////////////

    //////////////////////////////////////////////////////////////////////////
    // Methods
public:
    CUserOptions();

    bool        IsOptionValid();

    int         GetOption();

    bool        IsOptionToAll();

    void        SetOption(int   nNewOption, bool boToAll);

    int DecRef();
    int IncRef();
protected:
private:
    //////////////////////////////////////////////////////////////////////////

    //////////////////////////////////////////////////////////////////////////
    // Data
public:
protected:
    int                         m_nCurrentOption;
    bool                        m_boToAll;
    int                         m_nNumberOfReferences;
private:
    //////////////////////////////////////////////////////////////////////////
};
#endif // CRYINCLUDE_EDITOR_DIALOGS_GENERIC_USEROPTIONS_H
