diff options
author | Armin Weatherwax | 2010-02-22 13:47:15 +0100 |
---|---|---|
committer | Jacek Antonelli | 2010-03-04 20:58:10 -0600 |
commit | 3609359ca157d122a15480f19fea18de0015cb3c (patch) | |
tree | 8de3fca09dd17db5598f972344495ad695c508af /linden | |
parent | Linux64: for DBUS-Debug build- track where it's crashing (if still). (diff) | |
download | meta-impy-3609359ca157d122a15480f19fea18de0015cb3c.zip meta-impy-3609359ca157d122a15480f19fea18de0015cb3c.tar.gz meta-impy-3609359ca157d122a15480f19fea18de0015cb3c.tar.bz2 meta-impy-3609359ca157d122a15480f19fea18de0015cb3c.tar.xz |
Ported temporary texture uploads from Emerald.
Diffstat (limited to 'linden')
-rw-r--r-- | linden/indra/newview/app_settings/settings.xml | 15 | ||||
-rw-r--r-- | linden/indra/newview/llfloaterimagepreview.cpp | 4 | ||||
-rw-r--r-- | linden/indra/newview/llfloatersnapshot.cpp | 41 | ||||
-rw-r--r-- | linden/indra/newview/llinventorybridge.cpp | 26 | ||||
-rw-r--r-- | linden/indra/newview/llinventorybridge.h | 2 | ||||
-rw-r--r-- | linden/indra/newview/llviewermenufile.cpp | 75 | ||||
-rw-r--r-- | linden/indra/newview/skins/default/xui/en-us/floater_image_preview.xml | 4 | ||||
-rw-r--r-- | linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml | 11 |
8 files changed, 140 insertions, 38 deletions
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml index 5687eb7..93dc2fb 100644 --- a/linden/indra/newview/app_settings/settings.xml +++ b/linden/indra/newview/app_settings/settings.xml | |||
@@ -3415,6 +3415,21 @@ | |||
3415 | <real>1.0</real> | 3415 | <real>1.0</real> |
3416 | </array> | 3416 | </array> |
3417 | </map> | 3417 | </map> |
3418 | |||
3419 | |||
3420 | <key>EmeraldTemporaryUpload</key> | ||
3421 | <map> | ||
3422 | <key>Comment</key> | ||
3423 | <string>Whether or not a texture upload is temp</string> | ||
3424 | <key>Persist</key> | ||
3425 | <integer>0</integer> | ||
3426 | <key>Type</key> | ||
3427 | <string>Boolean</string> | ||
3428 | <key>Value</key> | ||
3429 | <integer>0</integer> | ||
3430 | </map> | ||
3431 | |||
3432 | |||
3418 | <key>EnableRippleWater</key> | 3433 | <key>EnableRippleWater</key> |
3419 | <map> | 3434 | <map> |
3420 | <key>Comment</key> | 3435 | <key>Comment</key> |
diff --git a/linden/indra/newview/llfloaterimagepreview.cpp b/linden/indra/newview/llfloaterimagepreview.cpp index 24b9929..87d577d 100644 --- a/linden/indra/newview/llfloaterimagepreview.cpp +++ b/linden/indra/newview/llfloaterimagepreview.cpp | |||
@@ -58,6 +58,7 @@ | |||
58 | #include "lluictrlfactory.h" | 58 | #include "lluictrlfactory.h" |
59 | #include "llviewerimagelist.h" | 59 | #include "llviewerimagelist.h" |
60 | #include "llstring.h" | 60 | #include "llstring.h" |
61 | #include "llviewercontrol.h" | ||
61 | 62 | ||
62 | //static | 63 | //static |
63 | S32 LLFloaterImagePreview::sUploadAmount = 10; | 64 | S32 LLFloaterImagePreview::sUploadAmount = 10; |
@@ -120,6 +121,9 @@ BOOL LLFloaterImagePreview::postBuild() | |||
120 | 121 | ||
121 | if (mRawImagep->getWidth() * mRawImagep->getHeight () <= LL_IMAGE_REZ_LOSSLESS_CUTOFF * LL_IMAGE_REZ_LOSSLESS_CUTOFF) | 122 | if (mRawImagep->getWidth() * mRawImagep->getHeight () <= LL_IMAGE_REZ_LOSSLESS_CUTOFF * LL_IMAGE_REZ_LOSSLESS_CUTOFF) |
122 | childEnable("lossless_check"); | 123 | childEnable("lossless_check"); |
124 | |||
125 | gSavedSettings.setBOOL("EmeraldTemporaryUpload",FALSE); | ||
126 | childSetValue("temp_check",FALSE); | ||
123 | } | 127 | } |
124 | else | 128 | else |
125 | { | 129 | { |
diff --git a/linden/indra/newview/llfloatersnapshot.cpp b/linden/indra/newview/llfloatersnapshot.cpp index 6597f9d..b4f2cc2 100644 --- a/linden/indra/newview/llfloatersnapshot.cpp +++ b/linden/indra/newview/llfloatersnapshot.cpp | |||
@@ -80,8 +80,10 @@ | |||
80 | ///---------------------------------------------------------------------------- | 80 | ///---------------------------------------------------------------------------- |
81 | /// Local function declarations, constants, enums, and typedefs | 81 | /// Local function declarations, constants, enums, and typedefs |
82 | ///---------------------------------------------------------------------------- | 82 | ///---------------------------------------------------------------------------- |
83 | S32 LLFloaterSnapshot::sUIWinHeightLong = 546 ; | 83 | |
84 | S32 LLFloaterSnapshot::sUIWinHeightShort = LLFloaterSnapshot::sUIWinHeightLong - 250 ; | 84 | //Hey, why use XUI files when you can hardcode? Why say "Floater" when you can say "UIWin"? |
85 | S32 LLFloaterSnapshot::sUIWinHeightLong = 568 ;//height of the floater with "more" options | ||
86 | S32 LLFloaterSnapshot::sUIWinHeightShort = LLFloaterSnapshot::sUIWinHeightLong - 270 ;//dto. "less" options | ||
85 | S32 LLFloaterSnapshot::sUIWinWidth = 215 ; | 87 | S32 LLFloaterSnapshot::sUIWinWidth = 215 ; |
86 | 88 | ||
87 | LLSnapshotFloaterView* gSnapshotFloaterView = NULL; | 89 | LLSnapshotFloaterView* gSnapshotFloaterView = NULL; |
@@ -809,24 +811,14 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview ) | |||
809 | formatted->decode(previewp->mPreviewImageEncoded, 0); | 811 | formatted->decode(previewp->mPreviewImageEncoded, 0); |
810 | } | 812 | } |
811 | } | 813 | } |
812 | else if(previewp->getSnapshotType() == SNAPSHOT_POSTCARD) | 814 | else |
813 | { | 815 | { |
816 | // delete any existing image | ||
814 | previewp->mFormattedImage = NULL; | 817 | previewp->mFormattedImage = NULL; |
818 | // now create the new one of the appropriate format. | ||
815 | // note: postcards hardcoded to use jpeg always. | 819 | // note: postcards hardcoded to use jpeg always. |
816 | previewp->mFormattedImage = new LLImageJPEG(previewp->mSnapshotQuality); | 820 | LLFloaterSnapshot::ESnapshotFormat format = previewp->getSnapshotType() == SNAPSHOT_POSTCARD |
817 | 821 | ? LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG : previewp->getSnapshotFormat(); | |
818 | if(previewp->mFormattedImage->encode(previewp->mPreviewImage, 0)) | ||
819 | { | ||
820 | previewp->mDataSize = previewp->mFormattedImage->getDataSize(); | ||
821 | previewp->mFormattedImage->decode(previewp->mPreviewImageEncoded, 0); | ||
822 | } | ||
823 | } | ||
824 | else //SNAPSHOT_LOCAL | ||
825 | { | ||
826 | previewp->mFormattedImage = NULL; | ||
827 | // save snapshot using the appropriate format. | ||
828 | LLFloaterSnapshot::ESnapshotFormat format = previewp->getSnapshotFormat(); | ||
829 | |||
830 | switch(format) | 822 | switch(format) |
831 | { | 823 | { |
832 | case LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG: | 824 | case LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG: |
@@ -1269,7 +1261,12 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) | |||
1269 | floater->childSetVisible("save_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL); | 1261 | floater->childSetVisible("save_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL); |
1270 | floater->childSetEnabled("keep_aspect_check", shot_type != LLSnapshotLivePreview::SNAPSHOT_TEXTURE && !sAspectRatioCheckOff); | 1262 | floater->childSetEnabled("keep_aspect_check", shot_type != LLSnapshotLivePreview::SNAPSHOT_TEXTURE && !sAspectRatioCheckOff); |
1271 | floater->childSetEnabled("layer_types", shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL); | 1263 | floater->childSetEnabled("layer_types", shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL); |
1272 | 1264 | if(shot_type != LLSnapshotLivePreview::SNAPSHOT_TEXTURE) | |
1265 | { | ||
1266 | floater->childSetValue("temp_check", shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE); | ||
1267 | } | ||
1268 | floater->childSetEnabled("temp_check", shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE); | ||
1269 | |||
1273 | BOOL is_advance = gSavedSettings.getBOOL("AdvanceSnapshot"); | 1270 | BOOL is_advance = gSavedSettings.getBOOL("AdvanceSnapshot"); |
1274 | BOOL is_local = shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL; | 1271 | BOOL is_local = shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL; |
1275 | 1272 | ||
@@ -1290,6 +1287,7 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) | |||
1290 | floater->childSetVisible("freeze_frame_check", is_advance); | 1287 | floater->childSetVisible("freeze_frame_check", is_advance); |
1291 | floater->childSetVisible("auto_snapshot_check", is_advance); | 1288 | floater->childSetVisible("auto_snapshot_check", is_advance); |
1292 | floater->childSetVisible("image_quality_slider", is_advance); | 1289 | floater->childSetVisible("image_quality_slider", is_advance); |
1290 | floater->childSetVisible("temp_check", is_advance); | ||
1293 | 1291 | ||
1294 | LLSnapshotLivePreview* previewp = getPreviewView(floater); | 1292 | LLSnapshotLivePreview* previewp = getPreviewView(floater); |
1295 | BOOL got_bytes = previewp && previewp->getDataSize() > 0; | 1293 | BOOL got_bytes = previewp && previewp->getDataSize() > 0; |
@@ -2085,6 +2083,9 @@ BOOL LLFloaterSnapshot::postBuild() | |||
2085 | sInstance->getRootView()->addChild(previewp); | 2083 | sInstance->getRootView()->addChild(previewp); |
2086 | sInstance->getRootView()->addChild(gSnapshotFloaterView); | 2084 | sInstance->getRootView()->addChild(gSnapshotFloaterView); |
2087 | 2085 | ||
2086 | gSavedSettings.setBOOL("EmeraldTemporaryUpload",FALSE); | ||
2087 | childSetValue("temp_check",FALSE); | ||
2088 | |||
2088 | Impl::sPreviewHandle = previewp->getHandle(); | 2089 | Impl::sPreviewHandle = previewp->getHandle(); |
2089 | 2090 | ||
2090 | impl.updateControls(this); | 2091 | impl.updateControls(this); |
@@ -2103,6 +2104,8 @@ void LLFloaterSnapshot::draw() | |||
2103 | } | 2104 | } |
2104 | 2105 | ||
2105 | // TODO*: Do we need all this? - Jacek | 2106 | // TODO*: Do we need all this? - Jacek |
2107 | //SG & Emerald don't ... let's try and comment it out -Armin | ||
2108 | /* | ||
2106 | if(!isMinimized()) | 2109 | if(!isMinimized()) |
2107 | { | 2110 | { |
2108 | if (previewp && previewp->getDataSize() > 0) | 2111 | if (previewp && previewp->getDataSize() > 0) |
@@ -2194,7 +2197,7 @@ void LLFloaterSnapshot::draw() | |||
2194 | 2197 | ||
2195 | childSetToolTip("ui_check", std::string("If selected shows the UI in the snapshot")); | 2198 | childSetToolTip("ui_check", std::string("If selected shows the UI in the snapshot")); |
2196 | } | 2199 | } |
2197 | 2200 | */ | |
2198 | LLFloater::draw(); | 2201 | LLFloater::draw(); |
2199 | 2202 | ||
2200 | if (previewp) | 2203 | if (previewp) |
diff --git a/linden/indra/newview/llinventorybridge.cpp b/linden/indra/newview/llinventorybridge.cpp index 0d0c512..42af09a 100644 --- a/linden/indra/newview/llinventorybridge.cpp +++ b/linden/indra/newview/llinventorybridge.cpp | |||
@@ -948,9 +948,10 @@ std::string LLItemBridge::getLabelSuffix() const | |||
948 | LLInventoryItem* item = getItem(); | 948 | LLInventoryItem* item = getItem(); |
949 | if(item) | 949 | if(item) |
950 | { | 950 | { |
951 | LLPermissions perm = item->getPermissions(); | ||
951 | // it's a bit confusing to put nocopy/nomod/etc on calling cards. | 952 | // it's a bit confusing to put nocopy/nomod/etc on calling cards. |
952 | if(LLAssetType::AT_CALLINGCARD != item->getType() | 953 | if(/*LLAssetType::AT_CALLINGCARD != item->getType() |
953 | && item->getPermissions().getOwner() == gAgent.getID()) | 954 | && */perm.getOwner() == gAgent.getID()) |
954 | { | 955 | { |
955 | BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID()); | 956 | BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID()); |
956 | BOOL mod = item->getPermissions().allowModifyBy(gAgent.getID()); | 957 | BOOL mod = item->getPermissions().allowModifyBy(gAgent.getID()); |
@@ -961,6 +962,8 @@ std::string LLItemBridge::getLabelSuffix() const | |||
961 | const char* NO_COPY = " (no copy)"; | 962 | const char* NO_COPY = " (no copy)"; |
962 | const char* NO_MOD = " (no modify)"; | 963 | const char* NO_MOD = " (no modify)"; |
963 | const char* NO_XFER = " (no transfer)"; | 964 | const char* NO_XFER = " (no transfer)"; |
965 | const char* TEMPO = " (temporary)"; | ||
966 | |||
964 | const char* scopy; | 967 | const char* scopy; |
965 | if(copy) scopy = EMPTY; | 968 | if(copy) scopy = EMPTY; |
966 | else scopy = NO_COPY; | 969 | else scopy = NO_COPY; |
@@ -970,7 +973,10 @@ std::string LLItemBridge::getLabelSuffix() const | |||
970 | const char* sxfer; | 973 | const char* sxfer; |
971 | if(xfer) sxfer = EMPTY; | 974 | if(xfer) sxfer = EMPTY; |
972 | else sxfer = NO_XFER; | 975 | else sxfer = NO_XFER; |
973 | suffix = llformat("%s%s%s",scopy,smod,sxfer); | 976 | const char* stempo; |
977 | if(perm.getGroup() == gAgent.getID())stempo = TEMPO; | ||
978 | else stempo = EMPTY; | ||
979 | suffix = llformat("%s%s%s%s",scopy,smod,sxfer,stempo); | ||
974 | } | 980 | } |
975 | } | 981 | } |
976 | return suffix; | 982 | return suffix; |
@@ -4572,6 +4578,20 @@ BOOL LLWearableBridge::isItemRemovable() | |||
4572 | return LLInvFVBridge::isItemRemovable(); | 4578 | return LLInvFVBridge::isItemRemovable(); |
4573 | } | 4579 | } |
4574 | 4580 | ||
4581 | //k, all uploadable asset types do not use this characteristic; therefore, we can use it to show temporaryness and not interfere cuz we're awesome like that | ||
4582 | LLFontGL::StyleFlags LLItemBridge::getLabelStyle() const | ||
4583 | { | ||
4584 | LLPermissions perm = getItem()->getPermissions(); | ||
4585 | if(perm.getGroup() == gAgent.getID()) | ||
4586 | { | ||
4587 | return LLFontGL::ITALIC; | ||
4588 | } | ||
4589 | else | ||
4590 | { | ||
4591 | return LLFontGL::NORMAL; | ||
4592 | } | ||
4593 | } | ||
4594 | |||
4575 | LLFontGL::StyleFlags LLWearableBridge::getLabelStyle() const | 4595 | LLFontGL::StyleFlags LLWearableBridge::getLabelStyle() const |
4576 | { | 4596 | { |
4577 | if( gAgent.isWearingItem( mUUID ) ) | 4597 | if( gAgent.isWearingItem( mUUID ) ) |
diff --git a/linden/indra/newview/llinventorybridge.h b/linden/indra/newview/llinventorybridge.h index 6c1c469..3f4cfb0 100644 --- a/linden/indra/newview/llinventorybridge.h +++ b/linden/indra/newview/llinventorybridge.h | |||
@@ -263,6 +263,8 @@ public: | |||
263 | virtual BOOL hasChildren() const { return FALSE; } | 263 | virtual BOOL hasChildren() const { return FALSE; } |
264 | virtual BOOL isUpToDate() const { return TRUE; } | 264 | virtual BOOL isUpToDate() const { return TRUE; } |
265 | 265 | ||
266 | virtual LLFontGL::StyleFlags getLabelStyle() const; | ||
267 | |||
266 | // override for LLInvFVBridge | 268 | // override for LLInvFVBridge |
267 | virtual void clearDisplayName() { mDisplayName.clear(); } | 269 | virtual void clearDisplayName() { mDisplayName.clear(); } |
268 | 270 | ||
diff --git a/linden/indra/newview/llviewermenufile.cpp b/linden/indra/newview/llviewermenufile.cpp index 3283391..8f47e0b 100644 --- a/linden/indra/newview/llviewermenufile.cpp +++ b/linden/indra/newview/llviewermenufile.cpp | |||
@@ -844,6 +844,40 @@ void upload_new_resource(const std::string& src_filename, std::string name, | |||
844 | } | 844 | } |
845 | } | 845 | } |
846 | 846 | ||
847 | void temp_upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExtStat ext_status) // StoreAssetData callback (fixed) | ||
848 | { | ||
849 | LLResourceData* data = (LLResourceData*)user_data; | ||
850 | if(result >= 0) | ||
851 | { | ||
852 | LLAssetType::EType dest_loc = (data->mPreferredLocation == LLAssetType::AT_NONE) ? data->mAssetInfo.mType : data->mPreferredLocation; | ||
853 | LLUUID folder_id(gInventory.findCategoryUUIDForType(dest_loc)); | ||
854 | LLUUID item_id; | ||
855 | item_id.generate(); | ||
856 | LLPermissions perm; | ||
857 | perm.init(gAgentID, | ||
858 | gAgentID, | ||
859 | gAgentID, | ||
860 | gAgentID); | ||
861 | perm.setMaskBase(PERM_ALL); | ||
862 | perm.setMaskOwner(PERM_ALL); | ||
863 | perm.setMaskEveryone(PERM_ALL); | ||
864 | perm.setMaskGroup(PERM_ALL); | ||
865 | LLPointer<LLViewerInventoryItem> item = new LLViewerInventoryItem(item_id, folder_id, perm, data->mAssetInfo.mTransactionID.makeAssetID(gAgent.getSecureSessionID()), data->mAssetInfo.mType, data->mInventoryType, data->mAssetInfo.getName(), "", LLSaleInfo::DEFAULT, LLInventoryItem::II_FLAGS_NONE, time_corrected()); | ||
866 | item->updateServer(TRUE); | ||
867 | gInventory.updateItem(item); | ||
868 | gInventory.notifyObservers(); | ||
869 | }else // if(result >= 0) | ||
870 | { | ||
871 | LLSD args; | ||
872 | args["FILE"] = LLInventoryType::lookupHumanReadable(data->mInventoryType); | ||
873 | args["REASON"] = std::string(LLAssetStorage::getErrorString(result)); | ||
874 | LLNotifications::instance().add("CannotUploadReason", args); | ||
875 | } | ||
876 | |||
877 | LLUploadDialog::modalUploadFinished(); | ||
878 | delete data; | ||
879 | } | ||
880 | |||
847 | void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExtStat ext_status) // StoreAssetData callback (fixed) | 881 | void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExtStat ext_status) // StoreAssetData callback (fixed) |
848 | { | 882 | { |
849 | LLResourceData* data = (LLResourceData*)user_data; | 883 | LLResourceData* data = (LLResourceData*)user_data; |
@@ -968,6 +1002,11 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty | |||
968 | S32 expected_upload_cost, | 1002 | S32 expected_upload_cost, |
969 | void *userdata) | 1003 | void *userdata) |
970 | { | 1004 | { |
1005 | if(gDisconnected) | ||
1006 | { | ||
1007 | return ; | ||
1008 | } | ||
1009 | |||
971 | LLAssetID uuid = tid.makeAssetID(gAgent.getSecureSessionID()); | 1010 | LLAssetID uuid = tid.makeAssetID(gAgent.getSecureSessionID()); |
972 | 1011 | ||
973 | if( LLAssetType::AT_SOUND == asset_type ) | 1012 | if( LLAssetType::AT_SOUND == asset_type ) |
@@ -1013,8 +1052,11 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty | |||
1013 | llinfos << "Expected Upload Cost: " << expected_upload_cost << llendl; | 1052 | llinfos << "Expected Upload Cost: " << expected_upload_cost << llendl; |
1014 | lldebugs << "Folder: " << gInventory.findCategoryUUIDForType((destination_folder_type == LLAssetType::AT_NONE) ? asset_type : destination_folder_type) << llendl; | 1053 | lldebugs << "Folder: " << gInventory.findCategoryUUIDForType((destination_folder_type == LLAssetType::AT_NONE) ? asset_type : destination_folder_type) << llendl; |
1015 | lldebugs << "Asset Type: " << LLAssetType::lookup(asset_type) << llendl; | 1054 | lldebugs << "Asset Type: " << LLAssetType::lookup(asset_type) << llendl; |
1055 | |||
1016 | std::string url = gAgent.getRegion()->getCapability("NewFileAgentInventory"); | 1056 | std::string url = gAgent.getRegion()->getCapability("NewFileAgentInventory"); |
1017 | if (!url.empty()) | 1057 | BOOL temporary_up = gSavedSettings.getBOOL("EmeraldTemporaryUpload"); |
1058 | gSavedSettings.setBOOL("EmeraldTemporaryUpload",FALSE); | ||
1059 | if (!url.empty() && temporary_up == FALSE) | ||
1018 | { | 1060 | { |
1019 | llinfos << "New Agent Inventory via capability" << llendl; | 1061 | llinfos << "New Agent Inventory via capability" << llendl; |
1020 | LLSD body; | 1062 | LLSD body; |
@@ -1036,19 +1078,22 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty | |||
1036 | } | 1078 | } |
1037 | else | 1079 | else |
1038 | { | 1080 | { |
1039 | llinfos << "NewAgentInventory capability not found, new agent inventory via asset system." << llendl; | 1081 | if(temporary_up == FALSE) |
1040 | // check for adequate funds | ||
1041 | // TODO: do this check on the sim | ||
1042 | if (LLAssetType::AT_SOUND == asset_type || | ||
1043 | LLAssetType::AT_TEXTURE == asset_type || | ||
1044 | LLAssetType::AT_ANIMATION == asset_type) | ||
1045 | { | 1082 | { |
1046 | S32 balance = gStatusBar->getBalance(); | 1083 | llinfos << "NewAgentInventory capability not found, new agent inventory via asset system." << llendl; |
1047 | if (balance < expected_upload_cost) | 1084 | // check for adequate funds |
1085 | // TODO: do this check on the sim | ||
1086 | if (LLAssetType::AT_SOUND == asset_type || | ||
1087 | LLAssetType::AT_TEXTURE == asset_type || | ||
1088 | LLAssetType::AT_ANIMATION == asset_type) | ||
1048 | { | 1089 | { |
1049 | // insufficient funds, bail on this upload | 1090 | S32 balance = gStatusBar->getBalance(); |
1050 | LLFloaterBuyCurrency::buyCurrency("Uploading costs", expected_upload_cost); | 1091 | if (balance < expected_upload_cost) |
1051 | return; | 1092 | { |
1093 | // insufficient funds, bail on this upload | ||
1094 | LLFloaterBuyCurrency::buyCurrency("Uploading costs", expected_upload_cost); | ||
1095 | return; | ||
1096 | } | ||
1052 | } | 1097 | } |
1053 | } | 1098 | } |
1054 | 1099 | ||
@@ -1065,7 +1110,7 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty | |||
1065 | data->mAssetInfo.setDescription(desc); | 1110 | data->mAssetInfo.setDescription(desc); |
1066 | data->mPreferredLocation = destination_folder_type; | 1111 | data->mPreferredLocation = destination_folder_type; |
1067 | 1112 | ||
1068 | LLAssetStorage::LLStoreAssetCallback asset_callback = &upload_done_callback; | 1113 | LLAssetStorage::LLStoreAssetCallback asset_callback = temporary_up ? &temp_upload_done_callback : &upload_done_callback; |
1069 | if (callback) | 1114 | if (callback) |
1070 | { | 1115 | { |
1071 | asset_callback = callback; | 1116 | asset_callback = callback; |
@@ -1073,7 +1118,9 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty | |||
1073 | gAssetStorage->storeAssetData(data->mAssetInfo.mTransactionID, data->mAssetInfo.mType, | 1118 | gAssetStorage->storeAssetData(data->mAssetInfo.mTransactionID, data->mAssetInfo.mType, |
1074 | asset_callback, | 1119 | asset_callback, |
1075 | (void*)data, | 1120 | (void*)data, |
1076 | FALSE); | 1121 | temporary_up, |
1122 | TRUE, | ||
1123 | temporary_up); | ||
1077 | } | 1124 | } |
1078 | } | 1125 | } |
1079 | 1126 | ||
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_image_preview.xml b/linden/indra/newview/skins/default/xui/en-us/floater_image_preview.xml index 926e715..76c1852 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_image_preview.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_image_preview.xml | |||
@@ -57,6 +57,10 @@ Try saving image as 24 bit Targa (.tga). | |||
57 | follows="bottom|left" font="SansSerifSmall" height="16" | 57 | follows="bottom|left" font="SansSerifSmall" height="16" |
58 | initial_value="false" label="Use lossless compression" left="10" | 58 | initial_value="false" label="Use lossless compression" left="10" |
59 | left_delta="2" name="lossless_check" width="280" /> | 59 | left_delta="2" name="lossless_check" width="280" /> |
60 | <check_box bottom="37" control_name="EmeraldTemporaryUpload" enabled="true" | ||
61 | follows="bottom|left" font="SansSerifSmall" height="16" | ||
62 | initial_value="false" label="Temporary Image (Free)" | ||
63 | left_delta="155" name="temp_check" width="280" tooltip="Sets the asset to be temporary, meaning its free, but in return, only good for a short time before it ceases to exist." /> | ||
60 | <button bottom="10" follows="bottom|right" height="20" label="Cancel" left="165" | 64 | <button bottom="10" follows="bottom|right" height="20" label="Cancel" left="165" |
61 | name="cancel_btn" width="125" /> | 65 | name="cancel_btn" width="125" /> |
62 | <button bottom="10" follows="bottom|left" height="20" label="Upload (L$[AMOUNT])" | 66 | <button bottom="10" follows="bottom|left" height="20" label="Upload (L$[AMOUNT])" |
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml b/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml index efe524c..35a8ec1 100644 --- a/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml +++ b/linden/indra/newview/skins/default/xui/en-us/floater_snapshot.xml | |||
@@ -1,6 +1,10 @@ | |||
1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> | 1 | <?xml version="1.0" encoding="utf-8" standalone="yes" ?> |
2 | <floater bottom="-320" can_close="true" can_drag_on_left="false" can_minimize="true" | 2 | |
3 | can_resize="false" follows="left|top" height="546" name="Snapshot" | 3 | <!-- README: Width and height of this floater are hardcoded in llfloatersnapshot.cpp |
4 | using sUIWinWidth, sUIWinHeightShort, sUIWinHeightLong --> | ||
5 | <floater | ||
6 | bottom="-320" can_close="true" can_drag_on_left="false" can_minimize="true" | ||
7 | can_resize="false" follows="left|top" height="568" name="Snapshot" | ||
4 | rect_control="FloaterSnapshotRect" title="Snapshot Preview" width="215"> | 8 | rect_control="FloaterSnapshotRect" title="Snapshot Preview" width="215"> |
5 | <text bottom_delta="-40" follows="top|left" height="15" left="10" name="type_label" | 9 | <text bottom_delta="-40" follows="top|left" height="15" left="10" name="type_label" |
6 | width="195"> | 10 | width="195"> |
@@ -170,6 +174,9 @@ | |||
170 | left="10" name="freeze_frame_check" /> | 174 | left="10" name="freeze_frame_check" /> |
171 | <check_box bottom_delta="-20" follows="left|top" label="Auto-refresh" left="10" | 175 | <check_box bottom_delta="-20" follows="left|top" label="Auto-refresh" left="10" |
172 | name="auto_snapshot_check" /> | 176 | name="auto_snapshot_check" /> |
177 | <check_box bottom_delta="-20" follows="left|top" control_name="EmeraldTemporaryUpload" enabled="true" | ||
178 | initial_value="false" label="Temporary Image (Free)" left="10" | ||
179 | name="temp_check" tooltip="Sets the asset to be temporary, meaning its free, but in return, only good for a short time before it ceases to exist." /> | ||
173 | <string name="unknown"> | 180 | <string name="unknown"> |
174 | unknown | 181 | unknown |
175 | </string> | 182 | </string> |