OSDN Git Service

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