Refactoring the way a selected sub is opened

This commit is contained in:
Théo Piboubès
2015-08-12 14:39:49 +02:00
parent a02322d5fe
commit 691986abd4
3 changed files with 15 additions and 7 deletions

View File

@@ -153,7 +153,7 @@ class BaseContent(object):
data = {} data = {}
data['object'] = subscription data['object'] = subscription
data['type'] = 'Subscription' data['type'] = 'Subscription'
data['name'] = "/r/" + subscription._case_name data['name'] = "/r/" + subscription.display_name
data['title'] = subscription.title data['title'] = subscription.title
return data return data

View File

@@ -167,9 +167,15 @@ class SubredditPage(BasePage):
show_notification(self.stdscr, ['Not logged in']) show_notification(self.stdscr, ['Not logged in'])
return return
# Open subscriptions page
page = SubscriptionPage(self.stdscr, self.reddit) page = SubscriptionPage(self.stdscr, self.reddit)
page.loop() page.loop()
# When user has chosen a subreddit in the subscriptions list, refresh content with the selected subreddit
chosen_subreddit = page.get_selected_subreddit_data()
if chosen_subreddit is not None:
self.refresh_content(name=chosen_subreddit['name'])
@staticmethod @staticmethod
def draw_item(win, data, inverted=False): def draw_item(win, data, inverted=False):

View File

@@ -17,6 +17,7 @@ class SubscriptionPage(BasePage):
def __init__(self, stdscr, reddit): def __init__(self, stdscr, reddit):
self.controller = SubscriptionController(self) self.controller = SubscriptionController(self)
self.loader = LoadScreen(stdscr) self.loader = LoadScreen(stdscr)
self.selected_subreddit_data = None
content = SubscriptionContent.get_list(reddit, self.loader) content = SubscriptionContent.get_list(reddit, self.loader)
super(SubscriptionPage, self).__init__(stdscr, reddit, content) super(SubscriptionPage, self).__init__(stdscr, reddit, content)
@@ -30,6 +31,9 @@ class SubscriptionPage(BasePage):
cmd = self.stdscr.getch() cmd = self.stdscr.getch()
self.controller.trigger(cmd) self.controller.trigger(cmd)
def get_selected_subreddit_data(self):
return self.selected_subreddit_data
@SubscriptionController.register(curses.KEY_F5, 'r') @SubscriptionController.register(curses.KEY_F5, 'r')
def refresh_content(self): def refresh_content(self):
"Re-download all subscriptions and reset the page index" "Re-download all subscriptions and reset the page index"
@@ -38,13 +42,11 @@ class SubscriptionPage(BasePage):
self.nav = Navigator(self.content.get) self.nav = Navigator(self.content.get)
@SubscriptionController.register(curses.KEY_ENTER, 10, curses.KEY_RIGHT) @SubscriptionController.register(curses.KEY_ENTER, 10, curses.KEY_RIGHT)
def open_selected_subreddit(self): def store_selected_subreddit(self):
"Open the selected subreddit" "Store the selected subreddit and return to the subreddit page"
from .subreddit import SubredditPage self.selected_subreddit_data = self.content.get(self.nav.absolute_index)
data = self.content.get(self.nav.absolute_index) self.active = False
page = SubredditPage(self.stdscr, self.reddit, data['name'][2:]) # Strip the leading /r
page.loop()
@SubscriptionController.register(curses.KEY_LEFT, 's') @SubscriptionController.register(curses.KEY_LEFT, 's')
def close_subscriptions(self): def close_subscriptions(self):