From 50ede215fb21e85cb3c9658257d10b3a82439e01 Mon Sep 17 00:00:00 2001 From: Shinokuni Date: Mon, 25 Feb 2019 21:29:37 +0000 Subject: [PATCH] Add feedWithFolder argument to the add feed dialog to display and edit feed data --- .../app/activities/ManageFeedsActivity.java | 6 ++- .../readrops/app/database/entities/Feed.java | 53 ++++++++++++++++++- .../app/database/entities/Folder.java | 34 +++++++++++- .../app/database/pojo/FeedWithFolder.java | 38 ++++++++++++- .../readrops/app/views/EditFeedDialog.java | 14 ++++- 5 files changed, 139 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/readrops/app/activities/ManageFeedsActivity.java b/app/src/main/java/com/readrops/app/activities/ManageFeedsActivity.java index 29dd83e0..8d561473 100644 --- a/app/src/main/java/com/readrops/app/activities/ManageFeedsActivity.java +++ b/app/src/main/java/com/readrops/app/activities/ManageFeedsActivity.java @@ -57,8 +57,12 @@ public class ManageFeedsActivity extends AppCompatActivity { private void openEditFeedDialog(FeedWithFolder feedWithFolder) { EditFeedDialog editFeedDialog = new EditFeedDialog(); - FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + Bundle bundle = new Bundle(); + bundle.putParcelable("feedWithFolder", feedWithFolder); + editFeedDialog.setArguments(bundle); + + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.add(editFeedDialog, "").commit(); } diff --git a/app/src/main/java/com/readrops/app/database/entities/Feed.java b/app/src/main/java/com/readrops/app/database/entities/Feed.java index 0d0a6316..76b3b03e 100644 --- a/app/src/main/java/com/readrops/app/database/entities/Feed.java +++ b/app/src/main/java/com/readrops/app/database/entities/Feed.java @@ -2,6 +2,8 @@ package com.readrops.app.database.entities; import android.arch.persistence.room.*; +import android.os.Parcel; +import android.os.Parcelable; import android.support.annotation.ColorInt; import android.support.annotation.Nullable; @@ -11,7 +13,7 @@ import com.readrops.readropslibrary.localfeed.rss.RSSChannel; import com.readrops.readropslibrary.localfeed.rss.RSSFeed; @Entity(foreignKeys = @ForeignKey(entity = Folder.class, parentColumns = "id", childColumns = "folder_id")) -public class Feed { +public class Feed implements Parcelable { @PrimaryKey(autoGenerate = true) private int id; @@ -54,6 +56,33 @@ public class Feed { this.url = url; } + protected Feed(Parcel in) { + id = in.readInt(); + name = in.readString(); + description = in.readString(); + url = in.readString(); + siteUrl = in.readString(); + lastUpdated = in.readString(); + textColor = in.readInt(); + backgroundColor = in.readInt(); + iconUrl = in.readString(); + etag = in.readString(); + lastModified = in.readString(); + folderId = in.readInt(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public Feed createFromParcel(Parcel in) { + return new Feed(in); + } + + @Override + public Feed[] newArray(int size) { + return new Feed[size]; + } + }; + public int getId() { return id; } @@ -203,4 +232,26 @@ public class Feed { return feed; } + + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(id); + dest.writeString(name); + dest.writeString(description); + dest.writeString(url); + dest.writeString(siteUrl); + dest.writeString(lastUpdated); + dest.writeInt(textColor); + dest.writeInt(backgroundColor); + dest.writeString(iconUrl); + dest.writeString(etag); + dest.writeString(lastModified); + dest.writeInt(folderId); + } } diff --git a/app/src/main/java/com/readrops/app/database/entities/Folder.java b/app/src/main/java/com/readrops/app/database/entities/Folder.java index 3ef44212..10915e0c 100644 --- a/app/src/main/java/com/readrops/app/database/entities/Folder.java +++ b/app/src/main/java/com/readrops/app/database/entities/Folder.java @@ -3,9 +3,11 @@ package com.readrops.app.database.entities; import android.arch.persistence.room.Entity; import android.arch.persistence.room.Ignore; import android.arch.persistence.room.PrimaryKey; +import android.os.Parcel; +import android.os.Parcelable; @Entity -public class Folder { +public class Folder implements Parcelable { @PrimaryKey(autoGenerate = true) private int id; @@ -21,6 +23,13 @@ public class Folder { this.name = name; } + protected Folder(Parcel in) { + id = in.readInt(); + name = in.readString(); + } + + + public int getId() { return id; } @@ -36,4 +45,27 @@ public class Folder { public void setName(String name) { this.name = name; } + + public static final Creator CREATOR = new Creator() { + @Override + public Folder createFromParcel(Parcel in) { + return new Folder(in); + } + + @Override + public Folder[] newArray(int size) { + return new Folder[size]; + } + }; + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(id); + dest.writeString(name); + } } diff --git a/app/src/main/java/com/readrops/app/database/pojo/FeedWithFolder.java b/app/src/main/java/com/readrops/app/database/pojo/FeedWithFolder.java index e5a7ba7e..8cd06dc1 100644 --- a/app/src/main/java/com/readrops/app/database/pojo/FeedWithFolder.java +++ b/app/src/main/java/com/readrops/app/database/pojo/FeedWithFolder.java @@ -1,11 +1,13 @@ package com.readrops.app.database.pojo; import android.arch.persistence.room.Embedded; +import android.os.Parcel; +import android.os.Parcelable; import com.readrops.app.database.entities.Feed; import com.readrops.app.database.entities.Folder; -public class FeedWithFolder { +public class FeedWithFolder implements Parcelable { @Embedded(prefix = "feed_") private Feed feed; @@ -13,6 +15,38 @@ public class FeedWithFolder { @Embedded(prefix = "folder_") private Folder folder; + public FeedWithFolder() { + + } + + protected FeedWithFolder(Parcel in) { + feed = in.readParcelable(Feed.class.getClassLoader()); + folder = in.readParcelable(Folder.class.getClassLoader()); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeParcelable(feed, flags); + dest.writeParcelable(folder, flags); + } + + @Override + public int describeContents() { + return 0; + } + + public static final Creator CREATOR = new Creator() { + @Override + public FeedWithFolder createFromParcel(Parcel in) { + return new FeedWithFolder(in); + } + + @Override + public FeedWithFolder[] newArray(int size) { + return new FeedWithFolder[size]; + } + }; + public Feed getFeed() { return feed; } @@ -28,4 +62,6 @@ public class FeedWithFolder { public void setFolder(Folder folder) { this.folder = folder; } + + } diff --git a/app/src/main/java/com/readrops/app/views/EditFeedDialog.java b/app/src/main/java/com/readrops/app/views/EditFeedDialog.java index 84478858..9335aab9 100644 --- a/app/src/main/java/com/readrops/app/views/EditFeedDialog.java +++ b/app/src/main/java/com/readrops/app/views/EditFeedDialog.java @@ -35,20 +35,30 @@ public class EditFeedDialog extends DialogFragment { @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { viewModel = ViewModelProviders.of(getActivity()).get(ManageFeedsViewModel.class); + + feedWithFolder = getArguments().getParcelable("feedWithFolder"); + View v = getActivity().getLayoutInflater().inflate(R.layout.edit_feed_layout, null); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()) .setTitle(getString(R.string.edit_feed)) .setPositiveButton(getString(R.string.validate), (dialog, which) -> { - + }); builder.setView(v); + fillData(v); + return builder.create(); + } + + private void fillData(View v) { feedName = v.findViewById(R.id.edit_feed_name_edit_text); feedUrl = v.findViewById(R.id.edit_feed_url_edit_text); folder = v.findViewById(R.id.edit_feed_folder_spinner); - return builder.create(); + + feedName.setText(feedWithFolder.getFeed().getName()); + feedUrl.setText(feedWithFolder.getFeed().getUrl()); }