/* * Copyright 2012 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 warranties of * MERCHANTABILITY, SATISFACTORY QUALITY 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 * version 3 along with this program. If not, see * * * Authored by: Jason Smith * Tim Penhey * Marco Trevisan (TreviƱo) * */ #ifndef LAUNCHER_CONTROLLER_PRIVATE_H #define LAUNCHER_CONTROLLER_PRIVATE_H #include #include #include "AbstractLauncherIcon.h" #include "DeviceLauncherSection.h" #ifdef USE_X11 #include "EdgeBarrierController.h" #endif #include "LauncherController.h" #include "Launcher.h" #include "LauncherEntryRemote.h" #include "LauncherEntryRemoteModel.h" #include "LauncherModel.h" #include "BFBLauncherIcon.h" #include "HudLauncherIcon.h" #include "SoftwareCenterLauncherIcon.h" #include "unity-shared/UBusWrapper.h" #include "XdndManager.h" namespace unity { namespace launcher { class Controller::Impl : public sigc::trackable { public: Impl(Controller* parent, XdndManager::Ptr const& xdnd_manager, ui::EdgeBarrierController::Ptr const& edge_barriers); ~Impl(); void UpdateNumWorkspaces(int workspaces); Launcher* CreateLauncher(); void SaveIconsOrder(); void SortAndUpdate(); nux::ObjectPtr CurrentLauncher(); template int GetLastIconPriority(std::string const& favorite_uri = "", bool sticky = false); void AddFavoriteKeepingOldPosition(FavoriteList& icons, std::string const& icon_uri) const; void OnIconRemoved(AbstractLauncherIcon::Ptr const& icon); void OnDeviceIconAdded(AbstractLauncherIcon::Ptr const& icon); void OnLauncherAddRequest(std::string const& icon_uri, AbstractLauncherIcon::Ptr const& before); void OnLauncherAddRequestSpecial(std::string const& appstream_app_id, std::string const& aptdaemon_trans_id); void OnLauncherUpdateIconStickyState(std::string const& desktop_file, bool sticky); void OnLauncherRemoveRequest(AbstractLauncherIcon::Ptr const& icon); void OnLauncherEntryRemoteAdded(LauncherEntryRemote::Ptr const& entry); void OnLauncherEntryRemoteRemoved(LauncherEntryRemote::Ptr const& entry); void OnFavoriteStoreFavoriteAdded(std::string const& entry, std::string const& pos, bool before); void OnFavoriteStoreFavoriteRemoved(std::string const& entry); void ResetIconPriorities(); void SendHomeActivationRequest(); int MonitorWithMouse(); void RegisterIcon(AbstractLauncherIcon::Ptr const& icon, int priority = std::numeric_limits::min()); ApplicationLauncherIcon* CreateAppLauncherIcon(ApplicationPtr const&); AbstractLauncherIcon::Ptr CreateFavoriteIcon(std::string const& icon_uri, bool emit_signal = false); AbstractLauncherIcon::Ptr GetIconByUri(std::string const& icon_uri); SoftwareCenterLauncherIcon::Ptr CreateSCLauncherIcon(std::string const& appstream_app_id, std::string const& aptdaemon_trans_id); void SetupIcons(); void MigrateFavorites(); void AddRunningApps(); void AddDevices(); void EnsureLaunchers(int primary, std::vector const& monitors); void OnWindowFocusChanged (guint32 xid); void OnApplicationStarted(ApplicationPtr const& app); void ReceiveMouseDownOutsideArea(int x, int y, unsigned long button_flags, unsigned long key_flags); void ReceiveLauncherKeyPress(unsigned long eventType, unsigned long keysym, unsigned long state, const char* character, unsigned short keyCount); void OpenQuicklist(); void OnDndStarted(std::string const& data, int monitor); void OnDndFinished(); void OnDndMonitorChanged(std::string const& data, int old_monitor, int new_monitor); GVariant* OnDBusMethodCall(std::string const& method, GVariant *parameters); Controller* parent_; LauncherModel::Ptr model_; nux::ObjectPtr launcher_; nux::ObjectPtr keyboard_launcher_; XdndManager::Ptr xdnd_manager_; DeviceLauncherSection::Ptr device_section_; LauncherEntryRemoteModel remote_model_; BFBLauncherIcon* bfb_icon_; HudLauncherIcon* hud_icon_; AbstractLauncherIcon::Ptr expo_icon_; AbstractLauncherIcon::Ptr desktop_icon_; #ifdef USE_X11 ui::EdgeBarrierController::Ptr edge_barriers_; #endif LauncherList launchers; unsigned sort_priority_; bool launcher_open; bool launcher_keynav; bool launcher_grabbed; int reactivate_index; bool keynav_restore_window_; int launcher_key_press_time_; glib::DBusServer dbus_server_; glib::SourceManager sources_; UBusManager ubus; connection::Wrapper launcher_key_press_connection_; connection::Wrapper launcher_event_outside_connection_; connection::Wrapper launcher_key_nav_terminate_; }; } // launcher namespace } // unity namespace #endif