/* * Copyright (C) 2013 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 along * with this program. If not, see . */ #ifndef SWITCHERCONTROLLERIMPL_H #define SWITCHERCONTROLLERIMPL_H #include #include "AbstractLauncherIcon.h" #include #include "unity-shared/Introspectable.h" #include "unity-shared/MockableBaseWindow.h" #include "unity-shared/UBusWrapper.h" #include "SwitcherModel.h" #include "SwitcherView.h" #include #include #include #include namespace unity { namespace switcher { struct Controller::Impl : public sigc::trackable { Impl(Controller* obj, unsigned int load_timeout, Controller::WindowCreator const& create_window); virtual ~Impl() {} void Show(ShowMode show, SortMode sort, std::vector results); void Hide(bool accept_state); void DetailHide(); void StartDetailMode(); void StopDetailMode(); void Next(); void Prev(); void InitiateDetail(bool animate=false); void NextDetail(); void PrevDetail(); void NextDetailRow(); void PrevDetailRow(); bool HasNextDetailRow() const; bool HasPrevDetailRow() const; bool IsDetailViewShown(); void SetDetail(bool detail, unsigned int min_windows = 1); void SelectFirstItem(); virtual SwitcherView::Ptr GetView() const; ui::LayoutWindow::Vector const& ExternalRenderTargets() const; int StartIndex() const; Selection GetCurrentSelection() const; sigc::signal view_built; void ConstructWindow(); void ConstructView(); void ShowView(); void HideWindow(); void ResetDetailTimer(int timeout_length); bool OnDetailTimer(); void OnModelSelectionChanged(launcher::AbstractLauncherIcon::Ptr const& icon); void OnBackgroundUpdate(nux::Color const&); unsigned int construct_timeout_; Controller* obj_; SwitcherModel::Ptr model_; SwitcherView::Ptr view_; // @todo move these view data into the SwitcherView class Controller::WindowCreator create_window_; MockableBaseWindow::Ptr view_window_; ui::AbstractIconRenderer::Ptr icon_renderer_; nux::HLayout* main_layout_; nux::animation::AnimateValue fade_animator_; UBusManager ubus_manager_; glib::SourceManager sources_; }; } } #endif // SWITCHERCONTROLLERIMPL_H