File indexing completed on 2024-04-28 15:39:41

0001 /* SPDX-FileCopyrightText: 2014 Jesper K. Pedersen <blackie@kde.org>
0002 
0003    SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "Action.h"
0007 #include "PositionObserver.h"
0008 #include "RemoteInterface.h"
0009 #include "ScreenInfo.h"
0010 
0011 extern QQuickView *view;
0012 
0013 namespace RemoteControl
0014 {
0015 
0016 Action::Action(const SearchInfo &searchInfo)
0017     : m_searchInfo(searchInfo)
0018 {
0019 }
0020 
0021 void Action::run()
0022 {
0023     execute();
0024     RemoteInterface::instance().m_search = m_searchInfo;
0025 }
0026 
0027 void Action::setCurrentPage(Page page)
0028 {
0029     RemoteInterface::instance().setCurrentPage(page);
0030 }
0031 
0032 void Action::sendCommand(const RemoteCommand &command)
0033 {
0034     RemoteInterface::instance().sendCommand(command);
0035 }
0036 
0037 void Action::clearCategoryModel()
0038 {
0039     RemoteInterface::instance().m_categoryItems->setImages({});
0040 }
0041 
0042 ShowOverviewAction::ShowOverviewAction(const SearchInfo &searchInfo)
0043     : Action(searchInfo)
0044 {
0045 }
0046 
0047 void ShowOverviewAction::execute()
0048 {
0049     int size = ScreenInfo::instance().overviewIconSize();
0050     sendCommand(SearchRequest(SearchType::Categories, m_searchInfo, size));
0051     setCurrentPage(Page::OverviewPage);
0052 }
0053 
0054 ShowCategoryValueAction::ShowCategoryValueAction(const SearchInfo &searchInfo, CategoryViewType type)
0055     : Action(searchInfo)
0056     , m_type(type)
0057 {
0058 }
0059 
0060 void ShowCategoryValueAction::execute()
0061 {
0062     sendCommand(SearchRequest(SearchType::CategoryItems, m_searchInfo));
0063     clearCategoryModel();
0064     if (m_type == CategoryViewType::CategoryIconView) {
0065         PositionObserver::setCategoryIconViewOffset(m_index);
0066         setCurrentPage(Page::CategoryItemsPage);
0067     } else {
0068         PositionObserver::setCategoryListViewOffset(m_index);
0069         setCurrentPage(Page::CategoryListPage);
0070     }
0071 }
0072 
0073 void ShowCategoryValueAction::save()
0074 {
0075     if (m_type == CategoryViewType::CategoryIconView)
0076         m_index = PositionObserver::categoryIconViewOffset();
0077     else
0078         m_index = PositionObserver::categoryListViewOffset();
0079 }
0080 
0081 ShowThumbnailsAction::ShowThumbnailsAction(const SearchInfo &searchInfo)
0082     : Action(searchInfo)
0083 {
0084 }
0085 
0086 void ShowThumbnailsAction::execute()
0087 {
0088     sendCommand(SearchRequest(SearchType::Images, m_searchInfo));
0089     RemoteInterface::instance().setActiveThumbnailModel(RemoteInterface::ModelType::Thumbnail);
0090     setCurrentPage(Page::ThumbnailsPage);
0091 
0092     PositionObserver::setThumbnailOffset(m_index);
0093 }
0094 
0095 void ShowThumbnailsAction::save()
0096 {
0097     m_index = PositionObserver::thumbnailOffset();
0098 }
0099 
0100 ShowImagesAction::ShowImagesAction(int imageId, const SearchInfo &searchInfo)
0101     : Action(searchInfo)
0102     , m_imageId(imageId)
0103 {
0104 }
0105 
0106 void ShowImagesAction::execute()
0107 {
0108     setCurrentPage(Page::ImageViewerPage);
0109     RemoteInterface::instance().setCurrentView(m_imageId);
0110 }
0111 
0112 DiscoverAction::DiscoverAction(const SearchInfo &searchInfo, DiscoveryModel *model)
0113     : Action(searchInfo)
0114     , m_model(model)
0115 {
0116 }
0117 
0118 void DiscoverAction::setCurrentSelection(const QList<int> &selection, const QList<int> &allImages)
0119 {
0120     m_currentSelection = selection;
0121     m_allImages = allImages;
0122 }
0123 
0124 void DiscoverAction::execute()
0125 {
0126     RemoteInterface::instance().setActiveThumbnailModel(RemoteInterface::ModelType::Discovery);
0127 
0128     if (m_currentSelection.isEmpty())
0129         sendCommand(SearchRequest(SearchType::Images, m_searchInfo));
0130     else
0131         m_model->setCurrentSelection(m_currentSelection, m_allImages);
0132 
0133     m_model->setCurrentAction(this);
0134     setCurrentPage(Page::DiscoverPage);
0135 }
0136 
0137 } // namespace RemoteControl