CopyScaleActivity.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. package epson.print.copy;
  2. import android.app.AlertDialog;
  3. import android.content.Context;
  4. import android.content.DialogInterface;
  5. import android.content.Intent;
  6. import android.os.Bundle;
  7. import android.os.SystemClock;
  8. import android.view.LayoutInflater;
  9. import android.view.MotionEvent;
  10. import android.view.View;
  11. import android.view.ViewGroup;
  12. import android.widget.AdapterView;
  13. import android.widget.ArrayAdapter;
  14. import android.widget.Button;
  15. import android.widget.ImageView;
  16. import android.widget.LinearLayout;
  17. import android.widget.ListView;
  18. import android.widget.TextView;
  19. import com.epson.mobilephone.common.wifidirect.WiFiDirectManager;
  20. import java.util.ArrayList;
  21. import java.util.Iterator;
  22. import epson.print.R;
  23. import epson.print.Util.EPLog;
  24. import epson.print.copy.Component.ecopycomponent.ECopyComponent;
  25. import epson.print.copy.Component.ecopycomponent.ECopyOptionItem;
  26. import epson.print.widgets.LongTapRepeatAdapter;
  27. public class CopyScaleActivity extends ActivityBase {
  28. private String TAG = "CppyScaleActivity";
  29. ActivityBase.OptionItemChangedListener optionValueChangedListener;
  30. String settingItemKey;
  31. public void onCreate(Bundle bundle) {
  32. super.onCreate(bundle);
  33. EPLog.i(TAG, "onCreate");
  34. setContentView((int) R.layout.copy_scale);
  35. Intent intent = getIntent();
  36. if (intent != null) {
  37. settingItemKey = intent.getStringExtra("Key");
  38. setActionBar(string(settingItemKey), true);
  39. }
  40. optionValueChangedListener = new ActivityBase.OptionItemChangedListener() {
  41. public void onOptionItemChanged(ECopyOptionItem eCopyOptionItem) {
  42. ArrayList arrayList = new ArrayList();
  43. copyComponent.setCopyOptionItem(eCopyOptionItem);
  44. if (eCopyOptionItem.getKey() == ECopyOptionItem.ECopyOptionItemKey.CopyMagnification) {
  45. arrayList.add(eCopyOptionItem);
  46. buildCopyOptions(arrayList);
  47. }
  48. }
  49. };
  50. buildCopyOptions(copyComponent.getCopyOptionItems());
  51. }
  52. private void buildCopyOptions(ArrayList<ECopyOptionItem> arrayList) {
  53. EPLog.i(TAG, "buildCopyOptions");
  54. Iterator<ECopyOptionItem> it = arrayList.iterator();
  55. while (it.hasNext()) {
  56. ECopyOptionItem next = it.next();
  57. ECopyOptionItem.ECopyOptionItemKey key = next.getKey();
  58. if (key == ECopyOptionItem.ECopyOptionItemKey.CopyMagnification) {
  59. optionValueMap.put(key, new CopyMagnificationValue(next));
  60. }
  61. if (key.name().equalsIgnoreCase(settingItemKey)) {
  62. optionValueMap.put(key, new XScaleValue(next));
  63. }
  64. }
  65. }
  66. class XScaleValue extends ActivityBase.ListOptionValue {
  67. final int AUTOFIT = 0;
  68. final int CUSTOM = 2;
  69. final int FULLSIZE = 1;
  70. ArrayList<ScaleInfo> presetArray = new ArrayList<>();
  71. int selectedItemPos;
  72. XScaleValue(ECopyOptionItem eCopyOptionItem) {
  73. super();
  74. bindOption(eCopyOptionItem);
  75. capabilitySetting(eCopyOptionItem, CopyScaleActivity.this);
  76. setOptionValueChangedListener(optionValueChangedListener);
  77. }
  78. private ScaleAdapter getArrayAdapter(XScaleValue xScaleValue, Context context) {
  79. for (int i = 3; i < xScaleValue.getKeyArray().length; i++) {
  80. presetArray.add(new ScaleInfo(copyType, (ECopyOptionItem.ECopyOptionItemChoice) xScaleValue.choices.get(i)));
  81. }
  82. return new ScaleAdapter(context, R.layout.setting_item, presetArray);
  83. }
  84. private void capabilitySetting(ECopyOptionItem eCopyOptionItem, Context context) {
  85. int i = 0;
  86. while (true) {
  87. if (i >= choices.size()) {
  88. break;
  89. } else if (selected == choices.get(i)) {
  90. selectedItemPos = i;
  91. break;
  92. } else {
  93. i++;
  94. }
  95. }
  96. LinearLayout linearLayout = (LinearLayout) findViewById(R.id.auto_fit);
  97. if (selectedItemPos == 0) {
  98. ((ImageView) findViewById(R.id.auto_select_icon)).setVisibility(0);
  99. } else {
  100. ((ImageView) findViewById(R.id.auto_select_icon)).setVisibility(8);
  101. }
  102. linearLayout.setOnClickListener(new View.OnClickListener() {
  103. public void onClick(View view) {
  104. XScaleValue xScaleValue = XScaleValue.this;
  105. xScaleValue.selected = (ECopyOptionItem.ECopyOptionItemChoice) xScaleValue.choices.get(0);
  106. optionItem.selectChoice (selected);
  107. if (changedListener != null) {
  108. changedListener.onOptionItemChanged (optionItem);
  109. }
  110. isKeepSimpleAPConnection = true;
  111. finish();
  112. }
  113. });
  114. LinearLayout linearLayout2 = (LinearLayout) findViewById(R.id.full_size);
  115. if (selectedItemPos == 1) {
  116. ((ImageView) findViewById(R.id.full_select_icon)).setVisibility(0);
  117. } else {
  118. ((ImageView) findViewById(R.id.full_select_icon)).setVisibility(8);
  119. }
  120. linearLayout2.setOnClickListener(new View.OnClickListener() {
  121. public void onClick(View view) {
  122. XScaleValue xScaleValue = XScaleValue.this;
  123. xScaleValue.selected = (ECopyOptionItem.ECopyOptionItemChoice) xScaleValue.choices.get(1);
  124. optionItem.selectChoice (selected);
  125. if (changedListener != null) {
  126. changedListener.onOptionItemChanged (optionItem);
  127. }
  128. isKeepSimpleAPConnection = true;
  129. finish();
  130. }
  131. });
  132. if (selectedItemPos == 2) {
  133. ((ImageView) findViewById(R.id.custom_select_icon)).setVisibility(0);
  134. } else {
  135. ((ImageView) findViewById(R.id.custom_select_icon)).setVisibility(8);
  136. }
  137. ListView listView = (ListView) findViewById(R.id.scale_list);
  138. listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  139. public void onItemClick(AdapterView<?> adapterView, View view, int i, long j) {
  140. XScaleValue xScaleValue = XScaleValue.this;
  141. xScaleValue.selected = (ECopyOptionItem.ECopyOptionItemChoice) xScaleValue.choices.get(i + 3);
  142. optionItem.selectChoice (selected);
  143. if (changedListener != null) {
  144. changedListener.onOptionItemChanged (optionItem);
  145. }
  146. isKeepSimpleAPConnection = true;
  147. finish();
  148. }
  149. });
  150. listView.setAdapter(getArrayAdapter(this, context));
  151. }
  152. private class ScaleAdapter extends ArrayAdapter<ScaleInfo> {
  153. private LayoutInflater inflater;
  154. private ArrayList<ScaleInfo> items;
  155. public ScaleAdapter(Context context, int i, ArrayList<ScaleInfo> arrayList) {
  156. super(context, i, arrayList);
  157. items = arrayList;
  158. inflater = (LayoutInflater) context.getSystemService(Service.LAYOUT_INFLATER_SERVICE);
  159. }
  160. public View getView(int i, View view, ViewGroup viewGroup) {
  161. if (view == null) {
  162. view = inflater.inflate(R.layout.setting_item, (ViewGroup) null);
  163. }
  164. ((TextView) view.findViewById(R.id.setting_name)).setText(items.get(i).scalePresetName);
  165. int i2 = items.get(i).scaleNum;
  166. ((TextView) view.findViewById(R.id.setting_value)).setText(String.valueOf(i2) + " %");
  167. if (i == selectedItemPos - 3) {
  168. ((ImageView) view.findViewById(R.id.setting_active_icon)).setVisibility(0);
  169. } else {
  170. ((ImageView) view.findViewById(R.id.setting_active_icon)).setVisibility(8);
  171. }
  172. return view;
  173. }
  174. }
  175. private class ScaleInfo {
  176. int scaleNum;
  177. String scalePresetName;
  178. ScaleInfo(ECopyComponent.ECopyType eCopyType, ECopyOptionItem.ECopyOptionItemChoice eCopyOptionItemChoice) {
  179. scalePresetName = string(eCopyOptionItemChoice.name());
  180. scaleNum = copyComponent.getCopyValue(eCopyType, eCopyOptionItemChoice);
  181. }
  182. }
  183. }
  184. class CopyMagnificationValue extends ActivityBase.NumberOptionValue {
  185. CopyMagnificationValue(ECopyOptionItem eCopyOptionItem) {
  186. super();
  187. bindOption(R.id.CopyMagnification, eCopyOptionItem);
  188. clickCustomScale();
  189. setOptionValueChangedListener(optionValueChangedListener);
  190. }
  191. private void bindOption(int i, ECopyOptionItem eCopyOptionItem) {
  192. optionItem = eCopyOptionItem;
  193. editText = (TextView) findViewById(i);
  194. value = eCopyOptionItem.getSelectedValue();
  195. if (value == ECopyOptionItem.CopyMagnificationAutofitValue) {
  196. editText.setText("---");
  197. } else {
  198. editText.setText(String.valueOf(value));
  199. }
  200. editText.setEnabled(eCopyOptionItem.isEnabled());
  201. }
  202. private void clickCustomScale() {
  203. ((LinearLayout) findViewById(R.id.copy_scale_custom)).setOnClickListener(new View.OnClickListener() {
  204. public void onClick(View view) {
  205. View inflate = LayoutInflater.from(CopyScaleActivity.this).inflate(R.layout.copy_custom_scale, (ViewGroup) null);
  206. editText = (TextView) inflate.findViewById(R.id.SettingCopyMagnification);
  207. CopyMagnificationValue copyMagnificationValue = CopyMagnificationValue.this;
  208. copyMagnificationValue.value = copyMagnificationValue.optionItem.getSelectedValue();
  209. if (value == ECopyOptionItem.CopyMagnificationAutofitValue) {
  210. value = 100;
  211. }
  212. editText.setText (value));
  213. countUp = (Button) inflate.findViewById(R.id.SettingButonCopyMagnificationCountUp);
  214. countUp.setOnClickListener(new CountCustomScale(1));
  215. if (value == optionItem.getMaximumValue()) {
  216. countUp.setEnabled(false);
  217. } else {
  218. countUp.setEnabled(true);
  219. }
  220. LongTapRepeatAdapter.bless (countUp);
  221. countDown = (Button) inflate.findViewById(R.id.SettingButonCopyMagnificationCountDown);
  222. countDown.setOnClickListener(new CountCustomScale(-1));
  223. if (value == optionItem.getMinimumValue()) {
  224. countDown.setEnabled(false);
  225. } else {
  226. countDown.setEnabled(true);
  227. }
  228. LongTapRepeatAdapter.bless (countDown);
  229. AlertDialog.Builder builder = new AlertDialog.Builder(CopyScaleActivity.this);
  230. builder.setTitle(R.string.XScale_Custom);
  231. builder.setView(inflate);
  232. builder.setPositiveButton(getString(R.string.str_ok), new DialogInterface.OnClickListener() {
  233. public void onClick(DialogInterface dialogInterface, int i) {
  234. ActivityBase.ListOptionValue listOptionValue = (ActivityBase.ListOptionValue) optionValueMap.get(ECopyOptionItem.ECopyOptionItemKey.XScale);
  235. listOptionValue.optionItem.selectChoice(ECopyOptionItem.ECopyOptionItemChoice.XScale_Custom);
  236. if (changedListener != null) {
  237. changedListener.onOptionItemChanged(listOptionValue.optionItem);
  238. }
  239. optionItem.selectValue (editText.getText().toString()));
  240. if (changedListener != null) {
  241. changedListener.onOptionItemChanged (optionItem);
  242. }
  243. isKeepSimpleAPConnection = true;
  244. onDismissDialog();
  245. finish();
  246. }
  247. });
  248. builder.setNegativeButton(getString(R.string.str_cancel), new DialogInterface.OnClickListener() {
  249. public void onClick(DialogInterface dialogInterface, int i) {
  250. onDismissDialog();
  251. }
  252. });
  253. builder.show();
  254. CopyMagnificationValue copyMagnificationValue2 = CopyMagnificationValue.this;
  255. copyMagnificationValue2.setOptionValueChangedListener(optionValueChangedListener);
  256. }
  257. });
  258. }
  259. private void onDismissDialog() {
  260. MotionEvent obtain = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis() + 10, 1, 0.0f, 0.0f, 0);
  261. countDown.dispatchTouchEvent(obtain);
  262. countUp.dispatchTouchEvent(obtain);
  263. }
  264. class CountCustomScale extends ActivityBase.NumberOptionValue.Counter {
  265. public CountCustomScale(int i) {
  266. super(i);
  267. }
  268. public void onClick(View view) {
  269. try {
  270. value = Integer.valueOf (editText.getText().toString()).intValue();
  271. value = Math.min (optionItem.getMinimumValue(), value + amount), optionItem.getMaximumValue());
  272. } catch (NumberFormatException unused) {
  273. }
  274. editText.setText (value));
  275. if (value >= optionItem.getMaximumValue()) {
  276. countUp.setEnabled(false);
  277. } else {
  278. countUp.setEnabled(true);
  279. }
  280. if (value <= optionItem.getMinimumValue()) {
  281. countDown.setEnabled(false);
  282. } else {
  283. countDown.setEnabled(true);
  284. }
  285. }
  286. }
  287. }
  288. public void onBackPressed() {
  289. isKeepSimpleAPConnection = true;
  290. finish();
  291. }
  292. protected void onResume() {
  293. super.onResume();
  294. if (!WiFiDirectManager.isNeedConnect(this, WiFiDirectManager.DEVICE_TYPE_PRINTER)) {
  295. isTryConnectSimpleAp = false;
  296. } else if (!isTryConnectSimpleAp) {
  297. isTryConnectSimpleAp = true;
  298. if (WiFiDirectManager.reconnect(this, WiFiDirectManager.DEVICE_TYPE_PRINTER, -1)) {
  299. isKeepSimpleAPConnection = true;
  300. }
  301. }
  302. }
  303. protected void onPause() {
  304. super.onPause();
  305. if (!isKeepSimpleAPConnection) {
  306. WiFiDirectManager.disconnect(this, WiFiDirectManager.DEVICE_TYPE_PRINTER, ActivityBase.printerIp);
  307. }
  308. }
  309. }