⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 encsms.py

📁 symbian 发送短信例子 S60 SMS Sample
💻 PY
字号:
import sys

import messaging, inbox

## Uncomment the following line to use a "fake" inbox for emulator testing.
#messaging = None

import appuifw as ui
import e32
from binascii import b2a_base64, a2b_base64

try:
    import pycrypt
except Exception, msg:
    pycrypt = None

fake_inbox = []

def fake_send(sender, msg):
    import time
    fake_inbox.append(Message(sender,msg,time.time()))

import time


class SendView:
    def __init__(self):
        self.text = ui.Text()
        ui.app.body = self.text
        ui.app.menu = [
            (u'Send', self.send),
            (u'Back', self.back),
            ]

    def send(self):
        txt = self.text.get(0,110)
        txt = txt.encode("utf-8")
        pw = ui.query(u'Password', 'code')
        if pw is None:
            return
        if pycrypt:
            txt = pycrypt.encrypt(txt, pw)
        txt = Message.HEADER + b2a_base64(txt).strip()
        rcp = ui.query(u'Recipient', 'text')
        if rcp is None:
            return
        ui.note(u"Sending SMS")
        if messaging:
            messaging.sms_send(rcp, txt)
        else:
            fake_send(rcp, txt)
        ui.note(u"Message sent")
        self.text = None
        ui.app.body = None
        ReadView()
            
    def back(self):
        ReadView()

class Message:
    HEADER = "#PyCr"
    
    def __init__(self, addr, content, time):
        self.addr = addr
        self.content = content
        self.time = time

    def decrypt(self, pw):
        data = self.content[len(Message.HEADER):]
        data = a2b_base64(data)
        if pycrypt is not None:
            data = pycrypt.decrypt(data, pw)
        try:
            return data.decode("utf-8")
        except UnicodeError:
            return "(unable to decrypt message: invalid password)"

class ReadView:
    def __init__(self):
        ui.app.menu = [
            (u'Open', self.on_select),
            (u'New Message', self.send),
            (u'Refresh', self.refresh),
            (u'Quit', smsapp.quit),
            ]
        if smsapp.msgs is None:
            self.refresh()
        else:
            self.update_lb()

    def refresh(self):
        msgs = []
        if messaging:
            ibx = inbox.Inbox()
            ids = ibx.sms_messages()
            for id in ids:
                cnt = ibx.content(id)
                t = ibx.time(id)
                if cnt.startswith(Message.HEADER):
                    msgs.append(Message(ibx.address(id), cnt, t))
        else:
            msgs = fake_inbox
        smsapp.msgs = msgs
        self.update_lb()

    def update_lb(self):
        msgs = smsapp.msgs
        if not msgs:
            ui.app.body = None
            return
        items = []
        for msg in msgs:
            items.append(unicode("From: %s" % msg.addr))

        lb = ui.Listbox(items, self.on_select)

        ui.app.body = lb

    def on_select(self):
        lb = ui.app.body
        if lb is None:
            return
        idx = lb.current()
        msg = smsapp.msgs[idx]
        MsgView(msg)

    def send(self):
        SendView()

class MsgView:
    def __init__(self, msg):
        pw = ui.query(u'Password', 'code')
        if pw is None:
            ReadView()
            return
        self.msg = msg
        self.text = ui.Text(msg.decrypt(pw))
        ui.app.menu = [
            (u'Back', self.back),
            ]
        ui.app.body = self.text

    def back(self):
        ReadView()

class EncSMSApp:
    def __init__(self):
        self.lock = e32.Ao_lock()
        ui.app.screen = 'large'
        self.msgs = None

    def run(self):
        # Save the existing exit_key_handler from the Ensymble wrapper
        old = ui.app.exit_key_handler
        ui.app.exit_key_handler = self.quit
        ReadView()
        self.lock.wait()
        ui.app.menu = []
        ui.app.body = None
        ui.app.exit_key_handler = old
        

    def quit(self):
        self.lock.signal()

    
smsapp = EncSMSApp()
smsapp.run()


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -