/* Copyright (C) 2012 Hong Jen Yee (PCMan) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef FM_FILELAUNCHER_H #define FM_FILELAUNCHER_H #include "libfmqtglobals.h" #include #include namespace Fm { class LIBFM_QT_API FileLauncher { public: FileLauncher(); virtual ~FileLauncher(); bool launchFiles(QWidget* parent, FmFileInfoList* file_infos) { GList* fileList = fm_file_info_list_peek_head_link(file_infos); return launchFiles(parent, fileList); } bool launchPaths(QWidget* parent, FmPathList* paths) { GList* pathList = fm_path_list_peek_head_link(paths); return launchPaths(parent, pathList); } bool launchFiles(QWidget* parent, GList* file_infos); bool launchPaths(QWidget* parent, GList* paths); bool quickExec() const { return quickExec_; } void setQuickExec(bool value) { quickExec_ = value; } protected: virtual GAppInfo* getApp(GList* file_infos, FmMimeType* mime_type, GError** err); virtual bool openFolder(GAppLaunchContext* ctx, GList* folder_infos, GError** err); virtual FmFileLauncherExecAction execFile(FmFileInfo* file); virtual bool error(GAppLaunchContext* ctx, GError* err, FmPath* path); virtual int ask(const char* msg, char* const* btn_labels, int default_btn); private: static GAppInfo* _getApp(GList* file_infos, FmMimeType* mime_type, gpointer user_data, GError** err) { return reinterpret_cast(user_data)->getApp(file_infos, mime_type, err); } static gboolean _openFolder(GAppLaunchContext* ctx, GList* folder_infos, gpointer user_data, GError** err) { return reinterpret_cast(user_data)->openFolder(ctx, folder_infos, err); } static FmFileLauncherExecAction _execFile(FmFileInfo* file, gpointer user_data) { return reinterpret_cast(user_data)->execFile(file); } static gboolean _error(GAppLaunchContext* ctx, GError* err, FmPath* file, gpointer user_data) { return reinterpret_cast(user_data)->error(ctx, err, file); } static int _ask(const char* msg, char* const* btn_labels, int default_btn, gpointer user_data) { return reinterpret_cast(user_data)->ask(msg, btn_labels, default_btn); } private: static FmFileLauncher funcs; bool quickExec_; // Don't ask options on launch executable file }; } #endif // FM_FILELAUNCHER_H