/*
IncallActivity.java
Copyright (C) 2011 Belledonne Communications, Grenoble, France
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package org.linphone;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import net.chrislehmann.linphone.R;
import org.linphone.ui.HangCallButton;
import java.util.Timer;
import java.util.TimerTask;
public class IncallActivity extends SoftVolumeActivity implements OnClickListener {
public static final String CONTACT_KEY = "contact";
public static final String PICTURE_URI_KEY = "picture_uri";
private View numpadClose;
private View numpadShow;
private View numpad;
private View buttonsZone;
private HangCallButton hangButton;
private Timer timer = new Timer();
private TimerTask task;
private TextView elapsedTime;
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.incall_view);
numpad = findViewById(R.id.incallDialer);
buttonsZone = findViewById(R.id.incallButtonsZone);
numpadClose = findViewById(R.id.incallNumpadClose);
numpadClose.setOnClickListener(this);
numpadShow = findViewById(R.id.incallNumpadShow);
numpadShow.setOnClickListener(this);
hangButton = (HangCallButton) findViewById(R.id.incallHang);
hangButton.setOnClickListener(this);
if (!PreferenceManager.getDefaultSharedPreferences(this)
.getBoolean(getString(R.string.pref_video_enable_key), false)) {
findViewById(R.id.AddVideo).setVisibility(View.GONE);
}
TextView contact = (TextView) findViewById(R.id.incallContactName);
if (getIntent().getExtras() != null) {
contact.setText(getIntent().getExtras().getCharSequence(CONTACT_KEY));
} else {
contact.setVisibility(View.GONE);
}
elapsedTime = (TextView) findViewById(R.id.incallElapsedTime);
}
public void onClick(View v) {
if (v == numpadClose) {
numpad.setVisibility(View.GONE);
numpadClose.setVisibility(View.GONE);
buttonsZone.setVisibility(View.VISIBLE);
} else if (v == numpadShow) {
buttonsZone.setVisibility(View.GONE);
numpad.setVisibility(View.VISIBLE);
numpadClose.setVisibility(View.VISIBLE);
} else if (v == hangButton) {
hangButton.onClick(v);
finish();
}
}
@Override
protected void onResume() {
super.onResume();
task = new TimerTask() {
@Override
public void run() {
if (!LinphoneManager.getLc().isIncall()) return;
final int duration = LinphoneManager.getLc().getCurrentCall().getDuration();
if (duration == 0) return;
handler.post(new Runnable() {
public void run() {
elapsedTime.setText(String.valueOf(duration));
}
});
}
};
timer.scheduleAtFixedRate(task, 0, 1000);
}
@Override
protected void onPause() {
super.onPause();
if (task != null) {
task.cancel();
task = null;
}
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
startActivity(new Intent()
.setAction(Intent.ACTION_MAIN)
.addCategory(Intent.CATEGORY_HOME));
return true;
} else {
return super.onKeyUp(keyCode, event);
}
}
}