From fc814159e7f452845cc636ffd5e8ef6c91fb49f1 Mon Sep 17 00:00:00 2001 From: Aditya-Sood Date: Sat, 13 Jul 2019 17:12:58 +0530 Subject: [PATCH] Refactor: Use static factory method for TransferProgressFragment --- .../DeviceListFragment.java | 2 +- .../local_file_transfer/FileItem.java | 37 ++++++++++++++++++- .../TransferProgressFragment.java | 16 +++++++- 3 files changed, 51 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/DeviceListFragment.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/DeviceListFragment.java index 8f171c731..160d6f56a 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/DeviceListFragment.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/DeviceListFragment.java @@ -143,7 +143,7 @@ public class DeviceListFragment extends ListFragment implements WifiP2pManager.P } private void displayTransferProgressFragment() { - transferProgressFragment = new TransferProgressFragment(filesToSend); + transferProgressFragment = TransferProgressFragment.newInstance(filesToSend); FragmentManager fragmentManager = localFileTransferActivity.getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.add(R.id.container_fragment_transfer_progress, transferProgressFragment) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/FileItem.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/FileItem.java index 137aecd2b..cc3058b40 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/FileItem.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/FileItem.java @@ -1,5 +1,7 @@ package org.kiwix.kiwixmobile.zim_manager.local_file_transfer; +import android.os.Parcel; +import android.os.Parcelable; import androidx.annotation.IntDef; import java.lang.annotation.Retention; @@ -12,7 +14,8 @@ import static org.kiwix.kiwixmobile.zim_manager.local_file_transfer.FileItem.Fil * * Defines a file-item to represent the files being transferred. * */ -public class FileItem { +public class FileItem implements Parcelable { + @Retention(RetentionPolicy.SOURCE) @IntDef({TO_BE_SENT, SENDING, SENT, ERROR}) public @interface FileStatus { @@ -30,6 +33,38 @@ public class FileItem { this.fileStatus = fileStatus; } + // For making FileItem a Parcelable + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(fileName); + dest.writeInt(fileStatus); + } + + public static final Parcelable.Creator CREATOR + = new Parcelable.Creator() { + + @Override + public FileItem createFromParcel(Parcel source) { + return (new FileItem(source)); + } + + @Override + public FileItem[] newArray(int size) { + return new FileItem[size]; + } + }; + + public FileItem(Parcel parcel) { + this.fileName = parcel.readString(); + this.fileStatus = parcel.readInt(); + } + + // Helper methods public void setFileStatus(@FileStatus int fileStatus) { this.fileStatus = fileStatus; } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/TransferProgressFragment.java b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/TransferProgressFragment.java index b62b57ffa..f6ef272bd 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/TransferProgressFragment.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/zim_manager/local_file_transfer/TransferProgressFragment.java @@ -2,6 +2,7 @@ package org.kiwix.kiwixmobile.zim_manager.local_file_transfer; import android.os.Bundle; +import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -34,8 +35,19 @@ public class TransferProgressFragment extends Fragment { // Required empty public constructor } - public TransferProgressFragment(ArrayList fileItems) { - this.fileItems = fileItems; + public static TransferProgressFragment newInstance(ArrayList fileItems) { + TransferProgressFragment fragment = new TransferProgressFragment(); + Bundle args = new Bundle(); + args.putParcelableArrayList("FILE_ITEMS", fileItems); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Bundle bundle = this.getArguments(); + this.fileItems = bundle.getParcelableArrayList("FILE_ITEMS"); } @Override