1414import android .text .Html ;
1515import android .text .TextUtils ;
1616import android .text .TextWatcher ;
17+ import android .util .Log ;
1718import android .util .TypedValue ;
1819import android .view .LayoutInflater ;
1920import android .view .View ;
2021import android .view .ViewGroup ;
2122import android .view .ViewTreeObserver ;
23+ import android .widget .ArrayAdapter ;
2224import android .widget .Button ;
2325import android .widget .EditText ;
2426import android .widget .LinearLayout ;
2527import android .widget .ScrollView ;
28+ import android .widget .Spinner ;
2629import android .widget .TextView ;
2730import android .widget .Toast ;
2831
4447import fr .free .nrw .commons .MediaDataExtractor ;
4548import fr .free .nrw .commons .MediaWikiImageView ;
4649import fr .free .nrw .commons .R ;
50+ import fr .free .nrw .commons .auth .SessionManager ;
4751import fr .free .nrw .commons .category .CategoryDetailsActivity ;
4852import fr .free .nrw .commons .delete .DeleteTask ;
53+ import fr .free .nrw .commons .delete .ReasonBuilder ;
4954import fr .free .nrw .commons .di .CommonsDaggerSupportFragment ;
5055import fr .free .nrw .commons .location .LatLng ;
5156import fr .free .nrw .commons .mwapi .MediaWikiApi ;
@@ -64,6 +69,8 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment {
6469 private MediaDetailPagerFragment .MediaDetailProvider detailProvider ;
6570 private int index ;
6671 private Locale locale ;
72+ private boolean isDeleted = false ;
73+
6774
6875 public static MediaDetailFragment forMedia (int index , boolean editable , boolean isCategoryImage ) {
6976 MediaDetailFragment mf = new MediaDetailFragment ();
@@ -84,6 +91,8 @@ public static MediaDetailFragment forMedia(int index, boolean editable, boolean
8491 Provider <MediaDataExtractor > mediaDataExtractorProvider ;
8592 @ Inject
8693 MediaWikiApi mwApi ;
94+ @ Inject
95+ SessionManager sessionManager ;
8796
8897 private int initialListTop = 0 ;
8998
@@ -127,6 +136,11 @@ public static MediaDetailFragment forMedia(int index, boolean editable, boolean
127136
128137 //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
129138 private Media media ;
139+ private String reasonList [] = {"I uploaded it by mistake" ,
140+ "I did not know it would be publicly visible" ,
141+ "I realized it is bad for my privacy" ,
142+ "Sorry this picture is not interesting for an encyclopedia" ,
143+ "I changed my mind, I don't want it to be publicly visible anymore" };
130144
131145 @ Override
132146 public void onSaveInstanceState (Bundle outState ) {
@@ -368,48 +382,43 @@ public void onCopyWikicodeClicked(){
368382
369383 @ OnClick (R .id .nominateDeletion )
370384 public void onDeleteButtonClicked (){
371- //Reviewer correct me if i have misunderstood something over here
372- //But how does this if (delete.getVisibility() == View.VISIBLE) {
373- // enableDeleteButton(true); makes sense ?
374- AlertDialog .Builder alert = new AlertDialog .Builder (getActivity ());
375- alert .setMessage ("Why should this file be deleted?" );
376- final EditText input = new EditText (getActivity ());
377- alert .setView (input );
378- input .requestFocus ();
379- alert .setPositiveButton (R .string .ok , (dialog , whichButton ) -> {
380- String reason = input .getText ().toString ();
381- DeleteTask deleteTask = new DeleteTask (getActivity (), media , reason );
382- deleteTask .execute ();
383- enableDeleteButton (false );
384- });
385- alert .setNegativeButton (R .string .cancel , (dialog , whichButton ) -> {
386- });
387- AlertDialog d = alert .create ();
388- input .addTextChangedListener (new TextWatcher () {
389- private void handleText () {
390- final Button okButton = d .getButton (AlertDialog .BUTTON_POSITIVE );
391- if (input .getText ().length () == 0 ) {
392- okButton .setEnabled (false );
393- } else {
394- okButton .setEnabled (true );
395- }
396- }
397-
398- @ Override
399- public void afterTextChanged (Editable arg0 ) {
400- handleText ();
401- }
402-
403- @ Override
404- public void beforeTextChanged (CharSequence s , int start , int count , int after ) {
405- }
406-
385+ final ArrayAdapter <String > languageAdapter = new ArrayAdapter <String >(getActivity (),
386+ R .layout .simple_spinner_dropdown_list , reasonList );
387+ final Spinner spinner = new Spinner (getActivity ());
388+ spinner .setLayoutParams (new LinearLayout .LayoutParams (LinearLayout .LayoutParams .WRAP_CONTENT , LinearLayout .LayoutParams .WRAP_CONTENT ));
389+ spinner .setAdapter (languageAdapter );
390+ spinner .setGravity (17 );
391+
392+ AlertDialog .Builder builder = new AlertDialog .Builder (getActivity ());
393+ builder .setView (spinner );
394+ builder .setTitle (R .string .nominate_delete )
395+ .setPositiveButton (R .string .about_translate_proceed , new DialogInterface .OnClickListener () {
396+ @ Override
397+ public void onClick (DialogInterface dialog , int which ) {
398+ String reason = spinner .getSelectedItem ().toString ();
399+ ReasonBuilder reasonBuilder = new ReasonBuilder (reason ,
400+ getActivity (),
401+ media ,
402+ sessionManager ,
403+ mwApi );
404+ reason = reasonBuilder .getReason ();
405+ DeleteTask deleteTask = new DeleteTask (getActivity (), media , reason );
406+ deleteTask .execute ();
407+ isDeleted = true ;
408+ enableDeleteButton (false );
409+ }
410+ });
411+ builder .setNegativeButton (R .string .about_translate_cancel , new DialogInterface .OnClickListener () {
407412 @ Override
408- public void onTextChanged (CharSequence s , int start , int before , int count ) {
413+ public void onClick (DialogInterface dialog , int which ) {
414+ dialog .dismiss ();
409415 }
410416 });
411- d .show ();
412- d .getButton (AlertDialog .BUTTON_POSITIVE ).setEnabled (false );
417+ AlertDialog dialog = builder .create ();
418+ dialog .show ();
419+ if (isDeleted ) {
420+ dialog .getButton (AlertDialog .BUTTON_POSITIVE ).setEnabled (false );
421+ }
413422 }
414423
415424 @ OnClick (R .id .seeMore )
0 commit comments