1 |
|
|
2 |
|
package pl.magot.vetch.widgets; |
3 |
|
|
4 |
|
|
5 |
|
import android.content.*; |
6 |
|
import android.view.*; |
7 |
|
import android.widget.LinearLayout.LayoutParams; |
8 |
|
import android.graphics.*; |
9 |
|
|
10 |
|
|
|
|
| 84,3% |
Uncovered Elements: 13 (83) |
Complexity: 19 |
Complexity Density: 0,33 |
|
11 |
|
public class TimeCaption extends View |
12 |
|
{ |
13 |
|
|
14 |
|
private final static float fTextSize = 26; |
15 |
|
private final static int iBorder = 4; |
16 |
|
|
17 |
|
|
18 |
|
private Paint pt = new Paint(); |
19 |
|
private RectF rect = new RectF(); |
20 |
|
private RectF rectFrame = new RectF(); |
21 |
|
private boolean b24HourMode = false; |
22 |
|
private String sTime = ""; |
23 |
|
private String sTimeSign = ""; |
24 |
|
|
25 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (6) |
Complexity: 1 |
Complexity Density: 0,17 |
|
26 |
2
|
public TimeCaption(Context context, boolean b24HourMode, int iWidth)... |
27 |
|
{ |
28 |
2
|
super(context); |
29 |
2
|
this.b24HourMode = b24HourMode; |
30 |
2
|
setFocusable(false); |
31 |
2
|
final int iHeight = getTotalHeight(); |
32 |
2
|
setLayoutParams(new LayoutParams(iWidth, iHeight)); |
33 |
2
|
initRectangles(iWidth, iHeight); |
34 |
|
} |
35 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (3) |
Complexity: 1 |
Complexity Density: 0,33 |
|
36 |
2
|
private void initRectangles(int iWidth, int iHeight)... |
37 |
|
{ |
38 |
2
|
rect.set(iBorder, iBorder, iWidth - iBorder, iHeight - iBorder); |
39 |
2
|
rectFrame.set(rect); |
40 |
2
|
rectFrame.inset(-2, -2); |
41 |
|
} |
42 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (2) |
Complexity: 1 |
Complexity Density: 0,5 |
|
43 |
2
|
private int getTotalHeight()... |
44 |
|
{ |
45 |
2
|
pt.setTextSize(fTextSize); |
46 |
2
|
return iBorder + iBorder + getTextHeight() + iBorder + iBorder; |
47 |
|
} |
48 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (1) |
Complexity: 1 |
Complexity Density: 1 |
|
49 |
52
|
private int getTextHeight()... |
50 |
|
{ |
51 |
52
|
return (int)(-pt.ascent() + pt.descent()); |
52 |
|
} |
53 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (3) |
Complexity: 1 |
Complexity Density: 0,33 |
|
54 |
25
|
@Override... |
55 |
|
protected void onDraw(Canvas canvas) |
56 |
|
{ |
57 |
25
|
super.onDraw(canvas); |
58 |
|
|
59 |
25
|
drawBackground(canvas); |
60 |
25
|
drawText(canvas); |
61 |
|
} |
62 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (5) |
Complexity: 1 |
Complexity Density: 0,2 |
|
63 |
25
|
private void drawBackground(Canvas canvas)... |
64 |
|
{ |
65 |
25
|
pt.setAntiAlias(true); |
66 |
|
|
67 |
25
|
pt.setColor(0xff335577); |
68 |
25
|
canvas.drawRoundRect(rectFrame, 5, 5, pt); |
69 |
|
|
70 |
25
|
pt.setColor(0xff557799); |
71 |
25
|
canvas.drawRoundRect(rect, 4, 4, pt); |
72 |
|
} |
73 |
|
|
|
|
| 90,5% |
Uncovered Elements: 2 (21) |
Complexity: 3 |
Complexity Density: 0,18 |
|
74 |
25
|
private void drawText(Canvas canvas)... |
75 |
|
{ |
76 |
25
|
pt.setAntiAlias(true); |
77 |
25
|
pt.setFakeBoldText(true); |
78 |
25
|
pt.setTypeface(null); |
79 |
25
|
pt.setTextSize(fTextSize); |
80 |
25
|
pt.setUnderlineText(false); |
81 |
|
|
82 |
25
|
final int iSpace = 4; |
83 |
25
|
final int iTimeWidth = (int)pt.measureText(sTime); |
84 |
25
|
final int iTimeSignWidth = (int)pt.measureText(sTimeSign); |
85 |
25
|
final int iTimeTotalWidth = iTimeWidth + (b24HourMode?0:(iSpace + iTimeSignWidth)); |
86 |
|
|
87 |
25
|
int iTextPosY = (int)rect.bottom + (int)(-pt.ascent()) - getTextHeight(); |
88 |
25
|
iTextPosY -= ((int)rect.height() >> 1) - (getTextHeight() >> 1); |
89 |
|
|
90 |
25
|
final int iTextPosX = (int)rect.left + (((int)rect.width() >> 1) - (iTimeTotalWidth >> 1)); |
91 |
|
|
92 |
25
|
pt.setColor(0xffffffff); |
93 |
25
|
canvas.drawText(sTime, iTextPosX, iTextPosY, pt); |
94 |
|
|
95 |
25
|
if (!b24HourMode) |
96 |
|
{ |
97 |
25
|
pt.setColor(0xffaaccee); |
98 |
25
|
canvas.drawText(sTimeSign, iTextPosX + iTimeWidth + iSpace, iTextPosY, pt); |
99 |
|
} |
100 |
|
} |
101 |
|
|
|
|
| 100% |
Uncovered Elements: 0 (5) |
Complexity: 2 |
Complexity Density: 0,67 |
|
102 |
27
|
private String GetMinutesString(int iMinutes)... |
103 |
|
{ |
104 |
27
|
if (iMinutes > 9) |
105 |
13
|
return ":" + Integer.toString(iMinutes); |
106 |
14
|
return ":0" + Integer.toString(iMinutes); |
107 |
|
} |
108 |
|
|
|
|
| 60% |
Uncovered Elements: 2 (5) |
Complexity: 2 |
Complexity Density: 0,67 |
|
109 |
27
|
private String GetUSTimeMark(int iHour)... |
110 |
|
{ |
111 |
27
|
if (iHour >= 12) |
112 |
27
|
return "pm"; |
113 |
0
|
return "am"; |
114 |
|
} |
115 |
|
|
|
|
| 59,1% |
Uncovered Elements: 9 (22) |
Complexity: 6 |
Complexity Density: 0,43 |
|
116 |
27
|
public void setTime(int iHour, int iMinutes)... |
117 |
|
{ |
118 |
27
|
if ((iHour == -1) || (iMinutes == -1)) |
119 |
|
{ |
120 |
0
|
sTime = ""; |
121 |
0
|
sTimeSign = ""; |
122 |
|
} else { |
123 |
27
|
if (b24HourMode) |
124 |
|
{ |
125 |
0
|
sTime = Integer.toString(iHour) + GetMinutesString(iMinutes); |
126 |
0
|
sTimeSign = ""; |
127 |
|
} else { |
128 |
27
|
int iDisplayHour = iHour; |
129 |
27
|
if (iDisplayHour == 0) |
130 |
0
|
iDisplayHour = 12; |
131 |
27
|
if (iDisplayHour > 12) |
132 |
27
|
iDisplayHour -= 12; |
133 |
27
|
sTime = Integer.toString(iDisplayHour) + GetMinutesString(iMinutes); |
134 |
27
|
sTimeSign = GetUSTimeMark(iHour); |
135 |
|
} |
136 |
|
} |
137 |
27
|
this.invalidate(); |
138 |
|
} |
139 |
|
|
140 |
|
} |