Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/jangernert/FeedReader.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Lukas Gernert <jangernert@gmail.com>2017-10-14 18:35:23 +0300
committerJan Lukas Gernert <jangernert@gmail.com>2017-10-14 18:35:23 +0300
commitee1bcc67d70f9e117b6e7a9e8eda2cdb7bef615c (patch)
treea98c33c0d77e3d63fe227ff78dce7522a363ae68
parent1208583ac2eee652cce6e84365cfeb4c954e93d1 (diff)
use Feed model inside FeedRow
-rw-r--r--src/FavIconManager.vala7
-rw-r--r--src/Model/Feed.vala5
-rw-r--r--src/Widgets/FeedList.vala37
-rw-r--r--src/Widgets/FeedRow.vala83
4 files changed, 62 insertions, 70 deletions
diff --git a/src/FavIconManager.vala b/src/FavIconManager.vala
index 02e32575..afcc55d6 100644
--- a/src/FavIconManager.vala
+++ b/src/FavIconManager.vala
@@ -31,10 +31,9 @@ public class FeedReader.FavIconManager : GLib.Object {
m_map = new Gee.HashMap<string, Gdk.Pixbuf>();
}
- private async void load(string icon_name)
+ private async void load(string feedID)
{
- var fileName = GLib.Base64.encode(icon_name.data) + ".ico";
- //var fileName = icon_name + ".ico";
+ var fileName = GLib.Base64.encode(feedID.data) + ".ico";
try
{
var file = File.new_for_path(GLib.Environment.get_user_data_dir() + "/feedreader/data/feed_icons/" + fileName);
@@ -48,7 +47,7 @@ public class FeedReader.FavIconManager : GLib.Object {
}
pixbuf = pixbuf.scale_simple(24, 24, Gdk.InterpType.BILINEAR);
- m_map.set(icon_name, pixbuf);
+ m_map.set(feedID, pixbuf);
}
catch (IOError.NOT_FOUND e)
{
diff --git a/src/Model/Feed.vala b/src/Model/Feed.vala
index 5614a507..8e3b341a 100644
--- a/src/Model/Feed.vala
+++ b/src/Model/Feed.vala
@@ -69,6 +69,11 @@ public class FeedReader.Feed : GLib.Object {
return m_unread;
}
+ public void setUnread(uint unread)
+ {
+ m_unread = unread;
+ }
+
public Gee.List<string> getCatIDs()
{
return m_catIDs;
diff --git a/src/Widgets/FeedList.vala b/src/Widgets/FeedList.vala
index a776de48..fa6ce6e7 100644
--- a/src/Widgets/FeedList.vala
+++ b/src/Widgets/FeedList.vala
@@ -232,7 +232,16 @@ public class FeedReader.feedList : Gtk.ScrolledWindow {
private void createFeedlist(ArticleListState state, bool defaultSettings, bool masterCat)
{
- var row_separator1 = new FeedRow(null, 0, FeedID.SEPARATOR.to_string(), "-1", 0);
+ var separatorFeed = new Feed(FeedID.SEPARATOR.to_string(), "", "", 0);
+
+ uint unread = 0;
+ if(state == ArticleListState.MARKED)
+ unread = DataBase.readOnly().get_marked_total();
+ else
+ unread = DataBase.readOnly().get_unread_total();
+ var allFeed = new Feed(FeedID.ALL.to_string(), _("All Articles"), "", unread);
+
+ var row_separator1 = new FeedRow(separatorFeed, "-1", 0);
var separator1 = new Gtk.Separator(Gtk.Orientation.HORIZONTAL);
separator1.get_style_context().add_class("fr-sidebar-separator");
separator1.margin_top = 8;
@@ -240,12 +249,8 @@ public class FeedReader.feedList : Gtk.ScrolledWindow {
row_separator1.sensitive = false;
m_list.add(row_separator1);
- uint unread = 0;
- if(state == ArticleListState.MARKED)
- unread = DataBase.readOnly().get_marked_total();
- else
- unread = DataBase.readOnly().get_unread_total();
- var row_all = new FeedRow(_("All Articles"), unread, FeedID.ALL.to_string(), "-1", 0);
+
+ var row_all = new FeedRow(allFeed, "-1", 0);
row_all.margin_top = 8;
row_all.margin_bottom = 8;
m_list.add(row_all);
@@ -253,7 +258,7 @@ public class FeedReader.feedList : Gtk.ScrolledWindow {
row_all.setAsRead.connect(markSelectedRead);
row_all.reveal(true, 0);
- var row_separator = new FeedRow(null, 0, FeedID.SEPARATOR.to_string(), "-1", 0);
+ var row_separator = new FeedRow(separatorFeed, "-1", 0);
var separator = new Gtk.Separator(Gtk.Orientation.HORIZONTAL);
separator.get_style_context().add_class("fr-sidebar-separator");
separator.margin_bottom = 8;
@@ -287,13 +292,7 @@ public class FeedReader.feedList : Gtk.ScrolledWindow {
if(item.getCatIDs().contains(tmpRow.getID())
|| tmpRow.getID() == "" && item.isUncategorized())
{
- var feedrow = new FeedRow(
- item.getTitle(),
- item.getUnread(),
- item.getFeedID(),
- tmpRow.getID(),
- tmpRow.getLevel()
- );
+ var feedrow = new FeedRow(item, tmpRow.getID(), tmpRow.getLevel());
m_list.insert(feedrow, pos);
feedrow.setAsRead.connect(markSelectedRead);
feedrow.moveUP.connect(moveUP);
@@ -314,13 +313,7 @@ public class FeedReader.feedList : Gtk.ScrolledWindow {
}
else
{
- var feedrow = new FeedRow (
- item.getTitle(),
- item.getUnread(),
- item.getFeedID(),
- item.getCatIDs()[0],
- 0
- );
+ var feedrow = new FeedRow(item, item.getCatIDs()[0], 0);
m_list.insert(feedrow, 3);
feedrow.setAsRead.connect(markSelectedRead);
feedrow.moveUP.connect(moveUP);
diff --git a/src/Widgets/FeedRow.vala b/src/Widgets/FeedRow.vala
index 0befa384..3bca071c 100644
--- a/src/Widgets/FeedRow.vala
+++ b/src/Widgets/FeedRow.vala
@@ -15,36 +15,31 @@
public class FeedReader.FeedRow : Gtk.ListBoxRow {
+ private Feed m_feed;
+ private string m_parentCatID;
private Gtk.Box m_box;
private Gtk.Label m_label;
private bool m_subscribed;
- private string m_catID;
- private int m_level;
private Gtk.Revealer m_revealer;
private Gtk.Image m_icon;
private Gtk.Label m_unread;
- private uint m_unread_count;
private Gtk.EventBox m_eventBox;
private Gtk.EventBox m_unreadBox;
private bool m_unreadHovered;
private Gtk.Stack m_unreadStack;
private uint m_timeout_source_id;
- private string m_name { get; private set; }
- private string m_feedID { get; private set; }
public signal void setAsRead(FeedListType type, string id);
public signal void copyFeedURL(string id);
public signal void moveUP();
public signal void deselectRow();
- public FeedRow(string? text, uint unread_count, string feedID, string catID, int level)
+ public FeedRow(Feed feed, string parentCat, int level)
{
- m_level = level;
- m_catID = catID;
m_subscribed = true;
- m_name = text;
- m_feedID = feedID;
+ m_parentCatID = parentCat;
+ m_feed = feed;
- if(text != null)
+ if(m_feed.getFeedID() != FeedID.SEPARATOR.to_string())
{
var rowhight = 30;
m_box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0);
@@ -53,8 +48,7 @@ public class FeedReader.FeedRow : Gtk.ListBoxRow {
m_icon.margin_start = level * 24;
- m_unread_count = unread_count;
- m_label = new Gtk.Label(m_name);
+ m_label = new Gtk.Label(m_feed.getTitle());
m_label.set_size_request (0, rowhight);
m_label.set_ellipsize (Pango.EllipsizeMode.END);
m_label.set_alignment(0, 0.5f);
@@ -82,7 +76,7 @@ public class FeedReader.FeedRow : Gtk.ListBoxRow {
m_unreadBox.leave_notify_event.connect(onUnreadLeave);
- if(!Utils.onlyShowFeeds() && feedID != FeedID.ALL.to_string())
+ if(!Utils.onlyShowFeeds() && m_feed.getFeedID() != FeedID.ALL.to_string())
this.get_style_context().add_class("fr-sidebar-feed");
else
this.get_style_context().add_class("fr-sidebar-row");
@@ -92,7 +86,7 @@ public class FeedReader.FeedRow : Gtk.ListBoxRow {
m_box.pack_end (m_unreadBox, false, false, 8);
m_eventBox = new Gtk.EventBox();
- if(m_feedID != FeedID.ALL.to_string())
+ if(m_feed.getFeedID() != FeedID.ALL.to_string())
{
m_eventBox.set_events(Gdk.EventMask.BUTTON_PRESS_MASK);
m_eventBox.button_press_event.connect(onClick);
@@ -107,9 +101,9 @@ public class FeedReader.FeedRow : Gtk.ListBoxRow {
this.no_show_all = true;;
m_revealer.show_all();
- set_unread_count(m_unread_count);
+ set_unread_count(m_feed.getUnread());
- if(m_feedID != FeedID.ALL.to_string()
+ if(m_feed.getFeedID() != FeedID.ALL.to_string()
&& !Settings.general().get_boolean("only-feeds")
&& Utils.canManipulateContent()
&& FeedReaderBackend.get_default().supportCategories())
@@ -144,13 +138,13 @@ public class FeedReader.FeedRow : Gtk.ListBoxRow {
if(target_type == DragTarget.FEED)
{
- selection_data.set_text(m_feedID + "," + m_catID, -1);
+ selection_data.set_text(m_feed.getFeedID() + "," + m_parentCatID, -1);
}
}
public async void reloadFavIcon(Gtk.Image? inIcon = null)
{
- var icon = yield FavIconManager.get_default().getIcon(m_feedID);
+ var icon = yield FavIconManager.get_default().getIcon(m_feed.getFeedID());
if(icon == null)
return;
@@ -212,9 +206,9 @@ public class FeedReader.FeedRow : Gtk.ListBoxRow {
uint time = 300;
this.reveal(false, time);
- var notification = MainWindow.get_default().showNotification(_("Feed \"%s\" removed").printf(m_name));
+ var notification = MainWindow.get_default().showNotification(_("Feed \"%s\" removed").printf(m_feed.getTitle()));
ulong eventID = notification.dismissed.connect(() => {
- FeedReaderBackend.get_default().removeFeed(m_feedID);
+ FeedReaderBackend.get_default().removeFeed(m_feed.getFeedID());
});
notification.action.connect(() => {
notification.disconnect(eventID);
@@ -225,15 +219,15 @@ public class FeedReader.FeedRow : Gtk.ListBoxRow {
var markAsRead_action = new GLib.SimpleAction("markFeedAsRead", null);
markAsRead_action.activate.connect(() => {
- setAsRead(FeedListType.FEED, m_feedID);
+ setAsRead(FeedListType.FEED, m_feed.getFeedID());
});
var copyFeedURL_action = new GLib.SimpleAction("copyFeedURL", null);
copyFeedURL_action.activate.connect(() => {
- copyFeedURL(m_feedID);
+ copyFeedURL(m_feed.getFeedID());
});
- if(m_unread_count != 0)
+ if(m_feed.getUnread() != 0)
markAsRead_action.set_enabled(true);
else
markAsRead_action.set_enabled(false);
@@ -247,16 +241,17 @@ public class FeedReader.FeedRow : Gtk.ListBoxRow {
app.add_action(rename_action);
app.add_action(remove_action);
- var feed = DataBase.readOnly().read_feed(m_feedID);
- var catCount = feed.getCatIDs().size;
- var cat = DataBase.readOnly().read_category(m_catID);
+
var menu = new GLib.Menu();
menu.append(_("Mark as read"), "markFeedAsRead");
menu.append(_("Copy URL"), "copyFeedURL");
menu.append(_("Rename"), "renameFeed");
- if(catCount > 1)
+ if(m_feed.getCatIDs().size > 1)
+ {
+ var cat = DataBase.readOnly().read_category(m_parentCatID);
menu.append(_("Remove only from %s").printf(cat.getTitle()), "deleteFeed");
+ }
menu.append(_("Remove"), "deleteFeed");
var pop = new Gtk.Popover(this);
@@ -281,10 +276,10 @@ public class FeedReader.FeedRow : Gtk.ListBoxRow {
});
var renameEntry = new Gtk.Entry();
- renameEntry.set_text(m_name);
+ renameEntry.set_text(m_feed.getTitle());
renameEntry.activate.connect(() => {
popRename.hide();
- FeedReaderBackend.get_default().renameFeed(m_feedID, renameEntry.get_text());
+ FeedReaderBackend.get_default().renameFeed(m_feed.getFeedID(), renameEntry.get_text());
});
var renameButton = new Gtk.Button.with_label(_("rename"));
@@ -305,12 +300,12 @@ public class FeedReader.FeedRow : Gtk.ListBoxRow {
public void set_unread_count(uint unread_count)
{
- m_unread_count = unread_count;
+ m_feed.setUnread(unread_count);
- if(m_unread_count > 0 && !m_unreadHovered)
+ if(m_feed.getUnread() > 0 && !m_unreadHovered)
{
m_unreadStack.set_visible_child_name("unreadCount");
- m_unread.set_text(m_unread_count.to_string());
+ m_unread.set_text(m_feed.getUnread().to_string());
}
else if(!m_unreadHovered)
{
@@ -324,9 +319,9 @@ public class FeedReader.FeedRow : Gtk.ListBoxRow {
private bool onUnreadClick(Gdk.EventButton event)
{
- if(m_unreadHovered && m_unread_count > 0)
+ if(m_unreadHovered && m_feed.getUnread() > 0)
{
- setAsRead(FeedListType.FEED, m_feedID);
+ setAsRead(FeedListType.FEED, m_feed.getFeedID());
}
return true;
}
@@ -334,7 +329,7 @@ public class FeedReader.FeedRow : Gtk.ListBoxRow {
private bool onUnreadEnter(Gdk.EventCrossing event)
{
m_unreadHovered = true;
- if(m_unread_count > 0)
+ if(m_feed.getUnread() > 0)
{
m_unreadStack.set_visible_child_name("mark");
}
@@ -344,7 +339,7 @@ public class FeedReader.FeedRow : Gtk.ListBoxRow {
private bool onUnreadLeave(Gdk.EventCrossing event)
{
m_unreadHovered = false;
- if(m_unread_count > 0)
+ if(m_feed.getUnread() > 0)
{
m_unreadStack.set_visible_child_name("unreadCount");
}
@@ -357,13 +352,13 @@ public class FeedReader.FeedRow : Gtk.ListBoxRow {
public void upUnread()
{
- set_unread_count(m_unread_count+1);
+ set_unread_count(m_feed.getUnread() + 1);
}
public void downUnread()
{
- if(m_unread_count > 0)
- set_unread_count(m_unread_count-1);
+ if(m_feed.getUnread() > 0)
+ set_unread_count(m_feed.getUnread() - 1);
}
public void update(string text, uint unread_count)
@@ -379,17 +374,17 @@ public class FeedReader.FeedRow : Gtk.ListBoxRow {
public string getCatID()
{
- return m_catID;
+ return m_parentCatID;
}
public string getID()
{
- return m_feedID;
+ return m_feed.getFeedID();
}
public string getName()
{
- return m_name;
+ return m_feed.getTitle();
}
public bool isSubscribed()
@@ -399,7 +394,7 @@ public class FeedReader.FeedRow : Gtk.ListBoxRow {
public uint getUnreadCount()
{
- return m_unread_count;
+ return m_feed.getUnread();
}
public bool isRevealed()