From e3989d38486c4aaf4701d6239875ea4996d0963b Mon Sep 17 00:00:00 2001
From: Jake Simpson <jake@lindenlab.com>
Date: Fri, 29 Jun 2007 01:24:26 +0000
Subject: [PATCH] Changes to make Logitech code more LL Code Standards
 compliant, plus remove all the SDK code and instead just used headers and an
 included lib that we build ourselves from the Trunk directory.

---
 indra/newview/llfloaterchat.cpp       |  17 +++++++
 indra/newview/llfloaterpreference.cpp |  35 ++++++++++++++
 indra/newview/llfloaterpreference.h   |   2 +
 indra/newview/llstatusbar.cpp         |  63 ++++++++++++++++++++++++++
 indra/newview/llstatusbar.h           |  20 ++++++++
 indra/newview/llviewerparcelmgr.h     |   1 +
 indra/newview/llviewerregion.cpp      |   5 +-
 indra/newview/llviewerregion.h        |   3 ++
 indra/newview/llviewerstats.cpp       |   6 ++-
 indra/newview/llviewerstats.h         |   3 +-
 indra/newview/res/icon1.ico           | Bin 0 -> 766 bytes
 indra/newview/res/resource.h          |   3 +-
 12 files changed, 154 insertions(+), 4 deletions(-)
 create mode 100644 indra/newview/res/icon1.ico

diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp
index 75c68acb781..12b0e953b6e 100644
--- a/indra/newview/llfloaterchat.cpp
+++ b/indra/newview/llfloaterchat.cpp
@@ -47,6 +47,9 @@
 #include "llfloaterhtml.h"
 #include "llweb.h"
 
+// Used for LCD display
+extern void AddNewIMToLCD(const LLString &newLine);
+extern void AddNewChatToLCD(const LLString &newLine);
 //
 // Constants
 //
@@ -340,6 +343,20 @@ void LLFloaterChat::addChat(const LLChat& chat,
 			chat.mChatType == CHAT_TYPE_DEBUG_MSG
 			&& !gSavedSettings.getBOOL("ScriptErrorsAsChat");
 
+#if LL_WINDOWS
+	// add into LCD displays
+	if (!invisible_script_debug_chat)
+	{
+		if (!from_instant_message)
+		{
+			AddNewChatToLCD(chat.mText);
+		}
+		else
+		{
+			AddNewIMToLCD(chat.mText);
+		}
+	}
+#endif
 	if (!invisible_script_debug_chat 
 		&& !chat.mMuted 
 		&& gConsole 
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 8a1a0dcaaae..68ab91402bb 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -31,6 +31,7 @@
 #include "llpaneldebug.h"
 #include "llpanelgeneral.h"
 #include "llpanelinput.h"
+#include "llpanelLCD.h"
 #include "llpanelmsgs.h"
 #include "llpanelweb.h"
 #include "llprefschat.h"
@@ -56,6 +57,14 @@ const S32 PREF_FLOATER_MIN_HEIGHT = 2 * SCROLLBAR_SIZE + 2 * LLPANEL_BORDER_WIDT
 
 LLFloaterPreference* LLFloaterPreference::sInstance = NULL;
 
+#if LL_WINDOWS
+// for Logitech LCD keyboards / speakers
+#ifndef LL_LOGITECH_LCD_H
+#include "lllogitechlcd.h"
+#endif
+extern llLCD	*gLcdScreen; 
+#endif
+
 // Must be done at run time, not compile time. JC
 S32 pref_min_width()
 {
@@ -84,6 +93,7 @@ LLPreferenceCore::LLPreferenceCore(LLTabContainerCommon* tab_container, LLButton
 	mDisplayPanel(NULL),
 	mDisplayPanel2(NULL),
 	mAudioPanel(NULL),
+	mLCDPanel(NULL),
 	mMsgPanel(NULL)
 {
 	mGeneralPanel = new LLPanelGeneral();
@@ -128,6 +138,15 @@ LLPreferenceCore::LLPreferenceCore(LLTabContainerCommon* tab_container, LLButton
 	mTabContainer->addTabPanel(mPrefsIM->getPanel(), mPrefsIM->getPanel()->getLabel(), FALSE, onTabChanged, mTabContainer);
 	mPrefsIM->getPanel()->setDefaultBtn(default_btn);
 
+#if LL_WINDOWS
+	// only add this option if we actually have a logitech keyboard / speaker set
+	if (gLcdScreen->Enabled())
+	{
+		mLCDPanel = new LLPanelLCD();
+		mTabContainer->addTabPanel(mLCDPanel, mLCDPanel->getLabel(), FALSE, onTabChanged, mTabContainer);
+		mLCDPanel->setDefaultBtn(default_btn);
+	}
+#endif
 	mMsgPanel = new LLPanelMsgs();
 	mTabContainer->addTabPanel(mMsgPanel, mMsgPanel->getLabel(), FALSE, onTabChanged, mTabContainer);
 	mMsgPanel->setDefaultBtn(default_btn);
@@ -212,6 +231,14 @@ void LLPreferenceCore::apply()
 	#if LL_LIBXUL_ENABLED
 	mWebPanel->apply();
 	#endif
+#if LL_WINDOWS
+	// only add this option if we actually have a logitech keyboard / speaker set
+	if (gLcdScreen->Enabled())
+	{
+		mLCDPanel->apply();
+	}
+#endif
+//	mWebPanel->apply();
 }
 
 
@@ -230,6 +257,14 @@ void LLPreferenceCore::cancel()
 	#if LL_LIBXUL_ENABLED
 	mWebPanel->cancel();
 	#endif
+#if LL_WINDOWS
+	// only add this option if we actually have a logitech keyboard / speaker set
+	if (gLcdScreen->Enabled())
+	{
+		mLCDPanel->cancel();
+	}
+#endif
+//	mWebPanel->cancel();
 }
 
 // static
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index dcfa123137c..c40532fb485 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -20,6 +20,7 @@
 
 class LLPanelGeneral;
 class LLPanelInput;
+class LLPanelLCD;
 class LLPanelDisplay;
 class LLPanelDisplay2;
 class LLPanelDisplay3;
@@ -65,6 +66,7 @@ class LLPreferenceCore
 	LLPrefsChat				*mPrefsChat;
 	LLPrefsIM				*mPrefsIM;
 	LLPanelMsgs				*mMsgPanel;
+	LLPanelLCD				*mLCDPanel;
 	LLPanelWeb				*mWebPanel;
 };
 
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index 72aca1999ea..6990102d249 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -403,6 +403,10 @@ void LLStatusBar::refresh()
 			pos_y -= pos_y % 2;
 		}
 
+		mRegionDetails.mTime = mTextTime->getText();
+		mRegionDetails.mBalance = mBalance;
+		mRegionDetails.mAccesString = (char *)region->getSimAccessString();
+		mRegionDetails.mPing = region->getNetDetailsForLCD();
 		if (parcel && parcel->getName())
 		{
 			location_name = region->getName()
@@ -410,6 +414,43 @@ void LLStatusBar::refresh()
 						   pos_x, pos_y, pos_z,
 						   region->getSimAccessString(),
 						   parcel->getName());
+
+			// keep these around for the LCD to use
+			mRegionDetails.mRegionName = region->getName();
+			mRegionDetails.mParcelName = (char *)parcel->getName();
+			mRegionDetails.mX = pos_x;
+			mRegionDetails.mY = pos_y;
+			mRegionDetails.mZ = pos_z;
+			mRegionDetails.mArea = parcel->getArea();
+			mRegionDetails.mForSale = parcel->getForSale();
+			mRegionDetails.mTraffic = gParcelMgr->getDwelling();
+			
+			if (parcel->isPublic())
+			{
+				snprintf(mRegionDetails.mOwner, MAX_STRING, "Public");
+			}
+			else
+			{
+				if (parcel->getIsGroupOwned())
+				{
+					if(!parcel->getGroupID().isNull())
+					{
+						gCacheName->getGroupName(parcel->getGroupID(), mRegionDetails.mOwner);
+					}
+					else
+					{
+						snprintf(mRegionDetails.mOwner, MAX_STRING, "Group Owned");
+					}
+				}
+				else
+				{
+					// Figure out the owner's name
+					char owner_first[MAX_STRING];	/*Flawfinder: ignore*/
+					char owner_last[MAX_STRING];	/*Flawfinder: ignore*/
+					gCacheName->getName(parcel->getOwnerID(), owner_first, owner_last);
+					snprintf(mRegionDetails.mOwner, MAX_STRING, "%s %s", owner_first, owner_last); 		/* Flawfinder: ignore */
+				}
+			}
 		}
 		else
 		{
@@ -417,12 +458,34 @@ void LLStatusBar::refresh()
 				+ llformat(" %d, %d, %d (%s)", 
 						   pos_x, pos_y, pos_z,
 						   region->getSimAccessString());
+			// keep these around for the LCD to use
+			mRegionDetails.mRegionName = region->getName();
+			mRegionDetails.mParcelName = "Unknown";
+			
+			mRegionDetails.mX = pos_x;
+			mRegionDetails.mY = pos_y;
+			mRegionDetails.mZ = pos_z;
+			mRegionDetails.mArea = 0;
+			mRegionDetails.mForSale = FALSE;
+			snprintf(mRegionDetails.mOwner, MAX_STRING, "Unknown");
+			mRegionDetails.mTraffic = 0.0f;
 		}
 	}
 	else
 	{
 		// no region
 		location_name = "(Unknown)";
+		// keep these around for the LCD to use
+		mRegionDetails.mRegionName = LLString("Unknown");
+		mRegionDetails.mParcelName = "Unknown";
+		mRegionDetails.mAccesString = "Unknown";
+		mRegionDetails.mX = 0;
+		mRegionDetails.mY = 0;
+		mRegionDetails.mZ = 0;
+		mRegionDetails.mArea = 0;
+		mRegionDetails.mForSale = FALSE;
+		snprintf(mRegionDetails.mOwner, MAX_STRING, "Unknown");
+		mRegionDetails.mTraffic = 0.0f;
 	}
 	mTextParcelName->setText(location_name);
 
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
index c44c7acffec..f33a5d93e14 100644
--- a/indra/newview/llstatusbar.h
+++ b/indra/newview/llstatusbar.h
@@ -24,6 +24,25 @@ class LLUUID;
 class LLFrameTimer;
 class LLStatGraph;
 
+// used by LCD screen
+class cLLRegionDetails
+{
+public:
+	LLString mRegionName;
+	char	*mParcelName;
+	char	*mAccesString;
+	S32		mX;
+	S32		mY;
+	S32		mZ;
+	S32		mArea;
+	BOOL	mForSale;
+	char	mOwner[MAX_STRING];
+	F32		mTraffic;
+	S32		mBalance;
+	LLString	mTime;
+	U32		mPing;
+};
+
 class LLStatusBar
 :	public LLPanel
 {
@@ -60,6 +79,7 @@ class LLStatusBar
 	S32 getSquareMetersCredit() const;
 	S32 getSquareMetersCommitted() const;
 	S32 getSquareMetersLeft() const;
+	cLLRegionDetails mRegionDetails;
 
 protected:
 	static void onClickParcelInfo(void*);
diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h
index 20c6b6895dd..e629b65af11 100644
--- a/indra/newview/llviewerparcelmgr.h
+++ b/indra/newview/llviewerparcelmgr.h
@@ -107,6 +107,7 @@ class LLViewerParcelMgr
 	F32		getSelectionHeight() const	{ return F32(mEastNorth.mdV[VY] - mWestSouth.mdV[VY]); }
 	BOOL	getSelection(LLVector3d &min, LLVector3d &max) { min = mWestSouth; max = mEastNorth; return !selectionEmpty();}
 	LLViewerRegion* getSelectionRegion();
+	F32		getDwelling() const { return mSelectedDwell;}
 
 	void	getDisplayInfo(S32* area, S32* claim, S32* rent, BOOL* for_sale, F32* dwell);
 
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 6fd31f3e72f..076ae2eccee 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -731,7 +731,10 @@ void LLViewerRegion::calculateCameraDistance()
 	mCameraDistanceSquared = (F32)(gAgent.getCameraPositionGlobal() - getCenterGlobal()).magVecSquared();
 }
 
-// ---------------- Friends ----------------
+U32 LLViewerRegion::getNetDetailsForLCD()
+{
+	return mPingDelay;
+}
 
 std::ostream& operator<<(std::ostream &s, const LLViewerRegion &region)
 {
diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h
index 05c37fe08ff..a1b9cfd3eae 100644
--- a/indra/newview/llviewerregion.h
+++ b/indra/newview/llviewerregion.h
@@ -212,6 +212,9 @@ class LLViewerRegion
 
 	friend std::ostream& operator<<(std::ostream &s, const LLViewerRegion &region);
 
+	// used by LCD to get details for debug screen
+	U32 getNetDetailsForLCD();
+
 public:
 	struct CompareDistance
 	{
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index f1df0d39e06..fefa86123d7 100644
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -153,7 +153,11 @@ const StatAttributes STAT_INFO[LLViewerStats::ST_COUNT] =
 	// ST_TEX_BAKES
 	StatAttributes("Texture Bakes", FALSE, FALSE),
 	// ST_TEX_REBAKES
-	StatAttributes("Texture Rebakes", FALSE, FALSE)
+	StatAttributes("Texture Rebakes", FALSE, FALSE),
+
+	// ST_LOGITECH_KEYBOARD
+	StatAttributes("Logitech LCD", FALSE, FALSE)
+
 };
 
 LLViewerStats::LLViewerStats()
diff --git a/indra/newview/llviewerstats.h b/indra/newview/llviewerstats.h
index 33ed6bcbcf8..f0ef1060541 100644
--- a/indra/newview/llviewerstats.h
+++ b/indra/newview/llviewerstats.h
@@ -137,8 +137,9 @@ class LLViewerStats
 		ST_WINDOW_HEIGHT = 55,
 		ST_TEX_BAKES = 56,
 		ST_TEX_REBAKES = 57,
+		ST_LOGITECH_LCD = 58,
 		
-		ST_COUNT = 58
+		ST_COUNT = 59
 	};
 
 
diff --git a/indra/newview/res/icon1.ico b/indra/newview/res/icon1.ico
new file mode 100644
index 0000000000000000000000000000000000000000..ad607598fa4b33036f8450ef4af8764f80ee5146
GIT binary patch
literal 766
zcmbV~J5t3k3`O;T2`v?MN|wP=QrSCjS}!e2p=1fXp$O+*#pDf8AxE~4e%3gSxG?7V
zDJ1WA5znkI=#0Limv~@C@C{LPX2{b0Meo|73^v=gvC6Xhi+$G)Wyqu{rgF*x-^vuH
zuM}bz@rpFo<SMiwnZ08Ue-+8lGG3XL3A^LHRr=tpzaFe~Dzc=%uC;MuX*KJK2|x$C
zJvX8HN4|R+oDF4v_^X*2zuJ<8;d)xIaN1x;h}{pV%J`F;>P@sGzb0|~VEpPGf0cik
zxEp^bbAn9SFMgf)%?aF5D~t1suU70IIc0~XG~5yyTr2S-;*odo30?oGl!#y2v27^p
Q^;UV!@crI7_Kg?#1(Pq~F8}}l

literal 0
HcmV?d00001

diff --git a/indra/newview/res/resource.h b/indra/newview/res/resource.h
index c7e1552dff8..e4d01b10509 100644
--- a/indra/newview/res/resource.h
+++ b/indra/newview/res/resource.h
@@ -19,6 +19,7 @@
 #define IDB_LOGIN                       149
 #define IDC_CURSOR4                     153
 #define IDC_CURSOR5                     154
+#define IDI_LCD_LL_ICON                 157
 #define IDC_RADIO_56                    1000
 #define IDC_RADIO_128                   1001
 #define IDC_RADIO_256                   1002
@@ -151,7 +152,7 @@
 // 
 #ifdef APSTUDIO_INVOKED
 #ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE        156
+#define _APS_NEXT_RESOURCE_VALUE        167
 #define _APS_NEXT_COMMAND_VALUE         40002
 #define _APS_NEXT_CONTROL_VALUE         1139
 #define _APS_NEXT_SYMED_VALUE           101
-- 
GitLab