X-Git-Url: http://git.maemo.org/git/?p=gc-dialer;a=blobdiff_plain;f=src%2Fdc_glade.py;h=2c1563e1c2fe00667501420cc7a3fcf5f51a7a28;hp=28fec313b6cc0cf78ac236ca7a514517b38b17cc;hb=0320d6d2086ce89fe554d8f902531f5b00dbec94;hpb=4645aaf4de19d8d4dcc4504974de114e556edb2d;ds=sidebyside diff --git a/src/dc_glade.py b/src/dc_glade.py index 28fec31..2c1563e 100755 --- a/src/dc_glade.py +++ b/src/dc_glade.py @@ -29,6 +29,7 @@ import threading import base64 import ConfigParser import itertools +import shutil import logging import gtk @@ -97,6 +98,7 @@ class Dialcentral(object): self._alarmHandler = None self._ledHandler = None self._originalCurrentLabels = [] + self._fsContactsPath = os.path.join(constants._data_path_, "contacts") for path in self._glade_files: if os.path.isfile(path): @@ -158,7 +160,11 @@ class Dialcentral(object): button.connect("clicked", self._on_clearcookies_clicked) menu.append(button) - button= gtk.Button("Refresh") + button = gtk.Button("Import Contacts") + button.connect("clicked", self._on_contact_import) + menu.append(button) + + button = gtk.Button("Refresh") button.connect("clicked", self._on_menu_refresh) menu.append(button) @@ -313,8 +319,7 @@ class Dialcentral(object): ), }) - fsContactsPath = os.path.join(constants._data_path_, "contacts") - fileBackend = file_backend.FilesystemAddressBookFactory(fsContactsPath) + fileBackend = file_backend.FilesystemAddressBookFactory(self._fsContactsPath) self._dialpads[self.GV_BACKEND].number_selected = self._select_action self._historyViews[self.GV_BACKEND].number_selected = self._select_action @@ -325,7 +330,7 @@ class Dialcentral(object): self._phoneBackends[self.GV_BACKEND], fileBackend, ] - mergedBook = merge_backend.MergedAddressBook(addressBooks, merge_backend.MergedAddressBook.advanced_lastname_sorter) + mergedBook = merge_backend.MergedAddressBook(addressBooks, merge_backend.MergedAddressBook.basic_firtname_sorter) self._contactsViews[self.GV_BACKEND].append(mergedBook) self._contactsViews[self.GV_BACKEND].extend(addressBooks) self._contactsViews[self.GV_BACKEND].open_addressbook(*self._contactsViews[self.GV_BACKEND].get_addressbooks().next()[0][0:2]) @@ -335,6 +340,7 @@ class Dialcentral(object): "on_refresh": self._on_menu_refresh, "on_clearcookies_clicked": self._on_clearcookies_clicked, "on_about_activate": self._on_about_activate, + "on_import": self._on_contact_import, } if hildonize.GTK_MENU_USED: self._widgetTree.signal_autoconnect(callbackMapping) @@ -485,12 +491,14 @@ class Dialcentral(object): return loggedIn, serviceId - def _select_action(self, action, number, message): + def _select_action(self, action, numbers, message): self.refresh_session() if action == "dial": + assert len(numbers) == 1 + number = numbers[0] self._on_dial_clicked(number) elif action == "sms": - self._on_sms_clicked(number, message) + self._on_sms_clicked(numbers, message) else: assert False, "Unknown action: %s" % action @@ -817,9 +825,9 @@ class Dialcentral(object): self._errorDisplay.push_exception() return False - def _on_sms_clicked(self, number, message): + def _on_sms_clicked(self, numbers, message): try: - assert number, "No number specified" + assert numbers, "No number specified" assert message, "Empty message" try: loggedIn = self._phoneBackends[self._selectedBackendId].is_authed() @@ -836,9 +844,9 @@ class Dialcentral(object): dialed = False try: - self._phoneBackends[self._selectedBackendId].send_sms(number, message) - hildonize.show_information_banner(self._window, "Sending to %s" % number) - _moduleLogger.info("Sending SMS to %s" % number) + self._phoneBackends[self._selectedBackendId].send_sms(numbers, message) + hildonize.show_information_banner(self._window, "Sending to %s" % ", ".join(numbers)) + _moduleLogger.info("Sending SMS to %r" % numbers) dialed = True except Exception, e: self._errorDisplay.push_exception() @@ -879,6 +887,27 @@ class Dialcentral(object): except Exception, e: self._errorDisplay.push_exception() + def _on_contact_import(self, *args): + try: + csvFilter = gtk.FileFilter() + csvFilter.set_name("Contacts") + csvFilter.add_pattern("*.csv") + importFileChooser = gtk.FileChooserDialog( + title="Contacts", + parent=self._window, + ) + importFileChooser.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) + importFileChooser.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK) + + importFileChooser.set_property("filter", csvFilter) + userResponse = importFileChooser.run() + importFileChooser.hide() + if userResponse == gtk.RESPONSE_OK: + filename = importFileChooser.get_filename() + shutil.copy2(filename, self._fsContactsPath) + except Exception, e: + self._errorDisplay.push_exception() + def _on_menu_refresh(self, *args): try: self._refresh_active_tab()