/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.hangout;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.android.ui.view.Thermometer;
import com.galaxy.meetup.client.util.Utils;
/**
*
* @author sihai
*
*/
public class HangoutVideoView extends RelativeLayout {
private final View mAudiodMutedStatusView;
private final ImageView mAvatarView;
private final ImageView mBackgoundLogo;
private final View mBlockedView;
private final View mCameraErrorView;
private final Rect mDispSize = new Rect();
private final Display mDisplay = ((WindowManager)getContext().getSystemService("window")).getDefaultDisplay();
private final ImageButton mFlashToggleButton;
private HangoutTile mHangoutTile;
private LayoutMode mLayoutMode;
private final View mPausedView;
private final View mPinnedStatusView;
private RelativeLayout mRootView;
private final ImageView mSnapshotView;
private View mVideoSurface;
private final Thermometer mVolumeBar;
public HangoutVideoView(Context context, AttributeSet attributeset)
{
super(context, attributeset);
LayoutInflater.from(context).inflate(R.layout.hangout_video_view, this, true);
mAvatarView = (ImageView)findViewById(R.id.hangout_video_avatar);
mBlockedView = findViewById(R.id.hangout_video_blocked);
mPausedView = findViewById(R.id.hangout_video_paused);
mCameraErrorView = findViewById(R.id.hangout_camera_error);
mFlashToggleButton = (ImageButton)findViewById(R.id.hangout_toggle_flash_light_button);
mBackgoundLogo = (ImageView)findViewById(R.id.hangout_background_logo);
mSnapshotView = (ImageView)findViewById(R.id.hangout_video_snapshot);
mRootView = (RelativeLayout)findViewById(R.id.hangout_video_view);
mAudiodMutedStatusView = findViewById(R.id.hangout_audio_muted_status);
mPinnedStatusView = findViewById(R.id.hangout_pinned_status);
mVolumeBar = (Thermometer)findViewById(R.id.hangout_volume);
mLayoutMode = LayoutMode.FIT;
setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -2));
}
public final ImageView getAvatarView()
{
return mAvatarView;
}
public Bitmap getBitmap()
{
return null;
}
public MeetingMember getCurrentVideoSource()
{
return null;
}
public final ImageButton getFlashToggleButton()
{
return mFlashToggleButton;
}
public final ImageView getSnapshotView()
{
return mSnapshotView;
}
public final void hideAudioMutedStatus()
{
mAudiodMutedStatusView.setVisibility(8);
}
public final void hideAvatar()
{
mAvatarView.setVisibility(8);
}
public final void hideBlocked()
{
mBlockedView.setVisibility(8);
}
public final void hideLogo()
{
mBackgoundLogo.setVisibility(8);
}
public final void hidePaused()
{
mPausedView.setVisibility(8);
}
public final void hidePinnedStatus()
{
mPinnedStatusView.setVisibility(8);
}
public final void hideVideoSurface()
{
mVideoSurface.setVisibility(8);
}
public final void hideVolumeBar()
{
mVolumeBar.setVisibility(8);
}
public final boolean isAudioMuteStatusShowing()
{
boolean flag;
if(mAudiodMutedStatusView.getVisibility() == 0)
flag = true;
else
flag = false;
return flag;
}
public final boolean isHangoutTileStarted()
{
boolean flag;
if(mHangoutTile != null && mHangoutTile.isTileStarted())
flag = true;
else
flag = false;
return flag;
}
public boolean isVideoShowing()
{
return false;
}
protected final void layoutVideo(int i, int j, int k, int l) {
RectangleDimensions rectangledimensions = null;
if(LayoutMode.FILL == mLayoutMode) {
rectangledimensions = new RectangleDimensions(k, l);
} else if(LayoutMode.FIT == mLayoutMode) {
if(j == 0)
rectangledimensions = new RectangleDimensions(k, l);
else
rectangledimensions = Utils.fitContentInContainer((double)i / (double)j, k, l);
} else {
Log.error((new StringBuilder("Unknown layout mode: ")).append(mLayoutMode).toString());
return;
}
android.widget.RelativeLayout.LayoutParams layoutparams = (android.widget.RelativeLayout.LayoutParams)mVideoSurface.getLayoutParams();
layoutparams.width = rectangledimensions.width;
layoutparams.height = rectangledimensions.height;
mVideoSurface.setLayoutParams(layoutparams);
Object aobj[] = new Object[8];
aobj[0] = mLayoutMode.toString();
aobj[1] = Integer.valueOf(i);
aobj[2] = Integer.valueOf(j);
aobj[3] = Integer.valueOf(k);
aobj[4] = Integer.valueOf(l);
aobj[5] = Integer.valueOf(rectangledimensions.width);
aobj[6] = Integer.valueOf(rectangledimensions.height);
aobj[7] = toString();
Log.debug("HangoutVideo.layout: mode=%s video=%d,%d parent=%d,%d new dimensions=%d,%d self=%s", aobj);
}
public void onMeasure(int i, int j)
{
int k = getPaddingLeft() + getPaddingRight();
int l = getPaddingTop() + getPaddingBottom();
int i1 = android.view.View.MeasureSpec.getSize(i) - k;
int j1 = android.view.View.MeasureSpec.getSize(j) - l;
if(i1 <= 0 || j1 <= 0)
{
mDisplay.getRectSize(mDispSize);
if(i1 <= 0)
i1 = mDispSize.width() - k;
if(j1 <= 0)
j1 = mDispSize.height() - l;
}
onMeasure(i1, j1);
super.onMeasure(i, j);
}
public void setBackgroundViewColor(int i)
{
mRootView.setBackgroundColor(i);
}
public final void setHangoutTile(HangoutTile hangouttile)
{
mHangoutTile = hangouttile;
}
public final void setLayoutMode(LayoutMode layoutmode)
{
mLayoutMode = layoutmode;
requestLayout();
}
public final void setVideoSurface(View view)
{
if(mVideoSurface != null)
mRootView.removeView(mVideoSurface);
mVideoSurface = view;
int i;
if(mRootView.getChildCount() > 0)
i = 1;
else
i = 0;
mRootView.addView(mVideoSurface, i);
invalidate();
requestLayout();
}
public void setVolume(int i)
{
if(i < 0)
i = 0;
if(i > 9)
i = 9;
mVolumeBar.setFillLevel((double)i / 9D);
}
public final void showAudioMutedStatus()
{
mAudiodMutedStatusView.setVisibility(0);
}
public final void showAvatar()
{
if(!mSnapshotView.isShown())
mAvatarView.setVisibility(0);
}
public final void showBlocked()
{
mBlockedView.setVisibility(0);
}
public final void showCameraError()
{
mCameraErrorView.setVisibility(0);
}
public final void showPaused()
{
mPausedView.setVisibility(0);
}
public final void showPinnedStatus()
{
mPinnedStatusView.setVisibility(0);
}
public final void showVideoSurface()
{
mVideoSurface.setVisibility(0);
}
public final void showVolumeBar()
{
mVolumeBar.setVisibility(0);
}
public static enum LayoutMode {
FILL,
FIT;
}
}