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 }