From ccd4215fd4292ed34d68dd7be2c2cc2de92addcc Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Fri, 30 Apr 2010 19:55:00 +0300
Subject: [PATCH] Implemented task EXT-6559 (Appearance panel: Add edit button
 in place of the image display next to current look).

- Changed the topmost part of the Appearance panel:
  * Added new "Edit current outfit" button.
  * Implemented COF status display (unsaved/wearing) according to the spec.
  * Minor XUI changes (font / dimensions / bg color).
- Removed the temporary "Edit current outfit" button from the bottom of the Appearance panel.
- Removed the temporary "ShowDebugAppearanceEditor" setting.

TODO: use icons from the spec (currently missing).

Reviewed by Nyx at https://codereview.productengine.com/secondlife/r/339/

--HG--
branch : product-engine
---
 indra/newview/app_settings/settings.xml       | 11 ---
 indra/newview/llpaneloutfitsinventory.cpp     | 13 ---
 indra/newview/llpaneloutfitsinventory.h       |  3 -
 indra/newview/llsidepanelappearance.cpp       | 18 +++-
 indra/newview/llsidepanelappearance.h         |  3 +-
 indra/newview/llviewercontrol.cpp             |  7 --
 .../xui/en/panel_outfits_inventory.xml        | 25 ++----
 .../default/xui/en/sidepanel_appearance.xml   | 84 ++++++++++++-------
 8 files changed, 79 insertions(+), 85 deletions(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 280c3d642c2..73eb269f66f 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -7963,17 +7963,6 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
-    <key>ShowDebugAppearanceEditor</key>
-    <map>
-      <key>Comment</key>
-      <string>Show debugging appearance editor</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
     <key>ShowEmptyFoldersWhenSearching</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index 80964938f5f..59c1fb4f3c5 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -68,7 +68,6 @@ static const std::string OUTFITS_TAB_NAME = "outfitslist_tab";
 static const std::string COF_TAB_NAME = "cof_tab";
 
 static LLRegisterPanelClassWrapper<LLPanelOutfitsInventory> t_inventory("panel_outfits_inventory");
-bool LLPanelOutfitsInventory::sShowDebugEditor = false;
 
 
 LLPanelOutfitsInventory::LLPanelOutfitsInventory() :
@@ -88,7 +87,6 @@ LLPanelOutfitsInventory::~LLPanelOutfitsInventory()
 // virtual
 BOOL LLPanelOutfitsInventory::postBuild()
 {
-	sShowDebugEditor = gSavedSettings.getBOOL("ShowDebugAppearanceEditor");
 	initTabPanels();
 	initListCommandsHandlers();
 
@@ -133,7 +131,6 @@ void LLPanelOutfitsInventory::updateVerbs()
 
 	if (mListCommands)
 	{
-		mListCommands->childSetVisible("edit_current_outfit_btn",sShowDebugEditor);
 		updateListCommands();
 	}
 }
@@ -307,14 +304,6 @@ void LLPanelOutfitsInventory::onSelectionChange(const std::deque<LLFolderViewIte
 	}
 }
 
-void LLPanelOutfitsInventory::showEditOutfitPanel()
-{
-	LLSD key;
-	key["type"] = "edit_outfit";
-	
-	LLSideTray::getInstance()->showPanel("sidepanel_appearance", key);
-}
-
 LLFolderViewEventListener *LLPanelOutfitsInventory::getCorrectListenerForAction()
 {
 	// TODO: add handling "My Outfits" tab.
@@ -369,8 +358,6 @@ void LLPanelOutfitsInventory::initListCommandsHandlers()
 	mListCommands->childSetAction("make_outfit_btn", boost::bind(&LLPanelOutfitsInventory::onAddButtonClick, this));
 	mListCommands->childSetAction("wear_btn", boost::bind(&LLPanelOutfitsInventory::onWearButtonClick, this));
 
-	mListCommands->childSetAction("edit_current_outfit_btn", boost::bind(&LLPanelOutfitsInventory::showEditOutfitPanel, this));
-
 	LLDragAndDropButton* trash_btn = mListCommands->getChild<LLDragAndDropButton>("trash_btn");
 	trash_btn->setDragAndDropHandler(boost::bind(&LLPanelOutfitsInventory::handleDragAndDropToTrash, this
 				   ,       _4 // BOOL drop
diff --git a/indra/newview/llpaneloutfitsinventory.h b/indra/newview/llpaneloutfitsinventory.h
index 4234cc45c52..975d99f8346 100644
--- a/indra/newview/llpaneloutfitsinventory.h
+++ b/indra/newview/llpaneloutfitsinventory.h
@@ -65,7 +65,6 @@ class LLPanelOutfitsInventory : public LLPanel
 	bool onSaveCommit(const LLSD& notification, const LLSD& response);
 
 	void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action);
-	void showEditOutfitPanel();
 
 	// If a compatible listener type is selected, then return a pointer to that.
 	// Otherwise, return NULL.
@@ -131,8 +130,6 @@ class LLPanelOutfitsInventory : public LLPanel
 	// List Commands                                                              //
 	////////////////////////////////////////////////////////////////////////////////
 	///
-public:
-	static bool sShowDebugEditor;
 };
 
 #endif //LL_LLPANELOUTFITSINVENTORY_H
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index f38df19de0a..08098e2adb3 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -44,6 +44,7 @@
 #include "llfoldervieweventlistener.h"
 #include "llpaneleditwearable.h"
 #include "llpaneloutfitsinventory.h"
+#include "llsidetray.h"
 #include "lltextbox.h"
 #include "lluictrlfactory.h"
 #include "llviewerregion.h"
@@ -115,6 +116,8 @@ BOOL LLSidepanelAppearance::postBuild()
 	mEditAppearanceBtn = getChild<LLButton>("editappearance_btn");
 	mEditAppearanceBtn->setClickedCallback(boost::bind(&LLSidepanelAppearance::onEditAppearanceButtonClicked, this));
 
+	childSetAction("edit_outfit_btn", boost::bind(&LLSidepanelAppearance::onEditOutfitButtonClicked, this));
+
 	mEditBtn = getChild<LLButton>("edit_btn");
 	mEditBtn->setClickedCallback(boost::bind(&LLSidepanelAppearance::onEditButtonClicked, this));
 
@@ -154,7 +157,7 @@ BOOL LLSidepanelAppearance::postBuild()
 
 	mCurrentLookName = getChild<LLTextBox>("currentlook_name");
 
-	mOutfitDirtyTag = getChild<LLTextBox>("currentlook_title");
+	mOutfitStatus = getChild<LLTextBox>("currentlook_status");
 	
 	mCurrOutfitPanel = getChild<LLPanel>("panel_currentlook");
 
@@ -238,6 +241,13 @@ void LLSidepanelAppearance::onEditAppearanceButtonClicked()
 	}
 }
 
+void LLSidepanelAppearance::onEditOutfitButtonClicked()
+{
+	LLSD key;
+	key["type"] = "edit_outfit";
+	LLSideTray::getInstance()->showPanel("sidepanel_appearance", key);
+}
+
 void LLSidepanelAppearance::onEditButtonClicked()
 {
 	toggleOutfitEditPanel(FALSE);
@@ -339,7 +349,11 @@ void LLSidepanelAppearance::updateVerbs()
 
 void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
 {
-	mOutfitDirtyTag->setVisible(LLAppearanceMgr::getInstance()->isOutfitDirty());
+	// Set current outfit status (wearing/unsaved).
+	bool dirty = LLAppearanceMgr::getInstance()->isOutfitDirty();
+	std::string cof_status_str = getString(dirty ? "Unsaved Changes" : "Now Wearing");
+	mOutfitStatus->setText(cof_status_str);
+
 	if (name == "")
 	{
 		std::string outfit_name;
diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h
index 0a609797fb0..0a2d882a0b4 100644
--- a/indra/newview/llsidepanelappearance.h
+++ b/indra/newview/llsidepanelappearance.h
@@ -71,6 +71,7 @@ class LLSidepanelAppearance : public LLPanel
 
 	void onOpenOutfitButtonClicked();
 	void onEditAppearanceButtonClicked();
+	void onEditOutfitButtonClicked();
 	void onEditButtonClicked();
 	void onEditWearBackClicked();
 
@@ -90,7 +91,7 @@ class LLSidepanelAppearance : public LLPanel
 	LLPanel*					mCurrOutfitPanel;
 
 	LLTextBox*					mCurrentLookName;
-	LLTextBox*					mOutfitDirtyTag;
+	LLTextBox*					mOutfitStatus;
 
 	// Used to make sure the user's inventory is in memory.
 	LLCurrentlyWornFetchObserver* mFetchWorn;
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 874995a09ed..ee3b27c8da3 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -496,12 +496,6 @@ bool toggle_show_favorites_panel(const LLSD& newvalue)
 	return true;
 }
 
-bool toggle_show_appearance_editor(const LLSD& newvalue)
-{
-	LLPanelOutfitsInventory::sShowDebugEditor = newvalue.asBoolean();
-	return true;
-}
-
 bool toggle_show_object_render_cost(const LLSD& newvalue)
 {
 	LLFloaterTools::sShowObjectCost = newvalue.asBoolean();
@@ -650,7 +644,6 @@ void settings_setup_listeners()
 	gSavedSettings.getControl("ShowSnapshotButton")->getSignal()->connect(boost::bind(&toggle_show_snapshot_button, _2));
 	gSavedSettings.getControl("ShowNavbarNavigationPanel")->getSignal()->connect(boost::bind(&toggle_show_navigation_panel, _2));
 	gSavedSettings.getControl("ShowNavbarFavoritesPanel")->getSignal()->connect(boost::bind(&toggle_show_favorites_panel, _2));
-	gSavedSettings.getControl("ShowDebugAppearanceEditor")->getSignal()->connect(boost::bind(&toggle_show_appearance_editor, _2));
 	gSavedSettings.getControl("ShowObjectRenderingCost")->getSignal()->connect(boost::bind(&toggle_show_object_render_cost, _2));
 	gSavedSettings.getControl("ForceShowGrid")->getSignal()->connect(boost::bind(&handleForceShowGrid, _2));
 }
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
index b8ad278da75..9e59651bd1d 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
@@ -5,7 +5,7 @@
  background_opaque="true"
  background_visible="true"
   follows="all"
- height="570"
+ height="575"
  label="Things"
  layout="topleft"
  min_height="350"
@@ -14,7 +14,7 @@
  border="false">
    <tab_container
      follows="all"
-     height="501"
+     height="509"
      layout="topleft"
      left="7"
      name="appearance_tabs"
@@ -22,6 +22,7 @@
      tab_height="30"
      tab_position="top"
      halign="center"
+     top="8"
      width="312">
          <panel
            class="outfits_list"
@@ -50,8 +51,8 @@
    </tab_container>
 	 <panel
        background_visible="true"
-	  follows="bottom|left"
-	  height="73"
+	  follows="bottom|left|right"
+	  height="57"
 	  layout="topleft"
 	  left="9"
 	  top_pad="-1"
@@ -72,7 +73,7 @@
          top="1"
          width="31" />
      <icon
-      follows="bottom|left"
+      follows="bottom|left|right"
       height="25"
       image_name="Toolbar_Middle_Off"
       layout="topleft"
@@ -82,7 +83,7 @@
         />
 
         <dnd_button
-         follows="bottom|left"
+         follows="bottom|right"
          height="25"
          image_hover_unselected="Toolbar_Right_Over"
           image_overlay="TrashItem_Off"
@@ -104,7 +105,7 @@
        left="0"
       width="153" />
      <button
-      follows="bottom|right" 
+      follows="bottom|left|right" 
       height="23" 
       label="Wear"
       layout="topleft"
@@ -112,16 +113,6 @@
       left_pad="3"
       tool_tip="Wear selected outfit"
       width="152" />
-	 <button
-	  follows="bottom|left"
-		height="23" 
-		label="Edit Outfit" 
-		layout="topleft"
-        right="-140"
-		name="edit_current_outfit_btn"
-        top="26"
-        visible="false" 
-		width="50" />
 	 </panel>
        
 </panel>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
index 00b3328bde9..e74c70789fc 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
@@ -15,63 +15,85 @@ width="333">
    <string
    name="No Outfit"
    value="No Outfit" />
+   <string
+   name="Unsaved Changes"
+   value="Unsaved changes" />
+   <string
+   name="Now Wearing"
+   value="Now wearing..." />
    <panel
-   left="0"
-   top="0"
-   follows="all"
+   background_opaque="true"
+   background_visible="true"
+   bg_opaque_color="DkGray2"
+   left="10"
+   top="5"
+   follows="left|top|right"
    layout="topleft"
-   width="330"
+   width="303"
    height="33"
    name="panel_currentlook"
    >
       <button
       follows="left|top"
-      top="0"  width="1" height="1"
+      left="205" top="7" width="20" height="20"
+      label="E"
       layout="topleft"
-      left="0"
-      name="editappearance_btn" />
+      name="editappearance_btn"
+      visible="false" />
       <button
       follows="left|top"
-      top="0"  width="1" height="1"
+      left="235" top="7" width="20" height="20"
+      label="O"
       layout="topleft"
-      left="0"
-      name="openoutfit_btn" />
+      name="openoutfit_btn"
+      visible="false" />
       <icon
       follows="top|left"
-      height="24"
+      height="32"
       image_name="TabIcon_Appearance_Off"
       name="outfit_icon"
       mouse_opaque="false"
       visible="true"
-      left="9"
+      left="0"
       top="0"
-      width="24" />
+      width="32" />
       <text
-      font="SansSerifHugeBold"
+      font="SansSerifSmallBold"
+      text_color="EmphasisColor"
+      width="300"
+      height="10"
+      follows="top|left"
+      layout="topleft"
+      left="35"
+      top="3"
+      mouse_opaque="false"
+      name="currentlook_status" >
+      (Status)
+      </text>
+      <text
+      font="SansSerifLargeBold"
       height="20"
-      left_pad="5"
-      text_color="LtGray"
-      top="0"
+      left="35"
+      text_color="White"
+      top="15"
       use_ellipses="true"
-      width="305"
+      width="230"
       follows="top|left"
-      word_wrap="true"
+      word_wrap="false"
       mouse_opaque="false"
       name="currentlook_name">
       MyOutfit With a really Long Name like MOOSE
       </text>
-      <text
-      font="SansSerifSmall"
-      text_color="White_50"
-      width="300"
-      height="1"
-      follows="top|left"
+      <button
+      follows="left|top"
+      height="20"
+      image_overlay="windows/Icon_Gear_Over.png"
+      label=""
       layout="topleft"
-      top_pad="5"
-      mouse_opaque="false"
-      name="currentlook_title" >
-      (unsaved)
-       </text>
+      left="265"
+      name="edit_outfit_btn"
+      top="7"
+      width="30" />
    </panel>
    <filter_editor
    height="23"
@@ -87,7 +109,7 @@ width="333">
    class="panel_outfits_inventory"
    filename="panel_outfits_inventory.xml"
    name="panel_outfits_inventory"
-   height="505"
+   height="493"
    min_height="410"
    width="320"
    left="0"
-- 
GitLab