X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/edb380e0cd04b32dccd18a5470075749f2d5189f..e901b609baa4dd5f681e2a5257c9e504997e3377:/src/com/owncloud/android/ui/fragment/FileFragment.java diff --git a/src/com/owncloud/android/ui/fragment/FileFragment.java b/src/com/owncloud/android/ui/fragment/FileFragment.java index 4e3fc8a3..3e6fa31c 100644 --- a/src/com/owncloud/android/ui/fragment/FileFragment.java +++ b/src/com/owncloud/android/ui/fragment/FileFragment.java @@ -17,12 +17,16 @@ package com.owncloud.android.ui.fragment; -import android.content.Intent; +import android.accounts.Account; +import android.app.Activity; import android.support.v4.app.Fragment; +import com.actionbarsherlock.app.SherlockFragment; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.files.FileHandler; -import com.owncloud.android.ui.activity.TransferServiceGetter; +import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; +import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; +import com.owncloud.android.ui.activity.ComponentsGetter; + /** * Common methods for {@link Fragment}s containing {@link OCFile}s @@ -30,45 +34,113 @@ import com.owncloud.android.ui.activity.TransferServiceGetter; * @author David A. Velasco * */ -public interface FileFragment { +public class FileFragment extends SherlockFragment { + + private OCFile mFile; + protected ContainerActivity mContainerActivity; + + + /** + * Creates an empty fragment. + * + * It's necessary to keep a public constructor without parameters; the system uses it when tries to reinstantiate a fragment automatically. + */ + public FileFragment() { + mFile = null; + } + + /** + * Creates an instance for a given {@OCFile}. + * + * @param file + */ + public FileFragment(OCFile file) { + mFile = file; + } + /** * Getter for the hold {@link OCFile} * * @return The {@link OCFile} hold */ - public OCFile getFile(); + public OCFile getFile() { + return mFile; + } + + + protected void setFile(OCFile file) { + mFile = file; + } /** + * {@inheritDoc} + */ + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + try { + mContainerActivity = (ContainerActivity) activity; + + } catch (ClassCastException e) { + throw new ClassCastException(activity.toString() + " must implement " + ContainerActivity.class.getSimpleName()); + } + } + + + /** + * {@inheritDoc} + */ + @Override + public void onDetach() { + mContainerActivity = null; + super.onDetach(); + } + + + /** + * Interface to implement by any Activity that includes some instance of FileListFragment * Interface to implement by any Activity that includes some instance of FileFragment * * @author David A. Velasco */ - public interface ContainerActivity extends TransferServiceGetter, FileHandler { + public interface ContainerActivity extends ComponentsGetter { /** - * Callback method invoked when the detail fragment wants to notice its container - * activity about a relevant state the file shown by the fragment. - * - * Added to notify to FileDisplayActivity about the need of refresh the files list. + * Request the parent activity to show the details of an {@link OCFile}. * - * Currently called when: - * - a download is started; - * - a rename is completed; - * - a deletion is completed; - * - the 'inSync' flag is changed; + * @param file File to show details */ - public void onFileStateChanged(); + public void showDetails(OCFile file); + + ///// TO UNIFY IN A SINGLE CALLBACK METHOD - EVENT NOTIFICATIONs -> something happened inside the fragment, MAYBE activity is interested --> unify in notification method /** - * Request the parent activity to show the details of an {@link OCFile}. + * Callback method invoked when a the user browsed into a different folder through the list of files + * + * @param file + */ + public void onBrowsedDownTo(OCFile folder); + + /** + * Callback method invoked when a the 'transfer state' of a file changes. * - * @param file File to show details + * This happens when a download or upload is started or ended for a file. + * + * This method is necessary by now to update the user interface of the double-pane layout in tablets + * because methods {@link FileDownloaderBinder#isDownloading(Account, OCFile)} and {@link FileUploaderBinder#isUploading(Account, OCFile)} + * won't provide the needed response before the method where this is called finishes. + * + * TODO Remove this when the transfer state of a file is kept in the database (other thing TODO) + * + * @param file OCFile which state changed. + * @param downloading Flag signaling if the file is now downloading. + * @param uploading Flag signaling if the file is now uploading. */ - public void showFragmentWithDetails(OCFile file); - + public void onTransferStateChanged(OCFile file, boolean downloading, boolean uploading); + } - + }