diff options
author | Oz Linden <oz@lindenlab.com> | 2010-12-02 14:02:46 -0500 |
---|---|---|
committer | Oz Linden <oz@lindenlab.com> | 2010-12-02 14:02:46 -0500 |
commit | 20e192029ceaf7e9b6d097d6e65089d9011a4c0b (patch) | |
tree | 3687b1fdf97d058e75565306c3214fc967839257 /indra | |
parent | fbfe7418e567b79c60cc873a8882d9be97e3bb0a (diff) | |
parent | 5098ca5ae444ca492bc668fbd07976e96eb5726a (diff) |
merge fix for STORM-596
Diffstat (limited to 'indra')
88 files changed, 800 insertions, 366 deletions
diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp index 1cc03bddb8..c9cb1cd6e7 100644 --- a/indra/llaudio/llaudioengine.cpp +++ b/indra/llaudio/llaudioengine.cpp @@ -1557,6 +1557,10 @@ bool LLAudioSource::hasPendingPreloads() const LLAudioData *adp = iter->second; // note: a bad UUID will forever be !hasDecodedData() // but also !hasValidData(), hence the check for hasValidData() + if (!adp) + { + continue; + } if (!adp->hasDecodedData() && adp->hasValidData()) { // This source is still waiting for a preload diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp index 148aaf8aed..49d05ef411 100644 --- a/indra/llcommon/llthread.cpp +++ b/indra/llcommon/llthread.cpp @@ -63,9 +63,6 @@ void *APR_THREAD_FUNC LLThread::staticRun(apr_thread_t *apr_threadp, void *datap { LLThread *threadp = (LLThread *)datap; - // Set thread state to running - threadp->mStatus = RUNNING; - // Run the user supplied function threadp->run(); @@ -167,10 +164,25 @@ void LLThread::shutdown() void LLThread::start() { - apr_thread_create(&mAPRThreadp, NULL, staticRun, (void *)this, mAPRPoolp); + llassert(isStopped()); + + // Set thread state to running + mStatus = RUNNING; - // We won't bother joining - apr_thread_detach(mAPRThreadp); + apr_status_t status = + apr_thread_create(&mAPRThreadp, NULL, staticRun, (void *)this, mAPRPoolp); + + if(status == APR_SUCCESS) + { + // We won't bother joining + apr_thread_detach(mAPRThreadp); + } + else + { + mStatus = STOPPED; + llwarns << "failed to start thread " << mName << llendl; + ll_apr_warn_status(status); + } } //============================================================================ diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h index b209e4aa38..d6fa5b1997 100644 --- a/indra/llcommon/llversionviewer.h +++ b/indra/llcommon/llversionviewer.h @@ -28,7 +28,7 @@ #define LL_LLVERSIONVIEWER_H const S32 LL_VERSION_MAJOR = 2; -const S32 LL_VERSION_MINOR = 4; +const S32 LL_VERSION_MINOR = 5; const S32 LL_VERSION_PATCH = 0; const S32 LL_VERSION_BUILD = 0; diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp index 4ab6bd2438..479efabb5f 100644 --- a/indra/llmessage/llcachename.cpp +++ b/indra/llmessage/llcachename.cpp @@ -556,35 +556,43 @@ std::string LLCacheName::buildUsername(const std::string& full_name) //static std::string LLCacheName::buildLegacyName(const std::string& complete_name) { - // regexp doesn't play nice with unicode, chop off the display name + //boost::regexp was showing up in the crashreporter, so doing + //painfully manual parsing using substr. LF S32 open_paren = complete_name.rfind(" ("); + S32 close_paren = complete_name.rfind(')'); - if (open_paren == std::string::npos) + if (open_paren != std::string::npos && + close_paren == complete_name.length()-1) { - return complete_name; - } + S32 length = close_paren - open_paren - 2; + std::string legacy_name = complete_name.substr(open_paren+2, length); + + if (legacy_name.length() > 0) + { + std::string cap_letter = legacy_name.substr(0, 1); + LLStringUtil::toUpper(cap_letter); + legacy_name = cap_letter + legacy_name.substr(1); + + S32 separator = legacy_name.find('.'); - std::string username = complete_name.substr(open_paren); - boost::regex complete_name_regex("( \\()([a-z0-9]+)(.[a-z]+)*(\\))"); - boost::match_results<std::string::const_iterator> name_results; - if (!boost::regex_match(username, name_results, complete_name_regex)) return complete_name; + if (separator != std::string::npos) + { + std::string last_name = legacy_name.substr(separator+1); + legacy_name = legacy_name.substr(0, separator); - std::string legacy_name = name_results[2]; - // capitalize the first letter - std::string cap_letter = legacy_name.substr(0, 1); - LLStringUtil::toUpper(cap_letter); - legacy_name = cap_letter + legacy_name.substr(1); + if (last_name.length() > 0) + { + cap_letter = last_name.substr(0, 1); + LLStringUtil::toUpper(cap_letter); + legacy_name = legacy_name + " " + cap_letter + last_name.substr(1); + } + } - if (name_results[3].matched) - { - std::string last_name = name_results[3]; - std::string cap_letter = last_name.substr(1, 1); - LLStringUtil::toUpper(cap_letter); - last_name = cap_letter + last_name.substr(2); - legacy_name = legacy_name + " " + last_name; + return legacy_name; + } } - return legacy_name; + return complete_name; } // This is a little bit kludgy. LLCacheNameCallback is a slot instead of a function pointer. @@ -967,6 +975,10 @@ void LLCacheName::Impl::processUUIDReply(LLMessageSystem* msg, bool isGroup) if (entry->mLastName.empty()) { full_name = cleanFullName(entry->mFirstName); + + //fix what we are putting in the cache + entry->mFirstName = full_name; + entry->mLastName = "Resident"; } else { diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp index 2dabbc7767..a268ee5d75 100644 --- a/indra/llui/llcombobox.cpp +++ b/indra/llui/llcombobox.cpp @@ -769,7 +769,7 @@ BOOL LLComboBox::handleKeyHere(KEY key, MASK mask) return FALSE; } // if selection has changed, pop open list - else if (mList->getLastSelectedItem() != last_selected_item) + else { showList(); } diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp index d48674f306..f6f5a0beb3 100644 --- a/indra/llui/lldockcontrol.cpp +++ b/indra/llui/lldockcontrol.cpp @@ -220,10 +220,15 @@ void LLDockControl::moveDockable() case TOP: x = dockRect.getCenterX() - dockableRect.getWidth() / 2; y = dockRect.mTop + dockableRect.getHeight(); - // unique docking used with dock tongue, so add tongue height o the Y coordinate + // unique docking used with dock tongue, so add tongue height to the Y coordinate if (use_tongue) { y += mDockTongue->getHeight(); + + if ( y > rootRect.mTop) + { + y = rootRect.mTop; + } } // check is dockable inside root view rect @@ -257,7 +262,7 @@ void LLDockControl::moveDockable() case BOTTOM: x = dockRect.getCenterX() - dockableRect.getWidth() / 2; y = dockRect.mBottom; - // unique docking used with dock tongue, so add tongue height o the Y coordinate + // unique docking used with dock tongue, so add tongue height to the Y coordinate if (use_tongue) { y -= mDockTongue->getHeight(); @@ -292,9 +297,21 @@ void LLDockControl::moveDockable() break; } - // move dockable - dockableRect.setLeftTopAndSize(x, y, dockableRect.getWidth(), - dockableRect.getHeight()); + S32 max_available_height = rootRect.getHeight() - mDockTongueY - mDockTongue->getHeight(); + + // A floater should be shrunk so it doesn't cover a part of its docking tongue and + // there is a space between a dockable floater and a control to which it is docked. + if (use_tongue && dockableRect.getHeight() >= max_available_height) + { + dockableRect.setLeftTopAndSize(x, y, dockableRect.getWidth(), max_available_height); + mDockableFloater->reshape(dockableRect.getWidth(), dockableRect.getHeight()); + } + else + { + // move dockable + dockableRect.setLeftTopAndSize(x, y, dockableRect.getWidth(), + dockableRect.getHeight()); + } LLRect localDocableParentRect; mDockableFloater->getParent()->screenRectToLocal(dockableRect, &localDocableParentRect); diff --git a/indra/llui/llmenubutton.cpp b/indra/llui/llmenubutton.cpp index ac568a83e4..eed0085273 100644 --- a/indra/llui/llmenubutton.cpp +++ b/indra/llui/llmenubutton.cpp @@ -175,6 +175,13 @@ void LLMenuButton::updateMenuOrigin() mY = rect.mTop + mMenuHandle.get()->getRect().getHeight(); break; } + case MP_TOP_RIGHT: + { + const LLRect& menu_rect = mMenuHandle.get()->getRect(); + mX = rect.mRight - menu_rect.getWidth(); + mY = rect.mTop + menu_rect.getHeight(); + break; + } case MP_BOTTOM_LEFT: { mX = rect.mLeft; diff --git a/indra/llui/llmenubutton.h b/indra/llui/llmenubutton.h index 9e91b9e99d..7b657595da 100644 --- a/indra/llui/llmenubutton.h +++ b/indra/llui/llmenubutton.h @@ -47,6 +47,7 @@ public: typedef enum e_menu_position { MP_TOP_LEFT, + MP_TOP_RIGHT, MP_BOTTOM_LEFT } EMenuPosition; diff --git a/indra/llui/llscrolllistcolumn.cpp b/indra/llui/llscrolllistcolumn.cpp index 2a4c1ca44c..696e4a2bb1 100644 --- a/indra/llui/llscrolllistcolumn.cpp +++ b/indra/llui/llscrolllistcolumn.cpp @@ -83,7 +83,14 @@ void LLScrollColumnHeader::draw() && (sort_column == mColumn->mSortingColumn || sort_column == mColumn->mName); BOOL is_ascending = mColumn->mParentCtrl->getSortAscending(); - setImageOverlay(is_ascending ? "up_arrow.tga" : "down_arrow.tga", LLFontGL::RIGHT, draw_arrow ? LLColor4::white : LLColor4::transparent); + if (draw_arrow) + { + setImageOverlay(is_ascending ? "up_arrow.tga" : "down_arrow.tga", LLFontGL::RIGHT, LLColor4::white); + } + else + { + setImageOverlay(LLUUID::null); + } // Draw children LLButton::draw(); diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index fa49c1ac4c..679637caf6 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -1877,6 +1877,7 @@ if (LL_TESTS) lldateutil.cpp llmediadataclient.cpp lllogininstance.cpp + llremoteparcelrequest.cpp llviewerhelputil.cpp llversioninfo.cpp ) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 0f946b0f0b..7dbb375a20 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -11121,7 +11121,7 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>http://update.secondlife.com</string> + <string>https://update.secondlife.com</string> </map> <key>UpdaterServicePath</key> <map> diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 3a45c79ec3..001a6a8851 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -56,7 +56,6 @@ #include "llparcel.h" #include "llrendersphere.h" #include "llsdutil.h" -#include "llsidetray.h" #include "llsky.h" #include "llsmoothstep.h" #include "llstartup.h" @@ -1727,9 +1726,6 @@ void LLAgent::endAnimationUpdateUI() LLBottomTray::getInstance()->onMouselookModeOut(); - LLSideTray::getInstance()->getButtonsPanel()->setVisible(TRUE); - LLSideTray::getInstance()->updateSidetrayVisibility(); - LLPanelStandStopFlying::getInstance()->setVisible(TRUE); LLToolMgr::getInstance()->setCurrentToolset(gBasicToolset); @@ -1829,9 +1825,6 @@ void LLAgent::endAnimationUpdateUI() LLBottomTray::getInstance()->onMouselookModeIn(); - LLSideTray::getInstance()->getButtonsPanel()->setVisible(FALSE); - LLSideTray::getInstance()->updateSidetrayVisibility(); - LLPanelStandStopFlying::getInstance()->setVisible(FALSE); // clear out camera lag effect diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 6c598d5d71..aebebad96a 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -33,6 +33,7 @@ #include "llagentconstants.h" #include "llagentdata.h" // gAgentID, gAgentSessionID #include "llcharacter.h" // LLAnimPauseRequest +#include "llcoordframe.h" // for mFrameAgent #include "llpointer.h" #include "lluicolor.h" #include "llvoavatardefines.h" diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index 29c2b7565e..6ccb5aaf54 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -1365,20 +1365,33 @@ void LLBottomTray::processExtendButtons(S32& available_width) processExtendButton(*it, available_width); } + const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth(); + static const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth(); + const S32 available_width_chiclet = chiclet_panel_width - chiclet_panel_min_width; + // then try to extend Speak button - if (available_width > 0) + if (available_width > 0 || available_width_chiclet > 0) { S32 panel_max_width = mObjectDefaultWidthMap[RS_BUTTON_SPEAK]; S32 panel_width = mSpeakPanel->getRect().getWidth(); S32 possible_extend_width = panel_max_width - panel_width; - if (possible_extend_width >= 0 && possible_extend_width <= available_width) // HACK: this button doesn't change size so possible_extend_width will be 0 + + if (possible_extend_width >= 0 && possible_extend_width <= available_width + available_width_chiclet) // HACK: this button doesn't change size so possible_extend_width will be 0 { mSpeakBtn->setLabelVisible(true); mSpeakPanel->reshape(panel_max_width, mSpeakPanel->getRect().getHeight()); log(mSpeakBtn, "speak button is extended"); - available_width -= possible_extend_width; - + if( available_width > possible_extend_width) + { + available_width -= possible_extend_width; + } + else + { + S32 required_width = possible_extend_width - available_width; + available_width = 0; + mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - required_width, mChicletPanel->getParent()->getRect().getHeight()); + } lldebugs << "Extending Speak button panel: " << mSpeakPanel->getName() << ", extended width: " << possible_extend_width << ", rest width to process: " << available_width diff --git a/indra/newview/llfloaterpostcard.cpp b/indra/newview/llfloaterpostcard.cpp index e8e9f76912..220d33016a 100644 --- a/indra/newview/llfloaterpostcard.cpp +++ b/indra/newview/llfloaterpostcard.cpp @@ -361,9 +361,7 @@ void LLFloaterPostcard::sendPostcard() { gAssetStorage->storeAssetData(mTransactionID, LLAssetType::AT_IMAGE_JPEG, &uploadCallback, (void *)this, FALSE); } - - // give user feedback of the event - gViewerWindow->playSnapshotAnimAndSound(); + LLUploadDialog::modalUploadDialog(getString("upload_message")); // don't destroy the window until the upload is done diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index ac940f4f77..6a7b5171b5 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -283,6 +283,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key) : LLFloater(key), mGotPersonalInfo(false), mOriginalIMViaEmail(false), + mLanguageChanged(false), mDoubleClickActionDirty(false) { //Build Floater is now Called from LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>); @@ -351,6 +352,8 @@ BOOL LLFloaterPreference::postBuild() std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, ""); setCacheLocation(cache_location); + getChild<LLComboBox>("language_combobox")->setCommitCallback(boost::bind(&LLFloaterPreference::onLanguageChange, this)); + // if floater is opened before login set default localized busy message if (LLStartUp::getStartupState() < STATE_STARTED) { @@ -570,6 +573,9 @@ void LLFloaterPreference::onOpen(const LLSD& key) getChildView("maturity_desired_combobox")->setVisible( false); } + // Forget previous language changes. + mLanguageChanged = false; + // Display selected maturity icons. onChangeMaturity(); @@ -727,6 +733,18 @@ void LLFloaterPreference::onClickBrowserClearCache() LLNotificationsUtil::add("ConfirmClearBrowserCache", LLSD(), LLSD(), callback_clear_browser_cache); } +// Called when user changes language via the combobox. +void LLFloaterPreference::onLanguageChange() +{ + // Let the user know that the change will only take effect after restart. + // Do it only once so that we're not too irritating. + if (!mLanguageChanged) + { + LLNotificationsUtil::add("ChangeLanguage"); + mLanguageChanged = true; + } +} + void LLFloaterPreference::onClickSetCache() { std::string cur_name(gSavedSettings.getString("CacheLocation")); diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 46f50d9a4d..bb871e7e25 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -83,6 +83,7 @@ protected: void onBtnApply(); void onClickBrowserClearCache(); + void onLanguageChange(); // set value of "BusyResponseChanged" in account settings depending on whether busy response // string differs from default after user changes. @@ -158,6 +159,7 @@ private: bool mDoubleClickActionDirty; bool mGotPersonalInfo; bool mOriginalIMViaEmail; + bool mLanguageChanged; bool mOriginalHideOnlineStatus; std::string mDirectoryVisibility; diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 51ee38bd65..d55272c558 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -1004,7 +1004,6 @@ void LLSnapshotLivePreview::saveTexture() LLFloaterPerms::getEveryonePerms(), "Snapshot : " + pos_string, callback, expected_upload_cost, userdata); - gViewerWindow->playSnapshotAnimAndSound(); } else { @@ -1026,10 +1025,6 @@ BOOL LLSnapshotLivePreview::saveLocal() mDataSize = 0; updateSnapshot(FALSE, FALSE); - if(success) - { - gViewerWindow->playSnapshotAnimAndSound(); - } return success; } @@ -1049,8 +1044,6 @@ void LLSnapshotLivePreview::saveWeb() LLLandmarkActions::getRegionNameAndCoordsFromPosGlobal(gAgentCamera.getCameraPositionGlobal(), boost::bind(&LLSnapshotLivePreview::regionNameCallback, this, jpg, metadata, _1, _2, _3, _4)); - - gViewerWindow->playSnapshotAnimAndSound(); } void LLSnapshotLivePreview::regionNameCallback(LLImageJPEG* snapshot, LLSD& metadata, const std::string& name, S32 x, S32 y, S32 z) @@ -1540,6 +1533,8 @@ void LLFloaterSnapshot::Impl::onClickNewSnapshot(void* data) if (previewp && view) { previewp->updateSnapshot(TRUE); + + gViewerWindow->playSnapshotAnimAndSound(); } } @@ -2209,6 +2204,8 @@ void LLFloaterSnapshot::onOpen(const LLSD& key) gSnapshotFloaterView->setEnabled(TRUE); gSnapshotFloaterView->setVisible(TRUE); gSnapshotFloaterView->adjustToFitScreen(this, FALSE); + + gViewerWindow->playSnapshotAnimAndSound(); } void LLFloaterSnapshot::onClose(bool app_quitting) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 3578c98622..f5f59d5973 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -279,9 +279,27 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& void LLIMModel::LLIMSession::onAdHocNameCache(const LLAvatarName& av_name) { - LLStringUtil::format_map_t args; - args["[AGENT_NAME]"] = av_name.getCompleteName(); - LLTrans::findString(mName, "conference-title-incoming", args); + if (av_name.mIsDummy) + {
+ S32 separator_index = mName.rfind(" ");
+ std::string name = mName.substr(0, separator_index);
+ ++separator_index;
+ std::string conference_word = mName.substr(separator_index, mName.length());
+
+ // additional check that session name is what we expected
+ if ("Conference" == conference_word)
+ {
+ LLStringUtil::format_map_t args;
+ args["[AGENT_NAME]"] = name;
+ LLTrans::findString(mName, "conference-title-incoming", args);
+ }
+ } + else + { + LLStringUtil::format_map_t args; + args["[AGENT_NAME]"] = av_name.getCompleteName(); + LLTrans::findString(mName, "conference-title-incoming", args); + } } void LLIMModel::LLIMSession::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction) @@ -555,7 +573,12 @@ void LLIMModel::LLIMSession::buildHistoryFileName() //ad-hoc requires sophisticated chat history saving schemes if (isAdHoc()) { - //in case of outgoing ad-hoc sessions + /* in case of outgoing ad-hoc sessions we need to make specilized names + * if this naming system is ever changed then the filtering definitions in + * lllogchat.cpp need to be change acordingly so that the filtering for the + * date stamp code introduced in STORM-102 will work properly and not add + * a date stamp to the Ad-hoc conferences. + */ if (mInitialTargetIDs.size()) { std::set<LLUUID> sorted_uuids(mInitialTargetIDs.begin(), mInitialTargetIDs.end()); @@ -2165,7 +2188,7 @@ void LLIncomingCallDialog::processCallResponse(S32 response) LLAvatarName av_name; if (LLAvatarNameCache::get(caller_id, &av_name)) { - correct_session_name = av_name.mDisplayName + " (" + av_name.mUsername + ")"; + correct_session_name = av_name.getCompleteName(); correct_session_name.append(ADHOC_NAME_SUFFIX); } } diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp index 2fb5ba82ba..0121bbb1ed 100644 --- a/indra/newview/lllogchat.cpp +++ b/indra/newview/lllogchat.cpp @@ -89,6 +89,16 @@ const static boost::regex TIMESTAMP_AND_STUFF("^(\\[\\d{4}/\\d{1,2}/\\d{1,2}\\s+ */ const static boost::regex NAME_AND_TEXT("([^:]+[:]{1})?(\\s*)(.*)"); +/**
+ * These are recognizers for matching the names of ad-hoc conferences when generating the log file name
+ * On invited side, an ad-hoc is named like "<first name> <last name> Conference 2010/11/19 03:43 f0f4"
+ * On initiating side, an ad-hoc is named like Ad-hoc Conference hash<hash>"
+ * If the naming system for ad-hoc conferences are change in LLIMModel::LLIMSession::buildHistoryFileName()
+ * then these definition need to be adjusted as well.
+ */
+const static boost::regex INBOUND_CONFERENCE("^[a-zA-Z]{1,31} [a-zA-Z]{1,31} Conference [0-9]{4}/[0-9]{2}/[0-9]{2} [0-9]{2}:[0-9]{2} [0-9a-f]{4}");
+const static boost::regex OUTBOUND_CONFERENCE("^Ad-hoc Conference hash[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}");
+ //is used to parse complex object names like "Xstreet SL Terminal v2.2.5 st" const static std::string NAME_TEXT_DIVIDER(": "); @@ -182,25 +192,37 @@ private: //static std::string LLLogChat::makeLogFileName(std::string filename) { - if( gSavedPerAccountSettings.getBOOL("LogFileNamewithDate") ) + /** + * Testing for in bound and out bound ad-hoc file names + * if it is then skip date stamping. + **/ + //LL_INFOS("") << "Befor:" << filename << LL_ENDL;/* uncomment if you want to verify step, delete on commit */ + boost::match_results<std::string::const_iterator> matches; + bool inboundConf = boost::regex_match(filename, matches, INBOUND_CONFERENCE); + bool outboundConf = boost::regex_match(filename, matches, OUTBOUND_CONFERENCE); + if (!(inboundConf || outboundConf)) { - time_t now; - time(&now); - char dbuffer[20]; /* Flawfinder: ignore */ - if (filename == "chat") + if( gSavedPerAccountSettings.getBOOL("LogFileNamewithDate") ) { - strftime(dbuffer, 20, "-%Y-%m-%d", localtime(&now)); - } - else - { - strftime(dbuffer, 20, "-%Y-%m", localtime(&now)); + time_t now; + time(&now); + char dbuffer[20]; /* Flawfinder: ignore */ + if (filename == "chat") + { + strftime(dbuffer, 20, "-%Y-%m-%d", localtime(&now)); + } + else + { + strftime(dbuffer, 20, "-%Y-%m", localtime(&now)); + } + filename += dbuffer; } - filename += dbuffer; } + //LL_INFOS("") << "After:" << filename << LL_ENDL;/* uncomment if you want to verify step, delete on commit */ filename = cleanFileName(filename); filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_ACCOUNT_CHAT_LOGS,filename); filename += ".txt"; - //LL_INFOS("") << "Current:" << filename << LL_ENDL;/* uncomment if you want to verify step, delete on commit */ + //LL_INFOS("") << "Full:" << filename << LL_ENDL;/* uncomment if you want to verify step, delete on commit */ return filename; } diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 57180f63b5..1249d5d856 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -34,6 +34,7 @@ #include "llcombobox.h" #include "lldateutil.h" // ageFromDate() #include "llimview.h" +#include "llmenubutton.h" #include "llnotificationsutil.h" #include "lltexteditor.h" #include "lltexturectrl.h" @@ -479,7 +480,6 @@ BOOL LLPanelAvatarProfile::postBuild() childSetCommitCallback("im",(boost::bind(&LLPanelAvatarProfile::onIMButtonClick,this)),NULL); childSetCommitCallback("call",(boost::bind(&LLPanelAvatarProfile::onCallButtonClick,this)),NULL); childSetCommitCallback("teleport",(boost::bind(&LLPanelAvatarProfile::onTeleportButtonClick,this)),NULL); - childSetCommitCallback("overflow_btn", boost::bind(&LLPanelAvatarProfile::onOverflowButtonClicked, this), NULL); childSetCommitCallback("share",(boost::bind(&LLPanelAvatarProfile::onShareButtonClick,this)),NULL); childSetCommitCallback("show_on_map_btn", (boost::bind( &LLPanelAvatarProfile::onMapButtonClick, this)), NULL); @@ -500,7 +500,8 @@ BOOL LLPanelAvatarProfile::postBuild() enable.add("Profile.EnableBlock", boost::bind(&LLPanelAvatarProfile::enableBlock, this)); enable.add("Profile.EnableUnblock", boost::bind(&LLPanelAvatarProfile::enableUnblock, this)); - mProfileMenu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_profile_overflow.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); + LLToggleableMenu* profile_menu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_profile_overflow.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); + getChild<LLMenuButton>("overflow_btn")->setMenu(profile_menu, LLMenuButton::MP_TOP_RIGHT); LLVoiceClient::getInstance()->addObserver((LLVoiceClientStatusObserver*)this); @@ -752,23 +753,6 @@ void LLPanelAvatarProfile::onShareButtonClick() //*TODO not implemented } -void LLPanelAvatarProfile::onOverflowButtonClicked() -{ - if (!mProfileMenu->toggleVisibility()) - return; - - LLView* btn = getChild<LLView>("overflow_btn"); - - if (mProfileMenu->getButtonRect().isEmpty()) - { - mProfileMenu->setButtonRect(btn); - } - mProfileMenu->updateParent(LLMenuGL::sMenuContainer); - - LLRect rect = btn->getRect(); - LLMenuGL::showPopup(this, mProfileMenu, rect.mRight, rect.mTop); -} - LLPanelAvatarProfile::~LLPanelAvatarProfile() { if(getAvatarId().notNull()) diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h index 11c7716322..71d9d0a95a 100644 --- a/indra/newview/llpanelavatar.h +++ b/indra/newview/llpanelavatar.h @@ -34,7 +34,6 @@ class LLComboBox; class LLLineEditor; -class LLToggleableMenu; enum EOnlineStatus { @@ -207,14 +206,11 @@ protected: void onCallButtonClick(); void onTeleportButtonClick(); void onShareButtonClick(); - void onOverflowButtonClicked(); private: typedef std::map< std::string,LLUUID> group_map_t; group_map_t mGroups; - - LLToggleableMenu* mProfileMenu; }; /** diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp index d25b8e0e02..e8c8273a9d 100644 --- a/indra/newview/llpanellandmarks.cpp +++ b/indra/newview/llpanellandmarks.cpp @@ -520,9 +520,6 @@ void LLLandmarksPanel::setParcelID(const LLUUID& parcel_id) { if (!parcel_id.isNull()) { - //ext-4655, defensive. remove now incase this gets called twice without a remove - LLRemoteParcelInfoProcessor::getInstance()->removeObserver(parcel_id, this); - LLRemoteParcelInfoProcessor::getInstance()->addObserver(parcel_id, this); LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(parcel_id); } diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index 71c812efe2..54198d6aa4 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -231,7 +231,7 @@ public: virtual void setActive(bool) {} protected: - void updateList() + void update() { mCallback(); } @@ -239,6 +239,30 @@ protected: callback_t mCallback; }; +/** + * Update buttons on changes in our friend relations (STORM-557). + */ +class LLButtonsUpdater : public LLPanelPeople::Updater, public LLFriendObserver +{ +public: + LLButtonsUpdater(callback_t cb) + : LLPanelPeople::Updater(cb) + { + LLAvatarTracker::instance().addObserver(this); + } + + ~LLButtonsUpdater() + { + LLAvatarTracker::instance().removeObserver(this); + } + + /*virtual*/ void changed(U32 mask) + { + (void) mask; + update(); + } +}; + class LLAvatarListUpdater : public LLPanelPeople::Updater, public LLEventTimer { public: @@ -306,7 +330,7 @@ public: if (mMask & (LLFriendObserver::ADD | LLFriendObserver::REMOVE | LLFriendObserver::ONLINE)) { - updateList(); + update(); } // Stop updates. @@ -421,7 +445,7 @@ public: if (val) { // update immediately and start regular updates - updateList(); + update(); mEventTimer.start(); } else @@ -433,7 +457,7 @@ public: /*virtual*/ BOOL tick() { - updateList(); + update(); return FALSE; } private: @@ -450,7 +474,7 @@ public: LLRecentListUpdater(callback_t cb) : LLAvatarListUpdater(cb, 0) { - LLRecentPeople::instance().setChangedCallback(boost::bind(&LLRecentListUpdater::updateList, this)); + LLRecentPeople::instance().setChangedCallback(boost::bind(&LLRecentListUpdater::update, this)); } }; @@ -475,11 +499,13 @@ LLPanelPeople::LLPanelPeople() mFriendListUpdater = new LLFriendListUpdater(boost::bind(&LLPanelPeople::updateFriendList, this)); mNearbyListUpdater = new LLNearbyListUpdater(boost::bind(&LLPanelPeople::updateNearbyList, this)); mRecentListUpdater = new LLRecentListUpdater(boost::bind(&LLPanelPeople::updateRecentList, this)); + mButtonsUpdater = new LLButtonsUpdater(boost::bind(&LLPanelPeople::updateButtons, this)); mCommitCallbackRegistrar.add("People.addFriend", boost::bind(&LLPanelPeople::onAddFriendButtonClicked, this)); } LLPanelPeople::~LLPanelPeople() { + delete mButtonsUpdater; delete mNearbyListUpdater; delete mFriendListUpdater; delete mRecentListUpdater; @@ -1367,9 +1393,6 @@ void LLPanelPeople::onMoreButtonClicked() void LLPanelPeople::onOpen(const LLSD& key) { std::string tab_name = key["people_panel_tab_name"]; - mFilterEditor -> clear(); - onFilterEdit(""); - if (!tab_name.empty()) mTabContainer->selectTabByName(tab_name); } diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h index 4412aed062..b496bb3779 100644 --- a/indra/newview/llpanelpeople.h +++ b/indra/newview/llpanelpeople.h @@ -152,6 +152,7 @@ private: Updater* mFriendListUpdater; Updater* mNearbyListUpdater; Updater* mRecentListUpdater; + Updater* mButtonsUpdater; LLMenuButton* mNearbyGearButton; LLMenuButton* mFriendsGearButton; diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp index 271728220c..44cca21a76 100644 --- a/indra/newview/llpanelpick.cpp +++ b/indra/newview/llpanelpick.cpp @@ -204,9 +204,6 @@ void LLPanelPickInfo::sendParcelInfoRequest() { if (mParcelId != mRequestedId) { - //ext-4655, remove now incase this gets called twice without a remove - LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mRequestedId, this); - LLRemoteParcelInfoProcessor::getInstance()->addObserver(mParcelId, this); LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(mParcelId); diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp index 9cbb512e70..4ae0c0eb12 100644 --- a/indra/newview/llpanelplaceinfo.cpp +++ b/indra/newview/llpanelplaceinfo.cpp @@ -128,10 +128,6 @@ void LLPanelPlaceInfo::sendParcelInfoRequest() { if (mParcelID != mRequestedID) { - //ext-4655, defensive. remove now incase this gets called twice without a remove - //as panel never closes its ok atm (but wrong :) - LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mRequestedID, this); - LLRemoteParcelInfoProcessor::getInstance()->addObserver(mParcelID, this); LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(mParcelID); diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index f0e60386b6..c524fd7059 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -39,6 +39,7 @@ #include "llfiltereditor.h" #include "llfirstuse.h" #include "llfloaterreg.h" +#include "llmenubutton.h" #include "llnotificationsutil.h" #include "lltabcontainer.h" #include "lltexteditor.h" @@ -282,8 +283,8 @@ BOOL LLPanelPlaces::postBuild() mCloseBtn = getChild<LLButton>("close_btn"); mCloseBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this)); - mOverflowBtn = getChild<LLButton>("overflow_btn"); - mOverflowBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onOverflowButtonClicked, this)); + mOverflowBtn = getChild<LLMenuButton>("overflow_btn"); + mOverflowBtn->setMouseDownCallback(boost::bind(&LLPanelPlaces::onOverflowButtonClicked, this)); mPlaceInfoBtn = getChild<LLButton>("profile_btn"); mPlaceInfoBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onProfileButtonClicked, this)); @@ -783,16 +784,7 @@ void LLPanelPlaces::onOverflowButtonClicked() return; } - if (!menu->toggleVisibility()) - return; - - if (menu->getButtonRect().isEmpty()) - { - menu->setButtonRect(mOverflowBtn); - } - menu->updateParent(LLMenuGL::sMenuContainer); - LLRect rect = mOverflowBtn->getRect(); - LLMenuGL::showPopup(this, menu, rect.mRight, rect.mTop); + mOverflowBtn->setMenu(menu, LLMenuButton::MP_TOP_RIGHT); } void LLPanelPlaces::onProfileButtonClicked() diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h index c3b2ab806f..5523122a0f 100644 --- a/indra/newview/llpanelplaces.h +++ b/indra/newview/llpanelplaces.h @@ -47,6 +47,7 @@ class LLPlacesParcelObserver; class LLRemoteParcelInfoObserver; class LLTabContainer; class LLToggleableMenu; +class LLMenuButton; typedef std::pair<LLUUID, std::string> folder_pair_t; @@ -123,7 +124,7 @@ private: LLButton* mSaveBtn; LLButton* mCancelBtn; LLButton* mCloseBtn; - LLButton* mOverflowBtn; + LLMenuButton* mOverflowBtn; LLButton* mPlaceInfoBtn; LLPlacesInventoryObserver* mInventoryObserver; diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index fff8ccb912..9b35e78134 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -181,9 +181,11 @@ void LLTeleportHistoryFlatItem::setRegionName(const std::string& name) void LLTeleportHistoryFlatItem::updateTitle() { + static LLUIColor sFgColor = LLUIColorTable::instance().getColor("MenuItemEnabledColor", LLColor4U(255, 255, 255)); + LLTextUtil::textboxSetHighlightedVal( mTitle, - LLStyle::Params(), + LLStyle::Params().color(sFgColor), mRegionName, mHighlight); } diff --git a/indra/newview/llremoteparcelrequest.cpp b/indra/newview/llremoteparcelrequest.cpp index d63a48647d..10d4452ed2 100644 --- a/indra/newview/llremoteparcelrequest.cpp +++ b/indra/newview/llremoteparcelrequest.cpp @@ -77,23 +77,19 @@ void LLRemoteParcelRequestResponder::error(U32 status, const std::string& reason void LLRemoteParcelInfoProcessor::addObserver(const LLUUID& parcel_id, LLRemoteParcelInfoObserver* observer) { - // Check if the observer is already in observers list for this UUID observer_multimap_t::iterator it; + observer_multimap_t::iterator end = mObservers.upper_bound(parcel_id); - it = mObservers.find(parcel_id); - while (it != mObservers.end()) + // Check if the observer is already in observers list for this UUID + for(it = mObservers.find(parcel_id); it != end; ++it) { - if (it->second == observer) + if (it->second.get() == observer) { return; } - else - { - ++it; - } } - mObservers.insert(std::pair<LLUUID, LLRemoteParcelInfoObserver*>(parcel_id, observer)); + mObservers.insert(std::make_pair(parcel_id, observer->getObserverHandle())); } void LLRemoteParcelInfoProcessor::removeObserver(const LLUUID& parcel_id, LLRemoteParcelInfoObserver* observer) @@ -104,19 +100,15 @@ void LLRemoteParcelInfoProcessor::removeObserver(const LLUUID& parcel_id, LLRemo } observer_multimap_t::iterator it; + observer_multimap_t::iterator end = mObservers.upper_bound(parcel_id); - it = mObservers.find(parcel_id); - while (it != mObservers.end()) + for(it = mObservers.find(parcel_id); it != end; ++it) { - if (it->second == observer) + if (it->second.get() == observer) { mObservers.erase(it); break; } - else - { - ++it; - } } } @@ -141,13 +133,34 @@ void LLRemoteParcelInfoProcessor::processParcelInfoReply(LLMessageSystem* msg, v msg->getS32 ("Data", "SalePrice", parcel_data.sale_price); msg->getS32 ("Data", "AuctionID", parcel_data.auction_id); - LLRemoteParcelInfoProcessor::observer_multimap_t observers = LLRemoteParcelInfoProcessor::getInstance()->mObservers; + LLRemoteParcelInfoProcessor::observer_multimap_t & observers = LLRemoteParcelInfoProcessor::getInstance()->mObservers; + + typedef std::vector<observer_multimap_t::iterator> deadlist_t; + deadlist_t dead_iters; - observer_multimap_t::iterator oi = observers.find(parcel_data.parcel_id); + observer_multimap_t::iterator oi; observer_multimap_t::iterator end = observers.upper_bound(parcel_data.parcel_id); - for (; oi != end; ++oi) + + for (oi = observers.find(parcel_data.parcel_id); oi != end; ++oi) + { + LLRemoteParcelInfoObserver * observer = oi->second.get(); + if(observer) + { + observer->processParcelInfo(parcel_data); + } + else + { + // the handle points to an expired observer, so don't keep it + // around anymore + dead_iters.push_back(oi); + } + } + + deadlist_t::iterator i; + deadlist_t::iterator end_dead = dead_iters.end(); + for(i = dead_iters.begin(); i != end_dead; ++i) { - oi->second->processParcelInfo(parcel_data); + observers.erase(*i); } } diff --git a/indra/newview/llremoteparcelrequest.h b/indra/newview/llremoteparcelrequest.h index a6c62995a9..74cf1616df 100644 --- a/indra/newview/llremoteparcelrequest.h +++ b/indra/newview/llremoteparcelrequest.h @@ -98,7 +98,7 @@ public: static void processParcelInfoReply(LLMessageSystem* msg, void**); private: - typedef std::multimap<LLUUID, LLRemoteParcelInfoObserver*> observer_multimap_t; + typedef std::multimap<LLUUID, LLHandle<LLRemoteParcelInfoObserver> > observer_multimap_t; observer_multimap_t mObservers; }; diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp index 1999f14828..b316171604 100644 --- a/indra/newview/llsidepanelappearance.cpp +++ b/indra/newview/llsidepanelappearance.cpp @@ -183,12 +183,15 @@ void LLSidepanelAppearance::onOpen(const LLSD& key) void LLSidepanelAppearance::onVisibilityChange(const LLSD &new_visibility) { - updateToVisibility(new_visibility); + LLSD visibility; + visibility["visible"] = new_visibility.asBoolean(); + visibility["reset_accordion"] = true; + updateToVisibility(visibility); } void LLSidepanelAppearance::updateToVisibility(const LLSD &new_visibility) { - if (new_visibility.asBoolean()) + if (new_visibility["visible"].asBoolean()) { bool is_outfit_edit_visible = mOutfitEdit && mOutfitEdit->getVisible(); bool is_wearable_edit_visible = mEditWearable && mEditWearable->getVisible(); @@ -209,7 +212,7 @@ void LLSidepanelAppearance::updateToVisibility(const LLSD &new_visibility) } } - if (is_outfit_edit_visible) + if (is_outfit_edit_visible && new_visibility["reset_accordion"].asBoolean()) { mOutfitEdit->resetAccordionState(); } diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp index 81b2fc0ae0..2905e369f1 100644 --- a/indra/newview/llsidetray.cpp +++ b/indra/newview/llsidetray.cpp @@ -298,7 +298,11 @@ static void on_minimize(LLSidepanelAppearance* panel, LLSD minimized) { if (!panel) return; bool visible = !minimized.asBoolean(); - panel->updateToVisibility(LLSD(visible)); + LLSD visibility; + visibility["visible"] = visible; + // Do not reset accordion state on minimize (STORM-375) + visibility["reset_accordion"] = false; + panel->updateToVisibility(visibility); } void LLSideTrayTab::undock(LLFloater* floater_tab) @@ -1028,7 +1032,8 @@ void LLSideTray::arrange() } // The tab buttons should be shown only if there is at least one non-detached tab. - mButtonsPanel->setVisible(hasTabs()); + // Also hide them in mouse-look mode. + mButtonsPanel->setVisible(hasTabs() && !gAgentCamera.cameraMouselook()); } // Detach those tabs that were detached when the viewer exited last time. diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h index 4c23a1920b..3c572dde95 100644 --- a/indra/newview/llsidetray.h +++ b/indra/newview/llsidetray.h @@ -40,6 +40,8 @@ class LLSideTray : public LLPanel, private LLDestroyClass<LLSideTray> { friend class LLUICtrlFactory; friend class LLDestroyClass<LLSideTray>; + friend class LLSideTrayTab; + friend class LLSideTrayButton; public: LOG_CLASS(LLSideTray); @@ -126,11 +128,6 @@ public: } /* - * get currently active tab - */ - const LLSideTrayTab* getActiveTab() const { return mActiveTab; } - - /* * collapse SideBar, hiding visible tab and moving tab buttons * to the right corner of the screen */ @@ -163,32 +160,28 @@ public: virtual BOOL postBuild(); - void onTabButtonClick(std::string name); - void onToggleCollapse(); - - bool addChild (LLView* view, S32 tab_group); - bool removeTab (LLSideTrayTab* tab); // Used to detach tabs temporarily - bool addTab (LLSideTrayTab* tab); // Used to re-attach tabs - BOOL handleMouseDown (S32 x, S32 y, MASK mask); void reshape (S32 width, S32 height, BOOL called_from_parent = TRUE); - void processTriState (); - + void updateSidetrayVisibility(); commit_signal_t& getCollapseSignal() { return mCollapseSignal; } void handleLoginComplete(); - LLSideTrayTab* getTab (const std::string& name); - bool isTabAttached (const std::string& name); protected: + bool addChild (LLView* view, S32 tab_group); + bool removeTab (LLSideTrayTab* tab); // Used to detach tabs temporarily + bool addTab (LLSideTrayTab* tab); // Used to re-attach tabs bool hasTabs (); + const LLSideTrayTab* getActiveTab() const { return mActiveTab; } + LLSideTrayTab* getTab(const std::string& name); + void createButtons (); LLButton* createButton (const std::string& name,const std::string& image,const std::string& tooltip, @@ -196,11 +189,15 @@ protected: void arrange (); void detachTabs (); void reflectCollapseChange(); + void processTriState (); void toggleTabButton (LLSideTrayTab* tab); LLPanel* openChildPanel (LLSideTrayTab* tab, const std::string& panel_name, const LLSD& params); + void onTabButtonClick(std::string name); + void onToggleCollapse(); + private: // Implementation of LLDestroyClass<LLSideTray> static void destroyClass() diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index 237aa39e6e..048691696b 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -404,8 +404,6 @@ class LLFileTakeSnapshotToDisk : public view_listener_t gSavedSettings.getBOOL("RenderUIInSnapshot"), FALSE)) { - gViewerWindow->playSnapshotAnimAndSound(); - LLPointer<LLImageFormatted> formatted; switch(LLFloaterSnapshot::ESnapshotFormat(gSavedSettings.getS32("SnapshotFormat"))) { diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 0250627d1b..5f9e343907 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -783,11 +783,19 @@ void LLVOAvatarSelf::removeMissingBakedTextures() for (U32 i = 0; i < mBakedTextureDatas.size(); i++) { const S32 te = mBakedTextureDatas[i].mTextureIndex; - LLViewerTexture* tex = getTEImage(te) ; + const LLViewerTexture* tex = getTEImage(te); + + // Replace with default if we can't find the asset, assuming the + // default is actually valid (which it should be unless something + // is seriously wrong). if (!tex || tex->isMissingAsset()) { - setTEImage(te, LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT_AVATAR)); - removed = TRUE; + LLViewerTexture *imagep = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT_AVATAR); + if (imagep) + { + setTEImage(te, imagep); + removed = TRUE; + } } } @@ -823,7 +831,6 @@ void LLVOAvatarSelf::updateRegion(LLViewerRegion *regionp) // << llendl; } - if (!regionp || (regionp->getHandle() != mLastRegionHandle)) { if (mLastRegionHandle != 0) diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index aeea2306f7..be94b40065 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -140,7 +140,7 @@ reference="AvatarListItemIconOfflineColor" /> <color name="BackgroundChatColor" - reference="DkGray_66" /> + reference="White" /> <color name="ButtonBorderColor" reference="Unused?" /> diff --git a/indra/newview/skins/default/xui/da/floater_avatar_picker.xml b/indra/newview/skins/default/xui/da/floater_avatar_picker.xml index a337da9b51..e97089f61e 100644 --- a/indra/newview/skins/default/xui/da/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/da/floater_avatar_picker.xml @@ -24,6 +24,10 @@ Indtast en del af beboerens navn: </text> <button label="Find" label_selected="Find" name="Find"/> + <scroll_list name="SearchResults"> + <columns label="Navn" name="name"/> + <columns label="Brugernavn" name="username"/> + </scroll_list> </panel> <panel label="Venner" name="FriendsPanel"> <text name="InstructSelectFriend"> @@ -39,6 +43,10 @@ meter </text> <button label="Gentegn liste" label_selected="Gentegn liste" name="Refresh"/> + <scroll_list name="NearMe"> + <columns label="Navn" name="name"/> + <columns label="Brugernavn" name="username"/> + </scroll_list> </panel> </tab_container> <button label="OK" label_selected="OK" name="ok_btn"/> diff --git a/indra/newview/skins/default/xui/da/floater_bumps.xml b/indra/newview/skins/default/xui/da/floater_bumps.xml index 1db2e93fd2..6b265832cd 100644 --- a/indra/newview/skins/default/xui/da/floater_bumps.xml +++ b/indra/newview/skins/default/xui/da/floater_bumps.xml @@ -4,10 +4,10 @@ Ingen registreret </floater.string> <floater.string name="bump"> - [TIME] [NAME] ramte dig + [TIME] [NAME] puffede til dig </floater.string> <floater.string name="llpushobject"> - [TIME] [NAME] skubbede dig med et script + [TIME] [NAME] skubbede til dig via et script </floater.string> <floater.string name="selected_object_collide"> [TIME] [NAME] ramte dig med et objekt diff --git a/indra/newview/skins/default/xui/da/floater_buy_object.xml b/indra/newview/skins/default/xui/da/floater_buy_object.xml index f9e18dcf65..7eb4787139 100644 --- a/indra/newview/skins/default/xui/da/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/da/floater_buy_object.xml @@ -1,26 +1,29 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="contents" title="KØB KOPI AF OBJEKT"> + <floater.string name="title_buy_text"> + Køb + </floater.string> + <floater.string name="title_buy_copy_text"> + Køb en kopi af + </floater.string> + <floater.string name="no_copy_text"> + (kopiér ej) + </floater.string> + <floater.string name="no_modify_text"> + (ændre ej) + </floater.string> + <floater.string name="no_transfer_text"> + (videregiv ej) + </floater.string> <text name="contents_text"> Indeholder: </text> <text name="buy_text"> - Køb for L$[AMOUNT] fra [NAME]? + Køb for L$[AMOUNT] af: + </text> + <text name="buy_name_text"> + [NAME]? </text> - <button label="Annullér" label_selected="Annullér" name="cancel_btn"/> <button label="Køb" label_selected="Køb" name="buy_btn"/> - <string name="title_buy_text"> - Køb - </string> - <string name="title_buy_copy_text"> - Køb en kopi af - </string> - <string name="no_copy_text"> - (kopiér ej) - </string> - <string name="no_modify_text"> - (ændre ej) - </string> - <string name="no_transfer_text"> - (videregiv ej) - </string> + <button label="Annullér" label_selected="Annullér" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_display_name.xml b/indra/newview/skins/default/xui/da/floater_display_name.xml new file mode 100644 index 0000000000..e848006d8b --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_display_name.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Display Name" title="ÆNDRE VISNINGSNAVN"> + <text name="info_text"> + Det navn du giver din avatar kaldes dit visningsnavn. Du kan ændre dette en gang om ugen. + </text> + <text name="lockout_text"> + Du kan ikke ændre dit visningsnavn før: [TIME]. + </text> + <text name="set_name_label"> + Nyt visningsnavn: + </text> + <text name="name_confirm_label"> + Indtast dit nye navn igen for at bekræfte: + </text> + <button label="Gem" name="save_btn" tool_tip="Gem dit nye visningsnavn"/> + <button label="Nulstil" name="reset_btn" tool_tip="Omdøb visningsnavn til samme som brugernavn"/> + <button label="Annullér" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_event.xml b/indra/newview/skins/default/xui/da/floater_event.xml index 58f2e555dd..a9eddaaf8d 100644 --- a/indra/newview/skins/default/xui/da/floater_event.xml +++ b/indra/newview/skins/default/xui/da/floater_event.xml @@ -1,40 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - follows="all" - height="400" - can_resize="true" - help_topic="event_details" - label="Event" - layout="topleft" - name="Event" - save_rect="true" - save_visibility="false" - title="EVENT DETAILS" - width="600"> - <floater.string - name="loading_text"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater can_resize="true" follows="all" height="400" help_topic="event_details" label="Event" layout="topleft" name="Event" save_rect="true" save_visibility="false" title="EVENT DETAILS" width="600"> + <floater.string name="loading_text"> Henter... </floater.string> - <floater.string - name="done_text"> - Done - </floater.string> - <web_browser - trusted_content="true" - follows="left|right|top|bottom" - layout="topleft" - left="10" - name="browser" - height="365" - width="580" - top="0"/> - <text - follows="bottom|left" - height="16" - layout="topleft" - left_delta="0" - name="status_text" - top_pad="10" - width="150" /> + <floater.string name="done_text"> + Færdig + </floater.string> + <web_browser follows="left|right|top|bottom" height="365" layout="topleft" left="10" name="browser" top="0" trusted_content="true" width="580"/> + <text follows="bottom|left" height="16" layout="topleft" left_delta="0" name="status_text" top_pad="10" width="150"/> </floater> - diff --git a/indra/newview/skins/default/xui/da/floater_incoming_call.xml b/indra/newview/skins/default/xui/da/floater_incoming_call.xml index 7a3c3e466a..dd8cb6f97a 100644 --- a/indra/newview/skins/default/xui/da/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/da/floater_incoming_call.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="incoming call" title="UKENDT PERSON KALDER OP"> +<floater name="incoming call" title="Indgående opkald"> <floater.string name="lifetime"> 5 </floater.string> diff --git a/indra/newview/skins/default/xui/da/floater_pay.xml b/indra/newview/skins/default/xui/da/floater_pay.xml index 5ebdd3f084..96ec106803 100644 --- a/indra/newview/skins/default/xui/da/floater_pay.xml +++ b/indra/newview/skins/default/xui/da/floater_pay.xml @@ -11,7 +11,7 @@ </text> <icon name="icon_person" tool_tip="Person"/> <text name="payee_name"> - Test Name That Is Extremely Long To Check Clipping + Test navn der er meget lang for at checke afkortning </text> <button label="L$1" label_selected="L$1" name="fastpay 1"/> <button label="L$5" label_selected="L$5" name="fastpay 5"/> diff --git a/indra/newview/skins/default/xui/da/floater_tools.xml b/indra/newview/skins/default/xui/da/floater_tools.xml index 6fda088b51..781adcd50b 100644 --- a/indra/newview/skins/default/xui/da/floater_tools.xml +++ b/indra/newview/skins/default/xui/da/floater_tools.xml @@ -168,13 +168,13 @@ Skaber: </text> <text name="Creator Name"> - Thrax Linden + Mrs. Esbee Linden (esbee.linden) </text> <text name="Owner:"> Ejer: </text> <text name="Owner Name"> - Thrax Linden + Mrs. Erica "Moose" Linden (erica.linden) </text> <text name="Group:"> Gruppe: diff --git a/indra/newview/skins/default/xui/da/floater_voice_controls.xml b/indra/newview/skins/default/xui/da/floater_voice_controls.xml index 4c956f13a7..69de696bf5 100644 --- a/indra/newview/skins/default/xui/da/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/da/floater_voice_controls.xml @@ -19,10 +19,10 @@ <layout_panel name="my_panel"> <text name="user_text" value="Min avatar:"/> </layout_panel> - <layout_panel name="leave_call_panel"> + <layout_panel name="leave_call_panel"> <layout_stack name="voice_effect_and_leave_call_stack"> <layout_panel name="leave_call_btn_panel"> - <button label="Forlad opkald" name="leave_call_btn"/> + <button label="Forlad samtale" name="leave_call_btn"/> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/da/inspect_avatar.xml b/indra/newview/skins/default/xui/da/inspect_avatar.xml index d4bc0813e5..f581210e1b 100644 --- a/indra/newview/skins/default/xui/da/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/da/inspect_avatar.xml @@ -10,6 +10,11 @@ <string name="Details"> [SL_PROFILE] </string> + <text name="user_name_small" value="Grumpity ProductEngine med et langt navn"/> + <text name="user_slid" value="james.linden"/> + <text name="user_details"> + Dette er min second life beskrivelse og jeg synes den er rigtig god. Men af en eller ande grund er min beskrivelse meget lang fordi jeg taler en hel masse + </text> <slider name="volume_slider" tool_tip="Stemme lydstyrke" value="0.5"/> <button label="Tilføj ven" name="add_friend_btn"/> <button label="IM" name="im_btn"/> diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml index 73986372ce..cfc60c8f84 100644 --- a/indra/newview/skins/default/xui/da/menu_viewer.xml +++ b/indra/newview/skins/default/xui/da/menu_viewer.xml @@ -83,6 +83,7 @@ <menu_item_call label="Tag kopi" name="Take Copy"/> <menu_item_call label="Opdatér ændringer til beholdning" name="Save Object Back to My Inventory"/> <menu_item_call label="Opdater ændringer i indhold til objekt" name="Save Object Back to Object Contents"/> + <menu_item_call label="Returnér objekt" name="Return Object back to Owner"/> </menu> <menu label="Scripts" name="Scripts"> <menu_item_call label="Genoversæt scripts (Mono)" name="Mono"/> @@ -96,6 +97,7 @@ <menu_item_check label="Vælg kun egne objekter" name="Select Only My Objects"/> <menu_item_check label="Vis kun flytbare objekter" name="Select Only Movable Objects"/> <menu_item_check label="Vælg ved at omkrandse" name="Select By Surrounding"/> + <menu_item_check label="Vis selektions afgrænsning" name="Show Selection Outlines"/> <menu_item_check label="Vis skjulte objekter" name="Show Hidden Selection"/> <menu_item_check label="Vis lys-radius for valgte" name="Show Light Radius for Selection"/> <menu_item_check label="Vis pejlelys for valgte" name="Show Selection Beam"/> @@ -116,6 +118,7 @@ <menu_item_call label="Rapporter misbrug" name="Report Abuse"/> <menu_item_call label="Rapportér fejl" name="Report Bug"/> <menu_item_call label="Om [APP_NAME]" name="About Second Life"/> + <menu_item_check label="Aktiver tips" name="Enable Hints"/> </menu> <menu label="Avanceret" name="Advanced"> <menu_item_call label="Stop animering af min avatar" name="Stop Animating My Avatar"/> @@ -262,7 +265,7 @@ <menu_item_call label="Test web browser" name="Web Browser Test"/> <menu_item_call label="Print info om valgt objekt" name="Print Selected Object Info"/> <menu_item_call label="Hukommelse statistik" name="Memory Stats"/> - <menu_item_check label="Dobbeltklik for auto-pilot" name="Double-Click Auto-Pilot"/> + <menu_item_check label="Dobbelt-klink Auto-pilot" name="Double-ClickAuto-Pilot"/> <menu_item_check label="Dobeltklik for at teleportere" name="DoubleClick Teleport"/> <menu_item_check label="Debug klik" name="Debug Clicks"/> <menu_item_check label="Debug muse-hændelser" name="Debug Mouse Events"/> @@ -274,6 +277,7 @@ <menu_item_call label="Gem til XML" name="Save to XML"/> <menu_item_check label="Vis XUI navne" name="Show XUI Names"/> <menu_item_call label="Send testbeskeder (IM)" name="Send Test IMs"/> + <menu_item_call label="Skriv navne-cache til disk" name="Flush Names Caches"/> </menu> <menu label="Avatar" name="Character"> <menu label="Grab Baked Texture" name="Grab Baked Texture"> diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml index a8849861cf..63c06ec27e 100644 --- a/indra/newview/skins/default/xui/da/notifications.xml +++ b/indra/newview/skins/default/xui/da/notifications.xml @@ -110,8 +110,8 @@ Vælg kun en genstand, og prøv igen. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="GrantModifyRights"> - At give redigerings rettigheder til en anden beboer, giver dem mulighed for at ændre, slette eller tage ALLE genstande, du måtte have i verden. Vær MEGET forsigtig når uddeler denne tilladelse. -Ønsker du at ændre rettigheder for [FIRST_NAME] [LAST_NAME]? + Tildeling af ændre-rettigheder til andre beboere, tillader dem at ændre, slette eller tage ETHVERT objekt du måtte have. Vær MEGET forsigtig ved tildeling af denne rettighed. +Ønsker du at give ændre-rettgheder til [NAME]? <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/> </notification> <notification name="GrantModifyRightsMultiple"> @@ -120,7 +120,7 @@ Vælg kun en genstand, og prøv igen. <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/> </notification> <notification name="RevokeModifyRights"> - Vil du tilbagekalde rettighederne for [FIRST_NAME] [LAST_NAME]? + Ønsker du at tilbagekalder ændre-rettigheder for [NAME]? <usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/> </notification> <notification name="RevokeModifyRightsMultiple"> @@ -202,14 +202,14 @@ Hvis media kun skal vises på en overflade, vælg 'Vælg overflade' og Overskrider vedhæftnings begrænsning på [MAX_ATTACHMENTS] objekter. Tag venligst en anden vedhæftning af først. </notification> <notification name="MustHaveAccountToLogIn"> - Ups! Noget var tomt. -Du skal skrive både fornavn og efternavn på din figur. + Ups. Noget mangler at blive udfyldt. +Du skal indtaste brugernavnet for din avatar. -Du har brug for en konto for at logge ind i [SECOND_LIFE]. Vil du oprette en nu? +Du skal bruge en konto for at benytte [SECOND_LIFE]. Ønsker du at oprette en konto nu? <usetemplate name="okcancelbuttons" notext="Prøv igen" yestext="Lav ny konto"/> </notification> <notification name="InvalidCredentialFormat"> - Du skal indtaste både fornavn og efternavn i din avatars brugernavn felt og derefter logge på igen. + Du skal indtaste enten dit brugernavn eller både dit fornavn og efternavn for din avatar i brugernavn feltet, derefter log på igen. </notification> <notification name="AddClassified"> Annoncer vil vises i 'Annoncer' sektionen i søge biblioteket og på [http://secondlife.com/community/classifieds secondlife.com] i en uge. @@ -390,13 +390,6 @@ Dette er typisk en midlertidig fejl. Venligst rediger og gem igen om et par minu [MESSAGE] <usetemplate name="okcancelbuttons" notext="Afslut" yestext="Se PB & Chat"/> </notification> - <notification label="Tilføj ven" name="AddFriend"> - Venner kan give tilladelse til at følge hinanden -på Verdenskortet eller modtage status opdateringer. - -Tilbyd venskab til [NAME]? - <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/> - </notification> <notification label="Tilføj ven" name="AddFriendWithMessage"> Venner kan give tilladelse til at følge hinanden på Verdenskortet eller modtage status opdateringer. @@ -440,12 +433,22 @@ Tilbyd venskab til [NAME]? <button name="Cancel" text="Annullér"/> </form> </notification> + <notification name="RemoveFromFriends"> + Ønsker du at fjerne [NAME] fra din venneliste? + </notification> <notification name="ConfirmItemDeleteHasLinks"> Mindst en af genstandene har lænkede genstande der peger på den. Hvis du sletter denne genstand, vil lænkninger ikke virke mere. Det anbefales kraftigt at fjerne lænkninger først. Er du sikker på at du vil slette disse genstande? <usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/> </notification> + <notification name="DeedLandToGroupWithContribution"> + Ved at dedikere denne parcel, vil gruppen skulle have og vedblive med at have nok kreditter til brug af land. +Dedikeringen vil inkludere samtidige bidrag til gruppen fra '[NAME]'. +Købsprisen for dette land er ikke refunderet til ejeren. Hvis en dedikeret parvel sælges, vil salgsprisen blive delt ligeligt mellem gruppe medlemmerne. + +Dediker disse [AREA] m² land til gruppen '[GROUP_NAME]'? + </notification> <notification name="ErrorMessage"> <usetemplate name="okbutton" yestext="OK"/> </notification> @@ -651,6 +654,46 @@ Chat og personlige beskeder vil blive skjult. Personlige beskeder vil få din &a <notification name="UnFreezeUser"> Fjern frysning af beboeren med hvilken besked? </notification> + <notification name="SetDisplayNameSuccess"> + Hej [DISPLAY_NAME]! + +Præcist som i virkeligheden tager det et stykke tid at vænne sig til et nyt navn. Det kan tage flere dage for [http://wiki.secondlife.com/wiki/Setting_your_display_name your name to update] i objekter, scripts, søgninger m.v. + </notification> + <notification name="SetDisplayNameBlocked"> + Beklager, du kan ikke ændre dit visningsnavn. Hvis du mener dette skyldes en fejl, kontakt venligst support. + </notification> + <notification name="SetDisplayNameFailedLength"> + Beklager, mavnet er for langt. Visningsnavne kan ikke indholde mere end [LENGTH] karakterer. + +Prøv venligst med et kortere navn. + </notification> + <notification name="SetDisplayNameFailedGeneric"> + Beklager, vi kunne ikke sætte dit visningsnavn. Prøv venligst igen senere. + </notification> + <notification name="SetDisplayNameMismatch"> + Visningsnavnene du angav matcher ikke. Prøv at taste ind igen. + </notification> + <notification name="AgentDisplayNameUpdateThresholdExceeded"> + Beklager, du er nødt til at vente længere, inden du kan ændre visningsnavn. + +Se mere under http://wiki.secondlife.com/wiki/Setting_your_display_name + +Prøv venligst igen senere. + </notification> + <notification name="AgentDisplayNameSetBlocked"> + Beklager, vi kunne ikke sætte dit valgte navn da det indholder et ikke tilladt ord. + + Prøv med et andet navn. + </notification> + <notification name="AgentDisplayNameSetInvalidUnicode"> + Visningsnavnet du prøver at angive indeholder ugyldige karakterer. + </notification> + <notification name="AgentDisplayNameSetOnlyPunctuation"> + Dit vinsningsnavn skal indeholde andre bogstaver end tegnsætningstegn. + </notification> + <notification name="DisplayNameUpdate"> + [OLD_NAME] ([SLID]) er nu kendt som [NEW_NAME]. + </notification> <notification name="OfferTeleport"> <form name="form"> <input name="message"> @@ -806,6 +849,7 @@ For at få adgang til voksen regioner, skal beboere være alders-checket, enten <usetemplate ignoretext="Start min browser for at se min konto historik" name="okcancelignore" notext="Cancel" yestext="Go to page"/> </notification> <notification name="ConfirmQuit"> + Er du sikker på at du vil afslutte? <usetemplate ignoretext="Bekræft før jeg afslutter" name="okcancelignore" notext="Afslut ikke" yestext="Quit"/> </notification> <notification name="DeleteItems"> @@ -931,10 +975,10 @@ Henvis til dette fra en hjemmeside for at give andre nem adgang til denne lokati Erstattet manglende tøj/kropsdele med standard. </notification> <notification name="FriendOnline"> - [NAME] er Online + [NAME] er logget på </notification> <notification name="FriendOffline"> - [NAME] er Offline + [NAME] er logget af </notification> <notification name="AddSelfFriend"> Selvom du nok er meget sød, kan du ikke tilføje dig selv som ven. @@ -1073,7 +1117,10 @@ Prøv at vælge mindre stykker land. <notification name="SystemMessage"> [MESSAGE] </notification> - <notification name="PaymentRecived"> + <notification name="PaymentReceived"> + [MESSAGE] + </notification> + <notification name="PaymentSent"> [MESSAGE] </notification> <notification name="EventNotification"> @@ -1082,7 +1129,7 @@ Prøv at vælge mindre stykker land. [NAME] [DATE] <form name="form"> - <button name="Details" text="Beskrivelse"/> + <button name="Details" text="Detaljer"/> <button name="Cancel" text="Annullér"/> </form> </notification> @@ -1117,7 +1164,7 @@ Prøv venligst at geninstallere plugin eller kontakt leverandøren hvis probleme De genstande du ejer på det valgte stykke land er blevet returneret til din beholdning. </notification> <notification name="OtherObjectsReturned"> - Genstandene på det valgte stykke land der er ejet af [NAME] er blevet returneret til hans eller hendes beholdning. + Objekterne på den valgte parcel, ejet af [NAME], er blevet returneret til vedkommendes beholdning. </notification> <notification name="OtherObjectsReturned2"> Objekterne i den valgte parcel, ejet af beboeren '[NAME]', er blevet returneret til deres ejer. @@ -1241,7 +1288,7 @@ Prøv igen om lidt. No valid parcel could be found. </notification> <notification name="ObjectGiveItem"> - Et objekt med navnet [OBJECTFROMNAME] ejet af [NAME_SLURL] har givet dig denne/dette [OBJECTTYPE]: + Et object med navnet <nolink>[OBJECTFROMNAME]</nolink> ejet af [NAME_SLURL] har givet dig denne [OBJECTTYPE]: [ITEM_SLURL] <form name="form"> <button name="Keep" text="Behold"/> @@ -1305,6 +1352,11 @@ Prøv igen om lidt. <notification name="FriendshipOffered"> Du har tilbudt venskab til [TO_NAME] </notification> + <notification name="OfferFriendshipNoMessage"> + [NAME_SLURL] tilbyder venskab. + +(Som udgangspunkt, vil du være i stand til at se den andens online status) + </notification> <notification name="FriendshipAccepted"> [NAME] accepterede dit tilbud om venskab. </notification> @@ -1334,11 +1386,11 @@ Hvis du ikke forlader regionen, vil du blive logget af. Hvis du ikke forlader regionen, vil du blive logget af. </notification> <notification name="LoadWebPage"> - Indlæs internetside [URL]? + Indlæas websiden [URL]? [MESSAGE] -Fra genstand: [OBJECTNAME], ejer: [NAME]? +Fra objekt: <nolink>[OBJECTNAME]</nolink>, ejer: [NAME]? <form name="form"> <button name="Gotopage" text="Gå til side"/> <button name="Cancel" text="Afbryd"/> @@ -1354,9 +1406,10 @@ Fra genstand: [OBJECTNAME], ejer: [NAME]? Den genstand du prøver at tage på benytter en funktion din klient ikke kan forstå. Upgradér venligst din version af [APP_NAME] for at kunne tage denne genstand på. </notification> <notification name="ScriptQuestion"> - '[OBJECTNAME]', en genstand, ejet af '[NAME]', vil gerne: - [QUESTIONS] -Er det iorden? + '<nolink>[OBJECTNAME]</nolink>', et objekt ved ejet af '[NAME]', ønsker at: + +[QUESTIONS] +Er dette OK? <form name="form"> <button name="Yes" text="Ja"/> <button name="No" text="Nej"/> @@ -1364,12 +1417,12 @@ Er det iorden? </form> </notification> <notification name="ScriptQuestionCaution"> - Et objekt med navnet '[OBJECTNAME]', ejet af '[NAME]', ønsker at: + Et objeckt med navn '<nolink>[OBJECTNAME]</nolink>', ejet af '[NAME]' ønsker at: [QUESTIONS] -Hvis du ikke stoler på dette objekt og dets skaber, bør du afvise denne forespørgsel. +Hvis du ikke stoler på dette objekt og dets skaber, bør du afvise dette ønske. -Tillad denne anmodning? +Opfyld dette ønske? <form name="form"> <button name="Grant" text="Imødekom"/> <button name="Deny" text="Afvis"/> @@ -1384,7 +1437,7 @@ Tillad denne anmodning? </form> </notification> <notification name="ScriptDialogGroup"> - [GROUPNAME]'s '[TITLE]' + [GROUPNAME]'s '<nolink>[TITLE]</nolink>' [MESSAGE] <form name="form"> <button name="Ignore" text="Ignorér"/> @@ -1421,13 +1474,13 @@ Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik p </form> </notification> <notification name="AutoUnmuteByIM"> - [NAME] fik tilsendt en personlig besked og er dermed automatisk ikke mere blokeret. + [NAME] har fået sendt en besked og blokering er derfor automatisk blevet fjernet. </notification> <notification name="AutoUnmuteByMoney"> - [NAME] blev givet penge og er dermed automatisk ikke mere blokeret. + [NAME] har fået givet penge og blokering er derfor automatisk blevet fjernet. </notification> <notification name="AutoUnmuteByInventory"> - [NAME] blev tilbudt en genstand og er dermed automatisk ikke mere blokeret. + [NAME] er blevet tilbud noget fra beholdning og blokering er derfor automatisk blevet fjernet. </notification> <notification name="VoiceInviteGroup"> [NAME] har has sluttet sig til stemme-chaten i gruppen [GROUP]. @@ -1655,6 +1708,37 @@ vil have lyden slukket - selv efter de har forladt kaldet. Sluk for alles lyd? <usetemplate ignoretext="Bekræft før jeg slukker for alle deltageres lyd i gruppe-kald" name="okcancelignore" notext="Annullér" yestext="Ok"/> </notification> + <notification label="Chat" name="HintChat"> + For at deltage i samtalen tast tekst ind i chat feltet nedenfor. + </notification> + <notification label="Stå op" name="HintSit"> + For at rejse dig op og forlad siddeposition, tryk på "Stå op" knappen. + </notification> + <notification label="Undersøg verden" name="HintDestinationGuide"> + Destinationsguiden indeholder tusinder af nye steder der kan opleves. Vælg venligst et sted og vælg Teleport for at komme derhen. + </notification> + <notification label="Side panel" name="HintSidePanel"> + Få hurtig tilgang til din beholdning, sæt, profiler og andet i dette side panel. + </notification> + <notification label="Flyt" name="HintMove"> + For at gå eller løbe, åben Flyt panelet for neden og brug pilene til at navigere. Du kan også bruge pile-tasterne på dit tastatur. + </notification> + <notification label="Visningsnavn" name="HintDisplayName"> + Angiv dit konfigurérbare visningsnavn her. Dette er i tillæg til dit unikke brugernavn, som ikke kan ændres. Du kan ændre hvordan du ser andre beboeres navne i dine indstillinger. + </notification> + <notification label="Beholdning" name="HintInventory"> + Undersøg din beholdning for at finde ting. Nyeste genstand findes lettes under fanen "Nye ting" + </notification> + <notification label="Der er kommet Linden Dollars" name="HintLindenDollar"> + Her er din nuværende balance af L$. Klik på Køb L$ for at købe flere Linden dollars. + </notification> + <notification name="PopupAttempt"> + En pop-up blev hindret i at blive vist. + <form name="form"> + <ignore name="ignore" text="Tillad alle pop-ups"/> + <button name="open" text="Åben pop-up vindue"/> + </form> + </notification> <global name="UnsupportedGLRequirements"> Det ser ikke ud til at din hardware opfylder minimumskravene til [APP_NAME]. [APP_NAME] kræver et OpenGL grafikkort som understøter 'multitexture'. Check eventuelt om du har de nyeste drivere for grafikkortet, og de nyeste service-packs og patches til dit operativsystem. diff --git a/indra/newview/skins/default/xui/da/panel_edit_profile.xml b/indra/newview/skins/default/xui/da/panel_edit_profile.xml index 27a6000419..80b20f15e9 100644 --- a/indra/newview/skins/default/xui/da/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_profile.xml @@ -23,6 +23,14 @@ <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> <panel name="data_panel"> + <text name="display_name_label" value="Visningsnavn:"/> + <text name="solo_username_label" value="Bugernavn:"/> + <button name="set_name" tool_tip="Sæt visningsnavn"/> + <text name="solo_user_name" value="Hamilton Hitchings"/> + <text name="user_name" value="Hamilton Hitchings"/> + <text name="user_name_small" value="Hamilton Hitchings"/> + <text name="user_label" value="Brugernavn:"/> + <text name="user_slid" value="hamilton.linden"/> <panel name="lifes_images_panel"> <icon label="" name="2nd_life_edit_icon" tool_tip="Klik for at vælge et billede"/> </panel> @@ -39,7 +47,7 @@ <text name="my_account_link" value="[[URL] Go to My Dashboard]"/> <text name="title_partner_text" value="Min partner:"/> <panel name="partner_data_panel"> - <name_box initial_value="(henter)" name="partner_text"/> + <text initial_value="(henter)" name="partner_text"/> </panel> <text name="partner_edit_link" value="[[URL] Edit]"/> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_group_land_money.xml b/indra/newview/skins/default/xui/da/panel_group_land_money.xml index efad4d0c34..49d415e515 100644 --- a/indra/newview/skins/default/xui/da/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/da/panel_group_land_money.xml @@ -24,6 +24,7 @@ <scroll_list.columns label="Region" name="location"/> <scroll_list.columns label="Type" name="type"/> <scroll_list.columns label="Areal" name="area"/> + <scroll_list.columns label="Skjult" name="hidden"/> </scroll_list> <text name="total_contributed_land_label"> Totalt bidrag: diff --git a/indra/newview/skins/default/xui/da/panel_login.xml b/indra/newview/skins/default/xui/da/panel_login.xml index d4bf9a7d78..268f138185 100644 --- a/indra/newview/skins/default/xui/da/panel_login.xml +++ b/indra/newview/skins/default/xui/da/panel_login.xml @@ -14,7 +14,7 @@ <text name="username_text"> Brugernavn: </text> - <line_editor label="Brugernavn" name="username_edit" tool_tip="[SECOND_LIFE] Brugernavn"/> + <line_editor label="bobsmith12 eller Steller Sunshine" name="username_edit" tool_tip="Det brugernavn du valgte da du registrerede, som f.eks. bobsmith12 eller Steller Sunshine"/> <text name="password_text"> Password: </text> @@ -34,7 +34,7 @@ Opret bruger </text> <text name="forgot_password_text"> - Glemt navn eller password? + Har du glemt brugernavn eller password? </text> <text name="login_help"> Hjælp til login diff --git a/indra/newview/skins/default/xui/da/panel_place_profile.xml b/indra/newview/skins/default/xui/da/panel_place_profile.xml index 05ef22328f..8dd0fb2d21 100644 --- a/indra/newview/skins/default/xui/da/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/da/panel_place_profile.xml @@ -76,7 +76,7 @@ <text name="region_rating_label" value="Rating:"/> <text name="region_rating" value="Voksent"/> <text name="region_owner_label" value="Ejer:"/> - <text name="region_owner" value="moose Van Moose"/> + <text name="region_owner" value="moose Van Moose extra long name moose"/> <text name="region_group_label" value="Gruppe:"/> <text name="region_group"> The Mighty Moose of mooseville soundvillemoose @@ -89,6 +89,7 @@ <text name="estate_name_label" value="Estate:"/> <text name="estate_rating_label" value="Rating:"/> <text name="estate_owner_label" value="Ejer:"/> + <text name="estate_owner" value="Tester brugernavn længde med langt navn"/> <text name="covenant_label" value="Regler:"/> </panel> </accordion_tab> diff --git a/indra/newview/skins/default/xui/da/panel_places.xml b/indra/newview/skins/default/xui/da/panel_places.xml index ca3d7c71bb..fe8ca69f34 100644 --- a/indra/newview/skins/default/xui/da/panel_places.xml +++ b/indra/newview/skins/default/xui/da/panel_places.xml @@ -21,7 +21,7 @@ <button label="Redigér" name="edit_btn" tool_tip="Redigér landemærke information"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <button label="▼" name="overflow_btn" tool_tip="Vis flere valg"/> + <menu_button label="▼" name="overflow_btn" tool_tip="Vis flere valg"/> </layout_panel> </layout_stack> <layout_stack name="bottom_bar_ls3"> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_general.xml b/indra/newview/skins/default/xui/da/panel_preferences_general.xml index 6a85cf4aae..9c0cb583af 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_general.xml @@ -42,9 +42,10 @@ <radio_item label="Vis" name="radio2" value="1"/> <radio_item label="Vis et øjeblik" name="radio3" value="2"/> </radio_group> - <check_box label="Vis mit navn" name="show_my_name_checkbox1"/> - <check_box initial_value="true" label="Små avatar navne" name="small_avatar_names_checkbox"/> - <check_box label="Gruppetitler" name="show_all_title_checkbox1"/> + <check_box label="Mit navn" name="show_my_name_checkbox1"/> + <check_box label="Brugernavne" name="show_slids" tool_tip="Vis brugernavne, som bobsmith123"/> + <check_box label="Gruppe titler" name="show_all_title_checkbox1" tool_tip="Vis hgruppetitler, som f.eks. administrator eller medlem"/> + <check_box label="Fremhæv venner" name="show_friends" tool_tip="Fremhæv navne-tags for dine venner"/> <text name="effects_color_textbox"> Farve til mine effekter: </text> @@ -59,6 +60,7 @@ <combo_box.item label="30 minutter" name="item3"/> <combo_box.item label="aldrig" name="item4"/> </combo_box> + <check_box label="Vis visningsnavne" name="display_names_check" tool_tip="Vælg for at bruge visningsnavne i chat, IM, navne-tags m.v."/> <text name="text_box3"> Optaget autosvar: </text> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml index 38bc9c0a2a..553d21d597 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Opsætning" name="Input panel"> - <button label="Andre enheder" name="joystick_setup_button"/> <text name="Mouselook:"> Første person: </text> @@ -37,10 +36,11 @@ <radio_item label="Benyt min browser(IE, Firefox, Safari)" name="external" tool_tip="Brug systemets standard web browser til hjælp, web links, m.v. Ikke anbefalet hvis du kører i fuld-skærm." value="1"/> <radio_item label="Benyt den indbyggede browser" name="internal" tool_tip="Brug den indbyggede web browser til hjælp, web links m.v. Denne browser åbner et nyt vindue i [APP_NAME]." value=""/> </radio_group> - <check_box label="Aktivér plugins" name="browser_plugins_enabled"/> - <check_box label="Acceptér cookies" name="cookies_enabled"/> - <check_box label="Aktivér Javascript" name="browser_javascript_enabled"/> - <check_box label="Aktivér web proxy" name="web_proxy_enabled"/> + <check_box initial_value="true" label="Aktivér plugins" name="browser_plugins_enabled"/> + <check_box initial_value="true" label="Acceptér cookies" name="cookies_enabled"/> + <check_box initial_value="true" label="Aktivér Javascript" name="browser_javascript_enabled"/> + <check_box initial_value="fra" label="Tilad media browser pop-ups" name="media_popup_enabled"/> + <check_box initial_value="false" label="Aktivér web proxy" name="web_proxy_enabled"/> <text name="Proxy location"> Proxy placering: </text> diff --git a/indra/newview/skins/default/xui/da/panel_profile.xml b/indra/newview/skins/default/xui/da/panel_profile.xml index b2d1e9791a..b8b99a9c21 100644 --- a/indra/newview/skins/default/xui/da/panel_profile.xml +++ b/indra/newview/skins/default/xui/da/panel_profile.xml @@ -42,7 +42,7 @@ <button label="Teleportér" name="teleport" tool_tip="Tilbyd teleport"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <button label="▼" name="overflow_btn" tool_tip="Betal eller del beholdning med denne beboer"/> + <menu_button label="▼" name="overflow_btn" tool_tip="Betal eller del beholdning med denne beboer"/> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/da/panel_profile_view.xml b/indra/newview/skins/default/xui/da/panel_profile_view.xml index 23b9d3ba83..5e0a51eb28 100644 --- a/indra/newview/skins/default/xui/da/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/da/panel_profile_view.xml @@ -6,8 +6,14 @@ <string name="status_offline"> Offline </string> - <text_editor name="user_name" value="(Henter...)"/> + <text name="display_name_label" value="Visningsnavn:"/> + <text name="solo_username_label" value="Brugernavn:"/> <text name="status" value="Online"/> + <text name="user_name_small" value="Se på mig med dette enormt ekstremt super lange navn"/> + <text name="user_name" value="Jack Linden"/> + <button name="copy_to_clipboard" tool_tip="Kopiér til udskriftsholder"/> + <text name="user_label" value="Brugernavn:"/> + <text name="user_slid" value="jack.linden"/> <tab_container name="tabs"> <panel label="PROFIL" name="panel_profile"/> <panel label="FAVORITTER" name="panel_picks"/> diff --git a/indra/newview/skins/default/xui/da/role_actions.xml b/indra/newview/skins/default/xui/da/role_actions.xml index 5ec90a759a..7e581200a5 100644 --- a/indra/newview/skins/default/xui/da/role_actions.xml +++ b/indra/newview/skins/default/xui/da/role_actions.xml @@ -1,76 +1,73 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <role_actions> <action_set description="Disse rettigheder inkluderer adgang til at tilføje og fjerne gruppe medlemmer og tillade nye medlemmer at melde sig ind uden invitation" name="Membership"> - <action description="Invitér personer til denne gruppe" longdescription="Invitér personer til denne gruppe via 'Invitér ny person...' knappen i fanen: medlemmer & roller > underfanen: medlemmer" name="member invite"/> - <action description="Fjern medlemmer fra denne gruppe" longdescription="Fjern medlemmer i denne gruppe via 'Fjern fra gruppe' knappen i fanen: medlemmer & roller > underfanen: medlemmer. En ejer kan fjerne alle undtagen en anden ejer. Hvis du ikke er en ejer, kan et medlem kun fjernes fra gruppen hvis, og kun hvis, medlemmet kun findes i Alle rollen, og ikke i andre roller. for at fjerne medlemmer fra roller, skal du have rettigheden 'Fjern medlemmer fra roller" name="member eject"/> - <action description="Åben eller luk for 'fri tilmelding' og ændre 'tilmeldingsgebyr'" longdescription="Åben for 'fri tilmelding' så alle kan blive medlem af gruppen, eller luk for 'fri tilmelding' så kun inveterede kan blive medlem. ændre 'tilmeldingsgebyr' i gruppe opsætningsbilledet sektionen i Generelt fanen" name="member options"/> + <action description="Invitér personer til denne gruppe" longdescription="Invitér personer til denne gruppe via 'Invitér ny person...' knappen i fanen: medlemmer & roller > underfanen: medlemmer" name="member invite" value="1"/> + <action description="Fjern medlemmer fra denne gruppe" longdescription="Fjern medlemmer i denne gruppe via 'Fjern fra gruppe' knappen i fanen: medlemmer & roller > underfanen: medlemmer. En ejer kan fjerne alle undtagen en anden ejer. Hvis du ikke er en ejer, kan et medlem kun fjernes fra gruppen hvis, og kun hvis, medlemmet kun findes i Alle rollen, og ikke i andre roller. for at fjerne medlemmer fra roller, skal du have rettigheden 'Fjern medlemmer fra roller" name="member eject" value="2"/> + <action description="Åben eller luk for 'fri tilmelding' og ændre 'tilmeldingsgebyr'" longdescription="Åben for 'fri tilmelding' så alle kan blive medlem af gruppen, eller luk for 'fri tilmelding' så kun inveterede kan blive medlem. ændre 'tilmeldingsgebyr' i gruppe opsætningsbilledet sektionen i Generelt fanen" name="member options" value="3"/> </action_set> <action_set description="Disse rettigheder inkluderer adgang til at tilføje, fjerne og ændre gruppe-roller, tilføje og fjerne medlemmer i roller, og give rettigheder til roller" name="Roles"> - <action description="Opret nye roller" longdescription="Opret nye roller i fanen: Medlemmer & roller > under-fanen: Roller." name="role create"/> - <action description="Slet roller" longdescription="Slet roller i roller i fanen: Medlemmer & roller > under-fanen: Roller." name="role delete"/> - <action description="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen" longdescription="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen. Dette håndteres i bunden af fanen:: Medlemmer & roller > under-fanen: Roller efter at have valgt en rolle." name="role properties"/> - <action description="Tildel andre samme roller som dig selv" longdescription="Tildel andre medlemmer til roller i Tildelte roller sektionen på fanen: Medlemmer & roller > under-fanen: Medlemmer. Et medlem med denne rettighed kan kun tildele andre medlemmer en rolle som tildeleren allerede selv har." name="role assign member limited"/> - <action description="Tildele medlemmer enhver rolle" longdescription="Tildel andre medlemmer til en hvilken som helst rolle i Tildelte roller sektionen på fanen: Medlemmer & roller > under-fanen: Medlemmer. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - roller som giver dem flere rettigheder end de havde tidligere, og dermed potentielt få næsten samme magt som ejer. Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="role assign member"/> - <action description="Fjern medlemmer fra roller" longdescription="Fjern medlemmer fra roller i in Tildelte roller sektionen på fanen: Medlemmer & roller > under-fanen: Medlemmer. Ejere kan ikke fjernes." name="role remove member"/> - <action description="Tildel og fjern rettigheder for roller" longdescription="Tildel og fjern rettigheder for roller i tilladte rettigheder sektionen på fanen: Medlemmer & roller > under-fanen: Roller. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - rettigheder som giver dem flere rettigheder end de havde tidligere, og dermed potentielt få næsten samme magt som ejer. Vær sikker på at vide hvad du gør inden du tildeler denne rettighed." name="role change actions"/> + <action description="Opret nye roller" longdescription="Opret nye roller i fanen: Medlemmer & roller > under-fanen: Roller." name="role create" value="4"/> + <action description="Slet roller" longdescription="Slet roller i roller i fanen: Medlemmer & roller > under-fanen: Roller." name="role delete" value="5"/> + <action description="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen" longdescription="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen. Dette håndteres i bunden af fanen:: Medlemmer & roller > under-fanen: Roller efter at have valgt en rolle." name="role properties" value="6"/> + <action description="Tildel andre samme roller som dig selv" longdescription="Tildel andre medlemmer til roller i Tildelte roller sektionen på fanen: Medlemmer & roller > under-fanen: Medlemmer. Et medlem med denne rettighed kan kun tildele andre medlemmer en rolle som tildeleren allerede selv har." name="role assign member limited" value="7"/> + <action description="Tildele medlemmer enhver rolle" longdescription="Tildel andre medlemmer til en hvilken som helst rolle i Tildelte roller sektionen på fanen: Medlemmer & roller > under-fanen: Medlemmer. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - roller som giver dem flere rettigheder end de havde tidligere, og dermed potentielt få næsten samme magt som ejer. Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="role assign member" value="8"/> + <action description="Fjern medlemmer fra roller" longdescription="Fjern medlemmer fra roller i in Tildelte roller sektionen på fanen: Medlemmer & roller > under-fanen: Medlemmer. Ejere kan ikke fjernes." name="role remove member" value="9"/> + <action description="Tildel og fjern rettigheder for roller" longdescription="Tildel og fjern rettigheder for roller i tilladte rettigheder sektionen på fanen: Medlemmer & roller > under-fanen: Roller. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - rettigheder som giver dem flere rettigheder end de havde tidligere, og dermed potentielt få næsten samme magt som ejer. Vær sikker på at vide hvad du gør inden du tildeler denne rettighed." name="role change actions" value="10"/> </action_set> <action_set description="Disse rettigheder inkluderer adgang til at ændre denne gruppes identitetsoplysninger, som f.eks. om gruppen kan ses af andre, gruppens fundats og billede." name="Group Identity"> - <action description="Ændre fundats, billede og 'Vis i søgning'" longdescription="Ændre fundats og 'Vis i søgning'. Dette gøres under fanen Generelt." name="group change identity"/> + <action description="Ændre fundats, billede og 'Vis i søgning'" longdescription="Ændre fundats og 'Vis i søgning'. Dette gøres under fanen Generelt." name="group change identity" value="11"/> </action_set> <action_set description="Disse rettigheder inkluderer adgang til dedikere, ændre og sælge land fra denne gruppes besiddelser. For at åbne 'Om land...' vinduet, højre-klik på jorden og vælg 'Om land...', eller klik på 'Om land...' i 'Verden' menuen." name="Parcel Management"> - <action description="Dedikér eller køb land til gruppen" longdescription="Dedikér eller køb land til gruppen. Dette gøres i fanen Generelt i 'Om land...'." name="land deed"/> - <action description="Forlad land og overgiv det til guvernør Linden" longdescription="Forlad land og overgiv det til guvernør Linden. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan overdrage gruppe-ejet land via fanen Generelt i 'Om land...' til Lindens ejerskab uden salg! Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="land release"/> - <action description="Sæt land til salg" longdescription="Sæt land til salg. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan sælge gruppe-ejet land via fanen Generelt i 'Om land...'! Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="land set sale info"/> - <action description="Opdel og saml parceller" longdescription="Opdel og saml parceller. Dette gøres ved at højreklikke på jorden og vælge 'Redigér terræn'" name="land divide join"/> + <action description="Dedikér eller køb land til gruppen" longdescription="Dedikér eller køb land til gruppen. Dette gøres i fanen Generelt i 'Om land...'." name="land deed" value="12"/> + <action description="Forlad land og overgiv det til guvernør Linden" longdescription="Forlad land og overgiv det til guvernør Linden. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan overdrage gruppe-ejet land via fanen Generelt i 'Om land...' til Lindens ejerskab uden salg! Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="land release" value="13"/> + <action description="Sæt land til salg" longdescription="Sæt land til salg. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan sælge gruppe-ejet land via fanen Generelt i 'Om land...'! Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="land set sale info" value="14"/> + <action description="Opdel og saml parceller" longdescription="Opdel og saml parceller. Dette gøres ved at højreklikke på jorden og vælge 'Redigér terræn'" name="land divide join" value="15"/> </action_set> <action_set description="Disse rettigheder inkluderer adgang til at ændre parcel navn og en række parametre om f.eks. landingspunkt, teleports m.v.." name="Parcel Identity"> - <action description="Angive om sted skal vises i 'vis i Søg steder' og angivelse af kategori" longdescription="Angive om sted skal vises i 'vis i Søg steder' og angivelse af kategori i 'Om land...' > Indstillinger fanen." name="land find places"/> - <action description="Ændre parcel navn, beskrivelse, og 'Vis i Søg' opsætning" longdescription="Ændre parcel navn, beskrivelse, og 'Vis i Søg' opsætning. Dette håndteres i 'Om land...'> Opsætning fanen." name="land change identity"/> - <action description="Sæt landingspunkt og teleport muligheder" longdescription="På en gruppe-ejet parcel kan medlemmer, med en rolle med denne rettighed, sætte landingspunktet og dermed angive hvor indkommende teleporte skal ankomme og desuden angive dealjer om teleporte. Dette håndteres i 'Om land...'> Opsætning fanen." name="land set landing point"/> + <action description="Angive om sted skal vises i 'vis i Søg steder' og angivelse af kategori" longdescription="Angive om sted skal vises i 'vis i Søg steder' og angivelse af kategori i 'Om land...' > Indstillinger fanen." name="land find places" value="17"/> + <action description="Ændre parcel navn, beskrivelse, og 'Vis i Søg' opsætning" longdescription="Ændre parcel navn, beskrivelse, og 'Vis i Søg' opsætning. Dette håndteres i 'Om land...'> Opsætning fanen." name="land change identity" value="18"/> + <action description="Sæt landingspunkt og teleport muligheder" longdescription="På en gruppe-ejet parcel kan medlemmer, med en rolle med denne rettighed, sætte landingspunktet og dermed angive hvor indkommende teleporte skal ankomme og desuden angive dealjer om teleporte. Dette håndteres i 'Om land...'> Opsætning fanen." name="land set landing point" value="19"/> </action_set> <action_set description="Disse rettigheder inkluderer adgang til at opsætte parcel indstillinger som f.eks. 'Lave objekter', 'Redigere terræn', samt musik og media indstillinger." name="Parcel Settings"> - <action description="Ændre musik og media indstillinger" longdescription="Ændre oplysninger om streaming musik og film i 'Om land...' > Media fanen." name="land change media"/> - <action description="Ændre rettighed til 'Redigere terræn'" longdescription="Ændre rettighed til 'Redigere terræn'. *ADVARSEL*: Redigere terræn' kan give alle og enhver ret til at ændre terræn og opsætte og flytte Linden planter. Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="land edit"/> - <action description="Ændre diverse andre indstillinger i 'Om land...'> indstillinger fanen" longdescription="Giv adgang til at ændre 'Sikker (ingen skade)', 'Flyve', og tillad andre beboere at: 'Lave objekter', 'Redigere terræn', 'Lave landemærker', og 'Køre scripts' på gruppe-ejet land via About Land > Indstillinger fanen." name="land options"/> + <action description="Ændre musik og media indstillinger" longdescription="Ændre oplysninger om streaming musik og film i 'Om land...' > Media fanen." name="land change media" value="20"/> + <action description="Ændre rettighed til 'Redigere terræn'" longdescription="Ændre rettighed til 'Redigere terræn'. *ADVARSEL*: Redigere terræn' kan give alle og enhver ret til at ændre terræn og opsætte og flytte Linden planter. Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="land edit" value="21"/> + <action description="Ændre diverse andre indstillinger i 'Om land...'> indstillinger fanen" longdescription="Giv adgang til at ændre 'Sikker (ingen skade)', 'Flyve', og tillad andre beboere at: 'Lave objekter', 'Redigere terræn', 'Lave landemærker', og 'Køre scripts' på gruppe-ejet land via About Land > Indstillinger fanen." name="land options" value="22"/> </action_set> <action_set description="Disse rettigheder inkluderer adgang til at medlemmer kan omgå restriktioner på gruppe-ejede parceller." name="Parcel Powers"> - <action description="Tillad altid 'Rediger Terræn'" longdescription="Medlemmer med denne rolle har adgang til at redigere terræn på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på 'Om land...' > Indstillinger fanen." name="land allow edit land"/> - <action description="Tillad altid at 'Flyve'" longdescription="Medlemmer med denne rolle har adgang til at flyve på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på 'Om land...' > Indstillinger fanen." name="land allow fly"/> - <action description="Tillad altid 'Lave objekter'" longdescription="Medlemmer med denne rolle har adgang til at lave nye objekter på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på 'Om land...' > Indstillinger fanen." name="land allow create"/> - <action description="Tillad altid at 'Lave landemærker'" longdescription="Medlemmer med denne rolle har adgang til at lave landemærker på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på 'Om land...' > Indstillinger fanen." name="land allow landmark"/> - <action description="Tillad altid 'sæt til hjem' på gruppe-ejet land" longdescription="Medlemmer med denne rolle har adgang til at benytte 'Verden' menuen og vælge 'sæt til hjem' på en parcel der er dedikeret til gruppen." name="land allow set home"/> + <action description="Tillad altid 'Rediger Terræn'" longdescription="Medlemmer med denne rolle har adgang til at redigere terræn på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på 'Om land...' > Indstillinger fanen." name="land allow edit land" value="23"/> + <action description="Tillad altid at 'Flyve'" longdescription="Medlemmer med denne rolle har adgang til at flyve på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på 'Om land...' > Indstillinger fanen." name="land allow fly" value="24"/> + <action description="Tillad altid 'Lave objekter'" longdescription="Medlemmer med denne rolle har adgang til at lave nye objekter på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på 'Om land...' > Indstillinger fanen." name="land allow create" value="25"/> + <action description="Tillad altid at 'Lave landemærker'" longdescription="Medlemmer med denne rolle har adgang til at lave landemærker på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på 'Om land...' > Indstillinger fanen." name="land allow landmark" value="26"/> + <action description="Tillad altid 'sæt til hjem' på gruppe-ejet land" longdescription="Medlemmer med denne rolle har adgang til at benytte 'Verden' menuen og vælge 'sæt til hjem' på en parcel der er dedikeret til gruppen." name="land allow set home" value="28"/> + <action description="Tillad 'Event Hosting' på gruppe ejet land" longdescription="Medlemmer med denne rolle kan vælge gruppe ejede parceller som sted når der afholdes et event." name="land allow host event" value="41"/> </action_set> <action_set description="Disse rettigheder inkluderer adgang til at medlemmer kan tillade eller forbyde adgang til gruppe-ejede parceller, inkluderende at 'fryse' og udsmide beboere." name="Parcel Access"> - <action description="Administrér adgangsregler for parceller" longdescription="Administrér adgangsregler for parceller i 'Om land' > 'Adgang' fanen." name="land manage allowed"/> - <action description="Administrér liste med blokerede beboere på parceller" longdescription="Administrér liste med blokerede beboere på parceller i 'Om land' > 'Adgang' fanen." name="land manage banned"/> - <action description="Ændre indstillinger for at 'Sælge adgang til' parceller" longdescription="Ændre indstillinger for at 'Sælge adgang til' parceller i 'Om land' > 'Adgang' fanen." name="land manage passes"/> - <action description="Adgang til at smide beboere ud og 'fryse' beboere på parceller" longdescription="Medlemmer med denne rolle kan håndtere beboere som ikke er velkomne på gruppe-ejet parceller ved at højreklikke på dem, vælge Mere>, og vælge 'Smid ud...' eller 'Frys...'." name="land admin"/> + <action description="Administrér adgangsregler for parceller" longdescription="Administrér adgangsregler for parceller i 'Om land' > 'Adgang' fanen." name="land manage allowed" value="29"/> + <action description="Administrér liste med blokerede beboere på parceller" longdescription="Administrér liste med blokerede beboere på parceller i 'Om land' > 'Adgang' fanen." name="land manage banned" value="30"/> + <action description="Ændre indstillinger for at 'Sælge adgang til' parceller" longdescription="Ændre indstillinger for at 'Sælge adgang til' parceller i 'Om land' > 'Adgang' fanen." name="land manage passes" value="31"/> + <action description="Adgang til at smide beboere ud og 'fryse' beboere på parceller" longdescription="Medlemmer med denne rolle kan håndtere beboere som ikke er velkomne på gruppe-ejet parceller ved at højreklikke på dem, vælge Mere>, og vælge 'Smid ud...' eller 'Frys...'." name="land admin" value="32"/> </action_set> <action_set description="Disse rettigheder inkluderer mulighed til at tillade beboere at returnere objekter og placere og flytte Linden planter. Dette er brugbart for at medlemmer kan holde orden og tilpasse landskabet. Denne mulighed skal benyttes med varsomhed, da der ikke er mulighed for at fortryde returnering af objekter og ændringer i landskabet." name="Parcel Content"> - <action description="Returnere objekter ejet af gruppen" longdescription="Returne objekter på gruppe-ejede parceller der er ejet af gruppen. Dette håndteres i 'Om land...'> 'Objekter' fanen." name="land return group owned"/> - <action description="Returnere objekter der er sat til 'gruppe'" longdescription="Returnere objekter på gruppe-ejede parceller, der er 'sat til gruppe' i 'Om land...'> 'Objekter' fanen." name="land return group set"/> - <action description="Returnere objekter der ikke er ejet af andre" longdescription="Returnere objekter på gruppe-ejede parceller, der er 'Ejet af andre' i 'Om land...'> 'Objekter' fanen." name="land return non group"/> - <action description="Ændre landskab med Linden planter" longdescription="Disse rettigheder inkluderer mulighed til at tillade beboere at returnere objekter og placere og flytte Linden planter. Dette er brugbart for at medlemmer kan holde orden og tilpasse landskabet. Denne mulighed skal benyttes med varsomhed, da der ikke er mulighed for at fortryde returnering af objekter og ændringer i landskabet." name="land gardening"/> + <action description="Returnere objekter ejet af gruppen" longdescription="Returne objekter på gruppe-ejede parceller der er ejet af gruppen. Dette håndteres i 'Om land...'> 'Objekter' fanen." name="land return group owned" value="48"/> + <action description="Returnere objekter der er sat til 'gruppe'" longdescription="Returnere objekter på gruppe-ejede parceller, der er 'sat til gruppe' i 'Om land...'> 'Objekter' fanen." name="land return group set" value="33"/> + <action description="Returnere objekter der ikke er ejet af andre" longdescription="Returnere objekter på gruppe-ejede parceller, der er 'Ejet af andre' i 'Om land...'> 'Objekter' fanen." name="land return non group" value="34"/> + <action description="Ændre landskab med Linden planter" longdescription="Disse rettigheder inkluderer mulighed til at tillade beboere at returnere objekter og placere og flytte Linden planter. Dette er brugbart for at medlemmer kan holde orden og tilpasse landskabet. Denne mulighed skal benyttes med varsomhed, da der ikke er mulighed for at fortryde returnering af objekter og ændringer i landskabet." name="land gardening" value="35"/> </action_set> <action_set description="Disse rettigheder inkluderer mulighed til at dedikere, ændre og sælge gruppe-ejede objekter. Disse ændringer sker i 'Rediger'> 'Generelt' fanen." name="Object Management"> - <action description="Dediker objekter til gruppe" longdescription="Dediker objekter til gruppe i 'Rediger'> 'Generelt' fanen." name="object deed"/> - <action description="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter" longdescription="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter i 'Rediger'> 'Generelt' fanen." name="object manipulate"/> - <action description="Sæt gruppe-ejede objekter til salg" longdescription="Sæt gruppe-ejede objekter til salg i 'Rediger'> 'Generelt' fanen." name="object set sale"/> + <action description="Dediker objekter til gruppe" longdescription="Dediker objekter til gruppe i 'Rediger'> 'Generelt' fanen." name="object deed" value="36"/> + <action description="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter" longdescription="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter i 'Rediger'> 'Generelt' fanen." name="object manipulate" value="38"/> + <action description="Sæt gruppe-ejede objekter til salg" longdescription="Sæt gruppe-ejede objekter til salg i 'Rediger'> 'Generelt' fanen." name="object set sale" value="39"/> </action_set> <action_set description="Disse rettigheder inkluderer mulighed til at håndtere betalinger for gruppen og styre adgang til gruppens kontobevægelser." name="Accounting"> - <action description="Betale gruppe regninger og modtage gruppe udbytte" longdescription="Medlemmer med denne rolle vil automatisk betale gruppe regninger og modtage gruppe udbytte. Det betyder at de vil modtager en andel af indtægter fra salg af gruppe-ejet land og bidrage til betaling af gruppe-relaterede betalinger, som f.eks. betaling for at paceller vises i lister. " name="accounting accountable"/> + <action description="Betale gruppe regninger og modtage gruppe udbytte" longdescription="Medlemmer med denne rolle vil automatisk betale gruppe regninger og modtage gruppe udbytte. Det betyder at de vil modtager en andel af indtægter fra salg af gruppe-ejet land og bidrage til betaling af gruppe-relaterede betalinger, som f.eks. betaling for at paceller vises i lister. " name="accounting accountable" value="40"/> </action_set> <action_set description="Disse rettigheder inkluderer adgang til at kunne sende, modtage og se gruppe beskeder." name="Notices"> - <action description="Send beskeder" longdescription="Medlemmer med denne rolle kan sende beskeder i 'Beskeder' fanen." name="notices send"/> - <action description="Modtage og se tidligere beskeder" longdescription="Medlemmer med denne rolle kan modtage og se tidligere beskeder i 'Beskeder' fanen." name="notices receive"/> - </action_set> - <action_set description="Disse rettigheder inkluderer adgang til at kunne oprette forslag, stemme på forslag og se historik med forslag." name="Proposals"> - <action description="Opret forslag" longdescription="Medlemmer med denne rolle kan oprette forslag som der kan stemmes om i 'Forslag' fanen." name="proposal start"/> - <action description="Stem på forslag" longdescription="Medlemmer med denne rolle kan stemme på forslag i 'Forslag' fanen." name="proposal vote"/> + <action description="Send beskeder" longdescription="Medlemmer med denne rolle kan sende beskeder i 'Beskeder' fanen." name="notices send" value="42"/> + <action description="Modtage og se tidligere beskeder" longdescription="Medlemmer med denne rolle kan modtage og se tidligere beskeder i 'Beskeder' fanen." name="notices receive" value="43"/> </action_set> <action_set description="Disse rettigheder styrer hvem der kan deltage i gruppe-chat og gruppe stemme-chat." name="Chat"> - <action description="Deltage i gruppe-chat" longdescription="Medlemmer med denne rolle kan deltage i gruppe-chat sessioner" name="join group chat"/> - <action description="Deltag i gruppe stemme-chat" longdescription="Medlemmer med denne rolle kan deltage i gruppe stemme-chat sessioner. BEMÆRK: Medlemmet skal også have rollen 'Deltage i gruppe-chat' for at denne rolle har effekt." name="join voice chat"/> - <action description="Styr gruppe-chat" longdescription="Medlemmer med denne rolle kan kontrollere adgang og deltagelse i gruppe-chat og gruppe stemme-chat sessioner." name="moderate group chat"/> + <action description="Deltage i gruppe-chat" longdescription="Medlemmer med denne rolle kan deltage i gruppe-chat sessioner" name="join group chat" value="16"/> + <action description="Deltag i gruppe stemme-chat" longdescription="Medlemmer med denne rolle kan deltage i gruppe stemme-chat sessioner. BEMÆRK: Medlemmet skal også have rollen 'Deltage i gruppe-chat' for at denne rolle har effekt." name="join voice chat" value="27"/> + <action description="Styr gruppe-chat" longdescription="Medlemmer med denne rolle kan kontrollere adgang og deltagelse i gruppe-chat og gruppe stemme-chat sessioner." name="moderate group chat" value="37"/> </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml index 1c583f2e95..198d8eea0e 100644 --- a/indra/newview/skins/default/xui/da/strings.xml +++ b/indra/newview/skins/default/xui/da/strings.xml @@ -191,6 +191,9 @@ <string name="TooltipAgentUrl"> Klik for at se beboers profil </string> + <string name="TooltipAgentInspect"> + Lær mere om denne beboer + </string> <string name="TooltipAgentMute"> Klik for at slukke for denne beboer </string> @@ -738,6 +741,12 @@ <string name="Estate / Full Region"> Estate / Hel region </string> + <string name="Estate / Homestead"> + Estate / Homestead + </string> + <string name="Mainland / Homestead"> + Mainland / Homestead + </string> <string name="Mainland / Full Region"> Mainland / Hel region </string> @@ -3469,7 +3478,7 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE]. Du er den eneste deltager i denne samtale </string> <string name="offline_message"> - [NAME] er ikke logget på. + [NAME] er logget af. </string> <string name="invite_message"> Tryk på [BUTTON NAME] knappen for at acceptére/tilslutte til denne stemme chat. @@ -3538,7 +3547,10 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE]. http://secondlife.com/landing/voicemorphing </string> <string name="paid_you_ldollars"> - [NAME] betalte dig L$[AMOUNT] + [NAME] betalte dig L$[AMOUNT] [REASON]. + </string> + <string name="paid_you_ldollars_no_reason"> + [NAME] betalte dig L$[AMOUNT]. </string> <string name="you_paid_ldollars"> Du betalte [NAME] L$[AMOUNT] [REASON]. @@ -3552,6 +3564,9 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE]. <string name="you_paid_ldollars_no_name"> Du betalte L$[AMOUNT] [REASON]. </string> + <string name="for item"> + til [ITEM] + </string> <string name="for a parcel of land"> for en parcel land </string> @@ -3570,6 +3585,9 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE]. <string name="to upload"> for at uploade </string> + <string name="to publish a classified ad"> + til offentliggørelse af annonce + </string> <string name="giving"> Giver L$ [AMOUNT] </string> diff --git a/indra/newview/skins/default/xui/de/panel_places.xml b/indra/newview/skins/default/xui/de/panel_places.xml index 0e85829a0b..36c77d4fe1 100644 --- a/indra/newview/skins/default/xui/de/panel_places.xml +++ b/indra/newview/skins/default/xui/de/panel_places.xml @@ -21,7 +21,7 @@ <button label="Bearbeiten" name="edit_btn" tool_tip="Landmarken-Info bearbeiten"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <button label="▼" name="overflow_btn" tool_tip="Zusätzliche Optionen anzeigen"/> + <menu_button label="▼" name="overflow_btn" tool_tip="Zusätzliche Optionen anzeigen"/> </layout_panel> </layout_stack> <layout_stack name="bottom_bar_ls3"> diff --git a/indra/newview/skins/default/xui/de/panel_profile.xml b/indra/newview/skins/default/xui/de/panel_profile.xml index 40fa2f922a..938631f65d 100644 --- a/indra/newview/skins/default/xui/de/panel_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_profile.xml @@ -57,7 +57,7 @@ <button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <button label="▼" name="overflow_btn" tool_tip="Dem Einwohner Geld geben oder Inventar an den Einwohner schicken"/> + <menu_button label="▼" name="overflow_btn" tool_tip="Dem Einwohner Geld geben oder Inventar an den Einwohner schicken"/> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml index 36108442f3..8eee8f44b5 100644 --- a/indra/newview/skins/default/xui/en/floater_preferences.xml +++ b/indra/newview/skins/default/xui/en/floater_preferences.xml @@ -83,7 +83,7 @@ label="Move & View" layout="topleft" help_topic="preferences_move_tab" - name="audio" /> + name="move" /> <panel class="panel_preference" filename="panel_preferences_alerts.xml" diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 9536bf2cf7..60b876d163 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -909,6 +909,13 @@ The new skin will appear after you restart [APP_NAME]. <notification icon="alertmodal.tga" + name="ChangeLanguage" + type="alertmodal"> +Changing language will take effect after you restart [APP_NAME]. + </notification> + + <notification + icon="alertmodal.tga" name="GoToAuctionPage" type="alertmodal"> Go to the [SECOND_LIFE] web page to see auction details or make a bid? diff --git a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml index 6f3629cc8f..4b21ffa1f9 100644 --- a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml @@ -62,7 +62,7 @@ name="avatar_name" top="6" use_ellipses="true" - value="Unknown" + value="(loading)" width="180" /> <text follows="right" diff --git a/indra/newview/skins/default/xui/en/panel_edit_alpha.xml b/indra/newview/skins/default/xui/en/panel_edit_alpha.xml index 7bcd4962d2..813aa5d7a9 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_alpha.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_alpha.xml @@ -8,6 +8,17 @@ name="edit_alpha_panel" top_pad="10" width="333" > + <scroll_container + color="DkGray2" + follows="all" + height="400" + layout="topleft" + left="10" + top_pad="0" + name="avatar_alpha_color_panel_scroll" + reserve_scroll_corner="false" + opaque="true" + width="313"> <panel border="false" bg_alpha_color="DkGray2" @@ -16,14 +27,14 @@ background_opaque="true" follows="top|left|right" height="400" - left="10" + left="0" layout="topleft" name="avatar_alpha_color_panel" top="0" width="313" > <check_box control_name="LowerAlphaTextureInvisible" - follows="left" + follows="left|top" height="16" layout="topleft" left="5" @@ -48,7 +59,7 @@ <check_box control_name="UpperAlphaTextureInvisible" - follows="left" + follows="left|top" height="16" layout="topleft" left_pad="20" @@ -73,7 +84,7 @@ <check_box control_name="HeadAlphaTextureInvisible" - follows="left" + follows="left|top" height="16" layout="topleft" left="5" @@ -98,7 +109,7 @@ <check_box control_name="Eye AlphaTextureInvisible" - follows="left" + follows="left|top" height="16" layout="topleft" left_pad="20" @@ -123,7 +134,7 @@ <check_box control_name="HairAlphaTextureInvisible" - follows="left" + follows="left|top" height="16" layout="topleft" left="5" @@ -147,5 +158,6 @@ </texture_picker> </panel> + </scroll_container> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml index 23a08344ea..97f1a1a658 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml @@ -14,7 +14,7 @@ bg_opaque_color="DkGray2" background_visible="true" background_opaque="true" - follows="top|left|right" + follows="all" height="400" left="10" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 68c423d7dd..6a8bf87bc5 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -241,6 +241,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M height="25" layout="topleft" name="options_gear_btn_panel" + user_resize="false" width="32"> <menu_button follows="bottom|left" @@ -261,6 +262,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M height="25" layout="topleft" name="add_btn_panel" + user_resize="false" width="32"> <button follows="bottom|left" @@ -281,6 +283,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M height="25" layout="topleft" name="dummy_panel" + user_resize="false" width="212"> <icon follows="bottom|left|right" @@ -297,6 +300,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M height="25" layout="topleft" name="trash_btn_panel" + user_resize="false" width="31"> <dnd_button follows="bottom|left" diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml index 21314703b0..d9c357f277 100644 --- a/indra/newview/skins/default/xui/en/panel_places.xml +++ b/indra/newview/skins/default/xui/en/panel_places.xml @@ -211,7 +211,7 @@ background_visible="true" user_resize="false" auto_resize="true" width="24"> - <button + <menu_button follows="bottom|left|right" height="23" label="▼" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml index 6dc419a96c..0c75399764 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_colors.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_colors.xml @@ -317,7 +317,7 @@ layout="topleft" left="30" height="12" - name="bubble_chat" + name="floater_opacity" top_pad="15" width="120" > @@ -355,7 +355,7 @@ left="50" max_val="1.00" min_val="0.00" - name="active" + name="inactive" show_text="true" top_pad="5" width="415" /> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index 3ceee60927..6573822d1a 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -181,7 +181,7 @@ label="Transparent Water" layout="topleft" left_delta="0" - name="BumpShiny" + name="TransparentWater" top_pad="7" width="256" /> <check_box diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index efc37c2127..7caf425058 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -432,7 +432,7 @@ user_resize="false" auto_resize="false" width="24"> - <button + <menu_button follows="bottom|left|right" height="23" label="▼" diff --git a/indra/newview/skins/default/xui/es/panel_places.xml b/indra/newview/skins/default/xui/es/panel_places.xml index 2e349c7fe2..4c90a7e6b4 100644 --- a/indra/newview/skins/default/xui/es/panel_places.xml +++ b/indra/newview/skins/default/xui/es/panel_places.xml @@ -21,7 +21,7 @@ <button label="Editar" name="edit_btn" tool_tip="Editar la información del hito"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <button label="▼" name="overflow_btn" tool_tip="Ver más opciones"/> + <menu_button label="▼" name="overflow_btn" tool_tip="Ver más opciones"/> </layout_panel> </layout_stack> <layout_stack name="bottom_bar_ls3"> diff --git a/indra/newview/skins/default/xui/es/panel_profile.xml b/indra/newview/skins/default/xui/es/panel_profile.xml index 5cfe83cd61..339a1f236b 100644 --- a/indra/newview/skins/default/xui/es/panel_profile.xml +++ b/indra/newview/skins/default/xui/es/panel_profile.xml @@ -53,7 +53,7 @@ <button label="Teleporte" name="teleport" tool_tip="Ofrecer teleporte"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <button label="▼" name="overflow_btn" tool_tip="Pagar dinero al Residente o compartir algo del inventario con él"/> + <menu_button label="▼" name="overflow_btn" tool_tip="Pagar dinero al Residente o compartir algo del inventario con él"/> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/fr/panel_places.xml b/indra/newview/skins/default/xui/fr/panel_places.xml index 7f3601b90d..e252c224f8 100644 --- a/indra/newview/skins/default/xui/fr/panel_places.xml +++ b/indra/newview/skins/default/xui/fr/panel_places.xml @@ -21,7 +21,7 @@ <button label="Modifier" name="edit_btn" tool_tip="Modifier les informations du repère"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <button label="▼" name="overflow_btn" tool_tip="Afficher d'autres options"/> + <menu_button label="▼" name="overflow_btn" tool_tip="Afficher d'autres options"/> </layout_panel> </layout_stack> <layout_stack name="bottom_bar_ls3"> diff --git a/indra/newview/skins/default/xui/fr/panel_profile.xml b/indra/newview/skins/default/xui/fr/panel_profile.xml index 4606f5a0c6..6b611923af 100644 --- a/indra/newview/skins/default/xui/fr/panel_profile.xml +++ b/indra/newview/skins/default/xui/fr/panel_profile.xml @@ -57,7 +57,7 @@ <button label="Téléporter" name="teleport" tool_tip="Proposer une téléportation"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <button label="▼" name="overflow_btn" tool_tip="Payer le résident ou partager l'inventaire avec lui"/> + <menu_button label="▼" name="overflow_btn" tool_tip="Payer le résident ou partager l'inventaire avec lui"/> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/it/panel_places.xml b/indra/newview/skins/default/xui/it/panel_places.xml index e33f8190eb..61830f186f 100644 --- a/indra/newview/skins/default/xui/it/panel_places.xml +++ b/indra/newview/skins/default/xui/it/panel_places.xml @@ -21,7 +21,7 @@ <button label="Modifica" name="edit_btn" tool_tip="Modifica le informazioni del punto di riferimento"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <button label="▼" name="overflow_btn" tool_tip="Mostra ulteriori opzioni"/> + <menu_button label="▼" name="overflow_btn" tool_tip="Mostra ulteriori opzioni"/> </layout_panel> </layout_stack> <layout_stack name="bottom_bar_ls3"> diff --git a/indra/newview/skins/default/xui/it/panel_profile.xml b/indra/newview/skins/default/xui/it/panel_profile.xml index 8a8d8f5846..c11adeda3d 100644 --- a/indra/newview/skins/default/xui/it/panel_profile.xml +++ b/indra/newview/skins/default/xui/it/panel_profile.xml @@ -53,7 +53,7 @@ <button label="Teleport" name="teleport" tool_tip="Offri teleport"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <button label="▼" name="overflow_btn" tool_tip="Paga del denaro o condividi qualcosa dall'inventario con il residente"/> + <menu_button label="▼" name="overflow_btn" tool_tip="Paga del denaro o condividi qualcosa dall'inventario con il residente"/> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/ja/panel_places.xml b/indra/newview/skins/default/xui/ja/panel_places.xml index 3e364c9b3a..e19b86e552 100644 --- a/indra/newview/skins/default/xui/ja/panel_places.xml +++ b/indra/newview/skins/default/xui/ja/panel_places.xml @@ -21,7 +21,7 @@ <button label="編集" name="edit_btn" tool_tip="ランドマークの情報を編集します"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <button label="▼" name="overflow_btn" tool_tip="オプションを表示します"/> + <menu_button label="▼" name="overflow_btn" tool_tip="オプションを表示します"/> </layout_panel> </layout_stack> <layout_stack name="bottom_bar_ls3"> diff --git a/indra/newview/skins/default/xui/ja/panel_profile.xml b/indra/newview/skins/default/xui/ja/panel_profile.xml index 860020c87c..c2ffd74ec0 100644 --- a/indra/newview/skins/default/xui/ja/panel_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_profile.xml @@ -57,7 +57,7 @@ <button label="テレポート" name="teleport" tool_tip="テレポートを送ります"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <button label="▼" name="overflow_btn" tool_tip="住人にお金を渡すか持ち物を共有します"/> + <menu_button label="▼" name="overflow_btn" tool_tip="住人にお金を渡すか持ち物を共有します"/> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/pl/panel_places.xml b/indra/newview/skins/default/xui/pl/panel_places.xml index e0a0cfd96a..34c105225d 100644 --- a/indra/newview/skins/default/xui/pl/panel_places.xml +++ b/indra/newview/skins/default/xui/pl/panel_places.xml @@ -21,7 +21,7 @@ <button label="Edytuj" name="edit_btn" tool_tip="Edytuj informacje landmarka"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <button label="▼" name="overflow_btn" tool_tip="Pokaż opcje dodatkowe"/> + <menu_button label="▼" name="overflow_btn" tool_tip="Pokaż opcje dodatkowe"/> </layout_panel> </layout_stack> <layout_stack name="bottom_bar_ls3"> diff --git a/indra/newview/skins/default/xui/pl/panel_profile.xml b/indra/newview/skins/default/xui/pl/panel_profile.xml index f4a5699f8d..4152c00386 100644 --- a/indra/newview/skins/default/xui/pl/panel_profile.xml +++ b/indra/newview/skins/default/xui/pl/panel_profile.xml @@ -42,7 +42,7 @@ <button label="Teleportuj" name="teleport" tool_tip="Teleportuj"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <button label="▼" name="overflow_btn" tool_tip="Zapłać lub udostępnij obiekt Rezydentowi"/> + <menu_button label="▼" name="overflow_btn" tool_tip="Zapłać lub udostępnij obiekt Rezydentowi"/> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index 59daa26bf0..ea8bdd75b9 100644 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -3469,7 +3469,7 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE]. Rozmowa głosowa zakończona </string> <string name="conference-title-incoming"> - Konferencja z [AGENT_NAME] + Konferencja z [AGENT_NAME] </string> <string name="no_session_message"> (Sesja IM wygasła) diff --git a/indra/newview/skins/default/xui/pt/panel_places.xml b/indra/newview/skins/default/xui/pt/panel_places.xml index 2e443bc057..828ef3e469 100644 --- a/indra/newview/skins/default/xui/pt/panel_places.xml +++ b/indra/newview/skins/default/xui/pt/panel_places.xml @@ -21,7 +21,7 @@ <button label="Editar" name="edit_btn" tool_tip="Editar dados do marco"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <button label="▼" name="overflow_btn" tool_tip="Mostrar opções adicionais"/> + <menu_button label="▼" name="overflow_btn" tool_tip="Mostrar opções adicionais"/> </layout_panel> </layout_stack> <layout_stack name="bottom_bar_ls3"> diff --git a/indra/newview/skins/default/xui/pt/panel_profile.xml b/indra/newview/skins/default/xui/pt/panel_profile.xml index e4200ae5da..f984ed6a7b 100644 --- a/indra/newview/skins/default/xui/pt/panel_profile.xml +++ b/indra/newview/skins/default/xui/pt/panel_profile.xml @@ -53,7 +53,7 @@ <button label="Teletransportar" name="teleport" tool_tip="Oferecer teletransporte"/> </layout_panel> <layout_panel name="overflow_btn_lp"> - <button label="▼" name="overflow_btn" tool_tip="Pagar ou compartilhar inventário com o residente"/> + <menu_button label="▼" name="overflow_btn" tool_tip="Pagar ou compartilhar inventário com o residente"/> </layout_panel> </layout_stack> </layout_panel> diff --git a/indra/newview/tests/llremoteparcelrequest_test.cpp b/indra/newview/tests/llremoteparcelrequest_test.cpp new file mode 100644 index 0000000000..a6c1f69c82 --- /dev/null +++ b/indra/newview/tests/llremoteparcelrequest_test.cpp @@ -0,0 +1,134 @@ +/**
+ * @file llremoteparcelrequest_test.cpp
+ * @author Brad Kittenbrink <brad@lindenlab.com>
+ *
+ * $LicenseInfo:firstyear=2010&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "../test/lltut.h"
+
+#include "../llremoteparcelrequest.h"
+
+#include "../llagent.h"
+#include "message.h"
+
+namespace {
+ LLControlGroup s_saved_settings("dummy_settings");
+ const LLUUID TEST_PARCEL_ID("11111111-1111-1111-1111-111111111111");
+}
+
+LLCurl::Responder::Responder() { }
+LLCurl::Responder::~Responder() { }
+void LLCurl::Responder::error(U32,std::string const &) { }
+void LLCurl::Responder::result(LLSD const &) { }
+void LLCurl::Responder::errorWithContent(U32 status,std::string const &,LLSD const &) { }
+void LLCurl::Responder::completedRaw(U32 status, std::string const &, LLChannelDescriptors const &,boost::shared_ptr<LLBufferArray> const &) { }
+void LLCurl::Responder::completed(U32 status, std::string const &, LLSD const &) { }
+void LLCurl::Responder::completedHeader(U32 status, std::string const &, LLSD const &) { }
+void LLMessageSystem::getF32(char const *,char const *,F32 &,S32) { }
+void LLMessageSystem::getU8(char const *,char const *,U8 &,S32) { }
+void LLMessageSystem::getS32(char const *,char const *,S32 &,S32) { }
+void LLMessageSystem::getString(char const *,char const *, std::string &,S32) { }
+void LLMessageSystem::getUUID(char const *,char const *, LLUUID & out_id,S32)
+{
+ out_id = TEST_PARCEL_ID;
+}
+void LLMessageSystem::nextBlock(char const *) { }
+void LLMessageSystem::addUUID(char const *,LLUUID const &) { }
+void LLMessageSystem::addUUIDFast(char const *,LLUUID const &) { }
+void LLMessageSystem::nextBlockFast(char const *) { }
+void LLMessageSystem::newMessage(char const *) { }
+LLMessageSystem * gMessageSystem;
+char * _PREHASH_AgentID;
+char * _PREHASH_AgentData;
+LLAgent gAgent;
+LLAgent::LLAgent() : mAgentAccess(s_saved_settings) { }
+LLAgent::~LLAgent() { }
+void LLAgent::sendReliableMessage(void) { }
+LLUUID gAgentSessionID;
+LLUUID gAgentID;
+LLUIColor::LLUIColor(void) { }
+LLAgentAccess::LLAgentAccess(LLControlGroup & settings) : mSavedSettings(settings) { }
+LLControlGroup::LLControlGroup(std::string const & name) : LLInstanceTracker<LLControlGroup, std::string>(name) { }
+LLControlGroup::~LLControlGroup(void) { }
+
+namespace tut
+{
+ struct TestObserver : public LLRemoteParcelInfoObserver {
+ TestObserver() : mProcessed(false) { }
+
+ virtual void processParcelInfo(const LLParcelData& parcel_data)
+ {
+ mProcessed = true;
+ }
+
+ virtual void setParcelID(const LLUUID& parcel_id) { }
+
+ virtual void setErrorStatus(U32 status, const std::string& reason) { }
+
+ bool mProcessed;
+ };
+
+ struct RemoteParcelRequestData
+ {
+ RemoteParcelRequestData()
+ {
+ }
+ };
+
+ typedef test_group<RemoteParcelRequestData> remoteparcelrequest_t;
+ typedef remoteparcelrequest_t::object remoteparcelrequest_object_t;
+ tut::remoteparcelrequest_t tut_remoteparcelrequest("LLRemoteParcelRequest");
+
+ template<> template<>
+ void remoteparcelrequest_object_t::test<1>()
+ {
+ set_test_name("observer pointer");
+
+ boost::scoped_ptr<TestObserver> observer(new TestObserver());
+
+ LLRemoteParcelInfoProcessor & processor = LLRemoteParcelInfoProcessor::instance();
+ processor.addObserver(LLUUID(TEST_PARCEL_ID), observer.get());
+
+ processor.processParcelInfoReply(gMessageSystem, NULL);
+
+ ensure(observer->mProcessed);
+ }
+
+ template<> template<>
+ void remoteparcelrequest_object_t::test<2>()
+ {
+ set_test_name("CHOP-220: dangling observer pointer");
+
+ LLRemoteParcelInfoObserver * observer = new TestObserver();
+
+ LLRemoteParcelInfoProcessor & processor = LLRemoteParcelInfoProcessor::instance();
+ processor.addObserver(LLUUID(TEST_PARCEL_ID), observer);
+
+ delete observer;
+ observer = NULL;
+
+ processor.processParcelInfoReply(gMessageSystem, NULL);
+ }
+}
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 1bc118139f..6c77f8ec38 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -711,6 +711,11 @@ class DarwinManifest(ViewerManifest): self.run_command('strip -S %(viewer_binary)r' % { 'viewer_binary' : self.dst_path_of('Contents/MacOS/Second Life')}) + def copy_finish(self): + # Force executable permissions to be set for scripts + # see CHOP-223 and http://mercurial.selenic.com/bts/issue1802 + for script in 'Contents/MacOS/update_install',: + self.run_command("chmod +x %r" % os.path.join(self.get_dst_prefix(), script)) def package_finish(self): channel_standin = 'Second Life Viewer 2' # hah, our default channel is not usable on its own @@ -866,6 +871,12 @@ class LinuxManifest(ViewerManifest): self.path("featuretable_linux.txt") + def copy_finish(self): + # Force executable permissions to be set for scripts + # see CHOP-223 and http://mercurial.selenic.com/bts/issue1802 + for script in 'secondlife', 'bin/update_install': + self.run_command("chmod +x %r" % os.path.join(self.get_dst_prefix(), script)) + def package_finish(self): if 'installer_name' in self.args: installer_name = self.args['installer_name'] |