package com.whf.messagerelayer.activity; import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.AsyncTask; import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.RelativeLayout; import android.widget.Switch; import android.widget.TextView; import android.widget.Toast; import com.whf.messagerelayer.R; import com.whf.messagerelayer.confing.Constant; import com.whf.messagerelayer.utils.EmailRelayerManager; import com.whf.messagerelayer.utils.NativeDataManager; public class EmailRelayerActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener, View.OnClickListener { private Switch mEmailSwitch, mSslSwitch; private RelativeLayout mLayoutAccount, mLayoutServicer, mLayoutAddress, mLayoutPort, mLayoutToAccount, mLayoutSenderName, mLayoutSubject; private TextView mTextAccount, mTextServicer, mTextAddress, mTextPort, mTextToAccount, mTextSenderName, mTextSubject; private View mAddressLine, mPortLine; private NativeDataManager mNativeDataManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_email_relayer); initActionbar(); this.mNativeDataManager = new NativeDataManager(this); initView(); initData(); initListener(); } private void initActionbar() { ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { finish(); } return super.onOptionsItemSelected(item); } private void initData() { String servecer = mNativeDataManager.getEmailServicer(); if (servecer.equals(Constant.EMAIL_SERVICER_OTHER)) { setAddressVisiable(); } else { setAddressGone(); } mEmailSwitch.setChecked(mNativeDataManager.getEmailRelay()); mSslSwitch.setChecked(mNativeDataManager.getEmailSsl()); mTextServicer.setText(servecer); mTextAccount.setText(mNativeDataManager.getEmailAccount()); mTextToAccount.setText(mNativeDataManager.getEmailToAccount()); mTextSenderName.setText(mNativeDataManager.getEmailSenderName()); mTextSubject.setText(mNativeDataManager.getEmailSubject()); } /** * 显示服务器和端口的设置 */ private void setAddressVisiable() { mLayoutAddress.setVisibility(View.VISIBLE); mLayoutPort.setVisibility(View.VISIBLE); mAddressLine.setVisibility(View.VISIBLE); mPortLine.setVisibility(View.VISIBLE); String host = mNativeDataManager.getEmailHost(); String port = mNativeDataManager.getEmailPort(); if (host != null) { mTextAddress.setText(host); } if (port != null) { mTextPort.setText(port); } } /** * 隐藏服务器和端口设置的 */ private void setAddressGone() { mLayoutAddress.setVisibility(View.GONE); mLayoutPort.setVisibility(View.GONE); mAddressLine.setVisibility(View.GONE); mPortLine.setVisibility(View.GONE); } private void initView() { mEmailSwitch = (Switch) findViewById(R.id.switch_email); mSslSwitch = (Switch) findViewById(R.id.switch_ssl); mLayoutServicer = (RelativeLayout) findViewById(R.id.layout_servicer); mLayoutAccount = (RelativeLayout) findViewById(R.id.layout_account); mLayoutAddress = (RelativeLayout) findViewById(R.id.layout_address); mLayoutPort = (RelativeLayout) findViewById(R.id.layout_port); mLayoutToAccount = (RelativeLayout) findViewById(R.id.layout_to_account); mLayoutSenderName = (RelativeLayout) findViewById(R.id.layout_sender_name); mLayoutSubject = (RelativeLayout) findViewById(R.id.layout_subject); mTextServicer = (TextView) findViewById(R.id.text_servicer); mTextAccount = (TextView) findViewById(R.id.text_account); mTextAddress = (TextView) findViewById(R.id.text_address); mTextPort = (TextView) findViewById(R.id.text_port); mTextToAccount = (TextView) findViewById(R.id.text_to_account); mTextSenderName = (TextView) findViewById(R.id.text_sender_name); mTextSubject = (TextView) findViewById(R.id.text_subject); mAddressLine = findViewById(R.id.line_address); mPortLine = findViewById(R.id.line_port); } private void initListener() { mLayoutServicer.setOnClickListener(this); mLayoutAccount.setOnClickListener(this); mLayoutAddress.setOnClickListener(this); mLayoutPort.setOnClickListener(this); mLayoutToAccount.setOnClickListener(this); mLayoutSenderName.setOnClickListener(this); mLayoutSubject.setOnClickListener(this); mEmailSwitch.setOnCheckedChangeListener(this); mSslSwitch.setOnCheckedChangeListener(this); } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { switch (buttonView.getId()) { case R.id.switch_email: mNativeDataManager.setEmailRelay(isChecked); break; case R.id.switch_ssl: mNativeDataManager.setEmailSsl(isChecked); break; } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.layout_servicer: showServicerDialog(); break; case R.id.layout_account: showAccountDialog(); break; case R.id.layout_address: showAddressDialog(); break; case R.id.layout_port: showPortDialog(); break; case R.id.layout_to_account: showToAccountDialog(); break; case R.id.layout_sender_name: showSenderNameDialog(); break; case R.id.layout_subject: showSubjectDialog(); break; } } private void showSubjectDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit, null, false); TextView textViewTitle = (TextView) view.findViewById(R.id.dialog_title); final EditText editText = (EditText) view.findViewById(R.id.dialog_edit); textViewTitle.setText("请输入邮件主题"); editText.setText(mNativeDataManager.getEmailSubject()); builder.setView(view); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mNativeDataManager.setEmailSubject(editText.getText().toString()); mTextAddress.setText(editText.getText().toString()); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.show(); } private void showSenderNameDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit, null, false); TextView textViewTitle = (TextView) view.findViewById(R.id.dialog_title); final EditText editText = (EditText) view.findViewById(R.id.dialog_edit); textViewTitle.setText("请输入发送方名称"); editText.setText(mNativeDataManager.getEmailSenderName()); builder.setView(view); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mNativeDataManager.setEmailSenderName(editText.getText().toString()); mTextAddress.setText(editText.getText().toString()); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.show(); } private void showServicerDialog() { final AlertDialog.Builder builder = new AlertDialog.Builder(this); View view = LayoutInflater.from(this).inflate(R.layout.dialog_email_servicer, null, false); builder.setView(view); final AlertDialog dialog = builder.show(); View.OnClickListener onClickListener = new View.OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.text_126_email: mNativeDataManager.setEmailServicer(Constant.EMAIL_SERVICER_126); mTextServicer.setText("126邮箱"); dialog.cancel(); setAddressGone(); break; case R.id.text_163_email: mNativeDataManager.setEmailServicer(Constant.EMAIL_SERVICER_163); mTextServicer.setText("163邮箱"); dialog.cancel(); setAddressGone(); break; case R.id.text_gmail_email: mNativeDataManager.setEmailServicer(Constant.EMAIL_SERVICER_GMAIL); mTextServicer.setText("Gmail"); dialog.cancel(); setAddressGone(); break; case R.id.text_other_email: mNativeDataManager.setEmailServicer(Constant.EMAIL_SERVICER_OTHER); mTextServicer.setText("其他邮箱"); dialog.cancel(); setAddressVisiable(); break; case R.id.text_qq_email: mNativeDataManager.setEmailServicer(Constant.EMAIL_SERVICER_QQ); mTextServicer.setText("QQ邮箱"); dialog.cancel(); setAddressGone(); break; case R.id.text_outlook_email: mNativeDataManager.setEmailServicer(Constant.EMAIL_SERVICER_OUTLOOK); mTextServicer.setText("OutLook"); dialog.cancel(); setAddressGone(); break; } } }; initServicerDialogView(onClickListener, view); } private View initServicerDialogView(View.OnClickListener onClickListener, View view) { TextView emailQq = (TextView) view.findViewById(R.id.text_qq_email); TextView emaill26 = (TextView) view.findViewById(R.id.text_126_email); TextView email163 = (TextView) view.findViewById(R.id.text_163_email); TextView emailOutlook = (TextView) view.findViewById(R.id.text_outlook_email); TextView emailGmail = (TextView) view.findViewById(R.id.text_gmail_email); TextView emailOther = (TextView) view.findViewById(R.id.text_other_email); email163.setOnClickListener(onClickListener); emailGmail.setOnClickListener(onClickListener); emaill26.setOnClickListener(onClickListener); emailOther.setOnClickListener(onClickListener); emailOutlook.setOnClickListener(onClickListener); emailQq.setOnClickListener(onClickListener); return view; } private void showAccountDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); View view = LayoutInflater.from(this).inflate(R.layout.dialog_email_account, null, false); builder.setView(view); final EditText textAccount = (EditText) view.findViewById(R.id.editText_account); final EditText textPassword = (EditText) view.findViewById(R.id.editText_password); String text = mTextAccount.getText().toString(); if (!text.equals("点击设置")) { textAccount.setText(text); textPassword.setText(mNativeDataManager.getEmailPassword()); } builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mNativeDataManager.setEmailAccount(textAccount.getText().toString()); mNativeDataManager.setEmailPassword(textPassword.getText().toString()); mTextAccount.setText(textAccount.getText()); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.show(); } private void showAddressDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit, null, false); TextView textViewTitle = (TextView) view.findViewById(R.id.dialog_title); final EditText editText = (EditText) view.findViewById(R.id.dialog_edit); textViewTitle.setText("请输入SMTP服务器地址"); String text = mTextAddress.getText().toString(); editText.setText(text); builder.setView(view); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mNativeDataManager.setEmailHost(editText.getText().toString()); mTextAddress.setText(editText.getText().toString()); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.show(); } private void showPortDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit, null, false); TextView textViewTitle = (TextView) view.findViewById(R.id.dialog_title); final EditText editText = (EditText) view.findViewById(R.id.dialog_edit); textViewTitle.setText("请输入SMTP端口号"); String text = mTextPort.getText().toString(); editText.setText(text); builder.setView(view); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mNativeDataManager.setEmailPort(editText.getText().toString()); mTextPort.setText(editText.getText().toString()); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.show(); } private void showToAccountDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); View view = LayoutInflater.from(this).inflate(R.layout.dialog_edit, null, false); TextView textViewTitle = (TextView) view.findViewById(R.id.dialog_title); final EditText editText = (EditText) view.findViewById(R.id.dialog_edit); textViewTitle.setText("请输入目标邮箱账号"); String text = mTextToAccount.getText().toString(); if (!text.equals("点击设置")) { editText.setText(text); } builder.setView(view); final AlertDialog.Builder progressBuilder = new AlertDialog.Builder(this); progressBuilder.setView(LayoutInflater.from(this).inflate(R.layout.dialog_progress,null,false)); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mNativeDataManager.setEmailToAccount(editText.getText().toString()); mTextToAccount.setText(editText.getText()); } }); builder.setNeutralButton("测试", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { final AlertDialog progressDialog = progressBuilder.show(); new AsyncTask<Void, Void, Integer>() { @Override protected Integer doInBackground(Void... params) { return EmailRelayerManager.relayEmail(mNativeDataManager, "配置正确!"); } @Override protected void onPostExecute(Integer integer) { progressDialog.cancel(); if (integer == EmailRelayerManager.CODE_SUCCESS) { mNativeDataManager.setEmailToAccount(editText.getText().toString()); mTextToAccount.setText(editText.getText()); Toast.makeText(EmailRelayerActivity.this, "邮箱配置正确", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(EmailRelayerActivity.this, "邮箱配置有误", Toast.LENGTH_SHORT).show(); } } }.execute(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.show(); } }