468 lines
15 KiB
Plaintext
468 lines
15 KiB
Plaintext
autoImport("PictureDetailPanel")
|
|
WeddingWallPictureDetail = class("WeddingWallPictureDetail", PictureDetailPanel)
|
|
|
|
WeddingWallPictureDetail.ViewType = UIViewType.NormalLayer
|
|
autoImport("PictureWallCell")
|
|
local tempVector3 = LuaVector3.zero
|
|
local tempRot = LuaQuaternion.identity
|
|
|
|
WeddingWallPictureDetail.NewKeyTag = "WeddingWallPictureDetail_NewKeyTag_%s_%s"
|
|
WeddingWallPictureDetail.CheckCurrentShowPhoto = "WeddingWallPictureDetail_CheckCurrentShowPhoto"
|
|
function WeddingWallPictureDetail:Init()
|
|
self:AddViewEvts()
|
|
self:initView()
|
|
self:initData()
|
|
self:requestFrameData()
|
|
end
|
|
|
|
function WeddingWallPictureDetail:requestFrameData()
|
|
-- ServicePhotoCmdProxy.Instance:CallQueryWedPhotoCmd(self.frameId)
|
|
ServicePhotoCmdProxy.Instance:CallQueryFramePhotoListPhotoCmd(self.frameId)
|
|
end
|
|
|
|
function WeddingWallPictureDetail:AddViewEvts()
|
|
self:AddListenEvt(PictureWallDataEvent.MapEnd,self.MapEnd);
|
|
self:AddListenEvt(PictureWallDataEvent.ShowRedTip,self.ShowRedTip);
|
|
self:AddListenEvt(ServiceEvent.PhotoCmdFrameActionPhotoCmd,self.PhotoCmdFrameActionPhotoCmd);
|
|
|
|
self:AddListenEvt(ServiceEvent.PhotoCmdUpdateFrameShowPhotoCmd,self.UpdateCurPhoto);
|
|
self:AddListenEvt(ServiceEvent.PhotoCmdQueryFramePhotoListPhotoCmd,self.HandleQueryFramePhotoList);
|
|
self:AddListenEvt(WeddingWallPicManager.WallPicOriginDownloadCompleteCallback,self.photoCompleteCallback);
|
|
self:AddListenEvt(WeddingWallPicManager.WallPicOriginDownloadProgressCallback,self.photoProgressCallback);
|
|
self:AddListenEvt(WeddingWallPicManager.WallPicThumbnailDownloadProgressCallback,self.WallhumbnailPhDlPgCallback);
|
|
self:AddListenEvt(WeddingWallPicManager.WallPicThumbnailDownloadCompleteCallback,self.WallThumbnailPhDlCpCallback);
|
|
self:AddListenEvt(WeddingWallPicManager.WallPicThumbnailDownloadErrorCallback,self.WallThumbnailPhDlErCallback);
|
|
end
|
|
|
|
function WeddingWallPictureDetail:WallhumbnailPhDlPgCallback( note )
|
|
local data = note.body
|
|
local cell = self:GetItemCellById(data.photoData)
|
|
if(cell)then
|
|
cell:setDownloadProgress(data.progress)
|
|
end
|
|
end
|
|
|
|
function WeddingWallPictureDetail:WallThumbnailPhDlCpCallback( note )
|
|
local data = note.body
|
|
local cell = self:GetItemCellById(data.photoData)
|
|
if(cell)then
|
|
self:GetWallPicThumbnail(cell)
|
|
end
|
|
end
|
|
|
|
function WeddingWallPictureDetail:WallThumbnailPhDlErCallback( note )
|
|
local data = note.body
|
|
local cell = self:GetItemCellById(data.photoData)
|
|
if(cell)then
|
|
cell:setDownloadFailure()
|
|
end
|
|
end
|
|
|
|
function WeddingWallPictureDetail:ShowRedTip( note )
|
|
local size = note.body
|
|
if(size>0)then
|
|
self:Show(self.redTip)
|
|
self:ShowMsgAnim(note.body)
|
|
else
|
|
self:Hide(self.redTip)
|
|
end
|
|
end
|
|
|
|
function WeddingWallPictureDetail:GetUploadSusPicture( )
|
|
return 0
|
|
end
|
|
|
|
function WeddingWallPictureDetail:ShowMsgAnim(count)
|
|
-- body
|
|
-- local count = self:GetUploadSusPicture()
|
|
-- self.SusMsg.text = string.format(ZhString.PersonalPictureCell_UploadSusmsg,count)
|
|
-- self:Show(self.SusMsg.gameObject)
|
|
-- -- play:Play(true)
|
|
end
|
|
|
|
function WeddingWallPictureDetail:PhotoCmdFrameActionPhotoCmd( note )
|
|
self:requestFrameData()
|
|
end
|
|
|
|
function WeddingWallPictureDetail:UpdateCurPhoto( )
|
|
local serverData = Game.WeddingWallPicManager:getServerDataByFrameId(self.frameId)
|
|
if(serverData)then
|
|
if(self.serverData and Game.WeddingWallPicManager:checkSamePicture(self.serverData.photoData,serverData.photoData))then
|
|
return
|
|
end
|
|
self.serverData = serverData
|
|
local photoData = self.serverData.photoData
|
|
self.anglez = photoData.anglez
|
|
self:getPhoto()
|
|
else
|
|
local texture = self.photo.mainTexture
|
|
self.photo.mainTexture = nil
|
|
Object.DestroyImmediate(texture)
|
|
end
|
|
end
|
|
|
|
function WeddingWallPictureDetail:HandleQueryFramePhotoList( note )
|
|
local data = note.body
|
|
local list = {}
|
|
if(data and data.frameid == self.frameId)then
|
|
local photos = data.photos
|
|
for i=1,#photos do
|
|
local single = photos[i]
|
|
local photoData = PhotoData.new(single)
|
|
list[#list+1] = photoData
|
|
end
|
|
end
|
|
self:SetData(list)
|
|
if(#list>0 and self.firstActivie)then
|
|
self.firstActivie = false
|
|
self.switchCtPlay:Play(true)
|
|
end
|
|
end
|
|
|
|
function WeddingWallPictureDetail:changePhotoSize()
|
|
|
|
local frameData = Table_ScenePhotoFrame[self.frameId]
|
|
local dir = 0
|
|
if(frameData)then
|
|
dir = frameData.Dir
|
|
end
|
|
if(dir == 1)then
|
|
self.photo.width = 400
|
|
self.photo.height = 600
|
|
end
|
|
end
|
|
|
|
function WeddingWallPictureDetail:photoCompleteCallback( note )
|
|
-- body
|
|
local data = note.body
|
|
Game.WeddingWallPicManager:log("WeddingWallPictureDetail:photoCompleteCallback",data.photoData.sourceid,data.photoData.source,data.photoData.charid)
|
|
Game.WeddingWallPicManager:log("WeddingWallPictureDetail:photoCompleteCallback",self.serverData.photoData.sourceid,self.serverData.photoData.source,self.serverData.photoData.charid)
|
|
Game.WeddingWallPicManager:log("WeddingWallPictureDetail:photoCompleteCallback",self.serverData.photoData.time,data.photoData.time)
|
|
if(self.serverData and Game.WeddingWallPicManager:checkSamePicture(data.photoData,self.serverData.photoData))then
|
|
self:completeCallback(data.byte)
|
|
end
|
|
end
|
|
|
|
function WeddingWallPictureDetail:photoProgressCallback( note )
|
|
-- body
|
|
local data = note.body
|
|
-- printRed("WeddingWallPictureDetail photoProgressCallback",data.progress)
|
|
if(self.serverData and Game.WeddingWallPicManager:checkSamePicture(data.photoData,self.serverData.photoData))then
|
|
self:progressCallback(data.progress)
|
|
end
|
|
end
|
|
|
|
function WeddingWallPictureDetail:showAnim()
|
|
-- body
|
|
tempVector3:Set(0,0,0)
|
|
self.gameObject.transform.localScale = tempVector3
|
|
local sceneryData = self.viewdata.viewdata.serverData
|
|
local trans = self.viewdata.viewdata.trans
|
|
local gm = NGUIUtil:GetCameraByLayername("Default");
|
|
local x,y = LuaGameObject.WorldToViewportPointByTransform(gm,trans.transform,Space.World)
|
|
x = 1280*(x - 0.5)
|
|
y = 720*(y - 0.5)
|
|
-- helplog(LuaGameObject.WorldToScreenPointByTransform(gm,trans.transform,Space.Self))
|
|
-- tempVector3:Set(LuaGameObject.ScreenToWorldPointByVector3(cm,tempVector3))
|
|
-- tempVector3:Set(LuaGameObject.InverseTransformPointByVector3(self.gameObject.transform.parent,tempVector3))
|
|
tempVector3:Set(x,y,0)
|
|
local tweenPosition = self.gameObject:GetComponent(TweenPosition)
|
|
local play = self.gameObject:GetComponent(UIPlayTween)
|
|
tweenPosition.from = tempVector3
|
|
self.gameObject.transform.localPosition = tempVector3
|
|
EventDelegate.Set(play.onFinished,function ( )
|
|
self:showOtherUI()
|
|
end)
|
|
play:Play(true)
|
|
|
|
end
|
|
|
|
function WeddingWallPictureDetail:showOtherUI( )
|
|
self:Show(self.leftSliderCt)
|
|
self:Show(self.UpdateCt)
|
|
self:Hide(self.scrollView)
|
|
self:Show(self.scrollView)
|
|
if(PhotoDataProxy.Instance:checkWeddingWallSyncPermission())then
|
|
self:Show(self.UpdateCt)
|
|
else
|
|
self:Hide(self.UpdateCt)
|
|
end
|
|
end
|
|
|
|
function WeddingWallPictureDetail:MapEnd( note )
|
|
self:CloseSelf()
|
|
end
|
|
|
|
function WeddingWallPictureDetail:OnEnter( )
|
|
-- body
|
|
self:showAnim()
|
|
end
|
|
|
|
function WeddingWallPictureDetail:initData( )
|
|
-- body
|
|
self:initDefaultTextureSize()
|
|
self.serverData = self.viewdata.viewdata.serverData
|
|
self.frameId = self.viewdata.viewdata.frameId
|
|
if(self.serverData and self.serverData.photoData)then
|
|
local photoData = self.serverData.photoData
|
|
self.anglez = photoData.anglez
|
|
self.isThumbnail = false
|
|
else
|
|
self:changePhotoSize()
|
|
end
|
|
|
|
LeanTween.cancel(self.gameObject)
|
|
LeanTween.delayedCall(self.gameObject,0.1,function ( )
|
|
self:getPhoto()
|
|
end)
|
|
self.firstActivie = true
|
|
end
|
|
|
|
function WeddingWallPictureDetail:ScrollViewRevert(callback)
|
|
self.revertCallBack = callback;
|
|
self.scrollView:Revert();
|
|
end
|
|
|
|
function WeddingWallPictureDetail:initView( )
|
|
-- body
|
|
self.scrollView = self:FindComponent("ItemScrollView", ROUIScrollView);
|
|
self.scrollView.OnStop = function ()
|
|
self:ScrollViewRevert();
|
|
end
|
|
self.photo = self:FindGO("photo"):GetComponent(UITexture)
|
|
self.progress = self:FindGO("loadProgress"):GetComponent(UILabel)
|
|
self:Hide(self.progress.gameObject)
|
|
self.leftSlider = self:FindComponent("leftSlider",TweenPosition)
|
|
self.leftSliderCt = self:FindGO("leftSliderCt")
|
|
self.UpdateCt = self:FindGO("UpdateCt")
|
|
self.frameSizeLabel = self:FindComponent("frameSizeLabel",UILabel)
|
|
self.redTip = self:FindGO("redTip")
|
|
self.PhotoCt = self:FindGO("PhotoCt")
|
|
self:Hide(self.redTip)
|
|
self:Hide(self.leftSliderCt)
|
|
self:Hide(self.UpdateCt)
|
|
self.SusMsg = self:FindComponent("SusMsg",UILabel)
|
|
self:Hide(self.SusMsg.gameObject)
|
|
self.switchCtPlay = self:FindComponent("switchCt",UIPlayTween)
|
|
|
|
local itemContainer = self:FindGO("bag_itemContainer");
|
|
local wrapConfig = {
|
|
wrapObj = itemContainer,
|
|
pfbNum = 6,
|
|
cellName = "PictureWallCell",
|
|
control = PictureWallCell,
|
|
dir = 1,
|
|
}
|
|
|
|
self.wraplist = WrapCellHelper.new(wrapConfig);
|
|
self.wraplist:AddEventListener(PictureDetailPanel.GetWallPicThumbnail, self.GetWallPicThumbnail, self);
|
|
-- self.wraplist:AddEventListener(WeddingWallPictureDetail.CheckIsCurrent, self.CheckIsCurrent, self);
|
|
self:AddClickEvent(self.UpdateCt,function ( )
|
|
-- body
|
|
|
|
if(PhotoDataProxy.Instance:checkWeddingWallSyncPermission())then
|
|
self:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.PicutureWallSyncPanel,viewdata = {frameId = self.frameId,from = PicutureWallSyncPanel.PictureSyncFrom.WeddingWall}})
|
|
-- self:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.WeddingWallPictureSyncPanel,viewdata = {frameId = self.frameId}})
|
|
self:Hide(self.SusMsg.gameObject)
|
|
self:Hide(self.redTip)
|
|
PhotoDataProxy.Instance:clearToSeeDatas()
|
|
else
|
|
MsgManager.ShowMsgByIDTable(3643)
|
|
end
|
|
end)
|
|
self:SetData({})
|
|
end
|
|
|
|
function WeddingWallPictureDetail:GetWallPicThumbnail(cellCtl)
|
|
if(cellCtl and cellCtl.data)then
|
|
Game.WeddingWallPicManager:GetPicThumbnailByCell(cellCtl)
|
|
if(self.serverData and Game.WeddingWallPicManager:checkSamePicture(cellCtl.data,self.serverData.photoData))then
|
|
cellCtl:IsCurrent(true)
|
|
local panel = self.scrollView.panel
|
|
if(panel)then
|
|
local bound = NGUIMath.CalculateRelativeWidgetBounds(panel.cachedTransform,cellCtl.gameObject.transform)
|
|
-- printRed(bound)
|
|
local offset = panel:CalculateConstrainOffset(bound.min,bound.max)
|
|
-- printRed(offset)
|
|
offset = Vector3(0,offset.y,0)
|
|
self.scrollView:MoveRelative(offset)
|
|
end
|
|
else
|
|
cellCtl:IsCurrent(false)
|
|
end
|
|
end
|
|
end
|
|
|
|
function WeddingWallPictureDetail:GetIndexByCellData(data)
|
|
local cells = self:GetItemCells()
|
|
for i=1,#cells do
|
|
local single = cells[i]
|
|
if(single.data)then
|
|
if(Game.WeddingWallPicManager:checkSamePicture(single.data,data))then
|
|
return i
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function WeddingWallPictureDetail:SetData(datas, noResetPos)
|
|
local totalUpSize = GameConfig.Wedding and GameConfig.Wedding.MaxFramePhotoCount or 10
|
|
self.frameSizeLabel.text = string.format(ZhString.PersonalPictureCell_CurFrameShowState,#datas,totalUpSize)
|
|
self.wraplist:UpdateInfo(datas);
|
|
if(not noResetPos)then
|
|
self.wraplist:ResetPosition()
|
|
end
|
|
self.scrollView:ResetPosition()
|
|
end
|
|
|
|
function WeddingWallPictureDetail:initDefaultTextureSize( )
|
|
-- body
|
|
self.originWith = self.photo.width
|
|
self.originHeight = self.photo.height
|
|
end
|
|
|
|
function WeddingWallPictureDetail:setTexture( texture )
|
|
-- body
|
|
-- local anglez = 0
|
|
-- if(self.anglez >=45 and self.anglez <= 135)then
|
|
-- anglez = 90
|
|
-- elseif(self.anglez >= 225 and self.anglez <= 315)then
|
|
-- anglez = 270
|
|
-- elseif(self.anglez >=135 and self.anglez <=225)then
|
|
-- anglez = 180
|
|
-- end
|
|
|
|
-- tempVector3:Set(0, 0, anglez)
|
|
-- tempRot.eulerAngles = tempVector3
|
|
-- self.PhotoCt.transform.localRotation = tempRot
|
|
|
|
local orginRatio = self.originWith / self.originHeight
|
|
local textureRatio = 0
|
|
-- if(anglez == 90 or anglez == 270)then
|
|
-- textureRatio = texture.height / texture.width
|
|
-- else
|
|
textureRatio = texture.width / texture.height
|
|
-- end
|
|
local wRatio = math.min(orginRatio,textureRatio) == orginRatio
|
|
local height = self.originHeight
|
|
local width = self.originWith
|
|
if(wRatio)then
|
|
height = self.originWith/textureRatio
|
|
else
|
|
width = self.originHeight*textureRatio
|
|
end
|
|
|
|
-- if(anglez == 90 or anglez == 270)then
|
|
-- self.photo.width = height
|
|
-- self.photo.height = width
|
|
-- else
|
|
self.photo.width = width
|
|
self.photo.height = height
|
|
-- end
|
|
Object.DestroyImmediate(self.photo.mainTexture)
|
|
self.photo.mainTexture = texture
|
|
end
|
|
|
|
function WeddingWallPictureDetail:getPhoto( )
|
|
-- body
|
|
if(self.serverData)then
|
|
local photoData = self.serverData.photoData
|
|
local bytes = Game.WeddingWallPicManager:GetBytes(photoData)
|
|
if(bytes)then
|
|
self:completeCallbackBytes(bytes)
|
|
else
|
|
local tBytes
|
|
local thumbnail = true
|
|
if(photoData.source == ProtoCommon_pb.ESOURCE_PHOTO_SCENERY)then
|
|
if(photoData.isBelongAccPic)then
|
|
tBytes = UnionWallPhotoNew.Ins():TryGetThumbnailFromLocal_ScenicSpot_Account(photoData.charid,photoData.sourceid,photoData.time)
|
|
else
|
|
tBytes = UnionWallPhotoNew.Ins():TryGetThumbnailFromLocal_ScenicSpot(photoData.charid,photoData.sourceid,photoData.time)
|
|
end
|
|
elseif(photoData.source == ProtoCommon_pb.ESOURCE_PHOTO_SELF)then
|
|
tBytes = UnionWallPhotoNew.Ins():TryGetThumbnailFromLocal_Personal(photoData.charid,photoData.sourceid,photoData.time)
|
|
end
|
|
if(tBytes)then
|
|
self:completeCallback(tBytes,thumbnail)
|
|
elseif(serverData and serverData.texture)then
|
|
self:completeCallbackThumbnailTexture(serverData.texture)
|
|
end
|
|
Game.WeddingWallPicManager:tryGetOriginImage(photoData)
|
|
end
|
|
end
|
|
end
|
|
|
|
function WeddingWallPictureDetail:completeCallbackBytes(bytes )
|
|
-- body
|
|
local texture = Texture2D(0,0,TextureFormat.RGB24,false)
|
|
local bRet = ImageConversion.LoadImage(texture, bytes)
|
|
if( bRet)then
|
|
self:setTexture(texture)
|
|
else
|
|
Object.DestroyImmediate(texture)
|
|
end
|
|
end
|
|
|
|
function WeddingWallPictureDetail:completeCallbackThumbnailTexture(texture )
|
|
-- body
|
|
local texture = Texture2D(0,0,TextureFormat.RGB24,false)
|
|
texture:LoadRawTextureData(texture:GetRawTextureData())
|
|
texture:Apply()
|
|
self:setTexture(texture)
|
|
end
|
|
|
|
function WeddingWallPictureDetail:progressCallback( progress )
|
|
-- body
|
|
self:Show(self.progress.gameObject)
|
|
progress = progress >=1 and 1 or progress
|
|
local value = progress*100
|
|
value = math.floor(value)
|
|
self.progress.text = value.."%"
|
|
end
|
|
|
|
function WeddingWallPictureDetail:completeCallback(bytes,thumbnail )
|
|
-- body
|
|
helplog("WeddingWallPictureDetail:completeCallback(bytes,thumbnail )",tostring(thumbnail))
|
|
if(not thumbnail)then
|
|
self:Hide(self.progress.gameObject)
|
|
end
|
|
self.isThumbnail = thumbnail
|
|
if(bytes)then
|
|
local texture = Texture2D(0,0,TextureFormat.RGB24,false)
|
|
local bRet = ImageConversion.LoadImage(texture, bytes)
|
|
helplog("WeddingWallPictureDetail:completeCallback(bytes,thumbnail )",tostring(bRet),tostring(texture))
|
|
if( bRet)then
|
|
self:setTexture(texture)
|
|
if(not thumbnail)then
|
|
Game.WeddingWallPicManager:addOriginBytesBySceneryId(self.serverData.photoData,bytes)
|
|
end
|
|
else
|
|
Object.DestroyImmediate(texture)
|
|
end
|
|
end
|
|
end
|
|
|
|
function WeddingWallPictureDetail:OnExit( )
|
|
-- body
|
|
LeanTween.cancel(self.gameObject)
|
|
Object.DestroyImmediate(self.photo.mainTexture)
|
|
PhotoDataProxy.Instance:clearToSeeDatas()
|
|
end
|
|
|
|
function WeddingWallPictureDetail:GetItemCellById(photoData)
|
|
local cells = self:GetItemCells()
|
|
if(cells and #cells>0)then
|
|
for i=1,#cells do
|
|
local single = cells[i]
|
|
if(single.data)then
|
|
if(Game.WeddingWallPicManager:checkSamePicture(single.data,photoData))then
|
|
return single
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function WeddingWallPictureDetail:GetItemCells()
|
|
return self.wraplist:GetCellCtls();
|
|
end |