Browse Source

Fix temporary icon now showing up when dragging out a prefab

Josh Engebretson 10 years ago
parent
commit
815322cda1

+ 21 - 1
Script/AtomicEditor/ui/HierarchyFrame.ts

@@ -3,6 +3,8 @@ import HierarchyFrameMenu = require("./HierarchyFrameMenu");
 import MenuItemSources = require("./menus/MenuItemSources");
 import EditorEvents = require("../editor/EditorEvents");
 
+var IconTemporary = "ComponentBitmap";
+
 class HierarchyFrame extends Atomic.UIWidget {
 
     scene: Atomic.Scene = null;
@@ -55,6 +57,24 @@ class HierarchyFrame extends Atomic.UIWidget {
 
         });
 
+        this.subscribeToEvent("TemporaryChanged", (ev: Atomic.TemporaryChangedEvent) => {
+
+            if (ev.serializable.typeName == "Node") {
+
+                var node = <Atomic.Node> ev.serializable;
+
+                var itemID = this.nodeIDToItemID[node.id];
+
+                if (itemID) {
+
+                    this.hierList.setItemIcon(node.id.toString(), IconTemporary);
+
+                }
+
+            }
+
+        });
+
     }
 
     handleNodeAdded(ev: Atomic.NodeAddedEvent) {
@@ -249,7 +269,7 @@ class HierarchyFrame extends Atomic.UIWidget {
         var icon = "";
 
         if (node.isTemporary())
-            icon = "ComponentBitmap";
+            icon = IconTemporary;
 
         var childItemID = this.hierList.addChildItem(parentID, name, icon, node.id.toString());
 

+ 1 - 0
Script/TypeScript/Atomic.d.ts

@@ -7125,6 +7125,7 @@ declare module Atomic {
       addRootItem(text: string, icon: string, id: string): number;
       addChildItem(parentItemID: number, text: string, icon: string, id: string): number;
       setItemText(id: string, text: string): void;
+      setItemIcon(id: string, icon: string): void;
       deleteItemByID(id: string): void;
       setExpanded(itemID: number, value: boolean): void;
       deleteAllItems(): void;

+ 6 - 0
Script/TypeScript/AtomicWork.d.ts

@@ -101,6 +101,12 @@ declare module Atomic {
         dragObject: UIDragObject;
     }
 
+    export interface TemporaryChangedEvent {
+
+      serializable: Atomic.Serializable;
+
+    }
+
     export interface IPCJSErrorEvent {
 
       errorName:string;

+ 35 - 3
Source/Atomic/UI/UIListView.cpp

@@ -61,6 +61,7 @@ public:
     }
 
     void UpdateText(const String& text);
+    void UpdateIcon(const String& icon);
 
     ListViewItemSource* source_;
     ListViewItem* parent_;
@@ -82,9 +83,17 @@ public:
             textField_->SetText(text.CString());
     }
 
+    void UpdateIcon(const String& icon)
+    {
+        if (icon_)
+            icon_->SetSkinBg(TBIDC(icon.CString()));
+    }
+
+
 private:
     TBCheckBox* expandBox_;
     TBTextField* textField_;    
+    TBSkinImage* icon_;
     ListViewItemSource *source_;
     TBSelectItemViewer *sourceviewer_;
     int index_;
@@ -110,6 +119,13 @@ void ListViewItem::UpdateText(const String& text)
         widget_->UpdateText(text);
 }
 
+void ListViewItem::UpdateIcon(const String& icon)
+{
+    icon_ = icon;
+    if (widget_)
+        widget_->UpdateIcon(icon);
+}
+
 ListViewItem* ListViewItem::AddChild(const char *text, const char* icon, const TBID &id)
 {
     ListViewItem* child = new ListViewItem(text, id, icon, source_);
@@ -172,6 +188,7 @@ ListViewItemWidget::ListViewItemWidget(ListViewItem *item, ListViewItemSource *s
     , item_(item)
     , expandBox_(0)
     , textField_(0)
+    , icon_(0)
 {
     SetLayoutDistribution(LAYOUT_DISTRIBUTION_GRAVITY);
     SetLayoutDistributionPosition(LAYOUT_DISTRIBUTION_POSITION_LEFT_TOP);
@@ -209,9 +226,9 @@ ListViewItemWidget::ListViewItemWidget(ListViewItem *item, ListViewItemSource *s
 
     if (item->icon_.Length())
     {
-        TBSkinImage* skinImage = new TBSkinImage(TBIDC(item->icon_.CString()));
-        skinImage->SetIgnoreInput(true);
-        GetContentRoot()->AddChild(skinImage);
+        icon_ = new TBSkinImage(TBIDC(item->icon_.CString()));
+        icon_->SetIgnoreInput(true);
+        GetContentRoot()->AddChild(icon_);
     }
 
     TBFontDescription fd;
@@ -368,6 +385,21 @@ void UIListView::SetItemText(const String& id, const String& text)
 
 }
 
+void UIListView::SetItemIcon(const String& id, const String& icon)
+{
+    TBID tbid(id.CString());
+
+    for (int i = 0; i <  source_->GetNumItems(); i++)
+    {
+        if (source_->GetItemID(i) == tbid)
+        {
+            ListViewItem* item = source_->GetItem(i);
+            item->UpdateIcon(icon);
+            return;
+        }
+    }
+}
+
 void UIListView::DeleteItemByID(const String& id)
 {
     TBID tbid(id.CString());

+ 1 - 0
Source/Atomic/UI/UIListView.h

@@ -27,6 +27,7 @@ public:
 
 
     void SetItemText(const String& id, const String& text);
+    void SetItemIcon(const String& id, const String& icon);
     void DeleteItemByID(const String& id);
 
     void SetExpanded(unsigned itemID, bool value);