From baafdf216f482535d675eebcf4220510451d7332 Mon Sep 17 00:00:00 2001
From: Sergei Litovchuk <slitovchuk@productengine.com>
Date: Fri, 5 Mar 2010 15:36:01 +0200
Subject: Fixed (EXT-4704) Add maturity icons to Prefs -> General. - Added
 icons updating upon opening Prefs -> General panel.

--HG--
branch : product-engine
---
 indra/newview/llfloaterpreference.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 839d3f0c21..8bffe9bf57 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -537,10 +537,10 @@ void LLFloaterPreference::onOpen(const LLSD& key)
 	{
 		childSetText("maturity_desired_textbox",  maturity_combo->getSelectedItemLabel());
 		childSetVisible("maturity_desired_combobox", false);
-
-		// Display selected maturity icons.
-		onChangeMaturity();
 	}
+
+	// Display selected maturity icons.
+	onChangeMaturity();
 	
 	// Enabled/disabled popups, might have been changed by user actions
 	// while preferences floater was closed.
-- 
cgit v1.2.3


From a8e1c2ed134b88b55b713ac53cd63cab4bb526b3 Mon Sep 17 00:00:00 2001
From: Sergei Litovchuk <slitovchuk@productengine.com>
Date: Fri, 5 Mar 2010 15:41:25 +0200
Subject: Implemented (EXT-4705) Show maturity icon on Region/Estate tab. -
 Added LLIconsComboBox class - a combobox with icons for maturity ratings. -
 Fixed scroll list maximum width calculation. The width was calculated based
 on text value width for non-text columns. - Added image overlay alignment
 getter method to LLButton.

--HG--
branch : product-engine
---
 indra/llui/llbutton.h                              |  1 +
 indra/llui/llcombobox.cpp                          | 45 ++++++++++++++++------
 indra/llui/llcombobox.h                            | 33 +++++++++++++++-
 indra/llui/llscrolllistctrl.cpp                    |  4 +-
 .../skins/default/xui/en/panel_region_general.xml  | 45 ++++++++++++++++------
 5 files changed, 103 insertions(+), 25 deletions(-)

(limited to 'indra')

diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h
index 6a0d8ef3d6..59b551a16d 100644
--- a/indra/llui/llbutton.h
+++ b/indra/llui/llbutton.h
@@ -216,6 +216,7 @@ public:
 	void			setImageOverlay(const std::string& image_name, LLFontGL::HAlign alignment = LLFontGL::HCENTER, const LLColor4& color = LLColor4::white);
 	void 			setImageOverlay(const LLUUID& image_id, LLFontGL::HAlign alignment = LLFontGL::HCENTER, const LLColor4& color = LLColor4::white);
 	LLPointer<LLUIImage> getImageOverlay() { return mImageOverlay; }
+	LLFontGL::HAlign getImageOverlayHAlign() const	{ return mImageOverlayAlignment; }
 
 	void            autoResize();	// resize with label of current btn state 
 	void            resize(LLUIString label); // resize with label input
diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp
index 9d23daf56d..98c9217306 100644
--- a/indra/llui/llcombobox.cpp
+++ b/indra/llui/llcombobox.cpp
@@ -703,19 +703,12 @@ void LLComboBox::onListMouseUp()
 
 void LLComboBox::onItemSelected(const LLSD& data)
 {
-	const std::string name = mList->getSelectedItemLabel();
+	setValue(data);
 
-	S32 cur_id = getCurrentIndex();
-	mLastSelectedIndex = cur_id;
-	if (cur_id != -1)
+	if (mAllowTextEntry && mLastSelectedIndex != -1)
 	{
-		setLabel(name);
-
-		if (mAllowTextEntry)
-		{
-			gFocusMgr.setKeyboardFocus(mTextEntry);
-			mTextEntry->selectAll();
-		}
+		gFocusMgr.setKeyboardFocus(mTextEntry);
+		mTextEntry->selectAll();
 	}
 
 	// hiding the list reasserts the old value stored in the text editor/dropdown button
@@ -1069,3 +1062,33 @@ BOOL LLComboBox::selectItemRange( S32 first, S32 last )
 {
 	return mList->selectItemRange(first, last);
 }
+
+
+static LLDefaultChildRegistry::Register<LLIconsComboBox> register_icons_combo_box("icons_combo_box");
+
+LLIconsComboBox::Params::Params()
+:	icon_column("icon_column", ICON_COLUMN),
+	label_column("label_column", LABEL_COLUMN)
+{}
+
+LLIconsComboBox::LLIconsComboBox(const LLIconsComboBox::Params& p)
+:	LLComboBox(p),
+	mIconColumnIndex(p.icon_column),
+	mLabelColumnIndex(p.label_column)
+{}
+
+void LLIconsComboBox::setValue(const LLSD& value)
+{
+	BOOL found = mList->selectByValue(value);
+	if (found)
+	{
+		LLScrollListItem* item = mList->getFirstSelected();
+		if (item)
+		{
+			mButton->setImageOverlay(mList->getSelectedItemLabel(mIconColumnIndex), mButton->getImageOverlayHAlign());
+
+			setLabel(mList->getSelectedItemLabel(mLabelColumnIndex));
+		}
+		mLastSelectedIndex = mList->getFirstSelectedIndex();
+	}
+}
diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h
index 4f27588467..3cc2a8f5d1 100644
--- a/indra/llui/llcombobox.h
+++ b/indra/llui/llcombobox.h
@@ -221,6 +221,7 @@ protected:
 	LLPointer<LLUIImage>	mArrowImage;
 	LLUIString			mLabel;
 	BOOL				mHasAutocompletedText;
+	S32                 mLastSelectedIndex;
 
 private:
 	BOOL				mAllowTextEntry;
@@ -230,6 +231,36 @@ private:
 	commit_callback_t	mPrearrangeCallback;
 	commit_callback_t	mTextEntryCallback;
 	commit_callback_t	mSelectionCallback;
-	S32                 mLastSelectedIndex;
 };
+
+// A combo box with icons for the list of items.
+class LLIconsComboBox
+:	public LLComboBox
+{
+public:
+	struct Params
+	:	public LLInitParam::Block<Params, LLComboBox::Params>
+	{
+		Optional<S32>		icon_column,
+							label_column;
+		Params();
+	};
+
+	/*virtual*/ void setValue(const LLSD& value);
+
+private:
+	enum EColumnIndex
+	{
+		ICON_COLUMN = 0,
+		LABEL_COLUMN
+	};
+
+	friend class LLUICtrlFactory;
+	LLIconsComboBox(const Params&);
+	virtual ~LLIconsComboBox() {};
+
+	S32			mIconColumnIndex;
+	S32			mLabelColumnIndex;
+};
+
 #endif
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 77caaaa425..18ec5b51dd 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -630,7 +630,9 @@ void LLScrollListCtrl::calcColumnWidths()
 			LLScrollListCell* cellp = (*iter)->getColumn(column->mIndex);
 			if (!cellp) continue;
 
-			column->mMaxContentWidth = llmax(LLFontGL::getFontSansSerifSmall()->getWidth(cellp->getValue().asString()) + mColumnPadding + COLUMN_TEXT_PADDING, column->mMaxContentWidth);
+			// get text value width only for text cells
+			column->mMaxContentWidth = cellp->isText() ?
+					llmax(LLFontGL::getFontSansSerifSmall()->getWidth(cellp->getValue().asString()) + mColumnPadding + COLUMN_TEXT_PADDING, column->mMaxContentWidth) : column->mMaxContentWidth;
 		}
 
 		max_item_width += column->mMaxContentWidth;
diff --git a/indra/newview/skins/default/xui/en/panel_region_general.xml b/indra/newview/skins/default/xui/en/panel_region_general.xml
index 1bbe9d80c0..4acfa42c23 100644
--- a/indra/newview/skins/default/xui/en/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_general.xml
@@ -171,27 +171,48 @@
      width="100">
         Rating:
     </text>
-    <combo_box
+    <icons_combo_box
+     follows="left|top"
      height="20"
      label="Moderate"
      layout="topleft"
      left_delta="100"
      name="access_combo"
      top_delta="0"
-     width="85">
-        <combo_box.item
+     width="105">
+        <icons_combo_box.drop_down_button
+         image_overlay="Parcel_M_Light"
+         image_overlay_alignment="left"
+         imgoverlay_label_space="3"
+         pad_left="3"/>
+        <icons_combo_box.item
          label="Adult"
-         name="Adult"
-         value="42" />
-        <combo_box.item
+         value="42">
+            <item.columns
+             halign="center"
+             type="icon"
+             value="Parcel_R_Light"
+             width="20"/>
+          </icons_combo_box.item>
+        <icons_combo_box.item
          label="Moderate"
-         name="Mature"
-         value="21" />
-        <combo_box.item
+         value="21">
+            <item.columns
+             halign="center"
+             type="icon"
+             value="Parcel_M_Light"
+             width="20"/>
+        </icons_combo_box.item>
+        <icons_combo_box.item
          label="General"
-         name="PG"
-         value="13" />
-    </combo_box>
+         value="13">
+            <item.columns
+             halign="center"
+             type="icon"
+             value="Parcel_PG_Light"
+             width="20"/>
+        </icons_combo_box.item>
+    </icons_combo_box>
     <button
      enabled="false"
      follows="left|top"
-- 
cgit v1.2.3


From 698835061bb3e4113eb6af688e05517fc50cc090 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Fri, 5 Mar 2010 17:23:41 +0200
Subject: Update for major bug EXT-5943 - Classifieds are Published and charged
 as soon as you hit Save. Fixed category mismatch after editing classified.
 Made price uneditable in edit mode because it looks like server does not
 support price update(same in viewer 1.23)

--HG--
branch : product-engine
---
 indra/newview/llpanelclassified.cpp | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
index c4684e9827..9f24ddc799 100644
--- a/indra/newview/llpanelclassified.cpp
+++ b/indra/newview/llpanelclassified.cpp
@@ -1696,7 +1696,8 @@ void LLPanelClassifiedEdit::processProperties(void* data, EAvatarProcessorType t
 			setPosGlobal(c_info->pos_global);
 
 			setClassifiedLocation(createLocationText(c_info->parcel_name, c_info->sim_name, c_info->pos_global));
-			getChild<LLComboBox>("category")->setCurrentByIndex(c_info->category + 1);
+			// *HACK see LLPanelClassifiedEdit::sendUpdate()
+			getChild<LLComboBox>("category")->setCurrentByIndex(c_info->category - 1);
 			getChild<LLComboBox>("category")->resetDirty();
 
 			bool mature = is_cf_mature(c_info->flags);
@@ -1705,6 +1706,7 @@ void LLPanelClassifiedEdit::processProperties(void* data, EAvatarProcessorType t
 			getChild<LLComboBox>("content_type")->setCurrentByIndex(mature ? CB_ITEM_MATURE : CB_ITEM_PG);
 			childSetValue("auto_renew", auto_renew);
 			childSetValue("price_for_listing", c_info->price_for_listing);
+			childSetEnabled("price_for_listing", isNew());
 
 			resetDirty();
 			setInfoLoaded(true);
@@ -1763,6 +1765,7 @@ void LLPanelClassifiedEdit::resetControls()
 	getChild<LLComboBox>("content_type")->setCurrentByIndex(0);
 	childSetValue("auto_renew", false);
 	childSetValue("price_for_listing", MINIMUM_PRICE_FOR_LISTING);
+	childSetEnabled("price_for_listing", TRUE);
 }
 
 bool LLPanelClassifiedEdit::canClose()
@@ -1799,7 +1802,9 @@ void LLPanelClassifiedEdit::sendUpdate()
 
 	c_data.agent_id = gAgent.getID();
 	c_data.classified_id = getClassifiedId();
-	c_data.category = getCategory();
+	// *HACK 
+	// Categories on server start with 1 while combo-box index starts with 0
+	c_data.category = getCategory() + 1;
 	c_data.name = getClassifiedName();
 	c_data.description = getDescription();
 	c_data.parcel_id = getParcelId();
@@ -1814,7 +1819,7 @@ void LLPanelClassifiedEdit::sendUpdate()
 U32 LLPanelClassifiedEdit::getCategory()
 {
 	LLComboBox* cat_cb = getChild<LLComboBox>("category");
-	return cat_cb->getCurrentIndex() + 1;
+	return cat_cb->getCurrentIndex();
 }
 
 U8 LLPanelClassifiedEdit::getFlags()
-- 
cgit v1.2.3