M choochoo/deutschlandticket.py => choochoo/deutschlandticket.py +11 -1
@@ 83,13 83,23 @@ class Ticket():
date = self.valid_from
return f"DTicket_{date.year}-{date.month:02}_{self.first_name}-{self.last_name}"
- def save(self):
+ def get_file_path(self):
tid = self.get_id()
name = f"{tid}.json"
fpath = os.path.join(get_data_dir(), name)
+ return fpath
+
+ def save(self):
+ fpath = self.get_file_path()
handle = open(fpath, "w", encoding="utf-8")
text = json.dumps(self.raw)
try:
handle.write(text)
finally:
handle.close()
+
+ def delete(self):
+ fpath = self.get_file_path()
+ # only attempt to remove the file if it exists
+ if os.path.exists(fpath):
+ os.remove(fpath)
M choochoo/ticketview.py => choochoo/ticketview.py +22 -1
@@ 28,14 28,35 @@ class TicketScreen(Adw.NavigationPage):
# shows confirm dialog
# removes the file & closes the window
self.delete_button = IconButton("", "user-trash-symbolic", tooltip=_("Delete Ticket"))
- self.delete_button.connect("clicked", lambda _: self.fetch())
+ self.delete_button.connect("clicked", lambda _: self.ask_delete())
self.header_bar.pack_end(self.reload_button)
+ self.header_bar.pack_end(self.delete_button)
self.view.add_top_bar(self.header_bar)
self.overlay = Adw.ToastOverlay()
self.set_child(self.view)
self.view.set_content(self.overlay)
self.update()
+ def ask_delete(self):
+ diag = Adw.AlertDialog()
+ # set dialog cta
+ diag.set_heading(_("Delete Ticket"))
+ diag.set_body(_("Do you really want to delete this ticket? (You can add it again later)"))
+ # setup dialog actions
+ diag.add_response("cancel", _("Cancel"))
+ diag.add_response("remove", _("Remove"))
+ diag.set_close_response("cancel")
+ diag.set_default_response("cancel")
+ diag.set_response_appearance("cancel", Adw.ResponseAppearance.DESTRUCTIVE)
+ diag.set_response_appearance("remove", Adw.ResponseAppearance.SUGGESTED)
+ # show dialog
+ diag.choose(self, None, self.confirm_delete)
+ def confirm_delete(self, diag, ready):
+ action = diag.choose_finish(ready)
+ if action == "remove":
+ self.ticket.delete()
+ self.activate_action("win.home", None)
+
def generate_code(self):
barcode = self.ticket.barcode
M choochoo/window.py => choochoo/window.py +3 -1
@@ 30,8 30,10 @@ class MainWindow(Adw.ApplicationWindow):
# navigate back to the home screen
def go_home(self,action,prefs):
+ print("HI")
self.view.pop_to_page(self.home)
- self.home.go_home()
+ # reload tickets
+ self.home.update()
def view_ticket(self, action, prefs):
fid = prefs[:]