11
11
import android .text .Editable ;
12
12
import android .text .TextUtils ;
13
13
import android .text .TextWatcher ;
14
+ import android .util .Log ;
14
15
import android .util .TypedValue ;
15
16
import android .view .LayoutInflater ;
16
17
import android .view .View ;
17
18
import android .view .ViewGroup ;
18
19
import android .view .ViewTreeObserver ;
20
+ import android .widget .ArrayAdapter ;
19
21
import android .widget .Button ;
20
22
import android .widget .EditText ;
21
23
import android .widget .LinearLayout ;
22
24
import android .widget .ScrollView ;
25
+ import android .widget .Spinner ;
23
26
import android .widget .TextView ;
24
27
import android .widget .Toast ;
25
28
42
45
import fr .free .nrw .commons .MediaWikiImageView ;
43
46
import fr .free .nrw .commons .PageTitle ;
44
47
import fr .free .nrw .commons .R ;
48
+ import fr .free .nrw .commons .auth .SessionManager ;
45
49
import fr .free .nrw .commons .category .CategoryDetailsActivity ;
46
50
import fr .free .nrw .commons .delete .DeleteTask ;
51
+ import fr .free .nrw .commons .delete .ReasonBuilder ;
47
52
import fr .free .nrw .commons .di .CommonsDaggerSupportFragment ;
48
53
import fr .free .nrw .commons .location .LatLng ;
49
54
import fr .free .nrw .commons .mwapi .MediaWikiApi ;
@@ -61,6 +66,8 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment {
61
66
private MediaDetailPagerFragment .MediaDetailProvider detailProvider ;
62
67
private int index ;
63
68
private Locale locale ;
69
+ private boolean isDeleted = false ;
70
+
64
71
65
72
public static MediaDetailFragment forMedia (int index , boolean editable , boolean isCategoryImage ) {
66
73
MediaDetailFragment mf = new MediaDetailFragment ();
@@ -81,6 +88,8 @@ public static MediaDetailFragment forMedia(int index, boolean editable, boolean
81
88
Provider <MediaDataExtractor > mediaDataExtractorProvider ;
82
89
@ Inject
83
90
MediaWikiApi mwApi ;
91
+ @ Inject
92
+ SessionManager sessionManager ;
84
93
85
94
private int initialListTop = 0 ;
86
95
@@ -124,6 +133,11 @@ public static MediaDetailFragment forMedia(int index, boolean editable, boolean
124
133
125
134
//Had to make this class variable, to implement various onClicks, which access the media, also I fell why make separate variables when one can serve the purpose
126
135
private Media media ;
136
+ private String reasonList [] = {"I uploaded it by mistake" ,
137
+ "I did not know it would be publicly visible" ,
138
+ "I realized it is bad for my privacy" ,
139
+ "Sorry this picture is not interesting for an encyclopedia" ,
140
+ "I changed my mind, I don't want it to be publicly visible anymore" };
127
141
128
142
@ Override
129
143
public void onSaveInstanceState (Bundle outState ) {
@@ -353,52 +367,43 @@ public void onMediaDetailCoordinatesClicked(){
353
367
354
368
@ OnClick (R .id .nominateDeletion )
355
369
public void onDeleteButtonClicked (){
356
- //Reviewer correct me if i have misunderstood something over here
357
- //But how does this if (delete.getVisibility() == View.VISIBLE) {
358
- // enableDeleteButton(true); makes sense ?
359
- AlertDialog .Builder alert = new AlertDialog .Builder (getActivity ());
360
- alert .setMessage ("Why should this file be deleted?" );
361
- final EditText input = new EditText (getActivity ());
362
- alert .setView (input );
363
- input .requestFocus ();
364
- alert .setPositiveButton (R .string .ok , new DialogInterface .OnClickListener () {
365
- public void onClick (DialogInterface dialog , int whichButton ) {
366
- String reason = input .getText ().toString ();
367
- DeleteTask deleteTask = new DeleteTask (getActivity (), media , reason );
368
- deleteTask .execute ();
369
- enableDeleteButton (false );
370
- }
371
- });
372
- alert .setNegativeButton (R .string .cancel , new DialogInterface .OnClickListener () {
373
- public void onClick (DialogInterface dialog , int whichButton ) {
374
- }
375
- });
376
- AlertDialog d = alert .create ();
377
- input .addTextChangedListener (new TextWatcher () {
378
- private void handleText () {
379
- final Button okButton = d .getButton (AlertDialog .BUTTON_POSITIVE );
380
- if (input .getText ().length () == 0 ) {
381
- okButton .setEnabled (false );
382
- } else {
383
- okButton .setEnabled (true );
384
- }
385
- }
386
-
387
- @ Override
388
- public void afterTextChanged (Editable arg0 ) {
389
- handleText ();
390
- }
391
-
392
- @ Override
393
- public void beforeTextChanged (CharSequence s , int start , int count , int after ) {
394
- }
395
-
370
+ final ArrayAdapter <String > languageAdapter = new ArrayAdapter <String >(getActivity (),
371
+ R .layout .simple_spinner_dropdown_list , reasonList );
372
+ final Spinner spinner = new Spinner (getActivity ());
373
+ spinner .setLayoutParams (new LinearLayout .LayoutParams (LinearLayout .LayoutParams .WRAP_CONTENT , LinearLayout .LayoutParams .WRAP_CONTENT ));
374
+ spinner .setAdapter (languageAdapter );
375
+ spinner .setGravity (17 );
376
+
377
+ AlertDialog .Builder builder = new AlertDialog .Builder (getActivity ());
378
+ builder .setView (spinner );
379
+ builder .setTitle (R .string .nominate_delete )
380
+ .setPositiveButton (R .string .about_translate_proceed , new DialogInterface .OnClickListener () {
381
+ @ Override
382
+ public void onClick (DialogInterface dialog , int which ) {
383
+ String reason = spinner .getSelectedItem ().toString ();
384
+ ReasonBuilder reasonBuilder = new ReasonBuilder (reason ,
385
+ getActivity (),
386
+ media ,
387
+ sessionManager ,
388
+ mwApi );
389
+ reason = reasonBuilder .getReason ();
390
+ DeleteTask deleteTask = new DeleteTask (getActivity (), media , reason );
391
+ deleteTask .execute ();
392
+ isDeleted = true ;
393
+ enableDeleteButton (false );
394
+ }
395
+ });
396
+ builder .setNegativeButton (R .string .about_translate_cancel , new DialogInterface .OnClickListener () {
396
397
@ Override
397
- public void onTextChanged (CharSequence s , int start , int before , int count ) {
398
+ public void onClick (DialogInterface dialog , int which ) {
399
+ dialog .dismiss ();
398
400
}
399
401
});
400
- d .show ();
401
- d .getButton (AlertDialog .BUTTON_POSITIVE ).setEnabled (false );
402
+ AlertDialog dialog = builder .create ();
403
+ dialog .show ();
404
+ if (isDeleted ) {
405
+ dialog .getButton (AlertDialog .BUTTON_POSITIVE ).setEnabled (false );
406
+ }
402
407
}
403
408
404
409
@ OnClick (R .id .seeMore )
0 commit comments