2
2
3
3
import android .content .Context ;
4
4
import android .content .Intent ;
5
+ import android .content .SharedPreferences ;
5
6
import android .graphics .Canvas ;
6
7
import android .graphics .Paint ;
7
8
import android .support .v4 .content .ContextCompat ;
12
13
import android .text .TextUtils ;
13
14
import android .text .style .ClickableSpan ;
14
15
import android .text .style .LineBackgroundSpan ;
16
+ import android .util .TypedValue ;
15
17
import android .view .Menu ;
16
18
import android .view .MenuItem ;
17
19
import android .view .View ;
18
20
import android .widget .TextView ;
19
21
20
22
import com .gh4a .R ;
23
+ import com .gh4a .fragment .SettingsFragment ;
21
24
import com .gh4a .loader .TimelineItem ;
22
25
import com .gh4a .utils .IntentUtils ;
23
26
import com .gh4a .utils .StringUtils ;
27
30
28
31
class DiffViewHolder extends TimelineItemAdapter .TimelineItemViewHolder <TimelineItem .Diff >
29
32
implements View .OnClickListener {
33
+ private static final float [] DIFF_SIZE_MULTIPLIERS = new float [] {
34
+ 0.667F , 0.833F , 1F , 1.5F , 2F
35
+ };
30
36
31
37
private final int mAddedLineBackgroundColor ;
32
38
private final int mRemovedLineBackgroundColor ;
@@ -43,6 +49,7 @@ class DiffViewHolder extends TimelineItemAdapter.TimelineItemViewHolder<Timeline
43
49
private final String mRepoOwner ;
44
50
private final String mRepoName ;
45
51
private final int mIssueNumber ;
52
+ private final float mInitialDiffTextSize ;
46
53
47
54
public DiffViewHolder (View itemView , String repoOwner , String repoName , int issueNumber ) {
48
55
super (itemView );
@@ -67,6 +74,7 @@ public DiffViewHolder(View itemView, String repoOwner, String repoName, int issu
67
74
68
75
mDiffHunkTextView = itemView .findViewById (R .id .diff_hunk );
69
76
mDiffHunkTextView .setMovementMethod (UiUtils .CHECKING_LINK_METHOD );
77
+ mInitialDiffTextSize = mDiffHunkTextView .getTextSize ();
70
78
mFileTextView = itemView .findViewById (R .id .tv_file );
71
79
mFileTextView .setOnClickListener (this );
72
80
}
@@ -152,6 +160,17 @@ public void bind(TimelineItem.Diff item) {
152
160
builder .setSpan (span , spanStart , builder .length (), Spanned .SPAN_EXCLUSIVE_EXCLUSIVE );
153
161
}
154
162
mDiffHunkTextView .setText (builder );
163
+ mDiffHunkTextView .setTextSize (TypedValue .COMPLEX_UNIT_PX ,
164
+ mInitialDiffTextSize * getDiffSizeMultiplier ());
165
+ }
166
+
167
+ private float getDiffSizeMultiplier () {
168
+ Context context = itemView .getContext ();
169
+ SharedPreferences prefs = context .getSharedPreferences (SettingsFragment .PREF_NAME ,
170
+ Context .MODE_PRIVATE );
171
+ int textSizeSetting = prefs .getInt (SettingsFragment .KEY_TEXT_SIZE , 2 );
172
+ return textSizeSetting >= 0 && textSizeSetting < DIFF_SIZE_MULTIPLIERS .length
173
+ ? DIFF_SIZE_MULTIPLIERS [textSizeSetting ] : 1F ;
155
174
}
156
175
157
176
private void appendLineNumber (SpannableStringBuilder builder , int maxLength , String numberText ,
0 commit comments