llfloatertest.cpp

Go to the documentation of this file.
00001 
00033 #include "llviewerprecompiledheaders.h"
00034 
00035 #include "llfloatertest.h"
00036 
00037 #include "llbutton.h"
00038 #include "llcheckboxctrl.h"
00039 #include "llcombobox.h"
00040 #include "llfloater.h"
00041 #include "lliconctrl.h"
00042 #include "lllineeditor.h"
00043 #include "llradiogroup.h"
00044 #include "llscrollcontainer.h"
00045 #include "llscrolllistctrl.h"
00046 #include "llslider.h"
00047 #include "llsliderctrl.h"
00048 #include "lltabcontainer.h"
00049 #include "lltextbox.h"
00050 #include "lltexteditor.h"
00051 #include "llview.h"
00052 #include "llviewborder.h"
00053 
00054 #include "llnamelistctrl.h"
00055 #include "llvieweruictrlfactory.h"
00056 #include "llviewercontrol.h"
00057 
00058 class LLFloaterTestImpl : public LLFloater
00059 {
00060 public:
00061         LLFloaterTestImpl();
00062 
00063 private:
00064         static void onClickButton(void*);
00065         static void onClickText(void*);
00066         static void onCloseTab(void*);
00067         static void onClickTab(void*, bool);
00068         static void onCommitCheck(LLUICtrl*, void*);
00069         static void onCommitCombo(LLUICtrl*, void*);
00070         static void onCommitLine(LLUICtrl*, void*);
00071         static void onKeyLine(LLLineEditor*, void*);
00072         static void onFocusLostLine(LLUICtrl*, void*);
00073         static void onChangeRadioGroup(LLUICtrl*, void*);
00074 
00075         LLButton* mBtnSimple;
00076         LLButton* mBtnUnicode;
00077         LLButton* mBtnImages;
00078         LLCheckBoxCtrl* mCheckSimple;
00079         LLCheckBoxCtrl* mCheckUnicode;
00080         LLComboBox* mCombo;
00081         LLIconCtrl* mIcon;
00082         LLLineEditor* mLineEditor;
00083         LLRadioGroup* mRadioGroup;
00084         LLRadioCtrl* mRadio1;
00085         LLRadioCtrl* mRadio2;
00086         LLScrollableContainerView* mScroll;
00087         LLScrollListCtrl* mScrollList;
00088         LLTabContainer* mTab;
00089         LLTextEditor* mTextEditor;
00090         LLView* mView;
00091         LLViewBorder* mViewBorder;
00092 
00093         LLNameListCtrl* mNameList;
00094 };
00095 
00096 
00097 LLFloaterTestImpl::LLFloaterTestImpl()
00098 :       LLFloater("test", LLRect(0, 500, 700, 0), "Test UI")
00099 {
00100         const S32 HPAD = 5;
00101         const S32 VPAD = 5;
00102         const S32 LEFT = HPAD;
00103         const S32 RIGHT = getRect().getWidth() - HPAD;
00104         const S32 TOP = getRect().getHeight() - LLFLOATER_HEADER_SIZE - VPAD;
00105         const S32 BOTTOM = VPAD;
00106         const S32 LINE = 15;
00107 
00108         //S32 x = LEFT;
00109         S32 y = TOP;
00110 
00111         LLTextBox* text = NULL;
00112         LLButton* btn = NULL;
00113         LLTabContainer* tab = NULL;
00114         LLPanel* panel = NULL;
00115         LLCheckBoxCtrl* check = NULL;
00116         LLComboBox* combo = NULL;
00117 
00118         btn = new LLButton("can't click",
00119                 LLRect(LEFT+150, y, LEFT+150+100, y-LINE),
00120                 NULL,   // LLString converts to ""
00121                 onClickButton, this);
00122         btn->setFollows(FOLLOWS_LEFT|FOLLOWS_TOP);
00123         btn->setFont(LLFontGL::sSansSerifSmall);
00124         addChild(btn);
00125 
00126         text = new LLTextBox("simple_text", 
00127                 "simple sans-serif text that is mouse opaque opaque opaque",
00128                 50,     // max_width
00129                 LLFontGL::sSansSerifSmall,
00130                 TRUE);  // mouse_opaque
00131         text->setClickedCallback(onClickText);
00132         text->setRect(LLRect(LEFT, y, RIGHT, y-LINE));
00133         addChild(text);
00134 
00135         y -= VPAD + LINE;
00136 
00137         btn = new LLButton("can click",
00138                 LLRect(LEFT+150, y, LEFT+150+100, y-LINE),
00139                 NULL,   // LLString converts to ""
00140                 onClickButton, this);
00141         btn->setFollows(FOLLOWS_LEFT|FOLLOWS_TOP);
00142         btn->setFont(LLFontGL::sSansSerifSmall);
00143         addChild(btn);
00144 
00145         text = new LLTextBox("simple2_text", 
00146                 LLRect(LEFT, y, RIGHT, y-LINE),
00147                 "monospaced, non-opaque text with tooltip, non-opaque non-opaque",
00148                 LLFontGL::sMonospace,
00149                 FALSE); // mouse_opaque
00150         text->setToolTip("I'm a tooltip");
00151         addChild(text);
00152 
00153         y -= VPAD + LINE;
00154 
00155         tab = new LLTabContainer("test_tab", 
00156                 LLRect(LEFT, y, RIGHT, BOTTOM),
00157                 LLTabContainer::TOP,
00158                 onCloseTab, this,
00159                 "Tab Title",
00160                 TRUE);  // bordered
00161         addChild(tab);
00162         mTab = tab;
00163 
00164         //-----------------------------------------------------------------------
00165         // First tab container panel
00166         //-----------------------------------------------------------------------
00167         panel = new LLPanel("first_tab_panel",
00168                 LLRect(0, 400, 400, 0), // dummy rect
00169                 TRUE);  // bordered
00170         tab->addTabPanel(panel, "First", 
00171                 TRUE,   // select
00172                 onClickTab, this);
00173 
00174         y = panel->getRect().getHeight() - VPAD;
00175 
00176         text = new LLTextBox("unicode_text",
00177                 LLRect(LEFT, y, RIGHT, y-LINE),
00178                 LLString("File"),
00179                 LLFontGL::sSansSerif,
00180                 TRUE);  // mouse_opaque
00181         text->setToolTip("This should be Unicode text");
00182         panel->addChild(text);
00183 
00184         y -= VPAD + LINE;
00185 
00186         btn = new LLButton("unicode_btn", LLRect(LEFT, y, LEFT+100, y-20));
00187         btn->setLabel(LLString("unicode"));
00188         panel->addChild(btn);
00189 
00190         y -= VPAD + 20;
00191 
00192         btn = new LLButton("image_btn",
00193                 LLRect(LEFT, y, LEFT+32, y-32),
00194                 "tool_zoom.tga",
00195                 "tool_zoom_active.tga",
00196                 "",     // control_name,
00197                 onClickButton, this,
00198                 LLFontGL::sSansSerifSmall);
00199         btn->setFollows(FOLLOWS_LEFT | FOLLOWS_TOP);
00200         panel->addChild(btn);
00201 
00202         y -= VPAD + 32;
00203 
00204         check = new LLCheckBoxCtrl("simple_check",
00205                 LLRect(LEFT, y, LEFT+150, y-LLCHECKBOXCTRL_HEIGHT),
00206                 "Simple Checkbox",
00207                 LLFontGL::sSansSerifSmall,
00208                 onCommitCheck, this,
00209                 TRUE,   // initial_value
00210                 FALSE,  // radio_style
00211                 "UIFloaterTestBool");   // control_which
00212         panel->addChild(check);
00213 
00214         y -= VPAD + LLCHECKBOXCTRL_HEIGHT;
00215 
00216         check = new LLCheckBoxCtrl("unicode_check",
00217                 LLRect(LEFT, y, LEFT+150, y-LLCHECKBOXCTRL_HEIGHT),
00218                 "TODO: Unicode Checkbox",
00219                 LLFontGL::sSansSerifSmall,
00220                 onCommitCheck, this,
00221                 TRUE,   // initial_value
00222                 FALSE,  // radio_style
00223                 "");    // control_which
00224         panel->addChild(check);
00225         mCheckUnicode = check;
00226 
00227         y -= VPAD + LLCHECKBOXCTRL_HEIGHT;
00228 
00229         combo = new LLComboBox("combo",
00230                 LLRect(LEFT, y, LEFT+100, y-LLCOMBOBOX_HEIGHT),
00231                 "Combobox Label",
00232                 onCommitCombo, this);
00233         combo->add("first item");
00234         combo->add("second item");
00235         combo->add("should go to the top", ADD_TOP);
00236         combo->add("disabled item", NULL, ADD_BOTTOM, FALSE);
00237         panel->addChild(combo);
00238 
00239         y -= VPAD + LLCOMBOBOX_HEIGHT;
00240 
00241         LLIconCtrl* icon = new LLIconCtrl(
00242                 "test_icon",
00243                 LLRect(LEFT, y, LEFT+32, y-32),
00244                 "object_cone.tga" );
00245         panel->addChild(icon);
00246         mIcon = icon;
00247 
00248         y -= VPAD + 32;
00249 
00250         LLLineEditor* line = new LLLineEditor(
00251                 "test_line",
00252                 LLRect(LEFT, y, LEFT+200, y-20),
00253                 "test some unicode text here",
00254                 LLFontGL::sSansSerif,
00255                 200,    // max_length_bytes
00256                 onCommitLine,
00257                 onKeyLine,
00258                 onFocusLostLine,
00259                 this,
00260                 NULL,   // prevalidate func
00261                 LLViewBorder::BEVEL_IN,
00262                 LLViewBorder::STYLE_LINE,
00263                 1);             // border thickness
00264         line->setHandleEditKeysDirectly(true);
00265         panel->addChild(line);
00266 
00267         y -= VPAD + 20;
00268 
00269         LLRadioGroup* group = new LLRadioGroup(
00270                 "radio_group",
00271                 LLRect(LEFT, y, LEFT+200, y - 50),
00272                 0,      // initial_index
00273                 onChangeRadioGroup, this,
00274                 TRUE);  // border
00275         panel->addChild(group);
00276 
00277         S32 yy = 100;
00278         group->addRadioButton("Radio1", "Radio 1", LLRect(0, yy, 200, yy-LINE), LLFontGL::sSansSerifSmall);
00279         yy -= LINE;
00280         group->addRadioButton("Radio2", "Radio 2", LLRect(0, yy, 200, yy-LINE), LLFontGL::sSansSerifSmall);
00281         yy -= LINE;
00282         group->addRadioButton("Radio3", "Radio 3", LLRect(0, yy, 200, yy-LINE), LLFontGL::sSansSerifSmall);
00283         yy -= LINE;
00284 
00285         //-----------------------------------------------------------------------
00286         // Second tab container panel
00287         //-----------------------------------------------------------------------
00288         panel = new LLPanel("second_tab_panel",
00289                 LLRect(0, 400, 400, 0), // dummy rect
00290                 TRUE);  // bordered
00291         tab->addTabPanel(panel, "Second", 
00292                 FALSE,  // select
00293                 onClickTab, this);
00294 
00295         y = panel->getRect().getHeight() - VPAD;
00296 
00297         btn = new LLButton("Simple Button",
00298                 LLRect(LEFT, y, LEFT+100, y - 20),
00299                 "",
00300                 onClickButton, this);
00301         btn->setFollows(FOLLOWS_TOP|FOLLOWS_LEFT);
00302         panel->addChild(btn);
00303         mBtnSimple = btn;
00304 
00305         //-----------------------------------------------------------------------
00306         // Hook us up with the floater view
00307         //-----------------------------------------------------------------------
00308         open();         /* Flawfinder: ignore */
00309         center();
00310 }
00311 
00312 // static
00313 void LLFloaterTestImpl::onClickButton(void*)
00314 {
00315         llinfos << "button clicked" << llendl;
00316 }
00317 
00318 // static
00319 void LLFloaterTestImpl::onClickText(void*)
00320 {
00321         llinfos << "text clicked" << llendl;
00322 }
00323 
00324 // static
00325 void LLFloaterTestImpl::onCloseTab(void*)
00326 {
00327         llinfos << "close tab" << llendl;
00328 }
00329 
00330 // static
00331 void LLFloaterTestImpl::onClickTab(void*, bool)
00332 {
00333         llinfos << "click tab" << llendl;
00334 }
00335 
00336 // static
00337 void LLFloaterTestImpl::onCommitCheck(LLUICtrl*, void*)
00338 {
00339         llinfos << "commit check" << llendl;
00340 }
00341 
00342 // static
00343 void LLFloaterTestImpl::onCommitCombo(LLUICtrl* ctrl, void*)
00344 {
00345         LLComboBox* combo = (LLComboBox*)ctrl;
00346         LLString name = combo->getSimple();
00347         LLSD value = combo->getValue();
00348         llinfos << "commit combo name " << name << " value " << value.asString() << llendl;
00349 }
00350 
00351 // static
00352 void LLFloaterTestImpl::onCommitLine(LLUICtrl*, void*)
00353 {
00354         llinfos << "commit line editor" << llendl;
00355 }
00356 
00357 // static
00358 void LLFloaterTestImpl::onKeyLine(LLLineEditor*, void*)
00359 {
00360         llinfos << "keystroke line editor" << llendl;
00361 }
00362 
00363 // static
00364 void LLFloaterTestImpl::onFocusLostLine(LLUICtrl*, void*)
00365 {
00366         llinfos << "focus lost line editor" << llendl;
00367 }
00368 
00369 // static
00370 void LLFloaterTestImpl::onChangeRadioGroup(LLUICtrl*, void*)
00371 {
00372         llinfos << "change radio group" << llendl;
00373 }
00374 
00375 //---------------------------------------------------------------------------
00376 
00377 // static
00378 void LLFloaterTest::show(void*)
00379 {
00380         new LLFloaterTest();
00381 }
00382 
00383 LLFloaterTest::LLFloaterTest()
00384 :       impl(* new LLFloaterTestImpl)
00385 {
00386 }
00387 
00388 LLFloaterTest::~LLFloaterTest()
00389 {
00390         delete &impl;
00391 }
00392 
00393 //---------------------------------------------------------------------------
00394 
00395 LLFloaterSimple::LLFloaterSimple(const std::string& xml_filename)
00396 {
00397         gUICtrlFactory->buildFloater(this, xml_filename);
00398 }

Generated on Thu Jul 1 06:08:36 2010 for Second Life Viewer by  doxygen 1.4.7