OSDN Git Service

一部のワーニングを修正。
[gokigen/MeMoMa.git] / app / src / main / java / jp / sourceforge / gokigen / memoma / operations / ObjectAligner.java
1 package jp.sourceforge.gokigen.memoma.operations;
2
3
4 import java.util.Enumeration;
5
6 import android.app.ProgressDialog;
7 import android.content.Context;
8 import android.os.AsyncTask;
9 import android.util.Log;
10
11 import jp.sourceforge.gokigen.memoma.Main;
12 import jp.sourceforge.gokigen.memoma.R;
13 import jp.sourceforge.gokigen.memoma.holders.MeMoMaObjectHolder;
14
15 /**
16  *  オブジェクトの位置を整列するクラス (非同期処理を実行)
17  *  
18  *  AsyncTask
19  *    MeMoMaObjectHolder : 実行時に渡すクラス(Param)
20  *    Integer    : 途中経過を伝えるクラス(Progress)
21  *    String     : 処理結果を伝えるクラス(Result)
22  *    
23  * @author MRSa
24  *
25  */
26 public class ObjectAligner extends AsyncTask<MeMoMaObjectHolder, Integer, String>
27 {
28         ProgressDialog executingDialog = null;
29         IAlignCallback  receiver = null;
30         /**
31          *   コンストラクタ
32          */
33     public ObjectAligner(Context context, IAlignCallback client)
34     {
35         receiver = client;
36         
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();
44     }
45         
46     /**
47      *  非同期処理実施前の前処理
48      * 
49      */
50     @Override
51     protected void onPreExecute()
52     {
53         
54     }
55
56     /**
57      *  非同期処理
58      *  (バックグラウンドで実行する(このメソッドは、UIスレッドと別のところで実行する))
59      * 
60      */
61     @Override
62     protected String doInBackground(MeMoMaObjectHolder... datas)
63     {
64         MeMoMaObjectHolder objectHolder = datas[0];
65
66         // オブジェクトの出力 (保持しているものはすべて表示する)
67         Enumeration<Integer> keys = objectHolder.getObjectKeys();
68         while (keys.hasMoreElements())
69         {
70             Integer key = keys.nextElement();
71             MeMoMaObjectHolder.PositionObject pos = objectHolder.getPosition(key);
72             
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);
76         }
77         System.gc();
78                 
79                 return ("");
80     }
81
82     /**
83      *  非同期処理の進捗状況の更新
84      * 
85      */
86         @Override
87         protected void onProgressUpdate(Integer... values)
88         {
89         // 今回は何もしない
90         }
91
92     /**
93      *  非同期処理の後処理
94      *  (結果を応答する)
95      */
96     @Override
97     protected void onPostExecute(String result)
98     {
99         try
100         {
101                 if (receiver != null)
102                 {
103                         // 並べ変えたことを通知する
104                         receiver.objectAligned();
105                 }
106         }
107         catch (Exception ex)
108         {
109                 Log.v(Main.APP_IDENTIFIER, "ObjectAligner::onPostExecute() : " + ex.toString());
110         }
111
112         // プログレスダイアログを消す
113         executingDialog.dismiss();
114         return;
115     }     
116     
117     /**
118      *    並べ変えたことを通知する
119      * 
120      * @author MRSa
121      *
122      */
123     public interface IAlignCallback
124     {
125         public abstract void objectAligned();
126     }
127 }