ActivityPrinterSetting.java 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586
  1. package epson.print.screen;
  2. import android.app.AlertDialog;
  3. import android.content.Context;
  4. import android.content.DialogInterface;
  5. import android.content.Intent;
  6. import android.os.AsyncTask;
  7. import android.os.Bundle;
  8. import android.os.Handler;
  9. import android.os.Message;
  10. import android.text.Editable;
  11. import android.text.TextWatcher;
  12. import android.view.Menu;
  13. import android.view.MenuItem;
  14. import android.view.View;
  15. import android.widget.Button;
  16. import android.widget.EditText;
  17. import android.widget.FrameLayout;
  18. import android.widget.LinearLayout;
  19. import android.widget.TextView;
  20. import com.epson.mobilephone.common.wifidirect.WiFiDirectManager;
  21. import java.util.Locale;
  22. import java.util.regex.Matcher;
  23. import java.util.regex.Pattern;
  24. import epson.common.Constants;
  25. import epson.print.ActivityIACommon;
  26. import epson.print.EPImage;
  27. import epson.print.EPPrinterInfo;
  28. import epson.print.EPPrinterManager;
  29. import epson.print.IprintApplication;
  30. import epson.print.MyPrinter;
  31. import epson.print.R;
  32. import epson.print.Util.EPLog;
  33. import epson.print.ecclient.EccErrorInfo;
  34. import epson.print.ecclient.EpsonConnectAccess;
  35. import epson.print.widgets.CustomTitleAlertDialogBuilder;
  36. public class ActivityPrinterSetting extends ActivityIACommon implements View.OnClickListener, StringListSelectDialog.OnItemSelectedListener {
  37. private static final String DIALOG_TAG_DOMAIN_SELECT = "domain-select-dialog";
  38. public static final String KEY_MYPRINTER = "my_printer";
  39. private static final String MAIL_DOMAIN_CHINA = "print.rpt.epson.com.cn";
  40. private static final int REQUEST_CODE_PRINTER = 0;
  41. private final int ACCESS_KEY_MAX_SIZE = 32;
  42. private final int ACCESS_KEY_MIN_SIZE = 6;
  43. private final int CLEAR_ACCESS_KEY = 3;
  44. private final int CLEAR_EMAIL_ADDRESS = 2;
  45. private final int CLEAR_PRINTER_NAME = 1;
  46. private final int EMAIL_ADDRESS_MAX_SIZE = EPImage.EPS_ROTATE_180;
  47. private final int ERROR_GET_INFO_FROM_PRINTER = -1;
  48. private final int ERROR_PRINTER_ALREADY_REGISTERED = -5;
  49. private final int ERROR_PRINTER_EMAIL_ADDRESS_EMPTY = -4;
  50. private final int ERROR_PRINTER_NAME_EMPTY = -2;
  51. private final int ERROR_PRINTER_NAME_OVER_MAX_LENGTH = -3;
  52. private final int FINISH = 7;
  53. private final String MAIL_DOMAIN_NAME;
  54. private final int NOT_SUPPORTED_REMOTE_PRINT = 2;
  55. private final int PRINTER_NAME_MAX_SIZE = 63;
  56. private final int SAVE_DONE = 5;
  57. private final int SHOW_ERROR_MESSAGE = 6;
  58. private final int SUPPORTED_REMOTE_PRINT = 1;
  59. private final int UPDATE_ACCESSKEY_LAYOUT = 4;
  60. private EditText accessKeyEdit = null;
  61. private FrameLayout accessKeyLayout = null;
  62. private TextView accessKeyText = null;
  63. private Bundle bundle = null;
  64. private Button clearAccessKeyButton = null;
  65. private Button clearPrinterEmailAddressButton = null;
  66. private Button clearPrinterNameButton = null;
  67. private Context context = null;
  68. private LinearLayout getprinterAdress = null;
  69. private LinearLayout getprinterAdressLink = null;
  70. Handler mHandler;
  71. private LocalTextWatcher mLocalTextWatcher;
  72. MyPrinter mMyPrinter;
  73. private String oldPrinterEmailAddress = "";
  74. private String printerAccessKey = "";
  75. private String printerEmailAddress = "";
  76. private EditText printerEmailAddressEdit = null;
  77. private TextView printerEmailText = null;
  78. private String printerName = "";
  79. private EditText printerNameEdit = null;
  80. private FrameLayout printerNameLayout = null;
  81. private TextView printerNameText = null;
  82. public ActivityPrinterSetting() {
  83. if (IprintApplication.isConnectStaging()) {
  84. MAIL_DOMAIN_NAME = "stg-print.epsonconnect.com";
  85. } else {
  86. MAIL_DOMAIN_NAME = "print.epsonconnect.com";
  87. }
  88. mHandler = new Handler(new Handler.Callback() {
  89. public boolean handleMessage(Message message) {
  90. switch (message.what) {
  91. case 1:
  92. printerNameEdit.setText("");
  93. return true;
  94. case 2:
  95. printerEmailAddressEdit.setText("");
  96. return true;
  97. case 3:
  98. accessKeyEdit.setText("");
  99. return true;
  100. case 4:
  101. accessKeyText.setVisibility(message.arg1);
  102. accessKeyLayout.setVisibility(message.arg1);
  103. accessKeyEdit.requestFocus();
  104. return true;
  105. case 5:
  106. new setRemotePrintTask().execute(new Void[0]);
  107. return true;
  108. case 6:
  109. if (message.arg1 == 0) {
  110. return true;
  111. }
  112. showErrorMessage(message.arg1);
  113. return true;
  114. case 7:
  115. Intent intent = new Intent();
  116. intent.putExtra(ActivityPrinterSetting.KEY_MYPRINTER, mMyPrinter);
  117. setResult(-1, intent);
  118. finish();
  119. return true;
  120. default:
  121. return true;
  122. }
  123. }
  124. });
  125. }
  126. public void onCreate(Bundle bundle2) {
  127. super.onCreate(bundle2);
  128. getWindow().setSoftInputMode(3);
  129. setContentView((int) R.layout.epsonconnect_printer_setting_layout);
  130. context = this;
  131. setActionBar((int) R.string.epsonconnect_str_regist_printer, true);
  132. printerNameText = (TextView) findViewById(R.id.printer_name_text);
  133. printerNameEdit = (EditText) findViewById(R.id.printer_name_edit);
  134. clearPrinterNameButton = (Button) findViewById(R.id.clear_printer_name_btn);
  135. printerNameLayout = (FrameLayout) findViewById(R.id.printer_name_layout);
  136. printerEmailText = (TextView) findViewById(R.id.printer_email_text);
  137. printerEmailAddressEdit = (EditText) findViewById(R.id.printer_email_address_edit);
  138. clearPrinterEmailAddressButton = (Button) findViewById(R.id.clear_printer_email_address_btn);
  139. accessKeyText = (TextView) findViewById(R.id.access_key_text);
  140. accessKeyLayout = (FrameLayout) findViewById(R.id.access_key_layout);
  141. accessKeyEdit = (EditText) findViewById(R.id.access_key_edit);
  142. clearAccessKeyButton = (Button) findViewById(R.id.clear_access_key_btn);
  143. getprinterAdress = (LinearLayout) findViewById(R.id.get_mailadress);
  144. getprinterAdressLink = (LinearLayout) findViewById(R.id.rlPrinterSettings);
  145. clearPrinterNameButton.setOnClickListener(this);
  146. clearPrinterEmailAddressButton.setOnClickListener(this);
  147. clearAccessKeyButton.setOnClickListener(this);
  148. getprinterAdressLink.setOnClickListener(this);
  149. mLocalTextWatcher = new LocalTextWatcher();
  150. printerEmailAddressEdit.addTextChangedListener(mLocalTextWatcher);
  151. printerNameText.setVisibility(8);
  152. printerNameLayout.setVisibility(8);
  153. accessKeyText.setVisibility(8);
  154. accessKeyLayout.setVisibility(8);
  155. Intent intent = getIntent();
  156. if (intent != null) {
  157. bundle = intent.getExtras();
  158. Bundle bundle3 = bundle;
  159. if (bundle3 != null) {
  160. printerEmailAddress = bundle3.getString(Constants.PRINTER_EMAIL_ADDRESS);
  161. String str = printerEmailAddress;
  162. if (str == null || str.equals("")) {
  163. printerEmailAddress = "";
  164. printerEmailText.setText(R.string.epsonconnect_str_remote_print_email_address_warning);
  165. }
  166. printerEmailAddressEdit.setText(printerEmailAddress);
  167. String str2 = printerEmailAddress;
  168. oldPrinterEmailAddress = str2;
  169. if (!str2.equals("")) {
  170. EPPrinterInfo loadRemotePrinterInfo = new EPPrinterManager(this).loadRemotePrinterInfo(printerEmailAddress);
  171. if (loadRemotePrinterInfo != null) {
  172. printerName = loadRemotePrinterInfo.userDefName;
  173. if (printerName == null) {
  174. printerName = loadRemotePrinterInfo.printerName;
  175. }
  176. printerNameEdit.setText(printerName);
  177. printerNameText.setVisibility(0);
  178. printerNameLayout.setVisibility(0);
  179. printerAccessKey = loadRemotePrinterInfo.printerAccessKey;
  180. if (!printerAccessKey.equals("")) {
  181. accessKeyEdit.setText(printerAccessKey);
  182. accessKeyText.setVisibility(0);
  183. accessKeyLayout.setVisibility(0);
  184. }
  185. getprinterAdress.setVisibility(8);
  186. }
  187. printerEmailText.setText(R.string.epsonconnect_str_print_email);
  188. setTitle(getString(R.string.epsonconnect_str_edit_printer));
  189. }
  190. }
  191. }
  192. }
  193. private void showMailDomainSelectDialog() {
  194. StringListSelectDialog.newInstance(new String[]{this.MAIL_DOMAIN_NAME, MAIL_DOMAIN_CHINA}).show(getSupportFragmentManager(), DIALOG_TAG_DOMAIN_SELECT);
  195. }
  196. public void onClick(View view) {
  197. int id = view.getId();
  198. if (id == R.id.clear_printer_name_btn) {
  199. mHandler.sendEmptyMessage(1);
  200. } else if (id == R.id.clear_printer_email_address_btn) {
  201. mHandler.sendEmptyMessage(2);
  202. } else if (id == R.id.clear_access_key_btn) {
  203. mHandler.sendEmptyMessage(3);
  204. } else if (id == R.id.save_button) {
  205. if (printerNameLayout.getVisibility() == 0) {
  206. printerName = printerNameEdit.getText().toString();
  207. if (printerName.length() <= 0) {
  208. Message message = new Message();
  209. message.what = 6;
  210. message.arg1 = -2;
  211. mHandler.sendMessage(message);
  212. return;
  213. } else if (printerName.length() > 63) {
  214. Message message2 = new Message();
  215. message2.what = 6;
  216. message2.arg1 = -3;
  217. mHandler.sendMessage(message2);
  218. return;
  219. }
  220. }
  221. printerEmailAddress = printerEmailAddressEdit.getText().toString();
  222. if (printerEmailAddress.length() <= 0) {
  223. Message message3 = new Message();
  224. message3.what = 6;
  225. message3.arg1 = -4;
  226. mHandler.sendMessage(message3);
  227. } else if (printerEmailAddress.length() > 180) {
  228. Message message4 = new Message();
  229. message4.what = 6;
  230. message4.arg1 = -1203;
  231. mHandler.sendMessage(message4);
  232. } else if (oldPrinterEmailAddress.equals(printerEmailAddress) || isEnableRegistPrinter(printerEmailAddress)) {
  233. printerAccessKey = accessKeyEdit.getText().toString();
  234. if (((accessKeyLayout.getVisibility() != 0 || printerAccessKey.length() >= 6) && printerAccessKey.length() <= 32) || printerAccessKey.length() == 0) {
  235. mHandler.sendEmptyMessage(5);
  236. return;
  237. }
  238. Message message5 = new Message();
  239. message5.what = 6;
  240. message5.arg1 = -1203;
  241. mHandler.sendMessage(message5);
  242. } else {
  243. Message message6 = new Message();
  244. message6.what = 6;
  245. message6.arg1 = -5;
  246. mHandler.sendMessage(message6);
  247. }
  248. } else if (id == R.id.rlPrinterSettings) {
  249. Intent intent = new Intent(this, PrinterFinder.class);
  250. Bundle bundle2 = new Bundle();
  251. bundle2.putString(Constants.PRINTER_NAME, "");
  252. intent.putExtras(bundle2);
  253. startActivityForResult(intent, 0);
  254. }
  255. }
  256. private void onDone() {
  257. if (printerNameLayout.getVisibility() == 0) {
  258. printerName = printerNameEdit.getText().toString();
  259. if (printerName.length() <= 0) {
  260. Message message = new Message();
  261. message.what = 6;
  262. message.arg1 = -2;
  263. mHandler.sendMessage(message);
  264. return;
  265. } else if (printerName.length() > 63) {
  266. Message message2 = new Message();
  267. message2.what = 6;
  268. message2.arg1 = -3;
  269. mHandler.sendMessage(message2);
  270. return;
  271. }
  272. }
  273. printerEmailAddress = printerEmailAddressEdit.getText().toString();
  274. if (printerEmailAddress.length() <= 0) {
  275. Message message3 = new Message();
  276. message3.what = 6;
  277. message3.arg1 = -4;
  278. mHandler.sendMessage(message3);
  279. } else if (printerEmailAddress.length() > 180) {
  280. Message message4 = new Message();
  281. message4.what = 6;
  282. message4.arg1 = -1203;
  283. mHandler.sendMessage(message4);
  284. } else if (oldPrinterEmailAddress.equals(printerEmailAddress) || isEnableRegistPrinter(printerEmailAddress)) {
  285. printerAccessKey = accessKeyEdit.getText().toString();
  286. if (((accessKeyLayout.getVisibility() != 0 || printerAccessKey.length() >= 6) && printerAccessKey.length() <= 32) || printerAccessKey.length() == 0) {
  287. mHandler.sendEmptyMessage(5);
  288. return;
  289. }
  290. Message message5 = new Message();
  291. message5.what = 6;
  292. message5.arg1 = -1203;
  293. mHandler.sendMessage(message5);
  294. } else {
  295. Message message6 = new Message();
  296. message6.what = 6;
  297. message6.arg1 = -5;
  298. mHandler.sendMessage(message6);
  299. }
  300. }
  301. public void onBackPressed() {
  302. setResult(18);
  303. finish();
  304. }
  305. public void showErrorMessage(int i) {
  306. String str;
  307. String str2;
  308. if (i == -1100) {
  309. str = getString(R.string.EC_ERR_COMM_ERROR_TITLE);
  310. str2 = getString(R.string.EC_ERR_COMM_ERROR);
  311. } else if (i != 2) {
  312. switch (i) {
  313. case EccErrorInfo.ECC_ERR_SVR_HTTP_NOT_FOUND:
  314. case EccErrorInfo.ECC_ERR_SVR_BUSY:
  315. String string = getString(R.string.ECC_ERR_SVR_BUSY_TITLE);
  316. str2 = getString(R.string.ECC_ERR_SVR_BUSY) + "0X" + Integer.toHexString(i).toUpperCase() + getString(R.string.ECC_ERR_SVR_BUSY2);
  317. str = string;
  318. break;
  319. default:
  320. switch (i) {
  321. case -1203:
  322. str = getString(R.string.ECC_ERR_SVR_INVALID_ACCESSKEY_TITLE);
  323. str2 = getString(R.string.ECC_ERR_SVR_INVALID_ACCESSKEY);
  324. break;
  325. case -1202:
  326. str = getString(R.string.ECC_ERR_SVR_REMOTE_INVALID_TITLE);
  327. str2 = getString(R.string.ECC_ERR_SVR_REMOTE_INVALID);
  328. break;
  329. case -1201:
  330. str = getString(R.string.ECC_ERR_SVR_NOT_REGISTERED_TITLE);
  331. str2 = getString(R.string.ECC_ERR_SVR_NOT_REGISTERED);
  332. break;
  333. default:
  334. switch (i) {
  335. case -5:
  336. str = "";
  337. str2 = getString(R.string.epsonconnect_str_remote_print_email_address_already_registered);
  338. break;
  339. case -4:
  340. str = "";
  341. str2 = getString(R.string.epsonconnect_str_remote_print_email_address_warning);
  342. break;
  343. case -3:
  344. str = "";
  345. str2 = getString(R.string.epsonconnect_str_printer_name_error_over_max_length);
  346. break;
  347. case -2:
  348. str = "";
  349. str2 = getString(R.string.epsonconnect_str_printer_name_error_empty);
  350. break;
  351. case -1:
  352. str = getString(R.string.epsonconnect_str_error_get_info_from_printer_title);
  353. str2 = getString(R.string.epsonconnect_str_error_get_info_from_printer);
  354. break;
  355. default:
  356. str = getString(R.string.ECC_ERR_SVR_GENERAL_TITLE);
  357. str2 = getString(R.string.ECC_ERR_SVR_GENERAL4);
  358. break;
  359. }
  360. }
  361. }
  362. } else {
  363. str = "";
  364. str2 = getString(R.string.epsonconnect_str_not_supported_remote_print);
  365. }
  366. if (str.length() > 0) {
  367. new CustomTitleAlertDialogBuilder(context).setCancelable(false).setTitle(str).setMessage(str2).setPositiveButton(getString(R.string.str_ok), new DialogInterface.OnClickListener() {
  368. public void onClick(DialogInterface dialogInterface, int i) {
  369. }
  370. }).show();
  371. } else {
  372. new AlertDialog.Builder(context).setCancelable(false).setMessage(str2).setPositiveButton(getString(R.string.str_ok), new DialogInterface.OnClickListener() {
  373. public void onClick(DialogInterface dialogInterface, int i) {
  374. }
  375. }).show();
  376. }
  377. }
  378. private boolean isEnableRegistPrinter(String str) {
  379. return new EPPrinterManager(this).loadRemotePrinterInfo(str) == null;
  380. }
  381. public void savePrinterInfo(EpsonConnectAccess.RemotePrinterInfo remotePrinterInfo) {
  382. EPPrinterManager ePPrinterManager = new EPPrinterManager(this);
  383. EPPrinterInfo loadRemotePrinterInfo = ePPrinterManager.loadRemotePrinterInfo(printerEmailAddress);
  384. if (loadRemotePrinterInfo == null) {
  385. loadRemotePrinterInfo = new EPPrinterInfo();
  386. }
  387. if (printerName.length() <= 0) {
  388. printerName = remotePrinterInfo.mPrinterName;
  389. if (printerName == null) {
  390. printerName = "";
  391. }
  392. }
  393. loadRemotePrinterInfo.printerName = remotePrinterInfo.mDeviceId;
  394. loadRemotePrinterInfo.printerID = "";
  395. loadRemotePrinterInfo.printerIP = "";
  396. loadRemotePrinterInfo.printerSerialNo = remotePrinterInfo.mSerialNumber;
  397. loadRemotePrinterInfo.printerLocation = 2;
  398. loadRemotePrinterInfo.printerEmailAddress = printerEmailAddress;
  399. loadRemotePrinterInfo.printerAccessKey = printerAccessKey;
  400. loadRemotePrinterInfo.userDefName = printerName;
  401. ePPrinterManager.saveRemotePrinterInfo(loadRemotePrinterInfo);
  402. mMyPrinter = new MyPrinter(remotePrinterInfo.mDeviceId, "", "", remotePrinterInfo.mSerialNumber, printerEmailAddress);
  403. }
  404. public boolean deletePrinterInfo(String str) {
  405. return new EPPrinterManager(this).deleteRemotePrinterInfo(str);
  406. }
  407. public void onItemSelected(@NonNull String str) {
  408. mLocalTextWatcher.skipNextInputConversion();
  409. replaceMailDomainEditText(deleteFirstAtMark(str));
  410. }
  411. private String getDefaultMailDomain() {
  412. return guessIfMainlandChina() ? MAIL_DOMAIN_CHINA : MAIL_DOMAIN_NAME;
  413. }
  414. private boolean guessIfMainlandChina() {
  415. return "Hans".equals(Locale.getDefault().getScript());
  416. }
  417. private void replaceMailDomainEditText(@NonNull String str) {
  418. String replaceMailDomain = replaceMailDomain(str, printerEmailAddressEdit.getText().toString());
  419. printerEmailAddressEdit.setText(replaceMailDomain);
  420. printerEmailAddress = replaceMailDomain;
  421. }
  422. @VisibleForTesting
  423. static String replaceMailDomain(@NonNull String str, @NonNull String str2) {
  424. Matcher matcher = Pattern.compile("@(.*)$").matcher(str2);
  425. if (!matcher.find()) {
  426. return str2 + "@" + str;
  427. }
  428. return matcher.replaceFirst("") + "@" + str;
  429. }
  430. @VisibleForTesting
  431. static String deleteFirstAtMark(@NonNull String str) {
  432. return Pattern.compile("^@?").matcher(str).replaceFirst("");
  433. }
  434. private class setRemotePrintTask extends AsyncTask<Void, Void, Boolean> {
  435. WorkingDialog progress;
  436. private setRemotePrintTask() {
  437. progress = null;
  438. }
  439. protected void onPreExecute() {
  440. progress = new WorkingDialog (context);
  441. progress.show();
  442. }
  443. protected Boolean doInBackground(Void... voidArr) {
  444. WiFiDirectManager.setPriorityToSimpleAP(ActivityPrinterSetting.this, false);
  445. ActivityPrinterSetting activityPrinterSetting = ActivityPrinterSetting.this;
  446. int registRemotePrinter = EpsonConnectAccess.registRemotePrinter(activityPrinterSetting, activityPrinterSetting.printerEmailAddress, printerAccessKey);
  447. if (registRemotePrinter == -1203) {
  448. Message message = new Message();
  449. if (accessKeyLayout.getVisibility() != 0) {
  450. Message message2 = new Message();
  451. message2.what = 4;
  452. message2.arg1 = 0;
  453. mHandler.sendMessage(message2);
  454. } else {
  455. message.what = 6;
  456. message.arg1 = registRemotePrinter;
  457. mHandler.sendMessage(message);
  458. }
  459. return false;
  460. } else if (registRemotePrinter != 0) {
  461. Message message3 = new Message();
  462. message3.what = 6;
  463. message3.arg1 = registRemotePrinter;
  464. mHandler.sendMessage(message3);
  465. return false;
  466. } else {
  467. ActivityPrinterSetting activityPrinterSetting2 = ActivityPrinterSetting.this;
  468. EpsonConnectAccess.RemotePrinterInfo printerInfo = EpsonConnectAccess.getPrinterInfo(activityPrinterSetting2, activityPrinterSetting2.printerEmailAddress, printerAccessKey);
  469. if (printerInfo != null) {
  470. if (!oldPrinterEmailAddress.equals("") && oldPrinterEmailAddress.equals (printerEmailAddress)) {
  471. ActivityPrinterSetting activityPrinterSetting3 = ActivityPrinterSetting.this;
  472. activityPrinterSetting3.deletePrinterInfo(activityPrinterSetting3.oldPrinterEmailAddress);
  473. }
  474. savePrinterInfo(printerInfo);
  475. }
  476. return true;
  477. }
  478. }
  479. protected void onPostExecute(Boolean bool) {
  480. if (progress.isShowing()) {
  481. progress.dismiss();
  482. }
  483. if (bool.booleanValue()) {
  484. mHandler.sendEmptyMessage(7);
  485. }
  486. }
  487. }
  488. protected void onResume() {
  489. super.onResume();
  490. EPLog.e("ActiviyPrinterSettings", "onResume()");
  491. }
  492. public boolean onCreateOptionsMenu(Menu menu) {
  493. getMenuInflater().inflate(R.C2138menu.menu_done, menu);
  494. return super.onCreateOptionsMenu(menu);
  495. }
  496. public boolean onOptionsItemSelected(MenuItem menuItem) {
  497. if (menuItem.getItemId() != R.id.menuSettingsDone) {
  498. return super.onOptionsItemSelected(menuItem);
  499. }
  500. onDone();
  501. return true;
  502. }
  503. private class LocalTextWatcher implements TextWatcher {
  504. private final int INPUT_STATUS_IGNORE;
  505. private final int INPUT_STATUS_NORMAL;
  506. private final int INPUT_STATUS_SKIP;
  507. private int inputStatus;
  508. public void afterTextChanged(Editable editable) {
  509. }
  510. private LocalTextWatcher() {
  511. INPUT_STATUS_NORMAL = 0;
  512. INPUT_STATUS_SKIP = 1;
  513. INPUT_STATUS_IGNORE = 2;
  514. inputStatus = 0;
  515. }
  516. private void skipNextInputConversion() {
  517. inputStatus = 1;
  518. }
  519. public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
  520. String charSequence2 = charSequence.toString();
  521. if (inputStatus == 0 && charSequence2.contains("@")) {
  522. inputStatus = 2;
  523. }
  524. }
  525. public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
  526. String charSequence2 = charSequence.toString();
  527. if (inputStatus == 1) {
  528. inputStatus = 0;
  529. } else if (i >= charSequence2.length() || charSequence2.charAt(i) != '@') {
  530. inputStatus = 0;
  531. } else {
  532. int i4 = inputStatus;
  533. if (i4 == 2) {
  534. inputStatus = 1;
  535. ActivityPrinterSetting activityPrinterSetting = ActivityPrinterSetting.this;
  536. String unused = activityPrinterSetting.printerEmailAddress = charSequence2.substring(0, i) + charSequence2.substring(i + 1);
  537. printerEmailAddressEdit.setText (printerEmailAddress);
  538. printerEmailAddressEdit.setSelection(i);
  539. } else if (i4 == 0) {
  540. inputStatus = 1;
  541. ActivityPrinterSetting activityPrinterSetting2 = ActivityPrinterSetting.this;
  542. String unused2 = activityPrinterSetting2.printerEmailAddress = charSequence2.substring(0, i + 1) + getDefaultMailDomain();
  543. printerEmailAddressEdit.setText (printerEmailAddress);
  544. showMailDomainSelectDialog();
  545. } else {
  546. inputStatus = 0;
  547. }
  548. }
  549. }
  550. }
  551. }