|  | /*
 * Carla plugin host
 * Copyright (C) 2011-2023 Filipe Coelho <falktx@falktx.com>
 * SPDX-License-Identifier: GPL-2.0-or-later
 */
#pragma once
#include "CarlaFrontend.h"
#ifdef __clang__
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wdeprecated-copy-with-user-provided-copy"
# pragma clang diagnostic ignored "-Wdeprecated-register"
#elif defined(__GNUC__) && __GNUC__ >= 8
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wclass-memaccess"
# pragma GCC diagnostic ignored "-Wdeprecated-copy"
#endif
#include <QtWidgets/QDialog>
#ifdef __clang__
# pragma clang diagnostic pop
#elif defined(__GNUC__) && __GNUC__ >= 8
# pragma GCC diagnostic pop
#endif
#include "ui_pluginlistdialog.h"
class QSafeSettings;
typedef struct _CarlaPluginDiscoveryInfo CarlaPluginDiscoveryInfo;
typedef struct _HostSettings HostSettings;
struct PluginInfo;
// --------------------------------------------------------------------------------------------------------------------
// Plugin List Dialog
class PluginListDialog : public QDialog
{
    enum TableIndex {
        TW_FAVORITE,
        TW_NAME,
        TW_LABEL,
        TW_MAKER,
        TW_BINARY,
    };
    enum UserRoles {
        UR_PLUGIN_INFO = 1,
        UR_SEARCH_TEXT,
    };
    struct PrivateData;
    PrivateData *const p;
    Ui_PluginListDialog ui;
    // ----------------------------------------------------------------------------------------------------------------
    // public methods
public:
    explicit PluginListDialog(QWidget* parent, const HostSettings* hostSettings);
    ~PluginListDialog() override;
    const PluginInfo& getSelectedPluginInfo() const;
    void addPluginInfo(const CarlaPluginDiscoveryInfo* info, const char* sha1sum);
    bool checkPluginCache(const char* filename, const char* sha1sum);
    void setPluginPath(PluginType ptype, const char* path);
    // ----------------------------------------------------------------------------------------------------------------
    // protected methods
protected:
    void done(int) override;
    void showEvent(QShowEvent*) override;
    void timerEvent(QTimerEvent*) override;
    // ----------------------------------------------------------------------------------------------------------------
    // private methods
private:
    void addPluginsToTable();
    void loadSettings();
    // ----------------------------------------------------------------------------------------------------------------
    // private slots
private Q_SLOTS:
    void cellClicked(int row, int column);
    void cellDoubleClicked(int row, int column);
    void focusSearchFieldAndSelectAll();
    void checkFilters();
    void checkFiltersCategoryAll(bool clicked);
    void checkFiltersCategorySpecific(bool clicked);
    void clearFilters();
    void checkPlugin(int row);
    void refreshPlugins();
    void refreshPluginsStart();
    void refreshPluginsStop();
    void refreshPluginsSkip();
    void saveSettings();
};
// --------------------------------------------------------------------------------------------------------------------
 |