class Core::Portable::SettingFileHandler

Persistent application settings file handler.

#include <corepersistence.h>

class SettingFileHandler
{
public:
    // enums

    enum Flags;
    enum InternalFlags;

    // fields

     kDirty;
    isDirty PROPERTY_VARIABLE(int, streamSizeEstimate, StreamSizeEstimate) protected FileName filename;
    FileName altFilename;
     kCompress;
    isCompressed int flags;

    // methods

    void init(
        CStringPtr companyName,
        CStringPtr productName,
        CStringPtr productFileName = nullptr,
        Archiver::Format format = Archiver::kJSON,
        int flags = 0
    );

    Archiver::Format getArchiveFormat() const;
    const FileName& getFileName() const;
    bool swapFileName();
    bool setFileModifyTimesToCurrent();

    FileIOTaskID saveInBackground(
        ArchiveUtils::AttributesPromise* promise,
        FileIOCompletionHandler* completionHandler
    );

    bool loadAttributes(Attributes& attributes, bool inplace = false);
    FileStorageContext::Mode getStorageMode(bool saving) const;
    PROPERTY_FLAG(flags, kAlternateFileNames, alternateFileNames);
    PROPERTY_FLAG(flags, kUseAltFileName, useAltFileName);
};

// direct descendants

class SettingFile;