Skip to content

Commit c93ab86

Browse files
authored
upload: added titles for each step of upload with a tooltip for futher explanation (commons-app#4030)
1 parent d2b6c70 commit c93ab86

9 files changed

+141
-39
lines changed

app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
import android.text.Editable;
55
import android.view.LayoutInflater;
66
import android.view.View;
7+
import android.view.View.OnClickListener;
78
import android.view.ViewGroup;
9+
import android.widget.ImageView;
810
import android.widget.ProgressBar;
911
import android.widget.TextView;
1012
import androidx.annotation.NonNull;
@@ -42,6 +44,8 @@ public class UploadCategoriesFragment extends UploadBaseFragment implements Cate
4244
ProgressBar pbCategories;
4345
@BindView(R.id.rv_categories)
4446
RecyclerView rvCategories;
47+
@BindView(R.id.tooltip)
48+
ImageView tooltip;
4549

4650
@Inject
4751
CategoriesContract.UserActionListener presenter;
@@ -64,7 +68,13 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
6468

6569
private void init() {
6670
tvTitle.setText(getString(R.string.step_count, callback.getIndexInViewFlipper(this) + 1,
67-
callback.getTotalNumberOfSteps()));
71+
callback.getTotalNumberOfSteps(), getString(R.string.categories_activity_title)));
72+
tooltip.setOnClickListener(new OnClickListener() {
73+
@Override
74+
public void onClick(View v) {
75+
DialogUtil.showAlertDialog(getActivity(), getString(R.string.categories_activity_title), getString(R.string.categories_tooltip), getString(android.R.string.ok), null, true);
76+
}
77+
});
6878
presenter.onAttachView(this);
6979
initRecyclerView();
7080
addTextChangeListenerToEtSearch();

app/src/main/java/fr/free/nrw/commons/upload/depicts/DepictsFragment.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import android.os.Bundle;
44
import android.view.LayoutInflater;
55
import android.view.View;
6+
import android.view.View.OnClickListener;
67
import android.view.ViewGroup;
8+
import android.widget.ImageView;
79
import android.widget.ProgressBar;
810
import android.widget.TextView;
911
import androidx.annotation.NonNull;
@@ -45,6 +47,8 @@ public class DepictsFragment extends UploadBaseFragment implements DepictsContra
4547
ProgressBar depictsSearchInProgress;
4648
@BindView(R.id.depicts_recycler_view)
4749
RecyclerView depictsRecyclerView;
50+
@BindView(R.id.tooltip)
51+
ImageView tooltip;
4852

4953
@Inject
5054
DepictsContract.UserActionListener presenter;
@@ -71,7 +75,13 @@ public void onViewCreated(@NonNull android.view.View view, @Nullable Bundle save
7175
*/
7276
private void init() {
7377
depictsTitle.setText(getString(R.string.step_count, callback.getIndexInViewFlipper(this) + 1,
74-
callback.getTotalNumberOfSteps()));
78+
callback.getTotalNumberOfSteps(), getString(R.string.depicts_step_title)));
79+
tooltip.setOnClickListener(new OnClickListener() {
80+
@Override
81+
public void onClick(View v) {
82+
DialogUtil.showAlertDialog(getActivity(), getString(R.string.depicts_step_title), getString(R.string.depicts_tooltip), getString(android.R.string.ok), null, true);
83+
}
84+
});
7585
presenter.onAttachView(this);
7686
initRecyclerView();
7787
addTextChangeListenerToSearchBox();

app/src/main/java/fr/free/nrw/commons/upload/license/MediaLicenseFragment.java

+16-1
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,21 @@
99
import android.text.style.URLSpan;
1010
import android.view.LayoutInflater;
1111
import android.view.View;
12+
import android.view.View.OnClickListener;
1213
import android.view.ViewGroup;
1314
import android.widget.AdapterView;
1415
import android.widget.AdapterView.OnItemSelectedListener;
1516
import android.widget.ArrayAdapter;
17+
import android.widget.ImageView;
1618
import android.widget.Spinner;
1719
import android.widget.TextView;
1820
import androidx.annotation.NonNull;
1921
import androidx.annotation.Nullable;
22+
23+
import fr.free.nrw.commons.utils.DialogUtil;
24+
import java.util.List;
25+
26+
import javax.inject.Inject;
2027
import butterknife.BindView;
2128
import butterknife.ButterKnife;
2229
import butterknife.OnClick;
@@ -35,6 +42,8 @@ public class MediaLicenseFragment extends UploadBaseFragment implements MediaLic
3542
Spinner spinnerLicenseList;
3643
@BindView(R.id.tv_share_license_summary)
3744
TextView tvShareLicenseSummary;
45+
@BindView(R.id.tooltip)
46+
ImageView tooltip;
3847

3948
@Inject
4049
MediaLicenseContract.UserActionListener presenter;
@@ -63,7 +72,13 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
6372

6473
private void init() {
6574
tvTitle.setText(getString(R.string.step_count, callback.getIndexInViewFlipper(this) + 1,
66-
callback.getTotalNumberOfSteps()));
75+
callback.getTotalNumberOfSteps(), getString(R.string.license_step_title)));
76+
tooltip.setOnClickListener(new OnClickListener() {
77+
@Override
78+
public void onClick(View v) {
79+
DialogUtil.showAlertDialog(getActivity(), getString(R.string.license_step_title), getString(R.string.license_tooltip), getString(android.R.string.ok), null, true);
80+
}
81+
});
6782
initPresenter();
6883
initLicenseSpinner();
6984
presenter.getLicenses();

app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
import android.os.Bundle;
77
import android.view.LayoutInflater;
88
import android.view.View;
9+
import android.view.View.OnClickListener;
910
import android.view.ViewGroup;
11+
import android.widget.ImageView;
1012
import android.widget.LinearLayout;
1113
import android.widget.TextView;
1214
import androidx.annotation.NonNull;
@@ -63,6 +65,8 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements
6365
AppCompatButton btnNext;
6466
@BindView(R.id.btn_previous)
6567
AppCompatButton btnPrevious;
68+
@BindView(R.id.tooltip)
69+
ImageView tooltip;
6670
private UploadMediaDetailAdapter uploadMediaDetailAdapter;
6771
@BindView(R.id.btn_copy_prev_title_desc)
6872
AppCompatButton btnCopyPreviousTitleDesc;
@@ -111,7 +115,13 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
111115

112116
private void init() {
113117
tvTitle.setText(getString(R.string.step_count, callback.getIndexInViewFlipper(this) + 1,
114-
callback.getTotalNumberOfSteps()));
118+
callback.getTotalNumberOfSteps(), getString(R.string.media_detail_step_title)));
119+
tooltip.setOnClickListener(new OnClickListener() {
120+
@Override
121+
public void onClick(View v) {
122+
showInfoAlert(R.string.media_detail_step_title, R.string.media_details_tooltip);
123+
}
124+
});
115125
initRecyclerView();
116126
initPresenter();
117127
presenter.receiveImage(uploadableFile, place);

app/src/main/res/layout/fragment_media_license.xml

+18-6
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,28 @@
1212
android:layout_above="@+id/ll_container_license_desc"
1313
android:orientation="vertical">
1414

15-
<TextView
16-
android:id="@+id/tv_title"
17-
android:textStyle="bold"
15+
<LinearLayout
1816
android:layout_width="wrap_content"
1917
android:layout_height="@dimen/half_standard_height"
2018
android:layout_marginEnd="@dimen/standard_gap"
2119
android:layout_marginRight="@dimen/standard_gap"
22-
android:gravity="center_vertical"
23-
android:textSize="@dimen/normal_text"
24-
tools:text="Step 1 of 15"/>
20+
android:orientation="horizontal">
21+
<TextView
22+
android:id="@+id/tv_title"
23+
android:layout_width="wrap_content"
24+
android:layout_height="@dimen/half_standard_height"
25+
android:layout_marginEnd="@dimen/standard_gap"
26+
android:layout_marginRight="@dimen/standard_gap"
27+
android:gravity="center_vertical"
28+
android:textSize="@dimen/normal_text"
29+
android:textStyle="bold"
30+
tools:text="Step 1 of 15" />
31+
<ImageView
32+
android:id="@+id/tooltip"
33+
android:layout_width="wrap_content"
34+
android:layout_height="match_parent"
35+
android:src="@drawable/mapbox_info_icon_default"/>
36+
</LinearLayout>
2537

2638
<TextView
2739
android:id="@+id/tv_subtitle"

app/src/main/res/layout/fragment_upload_media_detail_fragment.xml

+18-6
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,28 @@
3030
android:layout_width="match_parent"
3131
android:layout_height="wrap_content">
3232

33-
<TextView
34-
android:id="@+id/tv_title"
33+
<LinearLayout
3534
android:layout_width="wrap_content"
3635
android:layout_height="@dimen/half_standard_height"
3736
android:layout_marginEnd="@dimen/standard_gap"
3837
android:layout_marginRight="@dimen/standard_gap"
39-
android:gravity="center_vertical"
40-
android:textSize="@dimen/normal_text"
41-
android:textStyle="bold"
42-
tools:text="Step 1 of 15" />
38+
android:orientation="horizontal">
39+
<TextView
40+
android:id="@+id/tv_title"
41+
android:layout_width="wrap_content"
42+
android:layout_height="@dimen/half_standard_height"
43+
android:layout_marginEnd="@dimen/standard_gap"
44+
android:layout_marginRight="@dimen/standard_gap"
45+
android:gravity="center_vertical"
46+
android:textSize="@dimen/normal_text"
47+
android:textStyle="bold"
48+
tools:text="Step 1 of 15" />
49+
<ImageView
50+
android:id="@+id/tooltip"
51+
android:layout_width="wrap_content"
52+
android:layout_height="match_parent"
53+
android:src="@drawable/mapbox_info_icon_default"/>
54+
</LinearLayout>
4355

4456
<androidx.appcompat.widget.AppCompatImageButton
4557
android:id="@+id/ib_map"

app/src/main/res/layout/upload_categories_fragment.xml

+18-6
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,28 @@
1111
android:layout_height="match_parent"
1212
android:layout_above="@+id/button_divider"
1313
android:orientation="vertical">
14-
<TextView
15-
android:id="@+id/tv_title"
16-
android:textStyle="bold"
14+
<LinearLayout
1715
android:layout_width="wrap_content"
1816
android:layout_height="@dimen/half_standard_height"
1917
android:layout_marginEnd="@dimen/standard_gap"
2018
android:layout_marginRight="@dimen/standard_gap"
21-
android:gravity="center_vertical"
22-
android:textSize="@dimen/normal_text"
23-
tools:text="Step 1 of 15"/>
19+
android:orientation="horizontal">
20+
<TextView
21+
android:id="@+id/tv_title"
22+
android:layout_width="wrap_content"
23+
android:layout_height="@dimen/half_standard_height"
24+
android:layout_marginEnd="@dimen/standard_gap"
25+
android:layout_marginRight="@dimen/standard_gap"
26+
android:gravity="center_vertical"
27+
android:textSize="@dimen/normal_text"
28+
android:textStyle="bold"
29+
tools:text="Step 1 of 15" />
30+
<ImageView
31+
android:id="@+id/tooltip"
32+
android:layout_width="wrap_content"
33+
android:layout_height="match_parent"
34+
android:src="@drawable/mapbox_info_icon_default"/>
35+
</LinearLayout>
2436

2537
<TextView
2638
android:id="@+id/tv_subtitle"

app/src/main/res/layout/upload_depicts_fragment.xml

+28-16
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,34 @@
1212
android:layout_above="@+id/button_divider"
1313
android:orientation="vertical">
1414

15-
<TextView
16-
android:id="@+id/depicts_title"
17-
android:layout_width="wrap_content"
18-
android:layout_height="24dp"
19-
android:layout_marginStart="@dimen/standard_gap"
20-
android:layout_marginLeft="@dimen/standard_gap"
21-
android:layout_marginTop="@dimen/standard_gap"
22-
android:layout_marginEnd="@dimen/standard_gap"
23-
android:layout_marginRight="@dimen/standard_gap"
24-
android:layout_alignParentStart="true"
25-
android:layout_alignParentLeft="true"
26-
android:layout_alignParentTop="true"
27-
android:gravity="center_vertical"
28-
android:textSize="@dimen/normal_text"
29-
android:textStyle="bold"
30-
tools:text="Step 1 of 15" />
15+
<LinearLayout
16+
android:layout_width="wrap_content"
17+
android:layout_height="@dimen/half_standard_height"
18+
android:layout_marginStart="@dimen/standard_gap"
19+
android:layout_marginLeft="@dimen/standard_gap"
20+
android:layout_marginTop="@dimen/standard_gap"
21+
android:layout_marginEnd="@dimen/standard_gap"
22+
android:layout_marginRight="@dimen/standard_gap"
23+
android:layout_alignParentStart="true"
24+
android:layout_alignParentLeft="true"
25+
android:layout_alignParentTop="true"
26+
android:orientation="horizontal">
27+
<TextView
28+
android:id="@+id/depicts_title"
29+
android:layout_width="wrap_content"
30+
android:layout_height="@dimen/half_standard_height"
31+
android:layout_marginEnd="@dimen/standard_gap"
32+
android:layout_marginRight="@dimen/standard_gap"
33+
android:gravity="center_vertical"
34+
android:textSize="@dimen/normal_text"
35+
android:textStyle="bold"
36+
tools:text="Step 1 of 15" />
37+
<ImageView
38+
android:id="@+id/tooltip"
39+
android:layout_width="wrap_content"
40+
android:layout_height="match_parent"
41+
android:src="@drawable/mapbox_info_icon_default"/>
42+
</LinearLayout>
3143

3244
<TextView
3345
android:id="@+id/depicts_subtitle"

app/src/main/res/values/strings.xml

+10-1
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@
436436

437437
<string name="write_storage_permission_rationale_for_image_share">We need your permission to access the external storage of your device in order to upload images.</string>
438438
<string name="nearby_notification_dismiss_message">You won\'t see the nearest place that needs pictures anymore. However, you can re-enable this notification in Settings if you wish.</string>
439-
<string name="step_count">Step %1$d of %2$d</string>
439+
<string name="step_count">Step %1$d of %2$d: %3$s</string>
440440
<string name="image_in_set_label">Image %1$d in set</string>
441441
<string name="next">Next</string>
442442
<string name="previous">Previous</string>
@@ -703,4 +703,13 @@ Upload your first media by tapping on the add button.</string>
703703
<string name="quality_images_info">Quality images are diagrams or photographs that meet certain quality standards (which are mostly technical in nature) and are valuable for Wikimedia projects</string>
704704
<string name="resuming_upload">Resuming upload…</string>
705705
<string name="pausing_upload">Pausing upload…</string>
706+
707+
<string name="media_details_tooltip">Please write a short caption that says what your picture shows. In the description, say what makes the picture interesting or typical or rare, and explain the context, visible or not. Use exact terminology as much as you can.</string>
708+
<string name="depicts_tooltip">Please find and select all concepts that this image portrays. Be as specific as you can. If the image portrays multiple items, choose them all within reason. Do not choose generic tags if more specific tags are available.</string>
709+
<string name="categories_tooltip">Please select the appropriate categories. Unlike depictions, categories are only in English.</string>
710+
<string name="license_tooltip">Commons makes your pictures reusable and adapted by everyone. Do you want to waive all rights? Do you want to be attributed? Do you want adaptations to use the same license?</string>
711+
<string name="depicts_step_title">Depicts</string>
712+
<string name="license_step_title">Media License</string>
713+
<string name="media_detail_step_title">Media Details</string>
714+
706715
</resources>

0 commit comments

Comments
 (0)