From 81e0fb43caa27491fa18b17d6a05cafb0e20dfa6 Mon Sep 17 00:00:00 2001 From: Steven Bennetts Date: Fri, 9 Oct 2009 00:42:36 +0000 Subject: merge https://svn.aws.productengine.com/secondlife/export-from-ll/viewer-2-0@1943 https://svn.aws.productengine.com/secondlife/pe/stable-2@1958 -> viewer-2.0.0-3 * Bugs: EXT-1148 EXT-1330 EXT-990 EXT-1259 EXT-1184 EXT-1327 EXT-1389 EXT-1276 EXT-1390 EXT-1396 EXT-1050 EXT-1094 EXT-1166 EXT-1137 EXT-1327 EXT-782 EXT-1137 EXT-1394 EXT-1326 EXT-917 EXT-1262 * New Dev: EXT-1292 EXT-1139 --- indra/newview/llpanelteleporthistory.cpp | 164 ++++++++++++++++++++++++++----- 1 file changed, 142 insertions(+), 22 deletions(-) (limited to 'indra/newview/llpanelteleporthistory.cpp') diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index bc0dec1fdb..bed15df1ee 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -163,11 +163,6 @@ void LLTeleportHistoryPanel::ContextMenu::show(LLView* spawning_view, S32 index, mIndex = index; mMenu = createMenu(); - LLViewerInventoryItem *landmark = LLLandmarkActions::findLandmarkForGlobalPos( - LLTeleportHistoryStorage::getInstance()->getItems()[index].mGlobalPos); - - mMenu->setItemEnabled("Make Landmark", !landmark || landmark->getUUID().isNull()); - mMenu->show(x, y); LLMenuGL::showPopup(spawning_view, mMenu, x, y); } @@ -181,7 +176,6 @@ LLContextMenu* LLTeleportHistoryPanel::ContextMenu::createMenu() registrar.add("TeleportHistory.Teleport", boost::bind(&LLTeleportHistoryPanel::ContextMenu::onTeleport, this)); registrar.add("TeleportHistory.MoreInformation",boost::bind(&LLTeleportHistoryPanel::ContextMenu::onInfo, this)); registrar.add("TeleportHistory.Copy", boost::bind(&LLTeleportHistoryPanel::ContextMenu::onCopy, this)); - registrar.add("TeleportHistory.MakeLandmark", boost::bind(&LLTeleportHistoryPanel::ContextMenu::onMakeLandmark, this)); // create the context menu from the XUI return LLUICtrlFactory::getInstance()->createFromFile( @@ -211,12 +205,6 @@ void LLTeleportHistoryPanel::ContextMenu::onCopy() boost::bind(&LLTeleportHistoryPanel::ContextMenu::gotSLURLCallback, _1), false); } -void LLTeleportHistoryPanel::ContextMenu::onMakeLandmark() -{ - //FIXME: it creates landmark for current agent positon, not for the global position of item of teleport history - LLSideTray::getInstance()->showPanel("panel_places", LLSD().insert("type", "create_landmark")); -} - // Not yet implemented; need to remove buildPanel() from constructor when we switch //static LLRegisterPanelClassWrapper t_teleport_history("panel_teleport_history"); @@ -225,6 +213,7 @@ LLTeleportHistoryPanel::LLTeleportHistoryPanel() mFilterSubString(LLStringUtil::null), mTeleportHistory(NULL), mHistoryAccordion(NULL), + mStarButton(NULL), mAccordionTabMenu(NULL), mLastSelectedScrollList(NULL) { @@ -233,6 +222,7 @@ LLTeleportHistoryPanel::LLTeleportHistoryPanel() LLTeleportHistoryPanel::~LLTeleportHistoryPanel() { + LLView::deleteViewByHandle(mGearMenuHandle); } BOOL LLTeleportHistoryPanel::postBuild() @@ -247,7 +237,6 @@ BOOL LLTeleportHistoryPanel::postBuild() if (mHistoryAccordion) { - for (child_list_const_iter_t iter = mHistoryAccordion->beginChild(); iter != mHistoryAccordion->endChild(); iter++) { if (dynamic_cast(*iter)) @@ -268,6 +257,21 @@ BOOL LLTeleportHistoryPanel::postBuild() } } + getChild("bottom_panel")->childSetAction("gear_btn",boost::bind(&LLTeleportHistoryPanel::onGearButtonClicked, this)); + + LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; + + registrar.add("TeleportHistory.ExpandAllFolders", boost::bind(&LLTeleportHistoryPanel::onExpandAllFolders, this)); + registrar.add("TeleportHistory.CollapseAllFolders", boost::bind(&LLTeleportHistoryPanel::onCollapseAllFolders, this)); + registrar.add("TeleportHistory.ClearTeleportHistory", boost::bind(&LLTeleportHistoryPanel::onClearTeleportHistory, this)); + + LLMenuGL* gear_menu = LLUICtrlFactory::getInstance()->createFromFile("menu_teleport_history_gear.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); + if(gear_menu) + mGearMenuHandle = gear_menu->getHandle(); + + mStarButton = getChild("star_btn"); + mStarButton->setCommitCallback(boost::bind(&LLTeleportHistoryPanel::onStarButtonCommit, this)); + return TRUE; } @@ -293,7 +297,7 @@ void LLTeleportHistoryPanel::onShowOnMap() return; LLVector3d global_pos = mTeleportHistory->getItems()[itemp->getIndex()].mGlobalPos; - + if (!global_pos.isExactlyZero()) { LLFloaterWorldMap::getInstance()->trackLocation(global_pos); @@ -342,20 +346,47 @@ void LLTeleportHistoryPanel::onCopySLURL() // virtual void LLTeleportHistoryPanel::updateVerbs() { - if (!isTabVisible()) + if (!isTabVisible()) return; if (!mLastSelectedScrollList) { mTeleportBtn->setEnabled(false); mShowOnMapBtn->setEnabled(false); + mStarButton->setEnabled(false); + mStarButton->setToolTip(LLStringExplicit("")); return; } LLTeleportHistoryFlatItem* itemp = dynamic_cast (mLastSelectedScrollList->getSelectedItem()); - mTeleportBtn->setEnabled(NULL != itemp && 0 < itemp->getIndex()); + mTeleportBtn->setEnabled(NULL != itemp && itemp->getIndex() < (S32)mTeleportHistory->getItems().size() - 1); mShowOnMapBtn->setEnabled(NULL != itemp); + + if (NULL != itemp) + { + LLViewerInventoryItem *landmark = LLLandmarkActions::findLandmarkForGlobalPos( + mTeleportHistory->getItems()[itemp->getIndex()].mGlobalPos); + + mStarButton->setEnabled(true); + if (!landmark || landmark->getUUID().isNull()) + { + mStarButton->setToggleState(true); + // Landmark can be created only for current agent positon, which is most recent (last) item in teleport history. + // mTeleportBtn is disabled only for that item. + mStarButton->setToolTip(mTeleportBtn->getEnabled() ? getString("cant_create_lm_here") : getString("create_landmark")); + } + else + { + mStarButton->setToggleState(false); + mStarButton->setToolTip(getString("open_landmark")); + } + } + else + { + mStarButton->setEnabled(false); + mStarButton->setToolTip(LLStringExplicit("")); + } } void LLTeleportHistoryPanel::showTeleportHistory() @@ -375,7 +406,7 @@ void LLTeleportHistoryPanel::showTeleportHistory() curr_date.split(&curr_year, &curr_month, &curr_day); curr_date.fromYMDHMS(curr_year, curr_month, curr_day); // Set hour, min, and sec to 0 curr_date.secondsSinceEpoch(curr_date.secondsSinceEpoch() + seconds_in_day); - + LLFlatListView* curr_flat_view = NULL; S32 index = hist_items.size() - 1; @@ -388,10 +419,10 @@ void LLTeleportHistoryPanel::showTeleportHistory() std::string::size_type match_offset = mFilterSubString.size() ? landmark_title.find(mFilterSubString) : std::string::npos; bool passed = mFilterSubString.size() == 0 || match_offset != std::string::npos; - + if (!passed) continue; - + if (curr_tab < tabs_cnt - 1) { const LLDate &date = (*iter).mDate; @@ -405,7 +436,7 @@ void LLTeleportHistoryPanel::showTeleportHistory() tab = mItemContainers.get(mItemContainers.size() - 1 - curr_tab); tab->setVisible(false); - + if (curr_tab <= tabs_cnt - 4) { curr_date.secondsSinceEpoch(curr_date.secondsSinceEpoch() - seconds_in_day); @@ -436,7 +467,6 @@ void LLTeleportHistoryPanel::showTeleportHistory() curr_year--; } curr_date.fromYMDHMS(curr_year, curr_month, curr_day); - } else // 6 months and older { @@ -455,7 +485,7 @@ void LLTeleportHistoryPanel::showTeleportHistory() } if (curr_flat_view) - { + { curr_flat_view->addItem(new LLTeleportHistoryFlatItem(index, &mContextMenu, (*iter).mTitle)); } @@ -553,6 +583,50 @@ void LLTeleportHistoryPanel::onAccordionTabClose(LLAccordionCtrlTab *tab) mHistoryAccordion->arrange(); } +void LLTeleportHistoryPanel::onExpandAllFolders() +{ + S32 tabs_cnt = mItemContainers.size(); + + for (S32 n = 0; n < tabs_cnt; n++) + { + mItemContainers.get(n)->setDisplayChildren(true); + } + mHistoryAccordion->arrange(); +} + +void LLTeleportHistoryPanel::onCollapseAllFolders() +{ + S32 tabs_cnt = mItemContainers.size(); + + for (S32 n = 0; n < tabs_cnt; n++) + { + mItemContainers.get(n)->setDisplayChildren(false); + } + mHistoryAccordion->arrange(); +} + +void LLTeleportHistoryPanel::onClearTeleportHistory() +{ + LLNotifications::instance().add("ConfirmClearTeleportHistory", LLSD(), LLSD(), boost::bind(&LLTeleportHistoryPanel::onClearTeleportHistoryDialog, this, _1, _2)); +} + +bool LLTeleportHistoryPanel::onClearTeleportHistoryDialog(const LLSD& notification, const LLSD& response) +{ + + S32 option = LLNotification::getSelectedOption(notification, response); + + if (0 == option) + { + LLTeleportHistoryStorage *th = LLTeleportHistoryStorage::getInstance(); + th->purgeItems(); + th->save(); + + showTeleportHistory(); + } + + return false; +} + LLFlatListView* LLTeleportHistoryPanel::getFlatListViewFromTab(LLAccordionCtrlTab *tab) { for (child_list_const_iter_t iter = tab->beginChild(); iter != tab->endChild(); iter++) @@ -566,3 +640,49 @@ LLFlatListView* LLTeleportHistoryPanel::getFlatListViewFromTab(LLAccordionCtrlTa return NULL; } +void LLTeleportHistoryPanel::onGearButtonClicked() +{ + LLMenuGL* menu = (LLMenuGL*)mGearMenuHandle.get(); + if (!menu) + return; + + // Shows the menu at the top of the button bar. + + // Calculate its coordinates. + LLPanel* bottom_panel = getChild("bottom_panel"); + menu->arrangeAndClear(); + S32 menu_height = menu->getRect().getHeight(); + S32 menu_x = -2; // *HACK: compensates HPAD in showPopup() + S32 menu_y = bottom_panel->getRect().mTop + menu_height; + + // Actually show the menu. + menu->buildDrawLabels(); + menu->updateParent(LLMenuGL::sMenuContainer); + LLMenuGL::showPopup(this, menu, menu_x, menu_y); +} + +void LLTeleportHistoryPanel::onStarButtonCommit() +{ + if (!mLastSelectedScrollList) + return; + + LLTeleportHistoryFlatItem* itemp = dynamic_cast (mLastSelectedScrollList->getSelectedItem()); + if(!itemp) + return; + + if (itemp->getIndex() < (S32)mTeleportHistory->getItems().size() - 1) + { + LLTeleportHistoryFlatItem::showPlaceInfoPanel(itemp->getIndex()); + } + else + { + LLViewerInventoryItem *landmark = LLLandmarkActions::findLandmarkForGlobalPos( + mTeleportHistory->getItems()[itemp->getIndex()].mGlobalPos); + + if (!landmark || landmark->getUUID().isNull()) + LLSideTray::getInstance()->showPanel("panel_places", LLSD().insert("type", "create_landmark")); + else + LLTeleportHistoryFlatItem::showPlaceInfoPanel(itemp->getIndex()); + } +} + -- cgit v1.2.3 From 276e80ce367dd89d7f3b2882ff669d6b59b78c0c Mon Sep 17 00:00:00 2001 From: Steven Bennetts Date: Mon, 12 Oct 2009 08:20:00 +0000 Subject: merge https://svn.aws.productengine.com/secondlife/export-from-ll/viewer-2-0@1967 https://svn.aws.productengine.com/secondlife/pe/stable-2@1971 -> viewer-2.0.0-3 * Bugs: EXT-1431 EXT-1237 EXT-1151 EXT-1165 EXT-1410 EXT-1419 * Dev: EXT-1232 --- indra/newview/llpanelteleporthistory.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'indra/newview/llpanelteleporthistory.cpp') diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index bed15df1ee..e71ddfb283 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -243,6 +243,7 @@ BOOL LLTeleportHistoryPanel::postBuild() { LLAccordionCtrlTab* tab = (LLAccordionCtrlTab*)*iter; tab->setRightMouseDownCallback(boost::bind(&LLTeleportHistoryPanel::onAccordionTabRightClick, this, _1, _2, _3, _4)); + tab->setDisplayChildren(false); mItemContainers.put(tab); @@ -255,6 +256,13 @@ BOOL LLTeleportHistoryPanel::postBuild() } } } + + // Open first 2 accordion tabs + if (mItemContainers.size() > 1) + mItemContainers.get(mItemContainers.size() - 1)->setDisplayChildren(true); + + if (mItemContainers.size() > 2) + mItemContainers.get(mItemContainers.size() - 2)->setDisplayChildren(true); } getChild("bottom_panel")->childSetAction("gear_btn",boost::bind(&LLTeleportHistoryPanel::onGearButtonClicked, this)); -- cgit v1.2.3 From 7475ec05fc81e358a6979f3e9d7050ab91511c57 Mon Sep 17 00:00:00 2001 From: Steven Bennetts Date: Wed, 14 Oct 2009 20:28:07 +0000 Subject: merge -r 2005-2011 https://svn.aws.productengine.com/secondlife/pe/stable-2 -> viewer-2.0.0-3 * Bugs: EXT-1472 EXT-996 --- indra/newview/llpanelteleporthistory.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'indra/newview/llpanelteleporthistory.cpp') diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index e71ddfb283..e1e3fe4677 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -420,7 +420,7 @@ void LLTeleportHistoryPanel::showTeleportHistory() S32 index = hist_items.size() - 1; for (LLTeleportHistoryStorage::slurl_list_t::const_reverse_iterator iter = hist_items.rbegin(); - iter != hist_items.rend(); ++iter) + iter != hist_items.rend(); ++iter, --index) { std::string landmark_title = (*iter).mTitle; LLStringUtil::toUpper(landmark_title); @@ -496,8 +496,6 @@ void LLTeleportHistoryPanel::showTeleportHistory() { curr_flat_view->addItem(new LLTeleportHistoryFlatItem(index, &mContextMenu, (*iter).mTitle)); } - - index--; } // Hide empty tabs from current to bottom -- cgit v1.2.3