blob: 793d78404357e6fef4d82bba1db75af9a492382e [file] [log] [blame]
/*
* Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
package org.webrtc.webrtcdemo;
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MainMenuFragment extends Fragment implements MediaEngineObserver {
private String TAG;
private MenuStateProvider stateProvider;
private Button btStartStopCall;
private TextView tvStats;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.mainmenu, container, false);
TAG = getResources().getString(R.string.tag);
Button btStats = (Button) v.findViewById(R.id.btStats);
boolean stats = getResources().getBoolean(R.bool.stats_enabled_default);
enableStats(btStats, stats);
btStats.setOnClickListener(new View.OnClickListener() {
public void onClick(View button) {
boolean turnOnStats = ((Button) button).getText().equals(
getResources().getString(R.string.statsOn));
enableStats((Button) button, turnOnStats);
}
});
tvStats = (TextView) v.findViewById(R.id.tvStats);
btStartStopCall = (Button) v.findViewById(R.id.btStartStopCall);
btStartStopCall.setText(getEngine().isRunning() ?
R.string.stopCall :
R.string.startCall);
btStartStopCall.setOnClickListener(new View.OnClickListener() {
public void onClick(View button) {
toggleStart();
}
});
return v;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception.
try {
stateProvider = (MenuStateProvider) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity +
" must implement MenuStateProvider");
}
}
// tvStats need to be updated on the UI thread.
public void newStats(final String stats) {
getActivity().runOnUiThread(new Runnable() {
public void run() {
tvStats.setText(stats);
}
});
}
private MediaEngine getEngine() {
return stateProvider.getEngine();
}
private void enableStats(Button btStats, boolean enable) {
if (enable) {
getEngine().setObserver(this);
} else {
getEngine().setObserver(null);
// Clear old stats text by posting empty stats.
newStats("");
}
// If stats was true it was just turned on. This means that
// clicking the button again should turn off stats.
btStats.setText(enable ? R.string.statsOff : R.string.statsOn);
}
public void toggleStart() {
if (getEngine().isRunning()) {
stopAll();
} else {
startCall();
}
btStartStopCall.setText(getEngine().isRunning() ?
R.string.stopCall :
R.string.startCall);
}
public void stopAll() {
getEngine().stop();
}
private void startCall() {
getEngine().start();
}
}