Warning, /plasma/discover/discover/qml/CarouselMaximizedViewController.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * SPDX-FileCopyrightText: 2023 ivan tkachenko <me@ratijas.tk> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 import QtQuick 0008 import org.kde.kirigami as Kirigami 0009 import org.kde.discover as Discover 0010 0011 QtObject { 0012 id: root 0013 0014 signal currentIndexChanged(currentIndex: int) 0015 0016 readonly property bool fullScreenModeAvailable: !Kirigami.Settings.isMobile 0017 0018 enum Mode { 0019 FullScreen, 0020 Overlay 0021 } 0022 0023 property /*Mode*/ int __mode: CarouselMaximizedViewController.Mode.Overlay 0024 0025 property CarouselAbstractMaximizedView __view 0026 0027 function open(transientParent: Window, model: Discover.ScreenshotsModel, currentIndex: int) { 0028 if (__view) { 0029 if (__view.transientParent === transientParent && __view.model === model) { 0030 __view.currentIndex = currentIndex; 0031 return; 0032 } else { 0033 close(false); 0034 } 0035 } 0036 __view = __createView(transientParent, model, currentIndex); 0037 } 0038 0039 function close(animated: bool) { 0040 __view?.close(animated); 0041 __view = null; 0042 } 0043 0044 function __otherMode() { 0045 return __mode !== CarouselMaximizedViewController.Mode.FullScreen && fullScreenModeAvailable 0046 ? CarouselMaximizedViewController.Mode.FullScreen 0047 : CarouselMaximizedViewController.Mode.Overlay; 0048 } 0049 0050 function toggleMode() { 0051 if (!__view) { 0052 __mode = __otherMode(); 0053 return; 0054 } 0055 const { transientParent, model, currentIndex } = __view; 0056 close(false); 0057 __mode = __otherMode(); 0058 open(transientParent, model, currentIndex); 0059 } 0060 0061 function __createView(transientParent: Window, model: Discover.ScreenshotsModel, currentIndex: int): CarouselAbstractMaximizedView { 0062 let component = null; 0063 switch (__mode) { 0064 case CarouselMaximizedViewController.Mode.FullScreen: 0065 component = Qt.createComponent("./CarouselFullScreenMaximizedView.qml"); 0066 break; 0067 case CarouselMaximizedViewController.Mode.Overlay: 0068 component = Qt.createComponent("./CarouselOverlayMaximizedView.qml"); 0069 break; 0070 default: 0071 return null; 0072 } 0073 if (!component) { 0074 console.error("Can not create maximized view component"); 0075 return null; 0076 } 0077 const view = component.createObject(this, { 0078 transientParent, 0079 model, 0080 currentIndex, 0081 toggleModeAvailable: fullScreenModeAvailable 0082 }); 0083 if (!view) { 0084 console.error("Can not create maximized view"); 0085 return null; 0086 } 0087 return view; 0088 } 0089 0090 property list<QtObject> data: [ 0091 Connections { 0092 target: root.__view 0093 0094 function onCurrentIndexChanged() { 0095 root.currentIndexChanged(root.__view.currentIndex) 0096 } 0097 0098 function onToggleMode() { 0099 root.toggleMode(); 0100 } 0101 } 0102 ] 0103 }