Skip to content

Commit 060750b

Browse files
author
maskara
committed
Added support for butterknife library for view bindings
1 parent a997184 commit 060750b

File tree

6 files changed

+109
-100
lines changed

6 files changed

+109
-100
lines changed

app/build.gradle

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ dependencies {
1616
compile "com.android.support:appcompat-v7:${project.supportLibVersion}"
1717
compile "com.android.support:design:${project.supportLibVersion}"
1818
compile 'com.google.code.gson:gson:2.7'
19+
compile "com.jakewharton:butterknife:$BUTTERKNIFE_VERSION"
20+
annotationProcessor "com.jakewharton:butterknife-compiler:$BUTTERKNIFE_VERSION"
1921

2022
testCompile 'junit:junit:4.12'
2123
}

app/src/main/java/fr/free/nrw/commons/AboutActivity.java

+9-11
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,21 @@
77

88
import fr.free.nrw.commons.theme.BaseActivity;
99

10+
import butterknife.BindView;
11+
import butterknife.ButterKnife;
12+
1013
public class AboutActivity extends BaseActivity {
11-
private TextView versionText;
12-
private TextView licenseText;
13-
private TextView improveText;
14-
private TextView privacyPolicyText;
15-
private TextView uploadsToText;
14+
@BindView(R.id.about_version) TextView versionText;
15+
@BindView(R.id.about_license) TextView licenseText;
16+
@BindView(R.id.about_improve) TextView improveText;
17+
@BindView(R.id.about_privacy_policy) TextView privacyPolicyText;
18+
@BindView(R.id.about_uploads_to) TextView uploadsToText;
1619

1720
@Override
1821
public void onCreate(Bundle savedInstanceState) {
1922
super.onCreate(savedInstanceState);
2023
setContentView(R.layout.activity_about);
21-
22-
versionText = (TextView) findViewById(R.id.about_version);
23-
licenseText = (TextView) findViewById(R.id.about_license);
24-
improveText = (TextView) findViewById(R.id.about_improve);
25-
privacyPolicyText = (TextView) findViewById(R.id.about_privacy_policy);
26-
uploadsToText = (TextView) findViewById(R.id.about_uploads_to);
24+
ButterKnife.bind(this);
2725

2826
uploadsToText.setText(CommonsApplication.EVENTLOG_WIKI);
2927
versionText.setText(CommonsApplication.APPLICATION_VERSION);

app/src/main/java/fr/free/nrw/commons/contributions/ContributionsListFragment.java

+6-8
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525

2626
import java.lang.reflect.Method;
2727

28+
import butterknife.BindView;
29+
import butterknife.ButterKnife;
2830
import fr.free.nrw.commons.AboutActivity;
2931
import fr.free.nrw.commons.CommonsApplication;
3032
import fr.free.nrw.commons.R;
@@ -39,21 +41,17 @@ public interface SourceRefresher {
3941
void refreshSource();
4042
}
4143

42-
private GridView contributionsList;
43-
private TextView waitingMessage;
44-
private TextView emptyMessage;
44+
@BindView(R.id.contributionsList) GridView contributionsList;
45+
@BindView(R.id.waitingMessage) TextView waitingMessage;
46+
@BindView(R.id.emptyMessage) TextView emptyMessage;
4547

4648
private ContributionController controller;
4749
private static final String TAG = "ContributionsList";
4850

4951
@Override
5052
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
5153
View v = inflater.inflate(R.layout.fragment_contributions, container, false);
52-
53-
54-
contributionsList = (GridView) v.findViewById(R.id.contributionsList);
55-
waitingMessage = (TextView) v.findViewById(R.id.waitingMessage);
56-
emptyMessage = (TextView) v.findViewById(R.id.emptyMessage);
54+
ButterKnife.bind(this, v);
5755

5856
contributionsList.setOnItemClickListener((AdapterView.OnItemClickListener)getActivity());
5957
if(savedInstanceState != null) {

app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java

+60-81
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,28 @@
2929

3030
import java.util.ArrayList;
3131

32+
import butterknife.BindView;
33+
import butterknife.ButterKnife;
34+
import butterknife.OnClick;
35+
import butterknife.OnItemSelected;
36+
import butterknife.OnTouch;
3237
import fr.free.nrw.commons.Prefs;
3338
import fr.free.nrw.commons.R;
3439
import fr.free.nrw.commons.Utils;
3540

3641
public class SingleUploadFragment extends Fragment {
42+
private SharedPreferences prefs;
43+
private String license;
3744

3845
public interface OnUploadActionInitiated {
3946
void uploadActionInitiated(String title, String description);
4047
}
4148

42-
private EditText titleEdit;
43-
private EditText descEdit;
44-
private TextView licenseSummaryView;
45-
private Spinner licenseSpinner;
49+
@BindView(R.id.titleEdit) EditText titleEdit;
50+
@BindView(R.id.descEdit) EditText descEdit;
51+
@BindView(R.id.titleDescButton) Button titleDescButton;
52+
@BindView(R.id.share_license_summary) TextView licenseSummaryView;
53+
@BindView(R.id.licenseSpinner) Spinner licenseSpinner;
4654

4755
private OnUploadActionInitiated uploadActionInitiatedHandler;
4856

@@ -82,12 +90,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
8290
@Override
8391
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
8492
View rootView = inflater.inflate(R.layout.fragment_single_upload, null);
85-
86-
titleEdit = (EditText)rootView.findViewById(R.id.titleEdit);
87-
descEdit = (EditText)rootView.findViewById(R.id.descEdit);
88-
Button titleDescButton = (Button) rootView.findViewById(R.id.titleDescButton);
89-
licenseSpinner = (Spinner) rootView.findViewById(R.id.licenseSpinner);
90-
licenseSummaryView = (TextView)rootView.findViewById(R.id.share_license_summary);
93+
ButterKnife.bind(this, rootView);
9194

9295
ArrayList<String> licenseItems = new ArrayList<>();
9396
licenseItems.add(getString(R.string.license_name_cc0));
@@ -96,8 +99,8 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
9699
licenseItems.add(getString(R.string.license_name_cc_by_four));
97100
licenseItems.add(getString(R.string.license_name_cc_by_sa_four));
98101

99-
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
100-
final String license = prefs.getString(Prefs.DEFAULT_LICENSE, Prefs.Licenses.CC_BY_SA_3);
102+
prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
103+
license = prefs.getString(Prefs.DEFAULT_LICENSE, Prefs.Licenses.CC_BY_SA_3);
101104

102105
Log.d("Single Upload fragment", license);
103106

@@ -108,59 +111,6 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
108111
Log.d("Single Upload fragment", "Position:"+position+" "+getString(Utils.licenseNameFor(license)));
109112
licenseSpinner.setSelection(position);
110113

111-
licenseSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
112-
@Override
113-
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
114-
115-
//Set selected color to white because it should be readable on random images.
116-
TextView selectedText = (TextView) licenseSpinner.getChildAt(0);
117-
if (selectedText != null ) {
118-
selectedText.setTextColor(Color.WHITE);
119-
}
120-
121-
String licenseName = parent.getItemAtPosition(position).toString();
122-
123-
String license = Prefs.Licenses.CC_BY_SA_3; // default value
124-
if(getString(R.string.license_name_cc0).equals(licenseName)) {
125-
license = Prefs.Licenses.CC0;
126-
} else if(getString(R.string.license_name_cc_by).equals(licenseName)) {
127-
license = Prefs.Licenses.CC_BY_3;
128-
} else if(getString(R.string.license_name_cc_by_sa).equals(licenseName)) {
129-
license = Prefs.Licenses.CC_BY_SA_3;
130-
} else if(getString(R.string.license_name_cc_by_four).equals(licenseName)) {
131-
license = Prefs.Licenses.CC_BY_4;
132-
} else if(getString(R.string.license_name_cc_by_sa_four).equals(licenseName)) {
133-
license = Prefs.Licenses.CC_BY_SA_4;
134-
}
135-
136-
setLicenseSummary(license);
137-
SharedPreferences.Editor editor = prefs.edit();
138-
editor.putString(Prefs.DEFAULT_LICENSE, license);
139-
editor.apply();
140-
}
141-
142-
@Override
143-
public void onNothingSelected(AdapterView<?> parent) {
144-
145-
}
146-
});
147-
148-
titleDescButton.setOnClickListener(new View.OnClickListener()
149-
{
150-
@Override
151-
public void onClick(View v)
152-
{
153-
//Retrieve last title and desc entered
154-
SharedPreferences titleDesc = PreferenceManager.getDefaultSharedPreferences(getActivity());
155-
String title = titleDesc.getString("Title", "");
156-
String desc = titleDesc.getString("Desc", "");
157-
Log.d(TAG, "Title: " + title + ", Desc: " + desc);
158-
159-
titleEdit.setText(title);
160-
descEdit.setText(desc);
161-
}
162-
});
163-
164114
TextWatcher uploadEnabler = new TextWatcher() {
165115
@Override
166116
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { }
@@ -180,25 +130,54 @@ public void afterTextChanged(Editable editable) {
180130

181131
setLicenseSummary(license);
182132

183-
// Open license page on touch
184-
licenseSummaryView.setOnTouchListener(new View.OnTouchListener() {
185-
@Override
186-
public boolean onTouch(View view, MotionEvent motionEvent) {
187-
if (motionEvent.getActionMasked() == MotionEvent.ACTION_DOWN) {
188-
Intent intent = new Intent();
189-
intent.setAction(Intent.ACTION_VIEW);
190-
intent.setData(Uri.parse(Utils.licenseUrlFor(license)));
191-
startActivity(intent);
192-
return true;
193-
} else {
194-
return false;
195-
}
196-
}
197-
});
198-
199133
return rootView;
200134
}
201135

136+
@OnItemSelected(R.id.licenseSpinner) void onLicenseSelected(AdapterView<?> parent, View view, int position, long id) {
137+
String licenseName = parent.getItemAtPosition(position).toString();
138+
139+
String license = Prefs.Licenses.CC_BY_SA_3; // default value
140+
if(getString(R.string.license_name_cc0).equals(licenseName)) {
141+
license = Prefs.Licenses.CC0;
142+
} else if(getString(R.string.license_name_cc_by).equals(licenseName)) {
143+
license = Prefs.Licenses.CC_BY_3;
144+
} else if(getString(R.string.license_name_cc_by_sa).equals(licenseName)) {
145+
license = Prefs.Licenses.CC_BY_SA_3;
146+
} else if(getString(R.string.license_name_cc_by_four).equals(licenseName)) {
147+
license = Prefs.Licenses.CC_BY_4;
148+
} else if(getString(R.string.license_name_cc_by_sa_four).equals(licenseName)) {
149+
license = Prefs.Licenses.CC_BY_SA_4;
150+
}
151+
152+
setLicenseSummary(license);
153+
SharedPreferences.Editor editor = prefs.edit();
154+
editor.putString(Prefs.DEFAULT_LICENSE, license);
155+
editor.commit();
156+
}
157+
158+
@OnTouch(R.id.share_license_summary) boolean showLicence(View view, MotionEvent motionEvent) {
159+
if (motionEvent.getActionMasked() == MotionEvent.ACTION_DOWN) {
160+
Intent intent = new Intent();
161+
intent.setAction(Intent.ACTION_VIEW);
162+
intent.setData(Uri.parse(Utils.licenseUrlFor(license)));
163+
startActivity(intent);
164+
return true;
165+
} else {
166+
return false;
167+
}
168+
}
169+
170+
@OnClick(R.id.titleDescButton) void setTitleDescButton() {
171+
//Retrieve last title and desc entered
172+
SharedPreferences titleDesc = PreferenceManager.getDefaultSharedPreferences(getActivity());
173+
String title = titleDesc.getString("Title", "");
174+
String desc = titleDesc.getString("Desc", "");
175+
Log.d(TAG, "Title: " + title + ", Desc: " + desc);
176+
177+
titleEdit.setText(title);
178+
descEdit.setText(desc);
179+
}
180+
202181
private void setLicenseSummary(String license) {
203182
licenseSummaryView.setText(getString(R.string.share_license_summary, getString(Utils.licenseNameFor(license))));
204183
}

gradle.properties

+4
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,7 @@ buildToolsVersion = 25.0.1
77

88
minSdkVersion = 15
99
targetSdkVersion = 25
10+
android.useDeprecatedNdk=true
11+
12+
# Library dependencies
13+
BUTTERKNIFE_VERSION=8.4.0

script/style/checkstyle.xml

+28
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,34 @@
7777
<message key="ws.notPreceded"
7878
value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
7979
</module>
80+
81+
<module name="VisibilityModifier">
82+
<property name="packageAllowed" value="false"/>
83+
84+
<!-- Butter Knife -->
85+
<property name="ignoreAnnotationCanonicalNames" value="BindArray" />
86+
<property name="ignoreAnnotationCanonicalNames" value="BindBitmap" />
87+
<property name="ignoreAnnotationCanonicalNames" value="BindBool" />
88+
<property name="ignoreAnnotationCanonicalNames" value="BindColor" />
89+
<property name="ignoreAnnotationCanonicalNames" value="BindDimen" />
90+
<property name="ignoreAnnotationCanonicalNames" value="BindDrawable" />
91+
<property name="ignoreAnnotationCanonicalNames" value="BindInt" />
92+
<property name="ignoreAnnotationCanonicalNames" value="BindString" />
93+
<property name="ignoreAnnotationCanonicalNames" value="BindView" />
94+
<property name="ignoreAnnotationCanonicalNames" value="BindViews" />
95+
<property name="ignoreAnnotationCanonicalNames" value="OnCheckedChanged" />
96+
<property name="ignoreAnnotationCanonicalNames" value="OnClick" />
97+
<property name="ignoreAnnotationCanonicalNames" value="OnEditorAction" />
98+
<property name="ignoreAnnotationCanonicalNames" value="OnFocusChange" />
99+
<property name="ignoreAnnotationCanonicalNames" value="OnItemClick" />
100+
<property name="ignoreAnnotationCanonicalNames" value="OnItemLongClick" />
101+
<property name="ignoreAnnotationCanonicalNames" value="OnItemSelected" />
102+
<property name="ignoreAnnotationCanonicalNames" value="OnLongClick" />
103+
<property name="ignoreAnnotationCanonicalNames" value="OnPageChange" />
104+
<property name="ignoreAnnotationCanonicalNames" value="OnTextChanged" />
105+
<property name="ignoreAnnotationCanonicalNames" value="OnTouch" />
106+
</module>
107+
80108
<module name="OneStatementPerLine"/>
81109
<module name="MultipleVariableDeclarations"/>
82110
<module name="ArrayTypeStyle"/>

0 commit comments

Comments
 (0)