diff frontends/src/primitivus/primitivus @ 542:3eeb6c865e4d

frontends: incoming files transfer management: - quick app: getWaitingConf is used on profile connexion - primitivus: askConfirmation is now managed, use new 'dir' style of FileDialog
author Goffi <goffi@goffi.org>
date Wed, 14 Nov 2012 20:37:15 +0100
parents 6c07127ad2ed
children 9dd297c513b4
line wrap: on
line diff
--- a/frontends/src/primitivus/primitivus	Wed Nov 14 20:24:28 2012 +0100
+++ b/frontends/src/primitivus/primitivus	Wed Nov 14 20:37:15 2012 +0100
@@ -22,8 +22,10 @@
 
 import urwid
 from urwid_satext import sat_widgets
+from urwid_satext.files_management import FileDialog
 from sat_frontends.quick_frontend.quick_app import QuickApp
 from sat_frontends.quick_frontend.quick_chat_list import QuickChatList
+from sat_frontends.quick_frontend.quick_utils import getNewPath
 from sat_frontends.primitivus.profile_manager import ProfileManager
 from sat_frontends.primitivus.contact_list import ContactList
 from sat_frontends.primitivus.chat import Chat
@@ -35,6 +37,7 @@
 import logging
 from logging import debug, info, error
 from sat.tools.jid  import JID
+from os.path import join
 
 
 ### logging configuration FIXME: put this elsewhere ###
@@ -394,6 +397,38 @@
                 #No notification left, we can hide the bar
                 self.main_widget.footer = self.editBar
 
+    def askConfirmation(self, confirmation_id, confirmation_type, data, profile):
+        if not self.check_profile(profile):
+            return
+        answer_data={}
+        
+        def dir_selected_cb(path):
+            dest_path = join(path, data['filename'])
+            answer_data["dest_path"] = getNewPath(dest_path) 
+            self.addProgress(confirmation_id, dest_path) 
+            accept_cb(None)
+
+        def accept_file_transfer_cb(widget):
+            self.removePopUp()
+            pop_up_widget = FileDialog(dir_selected_cb, refuse_cb, title=_(u"Where do you want to save the file ?"), style=['dir']) 
+            self.showPopUp(pop_up_widget)
+
+        def accept_cb(widget):
+            self.removePopUp()
+            self.bridge.confirmationAnswer(confirmation_id, True, answer_data, profile)
+            
+        def refuse_cb(widget):
+            self.removePopUp()
+            self.bridge.confirmationAnswer(confirmation_id, False, answer_data, profile)
+        
+        if confirmation_type == "FILE_TRANSFER":
+            pop_up_widget = sat_widgets.ConfirmDialog(_("The contact %(jid)s wants to send you the file %(filename)s\nDo you accept ?") % {'jid':data["from"], 'filename':data["filename"]}, no_cb=refuse_cb, yes_cb=accept_file_transfer_cb)
+            self.showPopUp(pop_up_widget)
+
+        elif confirmation_type == "YES/NO":
+            pop_up_widget = sat_widgets.ConfirmDialog(data["message"], no_cb=refuse_cb, yes_cb=accept_cb)
+            self.showPopUp(pop_up_widget)
+
     def actionResult(self, type, id, data):
         if not id in self.current_action_ids:
             debug (_('unknown id, ignoring'))