/*
    *
    * This file is a part of Libcprime.
    * Library for bookmarking, saving recent activites, managing settings for CuboCore Application Suite
	* Copyright 2019 CuboCore Group
    *

    *
    * This program is free software; you can redistribute it and/or modify
    * it under the terms of the GNU General Public License as published by
    * the Free Software Foundation; either version 3 of the License, or
    * (at your option) any later version.
    *

    *
    * This program is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    * GNU General Public License for more details.
    *

    *
    * You should have received a copy of the GNU General Public License
    * along with this program; if not, vsit http://www.gnu.org/licenses/.
    *
*/


#ifndef MIMEUTILS_H
#define MIMEUTILS_H

#include "libcprime_global.h"


class QFileInfo;
class DesktopFile;
class Properties;

/**
 * @class MimeUtils
 * @brief Helps with mime type management
 * @author Michal Rost
 * @date 29.4.2013
 */
class LIBCPRIMESHARED_EXPORT MimeUtils : public QObject {

    Q_OBJECT

public:
    explicit MimeUtils(QObject *parent = nullptr);
    virtual ~MimeUtils();
    void openInApp(const QFileInfo &file, QObject *processOwner = nullptr);
    void openInApp(QString exe, const QFileInfo &file, QObject *processOwner = nullptr);
    void setDefaultsFileName(const QString &fileName);
    void setDefault(const QString &mime, const QStringList &apps);
    QStringList getDefault(const QString &mime) const;
    QStringList getMimeTypes() const;
    QString getDefaultsFileName() const;
    static QList<DesktopFile> getApplications();

public slots:
    void generateDefaults();
    void saveDefaults();
    void loadDefaults();

private:
    bool defaultsChanged;
    QString defaultsFileName;
    Properties *defaults;

};

#endif // MIMEUTILS_H
