package org.zarroboogs.smartzpn.ui;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.FrameLayout;
import com.yalantis.guillotine.animation.GuillotineAnimation;
import com.yalantis.guillotine.interfaces.GuillotineListener;
import org.zarroboogs.smartzpn.R;
import org.zarroboogs.smartzpn.core.LocalVpnService;
import org.zarroboogs.smartzpn.core.SmartVpnService;
import org.zarroboogs.smartzpn.ui.widget.ProgressButton;
import org.zarroboogs.smartzpn.utils.TokenUtils;
public class MenuActivity extends AppCompatActivity implements View.OnClickListener, LocalVpnService.onStatusChangedListener {
private Toolbar mToolbar;
private ProgressButton mConnBtn;
private GuillotineAnimation mCuillotine;
private static final int START_VPN_SERVICE_REQUEST_CODE = 1985;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//透明导航栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
setContentView(R.layout.menu_activity);
mToolbar = (Toolbar) findViewById(R.id.toolbar);
if (mToolbar != null) {
setSupportActionBar(mToolbar);
getSupportActionBar().setTitle(null);
}
mConnBtn = (ProgressButton) findViewById(R.id.connectionBtn);
// if (LocalVpnService.IsRunning) {
// mConnBtn.setComplete();
// }
View guillotineMenu = LayoutInflater.from(this).inflate(R.layout.guillotine, null);
FrameLayout root = (FrameLayout) findViewById(R.id.root);
root.addView(guillotineMenu);
View closeView = findViewById(R.id.content_hamburger);
View openView = guillotineMenu.findViewById(R.id.guillotine_hamburger);
mCuillotine = new GuillotineAnimation.GuillotineBuilder(guillotineMenu, openView, closeView)
.setStartDelay(250)
.setActionBarViewForAnimation(mToolbar)
.setClosedOnStart(true)
.setGuillotineListener(new GuillotineListener() {
@Override
public void onGuillotineOpened() {
mConnBtn.setClickable(false);
}
@Override
public void onGuillotineClosed() {
mConnBtn.setClickable(true);
}
})
.build();
mConnBtn.setOnClickListener(this);
LocalVpnService.addOnStatusChangedListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.connectionBtn) {
// String prefix = getPackageName();
// Intent intent = new Intent(this, SmartVpnService.class)
// .putExtra(prefix + ".ADDRESS", "")
// .putExtra(prefix + ".PORT", "")
// .putExtra(prefix + ".SECRET", "");
// startService(intent);
if (true) {
mConnBtn.showProgress();
mConnBtn.setClickable(false);
Intent intent = LocalVpnService.prepare(this);
if (intent == null) {
startVPNService();
} else {
startActivityForResult(intent, START_VPN_SERVICE_REQUEST_CODE);
}
} else {
mConnBtn.showProgress();
LocalVpnService.Instance.disconnectVPN();
stopService(new Intent(MenuActivity.this, LocalVpnService.class));
System.runFinalization();
System.exit(0);
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == START_VPN_SERVICE_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
startVPNService();
} else {
mConnBtn.setIdle();
mConnBtn.setClickable(true);
onLogReceived("canceled.");
}
return;
}
super.onActivityResult(requestCode, resultCode, data);
}
private void startVPNService() {
String configUrl = TokenUtils.getSpec();
LocalVpnService.ConfigUrl = configUrl;
Intent intent = new Intent(this, LocalVpnService.class);
intent.putExtra("PROXY_URL", "https://qypac.net/19kwr8eq");
startService(intent);
}
@Override
public void onStatusChanged(String status, Boolean isRunning) {
mConnBtn.setClickable(true);
}
@Override
public void onLogReceived(String logString) {
}
@Override
public void onConnectionChanged(boolean isConn) {
mConnBtn.stopShowProgress();
if (isConn) {
mConnBtn.setComplete();
} else {
mConnBtn.setIdle();
}
}
@Override
public void onConnectionError() {
mConnBtn.stopShowProgress();
mConnBtn.setError();
}
@Override
protected void onDestroy() {
LocalVpnService.removeOnStatusChangedListener(this);
super.onDestroy();
}
}