Update timeline when piece color or type changes.

This commit is contained in:
leo
2015-07-05 01:04:27 +00:00
parent f5e9591be7
commit 4e0d23e3df
5 changed files with 55 additions and 43 deletions
+2 -2
View File
@@ -1446,9 +1446,9 @@ void lcMainWindow::UpdateSelectedObjects(int Flags, int SelectedCount, lcObject*
mStatusBarLabel->setText(Message);
}
void lcMainWindow::UpdateTimeline(bool Clear)
void lcMainWindow::UpdateTimeline(bool Clear, bool UpdateItems)
{
mTimelineWidget->Update(Clear);
mTimelineWidget->Update(Clear, UpdateItems);
}
void lcMainWindow::UpdatePaste(bool Enabled)
+1 -1
View File
@@ -158,7 +158,7 @@ public:
void UpdateFocusObject(lcObject* Focus);
void UpdateSelectedObjects(int Flags, int SelectedCount, lcObject* Focus);
void UpdateTimeline(bool Clear);
void UpdateTimeline(bool Clear, bool UpdateItems);
void UpdatePaste(bool Enabled);
void UpdateCurrentStep();
void SetAddKeys(bool AddKeys);
+24 -20
View File
@@ -895,7 +895,7 @@ void lcModel::Merge(lcModel* Other)
delete Other;
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, false);
}
void lcModel::Cut()
@@ -904,7 +904,7 @@ void lcModel::Cut()
if (RemoveSelectedObjects())
{
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, false);
gMainWindow->UpdateFocusObject(NULL);
UpdateSelection();
gMainWindow->UpdateAllViews();
@@ -953,7 +953,7 @@ void lcModel::Paste()
SetSelectionAndFocus((lcArray<lcObject*>&)PastedPieces, NULL, 0);
CalculateStep(mCurrentStep);
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, false);
gMainWindow->UpdateAllViews();
}
@@ -1280,7 +1280,7 @@ void lcModel::LoadCheckPoint(lcModelHistoryEntry* CheckPoint)
Buffer.open(QIODevice::ReadOnly);
LoadLDraw(Buffer, lcGetActiveProject());
gMainWindow->UpdateTimeline(true);
gMainWindow->UpdateTimeline(true, false);
gMainWindow->UpdateFocusObject(GetFocusObject());
gMainWindow->UpdateCameraMenu();
UpdateSelection();
@@ -1337,7 +1337,7 @@ void lcModel::SetCurrentStep(lcStep Step)
CalculateStep(Step);
UpdateSelection();
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, false);
gMainWindow->UpdateFocusObject(GetFocusObject());
gMainWindow->UpdateAllViews();
gMainWindow->UpdateCurrentStep();
@@ -1879,7 +1879,7 @@ void lcModel::AddPiece()
Piece->Initialize(WorldMatrix, mCurrentStep);
Piece->SetColorIndex(gMainWindow->mColorIndex);
AddPiece(Piece);
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, false);
ClearSelectionAndSetFocus(Piece, LC_PIECE_SECTION_POSITION);
SaveCheckpoint("Adding Piece");
@@ -1925,7 +1925,7 @@ void lcModel::DeleteSelectedObjects()
{
if (RemoveSelectedObjects())
{
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, false);
gMainWindow->UpdateFocusObject(NULL);
UpdateSelection();
gMainWindow->UpdateAllViews();
@@ -1971,7 +1971,7 @@ void lcModel::ShowSelectedPiecesEarlier()
SaveCheckpoint("Modifying");
gMainWindow->UpdateAllViews();
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, false);
UpdateSelection();
}
@@ -2016,7 +2016,7 @@ void lcModel::ShowSelectedPiecesLater()
SaveCheckpoint("Modifying");
gMainWindow->UpdateAllViews();
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, false);
UpdateSelection();
}
@@ -2052,7 +2052,7 @@ void lcModel::SetPieceSteps(const QList<QPair<lcPiece*, lcStep>>& PieceSteps)
SaveCheckpoint("Modifying");
gMainWindow->UpdateAllViews();
UpdateSelection();
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, false);
gMainWindow->UpdateFocusObject(GetFocusObject());
}
}
@@ -2309,6 +2309,7 @@ void lcModel::TransformSelectedObjects(lcTransformType TransformType, const lcVe
void lcModel::SetObjectProperty(lcObject* Object, lcObjectPropertyType ObjectPropertyType, const void* Value)
{
QString CheckPointString;
bool UpdateTimelineItems = false;
switch (ObjectPropertyType)
{
@@ -2380,6 +2381,7 @@ void lcModel::SetObjectProperty(lcObject* Object, lcObjectPropertyType ObjectPro
Part->SetColorIndex(ColorIndex);
CheckPointString = tr("Setting Color");
UpdateTimelineItems = true;
}
} break;
@@ -2395,6 +2397,7 @@ void lcModel::SetObjectProperty(lcObject* Object, lcObjectPropertyType ObjectPro
Part->mPieceInfo->AddRef();
CheckPointString = tr("Setting Part");
UpdateTimelineItems = true;
}
} break;
@@ -2516,7 +2519,7 @@ void lcModel::SetObjectProperty(lcObject* Object, lcObjectPropertyType ObjectPro
if (!CheckPointString.isEmpty())
{
SaveCheckpoint(CheckPointString);
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, UpdateTimelineItems);
gMainWindow->UpdateFocusObject(GetFocusObject());
gMainWindow->UpdateAllViews();
}
@@ -3078,7 +3081,7 @@ void lcModel::HideSelectedPieces()
}
UpdateSelection();
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, true);
gMainWindow->UpdateFocusObject(NULL);
gMainWindow->UpdateAllViews();
}
@@ -3094,7 +3097,7 @@ void lcModel::HideUnselectedPieces()
}
UpdateSelection();
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, true);
gMainWindow->UpdateAllViews();
}
@@ -3109,7 +3112,7 @@ void lcModel::UnhideSelectedPieces()
}
UpdateSelection();
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, true);
gMainWindow->UpdateAllViews();
}
@@ -3119,7 +3122,7 @@ void lcModel::UnhideAllPieces()
mPieces[PieceIdx]->SetHidden(false);
UpdateSelection();
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, true);
gMainWindow->UpdateAllViews();
}
@@ -3285,7 +3288,7 @@ void lcModel::InsertPieceToolClicked(const lcMatrix44& WorldMatrix)
Piece->UpdatePosition(mCurrentStep);
AddPiece(Piece);
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, false);
ClearSelectionAndSetFocus(Piece, LC_PIECE_SECTION_POSITION);
SaveCheckpoint(tr("Insert"));
@@ -3406,7 +3409,7 @@ void lcModel::EraserToolClicked(lcObject* Object)
}
delete Object;
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, false);
gMainWindow->UpdateFocusObject(GetFocusObject());
UpdateSelection();
gMainWindow->UpdateAllViews();
@@ -3427,6 +3430,7 @@ void lcModel::PaintToolClicked(lcObject* Object)
SaveCheckpoint(tr("Painting"));
gMainWindow->UpdateFocusObject(GetFocusObject());
gMainWindow->UpdateAllViews();
gMainWindow->UpdateTimeline(false, true);
}
}
@@ -3651,7 +3655,7 @@ void lcModel::ShowArrayDialog()
}
AddToSelection(NewPieces);
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, false);
SaveCheckpoint(tr("Array"));
}
@@ -3684,13 +3688,13 @@ void lcModel::ShowMinifigDialog()
}
SetSelectionAndFocus(Pieces, NULL, 0);
gMainWindow->UpdateTimeline(false);
gMainWindow->UpdateTimeline(false, false);
SaveCheckpoint(tr("Minifig"));
}
void lcModel::UpdateInterface()
{
gMainWindow->UpdateTimeline(true);
gMainWindow->UpdateTimeline(true, false);
gMainWindow->UpdateUndoRedo(mUndoHistory.GetSize() > 1 ? mUndoHistory[0]->Description : NULL, !mRedoHistory.IsEmpty() ? mRedoHistory[0]->Description : NULL);
gMainWindow->UpdatePaste(!g_App->mClipboard.isEmpty());
gMainWindow->UpdateCategories();
+27 -19
View File
@@ -59,7 +59,7 @@ void lcTimelineWidget::CustomMenuRequested(QPoint Pos)
Menu->popup(viewport()->mapToGlobal(Pos));
}
void lcTimelineWidget::Update(bool Clear)
void lcTimelineWidget::Update(bool Clear, bool UpdateItems)
{
if (mIgnoreUpdates)
return;
@@ -143,15 +143,35 @@ void lcTimelineWidget::Update(bool Clear)
}
QTreeWidgetItem* PieceItem = mItems.value(Piece);
bool UpdateItem = UpdateItems;
if (!PieceItem)
{
PieceItem = new QTreeWidgetItem(QStringList(Piece->mPieceInfo->m_strDescription));
PieceItem = new QTreeWidgetItem();
PieceItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled);
PieceItem->setData(0, Qt::UserRole, qVariantFromValue<uintptr_t>((uintptr_t)Piece));
StepItem->insertChild(PieceItemIndex, PieceItem);
mItems[Piece] = PieceItem;
UpdateItem = true;
}
else
{
if (PieceItemIndex >= StepItem->childCount() || PieceItem != StepItem->child(PieceItemIndex))
{
QTreeWidgetItem* PieceParent = PieceItem->parent();
if (PieceParent)
PieceParent->removeChild(PieceItem);
StepItem->insertChild(PieceItemIndex, PieceItem);
}
}
if (UpdateItem)
{
PieceItem->setText(0, Piece->mPieceInfo->m_strDescription);
int ColorIndex = Piece->mColorIndex;
if (!mIcons.contains(ColorIndex))
{
@@ -170,24 +190,12 @@ void lcTimelineWidget::Update(bool Clear)
}
PieceItem->setIcon(0, mIcons[ColorIndex]);
QColor Color = palette().text().color();
if (Piece->IsHidden())
Color.setAlpha(128);
PieceItem->setTextColor(0, Color);
}
else
{
if (PieceItemIndex >= StepItem->childCount() || PieceItem != StepItem->child(PieceItemIndex))
{
QTreeWidgetItem* PieceParent = PieceItem->parent();
if (PieceParent)
PieceParent->removeChild(PieceItem);
StepItem->insertChild(PieceItemIndex, PieceItem);
}
}
QColor Color = palette().text().color();
if (Piece->IsHidden())
Color.setAlpha(128);
PieceItem->setTextColor(0, Color);
PieceItem->setSelected(Piece->IsSelected());
PieceItemIndex++;
+1 -1
View File
@@ -9,7 +9,7 @@ public:
lcTimelineWidget(QWidget* Parent);
virtual ~lcTimelineWidget();
void Update(bool Clear);
void Update(bool Clear, bool UpdateItems);
void UpdateSelection();
public slots: