You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libfm-qt-packaging/src/core/basicfilelauncher.h

73 lines
2.0 KiB

#ifndef BASICFILELAUNCHER_H
#define BASICFILELAUNCHER_H
#include "../libfmqtglobals.h"
#include "fileinfo.h"
#include "filepath.h"
#include "mimetype.h"
#include <gio/gio.h>
namespace Fm {
class LIBFM_QT_API BasicFileLauncher {
public:
enum class ExecAction {
NONE,
DIRECT_EXEC,
EXEC_IN_TERMINAL,
OPEN_WITH_DEFAULT_APP,
CANCEL
};
explicit BasicFileLauncher();
virtual ~BasicFileLauncher();
bool launchFiles(const FileInfoList &fileInfos, GAppLaunchContext* ctx = nullptr);
bool launchPaths(FilePathList paths, GAppLaunchContext* ctx = nullptr);
bool launchDesktopEntry(const FileInfoPtr &fileInfo, const FilePathList& paths = FilePathList{}, GAppLaunchContext* ctx = nullptr);
bool launchDesktopEntry(const char* desktopEntryName, const FilePathList& paths = FilePathList{}, GAppLaunchContext* ctx = nullptr);
bool launchWithDefaultApp(const FileInfoPtr& fileInfo, GAppLaunchContext* ctx = nullptr);
bool launchWithApp(GAppInfo* app, const FilePathList& paths, GAppLaunchContext* ctx = nullptr);
bool launchExecutable(const FileInfoPtr &fileInfo, GAppLaunchContext* ctx = nullptr);
bool quickExec() const {
return quickExec_;
}
void setQuickExec(bool value) {
quickExec_ = value;
}
protected:
virtual GAppInfoPtr chooseApp(const FileInfoList& fileInfos, const char* mimeType, GErrorPtr& err);
virtual bool openFolder(GAppLaunchContext* ctx, const FileInfoList& folderInfos, GErrorPtr& err);
virtual bool showError(GAppLaunchContext* ctx, GErrorPtr& err, const FilePath& path = FilePath{}, const FileInfoPtr& info = FileInfoPtr{});
virtual ExecAction askExecFile(const FileInfoPtr& file);
virtual int ask(const char* msg, char* const* btn_labels, int default_btn);
private:
FilePath handleShortcut(const FileInfoPtr &fileInfo, GAppLaunchContext* ctx = nullptr);
private:
bool quickExec_; // Don't ask options on launch executable file
};
} // namespace Fm
#endif // BASICFILELAUNCHER_H