/** 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.
});
// 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);
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);