1 package jp.sourceforge.gokigen.memoma.operations;
4 import java.util.Enumeration;
6 import android.app.ProgressDialog;
7 import android.content.Context;
8 import android.os.AsyncTask;
9 import android.util.Log;
11 import jp.sourceforge.gokigen.memoma.Main;
12 import jp.sourceforge.gokigen.memoma.R;
13 import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
16 * オブジェクトの位置を整列するクラス (非同期処理を実行)
19 * MeMoMaObjectHolder : 実行時に渡すクラス(Param)
20 * Integer : 途中経過を伝えるクラス(Progress)
21 * String : 処理結果を伝えるクラス(Result)
26 public class ObjectAligner extends AsyncTask<MeMoMaObjectHolder, Integer, String>
28 ProgressDialog executingDialog = null;
29 IAlignCallback receiver = null;
33 public ObjectAligner(Context context, IAlignCallback client)
37 // プログレスダイアログ(「保存中...」)を表示する。
38 executingDialog = new ProgressDialog(context);
39 executingDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
40 executingDialog.setMessage(context.getString(R.string.dataAligning));
41 executingDialog.setIndeterminate(true);
42 executingDialog.setCancelable(false);
43 executingDialog.show();
51 protected void onPreExecute()
58 * (バックグラウンドで実行する(このメソッドは、UIスレッドと別のところで実行する))
62 protected String doInBackground(MeMoMaObjectHolder... datas)
64 MeMoMaObjectHolder objectHolder = datas[0];
66 // オブジェクトの出力 (保持しているものはすべて表示する)
67 Enumeration<Integer> keys = objectHolder.getObjectKeys();
68 while (keys.hasMoreElements())
70 Integer key = keys.nextElement();
71 MeMoMaObjectHolder.PositionObject pos = objectHolder.getPosition(key);
73 float newLeft = (float) Math.floor((pos.rect.left + 15.0f)/ 30.0) * 30.0f;
74 float newTop = (float) Math.floor((pos.rect.top + 15.0f)/ 30.0) * 30.0f;
75 pos.rect.offsetTo(newLeft, newTop);
87 protected void onProgressUpdate(Integer... values)
97 protected void onPostExecute(String result)
101 if (receiver != null)
104 receiver.objectAligned();
109 Log.v(Main.APP_IDENTIFIER, "ObjectAligner::onPostExecute() : " + ex.toString());
113 executingDialog.dismiss();
123 public interface IAlignCallback
125 public abstract void objectAligned();