// -*- c++ -*- // Generated by gtkmmproc -- DO NOT MODIFY! #ifndef _GIOMM_VOLUMEMONITOR_H #define _GIOMM_VOLUMEMONITOR_H #include // -*- Mode: C++; indent-tabs-mode: nil; c-basic-offset: 2 -*- /* Copyright (C) 2007 The gtkmm Development Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef struct _GVolumeMonitor GVolumeMonitor; typedef struct _GVolumeMonitorClass GVolumeMonitorClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Gio { class VolumeMonitor_Class; } // namespace Gio namespace Gio { /** Monitors a file or directory for changes. * VolumeMonitor is for listing the user-interesting devices and volumes on the * computer. In other words, what a file selector or file manager would show in * a sidebar. * * @newin2p16 */ class VolumeMonitor : public Glib::Object { #ifndef DOXYGEN_SHOULD_SKIP_THIS public: typedef VolumeMonitor CppObjectType; typedef VolumeMonitor_Class CppClassType; typedef GVolumeMonitor BaseObjectType; typedef GVolumeMonitorClass BaseClassType; private: friend class VolumeMonitor_Class; static CppClassType volumemonitor_class_; private: // noncopyable VolumeMonitor(const VolumeMonitor&); VolumeMonitor& operator=(const VolumeMonitor&); protected: explicit VolumeMonitor(const Glib::ConstructParams& construct_params); explicit VolumeMonitor(GVolumeMonitor* castitem); #endif /* DOXYGEN_SHOULD_SKIP_THIS */ public: virtual ~VolumeMonitor(); #ifndef DOXYGEN_SHOULD_SKIP_THIS static GType get_type() G_GNUC_CONST; static GType get_base_type() G_GNUC_CONST; #endif ///Provides access to the underlying C GObject. GVolumeMonitor* gobj() { return reinterpret_cast(gobject_); } ///Provides access to the underlying C GObject. const GVolumeMonitor* gobj() const { return reinterpret_cast(gobject_); } ///Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. GVolumeMonitor* gobj_copy(); private: protected: public: /** Gets the volume monitor used by gio. * @return A reference to the VolumeMonitor used by gio. Call * Glib::object_unref() when done with it. */ static Glib::RefPtr get(); /** Gets a list of drives connected to the system. * * The returned list should be freed with Glib::list_free(), after * its elements have been unreffed with Glib::object_unref(). * @return A List of connected Drive<!-- -->s. */ Glib::ListHandle< Glib::RefPtr > get_connected_drives(); /** Gets a list of the volumes on the system. * * The returned list should be freed with Glib::list_free(), after * its elements have been unreffed with Glib::object_unref(). * @return A List of Volume<!-- -->s. */ Glib::ListHandle< Glib::RefPtr > get_volumes(); /** Gets a list of the mounts on the system. * * The returned list should be freed with Glib::list_free(), after * its elements have been unreffed with Glib::object_unref(). * @return A List of Mount<!-- -->s. */ Glib::ListHandle< Glib::RefPtr > get_mounts(); /** Finds a Volume object by it's UUID (see g_volume_get_uuid()) * @param uuid The UUID to look for. * @return A Volume or 0 if no such volume is available. */ Glib::RefPtr get_volume_for_uuid(const std::string& uuid); /** Finds a Mount object by it's UUID (see g_mount_get_uuid()) * @param uuid The UUID to look for. * @return A Mount or 0 if no such mount is available. */ Glib::RefPtr get_mount_for_uuid(const std::string& uuid); /** This function should be called by any VolumeMonitor * implementation when a new Mount object is created that is not * associated with a Volume object. It must be called just before * emitting the @a mount_added signal. * * If the return value is not 0, the caller must associate the * returned Volume object with the Mount. This involves returning * it in it's g_mount_get_volume() implementation. The caller must * also listen for the "removed" signal on the returned object * and give up it's reference when handling that signal * * Similary, if implementing g_volume_monitor_adopt_orphan_mount(), * the implementor must take a reference to @a mount and return it in * it's g_volume_get_mount() implemented. Also, the implementor must * listen for the "unmounted" signal on @a mount and give up it's * reference upon handling that signal. * * There are two main use cases for this function. * * One is when implementing a user space file system driver that reads * blocks of a block device that is already represented by the native * volume monitor (for example a CD Audio file system driver). Such * a driver will generate it's own Mount object that needs to be * assoicated with the Volume object that represents the volume. * * The other is for implementing a VolumeMonitor whose sole purpose * is to return Volume objects representing entries in the users * "favorite servers" list or similar. * @param mount A Mount object to find a parent for. * @return The Volume object that is the parent for @a mount or 0 * if no wants to adopt the Mount. */ static Glib::RefPtr adopt_orphan_mount(const Glib::RefPtr& mount); /** * @par Prototype: * void on_my_%volume_added(const Glib::RefPtr& volume) */ Glib::SignalProxy1< void,const Glib::RefPtr& > signal_volume_added(); /** * @par Prototype: * void on_my_%volume_removed(const Glib::RefPtr& volume) */ Glib::SignalProxy1< void,const Glib::RefPtr& > signal_volume_removed(); /** * @par Prototype: * void on_my_%volume_changed(const Glib::RefPtr& volume) */ Glib::SignalProxy1< void,const Glib::RefPtr& > signal_volume_changed(); /** * @par Prototype: * void on_my_%mount_added(const Glib::RefPtr& mount) */ Glib::SignalProxy1< void,const Glib::RefPtr& > signal_mount_added(); /** * @par Prototype: * void on_my_%mount_removed(const Glib::RefPtr& mount) */ Glib::SignalProxy1< void,const Glib::RefPtr& > signal_mount_removed(); /** * @par Prototype: * void on_my_%mount_pre_unmount(const Glib::RefPtr& mount) */ Glib::SignalProxy1< void,const Glib::RefPtr& > signal_mount_pre_unmount(); /** * @par Prototype: * void on_my_%mount_changed(const Glib::RefPtr& mount) */ Glib::SignalProxy1< void,const Glib::RefPtr& > signal_mount_changed(); /** * @par Prototype: * void on_my_%drive_connected(const Glib::RefPtr& drive) */ Glib::SignalProxy1< void,const Glib::RefPtr& > signal_drive_connected(); /** * @par Prototype: * void on_my_%drive_disconnected(const Glib::RefPtr& drive) */ Glib::SignalProxy1< void,const Glib::RefPtr& > signal_drive_disconnected(); /** * @par Prototype: * void on_my_%drive_changed(const Glib::RefPtr& drive) */ Glib::SignalProxy1< void,const Glib::RefPtr& > signal_drive_changed(); //TODO: Remove no_default_handler when we can break ABI: /** * @par Prototype: * void on_my_%drive_eject_button(const Glib::RefPtr& drive) */ Glib::SignalProxy1< void,const Glib::RefPtr& > signal_drive_eject_button(); gboolean (*is_supported) (void); //TODO: Use ListHandle? //_WRAP_VFUNC(GList* get_volumes(), get_volumes) //_WRAP_VFUNC(GList* get_mounts(), get_mounts) //_WRAP_VFUNC(Glib::RefPtr get_volume_for_uuid(const std::string& uuid), get_volume_for_uuid) //_WRAP_VFUNC(Glib::RefPtr get_mount_for_uuid(const std::string& uuid), get_mount_for_uuid) //There are no properties. public: public: //C++ methods used to invoke GTK+ virtual functions: #ifdef GLIBMM_VFUNCS_ENABLED #endif //GLIBMM_VFUNCS_ENABLED protected: //GTK+ Virtual Functions (override these to change behaviour): #ifdef GLIBMM_VFUNCS_ENABLED #endif //GLIBMM_VFUNCS_ENABLED //Default Signal Handlers:: #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED virtual void on_volume_added(const Glib::RefPtr& volume); virtual void on_volume_removed(const Glib::RefPtr& volume); virtual void on_volume_changed(const Glib::RefPtr& volume); virtual void on_mount_added(const Glib::RefPtr& mount); virtual void on_mount_removed(const Glib::RefPtr& mount); virtual void on_mount_pre_unmount(const Glib::RefPtr& mount); virtual void on_mount_changed(const Glib::RefPtr& mount); virtual void on_drive_connected(const Glib::RefPtr& drive); virtual void on_drive_disconnected(const Glib::RefPtr& drive); virtual void on_drive_changed(const Glib::RefPtr& drive); #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED }; } // namespace Gio namespace Glib { /** A Glib::wrap() method for this object. * * @param object The C instance. * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref. * @result A C++ instance that wraps this C instance. * * @relates Gio::VolumeMonitor */ Glib::RefPtr wrap(GVolumeMonitor* object, bool take_copy = false); } #endif /* _GIOMM_VOLUMEMONITOR_H */