// -*- Mode: C++; indent-tabs-mode: nil; tab-width: 2 -*- /* * Copyright (C) 2011 Canonical Ltd * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as * published by the Free Software Foundation. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authored by: Mikkel Kamstrup Erlandsen */ #ifndef LAUNCHER_ENTRY_REMOTE_H #define LAUNCHER_ENTRY_REMOTE_H #include #include #include #include #include #include #include "unity-shared/Introspectable.h" namespace unity { /** * Instances of this class mirrors the remote metadata for a laucnher entry * exposed by an application via the com.canonical.Unity.LauncherEntry DBus API. * * You do not create instances of LauncherEntryRemote yourself. Instead they * are created and managed dynamically by a LauncherEntryRemoteModel. */ class LauncherEntryRemote : public sigc::trackable, public unity::debug::Introspectable { public: typedef std::shared_ptr Ptr; LauncherEntryRemote(std::string const& dbus_name, GVariant* val); std::string const& AppUri() const; std::string const& DBusName() const; std::string const& Emblem() const; long long Count() const; double Progress() const; glib::Object const& Quicklist() const; bool EmblemVisible() const; bool CountVisible() const; bool ProgressVisible() const; bool Urgent() const; /// Update this instance using details from another: void Update(LauncherEntryRemote::Ptr const& other); /// Update this instance from a GVariant property iterator. void Update(GVariantIter* prop_iter); /// Set a new DBus name. This destroys the current quicklist. void SetDBusName(std::string const& dbus_name); // from Introspectable: std::string GetName() const; void AddProperties(GVariantBuilder* builder); sigc::signal dbus_name_changed; // gives the old name as arg sigc::signal emblem_changed; sigc::signal count_changed; sigc::signal progress_changed; sigc::signal quicklist_changed; sigc::signal emblem_visible_changed; sigc::signal count_visible_changed; sigc::signal progress_visible_changed; sigc::signal urgent_changed; private: std::string _dbus_name; std::string _app_uri; std::string _emblem; long long _count; double _progress; std::string _quicklist_dbus_path; glib::Object _quicklist; bool _emblem_visible; bool _count_visible; bool _progress_visible; bool _urgent; void SetEmblem(std::string const& emblem); void SetCount(long long count); void SetProgress(double progress); void SetQuicklistPath(std::string const& dbus_path); void SetQuicklist(DbusmenuClient* quicklist); void SetEmblemVisible(bool visible); void SetCountVisible(bool visible); void SetProgressVisible(bool visible); void SetUrgent(bool urgent); }; } // namespace #endif // LAUNCHER_ENTRY_REMOTE_H