X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/f1b3208f1a8e5383e63db4c05342489ea2cd6225..261299cf23c150b7f9086289c960b967e5ae54d7:/src/com/owncloud/android/ui/fragment/ShareFileFragment.java diff --git a/src/com/owncloud/android/ui/fragment/ShareFileFragment.java b/src/com/owncloud/android/ui/fragment/ShareFileFragment.java index ee979c60..16994de8 100644 --- a/src/com/owncloud/android/ui/fragment/ShareFileFragment.java +++ b/src/com/owncloud/android/ui/fragment/ShareFileFragment.java @@ -92,6 +92,9 @@ public class ShareFileFragment extends Fragment /** Public share bound to the file */ private OCShare mPublicShare; + /** Listener for changes on switch to share / unshare publicly */ + private CompoundButton.OnCheckedChangeListener mOnShareViaLinkSwitchCheckedChangeListener; + /** * Public factory method to create new ShareFileFragment instances. @@ -175,26 +178,26 @@ public class ShareFileFragment extends Fragment }); // Switch to create public share - Switch shareViaLinkSwitch = (Switch) view.findViewById(R.id.shareViaLinkSectionSwitch); - shareViaLinkSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + mOnShareViaLinkSwitchCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - // TODO real implementation: create public share - // expand section - getExpirationDateSection().setVisibility(View.VISIBLE); - getPasswordSection().setVisibility(View.VISIBLE); - getGetLinkButton().setVisibility(View.VISIBLE); - - } else { - // TODO real implementation: unshare - // collapse section - getExpirationDateSection().setVisibility(View.GONE); - getPasswordSection().setVisibility(View.GONE); - getGetLinkButton().setVisibility(View.GONE); - } + if (isResumed()) { + if (isChecked) { + ((FileActivity) getActivity()).getFileOperationsHelper().shareFileViaLink(mFile); + + } else { + // TODO real implementation: unshare + // collapse section + getExpirationDateSection().setVisibility(View.GONE); + getPasswordSection().setVisibility(View.GONE); + getGetLinkButton().setVisibility(View.GONE); + } + } // else, nothing; very important, setCheched(...) is called automatically during Fragment + // recreation on device rotations } - }); + }; + Switch shareViaLinkSwitch = (Switch) view.findViewById(R.id.shareViaLinkSectionSwitch); + shareViaLinkSwitch.setOnCheckedChangeListener(mOnShareViaLinkSwitchCheckedChangeListener); // Switch for expiration date Switch shareViaLinkExpirationSwitch = (Switch) view.findViewById(R.id.shareViaLinkExpirationSwitch); @@ -344,14 +347,29 @@ public class ShareFileFragment extends Fragment private void updatePublicShareSection() { if (mPublicShare != null && ShareType.PUBLIC_LINK.equals(mPublicShare.getShareType())) { // public share bound -> expand section - getShareViaLinkSwitch().setChecked(true); + Switch shareViaLinkSwitch = getShareViaLinkSwitch(); + if (!shareViaLinkSwitch.isChecked()) { + // set null listener before setChecked() to prevent infinite loop of calls + shareViaLinkSwitch.setOnCheckedChangeListener(null); + getShareViaLinkSwitch().setChecked(true); + shareViaLinkSwitch.setOnCheckedChangeListener( + mOnShareViaLinkSwitchCheckedChangeListener + ); + } getExpirationDateSection().setVisibility(View.VISIBLE); getPasswordSection().setVisibility(View.VISIBLE); getGetLinkButton().setVisibility(View.VISIBLE); } else { // no public share -> collapse section - getShareViaLinkSwitch().setChecked(false); + Switch shareViaLinkSwitch = getShareViaLinkSwitch(); + if (shareViaLinkSwitch.isChecked()) { + shareViaLinkSwitch.setOnCheckedChangeListener(null); + getShareViaLinkSwitch().setChecked(false); + shareViaLinkSwitch.setOnCheckedChangeListener( + mOnShareViaLinkSwitchCheckedChangeListener + ); + } getExpirationDateSection().setVisibility(View.GONE); getPasswordSection().setVisibility(View.GONE); getGetLinkButton().setVisibility(View.GONE);