1 /* ownCloud Android client application 
   2  *   Copyright (C) 2012 Bartek Przybylski 
   3  *   Copyright (C) 2012-2013 ownCloud Inc. 
   5  *   This program is free software: you can redistribute it and/or modify 
   6  *   it under the terms of the GNU General Public License version 2, 
   7  *   as published by the Free Software Foundation. 
   9  *   This program is distributed in the hope that it will be useful, 
  10  *   but WITHOUT ANY WARRANTY; without even the implied warranty of 
  11  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  12  *   GNU General Public License for more details. 
  14  *   You should have received a copy of the GNU General Public License 
  15  *   along with this program.  If not, see <http://www.gnu.org/licenses/>. 
  19 package com
.owncloud
.android
.ui
.dialog
; 
  21 import android
.app
.AlertDialog
; 
  22 import android
.app
.Dialog
; 
  23 import android
.content
.DialogInterface
; 
  24 import android
.os
.Bundle
; 
  25 import android
.support
.v4
.app
.Fragment
; 
  26 import android
.support
.v4
.app
.FragmentTransaction
; 
  28 import com
.actionbarsherlock
.app
.SherlockDialogFragment
; 
  29 import com
.actionbarsherlock
.app
.SherlockFragmentActivity
; 
  30 import com
.owncloud
.android
.R
; 
  31 import com
.owncloud
.android
.utils
.DisplayUtils
; 
  35  * Dialog which will be displayed to user upon keep-in-sync file conflict. 
  37  * @author Bartek Przybylski 
  40 public class ConflictsResolveDialog 
extends SherlockDialogFragment 
{ 
  42     public static enum Decision 
{  
  48     OnConflictDecisionMadeListener mListener
; 
  50     public static ConflictsResolveDialog 
newInstance(String path
, OnConflictDecisionMadeListener listener
) { 
  51         ConflictsResolveDialog f 
= new ConflictsResolveDialog(); 
  52         Bundle args 
= new Bundle(); 
  53         args
.putString("remotepath", path
); 
  55         f
.mListener 
= listener
; 
  60     public Dialog 
onCreateDialog(Bundle savedInstanceState
) { 
  61         String remotepath 
= getArguments().getString("remotepath"); 
  62         return new AlertDialog
.Builder(getSherlockActivity()) 
  63                    .setIcon(DisplayUtils
.getSeasonalIconId()) 
  64                    .setTitle(R
.string
.conflict_title
) 
  65                    .setMessage(String
.format(getString(R
.string
.conflict_message
), remotepath
)) 
  66                    .setPositiveButton(R
.string
.conflict_overwrite
, 
  67                        new DialogInterface
.OnClickListener() { 
  70                            public void onClick(DialogInterface dialog
, int which
) { 
  71                                if (mListener 
!= null
) 
  72                                    mListener
.conflictDecisionMade(Decision
.OVERWRITE
); 
  75                    .setNeutralButton(R
.string
.conflict_keep_both
, 
  76                        new DialogInterface
.OnClickListener() { 
  78                             public void onClick(DialogInterface dialog
, int which
) { 
  79                                 if (mListener 
!= null
) 
  80                                     mListener
.conflictDecisionMade(Decision
.KEEP_BOTH
); 
  83                    .setNegativeButton(R
.string
.conflict_dont_upload
, 
  84                        new DialogInterface
.OnClickListener() { 
  86                            public void onClick(DialogInterface dialog
, int which
) { 
  87                                if (mListener 
!= null
) 
  88                                    mListener
.conflictDecisionMade(Decision
.CANCEL
); 
  94     public void showDialog(SherlockFragmentActivity activity
) { 
  95         Fragment prev 
= activity
.getSupportFragmentManager().findFragmentByTag("dialog"); 
  96         FragmentTransaction ft 
= activity
.getSupportFragmentManager().beginTransaction(); 
 100         ft
.addToBackStack(null
); 
 102         this.show(ft
, "dialog"); 
 105     public void dismissDialog(SherlockFragmentActivity activity
) { 
 106         Fragment prev 
= activity
.getSupportFragmentManager().findFragmentByTag(getTag()); 
 108             FragmentTransaction ft 
= activity
.getSupportFragmentManager().beginTransaction(); 
 115     public void onCancel(DialogInterface dialog
) { 
 116         mListener
.conflictDecisionMade(Decision
.CANCEL
); 
 119     public interface OnConflictDecisionMadeListener 
{ 
 120         public void conflictDecisionMade(Decision decision
);