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 }