summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio
diff options
context:
space:
mode:
Diffstat (limited to 'src/Authoring/Studio')
-rw-r--r--src/Authoring/Studio/Controls/BreadCrumbControl.cpp2
-rw-r--r--src/Authoring/Studio/Controls/BreadCrumbControl.h2
-rw-r--r--src/Authoring/Studio/Palettes/PaletteManager.cpp1
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/AbstractTimelineRowUI.cpp81
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/AbstractTimelineRowUI.h95
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/BaseStateRow.cpp740
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/BaseStateRow.h147
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/GroupTimelineItemBinding.cpp1
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/GroupTimelineItemBinding.h1
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/IBreadCrumbProvider.h (renamed from src/Authoring/Studio/Palettes/Timeline/IBreadCrumbProvider.h)0
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/IKeyframeSelector.h52
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/ITimelineItem.h2
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/ITimelineItemBinding.h22
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/ITimelineItemProperty.h13
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/ImageTimelineItemBinding.cpp7
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/ImageTimelineItemBinding.h2
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/KeyframesManager.cpp507
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/KeyframesManager.h108
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/LayerTimelineItemBinding.cpp81
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.cpp129
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.h1
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/PathAnchorPointTimelineItemBinding.h1
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/PathTimelineItemBinding.h1
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp251
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.h25
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemProperty.cpp127
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemProperty.h13
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineTimebar.cpp1
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/SlideTimelineItemBinding.cpp7
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/SlideTimelineItemBinding.h18
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/TimelineTranslationManager.cpp410
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Bindings/TimelineTranslationManager.h78
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/ColorBlankControl.cpp86
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/ColorBlankControl.h60
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/ColorControl.cpp307
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/ColorControl.h98
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/CommentEdit.cpp231
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/CommentEdit.h77
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/ITimelineControl.h53
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/KeyframeContextMenu.cpp412
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/KeyframeContextMenu.h153
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Keyframes.qml55
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/MultiSelectAspect.h148
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/PlayHead.qml51
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/PropertyColorControl.cpp89
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/PropertyColorControl.h55
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/PropertyGraphKeyframe.cpp152
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/PropertyGraphKeyframe.h73
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/PropertyRow.cpp161
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/PropertyRow.h103
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/PropertyTimebarGraph.cpp234
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/PropertyTimebarGraph.h70
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/ScalableScroller.cpp78
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/ScalableScroller.h57
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/ScalableScrollerBar.cpp348
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/ScalableScrollerBar.h112
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/SlideRow.cpp81
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/SlideRow.h57
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Snapper.cpp455
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Snapper.h118
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/StateRow.cpp218
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/StateRow.h83
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/StateRowFactory.cpp56
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/StateRowFactory.h49
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimeMeasureItem.cpp207
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimeMeasureItem.h63
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimePropertyItem.cpp144
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimePropertyItem.h72
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimeToolbar.cpp135
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimeToolbar.h75
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/Timeline.qml329
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimelineFilter.cpp246
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimelineFilter.h84
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimelineItem.qml101
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimelineKeyframe.cpp75
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimelineKeyframe.h57
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimelineObjectModel.cpp572
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimelineObjectModel.h149
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimelineRow.cpp204
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimelineRow.h121
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimelineTreeDelegate.qml220
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimelineUIFactory.cpp107
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimelineUIFactory.h66
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimelineView.cpp335
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/TimelineView.h140
-rw-r--r--src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp5
-rw-r--r--src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.h11
-rw-r--r--src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/NavigationBar.h2
-rw-r--r--src/Authoring/Studio/Qt3DStudio.pro38
-rw-r--r--src/Authoring/Studio/qml.qrc5
90 files changed, 27 insertions, 10842 deletions
diff --git a/src/Authoring/Studio/Controls/BreadCrumbControl.cpp b/src/Authoring/Studio/Controls/BreadCrumbControl.cpp
index 5a873fd6..3a912b43 100644
--- a/src/Authoring/Studio/Controls/BreadCrumbControl.cpp
+++ b/src/Authoring/Studio/Controls/BreadCrumbControl.cpp
@@ -37,7 +37,7 @@
//==============================================================================
#include "BreadCrumbControl.h"
#include "StudioPreferences.h"
-#include "IBreadCrumbProvider.h"
+#include "Bindings/IBreadCrumbProvider.h"
#include <QtGui/qpixmap.h>
diff --git a/src/Authoring/Studio/Controls/BreadCrumbControl.h b/src/Authoring/Studio/Controls/BreadCrumbControl.h
index c8fc519a..8e20357c 100644
--- a/src/Authoring/Studio/Controls/BreadCrumbControl.h
+++ b/src/Authoring/Studio/Controls/BreadCrumbControl.h
@@ -39,7 +39,7 @@
#include "ProceduralButton.h"
#include "ToggleButton.h"
#include "TextButton.h"
-#include "IBreadCrumbProvider.h"
+#include "Bindings/IBreadCrumbProvider.h"
//==============================================================================
// Forwards
diff --git a/src/Authoring/Studio/Palettes/PaletteManager.cpp b/src/Authoring/Studio/Palettes/PaletteManager.cpp
index b141d763..fbac281d 100644
--- a/src/Authoring/Studio/Palettes/PaletteManager.cpp
+++ b/src/Authoring/Studio/Palettes/PaletteManager.cpp
@@ -33,7 +33,6 @@
#include "PaletteManager.h"
#include "StudioApp.h"
#include "MainFrm.h"
-#include "TimelineView.h"
#include "TimelineWidget.h"
#include "BasicObjectsView.h"
#include "SlideView.h"
diff --git a/src/Authoring/Studio/Palettes/Timeline/AbstractTimelineRowUI.cpp b/src/Authoring/Studio/Palettes/Timeline/AbstractTimelineRowUI.cpp
deleted file mode 100644
index 0331a6d2..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/AbstractTimelineRowUI.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "AbstractTimelineRowUI.h"
-#include "TimelineRow.h"
-#include "ITimelineControl.h"
-
-#include "Bindings/ITimelineItemBinding.h"
-
-CAbstractTimelineRowUI::CAbstractTimelineRowUI(CTimelineRow *timelineRow,
- CAbstractTimelineRowUI *parentUiRow)
- : QObject(parentUiRow)
- , m_timelineRow(timelineRow)
- , m_parentRowUI(parentUiRow)
- , m_Indent(0)
-{
-}
-
-CAbstractTimelineRowUI::~CAbstractTimelineRowUI()
-{
-}
-
-void CAbstractTimelineRowUI::SetParentRow(CAbstractTimelineRowUI *parentUiRow)
-{
- m_parentRowUI = parentUiRow;
- setParent(parentUiRow);
-}
-
-CTimelineRow *CAbstractTimelineRowUI::GetTimelineRow() const
-{
- return m_timelineRow;
-}
-
-void CAbstractTimelineRowUI::SetTimelineControl(ITimelineControl *inTimelineControl)
-{
- m_TimelineControl = inTimelineControl;
-}
-
-ITimelineControl *CAbstractTimelineRowUI::GetTopControl() const
-{
- auto *parentRow = m_timelineRow->GetParentRow();
- ITimelineControl *theControl = parentRow ? m_parentRowUI->GetTopControl() : m_TimelineControl;
- // GetTopControl() should be not used if SetTimeLineControl() was not called in this item
- Q_ASSERT(theControl);
- return theControl;
-}
-
-void CAbstractTimelineRowUI::SetIndent(long indent)
-{
- m_Indent = indent;
-}
-
-long CAbstractTimelineRowUI::GetIndent() const
-{
- return m_Indent;
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/AbstractTimelineRowUI.h b/src/Authoring/Studio/Palettes/Timeline/AbstractTimelineRowUI.h
deleted file mode 100644
index a3b86013..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/AbstractTimelineRowUI.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef CABSTRACTTIMELINEROWUI_H
-#define CABSTRACTTIMELINEROWUI_H
-
-#include <QObject>
-
-class CTimelineRow;
-class ITimelineItemBinding;
-class ITimelineControl;
-class ISnappingListProvider;
-
-class CControl;
-class CDropTarget;
-class CRct;
-class CSnapper;
-
-class CAbstractTimelineRowUI : public QObject
-{
- Q_OBJECT
-public:
- CAbstractTimelineRowUI(CTimelineRow *timelineRow, CAbstractTimelineRowUI *parentUiRow);
- virtual ~CAbstractTimelineRowUI();
-
- void SetParentRow(CAbstractTimelineRowUI *parentUiRow);
-
- CTimelineRow *GetTimelineRow() const;
-
- virtual CControl *GetColorControl() = 0;
- virtual CControl *GetTreeControl() = 0;
- virtual CControl *GetToggleControl() = 0;
- virtual CControl *GetTimebarControl() = 0;
-
- virtual void SetTimelineControl(ITimelineControl *inTimelineControl);
- virtual ITimelineControl *GetTopControl() const;
-
- virtual void SetSnappingListProvider(ISnappingListProvider *inProvider) = 0;
- virtual ISnappingListProvider *GetSnappingListProvider() const = 0;
-
- virtual void SetIndent(long indent);
- virtual long GetIndent() const;
-
- virtual void SetEnabled(bool inEnabled) = 0;
- virtual void SetFocus() = 0;
- virtual void SetNameReadOnly(bool inReadOnly) = 0;
-
- virtual void OnChildVisibilityChanged() = 0;
- virtual void SelectKeysInRect(CRct inRect, bool inModifierKeyDown,
- bool inGlobalCommitSelectionFlag) = 0;
- virtual void PopulateSnappingList(CSnapper *inSnappingList) = 0;
-
- virtual void AcceptDropAfter(bool inAccept) = 0;
- virtual void AcceptDropBefore(bool inAccept) = 0;
- virtual void SetDropTarget(CDropTarget *inDropTarget) = 0;
-
- virtual void UpdateActionStatus() = 0;
-
-public Q_SLOTS:
- virtual void Initialize() = 0;
-
-protected:
- CTimelineRow *m_timelineRow = nullptr;
- CAbstractTimelineRowUI *m_parentRowUI = nullptr;
- ITimelineControl *m_TimelineControl = nullptr;
-
- long m_Indent;
-};
-
-#endif // CABSTRACTTIMELINEROWUI_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/BaseStateRow.cpp b/src/Authoring/Studio/Palettes/Timeline/BaseStateRow.cpp
deleted file mode 100644
index a9a65b9a..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/BaseStateRow.cpp
+++ /dev/null
@@ -1,740 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "stdafx.h"
-
-#include "BaseStateRow.h"
-#include "PropertyRow.h"
-#include "StateRowFactory.h"
-#include "ResourceCache.h"
-#include "StudioUtils.h"
-#include "Bindings/ITimelineItemBinding.h"
-#include "Bindings/ITimelineTimebar.h"
-
-
-CBaseStateRow::CBaseStateRow(CTimelineRow *parent, bool loaded)
- : CTimelineRow(parent)
- , m_Loaded(loaded)
- , m_Selected(false)
-{
-}
-
-CBaseStateRow::~CBaseStateRow()
-{
- // Go through all the state rows and delete them, this control owns all child controls.
- TStateRowList::iterator thePos = m_StateRows.begin();
- for (; thePos != m_StateRows.end(); ++thePos)
- (*thePos)->Dispose();
-
- // Go through all the properties and delete them, this control owns all child controls.
- TPropertyRowList::iterator thePropertyPos = m_PropertyRows.begin();
- for (; thePropertyPos != m_PropertyRows.end(); ++thePropertyPos) {
- CPropertyRow *theRow = (*thePropertyPos);
- delete theRow;
- }
-}
-
-void CBaseStateRow::Initialize(ITimelineItemBinding *inTimelineItemBinding)
-{
- // Bind after all the UI is setup.
- Q_ASSERT(inTimelineItemBinding);
- m_TimelineItemBinding = inTimelineItemBinding;
- m_TimelineItemBinding->Bind(this); // see Dispose where it properly unbinds.
-
- emit initialized();
-}
-
-//=============================================================================
-/**
- * Expand this node of the tree control.
- * This will display all children the fit the filter.
- */
-void CBaseStateRow::Expand(bool inExpandAll /*= false*/, bool inExpandUp)
-{
- if (!m_IsExpanded) {
- m_Filter.SetExpanded(true);
-
- // Expand/Collapse is done by adding and removing the children, add all the
- // properties first so they are at the top of the list.
- TPropertyRowList::iterator thePropPos = m_PropertyRows.begin();
- for (; thePropPos != m_PropertyRows.end(); ++thePropPos) {
- CPropertyRow *thePropRow = (*thePropPos);
- if (thePropRow)
- thePropRow->Filter(m_Filter, false);
- }
- // Add all the State rows after the properties.
- TStateRowList::iterator thePos = m_StateRows.begin();
- for (; thePos != m_StateRows.end(); ++thePos) {
- CStateRow *theRow = (*thePos);
- theRow->Filter(m_Filter, false);
- }
-
- m_IsExpanded = true;
-
- emit expanded(true);
- }
-
- if (inExpandAll) {
- TStateRowList::iterator thePos = m_StateRows.begin();
- for (; thePos != m_StateRows.end(); ++thePos)
- (*thePos)->Expand(inExpandAll);
- }
-
- if (inExpandUp && m_ParentRow)
- m_ParentRow->Expand(false, inExpandUp);
-}
-
-//=============================================================================
-/**
- * Collapse this node of the tree control.
- * This will hide all children of this control.
- */
-void CBaseStateRow::Collapse(bool inCollapseAll /* = false */)
-{
- if (m_IsExpanded) {
- CFilter theFilter = m_Filter;
- theFilter.SetExpanded(false);
-
- TPropertyRowList::iterator thePropPos = m_PropertyRows.begin();
- for (; thePropPos != m_PropertyRows.end(); ++thePropPos) {
- CPropertyRow *thePropRow = (*thePropPos);
- if (thePropRow)
- thePropRow->Filter(theFilter);
- }
-
- TStateRowList::iterator thePos = m_StateRows.begin();
- for (; thePos != m_StateRows.end(); ++thePos) {
- CStateRow *theRow = (*thePos);
- theRow->Filter(theFilter);
- }
-
- m_TimelineItemBinding->OnCollapsed();
-
- m_IsExpanded = false;
-
- emit expanded(false);
- }
-
- if (inCollapseAll) {
- TStateRowList::iterator thePos = m_StateRows.begin();
- for (; thePos != m_StateRows.end(); ++thePos) {
- (*thePos)->Collapse(inCollapseAll);
- }
- }
-}
-
-//=============================================================================
-/**
- * Toggle the expansion state of this control.
- * This will expand the control if it is closed, or collapse it if it is
- * open.
- */
-void CBaseStateRow::ToggleExpansion(CToggleButton *, CButtonControl::EButtonState inButtonState)
-{
- if (inButtonState == CButtonControl::EBUTTONSTATE_UP)
- Collapse();
- else
- Expand();
-}
-
-//=============================================================================
-/**
- * Shows or hides rows for all children, based on the filter.
- * @param inFilter Object specifying the filters currently applied to the timeline.
- * @param inFilterChildren true if the filter should go recursively to children.
- */
-void CBaseStateRow::Filter(const CFilter &inFilter, bool inFilterChildren /*= true*/)
-{
- m_Filter = inFilter;
-
- // For each child object
- if (inFilterChildren) {
- CFilter theChildFilter = inFilter;
- theChildFilter.SetExpanded(m_IsExpanded);
-
- TStateRowList::iterator thePos = m_StateRows.begin();
- for (; thePos != m_StateRows.end(); ++thePos) {
- // Apply the filter
- CStateRow *theRow = (*thePos);
- theRow->Filter(theChildFilter);
- }
- }
-
- // This flag determines whether or not the controls on this row should be shown, based on the
- // filter
- bool theVisibleFlag = PerformFilter(m_Filter);
-
- m_IsViewable = theVisibleFlag;
-
- theVisibleFlag &= inFilter.IsExpanded();
-
- // Show or hide the controls on this row before we iterate through the properties
- emit visibleChanged(theVisibleFlag);
-
- if (inFilterChildren) {
- CFilter theChildFilter = inFilter;
- theChildFilter.SetExpanded(m_IsExpanded);
-
- // For each property on this object
- TPropertyRowList::iterator thePropPos = m_PropertyRows.begin();
- for (; thePropPos != m_PropertyRows.end(); ++thePropPos) {
- // Apply the filter
- CPropertyRow *thePropRow = (*thePropPos);
- if (thePropRow)
- thePropRow->Filter(theChildFilter);
- }
- }
-
- emit hasChildrenChanged(HasVisibleChildren());
-}
-
-
-
-//=============================================================================
-/**
- * Remove a row from this control.
- * @param inState the state of the row to be removed.
- */
-void CBaseStateRow::RemoveRow(CStateRow *inRow)
-{
- TStateRowList::iterator thePos = m_StateRows.begin();
- for (; thePos != m_StateRows.end(); ++thePos) {
- CStateRow *theRow = (*thePos);
- if (theRow == inRow) {
- DeleteRow(theRow);
- m_StateRows.erase(thePos);
- break;
- }
- }
- emit hasChildrenChanged(HasVisibleChildren());
-}
-
-//=============================================================================
-/**
- * Helper function to remove all controls of this property row and dispose of it.
- */
-void CBaseStateRow::DeletePropertyRow(CPropertyRow *inPropertyRow)
-{
- if (!inPropertyRow)
- return;
-
- emit rowAboutToBeRemoved(inPropertyRow);
- delete inPropertyRow;
-}
-
-//=============================================================================
-/**
- * Get the StateRow that is representing this child timeline item.
- * @param inTimelineItem child timeline item
- * @return the StateRow for inState.
- */
-CStateRow *CBaseStateRow::GetRow(ITimelineItem *inTimelineItem)
-{
- if (inTimelineItem) {
- TStateRowList::iterator thePos = m_StateRows.begin();
- for (; thePos != m_StateRows.end(); ++thePos) {
- if ((*thePos)->GetTimelineItem() == inTimelineItem)
- return (*thePos);
- }
- }
- return nullptr;
-}
-
-//=============================================================================
-/**
- * Called when a row is to be completely removed from the UI
- */
-void CBaseStateRow::DeleteRow(CStateRow *inRow)
-{
- emit rowAboutToBeRemoved(inRow);
- inRow->Dispose();
-}
-
-
-//=============================================================================
-/**
- * Recursively load the children of this control, used by derived classes
- * This will load all the properties and states, and create controls for them.
- */
-void CBaseStateRow::LoadChildren()
-{
- if (!m_Loaded) {
- m_Loaded = true;
-
- LoadProperties();
-
- CTimelineItemOrderedIterator theChildIter(m_TimelineItemBinding);
- // Go through all the children and load them too.
- for (; !theChildIter.IsDone(); ++theChildIter)
- CreateChildRow(*theChildIter, nullptr);
-
- emit childrenLoaded();
- }
-}
-
-//=============================================================================
-/**
- * Add a row that represents this child timeline item
- * @param inNextItem indicates row to follow behind the row for inTimeLineItem, nullptr to append inRow
- * to the end of the current list.
- */
-void CBaseStateRow::AddChildRow(ITimelineItemBinding *inTimeLineItem,
- ITimelineItemBinding *inNextItem)
-{
- if (!inTimeLineItem)
- return;
-
- // only add if loaded, else it will get added twice.
- if (m_Loaded) {
- CStateRow *theStateRow = CreateChildRow(
- inTimeLineItem, inNextItem ? GetRow(inNextItem->GetTimelineItem()) : nullptr);
- if (theStateRow)
- theStateRow->LoadChildren();
- }
- Expand(false, true);
-
- CBaseStateRow *theRow = GetRow(inTimeLineItem->GetTimelineItem());
- if (theRow) {
- emit rowAdded(theRow);
- }
-}
-
-void CBaseStateRow::RemoveChildRow(ITimelineItemBinding *inTimelineItem)
-{
- CStateRow *theChildRow = GetRow(inTimelineItem->GetTimelineItem());
- inTimelineItem->SetParent(nullptr);
- if (theChildRow) {
- RemoveRow(theChildRow);
- // KDAB_TODO check if needed
- // preserving legacy behavior.
-// GetTopControl()->HideTimelineMoveableTooltip();
- }
-}
-
-//=============================================================================
-/**
- * Removes all child rows from this row. Called prior to a load. The load call is responsible for
- * updating the UI.
- */
-void CBaseStateRow::RemoveAllChildren()
-{
- RemoveAllProperties();
-
- TStateRowList::iterator thePos = m_StateRows.begin();
- for (; thePos != m_StateRows.end(); ++thePos)
- DeleteRow(*thePos);
-
- m_StateRows.clear();
-}
-
-//=============================================================================
-/**
- * Remove all the properties from this object. Called prior to a load. The load call is responsible
- * for updating the UI.
- */
-void CBaseStateRow::RemoveAllProperties()
-{
- TPropertyRowList::iterator thePropPos = m_PropertyRows.begin();
- for (; thePropPos != m_PropertyRows.end(); ++thePropPos)
- DeletePropertyRow(*thePropPos);
-
- m_PropertyRows.clear();
-}
-
-//=============================================================================
-/**
- * Set this row to selected
- */
-void CBaseStateRow::Select(Qt::KeyboardModifiers modifier,
- bool inCheckKeySelection /*= true */)
-{
- bool alreadySelected = m_Selected;
- m_TimelineItemBinding->SetSelected(modifier.testFlag(Qt::ControlModifier));
- if (inCheckKeySelection) {
- if (modifier.testFlag(Qt::ShiftModifier))
- emit selectAllKeys();
- else if (!alreadySelected)
- m_TimelineItemBinding->ClearKeySelection();
- }
-}
-
-//=============================================================================
-/**
- * Change the selection state of the row.
- */
-void CBaseStateRow::OnSelected(bool inSelection)
-{
- if (inSelection == m_Selected)
- return;
-
- m_Selected = inSelection;
- if (inSelection) {
- if (m_ParentRow)
- m_ParentRow->Expand(false, true);
- }
-
- emit selectedChanged(inSelection);
-}
-
-void CBaseStateRow::RequestRefreshRowMetaData()
-{
- emit refreshRowMetaData();
-}
-
-void CBaseStateRow::ForceEmitChildrenChanged()
-{
- emit hasChildrenChanged(HasVisibleChildren());
-}
-
-void CBaseStateRow::requestSetNameReadOnly()
-{
- emit setNameReadOnly();
-}
-
-void CBaseStateRow::requestUpdateActionStatus()
-{
- emit updateActionStatus();
-}
-
-//=============================================================================
-/**
- * Call to add a property row as a child of this control.
- * @param inRow the row to be added.
- */
-void CBaseStateRow::AddPropertyRow(CPropertyRow *inRow, CTimelineRow *inNextRow /*= nullptr */)
-{
- m_PropertyRows.push_back(inRow);
- InitializePropertyRow(inRow, inNextRow);
-
- emit propertyRowAdded(inRow);
-}
-
-//=============================================================================
-/**
- * Remove the property row.
- */
-void CBaseStateRow::RemovePropertyRow(const CPropertyRow *inRow)
-{
- if (!inRow)
- return;
-
- TPropertyRowList::iterator thePropPos = m_PropertyRows.begin();
- for (; thePropPos != m_PropertyRows.end(); ++thePropPos) {
- CPropertyRow *theRow = *thePropPos;
- if (theRow == inRow) {
- DeletePropertyRow(theRow);
- m_PropertyRows.erase(thePropPos);
-
- // Update flippy
- emit hasChildrenChanged(HasVisibleChildren());
- break;
- }
- }
-}
-
-//=============================================================================
-/**
- * Helper function to initialize a new property row
- * @param inRow the row to be added.
- * @param inNextRow if specified, row that should be after inRow after
- * insertion.
- */
-void CBaseStateRow::InitializePropertyRow(CPropertyRow *inRow, CTimelineRow *inNextRow /*= nullptr */)
-{
- CFilter theFilter = m_Filter;
- theFilter.SetExpanded(m_IsExpanded);
-
- if (!inNextRow) { // not provided, this property row would be inserted before the first
- // non-property row.
- CTimelineItemOrderedIterator theIterator(m_TimelineItemBinding);
- if (!theIterator.IsDone())
- inNextRow = GetRow(theIterator.GetCurrent()->GetTimelineItem());
- }
- emit addRowToUILists(inRow, inNextRow, theFilter);
-}
-
-CStateRow *CBaseStateRow::CreateChildRow(ITimelineItemBinding *inChildBinding, CStateRow *inNextRow)
-{
- CStateRow *theRow =
- CStateRowFactory::CreateStateRow(inChildBinding, this);
- if (theRow) { // add by appending to the list
- AddStateRow(theRow, inNextRow);
- }
- inChildBinding->SetParent(m_TimelineItemBinding);
- return theRow;
-}
-
-long CBaseStateRow::GetNumNonPropertyRows() const
-{
- return static_cast<long>(m_StateRows.size());
-}
-
-CBaseStateRow *CBaseStateRow::GetNonPropertyRow(long inIndex) const
-{
- return m_StateRows.at(inIndex);
-}
-
-long CBaseStateRow::GetNumPropertyRows() const
-{
- return static_cast<long>(m_PropertyRows.size());
-}
-CPropertyRow *CBaseStateRow::GetPropertyRow(long inIndex) const
-{
- return m_PropertyRows.at(inIndex);
-}
-
-//=============================================================================
-/**
- * Call to add a state row as a child of this control.
- * @param inRow the row to be added.
- * @param inNextRow row to follow behind the row that would be added, nullptr to append inRow to the
- * end of the current list.
- */
-void CBaseStateRow::AddStateRow(CStateRow *inRow, CStateRow *inNextRow)
-{
- if (inNextRow != nullptr) {
- TStateRowList::iterator thePos = m_StateRows.begin();
- while (thePos != m_StateRows.end()) {
- if ((*thePos) == inNextRow) {
- m_StateRows.insert(thePos, inRow);
- thePos = m_StateRows.end();
- } else
- ++thePos;
- }
- } else {
- m_StateRows.push_back(inRow);
- }
-
- emit addRowToUILists(inRow, inNextRow, m_Filter);
-}
-
-//=============================================================================
-/**
- * Checks to see if there are any visible children of this row.
- * This is used for figuring out whether the expand button should be displayed
- * or not.
- */
-bool CBaseStateRow::HasVisibleChildren()
-{
- TStateRowList::iterator thePos = m_StateRows.begin();
- for (; thePos != m_StateRows.end(); ++thePos) {
- // Apply the filter
- if ((*thePos)->IsViewable())
- return true;
- }
-
- // For each property on this object
- TPropertyRowList::iterator thePropPos = m_PropertyRows.begin();
- for (; thePropPos != m_PropertyRows.end(); ++thePropPos) {
- // Apply the filter
- CPropertyRow *thePropRow = (*thePropPos);
- if (thePropRow && thePropRow->IsViewable())
- return true;
- }
- return false;
-}
-
-//=============================================================================
-/**
- * Set the amount of time that is represented by a pixel.
- * This modifies the length of this control.
- * @param inTimePerPixel the time per pixel.
- */
-void CBaseStateRow::SetTimeRatio(double inTimeRatio)
-{
- if (m_TimeRatio != inTimeRatio) {
- m_TimeRatio = inTimeRatio;
-
- TStateRowList::iterator thePos = m_StateRows.begin();
- for (; thePos != m_StateRows.end(); ++thePos) {
- (*thePos)->SetTimeRatio(inTimeRatio);
- }
-
- TPropertyRowList::iterator thePropPos = m_PropertyRows.begin();
- for (; thePropPos != m_PropertyRows.end(); ++thePropPos) {
- CPropertyRow *thePropRow = (*thePropPos);
- if (thePropRow)
- thePropRow->SetTimeRatio(inTimeRatio);
- }
- emit timeRatioChanged(inTimeRatio);
- }
-}
-
-
-//=============================================================================
-/**
- * Deletes all the keys for the asset that was chosen by the user
- * @param inBatch the batch used to batch all the deletes together
- */
-void CBaseStateRow::DeleteAllKeys()
-{
- // Iterate through all the property rows and delete all their keys
- TPropertyRowList::iterator thePropPos = m_PropertyRows.begin();
- for (; thePropPos != m_PropertyRows.end(); ++thePropPos) {
- CPropertyRow *thePropRow = (*thePropPos);
- if (thePropRow)
- thePropRow->DeleteAllKeys();
- }
-}
-
-// KDAB_TODO unused?
-/*
-void CBaseStateRow::SetTimelineLatestTime(long inTime)
-{
- long theLength = ::TimeToPos(inTime, m_TimeRatio) + CTimelineTimelineLayout::END_BUFFER_SIZE;
- m_TimebarControl->SetAbsoluteSize(CPt(theLength, m_TimebarControl->GetSize().y));
-
- TStateRowList::iterator thePos = m_StateRows.begin();
- for (; thePos != m_StateRows.end(); ++thePos)
- (*thePos)->SetTimelineLatestTime(inTime);
-}
-*/
-
-//=============================================================================
-/**
- * Determines whether or not a row is expanded. A row can be expanded even if
- * it is not visible.
- * @return true if the row is currently expanded, otherwise false
- */
-bool CBaseStateRow::IsExpanded()
-{
- return m_IsExpanded;
-}
-
-//=============================================================================
-/**
- * Determines whether or not a row is loaded. The rows are delayed loaded, i.e.
- * it will be loaded when it's visible for the first time. Before it's loaded, any
- * updates to the structure, say, adding dynamic properties does not need to update the
- * timeline.
- * @return true if the row is currently loaded, otherwise false
- */
-bool CBaseStateRow::IsLoaded()
-{
- return m_Loaded;
-}
-
-long CBaseStateRow::GetStartTime()
-{
- ITimelineTimebar *theTimebar = m_TimelineItemBinding->GetTimelineItem()->GetTimebar();
- if (theTimebar)
- return theTimebar->GetStartTime();
- return 0;
-}
-
-long CBaseStateRow::GetEndTime()
-{
- ITimelineTimebar *theTimebar = m_TimelineItemBinding->GetTimelineItem()->GetTimebar();
- if (theTimebar)
- return theTimebar->GetEndTime();
- return 0;
-}
-
-//=============================================================================
-/**
- * Get the start time of this row, which is accumulative of all its descendants.
- */
-long CBaseStateRow::GetEarliestStartTime()
-{
- long theEarliestStartTime = 0;
- TStateRowList::iterator thePos = m_StateRows.begin();
- for (; thePos != m_StateRows.end(); ++thePos) {
- CStateRow *theRow = (*thePos);
- long theStartTime = theRow->GetEarliestStartTime();
- if (theStartTime < theEarliestStartTime)
- theEarliestStartTime = theStartTime;
- }
- return theEarliestStartTime;
-}
-
-//=============================================================================
-/**
- * Get the end time of this row, which is accumulative of all its descendants.
- */
-long CBaseStateRow::GetLatestEndTime()
-{
- long theLatestTime = 0;
- TStateRowList::iterator thePos = m_StateRows.begin();
- for (; thePos != m_StateRows.end(); ++thePos) {
- CStateRow *theRow = (*thePos);
- long theEndTime = theRow->GetLatestEndTime();
- if (theEndTime > theLatestTime)
- theLatestTime = theEndTime;
- }
- return theLatestTime;
-}
-
-//=============================================================================
-/**
- * Lame switch to get the normal state object specific icon.
- * @return the icon to be used in the 'normal' state.
- */
-QPixmap CBaseStateRow::GetIcon()
-{
- return CResourceCache::GetInstance()->GetBitmap(
- CStudioObjectTypes::GetNormalIconName(GetObjectType()));
-}
-
-//=============================================================================
-/**
- * Lame switch to get the disabled state object specific icon.
- * @return the icon to be used in the disabled state.
- */
-QPixmap CBaseStateRow::GetDisabledIcon()
-{
- return CResourceCache::GetInstance()->GetBitmap(
- CStudioObjectTypes::GetDisabledIconName(GetObjectType()));
-}
-
-
-
-//=============================================================================
-/**
- * When this row is no longer useful, clean up.
- */
-void CBaseStateRow::Dispose()
-{
- // Disconnection point
- if (m_TimelineItemBinding)
- m_TimelineItemBinding->Release();
-
- CTimelineRow::Dispose();
-}
-
-
-CBaseStateRow::TPropertyRowList CBaseStateRow::GetPropertyRows() const
-{
- return m_PropertyRows;
-}
-
-CBaseStateRow::TStateRowList CBaseStateRow::GetStateRows() const
-{
- return m_StateRows;
-}
-
diff --git a/src/Authoring/Studio/Palettes/Timeline/BaseStateRow.h b/src/Authoring/Studio/Palettes/Timeline/BaseStateRow.h
deleted file mode 100644
index e4ccd95c..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/BaseStateRow.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_BASE_STATE_ROW_H
-#define INCLUDED_BASE_STATE_ROW_H 1
-
-#pragma once
-
-#include "stdafx.h"
-
-#include "TimelineRow.h"
-#include "ToggleButton.h"
-#include "DispatchListeners.h"
-
-#include <Qt>
-
-class CPropertyRow;
-class CStateRow;
-class CCmdBatch;
-class ITimelineItem;
-
-class CBaseStateRow : public CTimelineRow
-{
- Q_OBJECT
-public:
- typedef std::vector<CPropertyRow *> TPropertyRowList;
- typedef std::vector<CStateRow *> TStateRowList;
-
-public:
- CBaseStateRow(CTimelineRow *parent, bool loaded = false);
- virtual ~CBaseStateRow();
-
- void Initialize(ITimelineItemBinding *inTimelineItemBinding) override;
-
- bool IsExpanded();
- bool IsLoaded();
- void Expand(bool inExpandAll = false, bool inExpandUp = false) override;
- void Collapse(bool inCollapseAll = false) override;
- void ToggleExpansion(CToggleButton *, CButtonControl::EButtonState);
-
- void SetTimeRatio(double inTimePerPixel) override;
-
- void Select(Qt::KeyboardModifiers inKeyState, bool inCheckKeySelection = true);
- bool IsSelected() const override { return m_Selected; }
- void DeleteAllKeys();
-
- void LoadChildren() override;
- void AddChildRow(ITimelineItemBinding *inTimeLineItem, ITimelineItemBinding *inNextItem);
- void RemoveChildRow(ITimelineItemBinding *inTimeLineItem);
-
- void RemoveRow(CStateRow *inRow);
- void AddStateRow(CStateRow *inRow, CStateRow *inNextRow);
- void AddPropertyRow(CPropertyRow *inRow, CTimelineRow *inNextRow = nullptr);
- void RemovePropertyRow(const CPropertyRow *inRow);
- void RemoveAllChildren();
- void RemoveAllProperties();
-
- long GetNumNonPropertyRows() const;
- CBaseStateRow *GetNonPropertyRow(long inIndex) const;
- long GetNumPropertyRows() const;
- CPropertyRow *GetPropertyRow(long inIndex) const;
-
- void Filter(const CFilter &inFilter, bool inFilterChildren = true) override;
- CFilter *GetFilter() { return &m_Filter; }
-
- virtual bool HasVisibleChildren();
-
- // CTimelineRow
- virtual long GetEarliestStartTime();
- long GetLatestEndTime() override;
-
- long GetStartTime();
- long GetEndTime();
- void Dispose() override;
-
- virtual QPixmap GetIcon();
- virtual QPixmap GetDisabledIcon();
-
- TPropertyRowList GetPropertyRows() const;
- TStateRowList GetStateRows() const;
-
- virtual void OnSelected(bool inSelected);
- void RequestRefreshRowMetaData();
- void ForceEmitChildrenChanged();
- void requestSetNameReadOnly();
- void requestUpdateActionStatus();
-
-Q_SIGNALS:
- void expanded(bool isExpanded);
- void visibleChanged(bool visible);
- void hasChildrenChanged(bool hasChildren);
- void rowAboutToBeRemoved(CTimelineRow *row);
- void selectAllKeys();
- void addRowToUILists(CTimelineRow *inRow, CTimelineRow *inNextRow, CFilter &inFilter);
- void rowAdded(CBaseStateRow *row);
- void refreshRowMetaData();
- void setNameReadOnly();
- void updateActionStatus();
-
-protected:
- void DeletePropertyRow(CPropertyRow *inPropertyRow);
- virtual bool PerformFilter(const CFilter &inFilter) = 0;
- CStateRow *GetRow(ITimelineItem *inTimelineItem);
- void DeleteRow(CStateRow *inRow);
- // KDAB_TODO unused?
-// void SetTimelineLatestTime(long inLength);
-
- virtual void LoadProperties() {}
- void InitializePropertyRow(CPropertyRow *inRow, CTimelineRow *inNextRow = nullptr);
-
- CStateRow *CreateChildRow(ITimelineItemBinding *inChildBinding, CStateRow *inNextRow);
-
- CFilter m_Filter;
-
- TStateRowList m_StateRows;
- TPropertyRowList m_PropertyRows;
-
- bool m_Loaded;
- bool m_Selected;
-};
-#endif // INCLUDED_BASE_STATE_ROW_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/GroupTimelineItemBinding.cpp b/src/Authoring/Studio/Palettes/Timeline/Bindings/GroupTimelineItemBinding.cpp
index 32e19a15..909efdbb 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/GroupTimelineItemBinding.cpp
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/GroupTimelineItemBinding.cpp
@@ -36,7 +36,6 @@
// Includes
//==============================================================================
#include "GroupTimelineItemBinding.h"
-#include "BaseStateRow.h"
#include "TimelineTranslationManager.h"
#include "StudioApp.h"
#include "Core.h"
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/GroupTimelineItemBinding.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/GroupTimelineItemBinding.h
index 3ac8a6e3..cd7f9dad 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/GroupTimelineItemBinding.h
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/GroupTimelineItemBinding.h
@@ -42,7 +42,6 @@
//==============================================================================
class ITimelineItem;
class CTimelineTranslationManager;
-class CBaseStateRow;
//=============================================================================
/**
diff --git a/src/Authoring/Studio/Palettes/Timeline/IBreadCrumbProvider.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/IBreadCrumbProvider.h
index 1a8beb0a..1a8beb0a 100644
--- a/src/Authoring/Studio/Palettes/Timeline/IBreadCrumbProvider.h
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/IBreadCrumbProvider.h
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/IKeyframeSelector.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/IKeyframeSelector.h
deleted file mode 100644
index db8b551f..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/IKeyframeSelector.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_IKEYFRAME_SELECTOR_H
-#define INCLUDED_IKEYFRAME_SELECTOR_H 1
-
-#pragma once
-
-//=============================================================================
-/**
- * Interface that performs keyframe selection.
- */
-//=============================================================================
-class IKeyframeSelector
-{
-public:
- virtual ~IKeyframeSelector() {}
-
- //=============================================================================
- /**
- * @param inTime -1 to selected (or deselect) ALL keyframes, otherwise only by time.
- */
- virtual void SelectKeyframes(bool inSelected, long inTime = -1) = 0;
-};
-
-#endif // INCLUDED_IKEYFRAME_SELECTOR_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/ITimelineItem.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/ITimelineItem.h
index e5af8671..b4cbe7e9 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/ITimelineItem.h
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/ITimelineItem.h
@@ -58,8 +58,6 @@ public:
virtual void SetLocked(bool) = 0;
virtual bool IsVisible() const = 0;
virtual void SetVisible(bool) = 0;
- virtual bool IsExpanded() const = 0;
- virtual void SetExpanded(bool) = 0;
virtual bool IsImported() const { return false; }
// Actions
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/ITimelineItemBinding.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/ITimelineItemBinding.h
index 5f1dfe40..2e804d85 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/ITimelineItemBinding.h
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/ITimelineItemBinding.h
@@ -33,10 +33,8 @@
#include "ITimelineItem.h"
#include "ITimelineItemProperty.h"
-#include "IKeyframeSelector.h"
#include "SIterator.h"
-class CBaseStateRow;
class RowTree;
class CControlWindowListener;
class ITimelineKeyframesManager;
@@ -51,12 +49,7 @@ public:
virtual void InsertKeyframe() = 0;
virtual void DeleteAllChannelKeyframes() = 0;
- virtual long GetKeyframeCount() const = 0;
virtual IKeyframe *GetKeyframeByTime(long inTime) const = 0;
- virtual IKeyframe *GetKeyframeByIndex(long inIndex) const = 0;
- virtual long OffsetSelectedKeyframes(long inOffset) = 0;
- virtual void CommitChangedKeyframes() = 0;
- virtual void OnEditKeyframeTime(long inCurrentTime, long inObjectAssociation) = 0;
};
//=============================================================================
@@ -64,7 +57,7 @@ public:
* Interface to encapsulate data model specific functions, that Timeline UI objects can talk to.
*/
//=============================================================================
-class ITimelineItemBinding : public ITimelineItemKeyframesHolder, public IKeyframeSelector
+class ITimelineItemBinding : public ITimelineItemKeyframesHolder
{
public:
// List of possible transactions that requires querying the data model if they are valid
@@ -84,14 +77,12 @@ public:
virtual ~ITimelineItemBinding() {}
virtual ITimelineItem *GetTimelineItem() = 0;
- virtual CBaseStateRow *GetRow() = 0; // Mahmoud_TODO: remove after timeline is complete
virtual RowTree *getRowTree() const = 0; // UI
virtual void setRowTree(RowTree *row) = 0;
// Events
virtual void SetSelected(bool multiSelect) = 0;
virtual void OnCollapsed() = 0;
- virtual void ClearKeySelection() = 0;
virtual bool OpenAssociatedEditor() = 0;
virtual void SetDropTarget(CDropTarget *inTarget) = 0;
@@ -110,10 +101,6 @@ public:
virtual bool IsLockedEnabled() const = 0;
virtual bool IsVisibleEnabled() const = 0;
- // Init/Cleanup
- virtual void Bind(CBaseStateRow *inRow) = 0;
- virtual void Release() = 0;
-
// ContextMenu
virtual bool IsValidTransaction(EUserTransaction inTransaction) = 0;
virtual void PerformTransaction(EUserTransaction inTransaction) = 0;
@@ -124,13 +111,6 @@ public:
virtual bool IsInternalizeable() { return false; }
virtual void Internalize() {}
- // Selected keyframes
- virtual ITimelineKeyframesManager *GetKeyframesManager() const = 0;
-
- // Properties
- virtual void RemoveProperty(ITimelineItemProperty *inProperty) = 0;
- virtual void LoadProperties() = 0;
-
void setCreateUIRow(bool create) { m_createUIRow = create; }
protected:
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/ITimelineItemProperty.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/ITimelineItemProperty.h
index 26b00c09..72488480 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/ITimelineItemProperty.h
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/ITimelineItemProperty.h
@@ -32,21 +32,18 @@
#pragma once
-#include "IKeyframeSelector.h"
#include "Qt3DSDMMetaData.h"
#include "Qt3DSString.h"
class RowTree;
-class CPropertyRow;
class IKeyframe;
-class ITimelineKeyframesManager;
//=============================================================================
/**
* Abstraction of a data model item's property that is displayed in the Timeline.
*/
//=============================================================================
-class ITimelineItemProperty : public IKeyframeSelector
+class ITimelineItemProperty
{
public:
virtual ~ITimelineItemProperty() {}
@@ -58,26 +55,18 @@ public:
virtual float GetMinimumValue() const = 0;
virtual void SetSelected() = 0;
- virtual void ClearKeySelection() = 0;
virtual void DeleteAllKeys() = 0;
- virtual void Bind(CPropertyRow *inRow) = 0;
- virtual void Release() = 0;
virtual void setRowTree(RowTree *row) = 0;
virtual RowTree *getRowTree() const = 0;
- virtual CPropertyRow *GetRow() = 0; // Mahmoud_TODO: delete after new timeline is done
// Keyframes
- virtual ITimelineKeyframesManager *GetKeyframesManager() const = 0;
virtual IKeyframe *GetKeyframeByTime(long inTime) const = 0;
virtual IKeyframe *GetKeyframeByIndex(long inIndex) const = 0;
virtual long GetKeyframeCount() const = 0;
virtual long GetChannelCount() const = 0;
virtual float GetChannelValueAtTime(long inChannelIndex, long inTime) = 0;
virtual void SetChannelValueAtTime(long inChannelIndex, long inTime, float inValue) = 0;
- virtual long OffsetSelectedKeyframes(long inOffset) = 0;
- virtual void CommitChangedKeyframes() = 0;
- virtual void OnEditKeyframeTime(long inCurrentTime, long inObjectAssociation) = 0;
virtual bool IsDynamicAnimation() = 0;
};
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/ImageTimelineItemBinding.cpp b/src/Authoring/Studio/Palettes/Timeline/Bindings/ImageTimelineItemBinding.cpp
index 8b53aba0..169d1667 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/ImageTimelineItemBinding.cpp
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/ImageTimelineItemBinding.cpp
@@ -38,7 +38,6 @@
#include "ImageTimelineItemBinding.h"
#include "TimelineTranslationManager.h"
#include "Qt3DSDMHandles.h"
-#include "BaseStateRow.h"
#include "Doc.h"
#include "IObjectReferenceHelper.h"
#include "EmptyTimelineTimebar.h"
@@ -81,12 +80,6 @@ bool CImageTimelineItemBinding::ShowToggleControls() const
return false;
}
-void CImageTimelineItemBinding::Bind(CBaseStateRow *inRow)
-{
- Qt3DSDMTimelineItemBinding::Bind(inRow);
- inRow->requestSetNameReadOnly();
-}
-
//=============================================================================
/**
* Open the associated item as though it was double-clicked in explorer
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/ImageTimelineItemBinding.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/ImageTimelineItemBinding.h
index 187cb78a..b9343872 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/ImageTimelineItemBinding.h
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/ImageTimelineItemBinding.h
@@ -41,7 +41,6 @@
// Classes
//==============================================================================
class CTimelineTranslationManager;
-class CBaseStateRow;
class ITimelineTimebar;
//=============================================================================
@@ -61,7 +60,6 @@ public:
void SetName(const Q3DStudio::CString &inName) override;
EStudioObjectType GetObjectType() const override;
bool ShowToggleControls() const override;
- void Bind(CBaseStateRow *inRow) override;
bool OpenAssociatedEditor() override;
void SetPropertyHandle(qt3dsdm::Qt3DSDMPropertyHandle inProperty)
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/KeyframesManager.cpp b/src/Authoring/Studio/Palettes/Timeline/Bindings/KeyframesManager.cpp
deleted file mode 100644
index 91b24663..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/KeyframesManager.cpp
+++ /dev/null
@@ -1,507 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//==============================================================================
-// Prefix
-//==============================================================================
-#include "stdafx.h"
-
-#include "KeyframesManager.h"
-#include "IDoc.h"
-#include "TimeEditDlg.h"
-#include "TimelineTranslationManager.h"
-#include "Qt3DSDMTimelineKeyframe.h"
-#include "Qt3DSDMTimelineItemBinding.h"
-#include "CmdDataModelRemoveKeyframe.h"
-#include "CmdDataModelInsertKeyframe.h"
-#include "CmdDataModelChangeKeyframe.h"
-#include "Qt3DSDMAnimation.h"
-#include "ClientDataModelBridge.h"
-#include "PasteKeyframesCommandHelper.h"
-#include "IDocumentEditor.h"
-#include "IKeyframe.h"
-#include "Dispatch.h"
-#include "StudioPreferences.h"
-
-#include "StudioApp.h" //for CommitCurrentCommand
-#include "Core.h"
-#include "Dialogs.h"
-
-using namespace qt3dsdm;
-
-bool SortKeyframeInstancePairByTime(const CKeyframesManager::SKeyframeInstancePair &inLHS,
- const CKeyframesManager::SKeyframeInstancePair &inRHS)
-{
- return inLHS.m_Keyframe->GetTime() < inRHS.m_Keyframe->GetTime();
-}
-
-//==============================================================================
-// Keyframe specific.
-// DataModel selection is handled by CTimelineTranslationManager.
-//==============================================================================
-CKeyframesManager::CKeyframesManager(CTimelineTranslationManager *inTransMgr)
- : m_TransMgr(inTransMgr)
- , m_OffsetKeyframeCommandHelper(*(g_StudioApp.GetCore()->GetDoc()))
- , m_PasteKeyframeCommandHelper(nullptr)
-{
- // Mahmoud_TODO: to be removed after further clean up
-// g_StudioApp.GetCore()->GetDoc()->SetKeyframesManager(this);
-}
-
-CKeyframesManager::~CKeyframesManager()
-{
- delete m_PasteKeyframeCommandHelper;
-}
-
-bool CKeyframesManager::HasSelectedKeyframes(bool inOnlyDynamic /*= false */)
-{
- // specifically only to know if there are any selected keyframes that are dynamic
- if (inOnlyDynamic) {
- for (size_t theIndex = 0; theIndex < m_SelectedKeyframes.size(); ++theIndex)
- if (m_SelectedKeyframes[theIndex].m_Keyframe->IsDynamic())
- return true;
-
- return false;
- }
-
- bool theRetVal = !m_SelectedKeyframes.empty();
-
- return theRetVal;
-}
-
-bool CKeyframesManager::CanPerformKeyframeCopy()
-{
- bool theCanCopyNewData = false;
- // Legacy system actually prevents copy/pasting between different instances, so let's preserve
- // that
- if (!m_SelectedKeyframes.empty()) {
- theCanCopyNewData = true;
- if (m_SelectedKeyframes.size() > 1) {
- Qt3DSDMTimelineItemBinding *theInstance = m_SelectedKeyframes[0].m_Instance;
- TSelectedKeyframeList::iterator theIter = m_SelectedKeyframes.begin();
- ++theIter;
- for (; theIter != m_SelectedKeyframes.end() && theCanCopyNewData; ++theIter) {
- if (theIter->m_Instance != theInstance) // fail!
- theCanCopyNewData = false;
- }
- }
- }
- return theCanCopyNewData;
-}
-
-bool CKeyframesManager::CanPerformKeyframePaste()
-{
- if (m_PasteKeyframeCommandHelper && m_PasteKeyframeCommandHelper->HasCopiedKeyframes()) {
- qt3dsdm::Qt3DSDMInstanceHandle theSelectedInstance =
- g_StudioApp.GetCore()->GetDoc()->GetSelectedInstance();
- if (theSelectedInstance.Valid()) {
- return true;
- }
- }
- return false;
-}
-
-void CKeyframesManager::CopyKeyframes()
-{
- CopySelectedKeyframes();
-}
-
-// legacy stuff that we have to support for animation tracks in the old data model to work
-inline void PostExecuteCommand(IDoc *inDoc)
-{
- CDoc *theDoc = dynamic_cast<CDoc *>(inDoc);
- theDoc->GetCore()->CommitCurrentCommand();
- // fire render event.
- // theDoc->UpdateClientScene( true );
-}
-
-//@param inPerformCopy true if that is a copy/cut command. false if this is a delete.
-// Note: Keyframes are never explicitly copied to the clipboard (only as part of a asset copy),
-// hence that means that the keyframes (only) are never copied across different instances of studio.
-bool CKeyframesManager::RemoveKeyframes(bool inPerformCopy)
-{
- bool theRetVal = HasSelectedKeyframes();
-
- CDoc *theDoc = g_StudioApp.GetCore()->GetDoc();
-
- if (inPerformCopy) // copy prior to removing the keyframes
- CopySelectedKeyframes();
-
- CCmdDataModelRemoveKeyframe *theCmd = nullptr;
- if (!m_SelectedKeyframes.empty()) {
- TSelectedKeyframeList::iterator theKeyIter = m_SelectedKeyframes.begin();
- for (; theKeyIter != m_SelectedKeyframes.end(); ++theKeyIter) {
- Qt3DSDMTimelineKeyframe::TKeyframeHandleList theKeyframeHandles;
- theKeyIter->m_Keyframe->GetKeyframeHandles(theKeyframeHandles);
- ASSERT(!theKeyframeHandles.empty());
- Qt3DSDMTimelineKeyframe::TKeyframeHandleList::iterator theIter =
- theKeyframeHandles.begin();
- if (!theCmd) {
- theCmd = new CCmdDataModelRemoveKeyframe(theDoc, *theIter);
- ++theIter;
- }
- for (; theIter != theKeyframeHandles.end(); ++theIter)
- theCmd->AddKeyframeHandle(*theIter);
- }
- }
-
- if (theCmd) {
- g_StudioApp.GetCore()->ExecuteCommand(theCmd);
- PostExecuteCommand(theDoc);
- }
- return theRetVal;
-}
-
-// note: we can't paste data from old data model system to the new one, and vice versa. so either
-// the old Or the new system succeeds in pasting, never both.
-void CKeyframesManager::PasteKeyframes()
-{
- CDoc *theDoc = g_StudioApp.GetCore()->GetDoc();
-
- if (m_PasteKeyframeCommandHelper && m_PasteKeyframeCommandHelper->HasCopiedKeyframes()) {
- qt3dsdm::Qt3DSDMInstanceHandle theSelectedInstance = theDoc->GetSelectedInstance();
- if (theSelectedInstance.Valid()) {
- long theCurrentViewTimeInMilliseconds = theDoc->GetCurrentViewTime();
- CCmdDataModelInsertKeyframe *theInsertKeyframesCommand =
- m_PasteKeyframeCommandHelper->GetCommand(theDoc, theCurrentViewTimeInMilliseconds,
- theSelectedInstance);
- if (theInsertKeyframesCommand)
- g_StudioApp.GetCore()->ExecuteCommand(theInsertKeyframesCommand);
- }
- }
-}
-
-//=============================================================================
-/**
- * Sets interpolation values of all selected keyframes to the values specified
- * by the user. Pops up a dialog prompting the user to choose new ease in and
- * ease out values. Values in the dialog are initialized to the left-most
- * selected keyframe's interpolation values.
- */
-void CKeyframesManager::SetKeyframeInterpolation()
-{
- if (!HasSelectedKeyframes())
- return;
-
- float theEaseIn = 0;
- float theEaseOut = 0;
- if (CStudioPreferences::GetInterpolation())
- theEaseIn = theEaseOut = 100;
-
- IAnimationCore *theAnimationCore = m_TransMgr->GetStudioSystem()->GetAnimationCore();
-
- if (!m_SelectedKeyframes.empty()) // this is a sorted list, so we only need to grab tge ease
- // in/out values from the first item in this list.
- {
- Qt3DSDMTimelineKeyframe *theTimelineKeyframe = m_SelectedKeyframes.front().m_Keyframe;
- Qt3DSDMTimelineKeyframe::TKeyframeHandleList theKeyframeHandles;
- theTimelineKeyframe->GetKeyframeHandles(theKeyframeHandles);
- TKeyframe theKeyframeData = theAnimationCore->GetKeyframeData(theKeyframeHandles[0]);
- GetEaseInOutValues(theKeyframeData, theEaseIn, theEaseOut);
- }
-
- if (g_StudioApp.GetDialogs()->PromptForKeyframeInterpolation(theEaseIn, theEaseOut)) {
- CDoc *theDoc = g_StudioApp.GetCore()->GetDoc();
- Q3DStudio::ScopedDocumentEditor editor(*theDoc, L"Set Keyframe Interpolation", __FILE__,
- __LINE__);
- TSelectedKeyframeList::iterator theKeyIter = m_SelectedKeyframes.begin();
- for (; theKeyIter != m_SelectedKeyframes.end(); ++theKeyIter) {
- Qt3DSDMTimelineKeyframe *theTimelineKeyframe = theKeyIter->m_Keyframe;
- Qt3DSDMTimelineKeyframe::TKeyframeHandleList theKeyframeHandles;
- theTimelineKeyframe->GetKeyframeHandles(theKeyframeHandles);
- for (size_t i = 0; i < theKeyframeHandles.size(); ++i) {
- TKeyframe theKeyframeData =
- theAnimationCore->GetKeyframeData(theKeyframeHandles[i]);
- SetEaseInOutValues(theKeyframeData, theEaseIn, theEaseOut);
- theAnimationCore->SetKeyframeData(theKeyframeHandles[i], theKeyframeData);
- }
- }
- }
-}
-
-bool CKeyframesManager::HasDynamicKeyframes()
-{
- Qt3DSDMTimelineItemBinding *theBinding = m_TransMgr->GetSelectedBinding();
- if (theBinding) {
- return theBinding->HasDynamicKeyframes(-1);
- }
- return false;
-}
-
-void CKeyframesManager::SelectAllKeyframes()
-{
- ITimelineItemBinding *theBinding = m_TransMgr->GetSelectedBinding();
- if (theBinding)
- theBinding->SelectKeyframes(true);
-}
-
-void CKeyframesManager::DeselectAllKeyframes()
-{
- m_TransMgr->ClearBindingsKeyframeSelection();
- m_SelectedKeyframes.clear();
-}
-
-//==============================================================================
-/**
- * Sets keyframes on all the changed properties of the selected object.
- * Also known as autoset keyframes, but it only applies to one object, and is
- * the result of an F6 key press. Tells the TimelineCtrl to autoset keyframes.
- */
-void CKeyframesManager::SetChangedKeyframes()
-{
-
- CDoc *theDoc = g_StudioApp.GetCore()->GetDoc();
- qt3dsdm::Qt3DSDMInstanceHandle theSelectedInstance = theDoc->GetSelectedInstance();
- if (theSelectedInstance.Valid()) {
- using namespace Q3DStudio;
- Q3DStudio::ScopedDocumentEditor editor(*theDoc, L"Set Changed Keyframes", __FILE__,
- __LINE__);
- CStudioSystem *theStudioSystem = theDoc->GetStudioSystem();
- // Get all animated properties.
- TPropertyHandleList theProperties;
- theStudioSystem->GetPropertySystem()->GetAggregateInstanceProperties(theSelectedInstance,
- theProperties);
- for (size_t thePropertyIndex = 0; thePropertyIndex < theProperties.size();
- ++thePropertyIndex) {
- if (theStudioSystem->GetAnimationSystem()->IsPropertyAnimated(
- theSelectedInstance, theProperties[thePropertyIndex]))
- editor->KeyframeProperty(theSelectedInstance, theProperties[thePropertyIndex],
- true);
- }
- }
-}
-
-void CKeyframesManager::SetKeyframeTime(long inTime)
-{
- CTimeEditDlg theTimeEditDlg;
- theTimeEditDlg.setKeyframesManager(this);
- theTimeEditDlg.showDialog(inTime, g_StudioApp.GetCore()->GetDoc(), ASSETKEYFRAME);
-}
-
-void CKeyframesManager::SetKeyframeDynamic(Qt3DSDMTimelineKeyframe *inKeyframe, bool inDynamic)
-{
- CDoc *theDoc = g_StudioApp.GetCore()->GetDoc();
- qt3dsdm::TKeyframeHandleList theKeyframeHandle;
- CCmdDataModelChangeDynamicKeyframe *theCmd = nullptr;
-
- if (inKeyframe != nullptr)
- inKeyframe->GetKeyframeHandles(theKeyframeHandle);
-
- qt3dsdm::IAnimationCore *theAnimationCore = theDoc->GetStudioSystem()->GetAnimationCore();
- for (size_t theKeyframe = 0; theKeyframe < theKeyframeHandle.size(); ++theKeyframe) {
- qt3dsdm::Qt3DSDMAnimationHandle theAnimation(
- theAnimationCore->GetAnimationForKeyframe(theKeyframeHandle.at(theKeyframe)));
- if (!theCmd)
- theCmd = new CCmdDataModelChangeDynamicKeyframe(theDoc, theAnimation, inDynamic);
- else
- theCmd->AddHandle(theAnimation);
- }
-
- if (theCmd)
- g_StudioApp.GetCore()->ExecuteCommand(theCmd);
-}
-
-void CKeyframesManager::SetKeyframesDynamic(bool inDynamic)
-{
-
- Qt3DSDMTimelineKeyframe *theKeyframe;
-
- if (m_SelectedKeyframes.size() == 0) {
- Qt3DSDMTimelineItemBinding *theBinding = m_TransMgr->GetSelectedBinding();
- IKeyframe *key = theBinding->GetKeyframeByIndex(0);
- theKeyframe = dynamic_cast<Qt3DSDMTimelineKeyframe *>(key);
- SetKeyframeDynamic(theKeyframe, inDynamic);
- } else {
- for (int i = 0; i < (int)m_SelectedKeyframes.size(); ++i) {
- theKeyframe = m_SelectedKeyframes[i].m_Keyframe;
- SetKeyframeDynamic(theKeyframe, inDynamic);
- }
- }
-}
-
-long CKeyframesManager::OffsetSelectedKeyframes(long inOffset)
-{
- m_InstanceSet.clear();
- m_InstanceList.clear();
- std::set<Qt3DSDMTimelineItemBinding *> &theInstances(m_InstanceSet);
-
- TSelectedKeyframeList::iterator theKeyIter = m_SelectedKeyframes.begin();
- for (; theKeyIter != m_SelectedKeyframes.end(); ++theKeyIter) {
- // since this list is sorted by time and we are iterating from the first in the list
- long theKeyframeTime = theKeyIter->m_Keyframe->GetTime();
- if (inOffset < 0 && theKeyframeTime + inOffset < 0)
- inOffset = -theKeyframeTime;
-
- theKeyIter->m_Keyframe->UpdateKeyframesTime(&m_OffsetKeyframeCommandHelper,
- theKeyframeTime + inOffset);
-
- // this contains unique instancs, i.e. mulitple keyframe can map to the same instances
- if (theInstances.insert(theKeyIter->m_Instance).second)
- m_InstanceList.push_back(theKeyIter->m_Instance->GetInstance());
- }
-
- // UI update, explicitly because this doesn't generate any events till action is committed
- std::set<Qt3DSDMTimelineItemBinding *>::iterator theInstanceIter = theInstances.begin();
- for (; theInstanceIter != theInstances.end(); ++theInstanceIter)
- (*theInstanceIter)->UIRefreshPropertyKeyframe(inOffset);
-
- if (m_InstanceList.size())
- m_TransMgr->GetDoc()->GetCore()->GetDispatch()->FireImmediateRefreshInstance(
- &m_InstanceList[0], (long)m_InstanceList.size());
-
- // by contract, this functions returns the "legal" offset, ie time cannot be offset to negative.
- return inOffset;
-}
-
-void CKeyframesManager::CommitChangedKeyframes()
-{
- m_OffsetKeyframeCommandHelper.Finalize();
-}
-
-void CKeyframesManager::RollbackChangedKeyframes()
-{
- m_OffsetKeyframeCommandHelper.Rollback();
-}
-
-bool CKeyframesManager::CanMakeSelectedKeyframesDynamic()
-{
- using namespace qt3dsdm;
- TKeyframeHandleList theKeyframes;
- TKeyframeHandleList allTheKeyframes;
- IAnimationCore &theAnimationCore(
- *g_StudioApp.GetCore()->GetDoc()->GetStudioSystem()->GetAnimationCore());
- // Ensure that all keyframes selected are the first keyframes from the animation track.
- for (size_t idx = 0, end = m_SelectedKeyframes.size(); idx < end; ++idx) {
- theKeyframes.clear();
- m_SelectedKeyframes.at(idx).m_Keyframe->GetKeyframeHandles(theKeyframes);
- for (size_t specificKeyframeIdx = 0, specificKeyframeEnd = theKeyframes.size();
- specificKeyframeIdx < specificKeyframeEnd; ++specificKeyframeIdx) {
- Qt3DSDMKeyframeHandle theKeyframe = theKeyframes[specificKeyframeIdx];
- Qt3DSDMAnimationHandle theAnimation =
- theAnimationCore.GetAnimationForKeyframe(theKeyframe);
- allTheKeyframes.clear();
- theAnimationCore.GetKeyframes(theAnimation, allTheKeyframes);
- if (allTheKeyframes[0] != theKeyframe)
- return false;
- }
- }
- return true;
-}
-
-// keeps track of selected keyframes so that we don't have to iterate through the entire hierarchy
-// to find them
-void CKeyframesManager::SetKeyframeSelected(Qt3DSDMTimelineKeyframe *inKeyframe, bool inSelected,
- Qt3DSDMTimelineItemBinding *inOwningInstance /*= nullptr */)
-{
- TSelectedKeyframeList::iterator theKeyIter = m_SelectedKeyframes.begin();
- for (; theKeyIter != m_SelectedKeyframes.end(); ++theKeyIter) {
- if (theKeyIter->m_Keyframe == inKeyframe)
- break;
- }
- if (inSelected) {
- ASSERT(inOwningInstance);
- if (theKeyIter == m_SelectedKeyframes.end()) { // only this is not already selected
- m_SelectedKeyframes.push_back(SKeyframeInstancePair(inKeyframe, inOwningInstance));
- std::sort(m_SelectedKeyframes.begin(), m_SelectedKeyframes.end(),
- SortKeyframeInstancePairByTime);
- }
- } else if (theKeyIter != m_SelectedKeyframes.end()) {
- m_SelectedKeyframes.erase(theKeyIter);
- }
-}
-
-qt3dsdm::SGetOrSetKeyframeInfo SetupKeyframeInfo(qt3dsdm::Qt3DSDMKeyframeHandle inKeyframe,
- qt3dsdm::IAnimationCore &inCore)
-{
- TKeyframe theKeyframeData = inCore.GetKeyframeData(inKeyframe);
- SEaseInEaseOutKeyframe theKeyframe = qt3dsdm::get<SEaseInEaseOutKeyframe>(theKeyframeData);
- // Is this the first keyframe?
- bool isDynamic = false;
- if (inCore.IsFirstKeyframe(inKeyframe))
- isDynamic = inCore.GetAnimationInfo(inCore.GetAnimationForKeyframe(inKeyframe))
- .m_DynamicFirstKeyframe;
-
- return SGetOrSetKeyframeInfo(theKeyframe.m_KeyframeValue, theKeyframe.m_EaseIn,
- theKeyframe.m_EaseOut, isDynamic);
-}
-
-// only deal with this manager's selected keyframes
-void CKeyframesManager::CopySelectedKeyframes()
-{
- if (!m_SelectedKeyframes.empty()) {
- if (m_PasteKeyframeCommandHelper)
- m_PasteKeyframeCommandHelper->Clear(); // clear out previously copied data
- else
- m_PasteKeyframeCommandHelper = new CPasteKeyframeCommandHelper();
-
- // note: m_SelectedKeyframes is already sorted by time
- float theEarliestKeyframeTimeInSecs =
- Qt3DSDMTimelineKeyframe::GetTimeInSecs(m_SelectedKeyframes[0].m_Keyframe->GetTime());
-
- IAnimationCore *theAnimationCore = m_TransMgr->GetStudioSystem()->GetAnimationCore();
- TSelectedKeyframeList::iterator theIter = m_SelectedKeyframes.begin();
- for (; theIter != m_SelectedKeyframes.end(); ++theIter) {
- Qt3DSDMTimelineKeyframe *theKeyframe = (*theIter).m_Keyframe;
- Qt3DSDMTimelineKeyframe::TKeyframeHandleList theKeyframeHandles;
- theKeyframe->GetKeyframeHandles(theKeyframeHandles);
- qt3dsdm::SGetOrSetKeyframeInfo theInfos[3];
- size_t theValidInfos = 0;
- if (!theKeyframeHandles.empty()) {
- // TODO: need to figure out a good way to convert from individual keyframes back to
- // SValue
- SValue theValue;
- switch (theKeyframeHandles.size()) {
- case 1: {
- theInfos[0] = SetupKeyframeInfo(theKeyframeHandles[0], *theAnimationCore);
- theValidInfos = 1;
-
- } break;
- case 3: {
- theInfos[0] = SetupKeyframeInfo(theKeyframeHandles[0], *theAnimationCore);
- theInfos[1] = SetupKeyframeInfo(theKeyframeHandles[1], *theAnimationCore);
- theInfos[2] = SetupKeyframeInfo(theKeyframeHandles[2], *theAnimationCore);
- theValidInfos = 3;
- } break;
- default: // not handled
- break;
- }
- // time is relative to the earliest keyframe time.
- float theRelativeTimeInSecs =
- Qt3DSDMTimelineKeyframe::GetTimeInSecs(theKeyframe->GetTime())
- - theEarliestKeyframeTimeInSecs;
-
- Qt3DSDMAnimationHandle theAnimation =
- theAnimationCore->GetAnimationForKeyframe(theKeyframeHandles[0]);
- m_PasteKeyframeCommandHelper->AddKeyframeData(
- theAnimationCore->GetAnimationInfo(theAnimation).m_Property,
- theRelativeTimeInSecs, theInfos, theValidInfos);
- }
- }
- }
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/KeyframesManager.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/KeyframesManager.h
deleted file mode 100644
index c20de57e..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/KeyframesManager.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_KEYFRAMES_MANAGER_H
-#define INCLUDED_KEYFRAMES_MANAGER_H 1
-
-#pragma once
-
-#include "ITimelineKeyframesManager.h"
-#include "OffsetKeyframesCommandHelper.h"
-
-class CTimelineTranslationManager;
-class Qt3DSDMTimelineKeyframe;
-class Qt3DSDMTimelineItemBinding;
-class CPasteKeyframeCommandHelper;
-
-//=============================================================================
-/**
- * Abstraction layer to the class that manages both selected keyframes.
- */
-//=============================================================================
-class CKeyframesManager : public ITimelineKeyframesManager
-{
-public:
- CKeyframesManager(CTimelineTranslationManager *inTransMgr);
- virtual ~CKeyframesManager();
-
- // IKeyframesManager
- bool HasSelectedKeyframes(bool inOnlyDynamic = false) override;
- bool HasDynamicKeyframes() override;
- bool CanPerformKeyframeCopy() override;
- bool CanPerformKeyframePaste() override;
- void CopyKeyframes() override;
- bool RemoveKeyframes(bool inPerformCopy) override;
- void PasteKeyframes() override;
- void SetKeyframeInterpolation() override;
- void DeselectAllKeyframes() override;
- void SelectAllKeyframes() override;
- void SetChangedKeyframes() override;
- // ITimelineKeyframesManager
- void SetKeyframeTime(long inTime) override;
- void SetKeyframesDynamic(bool inDynamic) override;
- bool CanMakeSelectedKeyframesDynamic() override;
- long OffsetSelectedKeyframes(long inOffset) override;
- void CommitChangedKeyframes() override;
- void RollbackChangedKeyframes() override;
-
- void SetKeyframeSelected(Qt3DSDMTimelineKeyframe *inKeyframe, bool inSelected,
- Qt3DSDMTimelineItemBinding *inOwningInstance = nullptr);
-
-protected:
- void SetKeyframeDynamic(Qt3DSDMTimelineKeyframe *inKeyframe, bool inDynamic);
- void CopySelectedKeyframes();
-
-public:
- struct SKeyframeInstancePair
- {
- Qt3DSDMTimelineKeyframe *m_Keyframe;
- Qt3DSDMTimelineItemBinding *m_Instance;
-
- SKeyframeInstancePair(Qt3DSDMTimelineKeyframe *inKeyframe,
- Qt3DSDMTimelineItemBinding *inInstance)
- {
- m_Keyframe = inKeyframe;
- m_Instance = inInstance;
- }
- };
-
-protected:
- typedef std::vector<SKeyframeInstancePair> TSelectedKeyframeList; ///< handle multiple keyframes
- ///manipulation, e.g.
- ///offsetting by dragging
-
- CTimelineTranslationManager *m_TransMgr;
- TSelectedKeyframeList m_SelectedKeyframes;
- COffsetKeyframesCommandHelper m_OffsetKeyframeCommandHelper; // so that we can commit on mouseup
- CPasteKeyframeCommandHelper *m_PasteKeyframeCommandHelper;
- std::set<Qt3DSDMTimelineItemBinding *> m_InstanceSet;
- std::vector<qt3dsdm::Qt3DSDMInstanceHandle> m_InstanceList;
-};
-
-#endif // INCLUDED_IKEYFRAMES_MANAGER_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/LayerTimelineItemBinding.cpp b/src/Authoring/Studio/Palettes/Timeline/Bindings/LayerTimelineItemBinding.cpp
index 9b11c389..0e7b0b19 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/LayerTimelineItemBinding.cpp
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/LayerTimelineItemBinding.cpp
@@ -37,7 +37,6 @@
//==============================================================================
#include "LayerTimelineItemBinding.h"
#include "TimelineTranslationManager.h"
-#include "BaseStateRow.h"
#include "ImageTimelineItemBinding.h"
#include "EmptyTimelineTimebar.h"
@@ -74,25 +73,6 @@ bool ImageSlotIsFilled(qt3dsdm::IPropertySystem *inPropertySystem, Qt3DSDMInstan
return theReturn;
}
-
-// helper function to find the image binding class that 'represents' this property
-inline CImageTimelineItemBinding *FindImageBindingByProperty(CBaseStateRow *inRow,
- Qt3DSDMPropertyHandle inProperty)
-{
- if (!inRow || !inProperty.Valid())
- return nullptr;
-
- CImageTimelineItemBinding *theInvalidImageBinding = nullptr;
- for (long theIndex = 0; theIndex < inRow->GetNumNonPropertyRows(); ++theIndex) {
- CImageTimelineItemBinding *theImageBinding = dynamic_cast<CImageTimelineItemBinding *>(
- inRow->GetNonPropertyRow(theIndex)->GetTimelineItemBinding());
- if (theImageBinding && theImageBinding->GetPropertyHandle() == inProperty) {
- theInvalidImageBinding = theImageBinding;
- break;
- }
- }
- return theInvalidImageBinding;
-}
}
CLayerTimelineItemBinding::CLayerTimelineItemBinding(CTimelineTranslationManager *inMgr,
@@ -176,66 +156,7 @@ void CLayerTimelineItemBinding::OnAddChild(qt3dsdm::Qt3DSDMInstanceHandle inInst
void CLayerTimelineItemBinding::OnPropertyChanged(Qt3DSDMPropertyHandle inPropertyHandle)
{
- bool theHandled = false;
- if (m_Row) {
- qt3dsdm::IPropertySystem *thePropertySystem =
- m_TransMgr->GetStudioSystem()->GetPropertySystem();
- CClientDataModelBridge *theBridge =
- m_TransMgr->GetStudioSystem()->GetClientDataModelBridge();
- qt3dsdm::TCharStr thePropertyName = thePropertySystem->GetName(inPropertyHandle);
- size_t theSlotCount = m_ImageNameFormalNamePairs.size();
- for (size_t theSlotIndex = 0; theSlotIndex < theSlotCount; ++theSlotIndex) {
- qt3dsdm::TCharStr thePropName = std::get<0>(m_ImageNameFormalNamePairs[theSlotIndex]);
- if (thePropertyName == thePropName) {
- if (ImageSlotIsFilled(thePropertySystem, m_DataHandle, thePropName)) {
- // already created, bail!
- if (m_TransMgr->GetBinding(GetImage(inPropertyHandle)))
- return;
-
- // Image property was changed from one non-zero guid value to another, delete
- // the old and and create a new one
- CImageTimelineItemBinding *theReplacedImageBinding =
- FindImageBindingByProperty(m_Row, inPropertyHandle);
- if (theReplacedImageBinding)
- m_Row->RemoveChildRow(theReplacedImageBinding);
-
- ITimelineItemBinding *theNextImageBinding = nullptr;
- // Determine if this is inserted somewhere in the existing list.
- for (size_t theNextImage = theSlotIndex + 1; theNextImage < theSlotCount;
- ++theNextImage) {
- qt3dsdm::TCharStr theTempName =
- std::get<0>(m_ImageNameFormalNamePairs[theNextImage]);
- if (ImageSlotIsFilled(thePropertySystem, m_DataHandle, theTempName)) {
- Qt3DSDMPropertyHandle theNextImageProperty =
- theBridge->GetAggregateInstancePropertyByName(m_DataHandle,
- theTempName);
- theNextImageBinding =
- m_TransMgr->GetBinding(GetImage(theNextImageProperty));
- break;
- }
- }
- m_Row->AddChildRow(
- GetOrCreateImageBinding(
- inPropertyHandle,
- std::get<1>(m_ImageNameFormalNamePairs[theSlotIndex]).wide_str()),
- theNextImageBinding);
- } else // check for delete
- {
- // GetImage will not return anything valid since the value is nuked.
- // From the UI end, there is no way we can tell which image is associated with
- // this property, since that is "encapsulated" in the property value.
- CImageTimelineItemBinding *theInvalidImageBinding =
- FindImageBindingByProperty(m_Row, inPropertyHandle);
- if (theInvalidImageBinding)
- m_Row->RemoveChildRow(theInvalidImageBinding);
- }
- theHandled = true;
- break;
- }
- }
- }
- if (!theHandled)
- Qt3DSDMTimelineItemBinding::OnPropertyChanged(inPropertyHandle);
+ Qt3DSDMTimelineItemBinding::OnPropertyChanged(inPropertyHandle);
}
qt3dsdm::Qt3DSDMInstanceHandle
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.cpp b/src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.cpp
index 55598353..59069db7 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.cpp
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.cpp
@@ -37,7 +37,6 @@
//==============================================================================
#include "MaterialTimelineItemBinding.h"
#include "TimelineTranslationManager.h"
-#include "BaseStateRow.h"
#include "ImageTimelineItemBinding.h"
#include "EmptyTimelineTimebar.h"
@@ -182,138 +181,14 @@ void CMaterialTimelineItemBinding::OnAddChild(qt3dsdm::Qt3DSDMInstanceHandle inI
Qt3DSDMTimelineItemBinding::OnAddChild(inInstance);
}
-// helper function to find the image binding class that 'represents' this property
-inline CImageTimelineItemBinding *FindImageBindingByProperty(CBaseStateRow *inRow,
- Qt3DSDMPropertyHandle inProperty)
-{
- if (!inRow || !inProperty.Valid())
- return nullptr;
-
- CImageTimelineItemBinding *theInvalidImageBinding = nullptr;
- for (long theIndex = 0; theIndex < inRow->GetNumNonPropertyRows(); ++theIndex) {
- CImageTimelineItemBinding *theImageBinding = dynamic_cast<CImageTimelineItemBinding *>(
- inRow->GetNonPropertyRow(theIndex)->GetTimelineItemBinding());
- if (theImageBinding && theImageBinding->GetPropertyHandle() == inProperty) {
- theInvalidImageBinding = theImageBinding;
- break;
- }
- }
- return theInvalidImageBinding;
-}
-
void CMaterialTimelineItemBinding::OnPropertyChanged(Qt3DSDMPropertyHandle inPropertyHandle)
{
- bool theHandled = false;
- if (m_Row) {
- qt3dsdm::IPropertySystem *thePropertySystem =
- m_TransMgr->GetStudioSystem()->GetPropertySystem();
- CClientDataModelBridge *theBridge =
- m_TransMgr->GetStudioSystem()->GetClientDataModelBridge();
- qt3dsdm::TCharStr thePropertyName = thePropertySystem->GetName(inPropertyHandle);
- size_t theSlotCount = m_ImageNameFormalNamePairs.size();
- for (size_t theSlotIndex = 0; theSlotIndex < theSlotCount; ++theSlotIndex) {
- qt3dsdm::TCharStr thePropName = std::get<0>(m_ImageNameFormalNamePairs[theSlotIndex]);
- if (thePropertyName == thePropName) {
- if (ImageSlotIsFilled(thePropertySystem, m_DataHandle, thePropName)) {
- // already created, bail!
- if (m_TransMgr->GetBinding(GetImage(inPropertyHandle)))
- return;
-
- // Image property was changed from one non-zero guid value to another, delete
- // the old and and create a new one
- CImageTimelineItemBinding *theReplacedImageBinding =
- FindImageBindingByProperty(m_Row, inPropertyHandle);
- if (theReplacedImageBinding)
- m_Row->RemoveChildRow(theReplacedImageBinding);
-
- ITimelineItemBinding *theNextImageBinding = nullptr;
- // Determine if this is inserted somewhere in the existing list.
- for (size_t theNextImage = theSlotIndex + 1; theNextImage < theSlotCount;
- ++theNextImage) {
- qt3dsdm::TCharStr theTempName =
- std::get<0>(m_ImageNameFormalNamePairs[theNextImage]);
- if (ImageSlotIsFilled(thePropertySystem, m_DataHandle, theTempName)) {
- Qt3DSDMPropertyHandle theNextImageProperty =
- theBridge->GetAggregateInstancePropertyByName(m_DataHandle,
- theTempName);
- theNextImageBinding =
- m_TransMgr->GetBinding(GetImage(theNextImageProperty));
- break;
- }
- }
- m_Row->AddChildRow(
- GetOrCreateImageBinding(
- inPropertyHandle,
- std::get<1>(m_ImageNameFormalNamePairs[theSlotIndex]).wide_str()),
- theNextImageBinding);
- } else // check for delete
- {
- // GetImage will not return anything valid since the value is nuked.
- // From the UI end, there is no way we can tell which image is associated with
- // this property, since that is "encapsulated" in the property value.
- CImageTimelineItemBinding *theInvalidImageBinding =
- FindImageBindingByProperty(m_Row, inPropertyHandle);
- if (theInvalidImageBinding)
- m_Row->RemoveChildRow(theInvalidImageBinding);
- }
- theHandled = true;
- break;
- }
- }
- }
- if (!theHandled)
- Qt3DSDMTimelineItemBinding::OnPropertyChanged(inPropertyHandle);
+ Qt3DSDMTimelineItemBinding::OnPropertyChanged(inPropertyHandle);
}
void CMaterialTimelineItemBinding::OnPropertyLinked(Qt3DSDMPropertyHandle inPropertyHandle)
{
- bool theHandled = false;
- if (m_Row) {
- qt3dsdm::IPropertySystem *thePropertySystem =
- m_TransMgr->GetStudioSystem()->GetPropertySystem();
- CClientDataModelBridge *theBridge =
- m_TransMgr->GetStudioSystem()->GetClientDataModelBridge();
- qt3dsdm::TCharStr thePropertyName = thePropertySystem->GetName(inPropertyHandle);
- size_t theSlotCount = m_ImageNameFormalNamePairs.size();
- for (size_t theSlotIndex = 0; theSlotIndex < theSlotCount; ++theSlotIndex) {
- qt3dsdm::TCharStr thePropName = std::get<0>(m_ImageNameFormalNamePairs[theSlotIndex]);
- if (thePropertyName == thePropName) {
- // Refresh image child row by delete and recreate
- CImageTimelineItemBinding *theInvalidImageBinding =
- FindImageBindingByProperty(m_Row, inPropertyHandle);
- if (theInvalidImageBinding)
- m_Row->RemoveChildRow(theInvalidImageBinding);
-
- if (ImageSlotIsFilled(thePropertySystem, m_DataHandle, thePropName)) {
- ITimelineItemBinding *theNextImageBinding = nullptr;
- // Determine if this is inserted somewhere in the existing list.
- for (size_t theNextImage = theSlotIndex + 1; theNextImage < theSlotCount;
- ++theNextImage) {
- qt3dsdm::TCharStr theTempName =
- std::get<0>(m_ImageNameFormalNamePairs[theNextImage]);
- if (ImageSlotIsFilled(thePropertySystem, m_DataHandle, theTempName)) {
- Qt3DSDMPropertyHandle theNextImageProperty =
- theBridge->GetAggregateInstancePropertyByName(m_DataHandle,
- theTempName);
- theNextImageBinding =
- m_TransMgr->GetBinding(GetImage(theNextImageProperty));
- break;
- }
- }
- m_Row->AddChildRow(
- GetOrCreateImageBinding(
- inPropertyHandle,
- std::get<1>(m_ImageNameFormalNamePairs[theSlotIndex]).wide_str()),
- theNextImageBinding);
- }
-
- theHandled = true;
- break;
- }
- }
- }
- if (!theHandled)
- Qt3DSDMTimelineItemBinding::OnPropertyLinked(inPropertyHandle);
+ Qt3DSDMTimelineItemBinding::OnPropertyLinked(inPropertyHandle);
}
qt3dsdm::Qt3DSDMInstanceHandle
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.h
index 80e7bc47..9f5bebdd 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.h
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.h
@@ -42,7 +42,6 @@
// Classes
//==============================================================================
class CTimelineTranslationManager;
-class CBaseStateRow;
//=============================================================================
/**
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/PathAnchorPointTimelineItemBinding.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/PathAnchorPointTimelineItemBinding.h
index 402f8cea..83997cd1 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/PathAnchorPointTimelineItemBinding.h
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/PathAnchorPointTimelineItemBinding.h
@@ -41,7 +41,6 @@
// Classes
//==============================================================================
class CTimelineTranslationManager;
-class CBaseStateRow;
//=============================================================================
/**
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/PathTimelineItemBinding.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/PathTimelineItemBinding.h
index 833a265c..ea006044 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/PathTimelineItemBinding.h
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/PathTimelineItemBinding.h
@@ -40,7 +40,6 @@
// Classes
//==============================================================================
class CTimelineTranslationManager;
-class CBaseStateRow;
//=============================================================================
/**
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp
index 999062da..f1e5c9cc 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp
@@ -40,14 +40,12 @@
#include "TimeEditDlg.h"
#include "EmptyTimelineTimebar.h"
#include "Qt3DSDMTimelineTimebar.h"
-#include "BaseStateRow.h"
-#include "PropertyRow.h"
-#include "KeyframesManager.h"
#include "StudioApp.h"
#include "Core.h"
#include "Dialogs.h"
#include "GraphUtils.h"
#include "Qt3DSDMDataCore.h"
+#include "DropTarget.h"
// Data model specific
#include "IDoc.h"
@@ -72,8 +70,7 @@ using namespace qt3dsdm;
Qt3DSDMTimelineItemBinding::Qt3DSDMTimelineItemBinding(CTimelineTranslationManager *inMgr,
Qt3DSDMInstanceHandle inDataHandle)
- : m_Row(nullptr)
- , m_TransMgr(inMgr)
+ : m_TransMgr(inMgr)
, m_DataHandle(inDataHandle)
, m_Parent(nullptr)
, m_TimelineTimebar(nullptr)
@@ -84,8 +81,7 @@ Qt3DSDMTimelineItemBinding::Qt3DSDMTimelineItemBinding(CTimelineTranslationManag
}
Qt3DSDMTimelineItemBinding::Qt3DSDMTimelineItemBinding(CTimelineTranslationManager *inMgr)
- : m_Row(nullptr)
- , m_TransMgr(inMgr)
+ : m_TransMgr(inMgr)
, m_DataHandle(0)
, m_Parent(nullptr)
, m_TimelineTimebar(nullptr)
@@ -210,17 +206,6 @@ void Qt3DSDMTimelineItemBinding::SetVisible(bool inVisible)
inVisible, QObject::tr("Visibility Toggle"));
}
-// remember the expanded state for the current presentation
-bool Qt3DSDMTimelineItemBinding::IsExpanded() const
-{
- return m_TransMgr->IsExpanded(m_DataHandle);
-}
-// remember the expanded state for the current presentation
-void Qt3DSDMTimelineItemBinding::SetExpanded(bool inExpanded)
-{
- m_TransMgr->SetExpanded(m_DataHandle, inExpanded);
-}
-
bool Qt3DSDMTimelineItemBinding::HasAction(bool inMaster)
{
TActionHandleList theActions;
@@ -373,12 +358,6 @@ ITimelineItem *Qt3DSDMTimelineItemBinding::GetTimelineItem()
return this;
}
-// Mahmoud_TODO: remove after finishing the new timeline
-CBaseStateRow *Qt3DSDMTimelineItemBinding::GetRow()
-{
- return m_Row;
-}
-
RowTree *Qt3DSDMTimelineItemBinding::getRowTree() const
{
return m_rowTree;
@@ -412,11 +391,6 @@ void Qt3DSDMTimelineItemBinding::OnCollapsed()
}
}
-void Qt3DSDMTimelineItemBinding::ClearKeySelection()
-{
- m_TransMgr->ClearKeyframeSelection();
-}
-
bool Qt3DSDMTimelineItemBinding::OpenAssociatedEditor()
{
return false; // nothing to do by default
@@ -552,34 +526,6 @@ bool Qt3DSDMTimelineItemBinding::IsVisibleEnabled() const
!= 0;
}
-void Qt3DSDMTimelineItemBinding::Bind(CBaseStateRow *inRow)
-{
- ASSERT(!m_Row);
- m_Row = inRow;
-
- // Because children(properties included) may only be loaded later, check if there are any
- // keyframes without having to have the UI created.
- TPropertyHandleList theProperties;
- m_StudioSystem->GetPropertySystem()->GetAggregateInstanceProperties(m_DataHandle,
- theProperties);
- for (size_t thePropertyIndex = 0; thePropertyIndex < theProperties.size(); ++thePropertyIndex) {
- if (m_StudioSystem->GetAnimationSystem()->IsPropertyAnimated(
- m_DataHandle, theProperties[thePropertyIndex]))
- AddKeyframes(GetOrCreatePropertyBinding(theProperties[thePropertyIndex]));
- }
-
- // Set selection status
- Qt3DSDMInstanceHandle theSelectedInstance = m_TransMgr->GetDoc()->GetSelectedInstance();
- m_Row->OnSelected(m_DataHandle == theSelectedInstance);
-}
-
-void Qt3DSDMTimelineItemBinding::Release()
-{
- m_Row = nullptr;
- RemoveAllPropertyBindings();
- m_TransMgr->Unregister(this);
-}
-
bool Qt3DSDMTimelineItemBinding::IsValidTransaction(EUserTransaction inTransaction)
{
qt3dsdm::Qt3DSDMInstanceHandle theInstance = GetInstance();
@@ -712,31 +658,6 @@ Q3DStudio::CString Qt3DSDMTimelineItemBinding::GetObjectPath()
return CRelativePathTools::BuildAbsoluteReferenceString(m_DataHandle, theDoc);
}
-ITimelineKeyframesManager *Qt3DSDMTimelineItemBinding::GetKeyframesManager() const
-{
- return m_TransMgr->GetKeyframesManager();
-}
-
-void Qt3DSDMTimelineItemBinding::RemoveProperty(ITimelineItemProperty *inProperty)
-{
- Q_UNUSED(inProperty);
- // TODO: This function has no use in DataModel world. This is replaced by RemovePropertyRow(
- // Qt3DSDMPropertyHandle inPropertyHandle ).
- // Decide if this function should be removed from ITimelineItemBinding.
-}
-
-void Qt3DSDMTimelineItemBinding::LoadProperties()
-{
- TPropertyHandleList theProperties;
- m_StudioSystem->GetPropertySystem()->GetAggregateInstanceProperties(m_DataHandle,
- theProperties);
- for (size_t thePropertyIndex = 0; thePropertyIndex < theProperties.size(); ++thePropertyIndex) {
- if (m_StudioSystem->GetAnimationSystem()->IsPropertyAnimated(
- m_DataHandle, theProperties[thePropertyIndex]))
- AddPropertyRow(theProperties[thePropertyIndex], true);
- }
-}
-
int Qt3DSDMTimelineItemBinding::getAnimatedPropertyIndex(int propertyHandle) const
{
TPropertyHandleList theProperties;
@@ -800,12 +721,6 @@ void Qt3DSDMTimelineItemBinding::DeleteAllChannelKeyframes()
}
}
-long Qt3DSDMTimelineItemBinding::GetKeyframeCount() const
-{
- // This list is updated when properties are loaded and when keyframes are added & deleted.
- return (long)m_Keyframes.size();
-}
-
IKeyframe *Qt3DSDMTimelineItemBinding::GetKeyframeByTime(long inTime) const
{
TAssetKeyframeList::const_iterator theIter = m_Keyframes.begin();
@@ -816,39 +731,6 @@ IKeyframe *Qt3DSDMTimelineItemBinding::GetKeyframeByTime(long inTime) const
return nullptr;
}
-IKeyframe *Qt3DSDMTimelineItemBinding::GetKeyframeByIndex(long inIndex) const
-{
- if (inIndex >= 0 && inIndex < (long)m_Keyframes.size())
- return const_cast<Qt3DSDMAssetTimelineKeyframe *>(&m_Keyframes[inIndex]);
-
- ASSERT(0); // should not happen
- return nullptr;
-}
-
-long Qt3DSDMTimelineItemBinding::OffsetSelectedKeyframes(long inOffset)
-{
- return m_TransMgr->GetKeyframesManager()->OffsetSelectedKeyframes(inOffset);
-}
-
-void Qt3DSDMTimelineItemBinding::CommitChangedKeyframes()
-{
- m_TransMgr->GetKeyframesManager()->CommitChangedKeyframes();
-}
-
-void Qt3DSDMTimelineItemBinding::OnEditKeyframeTime(long inCurrentTime, long inObjectAssociation)
-{
- CTimeEditDlg theTimeEditDlg;
- theTimeEditDlg.setKeyframesManager(m_TransMgr->GetKeyframesManager());
- theTimeEditDlg.showDialog(inCurrentTime, g_StudioApp.GetCore()->GetDoc(),
- inObjectAssociation);
-}
-
-void Qt3DSDMTimelineItemBinding::SelectKeyframes(bool inSelected, long inTime /*= -1 */)
-{
- // Callback from UI, hence skip the UI update
- DoSelectKeyframes(inSelected, inTime, false);
-}
-
Qt3DSDMInstanceHandle Qt3DSDMTimelineItemBinding::GetInstanceHandle() const
{
return m_DataHandle;
@@ -884,20 +766,6 @@ void Qt3DSDMTimelineItemBinding::OnImmediateRefreshInstanceMultiple(
void Qt3DSDMTimelineItemBinding::RefreshStateRow(bool inRefreshChildren)
{
- CStateRow *theRow = dynamic_cast<CStateRow *>(m_Row);
- if (theRow) {
- theRow->OnTimeChange();
- theRow->setDirty(false);
- if (inRefreshChildren) {
- const QList<ITimelineItemBinding *> children = GetChildren();
- for (auto child : children) {
- Qt3DSDMTimelineItemBinding *theBinding =
- static_cast<Qt3DSDMTimelineItemBinding *>(child);
- if (theBinding)
- theBinding->RefreshStateRow(inRefreshChildren);
- }
- }
- }
}
ITimelineTimebar *Qt3DSDMTimelineItemBinding::CreateTimelineTimebar()
@@ -941,7 +809,7 @@ void Qt3DSDMTimelineItemBinding::AddPropertyRow(Qt3DSDMPropertyHandle inProperty
bool inAppend /*= false */)
{
ITimelineItemProperty *theTimelineProperty = GetPropertyBinding(inPropertyHandle);
- if (theTimelineProperty && theTimelineProperty->GetRow()) // if created, bail
+ if (theTimelineProperty) // if created, bail
return;
if (!theTimelineProperty)
@@ -1001,57 +869,13 @@ void Qt3DSDMTimelineItemBinding::RefreshPropertyKeyframe(
if (theProperty->RefreshKeyframe(inKeyframe, inTransaction)) {
// Update asset keyframes
UpdateKeyframe(theProperty->GetKeyframeByHandle(inKeyframe), inTransaction);
- if (m_Row) // UI update
- m_Row->setDirty(true);
}
}
}
}
-// called when the keyframes are updated in the UI and data model hasn't committed the change, ie no
-// event callback from DataModel
-void Qt3DSDMTimelineItemBinding::UIRefreshPropertyKeyframe(long inOffset)
-{
- if (!m_Row)
- return;
-
- // TODO: figure out a better way to sync m_Keyframes
- TAssetKeyframeList::iterator theKeyIter = m_Keyframes.begin();
- for (; theKeyIter != m_Keyframes.end(); ++theKeyIter) {
- if (theKeyIter->IsSelected())
- theKeyIter->UpdateTime(theKeyIter->GetTime() + inOffset);
- }
- // If a asset keyframe was "shared" by several properties' keyframes
- // we need to 'break' this sharing and create for the remaining unmoved keyframes.
- TPropertyBindingMap::const_iterator theIter = m_PropertyBindingMap.begin();
- for (; theIter != m_PropertyBindingMap.end(); ++theIter) {
- (*theIter).second->RefreshKeyFrames();
-
- for (long i = 0; i < theIter->second->GetKeyframeCount(); ++i) {
- IKeyframe *theKeyframe = theIter->second->GetKeyframeByIndex(i);
- UpdateKeyframe(theKeyframe, ETimelineKeyframeTransaction_Add);
-
- // Unfortunately, this is the way we can propagate UI updates to ALL selected keyframes
- if (theKeyframe->IsSelected()) {
- CPropertyRow *thePropertyRow = theIter->second->GetRow();
- if (thePropertyRow)
- thePropertyRow->setDirty(true);
- }
- }
- }
- m_Row->setDirty(true);
-}
-
void Qt3DSDMTimelineItemBinding::OnPropertyChanged(Qt3DSDMPropertyHandle inPropertyHandle)
-{ // Refresh UI
- CClientDataModelBridge *theBridge = m_StudioSystem->GetClientDataModelBridge();
- if (m_Row && (inPropertyHandle == theBridge->GetNameProperty()
- || inPropertyHandle == theBridge->GetSceneAsset().m_Eyeball
- || inPropertyHandle == theBridge->GetSceneAsset().m_Locked
- || inPropertyHandle == theBridge->GetSceneAsset().m_Shy
- || inPropertyHandle == theBridge->GetSceneAsset().m_StartTime
- || inPropertyHandle == theBridge->GetSceneAsset().m_EndTime))
- m_Row->setDirty(true);
+{
}
void Qt3DSDMTimelineItemBinding::OnPropertyLinked(Qt3DSDMPropertyHandle inPropertyHandle)
@@ -1096,59 +920,6 @@ void Qt3DSDMTimelineItemBinding::SetDynamicKeyframes(long inTime, bool inDynamic
}
}
-// Update UI on the selection state of all keyframes on this row and all its properties' keyframes.
-void Qt3DSDMTimelineItemBinding::DoSelectKeyframes(bool inSelected, long inTime, bool inUpdateUI)
-{
- if (inTime == -1) // all keyframes
- {
- TAssetKeyframeList::iterator theKeyIter = m_Keyframes.begin();
- for (; theKeyIter != m_Keyframes.end(); ++theKeyIter)
- theKeyIter->SetSelected(inSelected);
- } else {
- Qt3DSDMAssetTimelineKeyframe *theKeyframe =
- dynamic_cast<Qt3DSDMAssetTimelineKeyframe *>(GetKeyframeByTime(inTime));
- if (theKeyframe)
- theKeyframe->SetSelected(inSelected);
- }
- if (inUpdateUI && m_Row)
- m_Row->RequestSelectKeysByTime(-1, inSelected);
-
- // legacy feature: all properties with keyframes at inTime or all if inTime is -1 are selected
- // as well.
- TPropertyBindingMap::iterator theIter = m_PropertyBindingMap.begin();
- for (; theIter != m_PropertyBindingMap.end(); ++theIter)
- theIter->second->DoSelectKeyframes(inSelected, inTime, true, this);
-}
-
-// When selecting by mouse-drag, if all properties are selected, select the asset keyframe. And if
-// one gets de-selected, de-select. Legacy feature.
-// Note that if only 1 property has a keyframe at time t, the asset keyframe gets selected
-// automatically when that keyframe is selected. Its odd to me but
-// that's how it has always behaved.
-void Qt3DSDMTimelineItemBinding::OnPropertySelection(long inTime)
-{
- IKeyframe *theAssetKeyframe = GetKeyframeByTime(inTime);
- if (theAssetKeyframe) {
- bool theAllSelectedFlag = true;
- TPropertyBindingMap::iterator theIter = m_PropertyBindingMap.begin();
- for (; theIter != m_PropertyBindingMap.end(); ++theIter) {
- IKeyframe *theKeyframe = theIter->second->GetKeyframeByTime(inTime);
- if (theKeyframe && !theKeyframe->IsSelected()) {
- // done, i.e selection remain unchanged.
- theAllSelectedFlag = false;
- break;
- }
- }
- if (theAssetKeyframe->IsSelected() != theAllSelectedFlag) {
- dynamic_cast<Qt3DSDMAssetTimelineKeyframe *>(theAssetKeyframe)
- ->SetSelected(theAllSelectedFlag);
- // Update UI
- if (m_Row)
- m_Row->RequestSelectKeysByTime(inTime, theAllSelectedFlag);
- }
- }
-}
-
Q3DStudio::CId Qt3DSDMTimelineItemBinding::GetGuid() const
{
CClientDataModelBridge *theClientBridge = m_StudioSystem->GetClientDataModelBridge();
@@ -1244,11 +1015,6 @@ void Qt3DSDMTimelineItemBinding::UpdateKeyframe(IKeyframe *inKeyframe,
m_Keyframes.push_back(Qt3DSDMAssetTimelineKeyframe(this, theKeyframeTime));
}
}
- if (m_Row && (theDoAddFlag
- || inTransaction == ETimelineKeyframeTransaction_DynamicChanged)) {
- // dynamic => only UI needs to refresh
- m_Row->setDirty(true);
- }
}
void Qt3DSDMTimelineItemBinding::OnAddChild(Qt3DSDMInstanceHandle inInstance)
@@ -1286,17 +1052,10 @@ void Qt3DSDMTimelineItemBinding::OnAddChild(Qt3DSDMInstanceHandle inInstance)
void Qt3DSDMTimelineItemBinding::OnDeleteChild(Qt3DSDMInstanceHandle inInstance)
{
- ITimelineItemBinding *theChild = m_TransMgr->GetOrCreate(inInstance);
- if (theChild) {
- m_Row->RemoveChildRow(theChild);
- }
}
void Qt3DSDMTimelineItemBinding::UpdateActionStatus()
{
- if (m_Row) {
- m_Row->requestUpdateActionStatus();
- }
}
//=============================================================================
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.h
index 9d14cc84..198ec8a3 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.h
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.h
@@ -51,7 +51,6 @@
// Classes
//==============================================================================
class CTimelineTranslationManager;
-class CBaseStateRow;
class Qt3DSDMTimelineItemProperty;
class CCmdDataModelSetKeyframeTime;
class RowTree;
@@ -75,7 +74,6 @@ protected: // Typedef
typedef std::vector<Qt3DSDMAssetTimelineKeyframe> TAssetKeyframeList;
protected:
- CBaseStateRow *m_Row; // TODO: remove after finishing the new timeline
RowTree *m_rowTree = nullptr;
CTimelineTranslationManager *m_TransMgr;
qt3dsdm::Qt3DSDMInstanceHandle m_DataHandle;
@@ -110,8 +108,6 @@ public:
void SetLocked(bool) override;
bool IsVisible() const override;
void SetVisible(bool) override;
- bool IsExpanded() const override;
- void SetExpanded(bool inExpanded) override;
bool HasAction(bool inMaster) override;
bool ChildrenHasAction(bool inMaster) override;
bool ComponentHasAction(bool inMaster) override;
@@ -123,12 +119,10 @@ public:
// ITimelineItemBinding
ITimelineItem *GetTimelineItem() override;
- CBaseStateRow *GetRow() override; // Mahmoud_TODO: remove after finishing the new timeline
RowTree *getRowTree() const override;
void setRowTree(RowTree *row) override;
void SetSelected(bool inMultiSelect) override;
void OnCollapsed() override;
- void ClearKeySelection() override;
bool OpenAssociatedEditor() override;
void SetDropTarget(CDropTarget *inTarget) override;
// Hierarchy
@@ -144,31 +138,15 @@ public:
bool ShowToggleControls() const override;
bool IsLockedEnabled() const override;
bool IsVisibleEnabled() const override;
- // Init/Cleanup
- void Bind(CBaseStateRow *inRow) override;
- void Release() override;
// ContextMenu
bool IsValidTransaction(EUserTransaction inTransaction) override;
void PerformTransaction(EUserTransaction inTransaction) override;
Q3DStudio::CString GetObjectPath() override;
- // Selected keyframes
- ITimelineKeyframesManager *GetKeyframesManager() const override;
- // Properties
- void RemoveProperty(ITimelineItemProperty *inProperty) override;
- void LoadProperties() override;
// ITimelineItemKeyframesHolder
void InsertKeyframe() override;
void DeleteAllChannelKeyframes() override;
- long GetKeyframeCount() const override;
IKeyframe *GetKeyframeByTime(long inTime) const override;
- IKeyframe *GetKeyframeByIndex(long inIndex) const override;
- long OffsetSelectedKeyframes(long inOffset) override;
- void CommitChangedKeyframes() override;
- void OnEditKeyframeTime(long inCurrentTime, long inObjectAssociation) override;
-
- // IKeyframeSelector
- void SelectKeyframes(bool inSelected, long inTime = -1) override;
// IUICDMSelectable
virtual qt3dsdm::Qt3DSDMInstanceHandle GetInstanceHandle() const;
@@ -192,12 +170,9 @@ public:
virtual void OnPropertyChanged(qt3dsdm::Qt3DSDMPropertyHandle inPropertyHandle);
virtual void OnPropertyLinked(qt3dsdm::Qt3DSDMPropertyHandle inPropertyHandle);
- virtual void UIRefreshPropertyKeyframe(long inOffset);
// Keyframe manipulation
virtual bool HasDynamicKeyframes(long inTime);
virtual void SetDynamicKeyframes(long inTime, bool inDynamic);
- virtual void DoSelectKeyframes(bool inSelected, long inTime, bool inUpdateUI);
- virtual void OnPropertySelection(long inTime);
virtual void OnAddChild(qt3dsdm::Qt3DSDMInstanceHandle inInstance);
virtual void OnDeleteChild(qt3dsdm::Qt3DSDMInstanceHandle inInstance);
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemProperty.cpp b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemProperty.cpp
index 56783576..de9502bb 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemProperty.cpp
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemProperty.cpp
@@ -36,12 +36,10 @@
// Includes
//==============================================================================
#include "Qt3DSDMTimelineItemProperty.h"
-#include "PropertyRow.h"
#include "TimelineTranslationManager.h"
#include "ITimelineItemBinding.h"
#include "Qt3DSDMTimelineItemBinding.h"
#include "Qt3DSDMTimelineKeyframe.h"
-#include "KeyframesManager.h"
#include "CmdDataModelChangeKeyframe.h"
#include "CmdDataModelRemoveKeyframe.h"
#include "StudioApp.h"
@@ -74,8 +72,7 @@ inline float DataModelToColor(float inValue)
Qt3DSDMTimelineItemProperty::Qt3DSDMTimelineItemProperty(CTimelineTranslationManager *inTransMgr,
Qt3DSDMPropertyHandle inPropertyHandle,
Qt3DSDMInstanceHandle inInstance)
- : m_Row(nullptr)
- , m_InstanceHandle(inInstance)
+ : m_InstanceHandle(inInstance)
, m_PropertyHandle(inPropertyHandle)
, m_TransMgr(inTransMgr)
, m_SetKeyframeValueCommand(nullptr)
@@ -102,7 +99,6 @@ Qt3DSDMTimelineItemProperty::Qt3DSDMTimelineItemProperty(CTimelineTranslationMan
Qt3DSDMTimelineItemProperty::~Qt3DSDMTimelineItemProperty()
{
ReleaseKeyframes();
- Release();
}
void Qt3DSDMTimelineItemProperty::CreateKeyframes()
@@ -133,13 +129,6 @@ void Qt3DSDMTimelineItemProperty::CreateKeyframes()
void Qt3DSDMTimelineItemProperty::ReleaseKeyframes()
{
- // clear any selection from m_TransMgr
- TKeyframeList::iterator theIter = m_Keyframes.begin();
- for (; theIter != m_Keyframes.end(); ++theIter) {
- m_TransMgr->GetKeyframesManager()->SetKeyframeSelected(*theIter, false);
-
- SAFE_DELETE(*theIter);
- }
m_Keyframes.clear();
m_AnimationHandles.clear();
}
@@ -179,8 +168,7 @@ inline ITimelineItemBinding *GetParentBinding(RowTree *inRow)
RowTree *theParentRow = inRow->parentRow();
if (theParentRow) {
theParentBinding = theParentRow->getBinding();
- ASSERT(theParentBinding); // TimelineItemBinding should be set properly during
- // CBaseStateRow::Initialize
+ ASSERT(theParentBinding);
}
}
return theParentBinding;
@@ -229,23 +217,11 @@ float Qt3DSDMTimelineItemProperty::GetMinimumValue() const
return theRetVal;
}
-void Qt3DSDMTimelineItemProperty::Bind(CPropertyRow *inRow)
-{
- ASSERT(!m_Row);
-
- m_Row = inRow;
-}
-
RowTree *Qt3DSDMTimelineItemProperty::getRowTree() const
{
return m_rowTree;
}
-void Qt3DSDMTimelineItemProperty::Release()
-{
- m_Row = nullptr;
-}
-
// Ensures the object that owns this property is selected.
void Qt3DSDMTimelineItemProperty::SetSelected()
{
@@ -256,11 +232,6 @@ void Qt3DSDMTimelineItemProperty::SetSelected()
}
}
-void Qt3DSDMTimelineItemProperty::ClearKeySelection()
-{
- m_TransMgr->ClearKeyframeSelection();
-}
-
void Qt3DSDMTimelineItemProperty::DeleteAllKeys()
{
if (m_Keyframes.empty())
@@ -273,11 +244,6 @@ void Qt3DSDMTimelineItemProperty::DeleteAllKeys()
editor->DeleteAllKeyframes(m_AnimationHandles[idx]);
}
-ITimelineKeyframesManager *Qt3DSDMTimelineItemProperty::GetKeyframesManager() const
-{
- return m_TransMgr->GetKeyframesManager();
-}
-
IKeyframe *Qt3DSDMTimelineItemProperty::GetKeyframeByTime(long inTime) const
{
std::vector<long> theTest;
@@ -384,51 +350,11 @@ void Qt3DSDMTimelineItemProperty::SetChannelValueAtTime(long inChannelIndex, lon
}
}
-long Qt3DSDMTimelineItemProperty::OffsetSelectedKeyframes(long inOffset)
-{
- long theRetVal = m_TransMgr->GetKeyframesManager()->OffsetSelectedKeyframes(inOffset);
- if (m_Row) // UI update, since the data model sends no event while the change isn't commited.
- {
- m_Row->Refresh();
- }
- return theRetVal;
-}
-
-void Qt3DSDMTimelineItemProperty::CommitChangedKeyframes()
-{
- if (m_SetKeyframeValueCommand) { // if this is moving a keyframe value
- m_SetKeyframeValueCommand->Finalize(m_SetKeyframeValueCommand->GetValue());
- g_StudioApp.GetCore()->ExecuteCommand(m_SetKeyframeValueCommand, false);
- m_SetKeyframeValueCommand = nullptr;
- } else // otherwise its changing keyframe times
- m_TransMgr->GetKeyframesManager()->CommitChangedKeyframes();
-}
-
-void Qt3DSDMTimelineItemProperty::OnEditKeyframeTime(long inCurrentTime, long inObjectAssociation)
-{
- (void)inObjectAssociation;
- CTimeEditDlg theTimeEditDlg;
- theTimeEditDlg.setKeyframesManager(m_TransMgr->GetKeyframesManager());
- theTimeEditDlg.showDialog(inCurrentTime, g_StudioApp.GetCore()->GetDoc(), ASSETKEYFRAME);
-}
-
-void Qt3DSDMTimelineItemProperty::SelectKeyframes(bool inSelected, long inTime /*= -1 */)
-{
- Qt3DSDMTimelineItemBinding *theParent =
- static_cast<Qt3DSDMTimelineItemBinding *>(GetParentBinding(m_rowTree));
- DoSelectKeyframes(inSelected, inTime, false, theParent);
-}
-
void Qt3DSDMTimelineItemProperty::setRowTree(RowTree *rowTree)
{
m_rowTree = rowTree;
}
-CPropertyRow *Qt3DSDMTimelineItemProperty::GetRow()
-{
- return m_Row;
-}
-
bool Qt3DSDMTimelineItemProperty::IsDynamicAnimation()
{
return m_Keyframes.size() > 0 && m_Keyframes[0]->IsDynamic();
@@ -447,10 +373,8 @@ bool Qt3DSDMTimelineItemProperty::RefreshKeyframe(qt3dsdm::Qt3DSDMKeyframeHandle
TKeyframeList::iterator theIter = m_Keyframes.begin();
for (; theIter != m_Keyframes.end(); ++theIter) {
Qt3DSDMTimelineKeyframe *theKeyframe = *theIter;
- if (theKeyframe->HasKeyframeHandle(inKeyframe)) { // clear selection
- m_TransMgr->GetKeyframesManager()->SetKeyframeSelected(theKeyframe, false);
+ if (theKeyframe->HasKeyframeHandle(inKeyframe)) {
m_Keyframes.erase(theIter);
-
theHandled = true;
break;
}
@@ -477,8 +401,6 @@ bool Qt3DSDMTimelineItemProperty::RefreshKeyframe(qt3dsdm::Qt3DSDMKeyframeHandle
default:
return false;
}
- if (theHandled && m_Row)
- m_Row->Refresh();
return theHandled;
}
@@ -494,49 +416,6 @@ IKeyframe *Qt3DSDMTimelineItemProperty::GetKeyframeByHandle(qt3dsdm::Qt3DSDMKeyf
return nullptr;
}
-// This is either triggered from this property's keyframe selection OR from a parent's keyframe
-// selection.
-void Qt3DSDMTimelineItemProperty::DoSelectKeyframes(bool inSelected, long inTime,
- bool inParentTriggered,
- Qt3DSDMTimelineItemBinding *inParent)
-{
- // this is what it used to do before the refactor. selecting a keyframe always selects the
- // asset.
- if (inSelected)
- SetSelected();
-
- if (!inParent)
- return;
-
- if (inTime == -1) // all keyframes
- {
- TKeyframeList::iterator theIter = m_Keyframes.begin();
- for (; theIter != m_Keyframes.end(); ++theIter) {
- (*theIter)->SetSelected(inSelected);
- m_TransMgr->GetKeyframesManager()->SetKeyframeSelected(*theIter, inSelected, inParent);
- }
- } else {
- Qt3DSDMTimelineKeyframe *theKeyframe =
- dynamic_cast<Qt3DSDMTimelineKeyframe *>(GetKeyframeByTime(inTime));
- if (theKeyframe) {
- theKeyframe->SetSelected(inSelected);
- m_TransMgr->GetKeyframesManager()->SetKeyframeSelected(theKeyframe, inSelected,
- inParent);
- }
- }
- // Requires UI to be updated explicitly
- if (inParentTriggered && m_Row)
- m_Row->RequestSelectKeysByTime(inTime, inSelected);
-
- // Support existing feature, selection by mouse-drag a rect, when all property keyframes are
- // selected, the asset keyframe is automatically selected as well.
- // and the mouse drags 'outside' a keyframe and de-selecting it, the asset keyframe has to be
- // deselected as well.
- if (!inParentTriggered && inTime != -1)
- inParent->OnPropertySelection(inTime);
-}
-
-//=============================================================================
/**
* Create a wrapper for this keyframe if doesn't exists.
* @return true if created, false if already exists.
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemProperty.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemProperty.h
index 0a8e5e76..1b1524e4 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemProperty.h
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemProperty.h
@@ -63,33 +63,21 @@ public:
float GetMaximumValue() const override;
float GetMinimumValue() const override;
void SetSelected() override;
- void ClearKeySelection() override;
void DeleteAllKeys() override;
- ITimelineKeyframesManager *GetKeyframesManager() const override;
IKeyframe *GetKeyframeByTime(long inTime) const override;
IKeyframe *GetKeyframeByIndex(long inIndex) const override;
long GetKeyframeCount() const override;
long GetChannelCount() const override;
float GetChannelValueAtTime(long inChannelIndex, long inTime) override;
void SetChannelValueAtTime(long inChannelIndex, long inTime, float inValue) override;
- long OffsetSelectedKeyframes(long inOffset) override;
- void CommitChangedKeyframes() override;
- void OnEditKeyframeTime(long inCurrentTime, long inObjectAssociation) override;
bool IsDynamicAnimation() override;
- // IKeyframeSelector
- void SelectKeyframes(bool inSelected, long inTime = -1) override;
void setRowTree(RowTree *rowTree) override;
- void Bind(CPropertyRow *inRow) override;
RowTree *getRowTree() const override;
- void Release() override;
- CPropertyRow *GetRow() override; // Mahmoud_TODO: delete
bool RefreshKeyframe(qt3dsdm::Qt3DSDMKeyframeHandle inKeyframe,
ETimelineKeyframeTransaction inTransaction);
IKeyframe *GetKeyframeByHandle(qt3dsdm::Qt3DSDMKeyframeHandle inKeyframe);
- void DoSelectKeyframes(bool inSelected, long inTime, bool inParentTriggered,
- Qt3DSDMTimelineItemBinding *inParent);
void RefreshKeyFrames(void);
@@ -108,7 +96,6 @@ protected:
protected:
typedef std::vector<Qt3DSDMTimelineKeyframe *> TKeyframeList;
- CPropertyRow *m_Row; // Mahmoud_TODO: remove
qt3dsdm::Qt3DSDMInstanceHandle m_InstanceHandle;
qt3dsdm::Qt3DSDMPropertyHandle m_PropertyHandle;
CTimelineTranslationManager *m_TransMgr;
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineTimebar.cpp b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineTimebar.cpp
index 67e7275c..4f7ed646 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineTimebar.cpp
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/Qt3DSDMTimelineTimebar.cpp
@@ -46,7 +46,6 @@
#include "Core.h"
#include "DurationEditDlg.h"
#include "IDocumentEditor.h"
-#include "BaseStateRow.h"
#include "StudioFullSystem.h"
#include "StudioPreferences.h"
#include "ITimelineItemBinding.h"
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/SlideTimelineItemBinding.cpp b/src/Authoring/Studio/Palettes/Timeline/Bindings/SlideTimelineItemBinding.cpp
index 1afb57fc..b1a75b39 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/SlideTimelineItemBinding.cpp
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/SlideTimelineItemBinding.cpp
@@ -36,7 +36,6 @@
// Includes
//==============================================================================
#include "SlideTimelineItemBinding.h"
-#include "BaseStateRow.h"
// Data model specific
#include "Doc.h"
@@ -83,12 +82,6 @@ void CSlideTimelineItemBinding::SetName(const Q3DStudio::CString & /*inName*/)
// Do nothing because name is read only
}
-void CSlideTimelineItemBinding::Bind(CBaseStateRow *inRow)
-{
- Qt3DSDMTimelineItemBinding::Bind(inRow);
- inRow->requestSetNameReadOnly();
-}
-
bool CSlideTimelineItemBinding::IsValidTransaction(EUserTransaction inTransaction)
{
qt3dsdm::Qt3DSDMInstanceHandle theInstance = GetInstance();
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/SlideTimelineItemBinding.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/SlideTimelineItemBinding.h
index eb6a5f45..cf12c0a2 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/SlideTimelineItemBinding.h
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/SlideTimelineItemBinding.h
@@ -42,7 +42,6 @@
//==============================================================================
class ITimelineItem;
class CTimelineTranslationManager;
-class CBaseStateRow;
//=============================================================================
/**
@@ -58,13 +57,11 @@ public:
// Qt3DSDMTimelineItemBinding
ITimelineTimebar *GetTimebar() override;
void SetName(const Q3DStudio::CString &inName) override;
- void Bind(CBaseStateRow *inRow) override;
bool IsValidTransaction(EUserTransaction inTransaction) override;
// No properties
long GetPropertyCount() override { return 0; }
ITimelineItemProperty *GetProperty(long) override { return nullptr; }
- void LoadProperties() override {}
// Eye/Lock toggles are not applicable
bool ShowToggleControls() const override { return false; }
@@ -82,17 +79,9 @@ public:
// Keyframes, not applicable to a Slide
void InsertKeyframe() override {}
void DeleteAllChannelKeyframes() override {}
- long GetKeyframeCount() const override { return 0; }
IKeyframe *GetKeyframeByTime(long) const override { return nullptr; }
- IKeyframe *GetKeyframeByIndex(long) const override { return nullptr; }
- long OffsetSelectedKeyframes(long) override { return 0; }
- void CommitChangedKeyframes() override {}
- void OnEditKeyframeTime(long, long) override {}
- // IKeyframeSelector
- void SelectKeyframes(bool, long inTime = -1) override { Q_UNUSED(inTime); }
// Keyframe manipulation, not applicable
- void UIRefreshPropertyKeyframe(long inOffset) override { Q_UNUSED(inOffset); }
bool HasDynamicKeyframes(long inTime) override
{
Q_UNUSED(inTime);
@@ -103,13 +92,6 @@ public:
Q_UNUSED(inTime);
Q_UNUSED(inDynamic);
}
- void DoSelectKeyframes(bool inSelected, long inTime, bool inUpdateUI) override
- {
- Q_UNUSED(inSelected);
- Q_UNUSED(inTime);
- Q_UNUSED(inUpdateUI);
- }
- void OnPropertySelection(long inTime) override { Q_UNUSED(inTime); }
protected:
std::shared_ptr<qt3dsdm::ISignalConnection>
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/TimelineTranslationManager.cpp b/src/Authoring/Studio/Palettes/Timeline/Bindings/TimelineTranslationManager.cpp
index ffd01c3d..627fb387 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/TimelineTranslationManager.cpp
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/TimelineTranslationManager.cpp
@@ -44,15 +44,9 @@
#include "PathAnchorPointTimelineItemBinding.h"
#include "PathTimelineItemBinding.h"
#include "LayerTimelineItemBinding.h"
-#include "KeyframesManager.h"
-#include "TimelineBreadCrumbProvider.h"
-#include "BaseStateRow.h"
-#include "PropertyRow.h"
#include "IDoc.h"
#include "Qt3DSDMStudioSystem.h"
#include "Qt3DSDMSlides.h"
-#include "Qt3DSDMSignals.h"
-#include "TimelineUIFactory.h"
// Link to Data model
#include "ClientDataModelBridge.h"
@@ -65,17 +59,12 @@ using namespace qt3dsdm;
CTimelineTranslationManager::CTimelineTranslationManager()
{
- m_KeyframesManager = new CKeyframesManager(this);
- m_BreadCrumbProvider = new CTimelineBreadCrumbProvider(g_StudioApp.GetCore()->GetDoc());
}
CTimelineTranslationManager::~CTimelineTranslationManager()
{
// clean up all bindings
Clear();
- m_Connections.clear();
- delete m_KeyframesManager;
- delete m_BreadCrumbProvider;
}
ITimelineItemBinding *CTimelineTranslationManager::GetOrCreate(Qt3DSDMInstanceHandle inInstance)
@@ -121,7 +110,6 @@ ITimelineItemBinding *CTimelineTranslationManager::GetOrCreate(Qt3DSDMInstanceHa
m_InstanceHandleBindingMap.insert(
std::make_pair(theReturn->GetInstanceHandle(), theReturn));
- m_InstanceHandleExpandedMap.insert(std::make_pair(theReturn->GetInstanceHandle(), false));
theBinding = theReturn;
}
@@ -130,41 +118,6 @@ ITimelineItemBinding *CTimelineTranslationManager::GetOrCreate(Qt3DSDMInstanceHa
//==============================================================================
/**
- * Create a new CPropertyRow that maps to this ITimelineItemProperty.
- * The caller is assumed to have ensured that this is only called once per property binding.
- */
-CPropertyRow *CTimelineTranslationManager::CreateNewPropertyRow(
- ITimelineItemProperty *inTimelineItemPropertyBinding, CBaseStateRow *inParentRow,
- CPropertyRow *inNextRow)
-{
- if (!inParentRow || !inTimelineItemPropertyBinding)
- return {};
-
- return TimelineUIFactory::instance()->createPropertyRow(inParentRow, inNextRow,
- inTimelineItemPropertyBinding);
-}
-
-//==============================================================================
-/**
- * Does the reverse of CreateNewPropertyRow, when a property has been de-animated.
- */
-void CTimelineTranslationManager::RemovePropertyRow(
- ITimelineItemProperty *inTimelineItemPropertyBinding)
-{
- CPropertyRow *theRow = nullptr;
- if (!inTimelineItemPropertyBinding
- || (theRow = inTimelineItemPropertyBinding->GetRow()) == nullptr)
- return;
-
- CBaseStateRow *theParentRow = dynamic_cast<CBaseStateRow*>(theRow->GetParentRow());
- if (theParentRow) {
- inTimelineItemPropertyBinding->Release();
- theParentRow->RemovePropertyRow(theRow); // this implicitly delete the row
- }
-}
-
-//==============================================================================
-/**
* Clear all bindings, typically when a presentation is closed.
*/
void CTimelineTranslationManager::Clear()
@@ -173,55 +126,6 @@ void CTimelineTranslationManager::Clear()
m_InstanceHandleBindingMap.clear();
}
-//==============================================================================
-/**
- * Called when the associated UI is no longer valid.
- */
-void CTimelineTranslationManager::Unregister(ITimelineItemBinding *inTimelineItem)
-{
- // DataModel
- bool theDeselectItem = false;
- TInstanceHandleBindingMap::iterator theInstanceIter = m_InstanceHandleBindingMap.begin();
- for (; theInstanceIter != m_InstanceHandleBindingMap.end(); ++theInstanceIter) {
- if (theInstanceIter->second == inTimelineItem) {
- // If this is the currently selected object and make sure that is cleared.
- qt3dsdm::Qt3DSDMInstanceHandle theSelectedInstance =
- g_StudioApp.GetCore()->GetDoc()->GetSelectedInstance();
- if (theSelectedInstance.Valid() && theSelectedInstance == theInstanceIter->first)
- theDeselectItem = true;
-
- m_InstanceHandleBindingMap.erase(theInstanceIter);
- break;
- }
- }
-
- delete inTimelineItem;
-}
-
-CKeyframesManager *CTimelineTranslationManager::GetKeyframesManager() const
-{
- return m_KeyframesManager;
-}
-
-IBreadCrumbProvider *CTimelineTranslationManager::GetBreadCrumbProvider() const
-{
- return m_BreadCrumbProvider;
-}
-
-CBaseStateRow *CTimelineTranslationManager::GetSelectedRow() const
-{
- ITimelineItemBinding *theBinding = GetSelectedBinding();
- if (theBinding)
- return theBinding->GetRow();
- return nullptr;
-}
-
-long CTimelineTranslationManager::GetCurrentViewTime() const
-{
- return g_StudioApp.GetCore()->GetDoc()->GetCurrentViewTime();
-}
-
-//==============================================================================
/**
* @return the Binding object that corresponds to this instance.
*/
@@ -234,90 +138,6 @@ CTimelineTranslationManager::GetBinding(Qt3DSDMInstanceHandle inHandle) const
return nullptr;
}
-Qt3DSDMTimelineItemBinding *CTimelineTranslationManager::GetSelectedBinding() const
-{
- qt3dsdm::Qt3DSDMInstanceHandle theSelectedInstance =
- g_StudioApp.GetCore()->GetDoc()->GetSelectedInstance();
- if (theSelectedInstance.Valid()) {
- Qt3DSDMTimelineItemBinding *theBinding = GetBinding(theSelectedInstance);
- return theBinding;
- }
- return nullptr;
-}
-
-//==============================================================================
-/**
- * Triggered from individual binding classes, to clear all keyframe selection
- */
-void CTimelineTranslationManager::ClearKeyframeSelection()
-{
- m_KeyframesManager->DeselectAllKeyframes();
-}
-
-//==============================================================================
-/**
- * Set up callbacks for animation changes
- */
-void CTimelineTranslationManager::OnNewPresentation()
-{
- m_Connections.clear();
- m_InstanceHandleExpandedMap.clear();
-
- IStudioFullSystemSignalProvider *theSignalProvider =
- g_StudioApp.GetCore()->GetDoc()->GetStudioSystem()->GetFullSystemSignalProvider();
- m_Connections.push_back(theSignalProvider->ConnectAnimationCreated(
- std::bind(&CTimelineTranslationManager::OnAnimationCreated, this,
- std::placeholders::_2, std::placeholders::_3)));
- m_Connections.push_back(theSignalProvider->ConnectAnimationDeleted(
- std::bind(&CTimelineTranslationManager::OnAnimationDeleted, this,
- std::placeholders::_2, std::placeholders::_3)));
- m_Connections.push_back(theSignalProvider->ConnectPropertyLinked(
- std::bind(&CTimelineTranslationManager::OnPropertyLinked, this,
- std::placeholders::_2, std::placeholders::_3)));
- m_Connections.push_back(theSignalProvider->ConnectPropertyUnlinked(
- std::bind(&CTimelineTranslationManager::OnPropertyUnlinked, this,
- std::placeholders::_2, std::placeholders::_3)));
- m_Connections.push_back(theSignalProvider->ConnectKeyframeInserted(
- std::bind(&CTimelineTranslationManager::OnKeyframeInserted, this,
- std::placeholders::_1, std::placeholders::_2)));
- m_Connections.push_back(theSignalProvider->ConnectKeyframeErased(
- std::bind(&CTimelineTranslationManager::OnKeyframeDeleted, this,
- std::placeholders::_1, std::placeholders::_2)));
- m_Connections.push_back(theSignalProvider->ConnectKeyframeUpdated(
- std::bind(&CTimelineTranslationManager::OnKeyframeUpdated, this, std::placeholders::_1)));
- m_Connections.push_back(theSignalProvider->ConnectInstancePropertyValue(
- std::bind(&CTimelineTranslationManager::OnPropertyChanged, this,
- std::placeholders::_1, std::placeholders::_2)));
- m_Connections.push_back(theSignalProvider->ConnectFirstKeyframeDynamicSet(
- std::bind(&CTimelineTranslationManager::OnDynamicKeyframeChanged, this,
- std::placeholders::_1, std::placeholders::_2)));
-
- m_Connections.push_back(theSignalProvider->ConnectInstanceCreated(
- std::bind(&CTimelineTranslationManager::OnAssetCreated, this, std::placeholders::_1)));
- m_Connections.push_back(theSignalProvider->ConnectInstanceDeleted(
- std::bind(&CTimelineTranslationManager::OnAssetDeleted, this, std::placeholders::_1)));
-
- m_Connections.push_back(theSignalProvider->ConnectActionCreated(
- std::bind(&CTimelineTranslationManager::OnActionEvent, this,
- std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)));
- m_Connections.push_back(theSignalProvider->ConnectActionDeleted(
- std::bind(&CTimelineTranslationManager::OnActionEvent, this,
- std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)));
-
- Q3DStudio::CGraph &theGraph(*g_StudioApp.GetCore()->GetDoc()->GetAssetGraph());
- m_Connections.push_back(theGraph.ConnectChildAdded(
- std::bind(&CTimelineTranslationManager::OnChildAdded, this,
- std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)));
- m_Connections.push_back(theGraph.ConnectChildRemoved(
- std::bind(&CTimelineTranslationManager::OnChildRemoved, this,
- std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)));
- m_Connections.push_back(theGraph.ConnectChildMoved(
- std::bind(&CTimelineTranslationManager::OnChildMoved, this, std::placeholders::_1,
- std::placeholders::_2, std::placeholders::_3, std::placeholders::_4)));
-}
-
-//==============================================================================
-
CDoc *CTimelineTranslationManager::GetDoc() const
{
return dynamic_cast<CDoc *>(g_StudioApp.GetCore()->GetDoc());
@@ -329,233 +149,3 @@ CStudioSystem *CTimelineTranslationManager::GetStudioSystem() const
return g_StudioApp.GetCore()->GetDoc()->GetStudioSystem();
}
-void CTimelineTranslationManager::OnAnimationCreated(Qt3DSDMInstanceHandle inInstance,
- Qt3DSDMPropertyHandle inProperty)
-{
- Qt3DSDMTimelineItemBinding *theTimelineBinding =
- dynamic_cast<Qt3DSDMTimelineItemBinding *>(GetBinding(inInstance));
- if (theTimelineBinding)
- theTimelineBinding->AddPropertyRow(inProperty);
-}
-
-void CTimelineTranslationManager::OnAnimationDeleted(Qt3DSDMInstanceHandle inInstance,
- Qt3DSDMPropertyHandle inProperty)
-{
- Qt3DSDMTimelineItemBinding *theTimelineBinding =
- dynamic_cast<Qt3DSDMTimelineItemBinding *>(GetBinding(inInstance));
- if (theTimelineBinding)
- theTimelineBinding->RemovePropertyRow(inProperty);
-}
-
-void CTimelineTranslationManager::OnPropertyLinked(Qt3DSDMInstanceHandle inInstance,
- Qt3DSDMPropertyHandle inProperty)
-{
- Qt3DSDMTimelineItemBinding *theTimelineBinding =
- dynamic_cast<Qt3DSDMTimelineItemBinding *>(GetBinding(inInstance));
- if (theTimelineBinding)
- theTimelineBinding->OnPropertyLinked(inProperty);
-}
-
-void CTimelineTranslationManager::OnPropertyUnlinked(Qt3DSDMInstanceHandle inInstance,
- Qt3DSDMPropertyHandle inProperty)
-{
- OnPropertyLinked(inInstance, inProperty);
-}
-
-void CTimelineTranslationManager::RefreshKeyframe(Qt3DSDMAnimationHandle inAnimation,
- Qt3DSDMKeyframeHandle inKeyframe,
- ETimelineKeyframeTransaction inTransaction)
-{
- Qt3DSDMTimelineItemBinding *theTimelineBinding = nullptr;
- if (GetStudioSystem()->GetAnimationCore()->AnimationValid(inAnimation)) {
- SAnimationInfo theAnimationInfo =
- GetStudioSystem()->GetAnimationCore()->GetAnimationInfo(inAnimation);
- theTimelineBinding =
- dynamic_cast<Qt3DSDMTimelineItemBinding *>(GetBinding(theAnimationInfo.m_Instance));
-
- if (theTimelineBinding)
- theTimelineBinding->RefreshPropertyKeyframe(theAnimationInfo.m_Property, inKeyframe,
- inTransaction);
- }
- // else, animation has been nuked, ignore this event, we'll get a AnimationDelete
-}
-
-void CTimelineTranslationManager::OnKeyframeInserted(Qt3DSDMAnimationHandle inAnimation,
- Qt3DSDMKeyframeHandle inKeyframe)
-{
- RefreshKeyframe(inAnimation, inKeyframe, ETimelineKeyframeTransaction_Add);
-}
-
-void CTimelineTranslationManager::OnKeyframeDeleted(Qt3DSDMAnimationHandle inAnimation,
- Qt3DSDMKeyframeHandle inKeyframe)
-{
- RefreshKeyframe(inAnimation, inKeyframe, ETimelineKeyframeTransaction_Delete);
-}
-
-void CTimelineTranslationManager::OnKeyframeUpdated(Qt3DSDMKeyframeHandle inKeyframe)
-{
- IAnimationCore *theAnimationCore = GetStudioSystem()->GetAnimationCore();
- if (theAnimationCore->KeyframeValid(inKeyframe)) {
- Qt3DSDMAnimationHandle theAnimationHandle =
- theAnimationCore->GetAnimationForKeyframe(inKeyframe);
- RefreshKeyframe(theAnimationHandle, inKeyframe, ETimelineKeyframeTransaction_Update);
- }
- // else, keyframe has been nuked, ignore this event, we'll get a KeyframeDeleted
-}
-
-void CTimelineTranslationManager::OnPropertyChanged(qt3dsdm::Qt3DSDMInstanceHandle inInstance,
- qt3dsdm::Qt3DSDMPropertyHandle inProperty)
-{
- Qt3DSDMTimelineItemBinding *theTimelineBinding =
- dynamic_cast<Qt3DSDMTimelineItemBinding *>(GetBinding(inInstance));
- if (theTimelineBinding)
- theTimelineBinding->OnPropertyChanged(inProperty);
-}
-
-void CTimelineTranslationManager::OnDynamicKeyframeChanged(qt3dsdm::Qt3DSDMAnimationHandle inAnimation,
- bool inDynamic)
-{
- Q_UNUSED(inDynamic);
-
- Qt3DSDMTimelineItemBinding *theTimelineBinding = nullptr;
- if (GetStudioSystem()->GetAnimationCore()->AnimationValid(inAnimation)) {
- SAnimationInfo theAnimationInfo =
- GetStudioSystem()->GetAnimationCore()->GetAnimationInfo(inAnimation);
- theTimelineBinding =
- dynamic_cast<Qt3DSDMTimelineItemBinding *>(GetBinding(theAnimationInfo.m_Instance));
- if (theTimelineBinding)
- theTimelineBinding->RefreshPropertyKeyframe(
- theAnimationInfo.m_Property, 0, ETimelineKeyframeTransaction_DynamicChanged);
- }
-}
-
-void CTimelineTranslationManager::OnAssetCreated(qt3dsdm::Qt3DSDMInstanceHandle inInstance)
-{
- CClientDataModelBridge *theDataModelBridge = GetStudioSystem()->GetClientDataModelBridge();
-
- if (theDataModelBridge->IsSceneGraphInstance(inInstance))
- EnsureLoaded(inInstance);
-}
-
-void CTimelineTranslationManager::OnAssetDeleted(qt3dsdm::Qt3DSDMInstanceHandle inInstance)
-{
- // You can't assume the instance is valid. Someone may have deleted a large number of items
- // from the model and then decided to send notifications after the fact.
- // if the created asset is library asset, do nothing
- // start to add the scene asset to the timeline
- Qt3DSDMTimelineItemBinding *theItemBinding =
- dynamic_cast<Qt3DSDMTimelineItemBinding *>(GetBinding(inInstance));
- if (theItemBinding) {
- Qt3DSDMTimelineItemBinding *theParentBinding =
- dynamic_cast<Qt3DSDMTimelineItemBinding *>(theItemBinding->GetParent());
- if (theParentBinding)
- theParentBinding->OnDeleteChild(inInstance);
- }
-}
-
-void CTimelineTranslationManager::OnChildAdded(int /*inParent*/, int inChild, long /*inIndex*/)
-{
- OnAssetCreated(inChild);
-}
-void CTimelineTranslationManager::OnChildRemoved(int /*inParent*/, int inChild, long /*inIndex*/)
-{
- OnAssetDeleted(inChild);
-}
-void CTimelineTranslationManager::OnChildMoved(int /*inParent*/, int inChild, long /*inOldIndex*/,
- long /*inNewIndex*/)
-{
- OnAssetDeleted(inChild);
- OnAssetCreated(inChild);
-}
-
-//==============================================================================
-/**
- * Callback method whenever an action is either created or removed.
- * Basically, it tells the owner of the action to update its timeline control to
- * update the icon that shows action association status
- */
-void CTimelineTranslationManager::OnActionEvent(qt3dsdm::Qt3DSDMActionHandle inAction,
- qt3dsdm::Qt3DSDMSlideHandle inSlide,
- qt3dsdm::Qt3DSDMInstanceHandle inOwner)
-{
- Q_UNUSED(inAction);
-
- // the slide that action is added to is the current slide or
- // is added to the master slide of the current slide
- Qt3DSDMTimelineItemBinding *theTimelineBinding =
- dynamic_cast<Qt3DSDMTimelineItemBinding *>(GetBinding(inOwner));
- if (theTimelineBinding)
- theTimelineBinding->UpdateActionStatus();
-}
-
-//==============================================================================
-/**
- * Helper functions to go through ALL binding and clear any keyframes selection.
- */
-void CTimelineTranslationManager::ClearBindingsKeyframeSelection()
-{
- // DataModel bindings handle their own selections
- TInstanceHandleBindingMap::const_iterator theIter = m_InstanceHandleBindingMap.begin();
- for (; theIter != m_InstanceHandleBindingMap.end(); ++theIter)
- theIter->second->DoSelectKeyframes(false, -1, true);
-}
-
-//==============================================================================
-
-ITimelineItemBinding *CTimelineTranslationManager::EnsureLoaded(Qt3DSDMInstanceHandle inHandle)
-{
- ITimelineItemBinding *theBinding = GetBinding(inHandle);
- bool rowLoaded = theBinding != nullptr && theBinding->GetRow() != nullptr;
- if (rowLoaded == false) {
- // tell my parent to load me
- CClientDataModelBridge *theDataModelBridge = GetStudioSystem()->GetClientDataModelBridge();
- Qt3DSDMInstanceHandle theParent = theDataModelBridge->GetParentInstance(inHandle);
- if (theParent.Valid()) {
- ITimelineItemBinding *theParentBinding = EnsureLoaded(theParent);
- if (theParentBinding)
- theParentBinding->GetRow()->LoadChildren();
-
- // The LoadChildren has an optimzation such that if it's already loaded, it won't
- // recreate again
- // So, if we still can't get the binding after LoadChildren, it very likely means that
- // this is newly added
- // so call OnAddChild to let it just add this.
- theBinding = GetBinding(inHandle);
- bool rowLoaded = theBinding != nullptr && theBinding->GetRow() != nullptr;
- if (theParentBinding && rowLoaded == false) {
- // start to add the scene asset to the timeline
- Qt3DSDMTimelineItemBinding *theDMBinding =
- dynamic_cast<Qt3DSDMTimelineItemBinding *>(theParentBinding);
- theDMBinding->OnAddChild(inHandle);
- theBinding = GetBinding(inHandle);
- }
- }
- }
- return theBinding;
-}
-
-//==============================================================================
-/**
- * remember the expanded state for the current presentation
- */
-bool CTimelineTranslationManager::IsExpanded(Qt3DSDMInstanceHandle inInstance) const
-{
- TInstanceHandleExpandedMap::const_iterator theIter =
- m_InstanceHandleExpandedMap.find(inInstance);
- if (theIter != m_InstanceHandleExpandedMap.end()) {
- return theIter->second;
- }
- return false;
-}
-
-//==============================================================================
-/**
- * remember the expanded state for the current presentation
- */
-void CTimelineTranslationManager::SetExpanded(Qt3DSDMInstanceHandle inInstance, bool inExpanded)
-{
- TInstanceHandleExpandedMap::iterator theIter = m_InstanceHandleExpandedMap.find(inInstance);
- if (theIter != m_InstanceHandleExpandedMap.end()) {
- theIter->second = inExpanded;
- }
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/TimelineTranslationManager.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/TimelineTranslationManager.h
index 83443c2c..18851b20 100644
--- a/src/Authoring/Studio/Palettes/Timeline/Bindings/TimelineTranslationManager.h
+++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/TimelineTranslationManager.h
@@ -26,9 +26,6 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-//==============================================================================
-// Prefix
-//==============================================================================
#ifndef INCLUDED_TIMELINE_TRANSLATIONMANAGER_H
#define INCLUDED_TIMELINE_TRANSLATIONMANAGER_H 1
@@ -39,31 +36,16 @@
#include "Doc.h"
-//==============================================================================
-// Classes
-//==============================================================================
class ITimelineItemBinding;
-class ITimelineItemProperty;
class Qt3DSDMTimelineItemBinding;
-class CBaseStateRow;
-class CPropertyRow;
-class CKeyframesManager;
-class IBreadCrumbProvider;
-
-// Link to data model
-class CAsset;
-class IUICDMSelectable;
-class CClientDataModelBridge;
// DataModel
namespace qt3dsdm {
class CStudioSystem;
-class ISignalConnection;
}
class CDoc;
-//=============================================================================
/**
* There is a TranslationManager per presentation (project)
*/
@@ -81,79 +63,19 @@ protected: // Properties
// DataModel support
TInstanceHandleBindingMap m_InstanceHandleBindingMap;
- CKeyframesManager *m_KeyframesManager;
- IBreadCrumbProvider *m_BreadCrumbProvider;
- std::vector<std::shared_ptr<qt3dsdm::ISignalConnection>>
- m_Connections; /// connections to the DataModel
-
- TInstanceHandleExpandedMap m_InstanceHandleExpandedMap;
-
public:
CTimelineTranslationManager();
~CTimelineTranslationManager();
public:
ITimelineItemBinding *GetOrCreate(qt3dsdm::Qt3DSDMInstanceHandle inInstance);
- CPropertyRow *CreateNewPropertyRow(ITimelineItemProperty *inTimelineItemPropertyBinding,
- CBaseStateRow *inParentRow, CPropertyRow *inNextRow);
- void RemovePropertyRow(ITimelineItemProperty *inTimelineItemPropertyBinding);
-
void Clear();
- void Unregister(ITimelineItemBinding *inTimelineItem);
- CKeyframesManager *GetKeyframesManager() const;
- IBreadCrumbProvider *GetBreadCrumbProvider() const;
- CBaseStateRow *GetSelectedRow() const;
- long GetCurrentViewTime() const;
Qt3DSDMTimelineItemBinding *GetBinding(qt3dsdm::Qt3DSDMInstanceHandle inHandle) const;
- Qt3DSDMTimelineItemBinding *GetSelectedBinding() const;
-
- void ClearKeyframeSelection();
- void OnNewPresentation();
qt3dsdm::CStudioSystem *GetStudioSystem() const;
- // DataModel callback
- void OnAnimationCreated(qt3dsdm::Qt3DSDMInstanceHandle inInstance,
- qt3dsdm::Qt3DSDMPropertyHandle inProperty);
- void OnAnimationDeleted(qt3dsdm::Qt3DSDMInstanceHandle inInstance,
- qt3dsdm::Qt3DSDMPropertyHandle inProperty);
- void OnPropertyLinked(qt3dsdm::Qt3DSDMInstanceHandle inInstance,
- qt3dsdm::Qt3DSDMPropertyHandle inProperty);
- void OnPropertyUnlinked(qt3dsdm::Qt3DSDMInstanceHandle inInstance,
- qt3dsdm::Qt3DSDMPropertyHandle inProperty);
- void RefreshKeyframe(qt3dsdm::Qt3DSDMAnimationHandle inAnimation,
- qt3dsdm::Qt3DSDMKeyframeHandle inKeyframe,
- ETimelineKeyframeTransaction inTransaction);
- void OnKeyframeInserted(qt3dsdm::Qt3DSDMAnimationHandle inAnimation,
- qt3dsdm::Qt3DSDMKeyframeHandle inKeyframe);
- void OnKeyframeDeleted(qt3dsdm::Qt3DSDMAnimationHandle inAnimation,
- qt3dsdm::Qt3DSDMKeyframeHandle inKeyframe);
- void OnKeyframeUpdated(qt3dsdm::Qt3DSDMKeyframeHandle inKeyframe);
- void OnPropertyChanged(qt3dsdm::Qt3DSDMInstanceHandle inInstance,
- qt3dsdm::Qt3DSDMPropertyHandle inProperty);
- void OnDynamicKeyframeChanged(qt3dsdm::Qt3DSDMAnimationHandle inAnimation, bool inDynamic);
-
- void OnAssetCreated(qt3dsdm::Qt3DSDMInstanceHandle inInstance);
- void OnAssetDeleted(qt3dsdm::Qt3DSDMInstanceHandle inInstance);
- void OnChildAdded(int inParent, int inChild, long inIndex);
- void OnChildRemoved(int inParent, int inChild, long inIndex);
- void OnChildMoved(int inParent, int inChild, long inOldIndex, long inNewIndex);
-
- void OnActionEvent(qt3dsdm::Qt3DSDMActionHandle inAction, qt3dsdm::Qt3DSDMSlideHandle inSlide,
- qt3dsdm::Qt3DSDMInstanceHandle inOwner);
-
- // Helper function to iterate over all bindings
- void ClearBindingsKeyframeSelection();
CDoc *GetDoc() const;
-
- // Store expanded state
- bool IsExpanded(qt3dsdm::Qt3DSDMInstanceHandle inInstance) const;
- void SetExpanded(qt3dsdm::Qt3DSDMInstanceHandle inInstance, bool inExpanded);
-
-protected:
- void SetSelected(Q3DStudio::SSelectedValue inSelectable, bool inSelected);
- ITimelineItemBinding *EnsureLoaded(qt3dsdm::Qt3DSDMInstanceHandle inHandle);
};
#endif // INCLUDED_TIMELINE_TRANSLATIONMANAGER_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/ColorBlankControl.cpp b/src/Authoring/Studio/Palettes/Timeline/ColorBlankControl.cpp
deleted file mode 100644
index 2564d087..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/ColorBlankControl.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//==============================================================================
-// Prefix
-//==============================================================================
-#include "stdafx.h"
-
-//==============================================================================
-// Includes
-//==============================================================================
-#include "ColorBlankControl.h"
-#include "Renderer.h"
-#include "StudioPreferences.h"
-
-//=============================================================================
-/**
- * Constructor
- */
-CColorBlankControl::CColorBlankControl(CColor inColor)
- : CBlankControl(inColor)
-{
-}
-
-//=============================================================================
-/**
- * Destructor
- */
-CColorBlankControl::~CColorBlankControl()
-{
-}
-
-//=============================================================================
-/**
- * Handles custom drawing of the blank control underneath the tree control
- * on the timeline palette.
- */
-void CColorBlankControl::Draw(CRenderer *inRenderer)
-{
- CBlankControl::Draw(inRenderer);
-
- // Draw the line on the right side of this control
- CPt theSize = GetSize();
- inRenderer->PushPen(CStudioPreferences::GetPropertyFloorColor());
- inRenderer->MoveTo(theSize.x - 1, 0);
- inRenderer->LineTo(theSize.x - 1, theSize.y - 1);
- inRenderer->PopPen();
-
- // Draw the line on the left side of this control
- inRenderer->PushPen(CStudioPreferences::GetRowTopColor());
- inRenderer->MoveTo(0, 0);
- inRenderer->LineTo(0, theSize.y - 1);
- inRenderer->PopPen();
-
- // Draw the highlight on the left side of this control
- inRenderer->PushPen(CStudioPreferences::GetButtonHighlightColor());
- inRenderer->MoveTo(CPt(1, 0));
- inRenderer->LineTo(CPt(1, theSize.y - 1));
- inRenderer->PopPen();
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/ColorBlankControl.h b/src/Authoring/Studio/Palettes/Timeline/ColorBlankControl.h
deleted file mode 100644
index bb85b2aa..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/ColorBlankControl.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_COLOR_BLANK_CONTROL_H
-#define INCLUDED_COLOR_BLANK_CONTROL_H 1
-
-#pragma once
-
-//==============================================================================
-// Includes
-//==============================================================================
-#include "BlankControl.h"
-
-//==============================================================================
-// Forwards
-//==============================================================================
-class CRenderer;
-
-//=============================================================================
-/**
- * Extends the blank control to draw items specific to the tree view side of the
- * timeline palette.
- */
-class CColorBlankControl : public CBlankControl
-{
-public:
- CColorBlankControl(CColor inColor = CStudioPreferences::GetBaseColor());
- virtual ~CColorBlankControl();
- void Draw(CRenderer *inRenderer) override;
-
-protected:
-};
-
-#endif // INCLUDED_COLOR_BLANK_CONTROL_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/ColorControl.cpp b/src/Authoring/Studio/Palettes/Timeline/ColorControl.cpp
deleted file mode 100644
index 71d1c392..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/ColorControl.cpp
+++ /dev/null
@@ -1,307 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "stdafx.h"
-
-#include "CColor.h"
-#include "ColorControl.h"
-#include "CoreUtils.h"
-#include "BaseStateRow.h"
-#include "Renderer.h"
-#include "StudioPreferences.h"
-#include "HotKeys.h"
-#include "Dispatch.h"
-#include "ResourceCache.h"
-#include "Bindings/ITimelineItem.h"
-
-//==============================================================================
-/**
- * The control (of each row) to the left of the tree view, where it indicates if there are
- *actions associated with this row.
- */
-CColorControl::CColorControl(CBaseStateRow *inRow)
- : m_Shaded(true)
- , m_Selected(false)
- , m_HasAction(false)
- , m_HasMasterAction(false)
- , m_ChildHasAction(false)
- , m_ChildHasMasterAction(false)
- , m_ComponentHasAction(false)
- , m_ComponentHasMasterAction(false)
-{
- m_ParentRow = inRow;
- m_BackgroundColor = m_ParentRow->GetTimebarBackgroundColor(m_ParentRow->GetObjectType());
-
- UpdateIconStatus();
-}
-
-CColorControl::~CColorControl()
-{
-}
-
-void CColorControl::SetShaded(bool inIsShaded)
-{
- m_Shaded = inIsShaded;
-}
-
-//==============================================================================
-/**
- * Draw
- *
- * draws this object
- *
- * @param inRenderer a renderer object
- */
-void CColorControl::Draw(CRenderer *inRenderer)
-{
- CRct theRect(GetSize());
-
- inRenderer->FillSolidRect(theRect, m_BackgroundColor);
- //
- inRenderer->PushPen(CStudioPreferences::GetPropertyFloorColor());
- // bottom
- inRenderer->MoveTo(CPt(1, theRect.size.y - 1));
- inRenderer->LineTo(CPt(theRect.size.x - 1, theRect.size.y - 1));
- // left
- inRenderer->MoveTo(CPt(0, 1));
- inRenderer->LineTo(CPt(0, theRect.size.y - 1));
- // right
- inRenderer->MoveTo(CPt(theRect.size.x - 1, 1));
- inRenderer->LineTo(CPt(theRect.size.x - 1, theRect.size.y - 1));
- //
- inRenderer->PopPen();
-
- CPt thePos(0, 0);
- if (m_HasMasterAction) {
- if (m_ActionImages[IMAGETYPE_MASTERACTION].isNull())
- m_ActionImages[IMAGETYPE_MASTERACTION] =
- CResourceCache::GetInstance()->GetBitmap("Action-MasterAction.png");
-
- inRenderer->DrawBitmap(thePos, m_ActionImages[IMAGETYPE_MASTERACTION]);
- } else if (m_HasAction) {
- if (m_ActionImages[IMAGETYPE_ACTION].isNull())
- m_ActionImages[IMAGETYPE_ACTION] =
- CResourceCache::GetInstance()->GetBitmap("Action-Action.png");
-
- inRenderer->DrawBitmap(thePos, m_ActionImages[IMAGETYPE_ACTION]);
- }
- if (m_ChildHasMasterAction) {
- if (m_ActionImages[IMAGETYPE_CHILDMASTERACTION].isNull())
- m_ActionImages[IMAGETYPE_CHILDMASTERACTION] =
- CResourceCache::GetInstance()->GetBitmap("Action-ChildMasterAction.png");
-
- inRenderer->DrawBitmap(thePos, m_ActionImages[IMAGETYPE_CHILDMASTERACTION]);
- } else if (m_ChildHasAction) {
- if (m_ActionImages[IMAGETYPE_CHILDACTION].isNull())
- m_ActionImages[IMAGETYPE_CHILDACTION] =
- CResourceCache::GetInstance()->GetBitmap("Action-ChildAction.png");
-
- inRenderer->DrawBitmap(thePos, m_ActionImages[IMAGETYPE_CHILDACTION]);
- }
- if (m_ComponentHasMasterAction) {
- if (m_ActionImages[IMAGETYPE_COMPONENTMASTERACTION].isNull())
- m_ActionImages[IMAGETYPE_COMPONENTMASTERACTION] =
- CResourceCache::GetInstance()->GetBitmap("Action-ComponentMasterAction.png");
-
- inRenderer->DrawBitmap(thePos, m_ActionImages[IMAGETYPE_COMPONENTMASTERACTION]);
- } else if (m_ComponentHasAction) {
- if (m_ActionImages[IMAGETYPE_COMPONENTACTION].isNull())
- m_ActionImages[IMAGETYPE_COMPONENTACTION] =
- CResourceCache::GetInstance()->GetBitmap("Action-ComponentAction.png");
-
- inRenderer->DrawBitmap(thePos, m_ActionImages[IMAGETYPE_COMPONENTACTION]);
- }
-
- // the old code with selection
-
- // inRenderer->DrawGradientBitmap( theRect, m_ParentRow->GetAsset( )->GetTimebarColor( ), false
- // );
- // if ( m_Selected )
- //{
- // long theXSize = theRect.size.x / 2;
- // long theYSize = theRect.size.y / 2;
- // inRenderer->FillSolidRect( CRct( CPt( theXSize / 2, theYSize / 2 ), CPt( theXSize, theYSize)
- //), CalculateSelectedColor( m_ParentRow->GetAsset( )->GetTimebarColor( ) ) );
- //}
-
- // if this is selected then do something special
- // if ( m_Shaded )
- //{
- // // This is used for the left line of the color control
- // CColor theNonGradiantHighlight = m_ParentRow->GetAsset( )->GetTimebarColor( );
- // float theLuminance = theNonGradiantHighlight.GetLuminance( );
- // theLuminance = theLuminance * (float)1.15;
- // if ( theLuminance > 1.0 )
- // {
- // theLuminance = (float)1.0;
- // }
- //
- // // Highlight on left edge
- // theNonGradiantHighlight.SetLuminance( theLuminance );
- // inRenderer->PushPen( theNonGradiantHighlight );
- // inRenderer->MoveTo( CPt( 1, 0 ) );
- // inRenderer->LineTo( CPt( 1, theRect.size.y - 1 ) );
- // inRenderer->PopPen( );
-
- // // Dark line on far left edge
- // inRenderer->PushPen( CStudioPreferences::GetRowTopColor( ) );
- // inRenderer->MoveTo( CPt( 0, 0 ) );
- // inRenderer->LineTo( CPt( 0, theRect.size.y - 1 ) );
- // inRenderer->PopPen( );
- //
- // inRenderer->PushPen( CStudioPreferences::GetRowTopColor( ) );
- // inRenderer->MoveTo( CPt( 0,theRect.size.y - 1 ) );
- // inRenderer->LineTo( CPt( theRect.size.x, theRect.size.y - 1 ) );
- // inRenderer->MoveTo( CPt( theRect.size.x - 1, 0 ) );
- // inRenderer->LineTo( CPt( theRect.size.x - 1, theRect.size.y - 1 ) );
- // inRenderer->PopPen( );
- //}
-
- // inRenderer->Draw3dRect( CRct( theRect.position, CPt( theRect.size.x, theRect.size.y + 1 ) ),
- // CColor( 0, 255, 0 ), CColor( 0, 255, 0 ) );
-}
-
-//==============================================================================
-/**
- * CalculateNonGradiantHighlight
- *
- * calculates the highlight for this color
- *
- * @param inColor color to multiply
- */
-CColor CColorControl::CalculateNonGradiantHighlight(CColor inColor)
-{
- double theNonGradiantHighlightR = inColor.GetRed() * 1.15;
- double theNonGradiantHighlightG = inColor.GetGreen() * 1.15;
- double theNonGradiantHighlightB = inColor.GetBlue() * 1.15;
- if (theNonGradiantHighlightR > 255) {
- theNonGradiantHighlightR = 255;
- }
- if (theNonGradiantHighlightG > 255) {
- theNonGradiantHighlightG = 255;
- }
- if (theNonGradiantHighlightB > 255) {
- theNonGradiantHighlightB = 255;
- }
- return CColor(::dtol(theNonGradiantHighlightR), ::dtol(theNonGradiantHighlightG),
- ::dtol(theNonGradiantHighlightB));
-}
-
-//==============================================================================
-/**
- * CalculateNonGradiantHighlight
- *
- * calculates the highlight for this color
- *
- * @param inColor color to multiply
- */
-CColor CColorControl::CalculateSelectedColor(CColor inColor)
-{
- double theNonGradiantHighlightR = inColor.GetRed() * 0.65;
- double theNonGradiantHighlightG = inColor.GetGreen() * 0.65;
- double theNonGradiantHighlightB = inColor.GetBlue() * 0.65;
- if (theNonGradiantHighlightR > 255) {
- theNonGradiantHighlightR = 255;
- }
- if (theNonGradiantHighlightG > 255) {
- theNonGradiantHighlightG = 255;
- }
- if (theNonGradiantHighlightB > 255) {
- theNonGradiantHighlightB = 255;
- }
- return CColor(::dtol(theNonGradiantHighlightR), ::dtol(theNonGradiantHighlightG),
- ::dtol(theNonGradiantHighlightB));
-}
-
-//==============================================================================
-/**
- * Handles the OnMouseDownEvent
- */
-bool CColorControl::OnMouseDown(CPt inPoint, Qt::KeyboardModifiers inFlags)
-{
- Q_UNUSED(inPoint);
- Q_UNUSED(inFlags);
- return true;
-}
-
-//==============================================================================
-/**
- * Called when this row becomes selected
- */
-void CColorControl::OnSelect()
-{
- m_Selected = true;
- this->Invalidate();
-}
-
-//==============================================================================
-/**
- * Called when this row becomes deselected
- */
-void CColorControl::OnDeselect()
-{
- m_Selected = false;
- this->Invalidate();
-}
-
-//==============================================================================
-/**
- * Updates the icon used for display based on the following logic:
- * 1. Self has actions
- * 2. Descendents have actions
- * Results in 4 states.
- */
-void CColorControl::UpdateIconStatus()
-{
- ITimelineItem *theTimelineItem = m_ParentRow->GetTimelineItem();
-
- if (!theTimelineItem)
- return;
-
- // Master 'supersede' non-master
- m_HasMasterAction = theTimelineItem->HasAction(true);
- if (!m_HasMasterAction)
- m_HasAction = theTimelineItem->HasAction(false);
-
- // no descendent info if current row is expanded
- if (!m_ParentRow->IsExpanded()) {
- m_ChildHasMasterAction = theTimelineItem->ChildrenHasAction(true);
- if (!m_ChildHasMasterAction)
- m_ChildHasAction = theTimelineItem->ChildrenHasAction(false);
- } else {
- m_ChildHasMasterAction = false;
- m_ChildHasAction = false;
- }
-
- m_ComponentHasMasterAction = theTimelineItem->ComponentHasAction(true);
- if (!m_ComponentHasMasterAction)
- m_ComponentHasAction = theTimelineItem->ComponentHasAction(false);
-
- this->Invalidate();
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/ColorControl.h b/src/Authoring/Studio/Palettes/Timeline/ColorControl.h
deleted file mode 100644
index ec5b156d..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/ColorControl.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_COLOR_CONTROL_H
-#define INCLUDED_COLOR_CONTROL_H 1
-
-#pragma once
-
-#include "Control.h"
-#include "CColor.h"
-#include "CmdStack.h"
-
-#include <QPixmap>
-
-class CBaseStateRow;
-
-//==============================================================================
-/**
- * The control at the left side of the TimeContextRow.
- * It is currently being used to indicate if the Asset or its descendents have any Action.
- */
-class CColorControl : public CControl
-{
-protected:
- enum EImageType {
- IMAGETYPE_ACTION = 0, ///< Types of action image
- IMAGETYPE_MASTERACTION,
- IMAGETYPE_CHILDACTION,
- IMAGETYPE_CHILDMASTERACTION,
- IMAGETYPE_COMPONENTACTION,
- IMAGETYPE_COMPONENTMASTERACTION,
- IMAGETYPE_MAXCOUNT
- };
-
-public:
- CColorControl(CBaseStateRow *inRow);
- virtual ~CColorControl();
-
- void SetColor(::CColor inColor);
-
- void SetShaded(bool inIsShaded);
- bool OnMouseDown(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
-
- void Draw(CRenderer *inRenderer) override;
- ::CColor CalculateNonGradiantHighlight(::CColor inColor);
-
- void OnSelect();
- void OnDeselect();
-
- static ::CColor CalculateSelectedColor(::CColor inCOLOR);
-
- void UpdateIconStatus();
-
-protected:
- ::CColor m_BackgroundColor;
- bool m_Shaded;
- bool m_Selected;
- CBaseStateRow *m_ParentRow;
-
- ///////////////////////////////////////////////////
- // Action icons
- // Action status
- bool m_HasAction;
- bool m_HasMasterAction;
- bool m_ChildHasAction;
- bool m_ChildHasMasterAction;
- bool m_ComponentHasAction;
- bool m_ComponentHasMasterAction;
- // Action images
- QPixmap m_ActionImages[IMAGETYPE_MAXCOUNT];
-};
-#endif // INCLUDED_COLOR_CONTROL_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/CommentEdit.cpp b/src/Authoring/Studio/Palettes/Timeline/CommentEdit.cpp
deleted file mode 100644
index d0d5325f..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/CommentEdit.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//==============================================================================
-// Prefix
-//==============================================================================
-#include "stdafx.h"
-
-//==============================================================================
-// Includes
-//==============================================================================
-#include "CommentEdit.h"
-#include "Renderer.h"
-#include "ColorControl.h"
-#include "Bindings/ITimelineTimebar.h"
-#include "CoreUtils.h"
-//=============================================================================
-/**
- * Constructor
- */
-CCommentEdit::CCommentEdit(ITimelineTimebar *inTimelineItemTimebar)
- : m_TimelineItemTimebar(inTimelineItemTimebar)
- , m_IsSelected(false)
-{
- AddCommitListener(this);
-}
-
-//=============================================================================
-/**
- * Destructor
- */
-CCommentEdit::~CCommentEdit()
-{
- RemoveCommitListener(this);
-}
-
-//=============================================================================
-/**
- * Called when a property changes.
- * @param inProperty the property that was changed
- * @param inIsVisibleChange true if this is a change that effects the property's visibility in the
- * Timeline
- */
-void CCommentEdit::OnSetData(CControl *inControl)
-{
- if (inControl == this && m_TimelineItemTimebar) {
- m_TimelineItemTimebar->SetTimebarComment(GetString());
- }
-}
-
-//=============================================================================
-/**
- * Called when this control receives a double click, edit the comment.
- *
- * @param inPoint the point where the double click occured
- * @param inFlags the flags at the time of the click
- */
-bool CCommentEdit::OnMouseDoubleClick(CPt inPoint, Qt::KeyboardModifiers inFlags)
-{
- Q_UNUSED(inPoint);
- Q_UNUSED(inFlags);
-
- if (GetDisplayString().Length() > 0) {
- DoChangeComment();
- return true;
- }
- return false;
-}
-
-//=============================================================================
-/**
- * Edit the Comment
- *
- */
-void CCommentEdit::DoChangeComment()
-{
- SetEditMode(true);
- SelectAllText();
-}
-
-//=============================================================================
-/**
- * Called when this control receives a mouse down, don't do anything unless we're in edit mode
- *
- * @param inPoint the point where the click occured
- * @param inFlags the flags at the time of the click
- */
-bool CCommentEdit::OnMouseDown(CPt inPoint, Qt::KeyboardModifiers inFlags)
-{
- bool theRetVal = false;
- if (GetEditMode()) {
- theRetVal = CTextEditInPlace::OnMouseDown(inPoint, inFlags);
- }
- return theRetVal;
-}
-
-//=============================================================================
-/**
- * Called when this control loses focus
- */
-void CCommentEdit::OnLoseFocus()
-{
- CStringEdit::OnLoseFocus();
- SetEditMode(false);
-}
-
-//=============================================================================
-/**
- * Called when this control gains focus, don't do anytihng
- */
-void CCommentEdit::OnGainFocus()
-{
-}
-
-//=============================================================================
-/**
- * Override for the draw, don't set the size of this control here since we are in
- * a comment and wouldn't want the size changing
- */
-void CCommentEdit::Draw(CRenderer *inRenderer)
-{
- CPt theRectPoint = CPt(::dtol(CalculateCharWidths(inRenderer) + GetRightBuffer()), GetSize().y);
- CPt theSize = GetSize();
- if (theSize.x < theRectPoint.x)
- theRectPoint.x = theSize.x;
- CRct theRect = CRct(theRectPoint);
- ::CColor theOutlineColor = ::CColor(0, 0, 0);
- bool theFillFlag = m_FillBackground;
-
- if (theFillFlag && !GetEditMode())
- SetFillBackground(false);
-
- if (GetEditMode())
- SetTextColor(::CColor(0, 0, 0));
-
- inRenderer->PushClippingRect(theRect);
- CStringEdit::Draw(inRenderer);
- inRenderer->PopClippingRect();
-
- if (!GetEditMode())
- SetFillBackground(theFillFlag);
-
- if (GetEditMode())
- inRenderer->DrawRectOutline(theRect, theOutlineColor, theOutlineColor, theOutlineColor,
- theOutlineColor);
-}
-
-//=============================================================================
-/**
- * Called when the timebar comment or the time bar color changes on an asset
- */
-void CCommentEdit::RefreshMetaData()
-{
- m_Color = ::CColor(m_TimelineItemTimebar->GetTimebarColor());
- CalculateTextColor();
- SetData(m_TimelineItemTimebar->GetTimebarComment());
-
- Invalidate();
-}
-
-//=============================================================================
-/**
- * Calculates the text color based on whether the object is selected or not
- */
-void CCommentEdit::CalculateTextColor()
-{
- ::CColor theColor = m_Color;
- float theLuminance = theColor.GetLuminance();
- if (m_IsSelected) {
- theLuminance = theLuminance * 0.8f;
- }
- // Duplicated Code to check luminance when the timebar changes color
-
- if (theLuminance < 0.5) {
- SetTextColor(::CColor(255, 255, 255));
- } else {
- SetTextColor(::CColor(0, 0, 0));
- }
-}
-
-//=============================================================================
-/**
- * Sets this object as selected
- * @param inPoint the point to check
- */
-void CCommentEdit::SetSelected(bool inState)
-{
- m_IsSelected = inState;
- CalculateTextColor();
-}
-
-//=============================================================================
-/**
- * Overrides the hit test for the case when the click occurs in the object, but outside the text
- * @param inPoint the point to check
- */
-bool CCommentEdit::HitTest(const CPt &inPoint) const
-{
- // rp this seems wrong but apparently it magically works
- bool theRetVal = false;
- if (inPoint.x
- < m_TotalCharWidth + GetRightBuffer() + 2 * CStudioPreferences::GetTimebarTipSize())
- theRetVal = CTextEditInPlace::HitTest(inPoint);
- return theRetVal;
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/CommentEdit.h b/src/Authoring/Studio/Palettes/Timeline/CommentEdit.h
deleted file mode 100644
index 8ae37ad9..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/CommentEdit.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_COMMENT_EDIT
-#define INCLUDED_COMMENT_EDIT 1
-
-#pragma once
-
-//==============================================================================
-// Includes
-//==============================================================================
-#include "TextEditInPlace.h"
-
-//==============================================================================
-// Forwards
-//==============================================================================
-class CRenderer;
-class ITimelineTimebar;
-
-//=============================================================================
-/**
- * @class CCommentEdit this class handles changing the comments for a timebar in
- * the timeline. This class seems necessary only to change the color of the text
- * depending on the timebar color
- */
-class CCommentEdit : public CTextEditInPlace, public CCommitDataListener
-{
-public:
- CCommentEdit(ITimelineTimebar *inTimelineItemTimebar);
- virtual ~CCommentEdit();
- void OnSetData(CControl *inControl) override;
- bool OnMouseDoubleClick(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
- bool OnMouseDown(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
- void Draw(CRenderer *inRenderer) override;
- void RefreshMetaData();
- void CalculateTextColor();
- bool HitTest(const CPt &inPoint) const override;
- void SetSelected(bool inState);
-
- void OnLoseFocus() override;
- void OnGainFocus() override;
-
- void DoChangeComment();
-
-protected:
- ITimelineTimebar *m_TimelineItemTimebar;
- ::CColor m_Color;
- bool m_IsSelected;
-};
-
-#endif // INCLUDED_COMMENT_EDIT
diff --git a/src/Authoring/Studio/Palettes/Timeline/ITimelineControl.h b/src/Authoring/Studio/Palettes/Timeline/ITimelineControl.h
deleted file mode 100644
index 05af776e..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/ITimelineControl.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2008 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//==============================================================================
-// Prefix
-//==============================================================================
-#ifndef INCLUDED_ITIMELINE_CONTROL_H
-#define INCLUDED_ITIMELINE_CONTROL_H 1
-
-#pragma once
-
-#include "Rct.h"
-
-class ISnappingListProvider;
-
-class ITimelineControl
-{
-public:
- virtual ~ITimelineControl() {}
-
- virtual void OnLayoutChanged() = 0;
- virtual CRct GetBounds() const = 0;
- virtual void HideTimelineMoveableTooltip() = 0;
- virtual ISnappingListProvider *GetSnappingListProvider() const = 0;
-};
-
-#endif // INCLUDED_TIMELINE_CONTROL_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/KeyframeContextMenu.cpp b/src/Authoring/Studio/Palettes/Timeline/KeyframeContextMenu.cpp
deleted file mode 100644
index c3d8bc4d..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/KeyframeContextMenu.cpp
+++ /dev/null
@@ -1,412 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "stdafx.h"
-
-//==============================================================================
-// Includes
-//==============================================================================
-#include "KeyframeContextMenu.h"
-#include "IDoc.h"
-#include "CColor.h"
-#include "Preferences.h"
-#include "Dialogs.h"
-#include "TimebarControl.h"
-#include "Bindings/ITimelineTimebar.h"
-#include "Bindings/ITimelineKeyframesManager.h"
-#include "Bindings/ITimelineItemBinding.h"
-#include "Bindings/ITimelineItemProperty.h"
-#include "IKeyframe.h"
-#include "MainFrm.h"
-#include "StudioApp.h"
-
-#include <QtWidgets/qcolordialog.h>
-
-#define IDC_KEYFRAME_COLOR_BOX 1002
-
-//=============================================================================
-/**
- * Constructor
- */
-CBaseKeyframeContextMenu::CBaseKeyframeContextMenu(QWidget *parent)
- : QMenu(parent)
- , m_HasDynamicSelectedKeyframes(false)
- , m_KeyframesManager(nullptr)
-{
-}
-
-//=============================================================================
-/**
- * Destructor
- */
-CBaseKeyframeContextMenu::~CBaseKeyframeContextMenu()
-{
-}
-
-void CBaseKeyframeContextMenu::Initialize(ITimelineKeyframesManager *inKeyframesManager)
-{
- m_KeyframesManager = inKeyframesManager;
- ASSERT(m_KeyframesManager);
-
- //"Insert Keyframe"
- ITimelineItemKeyframesHolder *theKeyframesHolder = GetKeyframesHolder();
- if (theKeyframesHolder) {
- m_insertAction = new QAction(tr("Insert Keyframe"));
- connect(m_insertAction, &QAction::triggered,
- this, &CBaseKeyframeContextMenu::InsertKeyframe);
- addAction(m_insertAction);
- }
-
- bool theHasKeysSelected = m_KeyframesManager->HasSelectedKeyframes();
- bool theCanCopyKeys = m_KeyframesManager->CanPerformKeyframeCopy();
- bool theCanPasteKeys = m_KeyframesManager->CanPerformKeyframePaste();
-
- m_cutAction = new QAction(tr("Cut Selected Keyframes"));
- connect(m_cutAction, &QAction::triggered, this, &CBaseKeyframeContextMenu::CutSelectedKeys);
- m_cutAction->setEnabled(theCanCopyKeys);
- addAction(m_cutAction);
-
- m_copyAction = new QAction(tr("Copy Selected Keyframes"));
- connect(m_copyAction, &QAction::triggered, this, &CBaseKeyframeContextMenu::CopySelectedKeys);
- m_copyAction->setEnabled(theCanCopyKeys);
- addAction(m_copyAction);
-
- m_pasteAction = new QAction(tr("Paste Keyframes"));
- connect(m_pasteAction, &QAction::triggered, this, &CBaseKeyframeContextMenu::PasteSelectedKeys);
- m_pasteAction->setEnabled(theCanPasteKeys);
- addAction(m_pasteAction);
-
- m_deleteSelectedAction = new QAction(tr("Delete Selected Keyframes"));
- connect(m_deleteSelectedAction, &QAction::triggered,
- this, &CBaseKeyframeContextMenu::DeleteSelectedKeys);
- m_deleteSelectedAction->setEnabled(theHasKeysSelected);
- addAction(m_deleteSelectedAction);
-
- //"Delete All Channel Keyframes"
- if (theKeyframesHolder) {
- m_deleteChannelKeysAction = new QAction(tr("Delete All Channel Keyframes"));
- connect(m_deleteChannelKeysAction, &QAction::triggered,
- this, &CBaseKeyframeContextMenu::DeleteChannelKeys);
- addAction(m_deleteChannelKeysAction);
- }
-}
-
-//=============================================================================
-/**
- * Called when the cut selected keys option is chosen by the user. Makes a call
- * to the doc to handle the request
- */
-void CBaseKeyframeContextMenu::InsertKeyframe()
-{
- GetKeyframesHolder()->InsertKeyframe();
-}
-
-//=============================================================================
-/**
- * Called when the cut selected keys option is chosen by the user. Makes a call
- * to the doc to handle the request
- */
-void CBaseKeyframeContextMenu::DeleteChannelKeys()
-{
- GetKeyframesHolder()->DeleteAllChannelKeyframes();
-}
-
-//=============================================================================
-/**
- * Called when the cut selected keys option is chosen by the user. Makes a call
- * to the doc to handle the request
- */
-void CBaseKeyframeContextMenu::CutSelectedKeys()
-{
- m_KeyframesManager->RemoveKeyframes(true);
-}
-
-//=============================================================================
-/**
- * Called when the copy selected keys option is chosen by the user. Makes a call
- * to the doc to handle the request
- */
-void CBaseKeyframeContextMenu::CopySelectedKeys()
-{
- m_KeyframesManager->CopyKeyframes();
-}
-
-//=============================================================================
-/**
- * Called when the paste selected keys option is chosen by the user. Makes a call
- * to the doc to handle the request
- */
-void CBaseKeyframeContextMenu::PasteSelectedKeys()
-{
- m_KeyframesManager->PasteKeyframes();
-}
-
-//=============================================================================
-/**
- * Called when the delete selected keys option is chosen by the user. Makes a call
- * to the doc to handle the request
- */
-void CBaseKeyframeContextMenu::DeleteSelectedKeys()
-{
- m_KeyframesManager->RemoveKeyframes(false);
-}
-
-//=============================================================================
-/**
- * Toggle if the selected keyframe(s) is dynamic
- */
-void CBaseKeyframeContextMenu::MakeDynamic()
-{
- m_KeyframesManager->SetKeyframesDynamic(!m_HasDynamicSelectedKeyframes); // toggle
-}
-
-//==============================================================================
-// CTimebarKeyframeContextMenu
-//==============================================================================
-CTimebarKeyframeContextMenu::CTimebarKeyframeContextMenu(
- ITimebarControl *inTimebarControl, ITimelineKeyframesManager *inKeyframesManager,
- bool inShowTimebarPropertiesOptions /*= true */, QWidget *parent)
- : CBaseKeyframeContextMenu(parent)
- , m_TimebarControl(inTimebarControl)
- , m_ShowTimebarPropertiesOptions(inShowTimebarPropertiesOptions)
-{
- Initialize(inKeyframesManager);
-}
-
-CTimebarKeyframeContextMenu::~CTimebarKeyframeContextMenu()
-{
-}
-
-void CTimebarKeyframeContextMenu::Initialize(ITimelineKeyframesManager *inKeyframesManager)
-{
- CBaseKeyframeContextMenu::Initialize(inKeyframesManager);
-
- // Dynamic keyframes ( the way it was set up before was, this option is still shown, but grayed
- // out even if this context menu isn't triggered from right-clicking on a timebar )
- QString theMakeDynamicOption = tr("Make Animations Static");
-
- if (m_TimebarControl->GetKeyframesHolder()->GetKeyframeCount() > 0) {
- m_HasDynamicSelectedKeyframes = m_KeyframesManager->HasDynamicKeyframes();
-
- if (!m_HasDynamicSelectedKeyframes)
- theMakeDynamicOption = tr("Make Animations Dynamic");
-
- m_makeDynamicAction = new QAction(theMakeDynamicOption);
- connect(m_makeDynamicAction, &QAction::triggered,
- this, &CTimebarKeyframeContextMenu::MakeDynamic);
- addAction(m_makeDynamicAction);
- }
-
- if (m_ShowTimebarPropertiesOptions) {
- // Timebar specific actions
- addSeparator();
- m_timeBarColorAction = new QAction(tr("Change Time Bar Color"));
- CMainFrame *theMainFrame = g_StudioApp.m_pMainWnd;
- connect(m_timeBarColorAction, &QAction::triggered,
- theMainFrame, &CMainFrame::OnTimelineSetTimeBarColor);
- addAction(m_timeBarColorAction);
-
- // TODO: If these will become into main menu, combine with CMainFrame
- // like m_timeBarColorAction to not duplicate code
- m_timeBarTextAction = new QAction(tr("Change Time Bar Text"));
- connect(m_timeBarTextAction, &QAction::triggered,
- this, &CTimebarKeyframeContextMenu::ChangeTimebarText);
- addAction(m_timeBarTextAction);
-
- // Change the text for the timebar option depending on whether they are currently being
- // shown or not
- QString theTimebarHandleTextID = tr("Show Time Bar Handles");
- if (CPreferences::GetUserPreferences("Timeline").GetValue("ShowTimebarHandles", false))
- theTimebarHandleTextID = tr("Hide Time Bar Handles");
-
- m_timeBarHandlesAction = new QAction(theTimebarHandleTextID);
- connect(m_timeBarHandlesAction, &QAction::triggered,
- this, &CTimebarKeyframeContextMenu::ToggleTimebarHandles);
- addAction(m_timeBarHandlesAction);
-
- m_timeBarTimeAction = new QAction(tr("Set Timebar Time"));
- connect(m_timeBarTimeAction, &QAction::triggered,
- this, &CTimebarKeyframeContextMenu::SetTimebarTime);
- addAction(m_timeBarTimeAction);
- }
-}
-
-void CTimebarKeyframeContextMenu::MakeDynamic()
-{
- m_KeyframesManager->SelectAllKeyframes();
- CBaseKeyframeContextMenu::MakeDynamic();
-}
-
-//=============================================================================
-/**
- * To show "Insert Keyframe" and "Delete All Channel Keyframes"
- */
-ITimelineItemKeyframesHolder *CTimebarKeyframeContextMenu::GetKeyframesHolder()
-{
- return m_TimebarControl->GetKeyframesHolder();
-}
-
-//=============================================================================
-/**
- * Called when the copy selected keys option is chosen by the user.
- */
-void CTimebarKeyframeContextMenu::ChangeTimebarText()
-{
- m_TimebarControl->OnEditTimeComment();
-}
-
-//=============================================================================
-/**
- * Shows or hides timebar handles in the timeline. If timebar handles are
- * currently being shown, they are hidden, and the preference is stored. If
- * timebar handles are being hidden, they are shown.
- */
-void CTimebarKeyframeContextMenu::ToggleTimebarHandles()
-{
- // Get the current timebar handle preference
- bool theHandlesAreShowing =
- CPreferences::GetUserPreferences("Timeline").GetValue("ShowTimebarHandles", false);
- // Switch the preference.
- CPreferences::GetUserPreferences("Timeline")
- .SetValue("ShowTimebarHandles", !theHandlesAreShowing);
- if (m_TimebarControl)
- m_TimebarControl->OnToggleTimebarHandles();
-}
-
-//=============================================================================
-/**
- * SetTimebarTime: This is the event handler that will be called when the user
- * chooses set timebar time from a pop up menu. This pop up
- *menu
- * is triggered when the user right click on the selected
- *timebar.
- * It displays a time edit dialog to allow the user to set the
- * start and end time of the timebar time.
- * @param NONE
- * @return NONE
- */
-void CTimebarKeyframeContextMenu::SetTimebarTime()
-{
- m_TimebarControl->SetTimebarTime();
-}
-
-//==============================================================================
-// CKeyframeContextMenu
-//==============================================================================
-CKeyframeContextMenu::CKeyframeContextMenu(ITimelineKeyframesManager *inKeyframesManager,
- ITimelineItemProperty *inTimelineItemProperty,
- QWidget *parent)
- : CBaseKeyframeContextMenu(parent)
- , m_TimelineItemProperty(inTimelineItemProperty)
-{
- Initialize(inKeyframesManager);
-}
-
-CKeyframeContextMenu::~CKeyframeContextMenu()
-{
-}
-
-void CKeyframeContextMenu::Initialize(ITimelineKeyframesManager *inKeyframesManager)
-{
- CBaseKeyframeContextMenu::Initialize(inKeyframesManager);
-
- // Dynamic keyframes ( the way it was set up before was, this option is still shown, but grayed
- // out even if this context menu isn't triggered from right-clicking on a timebar )
- QString theMakeDynamicOption = tr("Make Animations Static");
- m_HasDynamicSelectedKeyframes =
- m_TimelineItemProperty && m_TimelineItemProperty->IsDynamicAnimation();
-
- if (!m_HasDynamicSelectedKeyframes)
- theMakeDynamicOption = tr("Make Animations Dynamic");
-
- m_makeDynamicAction = new QAction(theMakeDynamicOption);
- connect(m_makeDynamicAction, &QAction::triggered, this, &CKeyframeContextMenu::MakeDynamic);
- addAction(m_makeDynamicAction);
-
- addSeparator();
- bool theHasKeysSelected = m_KeyframesManager->HasSelectedKeyframes();
- m_setInterpolationAction = new QAction(tr("Set Interpolation"));
- connect(m_setInterpolationAction, &QAction::triggered,
- this, &CKeyframeContextMenu::SetInterpolation);
- addAction(m_setInterpolationAction);
-
- m_setKeyframeTimeAction = new QAction(tr("Set Keyframe Time"));
- connect(m_setKeyframeTimeAction, &QAction::triggered,
- this, &CKeyframeContextMenu::SetKeyframeTime);
- m_setKeyframeTimeAction->setEnabled(theHasKeysSelected);
- addAction(m_setKeyframeTimeAction);
-}
-
-void CKeyframeContextMenu::MakeDynamic()
-{
- if (m_TimelineItemProperty != nullptr && m_TimelineItemProperty->GetKeyframeCount() > 0) {
- m_TimelineItemProperty->SelectKeyframes(
- true, m_TimelineItemProperty->GetKeyframeByIndex(0)->GetTime());
- }
-
- CBaseKeyframeContextMenu::MakeDynamic();
-}
-
-//=============================================================================
-/**
- * SetTime: Saves the keyframe time
- * @param inTime is the keyframe time
- */
-void CKeyframeContextMenu::SetTime(long inTime)
-{
- m_Time = inTime;
-}
-
-//=============================================================================
-/**
- * Called when the set interpolation option is taken by the user. Uses the left most
- * selected key for the base interpolation in the dialog box. User can then set the interpolation
- * and it is propagated to all teh keys
- */
-void CKeyframeContextMenu::SetInterpolation()
-{
- m_KeyframesManager->SetKeyframeInterpolation();
-}
-
-//=============================================================================
-/**
- * SetKeyframeTime: This is the event handler that will be called when the user
- * chooses set keyframe time from a pop up menu. This pop up
- *menu
- * is triggered when the user right click on the selected
- *keyframe.
- * It displays a time edit dialog to allow the user to set the
- * keyframe time.
- * @param NONE
- * @return NONE
- */
-void CKeyframeContextMenu::SetKeyframeTime()
-{
- m_KeyframesManager->SetKeyframeTime(m_Time);
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/KeyframeContextMenu.h b/src/Authoring/Studio/Palettes/Timeline/KeyframeContextMenu.h
deleted file mode 100644
index bb28de3a..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/KeyframeContextMenu.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_KEYFRAME_CONTEXT_MENU
-#define INCLUDED_KEYFRAME_CONTEXT_MENU 1
-
-#pragma once
-
-//==============================================================================
-// Includes
-//==============================================================================
-#include <QMenu>
-
-class ITimelineKeyframesManager;
-class ITimelineItemProperty;
-class ITimelineTimebar;
-class ITimeChangeCallback;
-class ITimelineItemKeyframesHolder;
-class ITimebarControl;
-
-QT_FORWARD_DECLARE_CLASS(QAction)
-
-//=============================================================================
-/**
- * Abstract class that contain the common items for the keyframes-related context menu.
- */
-class CBaseKeyframeContextMenu : public QMenu
-{
- Q_OBJECT
-public:
- CBaseKeyframeContextMenu(QWidget *parent = nullptr);
- virtual ~CBaseKeyframeContextMenu();
-
-protected:
- virtual void Initialize(ITimelineKeyframesManager *inKeyframesManager);
- virtual void MakeDynamic();
- virtual ITimelineItemKeyframesHolder *GetKeyframesHolder() { return nullptr; }
-
-protected Q_SLOTS:
- void CutSelectedKeys();
- void CopySelectedKeys();
- void PasteSelectedKeys();
- void DeleteSelectedKeys();
- void InsertKeyframe();
- void DeleteChannelKeys();
-
-protected:
- bool m_HasDynamicSelectedKeyframes;
- ITimelineKeyframesManager *m_KeyframesManager;
- QAction *m_insertAction;
- QAction *m_cutAction;
- QAction *m_copyAction;
- QAction *m_pasteAction;
- QAction *m_deleteSelectedAction;
- QAction *m_deleteChannelKeysAction;
-};
-
-//=============================================================================
-/**
- * Context menu right-clicking on a timebar,
- */
-class CTimebarKeyframeContextMenu : public CBaseKeyframeContextMenu
-{
- Q_OBJECT
-public:
- CTimebarKeyframeContextMenu(ITimebarControl *inTimebarControl,
- ITimelineKeyframesManager *inKeyframesManager,
- bool inShowTimebarPropertiesOptions = true,
- QWidget *parent = nullptr);
- ~CTimebarKeyframeContextMenu();
-
-protected:
- void Initialize(ITimelineKeyframesManager *inKeyframesManager) override;
- ITimelineItemKeyframesHolder *GetKeyframesHolder() override;
- void MakeDynamic() override;
-
- void ChangeTimebarText();
- void ToggleTimebarHandles();
- void SetTimebarTime();
-
-protected:
- ITimebarControl *m_TimebarControl;
- bool m_ShowTimebarPropertiesOptions;
-
- QAction *m_makeDynamicAction;
- QAction *m_timeBarColorAction;
- QAction *m_timeBarTextAction;
- QAction *m_timeBarHandlesAction;
- QAction *m_timeBarTimeAction;
-};
-
-//=============================================================================
-/**
- * Context menu for right-clicking on selected keyframe(s)
- * so even though the assoicated action isn't limited to the keyframe that was right-clicked on,
- * this is still a different one from right-clicking on outside the keyframe.
- * This is how the old system used to be.
- */
-class CKeyframeContextMenu : public CBaseKeyframeContextMenu
-{
- Q_OBJECT
-public:
- CKeyframeContextMenu(ITimelineKeyframesManager *inKeyframesManager,
- ITimelineItemProperty *inTimelineItemProperty = nullptr,
- QWidget *parent = nullptr);
- ~CKeyframeContextMenu();
-
- void SetTime(long inTime);
-
-protected:
- void Initialize(ITimelineKeyframesManager *inKeyframesManager) override;
- void MakeDynamic() override;
-
-protected Q_SLOTS:
- void SetInterpolation();
- void SetKeyframeTime();
-
-protected:
- long m_Time;
-
-private:
- ITimelineItemProperty *m_TimelineItemProperty;
- QAction *m_makeDynamicAction;
- QAction *m_setKeyframeTimeAction;
- QAction *m_setInterpolationAction;
-};
-#endif // INCLUDED_KEYFRAME_CONTEXT_MENU
diff --git a/src/Authoring/Studio/Palettes/Timeline/Keyframes.qml b/src/Authoring/Studio/Palettes/Timeline/Keyframes.qml
deleted file mode 100644
index 70563ba0..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/Keyframes.qml
+++ /dev/null
@@ -1,55 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-import QtQuick 2.8
-import QtQuick.Controls 2.2
-import QtQuick.Layouts 1.3
-import "../controls"
-
-Item {
- id: root
-
- property var keyframes
-
- Repeater {
- // TODO use the same graphic as in the old code: CAssetTimelineKeyframe::GetImage()
-
- model: keyframes
- delegate: Rectangle {
- x: modelData.position
- y: -width / 2
-
- color: "white"
- border.color: "black"
- border.width: 1
- width: 8
- height: 8
- radius: width / 2
-
- }
- }
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/MultiSelectAspect.h b/src/Authoring/Studio/Palettes/Timeline/MultiSelectAspect.h
deleted file mode 100644
index 7a686522..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/MultiSelectAspect.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_MULTISELECT_ASPECT_H
-#define INCLUDED_MULTISELECT_ASPECT_H 1
-
-#pragma once
-
-//==============================================================================
-// Includes
-//==============================================================================
-#include "StateRow.h"
-#include "Bindings/IKeyframeSelector.h"
-
-//==============================================================================
-/**
- * This class handles the multi selection aspect for keyframes in the timeline.
- * It toggles each keyframe's select state on or off, depending on whether the
- * mouse rectangle is over them and if the modifier key is down.
- */
-template <typename TSTLKeyFrameList>
-class CMultiSelectAspect
-{
-
-public:
- typedef typename TSTLKeyFrameList::iterator TSTLKeyframesItr;
-
-protected:
- TSTLKeyFrameList &m_STLKeyframes; ///< stores list of keyframes in a vector (STL)
- IKeyframeSelector *m_KeyframeSelector; ///< the interface that performs the keyframes selection
-
-public:
- //=============================================================================
- /**
- * Constructor
- * @param inSTLKeyframes stores a list of keyframes in a vector
- * @param inDoc stores the studio document
- */
- CMultiSelectAspect(TSTLKeyFrameList &inSTLKeyframes, IKeyframeSelector *inKeyframeSelector)
- : m_STLKeyframes(inSTLKeyframes)
- , m_KeyframeSelector(inKeyframeSelector)
- {
- }
-
- //=============================================================================
- /**
- * Destructor
- */
- ~CMultiSelectAspect() {}
-
- //=============================================================================
- /**
- * CommitSelections: Overwrites all previous keyframe states with the current keyframe states.
- * This will prevent the keyframes in the current selection
-*from
-* switching states as we select other keyframes.
- */
- void CommitSelections()
- {
- // Iterates each keyframe and set the previous state to the current one.
- TSTLKeyframesItr thePos = m_STLKeyframes.begin();
- for (; thePos != m_STLKeyframes.end(); ++thePos) {
- (*thePos)->SetPreviousSelectState((*thePos)->IsSelected());
- }
- }
-
- //=============================================================================
- /**
- * MultiSelect: Handles the selection of keyframes in a given rect.
- * @param inRect stores the rectangle that will be used to select the keyframes within it.
- * @param inModifierKeyDown indicates if thte modifier key is pressed.
- */
- void MultiSelect(CRct inRect, bool inModifierKeyDown)
- {
- // Iterates through the keyframes and checks if the keys are in the rect and
- // perform the necessary selection operations on each keyframe.
- TSTLKeyframesItr thePos = m_STLKeyframes.begin();
- for (; thePos != m_STLKeyframes.end(); ++thePos) {
- bool isInRect = (*thePos)->IsInRect(inRect);
- if ((*thePos)->IsEnabled()) {
- if (inModifierKeyDown) {
- if (isInRect) {
- if (!(*thePos)->GetRectOverHandled()) {
- bool theSelectState = (*thePos)->IsSelected();
-
- // Update the previous select state
- (*thePos)->SetPreviousSelectState(theSelectState);
- // Negate the keyframe state when it is in the rectangle
- theSelectState = !theSelectState;
- (*thePos)->Select(theSelectState);
- m_KeyframeSelector->SelectKeyframes(theSelectState,
- (*thePos)->GetTime());
-
- // Set the RectOverFlag to true, so that we will not repeat the negation
- // in indefinitely.
- (*thePos)->SetRectOverHandled(true);
- }
- } else {
- // When the rectangle is not over the current keyframe, revert its state to
- // the previous one
- if ((*thePos)->IsSelected() != (*thePos)->GetPreviousSelectState()) {
- (*thePos)->Select((*thePos)->GetPreviousSelectState());
- m_KeyframeSelector->SelectKeyframes((*thePos)->GetPreviousSelectState(),
- (*thePos)->GetTime());
- }
- (*thePos)->SetRectOverHandled(false);
- }
- } else {
- // When modifier is not pressed we will just select the keyframes if it is over
- // in the rectangle and deselect it when it isn't.
- if ((*thePos)->IsSelected() != isInRect) {
- (*thePos)->SetPreviousSelectState((*thePos)->IsSelected());
- m_KeyframeSelector->SelectKeyframes(isInRect, (*thePos)->GetTime());
- (*thePos)->Select(isInRect);
- }
- (*thePos)->SetRectOverHandled(false);
- }
- }
- }
- }
-};
-#endif // INCLUDED_MULTISELECT_ASPECT_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/PlayHead.qml b/src/Authoring/Studio/Palettes/Timeline/PlayHead.qml
deleted file mode 100644
index 3385db84..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/PlayHead.qml
+++ /dev/null
@@ -1,51 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.8
-import Qt3DStudio 1.0
-
-Item {
- id: root
-
- implicitWidth: playHeadImage.width
-
- Image {
- id: playHeadImage
-
- anchors.horizontalCenter: parent.horizontalCenter
- source: _resDir + "PlaybackHead.png"
- }
-
- Rectangle {
- anchors.horizontalCenter: parent.horizontalCenter
- anchors.top: playHeadImage.bottom
- width: 1
- height: parent.height - playHeadImage.height
- color: "red"
- }
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/PropertyColorControl.cpp b/src/Authoring/Studio/Palettes/Timeline/PropertyColorControl.cpp
deleted file mode 100644
index 3cffd417..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/PropertyColorControl.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "stdafx.h"
-
-#include "PropertyColorControl.h"
-#include "Renderer.h"
-#include "PropertyRow.h"
-#include "StudioPreferences.h"
-#include "HotKeys.h"
-
-CPropertyColorControl::CPropertyColorControl(CPropertyRow *inPropertyRow)
-{
- m_ParentRow = inPropertyRow;
-}
-
-CPropertyColorControl::~CPropertyColorControl()
-{
-}
-
-//==============================================================================
-/**
- * Draw
- *
- * draws this object
- *
- * @param inRenderer a renderer object
- */
-void CPropertyColorControl::Draw(CRenderer *inRenderer)
-{
- // Fill the control with the solid color
- CRct theRect(GetSize());
- CColor theBgColor(CStudioPreferences::GetPropertyBackgroundColor());
- inRenderer->FillSolidRect(theRect, theBgColor);
-
- // Define the colors for the side and bottom outline
- CColor theBorderColor(CStudioPreferences::GetPropertyFloorColor());
-
- // Right
- inRenderer->PushPen(theBorderColor);
- inRenderer->MoveTo(CPt(theRect.size.x - 1, 0));
- inRenderer->LineTo(CPt(theRect.size.x - 1, theRect.size.y - 1));
-
- // Left
- inRenderer->MoveTo(CPt(0, 0));
- inRenderer->LineTo(CPt(0, theRect.size.y - 1));
-
- // Bottom
- inRenderer->MoveTo(CPt(1, theRect.size.y - 1));
- inRenderer->LineTo(CPt(theRect.size.x - 2, theRect.size.y - 1));
- inRenderer->PopPen();
-}
-
-//==============================================================================
-/**
- * Handles the OnMouseDownEvent
- */
-bool CPropertyColorControl::OnMouseDown(CPt inPoint, Qt::KeyboardModifiers inFlags)
-{
- Q_UNUSED(inPoint);
- m_ParentRow->Select((CHotKeys::MODIFIER_SHIFT & inFlags) == CHotKeys::MODIFIER_SHIFT);
- return true;
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/PropertyColorControl.h b/src/Authoring/Studio/Palettes/Timeline/PropertyColorControl.h
deleted file mode 100644
index cc3263b8..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/PropertyColorControl.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_PROPERTYCOLOR_CONTROL_H
-#define INCLUDED_PROPERTYCOLOR_CONTROL_H 1
-
-#pragma once
-
-#include "Control.h"
-#include "CColor.h"
-
-class CRenderer;
-class CPropertyRow;
-
-class CPropertyColorControl : public CControl
-{
-public:
- CPropertyColorControl(CPropertyRow *inPropertyRow);
- virtual ~CPropertyColorControl();
-
- void SetColor(::CColor inColor);
- bool OnMouseDown(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
-
- void Draw(CRenderer *inRenderer) override;
-
-protected:
- CPropertyRow *m_ParentRow;
-};
-#endif // INCLUDED_
diff --git a/src/Authoring/Studio/Palettes/Timeline/PropertyGraphKeyframe.cpp b/src/Authoring/Studio/Palettes/Timeline/PropertyGraphKeyframe.cpp
deleted file mode 100644
index ffe83da3..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/PropertyGraphKeyframe.cpp
+++ /dev/null
@@ -1,152 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "stdafx.h"
-
-#include "PropertyGraphKeyframe.h"
-#include "Renderer.h"
-#include "Bindings/ITimelineItemProperty.h"
-#include "StudioUtils.h"
-#include "CColor.h"
-
-CPropertyGraphKeyframe::CPropertyGraphKeyframe(ITimelineItemProperty *inProperty,
- long inChannelIndex, long inKeyframeTime,
- double inTimeRatio, long inMinY, long inMaxY,
- float inMinVal, float inMaxVal)
- : m_Property(inProperty)
- , m_ChannelIndex(inChannelIndex)
- , m_KeyframeTime(inKeyframeTime)
- , m_TimeRatio(inTimeRatio)
- , m_MinVal(inMinVal)
- , m_MaxVal(inMaxVal)
- , m_MinY(inMinY)
- , m_MaxY(inMaxY)
- , m_IsMouseDown(false)
-{
- SetSize(CPt(6, 8));
- PositionKeyframe();
-}
-
-CPropertyGraphKeyframe::~CPropertyGraphKeyframe()
-{
-}
-
-long CPropertyGraphKeyframe::GetTime()
-{
- return m_KeyframeTime;
-}
-
-long CPropertyGraphKeyframe::GetChannelIndex() const
-{
- return m_ChannelIndex;
-}
-
-void CPropertyGraphKeyframe::PositionKeyframe()
-{
- long theXPos = ::TimeToPos(m_KeyframeTime, m_TimeRatio);
- float theValue = GetKeyframeValue();
- long theYPos = (long)((1.0 - (theValue - m_MinVal) / (m_MaxVal - m_MinVal)) * (m_MaxY - m_MinY)
- + m_MinY - GetSize().y / 2 + .5);
-
- if (theYPos < m_MinY)
- theYPos = m_MinY;
- else if (theYPos > m_MaxY)
- theYPos = m_MaxY;
-
- SetPosition(CPt(theXPos, theYPos));
-}
-
-void CPropertyGraphKeyframe::SetTimeRatio(double inTimeRatio)
-{
- m_TimeRatio = inTimeRatio;
- PositionKeyframe();
-}
-
-float CPropertyGraphKeyframe::GetKeyframeValue()
-{
- return m_Property->GetChannelValueAtTime(m_ChannelIndex, m_KeyframeTime);
-}
-
-void CPropertyGraphKeyframe::SetKeyframeValue(float inValue)
-{
- m_Property->SetChannelValueAtTime(m_ChannelIndex, m_KeyframeTime, inValue);
-}
-
-void CPropertyGraphKeyframe::Draw(CRenderer *inRenderer)
-{
- CPt mySize = GetSize();
- inRenderer->MoveTo(0, 0);
- inRenderer->LineTo(mySize.x, 0);
- inRenderer->LineTo(mySize.x, mySize.y);
- inRenderer->LineTo(0, mySize.y);
- inRenderer->LineTo(0, 0);
-
- if (m_IsMouseDown) {
- inRenderer->FillSolidRect(CRct(GetSize()), CColor::black);
- }
-}
-
-bool CPropertyGraphKeyframe::OnMouseDown(CPt inPoint, Qt::KeyboardModifiers inFlags)
-{
- if (!CControl::OnMouseDown(inPoint, inFlags)) {
- m_IsMouseDown = true;
- m_MouseDownLoc = inPoint;
- }
- return true;
-}
-
-void CPropertyGraphKeyframe::OnMouseUp(CPt inPoint, Qt::KeyboardModifiers inFlags)
-{
- CControl::OnMouseUp(inPoint, inFlags);
- m_IsMouseDown = false;
- m_Property->CommitChangedKeyframes();
- GetParent()->Invalidate();
-}
-
-void CPropertyGraphKeyframe::OnMouseMove(CPt inPoint, Qt::KeyboardModifiers inFlags)
-{
- CControl::OnMouseMove(inPoint, inFlags);
-
- if (m_IsMouseDown) {
- long theDiff = inPoint.y - m_MouseDownLoc.y;
- long theYPos = GetPosition().y + theDiff;
- if (theYPos < m_MinY)
- theYPos = m_MinY;
- if (theYPos > m_MaxY)
- theYPos = m_MaxY;
- SetPosition(GetPosition().x, theYPos);
-
- float theValue = (m_MaxVal - m_MinVal)
- * (((m_MaxY + m_MinY) - theYPos - GetSize().y / 2) - m_MinY) / (m_MaxY - m_MinY)
- + m_MinVal;
- SetKeyframeValue(theValue);
-
- GetParent()->Invalidate();
- }
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/PropertyGraphKeyframe.h b/src/Authoring/Studio/Palettes/Timeline/PropertyGraphKeyframe.h
deleted file mode 100644
index daffc8ab..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/PropertyGraphKeyframe.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_PROPERTY_GRAPH_KEYFRAME_H
-#define INCLUDED_PROPERTY_GRAPH_KEYFRAME_H 1
-
-#pragma once
-
-#include "Control.h"
-
-class ITimelineItemProperty;
-
-class CPropertyGraphKeyframe : public CControl
-{
-public:
- CPropertyGraphKeyframe(ITimelineItemProperty *inProperty, long inChannelIndex,
- long inKeyframeTime, double inTimeRatio, long inHeight, long inOffset,
- float inMinVal, float inMaxVal);
- virtual ~CPropertyGraphKeyframe();
-
- void Draw(CRenderer *inRenderer) override;
-
- bool OnMouseDown(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
- void OnMouseUp(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
- void OnMouseMove(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
-
- long GetTime();
- long GetChannelIndex() const;
- void SetTimeRatio(double inTimeRatio);
- void PositionKeyframe();
-
-protected:
- float GetKeyframeValue();
- void SetKeyframeValue(float inValue);
-
- ITimelineItemProperty *m_Property;
- long m_ChannelIndex; // index that identifies the channel for a animated property
- long m_KeyframeTime;
- double m_TimeRatio;
- float m_MinVal;
- float m_MaxVal;
- long m_MinY;
- long m_MaxY;
- CPt m_MouseDownLoc;
- bool m_IsMouseDown;
-};
-#endif // INCLUDED_PROPERTY_GRAPH_KEYFRAME_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/PropertyRow.cpp b/src/Authoring/Studio/Palettes/Timeline/PropertyRow.cpp
deleted file mode 100644
index 1da7ee2c..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/PropertyRow.cpp
+++ /dev/null
@@ -1,161 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "stdafx.h"
-
-//==============================================================================
-// Includes
-//==============================================================================
-#include "PropertyRow.h"
-
-#include "StudioPreferences.h"
-#include "StateRow.h"
-#include "Bindings/ITimelineItemProperty.h"
-
-//=============================================================================
-/**
- * Create a property row for inProperty.
- * @param inProperty the property that this is displaying.
- */
-CPropertyRow::CPropertyRow(ITimelineItemProperty *inProperty, CTimelineRow *parent)
- : CTimelineRow(parent)
- , m_Property(inProperty)
-{
- m_IsViewable = true;
-}
-
-CPropertyRow::~CPropertyRow()
-{
-}
-
-//=============================================================================
-/**
- * Filter this property.
- * This controls whether or not this row should be displayed. The filter will
- * be stored and used for future operations that may change whether or not
- * this should be visible.
- * @param inFilter the filter to filter on.
- * @param inFilterChildren true if the call is recursive.
- */
-void CPropertyRow::Filter(const CFilter &inFilter, bool inFilterChildren /*= true*/)
-{
- Q_UNUSED(inFilterChildren);
-
- m_Filter = inFilter;
-
- bool theVisibleFlag = inFilter.Filter(m_Property);
- emit visibleChanged(theVisibleFlag);
- m_IsViewable = theVisibleFlag;
-}
-
-//=============================================================================
-/**
- * @return true if this property is animated and is not currently being filtered out
- */
-bool CPropertyRow::IsViewable() const
-{
- return m_Filter.GetProperties();
-}
-
-//=============================================================================
-/**
- * Call from one of the child controls to select this object.
- * Currently this just causes the Asset to be selected.
- */
-void CPropertyRow::Select(bool inIsShiftKeyPressed /*= false */)
-{
- m_Property->SetSelected();
-
- if (inIsShiftKeyPressed)
- emit selectAllKeys();
- else
- m_Property->ClearKeySelection();
-}
-
-bool CPropertyRow::IsSelected() const
-{
- return false; // KDAB_TODO check!
-}
-
-//=============================================================================
-/**
- * Retrieves the background color for the row based upon the type of asset
- * passed in. Overridden so that properties can have a different background
- * color than their parent asset does.
- * @return background color to use for this row
- */
-::CColor CPropertyRow::GetTimebarBackgroundColor()
-{
- return CStudioPreferences::GetPropertyBackgroundColor();
-}
-
-//=============================================================================
-/**
- * Retrieves the background color for the row when the mouse is over the row
- * based upon the type of asset passed in. Overridden so that properties can
- * have a different highlight background color than their parent asset does.
- * @return background color to use for this row when the mouse is over it
- */
-::CColor CPropertyRow::GetTimebarHighlightBackgroundColor()
-{
- return CStudioPreferences::GetPropertyMouseOverColor();
-}
-
-//=============================================================================
-/**
- * Set the amount of time that is represented by a pixel.
- * This modifies the length of this control.
- * @param inTimePerPixel the time per pixel.
- */
-void CPropertyRow::SetTimeRatio(double inTimeRatio)
-{
- m_TimeRatio = inTimeRatio;
- emit timeRatioChanged(inTimeRatio);
-}
-
-//=============================================================================
-/**
- * Deletes keyframes on this property row
- */
-void CPropertyRow::DeleteAllKeys()
-{
- m_Property->DeleteAllKeys();
- emit deleteAllKeys();
-}
-
-
-//=============================================================================
-/**
- * Callback from the ITimelineProperty.
- */
-void CPropertyRow::Refresh()
-{
- emit refreshRequested();
-}
-
diff --git a/src/Authoring/Studio/Palettes/Timeline/PropertyRow.h b/src/Authoring/Studio/Palettes/Timeline/PropertyRow.h
deleted file mode 100644
index 7b76b955..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/PropertyRow.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_PROPERTY_ROW_H
-#define INCLUDED_PROPERTY_ROW_H 1
-
-#pragma once
-
-//==============================================================================
-// Includes
-//==============================================================================
-
-#include "AbstractTimelineRowUI.h"
-#include "TimelineRow.h"
-#include "StateRow.h"
-#include "Rct.h"
-#include <vector>
-
-//==============================================================================
-// Forwards
-//==============================================================================
-class CPropertyColorControl;
-class CBlankControl;
-class CPropertyTreeControl;
-class ITimelineItemProperty;
-
-class CPropertyRow : public CTimelineRow
-{
- Q_OBJECT
-public:
- CPropertyRow(ITimelineItemProperty *inProperty, CTimelineRow *parent);
- virtual ~CPropertyRow();
-
- void SetTimeRatio(double inTimePerPixel) override;
- void Filter(const CFilter &inFilter, bool inFilterChildren = true) override;
-
- void Select(Qt::KeyboardModifiers inKeyState, bool inCheckKeySelection = true) override {}
- void Select(bool inIsShiftKeyPressed = false);
- bool IsSelected() const override;
-
- void DeleteAllKeys();
- bool IsViewable() const override;
-
- using CTimelineRow::GetTimebarBackgroundColor;
- virtual ::CColor GetTimebarBackgroundColor();
- using CTimelineRow::GetTimebarHighlightBackgroundColor;
- virtual ::CColor GetTimebarHighlightBackgroundColor();
-
- void Refresh();
- ITimelineItemProperty *GetProperty() const { return m_Property; }
-
- void setExpanded(bool expanded) { m_Expanded = expanded; }
- bool expanded() const { return m_Expanded; }
-
- void Expand(bool inExpandAll = false, bool inExpandUp = false) override {}
- void Collapse(bool inCollapseAll = false) override {}
- bool CalculateActiveStartTime() override { return true; }
- bool CalculateActiveEndTime() override { return true; }
-
- // not implemented methods
- void Initialize(ITimelineItemBinding *) override {}
- void LoadChildren() override {}
- bool HasVisibleChildren() override {return false;}
-
-Q_SIGNALS:
- void visibleChanged(bool visible);
- void deleteAllKeys();
- void selectAllKeys();
- void refreshRequested();
-
-
-protected:
- CFilter m_Filter;
- ITimelineItemProperty *m_Property;
- bool m_Expanded = false;
-};
-#endif // INCLUDED_PROPERTY_CONTROL_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/PropertyTimebarGraph.cpp b/src/Authoring/Studio/Palettes/Timeline/PropertyTimebarGraph.cpp
deleted file mode 100644
index ecd3b5df..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/PropertyTimebarGraph.cpp
+++ /dev/null
@@ -1,234 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "stdafx.h"
-
-#include "PropertyTimebarGraph.h"
-#include "IKeyframe.h"
-#include "Renderer.h"
-#include "PropertyGraphKeyframe.h"
-#include "Bindings/ITimelineItemProperty.h"
-#include "StudioUtils.h"
-
-//=============================================================================
-/**
- * Create a graph for the specified property.
- * @param inProperty the property this is graphing.
- */
-CPropertyTimebarGraph::CPropertyTimebarGraph(ITimelineItemProperty *inProperty)
- : m_Property(inProperty)
- , m_TimeRatio(0.0f)
- , m_MaxVal(0.0f)
- , m_MinVal(0.0f)
- , m_MinY(0)
- , m_MaxY(0)
-{
-}
-
-CPropertyTimebarGraph::~CPropertyTimebarGraph()
-{
- TKeyframeList::iterator thePos = m_Keyframes.begin();
- for (; thePos != m_Keyframes.end(); ++thePos)
- delete (*thePos);
-}
-
-//=============================================================================
-/**
- * Toggle whether this is visible or not.
- * Overrides CControl::SetVisible. If this is not visible then it removes
- * a bunch of the refresh logic to speed stuff up.
- * @param inIsVisible true if this control is to be visible.
- */
-void CPropertyTimebarGraph::SetVisible(bool inIsVisible)
-{
- CControl::SetVisible(inIsVisible);
-
- // If this is visible then add the appropriate keyframes and listeners.
- if (inIsVisible) {
- m_MaxVal = m_Property->GetMaximumValue();
- m_MinVal = m_Property->GetMinimumValue();
-
- m_MinY = 10;
- m_MaxY = GetSize().y - m_MinY;
-
- RefreshKeyframes();
- } else
- RemoveKeyframes();
-}
-
-//=============================================================================
-/**
- * Set the time ratio for this display.
- * The time ratio controls how much time is displayed in how much space.
- * @param inTimeRatio the time ratio.
- */
-void CPropertyTimebarGraph::SetTimeRatio(double inTimeRatio)
-{
- m_TimeRatio = inTimeRatio;
-}
-
-//=============================================================================
-/**
- * Draw this to the specified renderer.
- * This will perform the graphing of all the channels on the property.
- * @param inRenderer the renderer to draw to.
- */
-void CPropertyTimebarGraph::Draw(CRenderer *inRenderer)
-{
- CRct theRect(CPt(0, 0), GetSize());
- inRenderer->PushClippingRect(theRect);
-
- // the available line colors, tried to use Rainbow.bvs code to do it dynamically but didn't
- // quite work.
- ::CColor theColors[6] = { ::CColor(255, 0, 0), ::CColor(0, 255, 0), ::CColor(0, 0, 255),
- ::CColor(255, 255, 0), ::CColor(255, 0, 255), ::CColor(0, 255, 255) };
-
- long theChannelCount = m_Property->GetChannelCount();
- // Don't want to overflow the color array
- if (theChannelCount <= 6) {
- // For each channel graph it.
- for (long theIndex = 0; theIndex < theChannelCount; ++theIndex)
- DrawDetailedChannel(inRenderer, theIndex, theColors[theIndex]);
- }
-
- inRenderer->PopClippingRect();
-}
-
-void CPropertyTimebarGraph::DrawDetailedChannel(CRenderer *inRenderer, long inChannelIndex,
- ::CColor inColor)
-{
- inRenderer->PushPen(inColor, 2);
-
- CRct theClipRect = inRenderer->GetClippingRect();
- float theValue = m_Property->GetChannelValueAtTime(inChannelIndex, 0);
- long theYPos = (long)((1.0 - (theValue - m_MinVal) / (m_MaxVal - m_MinVal)) * (m_MaxY - m_MinY)
- + m_MinY + .5);
-
- inRenderer->MoveTo(CPt(0, theYPos));
-
- long theInterval = 5;
- long theSize = theClipRect.position.x + theClipRect.size.x + theInterval;
-
- for (long thePixel = theClipRect.position.x; thePixel < theSize; thePixel += theInterval) {
- long theTime = ::PosToTime(thePixel, m_TimeRatio); //(long)( thePixel / m_TimeRatio + .5 );
- theValue = m_Property->GetChannelValueAtTime(inChannelIndex, theTime);
- theYPos = (long)((1.0 - (theValue - m_MinVal) / (m_MaxVal - m_MinVal)) * (m_MaxY - m_MinY)
- + m_MinY + .5);
-
- inRenderer->LineTo(CPt(thePixel, theYPos));
- }
-
- inRenderer->PopPen();
-}
-
-void CPropertyTimebarGraph::AddKeyframes()
-{
- long theChannelCount = m_Property->GetChannelCount();
- long theKeyframeCount =
- m_Property->GetKeyframeCount(); // the way it works now (and hence the assumption is), the
- // number of keyframes for all the channels is the same.
- for (long theIndex = 0; theIndex < theChannelCount; ++theIndex) {
- for (long theKeyIndex = 0; theKeyIndex < theKeyframeCount; ++theKeyIndex) {
- CPropertyGraphKeyframe *theGraphKeyframe = new CPropertyGraphKeyframe(
- m_Property, theIndex, m_Property->GetKeyframeByIndex(theKeyIndex)->GetTime(),
- m_TimeRatio, m_MinY, m_MaxY, m_MinVal, m_MaxVal);
- AddChild(theGraphKeyframe);
- m_Keyframes.push_back(theGraphKeyframe);
- }
- }
-}
-
-void CPropertyTimebarGraph::Invalidate(bool inIsInvalidated)
-{
- CControl::Invalidate(inIsInvalidated);
-
- if (inIsInvalidated && GetParent() != nullptr) {
- GetParent()->Invalidate(inIsInvalidated);
- }
-}
-
-void CPropertyTimebarGraph::RemoveKeyframes()
-{
- TKeyframeList::iterator thePos = m_Keyframes.begin();
- for (; thePos != m_Keyframes.end(); ++thePos) {
- CPropertyGraphKeyframe *theKeyframe = (*thePos);
- RemoveChild(theKeyframe);
- delete theKeyframe;
- }
- m_Keyframes.clear();
-}
-
-void CPropertyTimebarGraph::RefreshKeyframes()
-{
- TKeyframeList::iterator thePos = m_Keyframes.begin();
- while (thePos != m_Keyframes.end()) {
- CPropertyGraphKeyframe *theKeyframe = (*thePos);
- if (m_Property->GetKeyframeByTime(theKeyframe->GetTime())) {
- theKeyframe->PositionKeyframe();
- ++thePos;
- } else {
- RemoveChild(theKeyframe);
- delete theKeyframe;
- thePos = m_Keyframes.erase(thePos);
- }
- }
- long theChannelCount = m_Property->GetChannelCount();
- long theKeyframeCount =
- m_Property->GetKeyframeCount(); // the way it works now (and hence the assumption is), the
- // number of keyframes for all the channels is the same.
- for (long theIndex = 0; theIndex < theChannelCount; ++theIndex) {
- for (long theKeyIndex = 0; theKeyIndex < theKeyframeCount; ++theKeyIndex) {
- IKeyframe *theKeyframe = m_Property->GetKeyframeByIndex(theKeyIndex);
- CPropertyGraphKeyframe *theExistingKeyframe =
- GetKeyframe(theKeyframe->GetTime(), theIndex);
- if (!theExistingKeyframe) {
- CPropertyGraphKeyframe *theGraphKeyframe =
- new CPropertyGraphKeyframe(m_Property, theIndex, theKeyframe->GetTime(),
- m_TimeRatio, m_MinY, m_MaxY, m_MinVal, m_MaxVal);
- AddChild(theGraphKeyframe);
-
- m_Keyframes.push_back(theGraphKeyframe);
- }
- }
- }
-
- Invalidate();
-}
-
-CPropertyGraphKeyframe *CPropertyTimebarGraph::GetKeyframe(long inTime, long inChannelIndex)
-{
- TKeyframeList::iterator thePos = m_Keyframes.begin();
- for (; thePos != m_Keyframes.end(); ++thePos) {
- CPropertyGraphKeyframe *theKeyframe = (*thePos);
- if (theKeyframe->GetChannelIndex() == inChannelIndex && theKeyframe->GetTime() == inTime) {
- return theKeyframe;
- }
- }
- return nullptr;
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/PropertyTimebarGraph.h b/src/Authoring/Studio/Palettes/Timeline/PropertyTimebarGraph.h
deleted file mode 100644
index 76379bcd..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/PropertyTimebarGraph.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_PROPERTY_TIMEBAR_GRAPH_H
-#define INCLUDED_PROPERTY_TIMEBAR_GRAPH_H 1
-
-#pragma once
-
-#include "Control.h"
-#include "CColor.h"
-
-class CPropertyGraphKeyframe;
-class ITimelineItemProperty;
-
-class CPropertyTimebarGraph : public CControl
-{
- typedef std::vector<CPropertyGraphKeyframe *> TKeyframeList;
-
-public:
- CPropertyTimebarGraph(ITimelineItemProperty *inProperty);
- virtual ~CPropertyTimebarGraph();
- void SetVisible(bool inIsVisible) override;
- void Draw(CRenderer *inRenderer) override;
- void SetTimeRatio(double inTimeRatio);
- void Invalidate(bool inIsInvalidated = true) override;
- void RefreshKeyframes();
-
-protected:
- void DrawDetailedChannel(CRenderer *inRenderer, long inChannelIndex, ::CColor inColor);
- void AddKeyframes();
- void RemoveKeyframes();
-
- CPropertyGraphKeyframe *GetKeyframe(long inTime, long inChannelIndex);
-
-protected:
- ITimelineItemProperty *m_Property;
- double m_TimeRatio;
- TKeyframeList m_Keyframes;
- float m_MaxVal;
- float m_MinVal;
- long m_MinY;
- long m_MaxY;
-};
-#endif // INCLUDED_PROPERTY_TIMEBAR_GRAPH_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/ScalableScroller.cpp b/src/Authoring/Studio/Palettes/Timeline/ScalableScroller.cpp
deleted file mode 100644
index b445db83..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/ScalableScroller.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "stdafx.h"
-
-#include "ScalableScroller.h"
-#include "ScalableScrollerBar.h"
-
-CScalableScroller::CScalableScroller()
- : CScroller(false)
- , m_ScalableBar(nullptr)
- , m_ScalingListener(nullptr)
-{
- Initialize();
-}
-
-CScalableScroller::~CScalableScroller()
-{
-}
-
-CScrollerBar *CScalableScroller::CreateHorizontalBar()
-{
- if (m_ScalableBar == nullptr) {
- m_ScalableBar = new CScalableBar(this);
- m_ScalableBar->SetOrientation(CScrollerBar::HORIZONTAL);
- m_ScalableBar->SetScalingListener(m_ScalingListener);
- }
- return m_ScalableBar;
-}
-
-void CScalableScroller::SetScalingListener(CScalingListener *inListener)
-{
- m_ScalingListener = inListener;
-
- if (m_ScalableBar != nullptr) {
- m_ScalableBar->SetScalingListener(inListener);
- }
-}
-
-//====================================================================
-/**
- * Protected function for seting the display size of the scroller.
- * Overridden because the scaleable scroller thumb at the bottom of
- * the timeline was getting messed up. Yes, it's a hack, but I couldn't
- * fix it any other way.
- */
-void CScalableScroller::SetVisibleSize(CPt inSize)
-{
- m_VisibleSize = inSize;
-
- // Don't call the base class because it messes things up
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/ScalableScroller.h b/src/Authoring/Studio/Palettes/Timeline/ScalableScroller.h
deleted file mode 100644
index 9fd6df3b..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/ScalableScroller.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_SCALABLE_SCROLLER_H
-#define INCLUDED_SCALABLE_SCROLLER_H 1
-
-#pragma once
-
-#include "Scroller.h"
-
-class CScalingListener;
-class CScalableBar;
-
-class CScalableScroller : public CScroller
-{
-public:
- CScalableScroller();
- virtual ~CScalableScroller();
-
- void SetScalingListener(CScalingListener *inScalingListener);
-
- void SetVisibleSize(CPt inSize) override;
-
-protected:
- CScrollerBar *CreateHorizontalBar() override;
-
- CScalableBar *m_ScalableBar;
-
- CScalingListener *m_ScalingListener;
-};
-#endif // INCLUDED_SCALABLE_SCROLLER_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/ScalableScrollerBar.cpp b/src/Authoring/Studio/Palettes/Timeline/ScalableScrollerBar.cpp
deleted file mode 100644
index f0822f0f..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/ScalableScrollerBar.cpp
+++ /dev/null
@@ -1,348 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "stdafx.h"
-
-#include "ScrollerBackground.h"
-#include "ScalableScrollerBar.h"
-#include "ScalableScroller.h"
-#include "Renderer.h"
-#include "MouseCursor.h"
-#include "ResourceCache.h"
-
-#include <QApplication>
-
-//=============================================================================
-/**
- * Creates a new ThumbTab (the scalable ends of the thumb).
- * @param inThumb the thumb this belongs to.
- * @param inIsRight true if this is the right side, false for left.
- * @param inBar the ScalableBar this belongs to.
- */
-CScalableThumbTab::CScalableThumbTab(CScalableThumb *inThumb, bool inIsRightTab,
- CScalableBar *inBar)
- : m_Bar(inBar)
- , m_IsMouseDown(false)
- , m_IsRightTab(inIsRightTab)
-{
- m_Thumb = inThumb;
-}
-
-CScalableThumbTab::~CScalableThumbTab()
-{
-}
-
-//=============================================================================
-/**
- * MouseOver handler, modifies the cursor.
- * @param inPoint the mouse location.
- * @param inFlags the mouse state.
- */
-void CScalableThumbTab::OnMouseOver(CPt inPoint, Qt::KeyboardModifiers inFlags)
-{
- CControl::OnMouseOver(inPoint, inFlags);
-
- setCursorIfNotSet(CMouseCursor::CURSOR_RESIZE_LEFTRIGHT);
- Invalidate();
-}
-
-//=============================================================================
-/**
- * Mouse out handler, invalidates the control to clear the mouse over drawing.
- * @param inPoint the location of the mouse.
- * @param inFlags the state of the mouse.
- */
-void CScalableThumbTab::OnMouseOut(CPt inPoint, Qt::KeyboardModifiers inFlags)
-{
- CControl::OnMouseOut(inPoint, inFlags);
-
- if (!m_IsMouseDown)
- resetCursor();
-
- Invalidate();
-}
-
-//=============================================================================
-/**
- * Mouse move handlers, if this was clicked on then drags the control.
- * @param inPoint the location of the mouse.
- * @param inFlags the state of the mouse.
- */
-void CScalableThumbTab::OnMouseMove(CPt inPoint, Qt::KeyboardModifiers inFlags)
-{
- CControl::OnMouseMove(inPoint, inFlags);
-
- // Only drag if this was clicked on
- if (m_IsMouseDown) {
- long theDiff = inPoint.x - m_MouseDownLoc.x;
- // Fire the scaling event for the delta size.
- if (m_IsRightTab)
- m_Bar->OnScalingRight(theDiff);
- else
- m_Bar->OnScalingLeft(theDiff);
- }
-
- CRct theRect(GetSize());
- if (theRect.IsInRect(inPoint))
- setCursorIfNotSet(CMouseCursor::CURSOR_RESIZE_LEFTRIGHT);
-}
-
-//=============================================================================
-/**
- * Mouse click handler, starts resizing the control.
- * @param inPoint the location of the mouse.
- * @param inFlags the state of the mouse.
- */
-bool CScalableThumbTab::OnMouseDown(CPt inPoint, Qt::KeyboardModifiers inFlags)
-{
- CControl::OnMouseDown(inPoint, inFlags);
-
- setCursorIfNotSet(CMouseCursor::CURSOR_RESIZE_LEFTRIGHT);
- m_IsMouseDown = true;
- m_MouseDownLoc = inPoint;
-
- return true;
-}
-
-//=============================================================================
-/**
- * Mouse up handler, ends resizing this control.
- * @param inPoint the location of the mouse.
- * @param inFlags the state of the mouse.
- */
-void CScalableThumbTab::OnMouseUp(CPt inPoint, Qt::KeyboardModifiers inFlags)
-{
- CControl::OnMouseUp(inPoint, inFlags);
-
- resetCursor();
-
- m_IsMouseDown = false;
-}
-
-//=============================================================================
-/**
- * Draw this control.
- * @param inRenderer the renderer to draw to.
- */
-void CScalableThumbTab::Draw(CRenderer *inRenderer)
-{
- CPt theSize = GetSize();
- CRct theRect(theSize);
-
- inRenderer->FillSolidRect(theRect, CStudioPreferences::GetScrollThumbHighlightColor());
-}
-
-//=============================================================================
-/**
- * Create a scalable thumb, this is the dragging component of the bar.
- * @param inScrollerBar the bar this belongs to.
- */
-CScalableThumb::CScalableThumb(CScalableBar *inScrollerBar)
- : CScrollerThumb(inScrollerBar)
- , m_LeftTab(this, false, inScrollerBar)
- , m_RightTab(this, true, inScrollerBar)
-{
- m_ScrollerBar = inScrollerBar;
-
- m_LeftTab.SetPosition(CPt(0, 0));
-
- AddChild(&m_LeftTab);
- AddChild(&m_RightTab);
-}
-
-CScalableThumb::~CScalableThumb()
-{
-}
-
-//=============================================================================
-/**
- * Set the size of this component, overrides to update the location of the tabs.
- * @param inSize the new size of this control.
- */
-void CScalableThumb::SetSize(CPt inSize)
-{
- CScrollerThumb::SetSize(inSize);
- m_LeftTab.SetSize(CPt(7, inSize.y));
- m_RightTab.SetSize(CPt(7, inSize.y));
- m_RightTab.SetPosition(CPt(inSize.x - m_RightTab.GetSize().x, 0));
-}
-
-//=============================================================================
-/**
- * On double click this sends off a reset scaling notification.
- * @param inPoint the mouse location.
- * @param inFlags the state of the mouse.
- */
-bool CScalableThumb::OnMouseDoubleClick(CPt inPoint, Qt::KeyboardModifiers inFlags)
-{
- if (!CControl::OnMouseDoubleClick(inPoint, inFlags))
- m_ScrollerBar->OnScalingReset();
-
- return true;
-}
-
-//=============================================================================
-/**
- * Creates a new scalable scroller bar.
- * This object can only be used for horizontal scrolling.
- * @param inScroller the scalable scroller this is operating on.
- */
-CScalableBar::CScalableBar(CScalableScroller *inScroller)
- : CScrollerBar(inScroller, false)
- , m_ScalableScroller(inScroller)
- , m_Listener(nullptr)
- , m_Thumb(nullptr)
-{
- Initialize();
-}
-
-CScalableBar::~CScalableBar()
-{
-}
-
-//=============================================================================
-/**
- * Create a new thumb control.
- * This method is here so the ScalableBar can override it and return the Scalable
- * Thumb instead of a normal thumb.
- */
-CControl *CScalableBar::CreateThumb()
-{
- if (m_Thumb == nullptr)
- m_Thumb = new CScalableThumb(this);
- return m_Thumb;
-}
-
-//=============================================================================
-/**
- * This control is not allowed to become disabled (it should always allow scaling).
- * @param inIsEnabled ignored.
- */
-void CScalableBar::SetEnabled(bool inIsEnabled)
-{
- Q_UNUSED(inIsEnabled);
- CControl::SetEnabled(true);
-}
-
-//=============================================================================
-/**
- * Set the single scaling listener that is to carry out the actual scaling work.
- * @param inListener the scaling listener, there is only one.
- */
-void CScalableBar::SetScalingListener(CScalingListener *inListener)
-{
- m_Listener = inListener;
-}
-
-//=============================================================================
-/**
- * Event from the left ThumbTab that it is scaling.
- * @param inAmount the amount that the left ThumbTab is being scaled by.
- */
-void CScalableBar::OnScalingLeft(long inAmount)
-{
- CPt theLoc = m_Thumb->GetPosition();
- CPt theSize = m_Thumb->GetSize();
-
- // Don't let the loc go before the end of the control.
- if (theLoc.x + inAmount < 0)
- inAmount = -theLoc.x;
-
- // Anchors the scroller position when its size reaches the minimum size
- // The algorithm does not modify the inAmount as the scale can be further reduced,
- // when the scroller reaches the minimum size.
-
- CPt thePreviousPosition;
- bool theAnchor = false;
- if (theSize.x - inAmount < m_Thumb->GetMinimumSize().x) {
- thePreviousPosition = m_Thumb->GetPosition();
- theAnchor = true;
- }
-
- // Tell the listener of the scaling, it's the listener that will do the actual scaling work.
- if (m_Listener != nullptr)
- m_Listener->OnScalingLeft(theSize.x - inAmount, m_Background->GetSize().x,
- m_Thumb->GetPosition().x + inAmount);
-
- // When the Anchor flag is true (i.e. when the scroller has reach its minimum size), stop the
- // scroller
- // from moving by restoring its previous position.
- if (theAnchor) {
- m_Thumb->SetPosition(thePreviousPosition);
- }
-
- Invalidate();
-}
-
-//=============================================================================
-/**
- * Event from the right ThumbTab that it is scaling.
- * @param inAmount the amount that the left ThumbTab is being scaled by.
- */
-void CScalableBar::OnScalingRight(long inAmount)
-{
- CPt theLoc = m_Thumb->GetPosition();
- CPt theSize = m_Thumb->GetSize();
- // Don't let the loc go after the end of the control.
- if (theLoc.x + theSize.x + inAmount > m_Background->GetSize().x)
- inAmount = m_Background->GetSize().x - (theLoc.x + theSize.x);
-
- // Anchors the scroller position when its size reaches the minimum size
- // The algorithm does not modify the inAmount as the scale can be further reduced,
- // when the scroller reaches the minimum size.
-
- CPt thePreviousPosition;
- bool theAnchor = false;
- if (theSize.x + inAmount < m_Thumb->GetMinimumSize().x) {
- thePreviousPosition = m_Thumb->GetPosition();
- theAnchor = true;
- }
-
- // Tell the listener of the scaling, it's the listener that will do the actual scaling work.
- if (m_Listener != nullptr)
- m_Listener->OnScalingRight(theSize.x + inAmount, m_Background->GetSize().x,
- m_Thumb->GetPosition().x);
-
- // When the Anchor flag is true (i.e. when the scroller has reach its minimum size), stop the
- // scroller
- // from moving by restoring its previous position.
- if (theAnchor) {
- m_Thumb->SetPosition(thePreviousPosition);
- }
- Invalidate();
-}
-
-//=============================================================================
-/**
- * Handles scaling reset messages commands, just routes them to the listener.
- */
-void CScalableBar::OnScalingReset()
-{
- m_Listener->OnScalingReset();
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/ScalableScrollerBar.h b/src/Authoring/Studio/Palettes/Timeline/ScalableScrollerBar.h
deleted file mode 100644
index afc0ef1e..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/ScalableScrollerBar.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_SCALABLE_SCROLLER_BAR_H
-#define INCLUDED_SCALABLE_SCROLLER_BAR_H 1
-
-#pragma once
-
-#include "ScrollerThumb.h"
-#include "ScrollerBar.h"
-
-#include <QCursor>
-
-class CScalableBar;
-class CScalableScroller;
-class CScalableThumb;
-
-class CScalingListener
-{
-public:
- virtual void OnScalingLeft(long inLength, long inTotalLength, long inOffset) = 0;
- virtual void OnScalingRight(long inLength, long inTotalLength, long inOffset) = 0;
- virtual void OnScalingReset() = 0;
-};
-
-class CScalableThumbTab : public CControl
-{
-public:
- CScalableThumbTab(CScalableThumb *inThumb, bool inIsRightTab, CScalableBar *inBar);
- virtual ~CScalableThumbTab();
-
- void Draw(CRenderer *inRenderer) override;
-
- void OnMouseOver(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
- void OnMouseOut(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
- void OnMouseMove(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
- bool OnMouseDown(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
- void OnMouseUp(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
-
-protected:
- CScalableThumb *m_Thumb;
- CScalableBar *m_Bar;
- bool m_IsMouseDown;
- bool m_IsRightTab;
- CPt m_MouseDownLoc;
-};
-
-class CScalableThumb : public CScrollerThumb
-{
-public:
- CScalableThumb(CScalableBar *inScrollerBar);
- virtual ~CScalableThumb();
-
- void SetSize(CPt inSize) override;
- bool OnMouseDoubleClick(CPt inPoint, Qt::KeyboardModifiers inFlags) override;
-
-protected:
- CScalableBar *m_ScrollerBar;
- CScalableThumbTab m_LeftTab;
- CScalableThumbTab m_RightTab;
-};
-
-class CScalableBar : public CScrollerBar
-{
-public:
- CScalableBar(CScalableScroller *inScroller);
- virtual ~CScalableBar();
-
- void SetEnabled(bool inIsEnabled) override;
-
- void SetScalingListener(CScalingListener *inListener);
-
- void OnScalingRight(long inAmount);
- void OnScalingLeft(long inAmount);
- void OnScalingReset();
-
-protected:
- CControl *CreateThumb() override;
-
- CScalableScroller *m_ScalableScroller;
-
- CScalingListener *m_Listener;
- CScalableThumb *m_Thumb;
-};
-
-#endif // INCLUDED_SCALABLE_SCROLLER_BAR_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/SlideRow.cpp b/src/Authoring/Studio/Palettes/Timeline/SlideRow.cpp
deleted file mode 100644
index 04dfe7fc..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/SlideRow.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "stdafx.h"
-
-#include "SlideRow.h"
-#include "ColorControl.h"
-#include "Bindings/ITimelineItemBinding.h"
-
-CSlideRow::CSlideRow(CTimelineRow *parent)
- : CBaseStateRow(parent)
-{
-}
-
-CSlideRow::~CSlideRow()
-{
-}
-
-//=============================================================================
-/**
- * Expand this node of the tree control.
- * This will display all children the fit the filter.
- */
-void CSlideRow::Expand(bool inExpandAll /*= false*/, bool inExpandUp)
-{
- if (!m_Loaded) {
- m_Loaded = true;
- LoadChildren();
- }
-
- CBaseStateRow::Expand(inExpandAll, inExpandUp);
-}
-
-//=============================================================================
-/**
- * This do not 'contribute' to its child's active start time
- */
-bool CSlideRow::CalculateActiveStartTime()
-{
- return false;
-}
-//=============================================================================
-/**
- * This do not 'contribute' to its child's active end time
- */
-bool CSlideRow::CalculateActiveEndTime()
-{
- return false;
-}
-
-bool CSlideRow::PerformFilter(const CFilter &inFilter)
-{
- Q_UNUSED(inFilter);
- return true;
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/SlideRow.h b/src/Authoring/Studio/Palettes/Timeline/SlideRow.h
deleted file mode 100644
index cccc550c..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/SlideRow.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_TIME_CONTEXT_ROW_H
-#define INCLUDED_TIME_CONTEXT_ROW_H 1
-
-#pragma once
-
-#include "BaseStateRow.h"
-
-class ISnappingListProvider;
-class ITimelineControl;
-
-class CSlideRow : public CBaseStateRow
-{
- Q_OBJECT
-public:
- CSlideRow(CTimelineRow *parent);
- virtual ~CSlideRow();
-
- // BaseStateRow
- void Expand(bool inExpandAll = false, bool inExpandUp = false) override;
- bool CalculateActiveStartTime() override;
- bool CalculateActiveEndTime() override;
-
-protected:
- // CBaseStateRow
- bool PerformFilter(const CFilter &inFilter) override;
-
-};
-#endif // INCLUDED_TIME_CONTEXT_ROW_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/Snapper.cpp b/src/Authoring/Studio/Palettes/Timeline/Snapper.cpp
deleted file mode 100644
index 2b405e70..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/Snapper.cpp
+++ /dev/null
@@ -1,455 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "stdafx.h"
-
-#include "Snapper.h"
-#include "StudioPreferences.h"
-#include "Control.h"
-#include "CoreUtils.h"
-#include "StudioUtils.h"
-#include "HotKeys.h"
-
-//=============================================================================
-/**
- * Create a new snapper object.
- * @param inTimeRatio the default time ratio.
- */
-CSnapper::CSnapper(double inTimeRatio)
- : m_theStartTime(0)
- , m_theEndTime(0)
- , m_TimeRatio(inTimeRatio)
- , m_IsSnappingKeyframes(false)
- , m_IsSnappingSelectedKeyframes(true)
- , m_Offset(0)
- , m_StartHeight(0)
- , m_EndHeight(0)
- , m_PeriodicInterval(LONG_MAX)
- , m_InitialOffset(0)
- , m_ObjectTimeOffset(0)
- , m_TimeOffset(0)
- , m_KeyFrameClicked(false)
- , m_Source(nullptr)
-{
- SetSnappingDistance(CStudioPreferences::GetSnapRange());
-}
-
-CSnapper::~CSnapper()
-{
-}
-//=============================================================================
-/**
- * Set if keyframe is clicked
- * @param inKeyFrameClicked toggles snapping to end handles at 1 pixel range,
- * if true.
- */
-void CSnapper::SetKeyFrameClicked(bool inKeyFrameClicked)
-{
- m_KeyFrameClicked = inKeyFrameClicked;
-}
-//=============================================================================
-/**
- * Clear all the snapping points from this.
- * This effectively erases this object.
- */
-void CSnapper::Clear()
-{
- m_PeriodicInterval = LONG_MAX;
- m_Times.clear();
- m_KeyFrameClicked = false;
- SetSnappingDistance(CStudioPreferences::GetSnapRange());
-}
-
-//=============================================================================
-/**
- * Add a snapping point at the specified time.
- * @param inTime the time to add the point at.
- */
-void CSnapper::AddTime(long inTime)
-{
- m_Times.insert(inTime);
-}
-
-//=============================================================================
-/**
- * Add a snapping point at the specified pixel location.
- * @param inPosition the position of the snapping point to add.
- */
-void CSnapper::AddPixelLocation(long inPosition)
-{
- AddTime(::PosToTime(inPosition, m_TimeRatio));
-}
-
-//=============================================================================
-/**
- * Set whether or not keyframes should be added as snapping points.
- * @param true if keyframes should be added as snapping points.
- */
-void CSnapper::SetSnappingKeyframes(bool inIsSnappingKeyframes)
-{
- m_IsSnappingKeyframes = inIsSnappingKeyframes;
-}
-
-//=============================================================================
-/**
- * Checks whether or not keyframes are being snapped to.
- * @return true if keyframes should be snapped to.
- */
-bool CSnapper::IsSnappingKeyframes()
-{
- return m_IsSnappingKeyframes;
-}
-
-//=============================================================================
-/**
- * Sets whether or not selected keyframes are being snapped to.
- * This is used to ignore all selected keyframes when keyframes are being
- * dragged.
- * @param inIsSnappingSelectedKeyframes true if selected keys should be snapped.
- */
-void CSnapper::SetSnappingSelectedKeyframes(bool inIsSnappingSelectedKeyframes)
-{
- m_IsSnappingSelectedKeyframes = inIsSnappingSelectedKeyframes;
-}
-
-//=============================================================================
-/**
- * Checks whether or not selected keyframes are being snapped to.
- * This is used to ignore all selected keyframes when keyframes are being
- * dragged.
- * @return true if selected keyframes should be snapping points.
- */
-bool CSnapper::IsSnappingSelectedKeyframes()
-{
- return m_IsSnappingKeyframes && m_IsSnappingSelectedKeyframes;
-}
-
-//=============================================================================
-/**
- * Set the current time ratio.
- * This will effect all time based positions as well as the intervals. It is
- * suggested that this is called on an empty snapper when possible for speed.
- * @param inTimeRatio the new time ratio.
- */
-void CSnapper::SetTimeRatio(double inTimeRatio)
-{
- m_SnapDistance = ::dtol(m_SnapDistance * m_TimeRatio / inTimeRatio);
- m_TimeRatio = inTimeRatio;
-}
-
-//=============================================================================
-/**
- * Set the visible area of this snapper.
- * This is used to limit snapping to visible areas only. The visibility limit
- * is only on vertical because the user can scroll horizontally and expose
- * previously non visible objects. The heights are relative to the initial
- * offset and
- * @param inStartHeight the minimum height for visibility.
- * @param inEndHeight the maximum height for visibility.
- */
-void CSnapper::SetVisibleArea(long inStartHeight, long inEndHeight)
-{
- m_StartHeight = inStartHeight;
- m_EndHeight = inEndHeight;
-}
-
-//=============================================================================
-/**
- * Push an offset into this for calculating later visibilities.
- * This is accumulated with previous offsets.
- * @param inHeight the amount to modify the offset by.
- */
-void CSnapper::PushOffset(long inHeight)
-{
- m_Offsets.push_back(inHeight);
- m_Offset += inHeight;
-}
-
-//=============================================================================
-/**
- * Remove an offset that was pushed on.
- * This will update the current offset to be what it was before the push.
- */
-void CSnapper::PopOffset()
-{
- m_Offset -= m_Offsets.back();
- m_Offsets.pop_back();
-}
-
-//=============================================================================
-/**
- * Checks to see if an object at inPosition of height inHeight is visible.
- * This uses the current offset with the visible area to check visibility.
- * @param inPosition the position of the object to be checked.
- * @param inHeight the height of the object to be checked.
- */
-bool CSnapper::IsVisible(long inPosition, long inHeight)
-{
- return (inPosition + m_Offset < m_EndHeight
- && inPosition + m_Offset + inHeight > m_StartHeight);
-}
-
-//=============================================================================
-/**
- * Add a periodic interval to the snapping points.
- * This will make snapping points at every multiple of inInterval. The interval
- * starts at time 0.
- * @param inInterval time in millis for the periodic points.
- */
-void CSnapper::SetPeriodicInterval(long inInterval)
-{
- m_PeriodicInterval = inInterval;
-}
-
-//=============================================================================
-/**
- * Interpret the given position into a snapped/nonsnapped position.
- * This will use the inFlags to determine whether or not this should be snapping
- * and uses inPosition to figure out the closest snapping position. If the
- * closest position is not within the tolerances then inPosition will be
- * returned.
- * @param inPosition to position to check for snapping.
- * @param inFlags the mouse state flags, to determine whether or not snapping.
- */
-bool CSnapper::InterpretTimeEx(long &ioTime, long inFlags)
-{
- // Only snap if shift key is down.
- if (inFlags & CHotKeys::MODIFIER_SHIFT)
- return GetSnapTime(ioTime, true);
- else
- return GetSnapTime(ioTime, false);
-}
-
-//=============================================================================
-/**
- * Interpret the given position into a snapped/nonsnapped position.
- * This will use the inFlags to determine whether or not this should be snapping
- * and uses inPosition to figure out the closest snapping position. If the
- * closest position is not within the tolerances then inPosition will be
- * returned.
- * @param inPosition to position to check for snapping.
- * @param inFlags the mouse state flags, to determine whether or not snapping.
- */
-long CSnapper::InterpretTime(long inTime, long inFlags)
-{
- if (inFlags & CHotKeys::MODIFIER_SHIFT) {
- GetSnapTime(inTime, true);
- return inTime;
- }
- GetSnapTime(inTime, false);
- return inTime;
-}
-
-//=============================================================================
-/**
- * Set the maximum distance that snapping will occur at.
- * This sets the maximum tolerances for a position to be away from a snapping
- * point and still get snapped to it.
- * @param inSnapDistance the snap distance, in pixels.
- */
-void CSnapper::SetSnappingDistance(long inSnapDistance)
-{
- m_SnapDistance = ::dtol(inSnapDistance / m_TimeRatio);
-}
-
-//=============================================================================
-/**
- * Helper method to find the closer of two values to a third.
- * If both values are the same distance then the first value will be returned.
- * @param inFirst the first value to check the distance to inBase.
- * @param inSecond the second value to check the distance to inBase.
- * @param inBase the value the others are being compared to.
- * @return the value, either first or second, that is closest to inBase.
- */
-long GetClosestValue(long inFirst, long inSecond, long inBase)
-{
- return (::labs(inFirst - inBase) <= ::labs(inSecond - inBase)) ? inFirst : inSecond;
-}
-
-//=============================================================================
-/**
- * Given the current time, it is adjusted if necessary to snap.
- * @param ioTime the current time on input; on output the adjusted time
- * @param inShiftKeyDown true if the shift key was down, otherwise false
- * @return true if a snap occurred, otherwise false
- */
-bool CSnapper::GetSnapTime(long &ioTime, bool inShiftKeyDown)
-{
- bool theReturnValue = false;
-
- if (inShiftKeyDown) // If user hits the shift key (i.e. snapping is toggled on)
- {
- long thePreviousTime = 0;
- long theNextTime = 0;
-
- // Go through all the snapping positions finding the positions on either
- // side of ioPosition. Bsically just loop through until a snap position
- // is larger than in position and use that with the previous value to get
- // the closest snapping location.
- TTimeList::iterator thePos = m_Times.begin();
- for (; thePos != m_Times.end(); ++thePos) {
- thePreviousTime = theNextTime;
- theNextTime = (*thePos);
-
- // Don't need to go any further because we've hit the first point larget than
- // ioPosition.
- if (theNextTime >= ioTime) {
- break;
- }
- }
-
- // Use the last snap position less than ioPosition and the first snap position greater than
- // ioPosition
- // to find the closest of the two.
- long theClosestTime = GetClosestValue(thePreviousTime, theNextTime, ioTime);
- long theClosestInterval = GetClosestPeriodicInterval(ioTime);
-
- // Get the closest snapping position between the periodic interval and the position
- theClosestTime = GetClosestValue(theClosestTime, theClosestInterval, ioTime);
-
- // If the closest position is within tolerances then use it, otherwise return the original
- // value.
- if (::labs(theClosestTime - ioTime) <= m_SnapDistance) {
- ioTime = theClosestTime;
- theReturnValue = true;
- }
- } else // If user does not hit the shift key (i.e. snapping is toggled off)
- {
- // Snap to end handles at 1 pixel range if the current object dragged
- // is a keyframe
- if (m_KeyFrameClicked) {
- // Returns if the startTime or the endTime of a Time Bar is closer to the dragged
- // keyframe
- long theClosestTime = GetClosestValue(m_theStartTime, m_theEndTime, ioTime);
-
- // Set snapping range to 1 pixel and converts it to time.
- // The snapping range of 1 pixel applies for keyframes that are dragged really
- // close to the end handles.
- long thePixel = 1;
- long theTime = ::dtol(thePixel / m_TimeRatio);
-
- // Determines if the closest time is within 1 pixel range
- // If so returns the closest time, which is the snapping time, and true indicating
- // that snapping occurs.
- if (::labs(theClosestTime - ioTime) <= theTime) {
- ioTime = theClosestTime;
- theReturnValue = true;
- }
- }
- }
-
- return theReturnValue;
-}
-//=============================================================================
-/**
- * Get the closest periodic interval to inPosition.
- * Since it is too expensive to store every possible periodic interval in the
- * snapping list, this just dynamically figures out the closest periodic
- * interval.
- */
-void CSnapper::SetStartEndTime(long theStartTime, long theEndTime)
-{
- m_theStartTime = theStartTime;
- m_theEndTime = theEndTime;
-}
-//=============================================================================
-/**
- * Get the closest periodic interval to inPosition.
- * Since it is too expensive to store every possible periodic interval in the
- * snapping list, this just dynamically figures out the closest periodic
- * interval.
- */
-long CSnapper::GetClosestPeriodicInterval(long inTime)
-{
- long theIntervalLow = inTime / m_PeriodicInterval * m_PeriodicInterval;
- long theIntervalHigh = (inTime / m_PeriodicInterval + 1) * m_PeriodicInterval;
-
- return GetClosestValue(theIntervalLow, theIntervalHigh, inTime);
-}
-
-//=============================================================================
-/**
- * Used to pass off snapping logic to this for objects being dragged.
- * This does all the work of an object when the object itself is being dragged
- * and it's position is being modified by the drag, but it needs to be snapped
- * as well. It is not necessary to call this unless ProcessDrag is being
- * used.
- * @param inClickPosition the mouse click location, usually just inPoint.x.
- * @param inCenterOffset the center of the object where it should be snapped to.
- */
-void CSnapper::BeginDrag(long inClickLocation, long inCenterTimeOffset)
-{
- m_InitialOffset = inClickLocation;
- m_ObjectTimeOffset = inCenterTimeOffset;
-}
-
-//=============================================================================
-/**
- * Process an object's drag event and figure out where the object should be.
- * This does all the work of figuring out where the object should be snapped
- * to. It is not necessary to call this, but it may make implementing snapping
- * much easier. BeginDrag needs to be called on OnMouseDown to use this.
- * @param inPosition the position of the mouse, GetPosition( ).x + inPoint.x.
- * @param inFlags the mouse state flags, used to determine snapping state.
- */
-long CSnapper::ProcessDrag(long inTime, long inOffset, long inFlags)
-{
- long theModPos = inTime + m_TimeOffset + ::dtol((inOffset - m_InitialOffset) / m_TimeRatio);
- InterpretTimeEx(theModPos, inFlags);
- theModPos -= m_TimeOffset;
-
- return theModPos;
-}
-
-//=============================================================================
-/**
- * Set the source for this Snapper object.
- * This is so that objects may choose to no add themselves to snapping lists
- * that they originated. This is only meant for comparison with the 'this' ptr.
- * @param inSource the source object for this snapping list.
- */
-void CSnapper::SetSource(void *inSource)
-{
- m_Source = inSource;
-}
-
-//=============================================================================
-/**
- * Get the source for this snapper object.
- * @return the source of the snapping.
- */
-void *CSnapper::GetSource()
-{
- return m_Source;
-}
-
-void CSnapper::SetTimeOffset(long inTimeOffset)
-{
- m_TimeOffset = inTimeOffset;
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/Snapper.h b/src/Authoring/Studio/Palettes/Timeline/Snapper.h
deleted file mode 100644
index ea230bc0..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/Snapper.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_SNAPPER_H
-#define INCLUDED_SNAPPER_H 1
-
-#pragma once
-
-#include <set>
-#include <vector>
-
-class CSnapper
-{
- typedef std::set<long> TTimeList;
- typedef std::vector<long> TOffsetList;
-
-public:
- CSnapper(double inTimeRatio = .1);
- virtual ~CSnapper();
-
- void AddTime(long inTime);
- void AddPixelLocation(long inPixelLoc);
-
- void SetSnappingKeyframes(bool inIsSnappingKeyframes);
- bool IsSnappingKeyframes();
- void SetSnappingSelectedKeyframes(bool inIsSnappingSelectedKeyframes);
- bool IsSnappingSelectedKeyframes();
-
- void Clear();
-
- void SetVisibleArea(long inStartHeight, long inEndHeight);
- void PushOffset(long inHeight);
- void PopOffset();
- bool IsVisible(long inPosition, long inHeight);
-
- void SetTimeRatio(double inTimeRatio);
-
- void SetPeriodicInterval(long inInterval);
-
- bool InterpretTimeEx(long &ioTime, long inFlags);
- long InterpretTime(long inTime, long inFlags);
-
- void SetSnappingDistance(long inSnapDistance);
-
- void BeginDrag(long inPosition, long inOffset = 0);
- long ProcessDrag(long inTime, long inPosition, long inFlags);
-
- void SetSource(void *inSource);
- void *GetSource();
-
- void SetTimeOffset(long inTimeOffset);
- void SetStartEndTime(long theStartTime, long theEndTime);
- void SetKeyFrameClicked(bool inKeyFrameClicked);
-
-protected:
- bool GetSnapTime(long &inTime, bool inShiftKeyDown);
- long GetClosestPeriodicInterval(long inTime);
-
- long m_theStartTime;
- long m_theEndTime;
-
- TTimeList m_Times;
- TOffsetList m_Offsets;
-
- double m_TimeRatio;
-
- bool m_IsSnappingKeyframes;
- bool m_IsSnappingSelectedKeyframes;
- long m_Offset;
- long m_StartHeight;
- long m_EndHeight;
- long m_SnapDistance;
-
- long m_PeriodicInterval;
-
- long m_InitialOffset;
- long m_ObjectTimeOffset;
- long m_TimeOffset;
- bool m_KeyFrameClicked;
- void *m_Source;
-};
-
-// Interface that will provider the info for snapping logic in the timebars and keyframes
-class ISnappingListProvider
-{
-public:
- virtual ~ISnappingListProvider() {}
-
- virtual void PopulateSnappingList(CSnapper *inSnappingList) = 0;
-};
-
-#endif // INCLUDED_SNAPPER_H \ No newline at end of file
diff --git a/src/Authoring/Studio/Palettes/Timeline/StateRow.cpp b/src/Authoring/Studio/Palettes/Timeline/StateRow.cpp
deleted file mode 100644
index 7e21b29b..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/StateRow.cpp
+++ /dev/null
@@ -1,218 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//==============================================================================
-// Prefix
-//==============================================================================
-
-#include "stdafx.h"
-
-//==============================================================================
-// Includes
-//==============================================================================
-#include "StateRow.h"
-#include "PropertyRow.h"
-#include "Bindings/ITimelineItemBinding.h"
-
-//=============================================================================
-/**
- * Creates a new CStateRow for the Asset.
- * @param inParentRow the parent of this row.
- */
-CStateRow::CStateRow(CBaseStateRow *inParentRow, bool loaded)
- : CBaseStateRow(inParentRow, loaded)
-{
- m_ParentRow = inParentRow;
-}
-
-CStateRow::~CStateRow()
-{
-}
-
-//=============================================================================
-/**
- * Initialize this object.
- * This must be called after construction and may only be called once.
- */
-void CStateRow::Initialize(ITimelineItemBinding *inTimelineItemBinding)
-{
- CBaseStateRow::Initialize(inTimelineItemBinding);
-
- // cache these numbers. I believe caching these numbers is to avoid having to incur expensive
- // recursive calculations on ever draw.
- CalculateActiveStartTime();
- CalculateActiveEndTime();
-
- if (GetTimelineItem()->IsExpanded()) // this is stored for the current opened presentation and
- // conveniently help you remember the last view before you
- // switch slides.
- Expand();
- // sk - Delay loading till this is expanded. I think it makes more sense to not have to incur
- // work till the UI needs to be displayed
- // Plus it would not work now since the parent always needs to be 'fully' initialized for the
- //SnappingListProvider, prior to any child creation.
- // else
- // LoadChildren( );
-}
-
-//=============================================================================
-/**
- * Expand this node of the tree control.
- * This will display all children the fit the filter.
- */
-void CStateRow::Expand(bool inExpandAll /*= false*/, bool inExpandUp)
-{
- // Only RecalcLayout if loaded children or expanded.
- bool theDoRecalLayout = !m_Loaded;
-
- if (!m_Loaded)
- LoadChildren();
-
- bool theWasExpanded = m_IsExpanded;
- CBaseStateRow::Expand(inExpandAll, inExpandUp);
- // Check if this is expanded
- theDoRecalLayout |= (theWasExpanded != m_IsExpanded);
- GetTimelineItem()->SetExpanded(
- m_IsExpanded); // remember this setting so that it persist when this row is recreated
-
- if (theDoRecalLayout)
- emit layoutRecalcRequested();
-}
-
-//=============================================================================
-/**
- * Collapse this node of the tree control.
- * This will hide all children of this control.
- */
-void CStateRow::Collapse(bool inCollapseAll /* = false */)
-{
- bool theWasExpanded = m_IsExpanded;
- CBaseStateRow::Collapse(inCollapseAll);
-
- GetTimelineItem()->SetExpanded(
- m_IsExpanded); // remember this setting so that it persist when this row is recreated
- // only RecalcLayout if this is collapsed
- if (theWasExpanded != m_IsExpanded)
- emit layoutRecalcRequested();
-}
-
-bool CStateRow::PerformFilter(const CFilter &inFilter)
-{
- return inFilter.Filter(m_TimelineItemBinding->GetTimelineItem());
-}
-
-bool CStateRow::HasVisibleChildren()
-{
- if (!m_Loaded) {
- CTimelineItemOrderedIterator theChildren(m_TimelineItemBinding);
- // Return true if has children but do not load the children.
- if (!theChildren.IsDone()) {
- return true;
- }
- CTimelineItemPropertyIterator theProperties(m_TimelineItemBinding);
- if (!theProperties.IsDone()) {
- return true;
- }
- }
- return CBaseStateRow::HasVisibleChildren();
-}
-
-void CStateRow::OnTimeChange()
-{
- CalculateActiveStartTime();
- CalculateActiveEndTime();
-
- // sk - I don't see the need to DoTimelineRecalcLayout here, because that is usually when height
- // of the control change
- // this should just change width.. but maybe I am missing something, so I am leaving this
- //here for 'easy' debugging
- // emit layoutRecalcRequested();
-
- emit timeChanged();
-}
-
-//=============================================================================
-/**
- * calculate the active start time... this function set the active start to its
- * parent's start time if it comes after the objects start time
- */
-bool CStateRow::CalculateActiveStartTime()
-{
- long theRetVal = GetStartTime();
-
- if (m_ParentRow) {
- if (m_ParentRow->CalculateActiveStartTime()) {
- long theParentActiveStart = m_ParentRow->GetActiveStart();
- if (theParentActiveStart > theRetVal)
- theRetVal = theParentActiveStart;
- }
- }
- m_ActiveStart = theRetVal;
- return true;
-}
-
-//=============================================================================
-/**
- * calculate the active end time... this function set the active end to its
- * parent's end time if it comes before the objects end time
- */
-bool CStateRow::CalculateActiveEndTime()
-{
- long theRetVal = GetEndTime();
- if (m_ParentRow) {
- if (m_ParentRow->CalculateActiveEndTime()) {
- long theParentActiveEnd = m_ParentRow->GetActiveEnd();
- if (theParentActiveEnd < theRetVal)
- theRetVal = theParentActiveEnd;
- }
- }
- m_ActiveEnd = theRetVal;
- return true;
-}
-
-//==============================================================================
-/**
- *
- */
-long CStateRow::GetLatestEndTime()
-{
- if (m_IsExpanded) // if its children are not visible, they do not have any affect
- return CBaseStateRow::GetLatestEndTime();
-
- return GetActiveEnd();
-}
-
-//=============================================================================
-/**
- * Load all the properties on this object.
- */
-void CStateRow::LoadProperties()
-{
- m_TimelineItemBinding->LoadProperties();
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/StateRow.h b/src/Authoring/Studio/Palettes/Timeline/StateRow.h
deleted file mode 100644
index 46a96a51..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/StateRow.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//==============================================================================
-// Prefix
-//==============================================================================
-#ifndef INCLUDED_STATE_ROW_H
-#define INCLUDED_STATE_ROW_H 1
-
-#pragma once
-
-//==============================================================================
-// Includes
-//==============================================================================
-#include "BaseStateRow.h"
-
-//==============================================================================
-// Forwards
-//==============================================================================
-class CButtonControl;
-class CButtonDownListener;
-class CColorControl;
-class CStateTreeControl;
-class CToggleControl;
-class CPropertyRow;
-class CCmdBatch;
-class CSnapper;
-class CResImage;
-
-class CStateRow : public CBaseStateRow
-{
- Q_OBJECT
-public:
- CStateRow(CBaseStateRow *inParentRow, bool loaded = false);
- virtual ~CStateRow();
-
- using CBaseStateRow::Initialize;
- virtual void Initialize(ITimelineItemBinding *inTimelineItemBinding);
-
- void Expand(bool inExpandAll = false, bool inExpandUp = false) override;
- void Collapse(bool inCollapseAll = false) override;
- virtual void OnTimeChange();
-
- long GetLatestEndTime() override;
- bool CalculateActiveStartTime() override;
- bool CalculateActiveEndTime() override;
- bool HasVisibleChildren() override;
-
-Q_SIGNALS:
- void timeChanged();
- void layoutRecalcRequested();
-
-protected:
- bool PerformFilter(const CFilter &inFilter) override;
- void LoadProperties() override;
-};
-#endif // INCLUDED_STATE_ROW_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/StateRowFactory.cpp b/src/Authoring/Studio/Palettes/Timeline/StateRowFactory.cpp
deleted file mode 100644
index 78419f0f..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/StateRowFactory.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "stdafx.h"
-
-#include "StateRowFactory.h"
-#include "Bindings/ITimelineItemBinding.h"
-#include "StateRow.h"
-#include "TimelineUIFactory.h"
-
-//=============================================================================
-/**
- * Create the type specific StateRow for the Asset.
- * Different asset use different derivations of StateRow, and this will
- * return the proper state row for the asset.
- * @param inTimelineItem the timeline item to create the state row for.
- * @param inParentRow the parent row of the state row being created.
- * @param inSnappingListProvider For keyframe/timebar snapping
- * @return CStateRow the row that represents the state, or nullptr if it should not show up.
- */
-CStateRow *CStateRowFactory::CreateStateRow(ITimelineItemBinding *inTimelineItem,
- CBaseStateRow *inParentRow)
-{
- CStateRow *theRow = nullptr;
- if (inTimelineItem) {
- theRow = TimelineUIFactory::instance()->createStateRow(inParentRow, inTimelineItem);
- }
-
- return theRow;
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/StateRowFactory.h b/src/Authoring/Studio/Palettes/Timeline/StateRowFactory.h
deleted file mode 100644
index 2610159f..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/StateRowFactory.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_STATE_ROW_FACTORY_H
-#define INCLUDED_STATE_ROW_FACTORY_H 1
-
-#pragma once
-
-class ITimelineItemBinding;
-class CStateRow;
-class CBaseStateRow;
-class ISnappingListProvider;
-
-class CStateRowFactory
-{
-protected:
- CStateRowFactory();
- virtual ~CStateRowFactory();
-
-public:
- static CStateRow *CreateStateRow(ITimelineItemBinding *inTimelineItem, CBaseStateRow *inParent);
-};
-#endif // INCLUDED_STATE_ROW_FACTORY_H \ No newline at end of file
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimeMeasureItem.cpp b/src/Authoring/Studio/Palettes/Timeline/TimeMeasureItem.cpp
deleted file mode 100644
index 92b87390..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimeMeasureItem.cpp
+++ /dev/null
@@ -1,207 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "TimeMeasureItem.h"
-#include "CoreUtils.h"
-#include "StudioUtils.h"
-#include "StudioPreferences.h"
-
-#include <QPainter>
-
-TimeMeasureItem::TimeMeasureItem(QQuickItem *parent)
- : QQuickPaintedItem(parent)
-{
-}
-
-TimeMeasureItem::~TimeMeasureItem()
-{
-}
-
-void TimeMeasureItem::paint(QPainter *painter)
-{
- const double edgeMargin = 2;
- const double largeHashOffset = 5;
- const double mediumHashOffset = 6;
- const double smallHashOffset = 3;
-
- QPen pen(CStudioPreferences::GetRulerTickColor());
- painter->setPen(pen);
-
- long theLength = width();
- long theHeight = height() - edgeMargin;
-
- double theTotalMeasure = theLength / m_Ratio;
-
- long theNumLargeHashes = (long)(theTotalMeasure / m_LargeHashInterval) + 1;
-
- long theOffset = m_Offset - (m_Offset % ::dtol(m_LargeHashInterval));
-
- for (long i = 0; i < theNumLargeHashes + 1; ++i) {
- double theMeasure = m_LargeHashInterval * i + theOffset;
-
- long thePos = ::TimeToPos(theMeasure - m_Offset, m_Ratio);
-
- if (thePos > 0)
- painter->drawLine(thePos, theHeight, thePos, theHeight - largeHashOffset);
-
- DrawMeasureText(painter, thePos, long(theMeasure));
-
- // sanity check
- if (m_MediumHashInterval > 0) {
- thePos = ::TimeToPos(theMeasure - m_Offset + m_MediumHashInterval, m_Ratio);
- if (thePos > 0)
- painter->drawLine(thePos, theHeight, thePos, theHeight - mediumHashOffset);
-
- for (double theSmallInterval = 0; theSmallInterval < m_LargeHashInterval;
- theSmallInterval += m_SmallHashInterval) {
- thePos = ::TimeToPos(theMeasure - m_Offset + theSmallInterval, m_Ratio);
-
- if (thePos > 0)
- painter->drawLine(thePos, theHeight, thePos, theHeight - smallHashOffset);
- }
- } // if medium is valid
- }
-
- // Draw the top outline
- painter->drawLine(0, theHeight, theLength, theHeight);
-}
-
-void TimeMeasureItem::setTimeRatio(double inTimeRatio)
-{
- if (qFuzzyCompare(m_Ratio, inTimeRatio))
- return;
-
- m_Ratio = inTimeRatio;
-
- double theTimePerPixel = (double)(1 / inTimeRatio);
-
- // Only go through this if it has actually changed
- if (theTimePerPixel != m_TimePerPixel) {
- m_TimePerPixel = theTimePerPixel;
-
- // Go through the possible hash settings and find the one that best suits the
- // time per pixel.
- double theMillisPerLargeHash = theTimePerPixel * 50;
- if (theMillisPerLargeHash <= 100) // 100ms
- theMillisPerLargeHash = 100;
- else if (theMillisPerLargeHash <= 200) // 200ms
- theMillisPerLargeHash = 200;
- else if (theMillisPerLargeHash <= 500) // .5s
- theMillisPerLargeHash = 500;
- else if (theMillisPerLargeHash <= 1000) // 1s
- theMillisPerLargeHash = 1000;
- else if (theMillisPerLargeHash <= 2000) // 2s
- theMillisPerLargeHash = 2000;
- else if (theMillisPerLargeHash <= 5000) // 5s
- theMillisPerLargeHash = 5000;
- else if (theMillisPerLargeHash <= 10000) // 10s
- theMillisPerLargeHash = 10000;
- else if (theMillisPerLargeHash <= 20000) // 20s
- theMillisPerLargeHash = 20000;
- else if (theMillisPerLargeHash <= 30000) // 30s
- theMillisPerLargeHash = 30000;
- else if (theMillisPerLargeHash <= 60000) // 1m
- theMillisPerLargeHash = 60000;
- else if (theMillisPerLargeHash <= 120000) // 2m
- theMillisPerLargeHash = 120000;
- else if (theMillisPerLargeHash <= 300000) // 5m
- theMillisPerLargeHash = 300000;
- else if (theMillisPerLargeHash <= 600000) // 10m
- theMillisPerLargeHash = 600000;
- else if (theMillisPerLargeHash <= 1200000) // 20m
- theMillisPerLargeHash = 1200000;
- else if (theMillisPerLargeHash <= 1800000) // 30m
- theMillisPerLargeHash = 1800000;
- else if (theMillisPerLargeHash <= 3600000) // 1h
- theMillisPerLargeHash = 3600000;
- else
- theMillisPerLargeHash = 7200000; // 2h
-
- // Set the distances between the hashes
- m_LargeHashInterval = theMillisPerLargeHash;
- m_MediumHashInterval = theMillisPerLargeHash / 2;
- m_SmallHashInterval = theMillisPerLargeHash / 10;
-
- update();
- }
-
- emit timeRatioChanged(inTimeRatio);
-}
-
-double TimeMeasureItem::timeRatio() const
-{
- return m_Ratio;
-}
-
-void TimeMeasureItem::DrawMeasureText(QPainter *painter, long inPosition, long inMeasure) const
-{
- QString theTimeFormat(FormatTime(inMeasure));
-
- // Offset the position by half the text size to center it over the hash.
- QFontMetrics fm = painter->fontMetrics();
- const auto textSize = fm.size(Qt::TextSingleLine, theTimeFormat);
- inPosition -= ::dtol(textSize.width() / 2);
-
- QRectF rect(0, 0, width(), height());
- rect.translate(inPosition, -3);
-
- painter->drawText(rect, Qt::AlignLeft | Qt::AlignVCenter, theTimeFormat);
-}
-
-QString TimeMeasureItem::FormatTime(long inTime) const
-{
- long theHours = inTime / 3600000;
- long theMinutes = inTime % 3600000 / 60000;
- long theSeconds = inTime % 60000 / 1000;
- long theMillis = inTime % 1000;
-
- bool theHoursOnlyFlag = theHours != 0 && theMinutes == 0 && theSeconds == 0 && theMillis == 0;
- bool theMinutesOnlyFlag =
- !theHoursOnlyFlag && theMinutes != 0 && theSeconds == 0 && theMillis == 0;
- bool theSecondsOnlyFlag = !theMinutesOnlyFlag && theMillis == 0;
-
- QString theTime;
- // If only hours are being displayed then format it as hours.
- if (theHoursOnlyFlag) {
- theTime = tr("%1h").arg(theHours);
- }
- // If only minutes are being displayed then format it as minutes.
- else if (theMinutesOnlyFlag) {
- theTime = tr("%1m").arg(theMinutes);
- }
- // If only seconds are being displayed then format as seconds
- else if (theSecondsOnlyFlag) {
- theTime = tr("%1s").arg(theSeconds);
- }
- // If the intervals are correct then this should only be tenths of seconds, so do that.
- else {
- theTime = tr("0.%1s").arg(theMillis / 100);
- }
-
- return theTime;
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimeMeasureItem.h b/src/Authoring/Studio/Palettes/Timeline/TimeMeasureItem.h
deleted file mode 100644
index 5304929d..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimeMeasureItem.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef TIMEMEASUREITEM_H
-#define TIMEMEASUREITEM_H
-
-#include <QQuickPaintedItem>
-
-class TimeMeasureItem : public QQuickPaintedItem
-{
- Q_OBJECT
- Q_PROPERTY(double timeRatio READ timeRatio WRITE setTimeRatio NOTIFY timeRatioChanged)
-
-public:
- explicit TimeMeasureItem(QQuickItem *parent = nullptr);
- ~TimeMeasureItem() override;
-
- void paint(QPainter *painter) override;
-
- double timeRatio() const;
- void setTimeRatio(double timeRatio);
-
-Q_SIGNALS:
- void timeRatioChanged(double timeRatio);
-
-private:
- void DrawMeasureText(QPainter *painter, long inPosition, long inMeasure) const;
- QString FormatTime(long inTime) const;
-
- double m_SmallHashInterval = 0.0;
- double m_MediumHashInterval = 0.0;
- double m_LargeHashInterval = 0.0;
- double m_Ratio = 0.0;
- long m_Offset = 0;
- double m_TimePerPixel = 0.0;
-};
-
-#endif // TIMEMEASUREITEM_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimePropertyItem.cpp b/src/Authoring/Studio/Palettes/Timeline/TimePropertyItem.cpp
deleted file mode 100644
index df3ea28f..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimePropertyItem.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2018 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "TimePropertyItem.h"
-#include "CoreUtils.h"
-#include "StudioUtils.h"
-#include "StudioPreferences.h"
-#include "TimelineRow.h"
-#include "PropertyRow.h"
-#include "Bindings/ITimelineItemProperty.h"
-
-#include <QPainter>
-
-TimePropertyItem::TimePropertyItem(QQuickItem *parent)
- : QQuickPaintedItem(parent)
-{
-}
-
-TimePropertyItem::~TimePropertyItem()
-{
-}
-
-void TimePropertyItem::paint(QPainter *painter)
-{
- if (!m_property)
- return;
-
- static const QVector<QColor> channelColors{
- QColor(255, 0, 0),
- QColor(0, 255, 0),
- QColor(0, 0, 255),
- QColor(255, 255, 0),
- QColor(255, 0, 255),
- QColor(0, 255, 255)
- };
-
- m_MaxVal = m_property->GetMaximumValue();
- m_MinVal = m_property->GetMinimumValue();
-
- m_MinY = 10;
- m_MaxY = height() - m_MinY;
-
- painter->save();
- painter->fillRect(0, 0, width(), height(), CStudioPreferences::backgroundColor());
- long channelCount = m_property->GetChannelCount();
- // Don't want to overflow the color array
- if (channelCount <= 6) {
- // For each channel graph it.
- for (long i = 0; i < channelCount; ++i)
- drawDetailedChannel(painter, i, channelColors[i]);
- }
- painter->restore();
-}
-
-double TimePropertyItem::timeRatio() const
-{
- return m_timeRatio;
-}
-
-void TimePropertyItem::setTimeRatio(double timeRatio)
-{
- if (qFuzzyCompare(m_timeRatio, timeRatio))
- return;
-
- m_timeRatio = timeRatio;
-
- update();
- Q_EMIT timeRatioChanged(m_timeRatio);
-}
-
-CTimelineRow *TimePropertyItem::timelineRow() const
-{
- return m_timelineRow;
-}
-
-void TimePropertyItem::setTimelineRow(CTimelineRow *timelineRow)
-{
- if (timelineRow != m_timelineRow) {
- m_timelineRow = timelineRow;
- auto propertyRow = dynamic_cast<CPropertyRow*>(timelineRow);
- if (propertyRow) {
- m_property = propertyRow->GetProperty();
- } else {
- m_timelineRow = nullptr;
- m_property = nullptr;
- }
- Q_EMIT timelineRowChanged();
- }
- // intentionally request and update, as this might indicate the parent changes, eg.
- // keyframes were moved around
- update();
-}
-
-void TimePropertyItem::drawDetailedChannel(QPainter *painter, long channelIndex, const QColor &color)
-{
- painter->setPen(color);
-
-
- float theValue = m_property->GetChannelValueAtTime(channelIndex, 0);
- long theYPos = (long)((1.0 - (theValue - m_MinVal) / (m_MaxVal - m_MinVal)) * (m_MaxY - m_MinY)
- + m_MinY + .5);
-
- auto pos = QPoint(0, theYPos);
-
- long theInterval = 5;
- long theSize = width() + theInterval;
-
- for (long thePixel = 0; thePixel < theSize; thePixel += theInterval) {
- long theTime = ::PosToTime(thePixel, m_timeRatio); //(long)( thePixel / m_TimeRatio + .5 );
- theValue = m_property->GetChannelValueAtTime(channelIndex, theTime);
- theYPos = (long)((1.0 - (theValue - m_MinVal) / (m_MaxVal - m_MinVal)) * (m_MaxY - m_MinY)
- + m_MinY + .5);
-
- auto newPos = QPoint(thePixel, theYPos);
- painter->drawLine(pos, newPos);
- pos = newPos;
- }
-}
-
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimePropertyItem.h b/src/Authoring/Studio/Palettes/Timeline/TimePropertyItem.h
deleted file mode 100644
index 4f0ef2fd..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimePropertyItem.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2018 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef TIMEPROPERTYITEM_H
-#define TIMEPROPERTYITEM_H
-
-#include <QQuickPaintedItem>
-
-class CTimelineRow;
-class ITimelineItemProperty;
-
-class TimePropertyItem : public QQuickPaintedItem
-{
- Q_PROPERTY(double timeRatio READ timeRatio WRITE setTimeRatio NOTIFY timeRatioChanged)
- Q_PROPERTY(CTimelineRow *timelineRow READ timelineRow WRITE setTimelineRow
- NOTIFY timelineRowChanged)
-
- Q_OBJECT
-public:
- explicit TimePropertyItem(QQuickItem *parent = nullptr);
- ~TimePropertyItem() override;
-
- void paint(QPainter *painter) override;
-
- double timeRatio() const;
- void setTimeRatio(double timeRatio);
-
- CTimelineRow *timelineRow() const;
- void setTimelineRow(CTimelineRow *property);
-
-Q_SIGNALS:
- void timeRatioChanged(double timeRatio);
- void timelineRowChanged();
-
-private:
- void drawDetailedChannel(QPainter *painter, long channelIndex, const QColor &color);
-
- double m_timeRatio = 0.0;
- float m_MaxVal = 0.0f;
- float m_MinVal = 0.0f;
- long m_MinY = 0;
- long m_MaxY = 0;
- CTimelineRow *m_timelineRow = nullptr;
- ITimelineItemProperty *m_property = nullptr;
-};
-
-#endif // TIMEPROPERTYITEM_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimeToolbar.cpp b/src/Authoring/Studio/Palettes/Timeline/TimeToolbar.cpp
deleted file mode 100644
index 639e61d2..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimeToolbar.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//==============================================================================
-// Prefix
-//==============================================================================
-
-#include "stdafx.h"
-
-//==============================================================================
-// Includes
-//==============================================================================
-
-#include "TimeToolbar.h"
-#include "Renderer.h"
-#include "StudioPreferences.h"
-#include "BlankControl.h"
-#include "IDoc.h"
-
-//=============================================================================
-/**
- * Constructor
- */
-CTimeToolbar::CTimeToolbar(IDoc *inDoc)
-{
- m_Doc = inDoc;
- m_TimeEdit = new CTimeEdit(inDoc);
- m_Color = CStudioPreferences::GetBaseColor();
- m_TimeEdit->SetBackgroundColor(m_Color);
- AddChild(m_TimeEdit);
-
- m_TimeEdit->AddTimeChangeListener(this);
-}
-
-//=============================================================================
-/**
- * Destructor
- */
-CTimeToolbar::~CTimeToolbar()
-{
- delete m_TimeEdit;
-}
-
-//=============================================================================
-/**
- * Fills in the background color for this layout.
- */
-void CTimeToolbar::Draw(CRenderer *inRenderer)
-{
- // Fill in the background color and draw the child controls
-
- // Draw the shadow lines at the top and bottom of the layout
- CRct theRect(GetSize());
- inRenderer->FillSolidRect(theRect, m_Color);
-
- inRenderer->PushPen(CStudioPreferences::GetButtonShadowColor());
- inRenderer->MoveTo(CPt(0, 0));
- inRenderer->LineTo(CPt(theRect.size.x, 0));
- inRenderer->MoveTo(CPt(0, 0));
- inRenderer->LineTo(CPt(0, theRect.size.y - 2));
- inRenderer->MoveTo(CPt(0, theRect.size.y - 2));
- inRenderer->LineTo(CPt(theRect.size.x, theRect.size.y - 2));
- inRenderer->PopPen();
- inRenderer->PushPen(CStudioPreferences::GetButtonHighlightColor());
- inRenderer->MoveTo(CPt(0, theRect.size.y - 1));
- inRenderer->LineTo(CPt(theRect.size.x, theRect.size.y - 1));
- inRenderer->PopPen();
-}
-
-//=============================================================================
-/**
- * Override of Control's set size to reposition the TimeEdit.
- * @param inSize the new size.
- */
-void CTimeToolbar::SetSize(CPt inSize)
-{
- m_TimeEdit->SetSize(CPt(m_TimeEdit->GetWidth(), inSize.y - 4));
- m_TimeEdit->SetPosition(inSize.x - m_TimeEdit->GetWidth(), 2);
-
- CControl::SetSize(inSize);
-}
-
-//=============================================================================
-/**
- * Call from the TimelineView (or thereabouts) that the scene time changed.
- * @param inTime the new time.
- */
-void CTimeToolbar::SetTime(long inTime)
-{
- m_TimeEdit->SetTime(inTime);
-}
-//=============================================================================
-/**
- * Returns the playhead time
- */
-long CTimeToolbar::GetTime()
-{
- return m_TimeEdit->GetTime();
-}
-
-//=============================================================================
-/**
- * Callback from the TimeEdit that it's time was manually changed.
- * @param inNewTime the new time.
- */
-void CTimeToolbar::OnTimeChanged(long inNewTime)
-{
- m_Doc->NotifyTimeChanged(inNewTime);
-} \ No newline at end of file
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimeToolbar.h b/src/Authoring/Studio/Palettes/Timeline/TimeToolbar.h
deleted file mode 100644
index c1ed948d..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimeToolbar.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//==============================================================================
-// Prefix
-//==============================================================================
-
-#ifndef INCLUDED_TIME_TOOLBAR_H
-#define INCLUDED_TIME_TOOLBAR_H 1
-
-#pragma once
-
-//==============================================================================
-// Includes
-//==============================================================================
-
-#include "TimeEdit.h"
-#include "Control.h"
-
-//==============================================================================
-// Forwards
-//==============================================================================
-class CRenderer;
-class IDoc;
-
-//=============================================================================
-/**
- * Control at the top of the time display and a header for the toggle column.
- */
-class CTimeToolbar : public CControl, public CTimeEditChangeListener
-{
-public:
- CTimeToolbar(IDoc *inDoc);
- virtual ~CTimeToolbar();
- void Draw(CRenderer *inRenderer) override;
-
- void SetSize(CPt inSize) override;
- void SetTime(long inTime);
- virtual long GetTime();
-
- void OnTimeChanged(long inNewTime) override;
-
-protected:
- CTimeEdit *m_TimeEdit;
- IDoc *m_Doc;
- CColor m_Color;
-};
-
-#endif // INCLUDED_TIME_TOOLBAR_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/Timeline.qml b/src/Authoring/Studio/Palettes/Timeline/Timeline.qml
deleted file mode 100644
index dd4bc088..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/Timeline.qml
+++ /dev/null
@@ -1,329 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.8
-import QtQuick.Controls 2.2
-import QtQuick.Layouts 1.3
-import Qt3DStudio 1.0
-import "../controls"
-
-Rectangle {
- id: root
-
- property real splitterPos: 300
- property int itemHeight: 20
- property int itemExtraHeight: 80
-
- color: _backgroundColor
-
- ScrollBar {
- id: scrollBar
- }
-
- RowLayout {
- anchors.fill: parent
-
- spacing: 5
-
- ColumnLayout {
- anchors.fill: parent
-
- spacing: 0
- Layout.minimumWidth: root.splitterPos
- Layout.maximumWidth: root.splitterPos
- Layout.preferredWidth: root.width
-
- Item {
- Layout.fillWidth: true
- Layout.preferredWidth: parent.width
- Layout.preferredHeight: itemHeight
-
- Row {
- anchors.right: parent.right
- StyledToggleButton {
- width: 20
- height: 20
-
- enabledImage: "Toggle-Shy.png"
- checkedImage: "Toggle-Shy.png"
- toolTipText: checked ? qsTr("Show shy objects")
- : qsTr("Hide shy objects")
-
- checked: _timelineView.hideShy
- onClicked: _timelineView.hideShy = checked
- }
-
- StyledToggleButton {
- width: 20
- height: 20
-
- enabledImage: "filter-toggle-eye-up.png"
- checkedImage: "filter-toggle-eye-down.png"
- toolTipText: checked ? qsTr("Show inactive objects")
- : qsTr("Hide inactive objects")
-
- checked: _timelineView.hideHidden
- onClicked: _timelineView.hideHidden = checked
- }
-
- StyledToggleButton {
- width: 20
- height: 20
-
- checkedImage: "Toggle-Lock.png"
- enabledImage: "Toggle-Lock.png"
- toolTipText: checked ? qsTr("Show locked objects")
- : qsTr("Hide locked objects")
-
- checked: _timelineView.hideLocked
- onClicked: _timelineView.hideLocked = checked
- }
- }
-
- }
-
- ListView {
- id: browserList
-
- Layout.fillWidth: true
- Layout.fillHeight: true
- Layout.minimumHeight: 80
- Layout.preferredHeight: count * itemHeight
- Layout.preferredWidth: root.width
-
- ScrollBar.vertical: scrollBar
-
- model: _timelineView.objectModel
- boundsBehavior: Flickable.StopAtBounds
- clip: true
- currentIndex: _timelineView.selection
-
- delegate: TimelineTreeDelegate {
- id: delegateItem
-
- property int extraHeight: model.propertyExpanded ? itemExtraHeight : 0
-
- splitterPos: root.splitterPos
- width: parent.width
- height: model.parentExpanded && model.visible ? itemHeight + extraHeight : 0
-
- visible: height > 0
-
- Behavior on height {
- NumberAnimation {
- duration: 100
- easing.type: Easing.OutQuad
- }
- }
-
- onDoubleClicked: {
- if (model.isProperty)
- model.propertyExpanded = !model.propertyExpanded;
- }
- }
-
- onCurrentIndexChanged: _timelineView.selection = currentIndex
-
- Connections {
- target: _timelineView
- onSelectionChanged: {
- if (browserList.currentIndex !== _timelineView.selection)
- browserList.currentIndex = _timelineView.selection;
- }
- }
- }
- }
-
- Flickable {
- id: timelineFlickable
-
- property bool movingPlayHead: false
-
- Layout.fillWidth: true
- Layout.fillHeight: true
- Layout.minimumHeight: 80
- Layout.preferredHeight: (timelineItemsList.count + 1) * itemHeight
- Layout.preferredWidth: root.width
- boundsBehavior: Flickable.StopAtBounds
-
- contentHeight: height
- contentWidth: 2000
- clip: true
- interactive: !movingPlayHead
-
- ScrollBar.horizontal: ScrollBar {
- policy: ScrollBar.AlwaysOn
- }
-
- Connections {
- target: _timelineView
- onCurrentTimePosChanged: {
- // -10 compensates the width of the playhead
- var pos = _timelineView.currentTimePos - 10;
- if (pos < timelineFlickable.contentX ||
- pos > timelineFlickable.contentX + timelineFlickable.width)
- timelineFlickable.contentX = pos;
- }
- }
-
- Item {
- anchors.fill: parent
-
- ColumnLayout {
- anchors.fill: parent
-
- spacing: 0
-
- TimeMeasureItem {
- Layout.fillWidth: true
- Layout.preferredWidth: parent.width
- Layout.preferredHeight: itemHeight
- timeRatio: _timelineView.timeRatio
-
- MouseArea {
- id: timeMeasureItemMouseArea
-
- anchors.fill: parent
-
- onPressed: {
- timelineFlickable.movingPlayHead = true;
- _timelineView.setNewTimePosition(mouse.x)
- }
- onPositionChanged: _timelineView.setNewTimePosition(mouse.x)
- onReleased: timelineFlickable.movingPlayHead = false;
- }
- }
-
- ListView {
- id: timelineItemsList
-
- Layout.fillWidth: true
- Layout.fillHeight: true
- Layout.preferredHeight: count * itemHeight
- Layout.preferredWidth: root.width
-
- ScrollBar.vertical: scrollBar
-
- model: browserList.model
- boundsBehavior: Flickable.StopAtBounds
- clip: true
- currentIndex: browserList.currentIndex
-
- delegate: Rectangle {
- id: timelineItemsDelegateItem
-
- property int extraHeight: model.propertyExpanded ? itemExtraHeight : 0
-
- width: parent.width
- height: model.parentExpanded && model.visible ? itemHeight + extraHeight
- : 0
-
- color: model.selected ? _selectionColor : "#404244"
- border.color: _backgroundColor
-
- visible: height > 0
-
- MouseArea {
- id: timelineItemsDelegateArea
-
- anchors.fill: parent
- onClicked: _timelineView.select(model.index, mouse.modifiers)
- }
-
- Component {
- id: standardTimelineItem
-
- TimelineItem {
- height: parent ? parent.height : 0
- visible: timeInfo.endPosition > timeInfo.startPosition
-
- timeInfo: model.timeInfo
- color: model.itemColor
- borderColor: root.color
- selected: model.selected
- selectionColor: model.selectedColor
- }
- }
-
- Component {
- id: propertyTimelineItem
-
- TimePropertyItem {
- height: parent ? parent.height : 0
- width: parent ? parent.width : 0
- timeRatio: _timelineView.timeRatio
- timelineRow: model.timelineRow
- }
- }
-
- Loader {
- anchors.fill: parent
- sourceComponent: model.propertyExpanded ? propertyTimelineItem
- : standardTimelineItem
- }
-
- Keyframes {
- anchors {
- top: parent.top
- topMargin: 10
- }
- keyframes: model.keyframes
- }
- }
- }
- }
-
- PlayHead {
- x: _timelineView.currentTimePos - width / 2
- height: parent.height - scrollBar.height
- }
- }
- }
- }
-
- Rectangle {
- color: root.color
- x: splitterPos
- width: 5
- height: parent.height
-
- MouseArea {
- anchors {
- fill: parent
- margins: -3 // small trick to avoid the cursor changing back to arrow when dragging
- }
-
- hoverEnabled: true
- cursorShape: containsMouse ? Qt.SplitHCursor : Qt.ArrowCursor
- onPositionChanged: {
- if (mouse.buttons === Qt.LeftButton)
- root.splitterPos = mapToItem(root, mouse.x, mouse.y).x
- }
- }
- }
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimelineFilter.cpp b/src/Authoring/Studio/Palettes/Timeline/TimelineFilter.cpp
deleted file mode 100644
index 5ef25911..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimelineFilter.cpp
+++ /dev/null
@@ -1,246 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//==============================================================================
-// Prefix
-//==============================================================================
-
-#include "stdafx.h"
-
-//==============================================================================
-// Includes
-//==============================================================================
-#include "TimelineFilter.h"
-#include "Bindings/ITimelineItemProperty.h"
-#include "Bindings/ITimelineItem.h"
-
-//=============================================================================
-/**
- * Constructor
- */
-CFilter::CFilter()
- : m_ShowBehaviors(true)
- , m_ShowMaterials(true)
- , m_ShowProperties(true)
- , m_ShowShy(true)
- , m_ShowLocked(true)
- , m_ShowVisible(true)
- , m_IsExpanded(true)
-{
-}
-
-//=============================================================================
-/**
- * Destructor
- */
-CFilter::~CFilter()
-{
-}
-
-//=============================================================================
-/**
- * @return true if behaviors should be shown, false if they should be hidden
- */
-bool CFilter::GetBehaviors() const
-{
- return m_ShowBehaviors;
-}
-
-//=============================================================================
-/**
- * @return true if materials should be shown, false if they should be hidden
- */
-bool CFilter::GetMaterials() const
-{
- return m_ShowMaterials;
-}
-
-//=============================================================================
-/**
- * @return true if properties should be shown, false if they should be hidden
- */
-bool CFilter::GetProperties() const
-{
- return m_ShowProperties;
-}
-
-//=============================================================================
-/**
- * @return true if shy objects should still be shown, false if they should be hidden
- */
-bool CFilter::GetShy() const
-{
- return m_ShowShy;
-}
-
-//=============================================================================
-/**
- * @return true if locked objects should still be shown, false if they should be hidden
- */
-bool CFilter::GetLocked() const
-{
- return m_ShowLocked;
-}
-
-//=============================================================================
-/**
- * Sets whether or not to show behaviors on objects.
- * @param inShow true to show behaviors, false to hide behaviors
- */
-void CFilter::SetBehaviors(bool inShow /*= true*/)
-{
- m_ShowBehaviors = inShow;
-}
-
-//=============================================================================
-/**
- * Sets whether or not to show materials on objects.
- * @param inShow true to show materials, false to hide materials
- */
-void CFilter::SetMaterials(bool inShow /*= true*/)
-{
- m_ShowMaterials = inShow;
-}
-
-//=============================================================================
-/**
- * Sets whether or not to show properties on objects.
- * @param inShow true to show properties, false to hide properties
- */
-void CFilter::SetProperties(bool inShow /*= true*/)
-{
- m_ShowProperties = inShow;
-}
-
-//=============================================================================
-/**
- * Sets whether or not to show objects with the shy flag.
- * @param inShow true to show shy objects, false to hide shy objects
- */
-void CFilter::SetShy(bool inShow /*= true*/)
-{
- m_ShowShy = inShow;
-}
-
-//=============================================================================
-/**
- * Sets whether or not to show objects with the locked flag.
- * @param inShow true to show locked objects, false to hide locked objects
- */
-void CFilter::SetLocked(bool inShow /*= true*/)
-{
- m_ShowLocked = inShow;
-}
-
-//=============================================================================
-/**
- * Sets whether or not the parent object is expanded.
- * If the parent is not expanded then nothing should be visible.
- */
-void CFilter::SetExpanded(bool inIsExpanded /*= true*/)
-{
- m_IsExpanded = inIsExpanded;
-}
-
-//=============================================================================
-/**
- * Sets whether or not to show objects that are not visible.
- * @param inIsVisible true to show non-visible objects, false to hide them.
- */
-void CFilter::SetVisible(bool inIsVisible /*= true*/)
-{
- m_ShowVisible = inIsVisible;
-}
-
-//=============================================================================
-/**
- * Gets whether or not non-visible objects should be displayed.
- * @return true if non-visible objects should be displayed.
- */
-bool CFilter::GetVisible() const
-{
- return m_ShowVisible;
-}
-
-//=============================================================================
-/**
- * Gets whether or not the parent object is expanded.
- * If the parent is not expanded then nothing should be visible.
- */
-bool CFilter::IsExpanded() const
-{
- return m_IsExpanded;
-}
-
-//=============================================================================
-/**
- * Checks to see if the specified property should be displayed or not.
- * @return true if the property should be visible.
- */
-bool CFilter::Filter(ITimelineItemProperty *inTimelineItemProperty) const
-{
- Q_UNUSED(inTimelineItemProperty);
-
- bool theVisibleFlag = GetProperties();
- theVisibleFlag &= IsExpanded();
-
- return theVisibleFlag;
-}
-
-//=============================================================================
-/**
- * Checks to see if the specified state should be displayed or not.
- * @return true if the state should be visible.
- */
-bool CFilter::Filter(ITimelineItem *inTimelineItem) const
-{
- bool theVisibleFlag = true;
-
- // If this row is shy, we need to check the filter for shy objects
- if (inTimelineItem->IsShy())
- theVisibleFlag &= GetShy();
-
- // If this row is locked, we need to check the filter for locked objects
- if (inTimelineItem->IsLocked())
- theVisibleFlag &= GetLocked();
-
- // This is for hiding visible eye toggle objects
- if (!inTimelineItem->IsVisible())
- theVisibleFlag &= GetVisible();
-
- // If this row is a behavior, we need to check the filter for behaviors
- if (inTimelineItem->GetObjectType() == OBJTYPE_BEHAVIOR)
- theVisibleFlag &= GetBehaviors();
-
- // If this row is a material, we need to check the filter for materials
- if (inTimelineItem->GetObjectType() == OBJTYPE_MATERIAL)
- theVisibleFlag &= GetMaterials();
-
- return theVisibleFlag;
-} \ No newline at end of file
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimelineFilter.h b/src/Authoring/Studio/Palettes/Timeline/TimelineFilter.h
deleted file mode 100644
index e956b4da..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimelineFilter.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2002 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//==============================================================================
-// Prefix
-//==============================================================================
-
-#ifndef INCLUDED_FILTER_H
-#define INCLUDED_FILTER_H 1
-
-#pragma once
-
-//==============================================================================
-// Forward
-//==============================================================================
-class ITimelineItem;
-class ITimelineItemProperty;
-
-//=============================================================================
-/**
- * Filter class for determining what objects to show in the timeline.
- */
-class CFilter
-{
-public:
- CFilter();
- virtual ~CFilter();
-
- bool GetBehaviors() const;
- bool GetMaterials() const;
- bool GetProperties() const;
- bool GetShy() const;
- bool GetLocked() const;
- bool GetVisible() const;
- void SetBehaviors(bool inShow = true);
- void SetMaterials(bool inShow = true);
- void SetProperties(bool inShow = true);
- void SetShy(bool inShow = true);
- void SetLocked(bool inShow = true);
- void SetVisible(bool inShow = true);
-
- void SetExpanded(bool inExpanded = true);
- bool IsExpanded() const;
-
- bool Filter(ITimelineItemProperty *inTimelineItemProperty) const;
- bool Filter(ITimelineItem *inTimelineItem) const;
-
-protected:
- bool m_ShowBehaviors;
- bool m_ShowMaterials;
- bool m_ShowProperties;
- bool m_ShowShy;
- bool m_ShowLocked;
- bool m_ShowVisible;
- bool m_IsExpanded;
-};
-
-#endif // INCLUDED_FILTER_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimelineItem.qml b/src/Authoring/Studio/Palettes/Timeline/TimelineItem.qml
deleted file mode 100644
index ca4a3f9f..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimelineItem.qml
+++ /dev/null
@@ -1,101 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-import QtQuick 2.8
-import QtQuick.Controls 2.2
-import QtQuick.Layouts 1.3
-import "../controls"
-
-Item {
- id: root
-
- property var timeInfo
- property bool selected: false
- property alias color: itemRect.color
- property string selectionColor: "black"
- property string borderColor: "black"
-
- x: timeInfo.lifeStart
- width: timeInfo.lifeEnd - timeInfo.lifeStart
-
- Row {
- Rectangle {
- width: timeInfo.startPosition - timeInfo.lifeStart
- height: root.height
- border.color: borderColor
- border.width: 1
- color: "gray" // TODO: use a real hashed rectangle
- }
-
- Rectangle {
- id: itemRect
-
- width: timeInfo.endPosition - timeInfo.startPosition
- height: root.height
- border.color: borderColor
- border.width: 1
- gradient: Gradient {
- GradientStop {
- position: 0.0
- color: Qt.lighter(root.color, 1.1)
- }
-
- GradientStop {
- position: 0.5
- color: root.color
- }
-
- GradientStop {
- position: 1.0
- color: Qt.darker(root.color, 1.1)
- }
- }
- }
-
- Rectangle {
- width: timeInfo.lifeEnd - timeInfo.endPosition
- height: root.height
- border.color: borderColor
- border.width: 1
- color: "gray" // TODO: use a real hashed rectangle
- }
- }
-
- Rectangle {
- id: selectionRect
-
- anchors {
- fill: parent
- topMargin: 3
- bottomMargin: 7
- leftMargin: 2
- rightMargin: 2
- }
- visible: root.selected
- color: selectionColor
- }
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimelineKeyframe.cpp b/src/Authoring/Studio/Palettes/Timeline/TimelineKeyframe.cpp
deleted file mode 100644
index 36946432..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimelineKeyframe.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "stdafx.h"
-
-#include "TimelineKeyframe.h"
-#include "Renderer.h"
-
-CTimelineKeyframe::CTimelineKeyframe()
- : m_Time(0)
- , m_IsDynamic(false)
-{
-}
-
-CTimelineKeyframe::~CTimelineKeyframe()
-{
-}
-
-void CTimelineKeyframe::SetTime(long inTime)
-{
- m_Time = inTime;
-}
-
-long CTimelineKeyframe::GetTime()
-{
- return m_Time;
-}
-
-//=============================================================================
-/**
- * called when this key is made dynamic
- * @param inIsDynamic true if the keyframe is dynamic
- */
-void CTimelineKeyframe::SetDynamic(bool inIsDynamic)
-{
- if (m_IsDynamic != inIsDynamic) {
- m_IsDynamic = inIsDynamic;
- // Invalidate( );
- }
-}
-
-//=============================================================================
-/**
- * @return true if dynamic
- */
-bool CTimelineKeyframe::IsDynamic()
-{
- return m_IsDynamic;
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimelineKeyframe.h b/src/Authoring/Studio/Palettes/Timeline/TimelineKeyframe.h
deleted file mode 100644
index a08f553c..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimelineKeyframe.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_TIMELINE_KEYFRAME
-#define INCLUDED_TIMELINE_KEYFRAME 1
-
-#pragma once
-class CRenderer;
-
-class CTimelineKeyframe
-{
-public:
- CTimelineKeyframe();
- ~CTimelineKeyframe();
- virtual void Draw(CRenderer *inRenderer) = 0;
-
- virtual void SetTime(long inTime);
- virtual long GetTime();
-
- void SetDynamic(bool inIsDynamic);
- bool IsDynamic();
-
- static const long DRAGBUFFER =
- 3; // Specifies how many pixels a keframe should be dragged before it actually moves
-
-protected:
- long m_Time;
- bool m_IsDynamic;
-};
-
-#endif // INCLUDED_TIMELINE_KEYFRAME \ No newline at end of file
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimelineObjectModel.cpp b/src/Authoring/Studio/Palettes/Timeline/TimelineObjectModel.cpp
deleted file mode 100644
index 0f908aa9..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimelineObjectModel.cpp
+++ /dev/null
@@ -1,572 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "TimelineObjectModel.h"
-
-#include "ClientDataModelBridge.h"
-#include "ColorControl.h"
-#include "Core.h"
-#include "Doc.h"
-#include "IKeyframe.h"
-#include "SlideRow.h"
-#include "StateRow.h"
-#include "PropertyRow.h"
-#include "Bindings/ITimelineItemBinding.h"
-#include "Bindings/ITimelineItem.h"
-#include "Bindings/ITimelineTimebar.h"
-#include "Bindings/Qt3DSDMTimelineItemBinding.h"
-#include "Qt3DSDMAnimation.h"
-#include "Qt3DSDMDataCore.h"
-#include "Qt3DSDMHandles.h"
-#include "Qt3DSDMStudioSystem.h"
-#include "StudioUtils.h"
-#include "StudioPreferences.h"
-
-#include <QDebug>
-
-
-TimelineObjectModel::~TimelineObjectModel()
-{
- m_rows.clear();
- m_timelineItemBinding = nullptr;
-}
-
-QHash<int, QByteArray> TimelineObjectModel::roleNames() const
-{
- auto names = ObjectListModel::roleNames();
- names.insert(TimelineRowRole, "timelineRow");
- names.insert(SelectedRole, "selected");
- names.insert(SelectedColorRole, "selectedColor");
- names.insert(ItemColorRole, "itemColor");
- names.insert(TimeInfoRole, "timeInfo");
- names.insert(KeyframesRole, "keyframes");
- names.insert(ShyRowRole, "shy");
- names.insert(VisibleRowRole, "rowVisible");
- names.insert(LockedRowRole, "locked");
- names.insert(IsPropertyRole, "isProperty");
- names.insert(PropertyExpandedRole, "propertyExpanded");
- names.insert(VisibleRole, "visible");
- names.insert(HasActionRole, "hasAction");
- names.insert(HasMasterActionRole, "hasMasterAction");
- names.insert(HasChildActionRole, "hasChildAction");
- names.insert(HasMasterChildActionRole, "hasMasterChildAction");
- names.insert(HasComponentActionRole, "hasComponentAction");
- names.insert(HasMasterComponentActionRole, "hasMasterComponentAction");
-
- return names;
-}
-
-QVariant TimelineObjectModel::data(const QModelIndex &index, int role) const
-{
- if (!hasIndex(index.row(), index.column(), index.parent()))
- return {};
-
- auto timelineRow = const_cast<TimelineObjectModel*>(this)->timelineRowForIndex(index);
-
- if (!timelineRow) {
- return {};
- }
-
- auto propertyRow = dynamic_cast<CPropertyRow *>(timelineRow);
- if (propertyRow) {
- return dataForProperty(propertyRow, index, role);
- }
-
- auto timelineItemBinding = timelineRow->GetTimelineItemBinding();
- auto timelineItem = timelineItemBinding->GetTimelineItem();
-
- switch (role) {
- case TimelineRowRole: {
- return QVariant::fromValue(timelineRow);
- }
- case SelectedRole: {
- return timelineRow->IsSelected();
- }
- case ItemColorRole: {
- auto timebar = timelineItem->GetTimebar();
-
- auto color = timebar->GetTimebarColor().getQColor();
- return color.name();
- }
- case SelectedColorRole: {
- auto timebar = timelineItem->GetTimebar();
-
- auto color = CColorControl::CalculateSelectedColor(timebar->GetTimebarColor()).getQColor();
- return color.name();
- }
- case TimeInfoRole: {
- auto timebar = timelineItem->GetTimebar();
-
- const auto startTime = timebar->GetStartTime();
- const auto endTime = timebar->GetEndTime();
- const auto timeRatio = timelineRow->GetTimeRatio();
-
- TimebarTimeInfo timeInfo;
- timeInfo.m_lifeStart = ::TimeToPos(startTime, timeRatio);
- timeInfo.m_lifeEnd = ::TimeToPos(endTime, timeRatio);
- timeInfo.m_startPosition = ::TimeToPos(timelineRow->GetActiveStart(), timeRatio);
- timeInfo.m_endPosition = ::TimeToPos(timelineRow->GetActiveEnd(), timeRatio);
-
- return QVariant::fromValue(timeInfo);
- }
- case KeyframesRole: {
- QVariantList keyframes;
- const auto timeRatio = timelineRow->GetTimeRatio();
-
- long keyframeCount = timelineItemBinding->GetKeyframeCount();
- for (long i = 0; i < keyframeCount; ++i) {
- auto key = timelineItemBinding->GetKeyframeByIndex(i);
- appendKey(keyframes, key, timeRatio);
- }
-
-
- return keyframes;
- }
-
- case ShyRowRole: {
- return timelineItem->IsShy();
- }
-
- case VisibleRowRole: {
- return timelineItem->IsVisible();
- }
-
- case LockedRowRole: {
- return timelineItem->IsLocked();
- }
-
- case VisibleRole: {
- return isVisible(index);
- }
-
- case IsPropertyRole: {
- return false;
- }
- case PropertyExpandedRole: {
- return false;
- }
- case HasActionRole: {
- return timelineItem->HasAction(false);
- }
-
- case HasMasterActionRole:{
- return timelineItem->HasAction(true);
- }
-
- case HasChildActionRole: {
- return timelineItem->ChildrenHasAction(false);
- }
-
- case HasMasterChildActionRole: {
- return timelineItem->ChildrenHasAction(true);
- }
-
- case HasComponentActionRole: {
- return timelineItem->ComponentHasAction(false);
- }
-
- case HasMasterComponentActionRole: {
- return timelineItem->ComponentHasAction(true);
- }
-
- default: ;
- }
-
- return ObjectListModel::data(index, role);
-}
-
-bool TimelineObjectModel::setData(const QModelIndex &index, const QVariant &value, int role)
-{
- if (!hasIndex(index.row(), index.column(), index.parent()))
- return false;
-
- auto timelineRow = const_cast<TimelineObjectModel*>(this)->timelineRowForIndex(index);
-
- if (!timelineRow)
- return false;
-
- auto propertyRow = dynamic_cast<CPropertyRow *>(timelineRow);
- if (propertyRow) {
- switch (role) {
- case PropertyExpandedRole:
- propertyRow->setExpanded(value.toBool());
- emit dataChanged(index, index, {role});
- return true;
- }
- return false;
- }
-
- auto timelineItemBinding = timelineRow->GetTimelineItemBinding();
- auto timelineItem = timelineItemBinding->GetTimelineItem();
-
- QVariant result;
- switch (role) {
- case ShyRowRole:
- timelineItem->SetShy(value.toBool());
- break;
- case VisibleRowRole:
- timelineItem->SetVisible(value.toBool());
- break;
- case LockedRowRole:
- timelineItem->SetLocked(value.toBool());
- break;
- }
- if (!result.isValid())
- return ObjectListModel::setData(index, value, role);
-
- emit dataChanged(index, index, {role});
-
- return true;
-}
-
-QVariant TimelineObjectModel::dataForProperty(CPropertyRow *propertyRow, const QModelIndex &index, int role) const
-{
- auto timelineItemProperty = propertyRow->GetProperty();
- if (!timelineItemProperty)
- return {};
-
- switch (role) {
- case PropertyExpandedRole: {
- return propertyRow->expanded();
- }
- case TimelineRowRole: {
- return QVariant::fromValue(propertyRow);
- }
- case SelectedRole: {
- return propertyRow->IsSelected();
- }
- case ItemColorRole: {
- return propertyRow->GetTimebarBackgroundColor().getQColor().name();
- }
- case SelectedColorRole: {
- return propertyRow->GetTimebarHighlightBackgroundColor().getQColor().name();
- }
- case TimeInfoRole: {
- return data(index.parent(), role);
- }
- case KeyframesRole: {
- QVariantList keyframes;
- const auto timeRatio = propertyRow->GetTimeRatio();
-
- auto timelineItemProperty = propertyRow->GetProperty();
- long keyframeCount = timelineItemProperty->GetKeyframeCount();
- for (long i = 0; i < keyframeCount; ++i) {
- auto key = timelineItemProperty->GetKeyframeByIndex(i);
- appendKey(keyframes, key, timeRatio);
- }
-
- return keyframes;
- }
-
- // roles from ObjectListModel
- case NameRole: {
- return timelineItemProperty->GetName().toQString();
- }
-
- case IconRole: {
- return resourceImageUrl() + "Objects-Property-Normal.png";
- }
- case TextColorRole: {
- auto textColor = CStudioPreferences::GetNormalColor();
- if (timelineItemProperty->IsMaster())
- textColor = CStudioPreferences::GetMasterColor();
-
- return textColor.getQColor().name();
- }
-
- case PathReferenceRole:
- case AbsolutePathRole:
- return {};
-
-
- case IsPropertyRole: {
- return true;
- }
-
- case VisibleRole: {
- return isVisible(index);
- }
-
- case HasActionRole:
- case HasMasterActionRole:
- case HasChildActionRole:
- case HasMasterChildActionRole:
- case HasComponentActionRole:
- case HasMasterComponentActionRole:
- return false;
-
- default: ;
- }
-
- return ObjectListModel::data(index, role);
-}
-
-QModelIndex TimelineObjectModel::parent(const QModelIndex &index) const
-{
- const auto handle = handleForIndex(index);
- auto it = m_properties.constBegin();
- while (it != m_properties.constEnd()) {
- if (it->contains(handle)) {
- return indexForHandle(it.key());
- }
- ++it;
- }
-
- return ObjectListModel::parent(index);
-}
-
-void TimelineObjectModel::setTimelineItemBinding(ITimelineItemBinding *inTimelineItem)
-{
- Q_ASSERT(inTimelineItem);
- m_timelineItemBinding = inTimelineItem;
-}
-
-CTimelineRow* TimelineObjectModel::timelineRowForIndex(const QModelIndex &index)
-{
- if (!index.parent().isValid()) {
- if (!m_slideRow) {
- m_slideRow.reset(new CSlideRow(nullptr));
- Q_ASSERT(m_timelineItemBinding);
- m_slideRow->Initialize(m_timelineItemBinding);
- m_rows[m_baseHandle.GetHandleValue()] = m_slideRow.data();
- }
- return m_slideRow.data();
- } else {
- const auto handle = handleForIndex(index).GetHandleValue();
-
- if (!m_rows.contains(handle)) {
- int propertyCount = m_properties.value(handleForIndex(index.parent()), {}).count();
-
- auto parentRow = dynamic_cast<CBaseStateRow*>(timelineRowForIndex(index.parent()));
- Q_ASSERT(parentRow);
- auto parentBinding = parentRow->GetTimelineItemBinding();
-
- if (propertyCount > 0 && index.row() < propertyCount &&
- dynamic_cast<Qt3DSDMTimelineItemBinding *>(parentBinding)) {
- auto binding = static_cast<Qt3DSDMTimelineItemBinding *>(parentBinding);
-
- CPropertyRow *propertyRow = nullptr;
-
- // check if the property row was already created
- // KDAB_TODO can we remove this once we get rid of the legacy timeline view?
- if (auto propertyBinding = binding->GetPropertyBinding(handle))
- propertyRow = propertyBinding->GetRow();
-
- // Mahmoud_TODO: this whole class will be removed
-// if (propertyRow == nullptr)
-// propertyRow = binding->AddPropertyRow(handle);
-
- Q_ASSERT(propertyRow);
-
- connect(propertyRow, &CTimelineRow::timeRatioChanged, this, [this, index] {
- emit dataChanged(index, index, {TimeInfoRole, KeyframesRole});
- });
-
- connect(propertyRow, &CTimelineRow::dirtyChanged, this, [this, index] {
- emit dataChanged(index, index, {});
- });
-
- m_rows[handle] = propertyRow;
-
- return propertyRow;
- } else {
- // TODO:
- // the second "true" argument assumes it is loaded, avoids calling LoadChildren
- // this is temporary here, as long as the old timeline code is still used
- auto stateRow = new CStateRow(parentRow, true);
- auto itemBinding = parentBinding->GetChild(index.row() - propertyCount);
- itemBinding->setCreateUIRow(false);
- stateRow->Initialize(itemBinding);
- itemBinding->SetParent(parentBinding); // KDAB_TODO do we really need it?
- m_rows[handle] = stateRow;
-
- connect(stateRow, &CTimelineRow::selectedChanged, this, [this, index] {
- emit dataChanged(index, index, {SelectedRole});
- });
-
- connect(stateRow, &CTimelineRow::timeRatioChanged, this, [this, index] {
- emit dataChanged(index, index, {TimeInfoRole, KeyframesRole});
- });
-
- connect(stateRow, &CTimelineRow::dirtyChanged, this, [this, index] {
- // update item and its children
- auto nextIndex = this->index(index.row() + 1, 0, index.parent());
- if (!nextIndex.isValid())
- nextIndex = index;
- emit dataChanged(index, nextIndex, {});
- });
-
- return stateRow;
- }
- }
-
- return m_rows[handle];
- }
-
- Q_ASSERT(0);
- return nullptr;
-}
-
-void TimelineObjectModel::addProperty(qt3dsdm::Qt3DSDMInstanceHandle parentInstance,
- qt3dsdm::Qt3DSDMPropertyHandle property)
-{
- auto parentIndex = indexForHandle(parentInstance);
-
- // addProperty and removeProperty are called multiple times for properties with multiple
- // components, e.g. Position, so check if the property was already inserted in m_properties
- if (m_properties.value(parentInstance.GetHandleValue(), {}).contains(property))
- return;
-
- auto children = childrenList(m_slideHandle, parentInstance);
- auto it = std::find(children.begin(), children.end(), property);
- Q_ASSERT(it != children.end());
- int propertyIndex = std::distance(children.begin(), it);
-
- // Now we rely on rowCount calling childrenList, thus getting the new rows automatically
- beginInsertRows(parentIndex, propertyIndex, propertyIndex);
- endInsertRows();
-}
-
-void TimelineObjectModel::removeProperty(qt3dsdm::Qt3DSDMInstanceHandle parentInstance,
- qt3dsdm::Qt3DSDMPropertyHandle property)
-{
- auto parentIndex = indexForHandle(parentInstance);
-
- auto parentHandle = parentInstance.GetHandleValue();
- if (!m_properties.contains(parentHandle))
- return;
-
- auto& properties = m_properties[parentHandle];
-
- auto propertyIndex = properties.indexOf(property);
- if (propertyIndex == -1)
- return;
-
- properties.remove(propertyIndex);
-
- // Now we rely on rowCount calling childrenList, thus getting the new rows automatically
- beginRemoveRows(parentIndex, propertyIndex, propertyIndex);
- endRemoveRows();
-}
-
-void TimelineObjectModel::setHideShy(bool enabled)
-{
- m_hideShy = enabled;
- Q_EMIT roleUpdated(VisibleRole);
-}
-
-void TimelineObjectModel::setHideHidden(bool enabled)
-{
- m_hideHidden = enabled;
- Q_EMIT roleUpdated(VisibleRole);
-}
-
-void TimelineObjectModel::setHideLocked(bool enabled)
-{
- m_hideLocked = enabled;
- Q_EMIT roleUpdated(VisibleRole);
-}
-
-void TimelineObjectModel::updateActions()
-{
- Q_EMIT rolesUpdated({HasActionRole, HasChildActionRole, HasComponentActionRole,
- HasMasterActionRole, HasMasterChildActionRole,
- HasMasterComponentActionRole});
-}
-
-qt3dsdm::TInstanceHandleList TimelineObjectModel::childrenList(const qt3dsdm::Qt3DSDMSlideHandle &slideHandle, const qt3dsdm::Qt3DSDMInstanceHandle &handle) const
-{
- auto studioSystem = m_core->GetDoc()->GetStudioSystem();
- auto propertySystem = studioSystem->GetPropertySystem();
- qt3dsdm::SValue typeValue;
- propertySystem->GetInstancePropertyValue(handle, studioSystem->GetClientDataModelBridge()
- ->GetTypeProperty(), typeValue);
- qt3dsdm::DataModelDataType::Value valueType(qt3dsdm::GetValueType(typeValue));
- if (valueType == qt3dsdm::DataModelDataType::None)
- return {};
-
- qt3dsdm::TPropertyHandleList properties;
- propertySystem->GetAggregateInstanceProperties(handle, properties);
- QVector<qt3dsdm::Qt3DSDMInstanceHandle> animatedProperties;
- for (const auto &propertyHandle: properties) {
- if (studioSystem->GetAnimationSystem()->IsPropertyAnimated(
- handle, propertyHandle)) {
- animatedProperties.append(propertyHandle);
- }
- }
- m_properties[handle] = animatedProperties;
-
- qt3dsdm::TInstanceHandleList children(animatedProperties.begin(), animatedProperties.end());
- auto objectChildren = ObjectListModel::childrenList(slideHandle, handle);
- children.insert(children.end(), objectChildren.begin(), objectChildren.end());
-
- return children;
-}
-
-void TimelineObjectModel::appendKey(QVariantList &keyframes, IKeyframe *key, double timeRatio) const
-{
- try {
- KeyframeInfo keyInfo;
- keyInfo.m_time = key->GetTime();
- keyInfo.m_selected = key->IsSelected();
- keyInfo.m_dynamic = key->IsDynamic();
- keyInfo.m_position = ::TimeToPos(keyInfo.m_time, timeRatio);
-
- keyframes.append(QVariant::fromValue(keyInfo));
- } catch (qt3dsdm::AnimationKeyframeNotFound) {
- // happens when the keyframe was removed and added again. This is because
- // CStudioAnimationSystem::Deanimate does not erase the keyframes, just
- // marks as being deleted for later reuse. If the UI requests an update
- // while a keyframe has no associated animation, this exception is triggered
- }
-}
-
-bool TimelineObjectModel::isVisible(const QModelIndex &index) const
-{
- auto idx = index;
- while (idx.isValid()) {
- auto row = const_cast<TimelineObjectModel*>(this)->timelineRowForIndex(idx);
-
- if (!row)
- return false;
-
- auto binding = row->GetTimelineItemBinding();
- if (binding) {
- auto item = binding->GetTimelineItem();
-
- auto hidden = (m_hideShy && item->IsShy()) ||
- (m_hideHidden && !item->IsVisible()) ||
- (m_hideLocked && item->IsLocked());
-
- if (hidden)
- return false;
- }
- idx = idx.parent();
- }
-
- return true;
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimelineObjectModel.h b/src/Authoring/Studio/Palettes/Timeline/TimelineObjectModel.h
deleted file mode 100644
index 57e2e36e..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimelineObjectModel.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef TIMELINEOBJECTMODEL_H
-#define TIMELINEOBJECTMODEL_H
-
-#include "ObjectListModel.h"
-
-#include "TimelineRow.h"
-
-#include <QSharedPointer>
-
-class CSlideRow;
-class CPropertyRow;
-class IKeyframe;
-class ITimelineItemBinding;
-
-struct TimebarTimeInfo {
- Q_PROPERTY(double startPosition MEMBER m_startPosition FINAL)
- Q_PROPERTY(double endPosition MEMBER m_endPosition FINAL)
- Q_PROPERTY(double lifeStart MEMBER m_lifeStart FINAL)
- Q_PROPERTY(double lifeEnd MEMBER m_lifeEnd FINAL)
-
- double m_startPosition = 0;
- double m_endPosition = 0;
- double m_lifeStart = 0;
- double m_lifeEnd = 0;
-
- Q_GADGET
-};
-
-struct KeyframeInfo {
- Q_PROPERTY(double position MEMBER m_position FINAL)
- Q_PROPERTY(long time MEMBER m_time FINAL)
- Q_PROPERTY(bool selected MEMBER m_selected FINAL)
- Q_PROPERTY(bool dynamic MEMBER m_dynamic FINAL)
-
- long m_time;
- bool m_selected;
- bool m_dynamic;
- double m_position;
-
- Q_GADGET
-};
-
-Q_DECLARE_METATYPE(TimebarTimeInfo)
-Q_DECLARE_METATYPE(KeyframeInfo)
-
-class TimelineObjectModel : public ObjectListModel
-{
- Q_OBJECT
-
-public:
- using ObjectListModel::ObjectListModel;
- ~TimelineObjectModel() override;
-
- enum Roles {
- TimelineRowRole = ObjectListModel::LastRole + 100,
- ItemColorRole,
- SelectedColorRole,
- SelectedRole,
- TimeInfoRole,
- KeyframesRole,
- ShyRowRole,
- VisibleRowRole,
- LockedRowRole,
- IsPropertyRole,
- PropertyExpandedRole,
- VisibleRole,
- HasActionRole,
- HasMasterActionRole,
- HasChildActionRole,
- HasMasterChildActionRole,
- HasComponentActionRole,
- HasMasterComponentActionRole
- };
-
- QHash<int, QByteArray> roleNames() const override;
- QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
- bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
- QVariant dataForProperty(CPropertyRow *propertyRow, const QModelIndex &index,
- int role = Qt::DisplayRole) const;
- QModelIndex parent(const QModelIndex &index) const override;
-
- void setTimelineItemBinding(ITimelineItemBinding *inTimelineItem);
-
- CTimelineRow* timelineRowForIndex(const QModelIndex &index);
-
- void addProperty(qt3dsdm::Qt3DSDMInstanceHandle parentInstance,
- qt3dsdm::Qt3DSDMPropertyHandle property);
- void removeProperty(qt3dsdm::Qt3DSDMInstanceHandle parentInstance,
- qt3dsdm::Qt3DSDMPropertyHandle property);
-
- void setHideShy(bool enabled);
- bool hideShy() const { return m_hideShy; }
- void setHideHidden(bool enabled);
- bool hideHidden() const { return m_hideHidden; }
- void setHideLocked(bool enabled);
- bool hideLocked() const { return m_hideLocked; }
-
- void updateActions();
-
-protected:
- qt3dsdm::TInstanceHandleList childrenList(const qt3dsdm::Qt3DSDMSlideHandle &slideHandle,
- const qt3dsdm::Qt3DSDMInstanceHandle &handle) const override;
-
-
-
-private:
- void appendKey(QVariantList &keyframes, IKeyframe *key, double timeRatio) const;
- bool isVisible(const QModelIndex &index) const;
-
- QSharedPointer<CSlideRow> m_slideRow;
- ITimelineItemBinding *m_timelineItemBinding = nullptr;
- QHash<int, CTimelineRow* > m_rows;
- mutable QHash<int, QVector<qt3dsdm::Qt3DSDMInstanceHandle> > m_properties;
-
- bool m_hideShy = false;
- bool m_hideHidden = false;
- bool m_hideLocked = true;
-};
-
-Q_DECLARE_METATYPE(CTimelineRow *);
-
-#endif // TIMELINEOBJECTMODEL_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimelineRow.cpp b/src/Authoring/Studio/Palettes/Timeline/TimelineRow.cpp
deleted file mode 100644
index 3eb27132..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimelineRow.cpp
+++ /dev/null
@@ -1,204 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "stdafx.h"
-
-#include "TimelineRow.h"
-#include "TimelineUIFactory.h"
-#include "StudioPreferences.h"
-#include "StudioObjectTypes.h"
-
-#include "Bindings/ITimelineItemBinding.h"
-
-const long CTimelineRow::TREE_INDENT = CStudioPreferences::GetRowSize();
-
-CTimelineRow::CTimelineRow(CTimelineRow *parent)
- : QObject(parent)
- , m_ParentRow(nullptr)
- , m_IsViewable(false)
- , m_ActiveStart(0)
- , m_ActiveEnd(0)
-{
-}
-
-CTimelineRow::~CTimelineRow()
-{
- TimelineUIFactory::instance()->deleteRowUI(this);
-}
-
-void CTimelineRow::SetParent(CTimelineRow *inParent)
-{
- if (m_ParentRow != inParent) {
- m_ParentRow = inParent;
- TimelineUIFactory::instance()->setParentForRowUI(this, m_ParentRow);
- }
-}
-
-//=============================================================================
-/**
- * Gets the Parent Row
- */
-CTimelineRow *CTimelineRow::GetParentRow() const
-{
- return m_ParentRow;
-}
-
-void CTimelineRow::SetTimeRatio(double inTimeRatio)
-{
- if (m_TimeRatio != inTimeRatio) {
- m_TimeRatio = inTimeRatio;
- emit timeRatioChanged(inTimeRatio);
- }
-}
-
-double CTimelineRow::GetTimeRatio()
-{
- return m_TimeRatio;
-}
-
-bool CTimelineRow::IsViewable() const
-{
- return m_IsViewable;
-}
-
-
-//=============================================================================
-/**
- * Retrieves the background color for the row based upon the type of asset
- * passed in.
- * @param inType specifies which asset type you want the color for
- * @return background color to use for this row
- */
-::CColor CTimelineRow::GetTimebarBackgroundColor(EStudioObjectType inType)
-{
- ::CColor theColor;
-
- switch (inType) {
- case OBJTYPE_LAYER:
- theColor = CStudioPreferences::GetLayerBackgroundColor();
- break;
-
- case OBJTYPE_GROUP:
- case OBJTYPE_COMPONENT:
- theColor = CStudioPreferences::GetGroupBackgroundColor();
- break;
-
- default:
- theColor = CStudioPreferences::GetObjectBackgroundColor();
- break;
- }
-
- return theColor;
-}
-
-//=============================================================================
-/**
- * Retrieves the background color for the row when the mouse is over the row,
- * based upon the type of asset passed in.
- * @param inType specifies which asset type you want the color for
- * @return background color to use for this row when the mouse is over the row
- */
-::CColor CTimelineRow::GetTimebarHighlightBackgroundColor(EStudioObjectType inType)
-{
- ::CColor theColor;
-
- switch (inType) {
- case OBJTYPE_LAYER:
- theColor = CStudioPreferences::GetMouseOverHighlightColor();
- break;
-
- case OBJTYPE_GROUP:
- case OBJTYPE_COMPONENT:
- theColor = CStudioPreferences::GetMouseOverHighlightColor();
- break;
-
- default:
- theColor = CStudioPreferences::GetMouseOverHighlightColor();
- break;
- }
-
- return theColor;
-}
-
-long CTimelineRow::GetLatestEndTime()
-{
- return 0;
-}
-
-void CTimelineRow::Dispose()
-{
- delete this;
-}
-
-bool CTimelineRow::isExpanded() const
-{
- return m_IsExpanded;
-}
-
-long CTimelineRow::GetActiveStart()
-{
- return m_ActiveStart;
-}
-
-long CTimelineRow::GetActiveEnd()
-{
- return m_ActiveEnd;
-}
-
-void CTimelineRow::setDirty(bool dirty)
-{
- if (m_Dirty == dirty)
- return;
- m_Dirty = dirty;
- emit dirtyChanged(dirty);
-}
-
-ITimelineItemBinding *CTimelineRow::GetTimelineItemBinding() const
-{
- return m_TimelineItemBinding;
-}
-
-//=============================================================================
-/**
- * @return the studio type of the object represented by this row
- */
-EStudioObjectType CTimelineRow::GetObjectType() const
-{
- return GetTimelineItem()->GetObjectType();
-}
-
-ITimelineItem *CTimelineRow::GetTimelineItem() const
-{
- return m_TimelineItemBinding->GetTimelineItem();
-}
-
-void CTimelineRow::RequestSelectKeysByTime(long inTime, bool inSelected)
-{
- emit selectKeysByTime(inTime, inSelected);
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimelineRow.h b/src/Authoring/Studio/Palettes/Timeline/TimelineRow.h
deleted file mode 100644
index f1d7ba16..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimelineRow.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INCLUDED_TIMELINE_ROW_H
-#define INCLUDED_TIMELINE_ROW_H 1
-
-#pragma once
-
-#include <QObject>
-
-#include "TimelineFilter.h"
-#include "CColor.h"
-#include "StudioObjectTypes.h"
-
-#include <vector>
-
-class CSnapper;
-class CControl;
-class ISnappingListProvider;
-class ITimelineItemBinding;
-class CPropertyRow;
-
-const double DEFAULT_TIME_RATIO = .05;
-
-class CTimelineRow : public QObject
-{
- Q_OBJECT
-public:
- static const long TREE_INDENT;
-
- explicit CTimelineRow(CTimelineRow *parent);
- virtual ~CTimelineRow();
-
- virtual void Initialize(ITimelineItemBinding *inTimelineItemBinding) = 0;
- virtual void Filter(const CFilter &inFilter, bool inFilterChildren = true) = 0;
-
- virtual void Select(Qt::KeyboardModifiers inKeyState, bool inCheckKeySelection = true) = 0;
- virtual bool IsSelected() const = 0;
-
- void SetParent(CTimelineRow *inParent);
- CTimelineRow *GetParentRow() const;
- virtual void SetTimeRatio(double inTimeRatio);
- virtual double GetTimeRatio();
- virtual bool IsViewable() const;
-
- virtual ::CColor GetTimebarBackgroundColor(EStudioObjectType inType);
- virtual ::CColor GetTimebarHighlightBackgroundColor(EStudioObjectType inType);
-
- virtual long GetLatestEndTime();
-
- virtual void Dispose();
-
- virtual void Expand(bool inExpandAll = false, bool inExpandUp = false) = 0;
- virtual void Collapse(bool inCollapseAll = false) = 0;
- bool isExpanded() const;
-
- virtual bool CalculateActiveStartTime() = 0;
- virtual bool CalculateActiveEndTime() = 0;
- long GetActiveStart();
- long GetActiveEnd();
-
- void setDirty(bool dirty);
-
- virtual void LoadChildren() = 0;
- virtual bool HasVisibleChildren() = 0;
-
- ITimelineItemBinding *GetTimelineItemBinding() const;
- EStudioObjectType GetObjectType() const;
- ITimelineItem *GetTimelineItem() const;
-
- void RequestSelectKeysByTime(long inTime, bool inSelected);
-
-Q_SIGNALS:
- void initialized();
- void dirtyChanged(bool dirty);
- void propertyRowAdded(CPropertyRow *newRow);
- void childrenLoaded();
- void selectKeysByTime(long inTime, bool inSelected);
- void selectedChanged(bool selected);
- void timeRatioChanged(double timeRatio);
-
-protected:
- CTimelineRow *m_ParentRow;
-
- ITimelineItemBinding *m_TimelineItemBinding = nullptr;
-
- bool m_IsViewable;
- long m_ActiveStart;
- long m_ActiveEnd;
- bool m_Dirty = false;
- bool m_IsExpanded = false;
-
- double m_TimeRatio = DEFAULT_TIME_RATIO;
-};
-#endif // INCLUDED_TIMELINE_ROW_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimelineTreeDelegate.qml b/src/Authoring/Studio/Palettes/Timeline/TimelineTreeDelegate.qml
deleted file mode 100644
index ebaa7db9..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimelineTreeDelegate.qml
+++ /dev/null
@@ -1,220 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.8
-import QtQuick.Controls 2.2
-import QtQuick.Layouts 1.3
-import Qt3DStudio 1.0
-import "../controls"
-
-Item {
- id: root
-
- property real splitterPos: 0
-
- signal doubleClicked(var mouse)
-
- Row {
- id: delegateRow
-
- anchors.fill: parent
- spacing: 2
-
- Rectangle {
- id: actionStatusRect
-
- width: 20
- height: 20
- color: model.selected ? _selectionColor :
- model.isProperty ? _backgroundColor : _studioColor2
- border.color: _backgroundColor
-
- Image {
- anchors.fill: parent
- fillMode: Image.Pad
- source: {
- if (model.hasAction)
- return _resDir + "Action-Action.png";
- else if (model.hasMasterAction)
- return _resDir + "Action-MasterAction.png";
- return "";
- }
- }
-
- Image {
- anchors.fill: parent
- fillMode: Image.Pad
- source: {
- if (model.expanded)
- return "";
- if (model.hasChildAction)
- return _resDir + "Action-ChildAction.png";
- else if (model.hasMasterChildAction)
- return _resDir + "Action-ChildMasterAction.png";
- return "";
- }
- }
-
- Image {
- anchors.fill: parent
- fillMode: Image.Pad
- source: {
- if (model.hasComponentAction)
- return _resDir + "Action-ComponentAction.png";
- else if (model.hasMasterComponentAction)
- return _resDir + "Action-ComponentMasterAction.png";
- return "";
- }
- }
-
- }
-
- Rectangle {
- id: itemDescription
-
- width: root.width - buttons.width - actionStatusRect.width - 2 * delegateRow.spacing
- height: root.height
-
- color: model.selected ? _selectionColor :
- model.isProperty ? _backgroundColor : _studioColor2
- border.color: _backgroundColor
-
- MouseArea {
- id: delegateArea
-
- anchors.fill: parent
- onClicked: _timelineView.select(model.index, mouse.modifiers)
- onDoubleClicked: root.doubleClicked(mouse)
- }
-
- Row {
- id: row
-
- x: model.depth * 20
- anchors.verticalCenter: parent.verticalCenter
- height: root.height
- width: splitterPos - x
- spacing: 5
-
- Image {
- source: {
- if (!model.hasChildren)
- return "";
- model.expanded ? _resDir + "arrow_down.png"
- : _resDir + "arrow.png";
- }
-
- MouseArea {
- anchors.fill: parent
- onClicked: model.expanded = !model.expanded
- }
- }
-
- Item {
- height: root.height
- width: typeIcon.width + name.width + 10
-
- Row {
- spacing: 10
- Image {
- id: typeIcon
-
- source: model.icon
- }
-
- StyledLabel {
- id: name
- anchors.verticalCenter: typeIcon.verticalCenter
- color: model.textColor
- text: model.name
- }
- }
- }
- }
- }
-
- Loader {
- id: buttons
-
- active: !model.isProperty
-
- sourceComponent: buttonsComponent
- }
-
- Component {
- id: buttonsComponent
-
-
- Row {
- id: buttonsRow
-
- Layout.alignment: Qt.AlignRight
-
- StyledToggleButton {
- width: 20
- height: 20
- checked: model.shy
-
- backgroundColor: itemDescription.color
- downColor: backgroundColor
- enabledImage: "Toggle-Empty.png"
- checkedImage: "Toggle-Shy.png"
-
- onClicked: model.shy = checked
- }
-
- StyledToggleButton {
- width: 20
- height: 20
- checked: model.rowVisible
-
- backgroundColor: itemDescription.color
- downColor: backgroundColor
- enabledImage: "Toggle-Empty.png"
- checkedImage: "filter-toggle-eye-up.png"
-
- onClicked: model.rowVisible = checked
- }
-
- StyledToggleButton {
- width: 20
- height: 20
-
- checked: model.locked
-
- backgroundColor: itemDescription.color
- downColor: backgroundColor
- checkedImage: "Toggle-Lock.png"
- enabledImage: "Toggle-Empty.png"
-
- onClicked: model.locked = checked
- }
- }
- }
- }
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimelineUIFactory.cpp b/src/Authoring/Studio/Palettes/Timeline/TimelineUIFactory.cpp
deleted file mode 100644
index 32d3958e..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimelineUIFactory.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "TimelineUIFactory.h"
-
-#include "TimelineRow.h"
-#include "StateRow.h"
-#include "SlideRow.h"
-#include "PropertyRow.h"
-
-#include "Bindings/ITimelineItemProperty.h"
-
-TimelineUIFactory *TimelineUIFactory::instance()
-{
- static TimelineUIFactory *s_instance = new TimelineUIFactory();
- return s_instance;
-}
-
-TimelineUIFactory::~TimelineUIFactory()
-{
-
-}
-
-CAbstractTimelineRowUI *TimelineUIFactory::uiForRow(CTimelineRow *row)
-{
- auto uiRow = m_uiRows.value(row, nullptr);
- Q_ASSERT(uiRow);
- return uiRow;
-}
-
-CPropertyRow *TimelineUIFactory::createPropertyRow(CBaseStateRow *parentRow,
- CPropertyRow *nextRow,
- ITimelineItemProperty *inTimelineItemPropertyBinding)
-{
- auto propertyRow = new CPropertyRow(inTimelineItemPropertyBinding, parentRow);
-
- inTimelineItemPropertyBinding->Bind(propertyRow);
-
- return propertyRow;
-}
-
-CStateRow *TimelineUIFactory::createStateRow(CBaseStateRow *parentRow,
- ITimelineItemBinding *inTimelineItem)
-{
- auto stateRow = new CStateRow(parentRow);
-
- stateRow->Initialize(inTimelineItem);
-
- return stateRow;
-}
-
-CSlideRow *TimelineUIFactory::createSlideRow(CBaseStateRow *parentRow,
- ITimelineItemBinding *inTimelineItem)
-{
- auto slideRow = new CSlideRow(parentRow);
-
- slideRow->Initialize(inTimelineItem);
-
- return slideRow;
-}
-
-void TimelineUIFactory::deleteRowUI(CTimelineRow *row)
-{
- auto it = m_uiRows.find(row);
- if (it != m_uiRows.end()) {
- delete *it;
- m_uiRows.erase(it);
- }
-}
-
-void TimelineUIFactory::setParentForRowUI(CTimelineRow *row, CTimelineRow *parentRow)
-{
- CAbstractTimelineRowUI *uiRow = m_uiRows.value(row, nullptr);
- if (uiRow) {
- CAbstractTimelineRowUI *parentUiRow = m_uiRows.value(parentRow, nullptr);
- uiRow->SetParentRow(parentUiRow);
- }
-}
-
-TimelineUIFactory::TimelineUIFactory(QObject *parent)
-{
-
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimelineUIFactory.h b/src/Authoring/Studio/Palettes/Timeline/TimelineUIFactory.h
deleted file mode 100644
index e9a85c22..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimelineUIFactory.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef TIMELINEUIFACTORY_H
-#define TIMELINEUIFACTORY_H
-
-#include <QObject>
-#include <QHash>
-
-#include "TimelineRow.h"
-#include "AbstractTimelineRowUI.h"
-
-class CBaseStateRow;
-class CPropertyRow;
-class CSlideRow;
-class CStateRow;
-
-class TimelineUIFactory : public QObject
-{
- Q_OBJECT
-
-public:
- static TimelineUIFactory *instance();
- virtual ~TimelineUIFactory();
-
- CAbstractTimelineRowUI *uiForRow(CTimelineRow *row);
-
- CPropertyRow *createPropertyRow(CBaseStateRow *parentRow, CPropertyRow *nextRow, ITimelineItemProperty *inTimelineItemPropertyBinding);
- CStateRow *createStateRow(CBaseStateRow *parentRow, ITimelineItemBinding *inTimelineItem);
- CSlideRow *createSlideRow(CBaseStateRow *parentRow, ITimelineItemBinding *inTimelineItem);
-
- void deleteRowUI(CTimelineRow *row);
- void setParentForRowUI(CTimelineRow *row, CTimelineRow *parentRow);
-
-private:
- CAbstractTimelineRowUI *createRowUI(CTimelineRow *row, CTimelineRow *parentRow);
-
- TimelineUIFactory(QObject *parent = nullptr);
- QHash<CTimelineRow *, CAbstractTimelineRowUI *> m_uiRows;
-};
-
-#endif // TIMELINEUIFACTORY_H
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimelineView.cpp b/src/Authoring/Studio/Palettes/Timeline/TimelineView.cpp
deleted file mode 100644
index 25ce1bcd..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimelineView.cpp
+++ /dev/null
@@ -1,335 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "TimelineView.h"
-#include "Core.h"
-#include "Doc.h"
-#include "Dispatch.h"
-#include "Bindings/TimelineTranslationManager.h"
-#include "HotKeys.h"
-
-#include "Literals.h"
-#include "StudioApp.h"
-#include "StudioPreferences.h"
-#include "StudioUtils.h"
-
-#include "TimeMeasureItem.h"
-#include "TimePropertyItem.h"
-
-#include "Qt3DSDMStudioSystem.h"
-#include "Qt3DSDMSlides.h"
-#include "Qt3DSDMHandles.h"
-
-#include <QtQml/qqmlcontext.h>
-#include <QtQml/qqmlengine.h>
-#include <QtCore/qtimer.h>
-#include <QtWidgets/qaction.h>
-
-namespace {
-const qreal SCALING_PERCENTAGE_INC = 1.1;
-const qreal SCALING_PERCENTAGE_DEC = 0.9;
-}
-
-TimelineView::TimelineView(QWidget *parent) : QQuickWidget(parent)
-{
- g_StudioApp.GetCore()->GetDispatch()->AddPresentationChangeListener(this);
- g_StudioApp.GetCore()->GetDispatch()->AddClientPlayChangeListener(this);
- setResizeMode(QQuickWidget::SizeRootObjectToView);
-
- m_translationManager = new CTimelineTranslationManager();
-
- QTimer::singleShot(0, this, &TimelineView::initialize);
-}
-
-QAbstractItemModel *TimelineView::objectModel() const
-{
- return m_model; // should be safe as it is passed only to QML
-}
-
-void TimelineView::setSelection(int index)
-{
- if (m_selection != index) {
- m_selection = index;
- Q_EMIT selectionChanged();
- }
-}
-
-void TimelineView::setTimeRatio(qreal timeRatio)
-{
- timeRatio = qMin(timeRatio, 1.0);
-
- if (!qFuzzyCompare(m_timeRatio, timeRatio)) {
- m_timeRatio = timeRatio;
-
- for (int i = 0; i < m_model->rowCount(); ++i) {
- auto timelineRow = m_model->index(i, 0)
- .data(TimelineObjectModel::TimelineRowRole).value<CTimelineRow*>();
- timelineRow->SetTimeRatio(timeRatio);
- }
-
- Q_EMIT timeRatioChanged(timeRatio);
- }
-}
-
-void TimelineView::OnNewPresentation()
-{
- m_translationManager->OnNewPresentation();
-
- // Register callbacks
- qt3dsdm::IStudioFullSystemSignalProvider *theSignalProvider =
- GetDoc()->GetStudioSystem()->GetFullSystemSignalProvider();
-
- m_Connections.push_back(theSignalProvider->ConnectActiveSlide(
- std::bind(&TimelineView::OnActiveSlide, this, std::placeholders::_1,
- std::placeholders::_2, std::placeholders::_3)));
-
- CDispatch *theDispatch = g_StudioApp.GetCore()->GetDispatch();
- m_Connections.push_back(theDispatch->ConnectSelectionChange(
- std::bind(&TimelineView::OnSelectionChange, this, std::placeholders::_1)));
-
- m_Connections.push_back(theSignalProvider->ConnectAnimationCreated(
- std::bind(&TimelineView::OnAnimationCreated, this,
- std::placeholders::_2, std::placeholders::_3)));
- m_Connections.push_back(theSignalProvider->ConnectAnimationDeleted(
- std::bind(&TimelineView::OnAnimationDeleted, this,
- std::placeholders::_2, std::placeholders::_3)));
-
- m_Connections.push_back(theSignalProvider->ConnectActionCreated(
- std::bind(&TimelineView::OnActionEvent, this,
- std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)));
- m_Connections.push_back(theSignalProvider->ConnectActionDeleted(
- std::bind(&TimelineView::OnActionEvent, this,
- std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)));
-}
-
-void TimelineView::OnClosingPresentation()
-{
- m_Connections.clear();
-}
-
-void TimelineView::OnSelectionChange(Q3DStudio::SSelectedValue inNewSelectable)
-{
- // Expand the tree so the selection is visible
- qt3dsdm::TInstanceHandleList theInstances = inNewSelectable.GetSelectedInstances();
- for (size_t idx = 0, end = theInstances.size(); idx < end; ++idx) {
- qt3dsdm::Qt3DSDMInstanceHandle theInstance(theInstances[idx]);
- if (GetDoc()->GetStudioSystem()->IsInstance(theInstance)) {
- auto index = m_model->sourceIndexForHandle(theInstance);
- m_model->expandTo(QModelIndex(), index);
- }
- }
-}
-
-void TimelineView::OnTimeChanged(long inTime)
-{
- setCurrentTime(inTime);
-}
-
-void TimelineView::select(int index, Qt::KeyboardModifiers modifiers)
-{
- auto timelineRow = m_model->index(index, 0)
- .data(TimelineObjectModel::TimelineRowRole).value<CTimelineRow*>();
- timelineRow->Select(modifiers);
- setSelection(index);
-}
-
-void TimelineView::setNewTimePosition(double position)
-{
- auto time = ::PosToTime(position, m_timeRatio);
- GetDoc()->NotifyTimeChanged(time);
-}
-
-void TimelineView::setHideShy(bool enabled)
-{
- if (m_objectListModel && m_objectListModel->hideShy() != enabled) {
- m_objectListModel->setHideShy(enabled);
- emit hideShyChanged();
- }
-}
-
-bool TimelineView::hideShy() const
-{
- if (m_objectListModel)
- return m_objectListModel->hideShy();
-
- return false;
-}
-
-void TimelineView::setHideHidden(bool enabled)
-{
- if (m_objectListModel && m_objectListModel->hideHidden() != enabled) {
- m_objectListModel->setHideHidden(enabled);
- emit hideHiddenChanged();
- }
-}
-
-bool TimelineView::hideHidden() const
-{
- if (m_objectListModel)
- return m_objectListModel->hideHidden();
-
- return false;
-}
-
-void TimelineView::setHideLocked(bool enabled)
-{
- if (m_objectListModel && m_objectListModel->hideLocked() != enabled) {
- m_objectListModel->setHideLocked(enabled);
- emit hideLockedChanged();
- }
-}
-
-bool TimelineView::hideLocked() const
-{
- if (m_objectListModel)
- return m_objectListModel->hideLocked();
-
- return false;
-}
-
-void TimelineView::setCurrentTime(long newTime)
-{
- if (m_currentTime != newTime) {
- m_currentTime = newTime;
-
- Q_EMIT currentTimeChanged();
- }
-}
-
-long TimelineView::currentTime() const
-{
- return m_currentTime;
-}
-
-double TimelineView::currentTimePos() const
-{
- return ::TimeToPos(m_currentTime, m_timeRatio);
-}
-
-void TimelineView::OnAnimationCreated(qt3dsdm::Qt3DSDMInstanceHandle parentInstance,
- qt3dsdm::Qt3DSDMPropertyHandle property)
-{
- if (m_objectListModel)
- m_objectListModel->addProperty(parentInstance, property);
-}
-
-void TimelineView::OnActionEvent(qt3dsdm::Qt3DSDMActionHandle inAction,
- qt3dsdm::Qt3DSDMSlideHandle inSlide,
- qt3dsdm::Qt3DSDMInstanceHandle inOwner)
-{
- Q_UNUSED(inAction);
- Q_UNUSED(inSlide);
- Q_UNUSED(inOwner);
- if (m_objectListModel) {
- m_objectListModel->updateActions();
- }
-}
-
-void TimelineView::OnAnimationDeleted(qt3dsdm::Qt3DSDMInstanceHandle parentInstance,
- qt3dsdm::Qt3DSDMPropertyHandle property)
-{
- if (m_objectListModel)
- m_objectListModel->removeProperty(parentInstance, property);
-}
-
-void TimelineView::OnActiveSlide(const qt3dsdm::Qt3DSDMSlideHandle &inMaster, int inIndex,
- const qt3dsdm::Qt3DSDMSlideHandle &inSlide)
-{
- Q_UNUSED(inMaster);
- Q_UNUSED(inIndex);
-
- if (m_activeSlide == inSlide)
- return;
-
- m_translationManager->Clear();
- m_activeSlide = inSlide;
-
- auto *theSlideSystem = GetDoc()->GetStudioSystem()->GetSlideSystem();
- auto theSlideInstance = theSlideSystem->GetSlideInstance(inSlide);
-
- m_objectListModel = new TimelineObjectModel(g_StudioApp.GetCore(),
- GetDoc()->GetActiveRootInstance(), this);
- m_objectListModel->setTimelineItemBinding(m_translationManager->GetOrCreate(theSlideInstance));
- if (!m_model)
- m_model = new FlatObjectListModel(m_objectListModel, this);
- else
- m_model->setSourceModel(m_objectListModel);
-
- // expand by default the first level
- m_model->expandTo(QModelIndex(), m_objectListModel->index(0, 0, m_objectListModel->index(0,0)));
- emit objectModelChanged();
-}
-
-void TimelineView::initialize()
-{
- CStudioPreferences::setQmlContextProperties(rootContext());
- rootContext()->setContextProperty("_timelineView"_L1, this);
- rootContext()->setContextProperty("_resDir"_L1, resourceImageUrl());
-
- qmlRegisterUncreatableType<TimelineView>("Qt3DStudio", 1, 0, "TimelineView"
- , tr("Creation of TimelineView not allowed from QML"));
- qmlRegisterUncreatableType<TimebarTimeInfo>("Qt3DStudio", 1, 0, "TimebarTimeInfo"
- , tr("Creation of TimebarTimeInfo not allowed from QML"));
- qmlRegisterUncreatableType<KeyframeInfo>("Qt3DStudio", 1, 0, "KeyframeInfo"
- , tr("Creation of KeyframeInfo not allowed from QML"));
- qmlRegisterUncreatableType<CTimelineRow>("Qt3DStudio", 1, 0, "TimelineRow"
- , tr("Creation of TimelineRow not allowed from QML"));
- qmlRegisterType<TimeMeasureItem>("Qt3DStudio", 1, 0, "TimeMeasureItem");
- qmlRegisterType<TimePropertyItem>("Qt3DStudio", 1, 0, "TimePropertyItem");
- engine()->addImportPath(qmlImportPath());
- setSource(QUrl("qrc:/Palettes/Timeline/Timeline.qml"_L1));
-}
-
-CDoc *TimelineView::GetDoc()
-{
- return g_StudioApp.GetCore()->GetDoc();
-}
-
-void TimelineView::OnScalingZoomIn()
-{
- const qreal timeRatio = m_timeRatio * SCALING_PERCENTAGE_INC;
- setTimeRatio(timeRatio);
-}
-
-void TimelineView::OnScalingZoomOut()
-{
- const qreal timeRatio = m_timeRatio * SCALING_PERCENTAGE_DEC;
- setTimeRatio(timeRatio);
-}
-
-void TimelineView::RegisterGlobalKeyboardShortcuts(CHotKeys *inShortcutHandler, QWidget *actionParent)
-{
- Q_UNUSED(inShortcutHandler);
-
- ADD_GLOBAL_SHORTCUT(actionParent,
- QKeySequence(Qt::Key_Plus),
- TimelineView::OnScalingZoomIn);
- ADD_GLOBAL_SHORTCUT(actionParent,
- QKeySequence(Qt::Key_Minus),
- TimelineView::OnScalingZoomOut);
-}
diff --git a/src/Authoring/Studio/Palettes/Timeline/TimelineView.h b/src/Authoring/Studio/Palettes/Timeline/TimelineView.h
deleted file mode 100644
index d94ed9e3..00000000
--- a/src/Authoring/Studio/Palettes/Timeline/TimelineView.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef TIMELINEVIEW_H
-#define TIMELINEVIEW_H
-
-#include <QQuickWidget>
-
-#include "DispatchListeners.h"
-#include "ObjectListModel.h"
-#include "Qt3DSDMHandles.h"
-#include "Qt3DSDMSignals.h"
-#include "SelectedValueImpl.h"
-#include "TimelineObjectModel.h"
-
-#include "TimelineRow.h" // for DEFAULT_TIME_RATIO
-
-class CDoc;
-class CTimelineTranslationManager;
-class CHotKeys;
-
-QT_FORWARD_DECLARE_CLASS(QAbstractItemModel)
-
-class TimelineView : public QQuickWidget,
- public CPresentationChangeListener,
- public CClientPlayChangeListener
-
-{
- Q_OBJECT
- Q_PROPERTY(QAbstractItemModel *objectModel READ objectModel NOTIFY objectModelChanged FINAL)
- Q_PROPERTY(int selection READ selection WRITE setSelection NOTIFY selectionChanged FINAL)
- Q_PROPERTY(bool hideShy READ hideShy WRITE setHideShy NOTIFY hideShyChanged)
- Q_PROPERTY(bool hideHidden READ hideHidden WRITE setHideHidden NOTIFY hideHiddenChanged)
- Q_PROPERTY(bool hideLocked READ hideLocked WRITE setHideLocked NOTIFY hideLockedChanged)
- Q_PROPERTY(qreal timeRatio READ timeRatio WRITE setTimeRatio NOTIFY timeRatioChanged FINAL)
- Q_PROPERTY(long currentTime READ currentTime WRITE setCurrentTime NOTIFY currentTimeChanged FINAL)
- Q_PROPERTY(double currentTimePos READ currentTimePos NOTIFY currentTimeChanged FINAL)
-public:
- explicit TimelineView(QWidget *parent = nullptr);
-
- QAbstractItemModel *objectModel() const;
-
- int selection() const { return m_selection; }
- void setSelection(int index);
-
- qreal timeRatio() const { return m_timeRatio; }
- void setTimeRatio(qreal timeRatio);
-
- void RegisterGlobalKeyboardShortcuts(CHotKeys *inShortcutHandler, QWidget *actionParent);
-
- // Presentation Change Listener
- void OnNewPresentation() override;
- void OnClosingPresentation() override;
- void OnSelectionChange(Q3DStudio::SSelectedValue inNewSelectable);
-
- //CClientPlayChangeListener
- void OnTimeChanged(long inTime) override;
-
- Q_INVOKABLE void select(int index, Qt::KeyboardModifiers modifiers);
- Q_INVOKABLE void setNewTimePosition(double position);
-
- void setHideShy(bool enabled);
- bool hideShy() const;
- void setHideHidden(bool enabled);
- bool hideHidden() const;
- void setHideLocked(bool enabled);
- bool hideLocked() const;
-
- void setCurrentTime(long newTime);
- long currentTime() const;
- double currentTimePos() const;
-
-Q_SIGNALS:
- void objectModelChanged();
- void selectionChanged();
- void hideShyChanged();
- void hideHiddenChanged();
- void hideLockedChanged();
- void timeRatioChanged(qreal timeRatio);
- void currentTimeChanged();
-
-protected:
- void OnScalingZoomIn();
- void OnScalingZoomOut();
-
- // DataModel callbacks
- virtual void OnActiveSlide(const qt3dsdm::Qt3DSDMSlideHandle &inMaster, int inIndex,
- const qt3dsdm::Qt3DSDMSlideHandle &inSlide);
- void OnAnimationDeleted(qt3dsdm::Qt3DSDMInstanceHandle parentInstance,
- qt3dsdm::Qt3DSDMPropertyHandle property);
- void OnAnimationCreated(qt3dsdm::Qt3DSDMInstanceHandle parentInstance,
- qt3dsdm::Qt3DSDMPropertyHandle property);
- void OnActionEvent(qt3dsdm::Qt3DSDMActionHandle inAction, qt3dsdm::Qt3DSDMSlideHandle inSlide,
- qt3dsdm::Qt3DSDMInstanceHandle inOwner);
-
-
-private:
- void initialize();
- inline CDoc *GetDoc();
-
- std::vector<std::shared_ptr<qt3dsdm::ISignalConnection>>
- m_Connections; /// connections to the DataModel
- FlatObjectListModel *m_model = nullptr;
- TimelineObjectModel *m_objectListModel = nullptr;
- qt3dsdm::Qt3DSDMSlideHandle m_activeSlide;
-
- CTimelineTranslationManager *m_translationManager = nullptr;
-
- int m_selection = -1;
- QColor m_BaseColor = QColor::fromRgb(75, 75, 75);
- qreal m_timeRatio = DEFAULT_TIME_RATIO;
- long m_currentTime = 0;
-};
-
-#endif // TIMELINEVIEW_H
diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp
index 97a39690..e60d7ddd 100644
--- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp
+++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp
@@ -51,6 +51,7 @@
#include "Bindings/ITimelineTimebar.h"
#include "Bindings/Qt3DSDMTimelineItemBinding.h"
#include "Bindings/Qt3DSDMTimelineItemProperty.h"
+#include "Bindings/TimelineBreadCrumbProvider.h"
#include "TimeEditDlg.h"
#include "IDocumentEditor.h"
#include "Control.h"
@@ -141,6 +142,7 @@ TimelineWidget::TimelineWidget(const QSize &preferredSize, QWidget *parent)
// Mahmoud_TODO: CTimelineTranslationManager should be eventually removed or cleaned. Already
// most of its functionality is implemented in this class
m_translationManager = new CTimelineTranslationManager();
+ m_BreadCrumbProvider = new CTimelineBreadCrumbProvider(g_StudioApp.GetCore()->GetDoc());
setWindowTitle(tr("Timeline", "Title of timeline view"));
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
@@ -345,6 +347,7 @@ Q3DStudio::CString TimelineWidget::getPlaybackMode()
TimelineWidget::~TimelineWidget()
{
m_graphicsScene->keyframeManager()->deselectAllKeyframes();
+ delete m_BreadCrumbProvider;
}
QSize TimelineWidget::sizeHint() const
@@ -678,7 +681,7 @@ void TimelineWidget::onAsyncUpdate()
m_graphicsScene->rowManager()->recreateRowsFromBinding(m_binding);
m_handlesMap.clear();
insertToHandlesMapRecursive(m_binding);
- m_navigationBar->updateNavigationItems(m_translationManager->GetBreadCrumbProvider());
+ m_navigationBar->updateNavigationItems(m_BreadCrumbProvider);
m_graphicsScene->updateSnapSteps();
m_fullReconstruct = false;
m_graphicsScene->rowManager()->updateFiltering();
diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.h b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.h
index d34d0ec7..d7b22925 100644
--- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.h
+++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.h
@@ -36,7 +36,6 @@
#include "Qt3DSDMHandles.h"
#include "Qt3DSDMSignals.h"
#include "SelectedValueImpl.h"
-#include "TimelineObjectModel.h"
#include "TreeHeaderView.h"
#include "Bindings/Qt3DSDMTimeline.h"
#include "NavigationBar.h"
@@ -49,6 +48,7 @@ class TimelineGraphicsScene;
class CTimelineTranslationManager;
class Qt3DSDMTimelineItemBinding;
class CClientDataModelBridge;
+class IBreadCrumbProvider;
QT_FORWARD_DECLARE_CLASS(QMouseEvent)
QT_FORWARD_DECLARE_CLASS(QGraphicsView)
@@ -138,6 +138,10 @@ private:
void insertToHandlesMapRecursive(Qt3DSDMTimelineItemBinding *binding);
void insertToHandlesMap(Qt3DSDMTimelineItemBinding *binding);
Q3DStudio::CString getPlaybackMode();
+ void refreshKeyframe(qt3dsdm::Qt3DSDMAnimationHandle inAnimation,
+ qt3dsdm::Qt3DSDMKeyframeHandle inKeyframe,
+ ETimelineKeyframeTransaction inTransaction);
+
TreeHeaderView *m_viewTreeHeader = nullptr;
QGraphicsView *m_viewTreeContent = nullptr;
QGraphicsView *m_viewTimelineHeader = nullptr;
@@ -147,7 +151,6 @@ private:
TimelineGraphicsScene *m_graphicsScene;
TimelineSplitter *m_splitter = nullptr;
CTimelineTranslationManager *m_translationManager = nullptr;
- TimelineObjectModel *m_objectListModel = nullptr;
FlatObjectListModel *m_model = nullptr;
Qt3DSDMTimelineItemBinding *m_binding = nullptr;
bool m_splitterPressed = false;
@@ -157,14 +160,12 @@ private:
QTimer m_asyncUpdateTimer;
bool m_fullReconstruct = false;
CClientDataModelBridge *m_bridge = nullptr;
+ IBreadCrumbProvider *m_BreadCrumbProvider = nullptr;
// data model connection
std::vector<std::shared_ptr<qt3dsdm::ISignalConnection>> m_connections;
qt3dsdm::Qt3DSDMSlideHandle m_activeSlide;
THandleMap m_handlesMap;
- void refreshKeyframe(qt3dsdm::Qt3DSDMAnimationHandle inAnimation,
- qt3dsdm::Qt3DSDMKeyframeHandle inKeyframe,
- ETimelineKeyframeTransaction inTransaction);
};
#endif // TIMELINEWIDGET_H
diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/NavigationBar.h b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/NavigationBar.h
index c25f6482..f08e4220 100644
--- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/NavigationBar.h
+++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/NavigationBar.h
@@ -32,7 +32,7 @@
#include <QtCore/qpropertyanimation.h>
#include <QtWidgets/qwidget.h>
#include <QtWidgets/qboxlayout.h>
-#include "IBreadCrumbProvider.h"
+#include "Bindings/IBreadCrumbProvider.h"
class NavigationBar : public QWidget
{
diff --git a/src/Authoring/Studio/Qt3DStudio.pro b/src/Authoring/Studio/Qt3DStudio.pro
index 0e479438..68b0a740 100644
--- a/src/Authoring/Studio/Qt3DStudio.pro
+++ b/src/Authoring/Studio/Qt3DStudio.pro
@@ -161,24 +161,12 @@ HEADERS += \
Palettes/Slide/SlideContextMenu.h \
Palettes/Slide/SlideModel.h \
Palettes/Slide/SlideView.h \
- Palettes/Timeline/AbstractTimelineRowUI.h \
- Palettes/Timeline/BaseStateRow.h \
- Palettes/Timeline/Bindings/IKeyframeSelector.h \
Palettes/Timeline/Bindings/ITimelineItem.h \
Palettes/Timeline/Bindings/ITimelineItemBinding.h \
Palettes/Timeline/Bindings/ITimelineItemProperty.h \
Palettes/Timeline/Bindings/ITimelineKeyframesManager.h \
Palettes/Timeline/Bindings/ITimelineTimebar.h \
- Palettes/Timeline/IBreadCrumbProvider.h \
- Palettes/Timeline/PropertyRow.h \
- Palettes/Timeline/SlideRow.h \
- Palettes/Timeline/StateRow.h \
- Palettes/Timeline/TimelineObjectModel.h \
- Palettes/Timeline/TimelineRow.h \
- Palettes/Timeline/TimelineUIFactory.h \
- Palettes/Timeline/TimelineView.h \
- Palettes/Timeline/TimeMeasureItem.h \
- Palettes/Timeline/TimePropertyItem.h \
+ Palettes/Timeline/Bindings/IBreadCrumbProvider.h \
Palettes/TimelineGraphicsView/Keyframe.h \
Palettes/TimelineGraphicsView/KeyframeManager.h \
Palettes/TimelineGraphicsView/RowManager.h \
@@ -352,13 +340,10 @@ SOURCES += \
Palettes/Slide/SlideContextMenu.cpp \
Palettes/Slide/SlideModel.cpp \
Palettes/Slide/SlideView.cpp \
- Palettes/Timeline/AbstractTimelineRowUI.cpp \
- Palettes/Timeline/BaseStateRow.cpp \
Palettes/Timeline/Bindings/BehaviorTimelineItemBinding.cpp \
Palettes/Timeline/Bindings/EmptyTimelineTimebar.cpp \
Palettes/Timeline/Bindings/GroupTimelineItemBinding.cpp \
Palettes/Timeline/Bindings/ImageTimelineItemBinding.cpp \
- Palettes/Timeline/Bindings/KeyframesManager.cpp \
Palettes/Timeline/Bindings/LayerTimelineItemBinding.cpp \
Palettes/Timeline/Bindings/MaterialTimelineItemBinding.cpp \
Palettes/Timeline/Bindings/OffsetKeyframesCommandHelper.cpp \
@@ -372,27 +357,6 @@ SOURCES += \
Palettes/Timeline/Bindings/SlideTimelineItemBinding.cpp \
Palettes/Timeline/Bindings/TimelineBreadCrumbProvider.cpp \
Palettes/Timeline/Bindings/TimelineTranslationManager.cpp \
- Palettes/Timeline/ColorBlankControl.cpp \
- Palettes/Timeline/ColorControl.cpp \
- Palettes/Timeline/CommentEdit.cpp \
- Palettes/Timeline/PropertyColorControl.cpp \
- Palettes/Timeline/PropertyGraphKeyframe.cpp \
- Palettes/Timeline/PropertyRow.cpp \
- Palettes/Timeline/PropertyTimebarGraph.cpp \
- Palettes/Timeline/ScalableScroller.cpp \
- Palettes/Timeline/ScalableScrollerBar.cpp \
- Palettes/Timeline/SlideRow.cpp \
- Palettes/Timeline/Snapper.cpp \
- Palettes/Timeline/StateRow.cpp \
- Palettes/Timeline/StateRowFactory.cpp \
- Palettes/Timeline/TimelineFilter.cpp \
- Palettes/Timeline/TimelineKeyframe.cpp \
- Palettes/Timeline/TimelineObjectModel.cpp \
- Palettes/Timeline/TimelineRow.cpp \
- Palettes/Timeline/TimelineUIFactory.cpp \
- Palettes/Timeline/TimelineView.cpp \
- Palettes/Timeline/TimeMeasureItem.cpp \
- Palettes/Timeline/TimePropertyItem.cpp \
Palettes/TimelineGraphicsView/KeyframeManager.cpp \
Palettes/TimelineGraphicsView/RowManager.cpp \
Palettes/TimelineGraphicsView/RowMover.cpp \
diff --git a/src/Authoring/Studio/qml.qrc b/src/Authoring/Studio/qml.qrc
index 325d91ae..a3f2aa1d 100644
--- a/src/Authoring/Studio/qml.qrc
+++ b/src/Authoring/Studio/qml.qrc
@@ -38,11 +38,6 @@
<file>Palettes/controls/StyledTooltip.qml</file>
<file>Palettes/controls/StyledToolButton.qml</file>
<file>Palettes/controls/StyledMenuSeparator.qml</file>
- <file>Palettes/Timeline/Timeline.qml</file>
- <file>Palettes/Timeline/TimelineItem.qml</file>
- <file>Palettes/Timeline/Keyframes.qml</file>
<file>Palettes/controls/StyledToggleButton.qml</file>
- <file>Palettes/Timeline/TimelineTreeDelegate.qml</file>
- <file>Palettes/Timeline/PlayHead.qml</file>
</qresource>
</RCC>