OSDN Git Service

https://osdn.net/cvs/view/gokigen/MeMoMa/ から コピーしてくる。(+API27でビルドできるよう、少し調整。)
[gokigen/MeMoMa.git] / app / src / main / java / jp / sourceforge / gokigen / memoma / holders / LineStyleHolder.java
1 package jp.sourceforge.gokigen.memoma.holders;
2
3 import android.app.Activity;
4 import android.content.SharedPreferences;
5 import android.preference.PreferenceManager;
6
7 import jp.sourceforge.gokigen.memoma.R;
8
9 /**
10  *    線の形状を保持するクラス
11  * 
12  * @author MRSa
13  *
14  */
15 public class LineStyleHolder
16 {
17         private Activity activity = null;
18
19         public static final int LINESTYLE_STRAIGHT_NO_ARROW = 0;
20     public static final int LINESTYLE_TREESTYLE_NO_ARROW = 1;
21     public static final int LINESTYLE_CURVESTYLE_NO_ARROW = 2;
22         public static final int LINESTYLE_STRAIGHT_R_ARROW = 3;
23         public static final int LINESTYLE_STRAIGHT_L_ARROW = 4;
24     public static final int LINESTYLE_TREESTYLE_R_ARROW = 5;
25     public static final int LINESTYLE_TREESTYLE_L_ARROW = 6;
26     public static final int LINESTYLE_CURVESTYLE_R_ARROW = 7;
27     public static final int LINESTYLE_CURVESTYLE_L_ARROW = 8;
28
29     public static final int LINESHAPE_NORMAL = 1000;       // 普通の直線
30     public static final int LINESHAPE_DASH =  1001;      // 点線(破線)
31
32     public static final int LINETHICKNESS_THIN = 0;      // 細い線
33         public static final int LINETHICKNESS_MIDDLE = 3;  // 中太線
34         public static final int LINETHICKNESS_HEAVY = 6;    //  太線
35     
36         private int currentLineThickness = LINETHICKNESS_THIN;
37         private int currentLineShape = LINESHAPE_NORMAL;
38         private int currentLineStyle = LINESTYLE_STRAIGHT_NO_ARROW;
39         
40         /**
41          *    コンストラクタ
42          * 
43          * @param arg
44          */
45         public LineStyleHolder(Activity arg)
46         {
47                 activity = arg;
48         }
49
50         /**
51          *    ライン形状を読み出す
52          * 
53          */
54         public void prepare()
55         {
56         SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
57         currentLineStyle = Integer.parseInt(preferences.getString("lineStyle", "0"));
58         currentLineShape = Integer.parseInt(preferences.getString("lineShape", "1000"));
59         currentLineThickness = Integer.parseInt(preferences.getString("lineThickness", "1"));
60                 
61         }
62         
63         public int changeLineStyle()
64         {
65         SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
66         int value = Integer.parseInt(preferences.getString("lineStyle", "0"));
67         switch (value)
68         {
69           case LINESTYLE_STRAIGHT_NO_ARROW:
70               value = LINESTYLE_STRAIGHT_R_ARROW;
71             break;
72           case LINESTYLE_STRAIGHT_R_ARROW:
73               value = LINESTYLE_TREESTYLE_NO_ARROW;
74             break;
75           case LINESTYLE_TREESTYLE_NO_ARROW:
76               value = LINESTYLE_TREESTYLE_R_ARROW;
77               break;
78           case LINESTYLE_TREESTYLE_R_ARROW:
79               value = LINESTYLE_CURVESTYLE_NO_ARROW;
80             break;
81           case LINESTYLE_CURVESTYLE_NO_ARROW:
82               value = LINESTYLE_CURVESTYLE_R_ARROW;
83               break;
84           case LINESTYLE_CURVESTYLE_R_ARROW:
85                   // value = LINESTYLE_STRAIGHT_L_ARROW;  // 左側矢印を作成する場合
86                   value = LINESTYLE_STRAIGHT_NO_ARROW;   // 左側矢印を作成しない場合
87                   break;
88           case LINESTYLE_STRAIGHT_L_ARROW:
89               value = LINESTYLE_TREESTYLE_L_ARROW;
90               break;
91           case LINESTYLE_TREESTYLE_L_ARROW:
92               value = LINESTYLE_CURVESTYLE_L_ARROW;
93               break;
94           case LINESTYLE_CURVESTYLE_L_ARROW:
95           default:
96               value = LINESTYLE_STRAIGHT_NO_ARROW;
97               break;
98         }
99
100         // 文字列としてデータを記録
101         SharedPreferences.Editor editor = preferences.edit();
102         editor.putString("lineStyle", "" + value);
103         editor.commit();
104
105         return (value);
106         }
107
108           /**
109            *   接続する線の形状を指定する
110            *   
111            * @param style
112            */
113           public void setLineStyle(int style)
114           {
115                   currentLineStyle = LineStyleHolder.LINESTYLE_STRAIGHT_NO_ARROW;
116                   switch (style)
117                   {
118                     case LineStyleHolder.LINESTYLE_STRAIGHT_NO_ARROW:
119                     case LineStyleHolder.LINESTYLE_TREESTYLE_NO_ARROW:
120                     case LineStyleHolder.LINESTYLE_CURVESTYLE_NO_ARROW:
121                     case LineStyleHolder.LINESTYLE_STRAIGHT_R_ARROW:
122                     case LineStyleHolder.LINESTYLE_TREESTYLE_R_ARROW:
123                     case LineStyleHolder.LINESTYLE_CURVESTYLE_R_ARROW:
124                     case LineStyleHolder.LINESTYLE_STRAIGHT_L_ARROW:
125                     case LineStyleHolder.LINESTYLE_TREESTYLE_L_ARROW:
126                     case LineStyleHolder.LINESTYLE_CURVESTYLE_L_ARROW:
127                         currentLineStyle = style;
128                             break;
129
130                     default:
131                         currentLineStyle = LineStyleHolder.LINESTYLE_STRAIGHT_NO_ARROW;
132                             break;
133                   }     
134
135                   // 文字列としてデータを記録
136               SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
137               SharedPreferences.Editor editor = preferences.edit();
138               editor.putString("lineStyle", "" + currentLineStyle);
139               editor.commit();
140           }
141           /**
142            *    接続する線の種類(点線 or 実線) を設定する
143            * 
144            * @param shape
145            */
146           public void setLineShape(int shape)
147           {
148                   currentLineShape = LineStyleHolder.LINESHAPE_NORMAL;
149                   switch (shape)
150                   {
151                     case LineStyleHolder.LINESHAPE_DASH:
152                     case LineStyleHolder.LINESHAPE_NORMAL:
153                         currentLineShape = shape;
154                             break;
155
156                     default:
157                         currentLineShape = LineStyleHolder.LINESHAPE_NORMAL;
158                             break;
159                   }
160
161                   // 文字列としてデータを記録
162               SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
163               SharedPreferences.Editor editor = preferences.edit();
164               editor.putString("lineShape", "" + currentLineShape);
165               editor.commit();
166           }     
167
168           /**
169            *    接続する線の太さ を設定する
170            *
171            */
172           public void setLineThickness(int thickness)
173           {
174                   currentLineThickness = LineStyleHolder.LINETHICKNESS_THIN;
175                   switch (thickness)
176                   {
177                     case LineStyleHolder.LINETHICKNESS_HEAVY:
178                     case LineStyleHolder.LINETHICKNESS_MIDDLE:
179                     case LineStyleHolder.LINETHICKNESS_THIN:
180                         currentLineThickness = thickness;
181                             break;
182
183                     default:
184                         currentLineThickness = LineStyleHolder.LINETHICKNESS_THIN;
185                             break;
186                   }
187
188                   // 文字列としてデータを記録
189               SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
190               SharedPreferences.Editor editor = preferences.edit();
191               editor.putString("lineThickness", "" + currentLineThickness);
192               editor.commit();
193           }     
194
195           /**
196            *    接続する線の形状を応答する
197            * 
198            * @return 接続する線の形状
199            */
200           public int getLineStyle()
201           {
202                   return (currentLineStyle);
203           }
204           
205           /**
206            *   接続する線の種類(点線 or 実線) を応答する
207            * 
208            * @return 接続する線の種類
209            */
210           public int getLineShape()
211           {
212                   return (currentLineShape);
213           }
214
215           /**
216            *   接続する線の太さを応答する
217            * 
218            * @return 接続する線の太さ
219            */
220           public int getLineThickness()
221           {
222                   return (currentLineThickness);
223           }
224
225             /**
226              *    現在の太さのイメージのIDを応答する
227              * 
228              * @param thickness
229              * @return
230              */
231             public static int getLineThicknessImageId(int thickness)
232             {
233                 int buttonId = R.drawable.btn_line_thin;
234                 switch (thickness)
235                 {
236                       case LineStyleHolder.LINETHICKNESS_HEAVY:
237                     buttonId = R.drawable.btn_line_heavy;
238                     break;
239
240                   case LineStyleHolder.LINETHICKNESS_MIDDLE:
241                       buttonId = R.drawable.btn_line_middle;
242                       break;
243
244                   case LineStyleHolder.LINETHICKNESS_THIN:
245                   default:
246                           buttonId = R.drawable.btn_line_thin;
247                           break;
248                 }
249                 return (buttonId);
250             }    
251             
252             /**
253              * 
254              * 
255              * @param currentLineStyle
256              * @param currentLineShape
257              * @return
258              */
259             public static int getLineShapeImageId(int currentLineStyle, int currentLineShape)
260             {
261                 int buttonId = R.drawable.btn_straight;
262                 
263                 if ((currentLineStyle == LineStyleHolder.LINESTYLE_TREESTYLE_NO_ARROW)&&
264                                 (currentLineShape == LineStyleHolder.LINESHAPE_NORMAL))
265                 {
266                         buttonId = R.drawable.btn_tree;
267                 }
268                 else if ((currentLineStyle == LineStyleHolder.LINESTYLE_CURVESTYLE_NO_ARROW)&&
269                                 (currentLineShape == LineStyleHolder.LINESHAPE_NORMAL))
270                 {
271                         buttonId = R.drawable.btn_curve;
272                 }
273                 else if ((currentLineStyle == LineStyleHolder.LINESTYLE_STRAIGHT_NO_ARROW)&&
274                                 (currentLineShape == LineStyleHolder.LINESHAPE_DASH))
275                 {
276                         buttonId = R.drawable.btn_straight_dash;
277                 }
278                 else if ((currentLineStyle == LineStyleHolder.LINESTYLE_TREESTYLE_NO_ARROW)&&
279                                 (currentLineShape == LineStyleHolder.LINESHAPE_DASH))
280                 {
281                         buttonId = R.drawable.btn_tree_dash;
282                 }
283                 else if ((currentLineStyle == LineStyleHolder.LINESTYLE_CURVESTYLE_NO_ARROW)&&
284                                 (currentLineShape == LineStyleHolder.LINESHAPE_DASH))
285                 {
286                         buttonId = R.drawable.btn_curve_dash;
287                 }
288                 else if ((currentLineStyle == LineStyleHolder.LINESTYLE_STRAIGHT_R_ARROW)&&
289                                 (currentLineShape == LineStyleHolder.LINESHAPE_NORMAL))
290                 {
291                         buttonId = R.drawable.btn_straight_rarrow;
292                 }
293                 else if ((currentLineStyle == LineStyleHolder.LINESTYLE_TREESTYLE_R_ARROW)&&
294                                 (currentLineShape == LineStyleHolder.LINESHAPE_NORMAL))
295                 {
296                         buttonId = R.drawable.btn_tree_rarrow;
297                 }
298                 else if ((currentLineStyle == LineStyleHolder.LINESTYLE_CURVESTYLE_R_ARROW)&&
299                                 (currentLineShape == LineStyleHolder.LINESHAPE_NORMAL))
300                 {
301                         buttonId = R.drawable.btn_curve_rarrow;
302                 }
303                 else if ((currentLineStyle == LineStyleHolder.LINESTYLE_STRAIGHT_R_ARROW)&&
304                                 (currentLineShape == LineStyleHolder.LINESHAPE_DASH))
305                 {
306                         buttonId = R.drawable.btn_straight_rarrow_dash;
307                 }
308                 else if ((currentLineStyle == LineStyleHolder.LINESTYLE_TREESTYLE_R_ARROW)&&
309                                 (currentLineShape == LineStyleHolder.LINESHAPE_DASH))
310                 {
311                         buttonId = R.drawable.btn_tree_rarrow_dash;
312                 }
313                 else if ((currentLineStyle == LineStyleHolder.LINESTYLE_CURVESTYLE_R_ARROW)&&
314                                 (currentLineShape == LineStyleHolder.LINESHAPE_DASH))
315                 {
316                         buttonId = R.drawable.btn_curve_rarrow_dash;
317                 }
318                 /**
319                 else  if ((currentLineStyle == LineStyleHolder.LINESTYLE_STRAIGHT_NO_ARROW)&&
320                                 (currentLineShape == LineStyleHolder.LINESHAPE_NORMAL))
321                 {
322                         buttonId = R.drawable.btn_straight;
323                 }
324                 **/
325                 return (buttonId);
326             }
327 }