Initial 'dev' branch commit.
[python-purple] / account.pyx
index 0e98548..a1a657f 100644 (file)
 #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 
-cimport glib
+cimport purple
 
-cimport account
-cimport blist
-cimport savedstatuses
-cimport status
+from protocol import Protocol
 
 cdef class Account:
-    """ Account class """
-    cdef account.PurpleAccount *__account
-    cdef savedstatuses.PurpleSavedStatus *__sstatus
-
-    def __cinit__(self, char *username, char *protocol_id):
-        self.__account = account.c_purple_account_new(username, protocol_id)
-
-    def set_password(self, password):
-        account.c_purple_account_set_password(self.__account, password)
-
-    def set_enabled(self, ui, value):
-        account.c_purple_account_set_enabled(self.__account, ui, value)
-
-    def get_acc_username(self):
-        if self.__account:
-            return account.c_purple_account_get_username(self.__account)
-
-    def get_password(self):
-        if self.__account:
-            return account.c_purple_account_get_password(self.__account)
-
-    def set_status(self):
-        self.__sstatus = savedstatuses.c_purple_savedstatus_new(NULL, status.PURPLE_STATUS_AVAILABLE)
-        savedstatuses.c_purple_savedstatus_activate(self.__sstatus)
-
-    def get_buddies_online(self, acc):
-        cdef glib.GSList *iter
-        cdef blist.PurpleBuddy *buddy
-        buddies = []
-        iter = blist.c_purple_find_buddies(self.__account, NULL)
-        while iter:
-            buddy = <blist.PurpleBuddy *> iter.data
-            if <object> buddy and \
-                account.c_purple_account_is_connected(blist.c_purple_buddy_get_account(buddy)) and \
-                status.c_purple_presence_is_online(blist.c_purple_buddy_get_presence(buddy)):
-                buddies += [buddy.name]
-            iter = iter.next
-        return buddies
+    """
+    Account class
+    @param username
+    @param protocol_id
+    """
+
+    def __init__(self, username, protocol_id):
+        self.__username = username
+        self.__protocol_id = Protocol(self, protocol_id)
+
+        if self.__get_structure() == NULL:
+            self.__exists = False
+        else:
+            self.__exists = True
+
+    def __get_username(self):
+        return self.__username
+    username = property(__get_username)
+
+    def __get_protocol_id(self):
+        return self.__protocol_id.protocol_id
+    protocol_id = property(__get_protocol_id)
+
+    def __get_exists(self):
+        return self.__exists
+    exists = property(__get_exists)
+
+    cdef purple.account.PurpleAccount *__get_structure(self):
+        return purple.account.purple_accounts_find(self.username, self.protocol_id)
+
+    def new(self):
+        if self.__exists:
+            return False
+
+        purple.account.purple_account_new(self.username, self.protocol_id)
+        self.__exists = True
+        return True