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
);