File indexing completed on 2024-05-12 12:20:20
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