summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/Palettes/Timeline/StateTimebarRow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Authoring/Studio/Palettes/Timeline/StateTimebarRow.cpp')
-rw-r--r--src/Authoring/Studio/Palettes/Timeline/StateTimebarRow.cpp156
1 files changed, 156 insertions, 0 deletions
diff --git a/src/Authoring/Studio/Palettes/Timeline/StateTimebarRow.cpp b/src/Authoring/Studio/Palettes/Timeline/StateTimebarRow.cpp
new file mode 100644
index 00000000..0a0ba258
--- /dev/null
+++ b/src/Authoring/Studio/Palettes/Timeline/StateTimebarRow.cpp
@@ -0,0 +1,156 @@
+/****************************************************************************
+**
+** 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 "StateTimebarRow.h"
+#include "Renderer.h"
+#include "StateRow.h"
+#include "StudioPreferences.h"
+#include "TimebarControl.h"
+#include "MasterP.h"
+#include "Snapper.h"
+#include "Bindings/ITimelineItemBinding.h"
+
+//=============================================================================
+/**
+ * Creates a new CStateTimebarRow for the StateRow.
+ * @param inStateRow the State Row that this is on.
+ * @param inCreateTimebar true if the constructor is responsible for creating a timebar, otherwise
+ * the derived class will take care of the construction.
+ *
+ */
+CStateTimebarRow::CStateTimebarRow(CStateRow *inStateRow, bool inCreateTimebar /*=true*/)
+ : CStateTimebarlessRow(inStateRow)
+ , m_Timebar(nullptr)
+{
+ if (inCreateTimebar) {
+ m_Timebar = new CTimebarControl(this, inStateRow->GetTimelineItemBinding());
+ m_Timebar->SetMinimumSize(CPt(0, CStudioPreferences::GetRowSize()));
+
+ AddChild(m_Timebar);
+ }
+}
+
+CStateTimebarRow::~CStateTimebarRow()
+{
+ delete m_Timebar;
+}
+
+//=============================================================================
+/**
+ * OnMouseRDown event, handles context menus for this object.
+ * @param inPoint the location of the mouse over this control.
+ * @param inFlags the mouse state flags.
+ */
+bool CStateTimebarRow::OnMouseRDown(CPt inPoint, Qt::KeyboardModifiers inFlags)
+{
+ if (!CStateTimebarlessRow::OnMouseRDown(inPoint, inFlags)) {
+ CPt theTimebarPoint = inPoint - m_Timebar->GetPosition();
+ m_Timebar->ShowContextMenu(theTimebarPoint, false);
+ }
+ return true;
+}
+
+//=============================================================================
+/**
+ * Set the amount of time that is being represented per pixel.
+ * @param inTimerPerPixel the amound of time being represented per pixel.
+ */
+void CStateTimebarRow::SetTimeRatio(double inTimeRatio)
+{
+ CStateTimebarlessRow::SetTimeRatio(inTimeRatio);
+
+ m_Timebar->SetTimeRatio(inTimeRatio);
+}
+
+//=============================================================================
+/**
+ * Notification that the object that this row is representing has been selected.
+ */
+void CStateTimebarRow::OnSelect()
+{
+ CStateTimebarlessRow::OnSelect();
+
+ m_Timebar->SetSelected(true);
+}
+
+//=============================================================================
+/**
+ * Notification that the object that this row is representing has been deselected.
+ */
+void CStateTimebarRow::OnDeselect()
+{
+ CStateTimebarlessRow::OnDeselect();
+
+ m_Timebar->SetSelected(false);
+}
+
+//=============================================================================
+/**
+ * Notification from the Asset that it's time has changed.
+ * @param inStartTime the new start time.
+ * @param inEndTime the new end time.
+ */
+void CStateTimebarRow::UpdateTime(long inStartTime, long inEndTime)
+{
+ m_Timebar->Refresh(inStartTime, inEndTime);
+ Invalidate();
+}
+
+void CStateTimebarRow::PopulateSnappingList(CSnapper *inSnappingList)
+{
+ if (inSnappingList->GetSource() != m_Timebar) {
+ inSnappingList->AddTime(m_Timebar->GetStartTime());
+ inSnappingList->AddTime(m_Timebar->GetEndTime());
+ }
+ m_Timebar->PopulateSnappingList(inSnappingList);
+ CStateTimebarlessRow::PopulateSnappingList(inSnappingList);
+}
+
+//=============================================================================
+/**
+ * called when meta data for this row is changed... should be overridden by the
+ * timebar row
+ */
+void CStateTimebarRow::RefreshRowMetaData()
+{
+ Invalidate();
+ m_Timebar->RefreshMetaData();
+}
+
+void CStateTimebarRow::SetSnappingListProvider(ISnappingListProvider *inProvider)
+{
+ m_Timebar->SetSnappingListProvider(inProvider);
+}
+
+ISnappingListProvider &CStateTimebarRow::GetSnappingListProvider() const
+{
+ return m_Timebar->GetSnappingListProvider();
+}