From 75b5d31246c4ca804e8f80e2702ebd9c1ffc191b Mon Sep 17 00:00:00 2001 From: marxzuckerburg Date: Wed, 30 Sep 2020 14:39:25 +0100 Subject: [PATCH] fixed issue 35? --- comrad/app/main.py | 37 ++++++++++++++------------- comrad/app/root.kv | 8 ++++-- comrad/app/screens/refresh/refresh.kv | 4 +++ comrad/app/screens/refresh/refresh.py | 22 ++++++++++++++++ 4 files changed, 51 insertions(+), 20 deletions(-) create mode 100644 comrad/app/screens/refresh/refresh.kv create mode 100644 comrad/app/screens/refresh/refresh.py diff --git a/comrad/app/main.py b/comrad/app/main.py index f4afc51..861b7b0 100644 --- a/comrad/app/main.py +++ b/comrad/app/main.py @@ -89,7 +89,8 @@ class MyLayout(MDBoxLayout): def change_screen(self, screen, *args): self.scr_mngr.current = screen - self.app.screen = screen + self.app.last_screen = self.app.screen + self.app.screen = self.screen = screen # toolbar toolbar=self.ids.toolbar @@ -116,24 +117,24 @@ class MyLayout(MDBoxLayout): self.post_id=post_id self.change_screen('view') - def refresh(self,*x,**yy): - async def go(): - if not hasattr(self.app,'is_logged_in') or not self.app.is_logged_in or not hasattr(self.app,'comrad') or not self.app.comrad: - self.change_screen('login') - self.app.log('changing screen???') - return None + # def refresh(self,*x,**yy): + # async def go(): + # if not hasattr(self.app,'is_logged_in') or not self.app.is_logged_in or not hasattr(self.app,'comrad') or not self.app.comrad: + # self.change_screen('login') + # self.app.log('changing screen???') + # return None - logger.info(f'REFRESH: {self.app.is_logged_in}, {self.app.comrad.name}') - self.app.log('<--',x,yy) - if not hasattr(self.app,'map') or not self.app.map: - from comrad.app.screens.map import MapWidget - self.app.map=MapWidget() - self.app.map.open() - await self.app.comrad.get_updates() - self.app.map.dismiss() - self.app.map=None - asyncio.create_task(go()) + # logger.info(f'REFRESH: {self.app.is_logged_in}, {self.app.comrad.name}') + # self.app.log('<--',x,yy) + # if not hasattr(self.app,'map') or not self.app.map: + # from comrad.app.screens.map import MapWidget + # self.app.map=MapWidget() + # self.app.map.open() + # await self.app.comrad.get_updates() + # self.app.map.dismiss() + # self.app.map=None + # asyncio.create_task(go()) @@ -431,11 +432,11 @@ class MainApp(MDApp, Logger): texture = ObjectProperty() uri='/do/login' screen='login' + last_screen=None def rgb(self,*_): return rgb(*_) def change_screen(self, screen, *args): - self.screen=screen self.root.change_screen(screen,*args) def get_username(self): return self._name diff --git a/comrad/app/root.kv b/comrad/app/root.kv index 4885ea9..c3e0749 100644 --- a/comrad/app/root.kv +++ b/comrad/app/root.kv @@ -4,6 +4,7 @@ #:include screens/messages/messages.kv #:include screens/notifications/notifications.kv #:include screens/profile/profile.kv +#:include screens/refresh/refresh.kv @@ -238,7 +239,7 @@ MyLayout: theme_text_color:'Custom' background_hue: '500' # right_action_items: [['account-circle-outline', partial(root.change_screen, 'profile')],['card-text', partial(root.change_screen, 'feed')],['message-outline', partial(root.change_screen, 'messages')],['pencil-plus-outline', partial(root.change_screen, 'post')],['exit-run', partial(root.change_screen, 'login')]] - right_action_items: [[SCREEN_TO_ICON['feed'], partial(root.change_screen, 'feed')],[SCREEN_TO_ICON['messages'], partial(root.change_screen, 'messages')],[SCREEN_TO_ICON['post'], partial(root.change_screen, 'post')],[SCREEN_TO_ICON['profile'], partial(root.change_screen, 'profile')],[SCREEN_TO_ICON['refresh'], partial(root.change_sreen, 'refresh')],[SCREEN_TO_ICON['login'], partial(root.change_screen, 'login')]] + right_action_items: [[SCREEN_TO_ICON['feed'], partial(root.change_screen, 'feed')],[SCREEN_TO_ICON['messages'], partial(root.change_screen, 'messages')],[SCREEN_TO_ICON['post'], partial(root.change_screen, 'post')],[SCREEN_TO_ICON['profile'], partial(root.change_screen, 'profile')],[SCREEN_TO_ICON['refresh'], partial(root.change_screen, 'refresh')],[SCREEN_TO_ICON['login'], partial(root.change_screen, 'login')]] #left_action_items: [[f"assets/fist2.png", partial(root.change_screen, 'feed')]] # ['bell-outline', partial(root.change_screen, 'login')] @@ -273,4 +274,7 @@ MyLayout: id: notifications_screen ProfileScreen: - id: profile_screen \ No newline at end of file + id: profile_screen + + RefreshScreen: + id: refresh_screen \ No newline at end of file diff --git a/comrad/app/screens/refresh/refresh.kv b/comrad/app/screens/refresh/refresh.kv new file mode 100644 index 0000000..ecc7419 --- /dev/null +++ b/comrad/app/screens/refresh/refresh.kv @@ -0,0 +1,4 @@ +#:import RefreshScreen screens.refresh.refresh.RefreshScreen + +: + name: 'refresh' diff --git a/comrad/app/screens/refresh/refresh.py b/comrad/app/screens/refresh/refresh.py new file mode 100644 index 0000000..fa2b96b --- /dev/null +++ b/comrad/app/screens/refresh/refresh.py @@ -0,0 +1,22 @@ +from screens.base import ProtectedScreen +from screens.map import MapWidget +import asyncio + + +class RefreshScreen(ProtectedScreen): + + def on_pre_enter(self): + if not super().on_pre_enter(): return + + async def go(): + self.log(f'REFRESH: {self.app.is_logged_in}, {self.app.comrad.name}') + if not hasattr(self.app,'map') or not self.app.map: + self.app.map=MapWidget() + self.app.map.open() + await self.app.comrad.get_updates() + self.app.map.dismiss() + self.app.map=None + self.app.change_screen(self.app.last_screen if self.app.last_screen else 'feed') + + asyncio.create_task(go()) +