lllcd.cpp

Go to the documentation of this file.
00001 
00033 #include "llviewerprecompiledheaders.h"
00034 #include "lllcd.h"
00035 
00036 #include "llcontrol.h"
00037 #include "llstatusbar.h"
00038 #include "llviewerregion.h"
00039 #include "llviewerstats.h"
00040 #include "lluictrlfactory.h"
00041 #include "llviewercontrol.h"
00042 
00043 #if LL_LCD_COMPILE
00044 
00045 extern LLControlGroup gSavedSettings;
00046 
00047 #define ICON_WIDTH 28
00048 
00049 #if LL_WINDOWS
00050 // for Logitech LCD keyboards / speakers
00051 #include "EZ_LCD.h"
00052 #include "lllogitechlcd.h"
00053 
00054 LLLCD   *gLcdScreen = NULL; // Singleton-ish?
00055 
00056 // not happy about this, but there's no local class to put it in.
00057 LLPanel *bogus = NULL;
00058 
00059 // oh yeah baby! Construct those LCD page group handlers - make them all and we just turn off displaying them according to the preferences set up
00060 void CreateLCDDebugWindows()
00061 {
00062         if (gLcdScreen->Enabled())
00063         {
00064                 // load up the text so we are sure it's externalized and localized correctly.
00065                 bogus = new LLPanel();
00066                 LLUICtrlFactory::getInstance()->buildPanel(bogus, "lcd_text.xml");
00067 
00068                 LLLCDPageGroup *pageGroup = NULL;
00069                 pageGroup = new llDefaultPageGroup(gLcdScreen->mLCD, LLLCD::kLCDDefault, gLcdScreen->mSLIcon);
00070                 // push this new group onto the array
00071                 gLcdScreen->mPageGroupArray.push_back(pageGroup);
00072 
00073                 pageGroup = new LLChatPageGroup(gLcdScreen->mLCD, LLLCD::kLCDChat, gLcdScreen->mSLIcon);
00074                 // push this new group onto the array
00075                 gLcdScreen->mPageGroupArray.push_back(pageGroup);
00076 
00077                 pageGroup = new LLIMPageGroup(gLcdScreen->mLCD, LLLCD::kLCDIM, gLcdScreen->mSLIcon);
00078                 // push this new group onto the array
00079                 gLcdScreen->mPageGroupArray.push_back(pageGroup);
00080 
00081                 pageGroup = new LLDebugPageGroup(gLcdScreen->mLCD, LLLCD::kLCDDebug, gLcdScreen->mSLIcon);
00082                 // push this new group onto the array
00083                 gLcdScreen->mPageGroupArray.push_back(pageGroup);
00084 
00085                 pageGroup = new LLLindenPageGroup(gLcdScreen->mLCD, LLLCD::kLCDLinden, gLcdScreen->mSLIcon);
00086                 // push this new group onto the array
00087                 gLcdScreen->mPageGroupArray.push_back(pageGroup);
00088 
00089                 pageGroup = new LLRegionPageGroup(gLcdScreen->mLCD, LLLCD::kLCDRegion, gLcdScreen->mSLIcon);
00090                 // push this new group onto the array
00091                 gLcdScreen->mPageGroupArray.push_back(pageGroup);
00092 
00093                 pageGroup = new LLDebugConsolePageGroup(gLcdScreen->mLCD, LLLCD::kLCDDebugConsole, gLcdScreen->mSLIcon);
00094                 // push this new group onto the array
00095                 gLcdScreen->mPageGroupArray.push_back(pageGroup);
00096         }
00097 }
00098 
00099 // functions that allow the chat and IM handler to insert new lines directly into the LCD page group handlers
00100 void AddNewIMToLCD(const LLString &newLine)
00101 {
00102         if (gLcdScreen->Enabled())
00103         {
00104                 LLIMPageGroup *imGroup = (LLIMPageGroup *)gLcdScreen->mPageGroupArray[2];
00105                 imGroup->InsertText(newLine);
00106         }
00107 }
00108 
00109 void AddNewChatToLCD(const LLString &newLine)
00110 {
00111         if (gLcdScreen->Enabled())
00112         {
00113                 LLChatPageGroup *chatGroup = (LLChatPageGroup *)gLcdScreen->mPageGroupArray[1];
00114                 chatGroup->InsertText(newLine);
00115         }
00116 }
00117 
00118 void AddNewDebugConsoleToLCD(const LLWString &newLine)
00119 {
00120         if (gLcdScreen->Enabled())
00121         {
00122                 LLDebugConsolePageGroup *debugGroup = (LLDebugConsolePageGroup *)gLcdScreen->mPageGroupArray[6];
00123                 debugGroup->InsertText(newLine);
00124         }
00125 }
00126 
00128 //
00129 //      Debug Console Page group class
00130 //
00132 
00133 void LLDebugConsolePageGroup::UpdateDetails()
00134 {
00135         mLCD->ModifyControlsOnPage(mPageArray[0].mPageIndex); 
00136         mLCD->SetText(mPageArray[0].mDisplayItemArray[0], (LPCTSTR)(wstring_to_utf16str(mLine1).c_str()));
00137         mLCD->SetText(mPageArray[0].mDisplayItemArray[1], (LPCTSTR)(wstring_to_utf16str(mLine2).c_str()));
00138         mLCD->SetText(mPageArray[0].mDisplayItemArray[2], (LPCTSTR)(wstring_to_utf16str(mLine3).c_str()));
00139 }
00140 
00141 void LLDebugConsolePageGroup::GetDisplayable()
00142 {
00143         mDisplayPage = gSavedSettings.getBOOL("DisplayDebugConsole");
00144 }
00145 
00146 void LLDebugConsolePageGroup::InsertText(const LLWString &newLine)
00147 {
00148         mLine1 = mLine2;
00149         mLine2 = mLine3;
00150         mLine3 = newLine;
00151 }
00152 
00153 LLDebugConsolePageGroup::LLDebugConsolePageGroup(CEzLcd *LCD, int type, HICON SLIcon)
00154 :LLLCDPageGroup(LCD, type, SLIcon)
00155 {
00156         // create a new specific pagea
00157         LLLCDSpecificPage newPage;
00158         newPage.mPageIndex = mLCD->AddNewPage() - 1;
00159         mLCD->ModifyControlsOnPage(newPage.mPageIndex);
00160 
00161         // add in all the display parts for this specific page
00162 
00163         // add in the icon - all pages have this - we don't need to track this because we never update it
00164         HANDLE m_rightIcon = mLCD->AddIcon(mSLIcon, 32, 32);
00165         mLCD->SetOrigin(m_rightIcon, 0, 0);
00166 
00167         // add Title
00168         HANDLE title = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_CENTER, 128);
00169         mLCD->SetOrigin(title, 32, 0);
00170         mLCD->SetText(title, _T("Debug Console"));
00171 
00172         // add line
00173         HANDLE chatLine = mLCD->AddText(LG_SCROLLING_TEXT, LG_SMALL, DT_LEFT, 160 - ICON_WIDTH);
00174         mLCD->SetOrigin(chatLine, ICON_WIDTH, 11);
00175         mLCD->SetText(chatLine, _T(""));
00176         newPage.mDisplayItemArray.push_back(chatLine);
00177 
00178         // add line
00179         chatLine = mLCD->AddText(LG_SCROLLING_TEXT, LG_SMALL, DT_LEFT, 160 - ICON_WIDTH);
00180         mLCD->SetOrigin(chatLine, ICON_WIDTH, 22);
00181         mLCD->SetText(chatLine, _T(""));
00182         newPage.mDisplayItemArray.push_back(chatLine);
00183 
00184         // add line
00185         chatLine = mLCD->AddText(LG_SCROLLING_TEXT, LG_SMALL, DT_LEFT, 160 - ICON_WIDTH);
00186         mLCD->SetOrigin(chatLine, ICON_WIDTH, 33);
00187         mLCD->SetText(chatLine, _T(""));
00188         newPage.mDisplayItemArray.push_back(chatLine);
00189 
00190         // and then insert it
00191         mPageArray.push_back(newPage);
00192 }
00193 
00195 //
00196 //      Network Comms Page group class
00197 //
00199 
00200 void LLDebugPageGroup::UpdateDetails()
00201 {
00202         mLCD->ModifyControlsOnPage(mPageArray[0].mPageIndex);
00203         LLString ping = "1000";
00204         LLString packetsIn = "0";
00205         LLString packetsOut = "0";
00206         LLString packetLoss = "0";
00207         LLString fps = "0";
00208         LLString simfps = "0";
00209         // region name
00210         if (gStatusBar)
00211         { 
00212                 ping = llformat("%d", gStatusBar->mRegionDetails.mPing);        
00213         }
00214 
00215         packetLoss = llformat("%.1f%%", LLViewerStats::getInstance()->mPacketsLostPercentStat.getCurrent());
00216         simfps = llformat("%d", (int)LLViewerStats::getInstance()->mSimFPS.getCurrent());
00217         fps = llformat("%.1f%", LLViewerStats::getInstance()->mFPSStat.getMeanPerSec());
00218         packetsIn = llformat("%d", (int)LLViewerStats::getInstance()->mSimInPPS.getCurrent());
00219         packetsOut = llformat("%d", (int)LLViewerStats::getInstance()->mSimOutPPS.getCurrent());
00220 
00221         // fps
00222         mLCD->SetText(mPageArray[0].mDisplayItemArray[0], (LPCTSTR)(utf8str_to_utf16str(fps).c_str()));
00223         // simfps
00224         mLCD->SetText(mPageArray[0].mDisplayItemArray[1], (LPCTSTR)(utf8str_to_utf16str(simfps).c_str()));
00225         // packets in
00226         mLCD->SetText(mPageArray[0].mDisplayItemArray[2], (LPCTSTR)(utf8str_to_utf16str(packetsIn).c_str()));
00227         // packets out
00228         mLCD->SetText(mPageArray[0].mDisplayItemArray[3], (LPCTSTR)(utf8str_to_utf16str(packetsOut).c_str()));
00229         // packet loss
00230         mLCD->SetText(mPageArray[0].mDisplayItemArray[4], (LPCTSTR)(utf8str_to_utf16str(packetLoss).c_str()));
00231         // ping
00232         mLCD->SetText(mPageArray[0].mDisplayItemArray[5], (LPCTSTR)(utf8str_to_utf16str(ping).c_str())); 
00233 }
00234 
00235 void LLDebugPageGroup::GetDisplayable()
00236 {
00237         mDisplayPage = gSavedSettings.getBOOL("DisplayDebug");
00238 }
00239 
00240 LLDebugPageGroup::LLDebugPageGroup(CEzLcd *LCD, int type, HICON SLIcon)
00241 :LLLCDPageGroup(LCD, type, SLIcon)
00242 {
00243         // create a new specific page
00244         LLLCDSpecificPage newPage;
00245         newPage.mPageIndex = mLCD->AddNewPage() - 1;
00246         mLCD->ModifyControlsOnPage(newPage.mPageIndex);
00247 
00248         // add in all the display parts for this specific page
00249 
00250         // add in the icon - all pages have this - we don't need to track this because we never update it
00251         HANDLE m_rightIcon = mLCD->AddIcon(mSLIcon, 32, 32);
00252         mLCD->SetOrigin(m_rightIcon, 0, 0);
00253 
00254         // add Title
00255         HANDLE title = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_CENTER, 128);
00256         mLCD->SetOrigin(title, 32, 0);
00257         mLCD->SetText(title, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("DebugInfo")).c_str()));
00258 
00259         HANDLE fpsStatic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 18);
00260         mLCD->SetOrigin(fpsStatic, ICON_WIDTH, 11);
00261         mLCD->SetText(fpsStatic, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("FPS")).c_str()));
00262 
00263         HANDLE fps = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 25);
00264         mLCD->SetOrigin(fps, ICON_WIDTH+25, 11);
00265         mLCD->SetText(fps, _T(""));
00266         newPage.mDisplayItemArray.push_back(fps);
00267 
00268         HANDLE simfpsStatic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 35);
00269         mLCD->SetOrigin(simfpsStatic, ICON_WIDTH+37+25, 11);
00270         mLCD->SetText(simfpsStatic, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("SimFPS")).c_str()));
00271 
00272         HANDLE simfps = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 25);
00273         mLCD->SetOrigin(simfps, ICON_WIDTH+37+27+37, 11);
00274         mLCD->SetText(simfps, _T(""));
00275         newPage.mDisplayItemArray.push_back(simfps);
00276 
00277         HANDLE packetsinStatic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 25);
00278         mLCD->SetOrigin(packetsinStatic, ICON_WIDTH, 22);
00279         mLCD->SetText(packetsinStatic, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("Pin")).c_str()));
00280 
00281         HANDLE packetsin = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 25);
00282         mLCD->SetOrigin(packetsin, ICON_WIDTH+32, 22);
00283         mLCD->SetText(packetsin, _T(""));
00284         newPage.mDisplayItemArray.push_back(packetsin);
00285 
00286         HANDLE packetsoutStatic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 30);
00287         mLCD->SetOrigin(packetsoutStatic, ICON_WIDTH+37+25, 22);
00288         mLCD->SetText(packetsoutStatic, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("Pout")).c_str()));
00289 
00290         HANDLE packetsout = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 25);
00291         mLCD->SetOrigin(packetsout, ICON_WIDTH+37+27+37, 22);
00292         mLCD->SetText(packetsout, _T(""));
00293         newPage.mDisplayItemArray.push_back(packetsout);
00294 
00295         HANDLE packetlossStatic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 30);
00296         mLCD->SetOrigin(packetlossStatic, ICON_WIDTH, 33);
00297         mLCD->SetText(packetlossStatic, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("PLoss")).c_str()));
00298 
00299         HANDLE packetloss = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 35);
00300         mLCD->SetOrigin(packetloss, ICON_WIDTH+33, 33);
00301         mLCD->SetText(packetloss, _T(""));
00302         newPage.mDisplayItemArray.push_back(packetloss);
00303 
00304         HANDLE pingStatic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 20);
00305         mLCD->SetOrigin(pingStatic, ICON_WIDTH+32+38, 33);
00306         mLCD->SetText(pingStatic,(LPCTSTR)(utf8str_to_utf16str(bogus->getString("Ping")).c_str()));
00307 
00308         HANDLE ping = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 30);
00309         mLCD->SetOrigin(ping, ICON_WIDTH+37+27+37, 33);
00310         mLCD->SetText(ping, _T(""));
00311         newPage.mDisplayItemArray.push_back(ping);
00312 
00313         // and then insert it
00314         mPageArray.push_back(newPage);
00315 }
00316 
00318 //
00319 //      Linden Account group class
00320 //
00322 
00323 void LLLindenPageGroup::UpdateDetails()
00324 {
00325         mLCD->ModifyControlsOnPage(mPageArray[0].mPageIndex);
00326         LLString time = "Unknown";
00327         LLString balance = "Unknown";
00328         // region name
00329         if (gStatusBar)
00330         { 
00331                 time = gStatusBar->mRegionDetails.mTime;
00332                 balance = llformat("%d", gStatusBar->mRegionDetails.mBalance);
00333         }
00334 
00335         // time name
00336         mLCD->SetText(mPageArray[0].mDisplayItemArray[0], (LPCTSTR)(utf8str_to_utf16str(time).c_str()));
00337         // balance
00338         mLCD->SetText(mPageArray[0].mDisplayItemArray[1], (LPCTSTR)(utf8str_to_utf16str(balance).c_str()));
00339 }
00340 
00341 void LLLindenPageGroup::GetDisplayable()
00342 {
00343         mDisplayPage = gSavedSettings.getBOOL("DisplayLinden");
00344 }
00345 
00346 LLLindenPageGroup::LLLindenPageGroup(CEzLcd *LCD, int type, HICON SLIcon)
00347 :LLLCDPageGroup(LCD, type, SLIcon)
00348 {
00349         // create a new specific page
00350         LLLCDSpecificPage newPage;
00351         newPage.mPageIndex = mLCD->AddNewPage() - 1;
00352         mLCD->ModifyControlsOnPage(newPage.mPageIndex);
00353 
00354         // add in all the display parts for this specific page
00355 
00356         // add in the icon - all pages have this - we don't need to track this because we never update it
00357         HANDLE m_rightIcon = mLCD->AddIcon(mSLIcon, 32, 32);
00358         mLCD->SetOrigin(m_rightIcon, 0, 0);
00359 
00360         // add Title
00361         HANDLE title = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_CENTER, 128);
00362         mLCD->SetOrigin(title, 32, 0);
00363         mLCD->SetText(title, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("AccountDetails")).c_str()));
00364 
00365         HANDLE timeStatic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 30);
00366         mLCD->SetOrigin(timeStatic, ICON_WIDTH, 11);
00367         mLCD->SetText(timeStatic, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("Time")).c_str()));
00368 
00369         HANDLE time = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 160 - ICON_WIDTH - 32);
00370         mLCD->SetOrigin(time, ICON_WIDTH+32, 11);
00371         mLCD->SetText(time, _T(""));
00372         newPage.mDisplayItemArray.push_back(time);
00373 
00374         HANDLE balanceStatic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 30);
00375         mLCD->SetOrigin(balanceStatic, ICON_WIDTH, 22);
00376         mLCD->SetText(balanceStatic, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("LBal")).c_str()));
00377 
00378         HANDLE balance = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 160 - ICON_WIDTH - 35);
00379         mLCD->SetOrigin(balance, ICON_WIDTH+35, 22);
00380         mLCD->SetText(balance, _T(""));
00381         newPage.mDisplayItemArray.push_back(balance);
00382 
00383         // and then insert it
00384         mPageArray.push_back(newPage);
00385 }
00386 
00388 //
00389 //      Region Group page
00390 //
00392 
00393 void LLRegionPageGroup::UpdateDetails()
00394 {
00395         LLString pos = "Unknown";
00396         LLString parcel = "Unknown";
00397         LLString region = "Unknown";
00398         LLString owner = "Unknown";
00399         LLString forsale = bogus->getString("No");
00400         LLString rtype = "Unknown";
00401         LLString sqm = "0";
00402         LLString traffic = "0";
00403 
00404         // region name
00405         if (gStatusBar)
00406         {
00407                 pos = llformat(" %d, %d, %d", gStatusBar->mRegionDetails.mX, gStatusBar->mRegionDetails.mY, gStatusBar->mRegionDetails.mZ);
00408                 parcel = gStatusBar->mRegionDetails.mParcelName;
00409                 region = gStatusBar->mRegionDetails.mRegionName;
00410                 rtype = gStatusBar->mRegionDetails.mAccesString;
00411                 sqm = llformat("%d", gStatusBar->mRegionDetails.mArea);
00412                 if (gStatusBar->mRegionDetails.mForSale)
00413                 {
00414                         forsale = bogus->getString("Yes");
00415                 }
00416                 owner = gStatusBar->mRegionDetails.mOwner;
00417                 traffic = llformat("%d", (int)gStatusBar->mRegionDetails.mTraffic);
00418         }
00419 
00420         // update first page
00421         mLCD->ModifyControlsOnPage(mPageArray[0].mPageIndex);
00422         // region name
00423         mLCD->SetText(mPageArray[0].mDisplayItemArray[0], (LPCTSTR)(utf8str_to_utf16str(region).c_str()));
00424         // parcel name
00425         mLCD->SetText(mPageArray[0].mDisplayItemArray[1], (LPCTSTR)(utf8str_to_utf16str(parcel).c_str()));
00426         // position name
00427         mLCD->SetText(mPageArray[0].mDisplayItemArray[2], (LPCTSTR)(utf8str_to_utf16str(pos).c_str()));
00428         // Sqm
00429         mLCD->SetText(mPageArray[0].mDisplayItemArray[3], (LPCTSTR)(utf8str_to_utf16str(sqm).c_str()));
00430 
00431         // update second page
00432         mLCD->ModifyControlsOnPage(mPageArray[1].mPageIndex);
00433         // owner
00434         mLCD->SetText(mPageArray[1].mDisplayItemArray[0], (LPCTSTR)(utf8str_to_utf16str(owner).c_str()));
00435         // access type
00436         mLCD->SetText(mPageArray[1].mDisplayItemArray[1], (LPCTSTR)(utf8str_to_utf16str(rtype).c_str()));
00437         // forsale
00438         mLCD->SetText(mPageArray[1].mDisplayItemArray[2], (LPCTSTR)(utf8str_to_utf16str(forsale).c_str()));
00439         // traffic
00440         mLCD->SetText(mPageArray[1].mDisplayItemArray[3], (LPCTSTR)(utf8str_to_utf16str(traffic).c_str()));
00441 
00442 }
00443 
00444 void LLRegionPageGroup::GetDisplayable()
00445 {
00446         mDisplayPage = gSavedSettings.getBOOL("DisplayRegion");
00447 }
00448 
00449 LLRegionPageGroup::LLRegionPageGroup(CEzLcd *LCD, int type, HICON SLIcon)
00450 :LLLCDPageGroup(LCD, type, SLIcon)
00451 {
00452         // create a new specific page
00453         LLLCDSpecificPage newPage;
00454         newPage.mPageIndex = mLCD->AddNewPage() - 1;
00455         mLCD->ModifyControlsOnPage(newPage.mPageIndex);
00456 
00457         // add in all the display parts for this specific page
00458 
00459         // add in the icon - all pages have this - we don't need to track this because we never update it
00460         HANDLE m_rightIcon = mLCD->AddIcon(mSLIcon, 32, 32);
00461         mLCD->SetOrigin(m_rightIcon, 0, 0);
00462 
00463         // add Title
00464         HANDLE title = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_CENTER, 128);
00465         mLCD->SetOrigin(title, 32, 0);
00466         mLCD->SetText(title, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("LocationDetails1")).c_str()));
00467 
00468         HANDLE regionNameStatic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 30);
00469         mLCD->SetOrigin(regionNameStatic, ICON_WIDTH, 11);
00470         mLCD->SetText(regionNameStatic, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("Region")).c_str()));
00471 
00472         HANDLE regionName = mLCD->AddText(LG_SCROLLING_TEXT, LG_SMALL, DT_LEFT, 160 - ICON_WIDTH - 30 - 2);
00473         mLCD->SetOrigin(regionName, ICON_WIDTH+32, 11);
00474         mLCD->SetText(regionName, _T(""));
00475         newPage.mDisplayItemArray.push_back(regionName);
00476 
00477         HANDLE parcelStatic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 30);
00478         mLCD->SetOrigin(parcelStatic, ICON_WIDTH, 22);
00479         mLCD->SetText(parcelStatic, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("Parcel")).c_str()));
00480 
00481         HANDLE parcel = mLCD->AddText(LG_SCROLLING_TEXT, LG_SMALL, DT_CENTER, 160 - ICON_WIDTH - 30 - 2);
00482         mLCD->SetOrigin(parcel, ICON_WIDTH+32, 22);
00483         mLCD->SetText(parcel, _T(""));
00484         newPage.mDisplayItemArray.push_back(parcel);
00485 
00486         HANDLE positionStatic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 18);
00487         mLCD->SetOrigin(positionStatic, 0, 33);
00488         mLCD->SetText(positionStatic, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("Parcel")).c_str()));
00489 
00490         HANDLE position = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 60);
00491         mLCD->SetOrigin(position, 20, 33);
00492         mLCD->SetText(position, _T("100, 100, 100"));
00493         newPage.mDisplayItemArray.push_back(position);
00494 
00495         HANDLE sqmStatic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 18);
00496         mLCD->SetOrigin(sqmStatic, 90, 33);
00497         mLCD->SetText(sqmStatic, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("Sqm")).c_str()));
00498 
00499         HANDLE sqm = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 40);
00500         mLCD->SetOrigin(sqm, 90 + 20, 33);
00501         mLCD->SetText(sqm, _T("1000"));
00502         newPage.mDisplayItemArray.push_back(sqm);
00503 
00504         // and then insert it
00505         mPageArray.push_back(newPage);
00506 
00507         // create a new specific page
00508         LLLCDSpecificPage newPage2;
00509         newPage2.mPageIndex = mLCD->AddNewPage() - 1;
00510         mLCD->ModifyControlsOnPage(newPage2.mPageIndex);
00511 
00512         // add in all the display parts for this specific page
00513 
00514         // add in the icon - all pages have this - we don't need to track this because we never update it
00515         m_rightIcon = mLCD->AddIcon(mSLIcon, 32, 32);
00516         mLCD->SetOrigin(m_rightIcon, 0, 0);
00517 
00518         // add Title
00519         title = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_CENTER, 128);
00520         mLCD->SetOrigin(title, 32, 0);
00521         mLCD->SetText(title, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("LocationDetails2")).c_str()));
00522 
00523         HANDLE ownerStatic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 30);
00524         mLCD->SetOrigin(ownerStatic, ICON_WIDTH, 11);
00525         mLCD->SetText(ownerStatic, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("Owner")).c_str()));
00526 
00527         HANDLE owner = mLCD->AddText(LG_SCROLLING_TEXT, LG_SMALL, DT_LEFT, 160 - 30 - ICON_WIDTH - 2);
00528         mLCD->SetOrigin(owner, ICON_WIDTH+32, 11);
00529         mLCD->SetText(owner, _T(""));
00530         newPage2.mDisplayItemArray.push_back(owner);
00531 
00532         HANDLE typeStatic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 30);
00533         mLCD->SetOrigin(typeStatic, ICON_WIDTH, 22);
00534         mLCD->SetText(typeStatic, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("Type")).c_str()));
00535 
00536         HANDLE rtype = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 160 - 30 - ICON_WIDTH - 2);
00537         mLCD->SetOrigin(rtype, ICON_WIDTH+32, 22);
00538         mLCD->SetText(rtype, _T(""));
00539         newPage2.mDisplayItemArray.push_back(rtype);
00540 
00541         HANDLE forsaleStatic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 40);
00542         mLCD->SetOrigin(forsaleStatic, 0, 33);
00543         mLCD->SetText(forsaleStatic, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("Forsale")).c_str()));
00544 
00545         HANDLE forsale = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 30);
00546         mLCD->SetOrigin(forsale, 42, 33);
00547         mLCD->SetText(forsale, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("No")).c_str()));
00548         newPage2.mDisplayItemArray.push_back(forsale);
00549 
00550         HANDLE trafficStatic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 50);
00551         mLCD->SetOrigin(trafficStatic, 70, 33);
00552         mLCD->SetText(trafficStatic, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("Traffic")).c_str()));
00553 
00554         HANDLE traffic = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_LEFT, 30);
00555         mLCD->SetOrigin(traffic, 122, 33);
00556         mLCD->SetText(traffic, _T("200"));
00557         newPage2.mDisplayItemArray.push_back(traffic);
00558 
00559         // and then insert it
00560         mPageArray.push_back(newPage2);
00561 }
00562 
00564 //
00565 //      Chat group Page class
00566 //
00568 
00569 void LLChatPageGroup::UpdateDetails()
00570 {
00571         mLCD->ModifyControlsOnPage(mPageArray[0].mPageIndex);
00572         mLCD->SetText(mPageArray[0].mDisplayItemArray[0], (LPCTSTR)(utf8str_to_utf16str(mLine1).c_str()));
00573         mLCD->SetText(mPageArray[0].mDisplayItemArray[1], (LPCTSTR)(utf8str_to_utf16str(mLine2).c_str()));
00574         mLCD->SetText(mPageArray[0].mDisplayItemArray[2], (LPCTSTR)(utf8str_to_utf16str(mLine3).c_str()));
00575 }
00576 
00577 void LLChatPageGroup::GetDisplayable()
00578 {
00579         mDisplayPage = gSavedSettings.getBOOL("DisplayChat");
00580 }
00581 
00582 void LLChatPageGroup::InsertText(const LLString &newLine)
00583 {
00584         mLine1 = mLine2;
00585         mLine2 = mLine3;
00586         mLine3 = newLine;
00587 }
00588 
00589 LLChatPageGroup::LLChatPageGroup(CEzLcd *LCD, int type, HICON SLIcon)
00590 :LLLCDPageGroup(LCD, type, SLIcon)
00591 {
00592         mLine1 = "";
00593         mLine2 = "";
00594         mLine3 = "";
00595         // create a new specific page
00596         LLLCDSpecificPage newPage;
00597         newPage.mPageIndex = mLCD->AddNewPage() - 1;
00598         mLCD->ModifyControlsOnPage(newPage.mPageIndex);
00599 
00600         // add in all the display parts for this specific page
00601 
00602         // add in the icon - all pages have this - we don't need to track this because we never update it
00603         HANDLE m_rightIcon = mLCD->AddIcon(mSLIcon, 32, 32);
00604         mLCD->SetOrigin(m_rightIcon, 0, 0);
00605 
00606         // add Title
00607         HANDLE title = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_CENTER, 128);
00608         mLCD->SetOrigin(title, 32, 0);
00609         mLCD->SetText(title, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("Last3ChatLines")).c_str()));
00610 
00611         // add line
00612         HANDLE chatLine = mLCD->AddText(LG_SCROLLING_TEXT, LG_SMALL, DT_LEFT, 160 - ICON_WIDTH);
00613         mLCD->SetOrigin(chatLine, ICON_WIDTH, 11);
00614         mLCD->SetText(chatLine, _T(""));
00615         newPage.mDisplayItemArray.push_back(chatLine);
00616 
00617         // add line
00618         chatLine = mLCD->AddText(LG_SCROLLING_TEXT, LG_SMALL, DT_LEFT, 160 - ICON_WIDTH);
00619         mLCD->SetOrigin(chatLine, ICON_WIDTH, 22);
00620         mLCD->SetText(chatLine, _T(""));
00621         newPage.mDisplayItemArray.push_back(chatLine);
00622 
00623         // add line
00624         chatLine = mLCD->AddText(LG_SCROLLING_TEXT, LG_SMALL, DT_LEFT, 160 - ICON_WIDTH);
00625         mLCD->SetOrigin(chatLine, ICON_WIDTH, 33);
00626         mLCD->SetText(chatLine, _T(""));
00627         newPage.mDisplayItemArray.push_back(chatLine);
00628 
00629         // and then insert it
00630         mPageArray.push_back(newPage);
00631 }
00632 
00634 //
00635 //      IM Page Group class
00636 //
00638 
00639 void LLIMPageGroup::UpdateDetails()
00640 {
00641         mLCD->ModifyControlsOnPage(mPageArray[0].mPageIndex);
00642         mLCD->SetText(mPageArray[0].mDisplayItemArray[0], (LPCTSTR)(utf8str_to_utf16str(mLine1).c_str()));
00643         mLCD->SetText(mPageArray[0].mDisplayItemArray[1], (LPCTSTR)(utf8str_to_utf16str(mLine2).c_str()));
00644         mLCD->SetText(mPageArray[0].mDisplayItemArray[2], (LPCTSTR)(utf8str_to_utf16str(mLine3).c_str()));
00645 }
00646 
00647 void LLIMPageGroup::GetDisplayable()
00648 {
00649         mDisplayPage = gSavedSettings.getBOOL("DisplayIM");
00650 }
00651 
00652 void LLIMPageGroup::InsertText(const LLString &newLine)
00653 {
00654         mLine1 = mLine2;
00655         mLine2 = mLine3;
00656         mLine3 = newLine;
00657 }
00658 
00659 LLIMPageGroup::LLIMPageGroup(CEzLcd *LCD, int type, HICON SLIcon)
00660 :LLLCDPageGroup(LCD, type, SLIcon){
00661         mLine1 = "";
00662         mLine2 = "";
00663         mLine3 = "";
00664         // create a new specific page
00665         LLLCDSpecificPage newPage;
00666         newPage.mPageIndex = mLCD->AddNewPage() - 1;
00667         mLCD->ModifyControlsOnPage(newPage.mPageIndex);
00668 
00669         // add in all the display parts for this specific page
00670 
00671         // add in the icon - all pages have this - we don't need to track this because we never update it
00672         HANDLE m_rightIcon = mLCD->AddIcon(mSLIcon, 32, 32);
00673         mLCD->SetOrigin(m_rightIcon, 0, 0);
00674 
00675         // add Title
00676         HANDLE title = mLCD->AddText(LG_STATIC_TEXT, LG_SMALL, DT_CENTER, 128);
00677         mLCD->SetOrigin(title, 32, 0);
00678         mLCD->SetText(title, (LPCTSTR)(utf8str_to_utf16str(bogus->getString("Last3IMLines")).c_str()));
00679 
00680         // add line
00681         HANDLE chatLine = mLCD->AddText(LG_SCROLLING_TEXT, LG_SMALL, DT_LEFT, 160 - ICON_WIDTH);
00682         mLCD->SetOrigin(chatLine, ICON_WIDTH, 11);
00683         mLCD->SetText(chatLine, _T(""));
00684         newPage.mDisplayItemArray.push_back(chatLine);
00685 
00686         // add line
00687         chatLine = mLCD->AddText(LG_SCROLLING_TEXT, LG_SMALL, DT_LEFT, 160 - ICON_WIDTH);
00688         mLCD->SetOrigin(chatLine, ICON_WIDTH, 22);
00689         mLCD->SetText(chatLine, _T(""));
00690         newPage.mDisplayItemArray.push_back(chatLine);
00691 
00692         // add line
00693         chatLine = mLCD->AddText(LG_SCROLLING_TEXT, LG_SMALL, DT_LEFT, 160 - ICON_WIDTH);
00694         mLCD->SetOrigin(chatLine, ICON_WIDTH, 33);
00695         mLCD->SetText(chatLine, _T(""));
00696         newPage.mDisplayItemArray.push_back(chatLine);
00697 
00698         // and then insert it
00699         mPageArray.push_back(newPage);
00700 }
00701 
00702 #endif //LL_WINDOWS
00703 #endif //LL_LCD_COMPILE

Generated on Fri May 16 08:33:46 2008 for SecondLife by  doxygen 1.5.5