Back to index

unity  6.0.0
TrashLauncherIcon.h
Go to the documentation of this file.
00001 // -*- Mode: C++; indent-tabs-mode: nil; tab-width: 2 -*-
00002 /*
00003  * Copyright (C) 2010 Canonical Ltd
00004  *
00005  * This program is free software: you can redistribute it and/or modify
00006  * it under the terms of the GNU General Public License version 3 as
00007  * published by the Free Software Foundation.
00008  *
00009  * This program is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
00016  *
00017  * Authored by: Jason Smith <jason.smith@canonical.com>
00018  */
00019 
00020 #ifndef TRASHLAUNCHERICON_H
00021 #define TRASHLAUNCHERICON_H
00022 
00023 #include <gio/gio.h>
00024 #include <UnityCore/GLibDBusProxy.h>
00025 #include <UnityCore/GLibWrapper.h>
00026 
00027 #include "DndData.h"
00028 #include "SimpleLauncherIcon.h"
00029 
00030 namespace unity
00031 {
00032 namespace launcher
00033 {
00034 
00035 class TrashLauncherIcon : public SimpleLauncherIcon
00036 {
00037 
00038 public:
00039   TrashLauncherIcon();
00040   ~TrashLauncherIcon();
00041 
00042 protected:
00043   void UpdateTrashIcon();
00044 
00045   nux::DndAction OnQueryAcceptDrop(DndData const& dnd_data);
00046   bool OnShouldHighlightOnDrag(DndData const& dnd_data);
00047   void OnAcceptDrop(DndData const& dnd_data);
00048 
00049   std::string GetName() const;
00050 
00051 private:
00052   gulong on_trash_changed_handler_id_;
00053   glib::Object<GFileMonitor> trash_monitor_;
00054   gboolean empty_;
00055   glib::DBusProxy proxy_;
00056 
00057   void ActivateLauncherIcon(ActionArg arg);
00058   std::list<DbusmenuMenuitem*> GetMenus();
00059 
00060   static void UpdateTrashIconCb(GObject* source, GAsyncResult* res, gpointer data);
00061   static void OnTrashChanged(GFileMonitor* monitor, GFile* file, GFile* other_file,
00062                              GFileMonitorEvent event_type, gpointer data);
00063   static void OnEmptyTrash(DbusmenuMenuitem* item, int time, TrashLauncherIcon* self);
00064 };
00065 
00066 }
00067 } // namespace unity
00068 
00069 #endif // TRASHLAUNCHERICON_H