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 "PositionObserver.h"
0007 #include <QQmlContext>
0008 #include <QQmlEngine>
0009 #include <QQuickItem>
0010 #include <QQuickView>
0011 
0012 namespace RemoteControl
0013 {
0014 
0015 static QQuickView *m_view = nullptr;
0016 
0017 QQuickItem *findItem(const QString &name)
0018 {
0019     return m_view->rootObject()->findChild<QQuickItem *>(name);
0020 }
0021 
0022 void PositionObserver::setView(QQuickView *view)
0023 {
0024     Q_ASSERT(m_view == nullptr);
0025     m_view = view;
0026 }
0027 
0028 void setOffset(const QString &view, int index)
0029 {
0030     QQuickItem *item = findItem(view);
0031     Q_ASSERT(item);
0032     item->setProperty("index", index);
0033 }
0034 
0035 int getOffset(const QString &view)
0036 {
0037     QQuickItem *item = findItem(view);
0038     Q_ASSERT(item);
0039 
0040     QVariant value;
0041     QMetaObject::invokeMethod(item, "getIndex", Qt::DirectConnection, Q_RETURN_ARG(QVariant, value));
0042 
0043     return value.value<int>();
0044 }
0045 
0046 void PositionObserver::setCategoryIconViewOffset(int index)
0047 {
0048     setOffset("categoryPage", index);
0049 }
0050 
0051 int PositionObserver::categoryIconViewOffset()
0052 {
0053     return getOffset("categoryPage");
0054 }
0055 
0056 int PositionObserver::thumbnailOffset()
0057 {
0058     return getOffset("thumbnailsPage");
0059 }
0060 
0061 void PositionObserver::setCategoryListViewOffset(int index)
0062 {
0063     setOffset("listViewPageObserver", index);
0064 }
0065 
0066 int PositionObserver::categoryListViewOffset()
0067 {
0068     return getOffset("listViewPageObserver");
0069 }
0070 
0071 void RemoteControl::PositionObserver::setThumbnailOffset(int index)
0072 {
0073     setOffset("thumbnailsPage", index);
0074 }
0075 
0076 } // namespace RemoteControl