From df26aaead877c69c51c3b639bb3f216afd219518 Mon Sep 17 00:00:00 2001 From: shuaikangzhou <863909694@qq.com> Date: Sat, 25 Nov 2023 00:20:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=AC=AC=E4=B8=80=E6=AC=A1?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/workspace.xml | 34 ++++++++++++------------- app/DataBase/hard_link.py | 7 ++++- app/DataBase/msg.py | 6 +++++ app/ui_pc/chat/chat_info.py | 2 +- app/ui_pc/chat/chat_window.py | 22 +++++++++++++--- app/ui_pc/contact/contact_window.py | 18 ++++++++++++- app/ui_pc/mainview.py | 3 ++- app/ui_pc/tool/pc_decrypt/pc_decrypt.py | 6 ++--- app/ui_pc/tool/tool_window.py | 2 ++ app/util/path.py | 2 ++ 10 files changed, 75 insertions(+), 27 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 46daa98..1c4f215 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -4,16 +4,16 @@ - @@ -677,7 +676,8 @@ - diff --git a/app/DataBase/hard_link.py b/app/DataBase/hard_link.py index 18e8e5c..0a922d0 100644 --- a/app/DataBase/hard_link.py +++ b/app/DataBase/hard_link.py @@ -35,7 +35,12 @@ def get_image_by_md5(md5: bytes): ''' try: lock.acquire(True) - cursor.execute(sql, [md5, ]) + try: + cursor.execute(sql, [md5]) + except AttributeError: + init_database() + finally: + cursor.execute(sql, [md5]) result = cursor.fetchone() return result finally: diff --git a/app/DataBase/msg.py b/app/DataBase/msg.py index dd61e0d..6300236 100644 --- a/app/DataBase/msg.py +++ b/app/DataBase/msg.py @@ -8,6 +8,7 @@ DB = [] cursor = [] msg_root_path = "./app/Database/Msg/" lock = threading.Lock() + # misc_path = './Msg/Misc.db' if os.path.exists(msg_root_path): for root, dirs, files in os.walk(msg_root_path): @@ -22,9 +23,14 @@ if os.path.exists(msg_root_path): cursor.append(cursor0) +def is_database_exist(): + return os.path.exists(msg_root_path + 'MSG0.db') + + def init_database(): global DB global cursor + print(DB) if not DB: if os.path.exists(msg_root_path): for root, dirs, files in os.walk(msg_root_path): diff --git a/app/ui_pc/chat/chat_info.py b/app/ui_pc/chat/chat_info.py index 20035e3..dca49b0 100644 --- a/app/ui_pc/chat/chat_info.py +++ b/app/ui_pc/chat/chat_info.py @@ -5,7 +5,7 @@ from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QHBoxLayout from app.DataBase import msg, hard_link from app.components.bubble_message import BubbleMessage, ChatWidget, Notice -from app.person import MePC +from app.person_pc import MePC from app.util import get_abs_path from app.util.emoji import get_emoji diff --git a/app/ui_pc/chat/chat_window.py b/app/ui_pc/chat/chat_window.py index ad5bbfc..bd45f4a 100644 --- a/app/ui_pc/chat/chat_window.py +++ b/app/ui_pc/chat/chat_window.py @@ -1,7 +1,7 @@ from PyQt5.QtCore import QThread, pyqtSignal from PyQt5.QtWidgets import QWidget, QMessageBox, QAction, QLineEdit -from app.DataBase import micro_msg, misc +from app.DataBase import micro_msg, misc, msg from app.components import ContactQListWidgetItem from app.person_pc import ContactPC from app.ui_pc.Icon import Icon @@ -72,10 +72,13 @@ class ChatWindow(QWidget, Ui_Form): def show_chats(self): if self.ok_flag: return + msg.init_database() micro_msg.init_database() - if not micro_msg.is_database_exist(): + if not msg.is_database_exist(): QMessageBox.critical(self, "错误", "数据库不存在\n请先解密数据库") - self.load_finish_signal.emit(True) + self.show_thread = ShowThread() + self.show_thread.load_finish_signal.connect(self.load_finish_signal) + self.show_thread.start() return self.show_thread = ShowContactThread() self.show_thread.showSingal.connect(self.show_chat) @@ -141,3 +144,16 @@ class ShowContactThread(QThread): self.showSingal.emit(contact) # pprint(contact.__dict__) self.load_finish_signal.emit(True) + + +class ShowThread(QThread): + showSingal = pyqtSignal(ContactPC) + load_finish_signal = pyqtSignal(bool) + + # heightSingal = pyqtSignal(int) + def __init__(self): + super().__init__() + + def run(self) -> None: + QThread.sleep(1) + self.load_finish_signal.emit(True) diff --git a/app/ui_pc/contact/contact_window.py b/app/ui_pc/contact/contact_window.py index 3b3ea27..f18beab 100644 --- a/app/ui_pc/contact/contact_window.py +++ b/app/ui_pc/contact/contact_window.py @@ -75,7 +75,10 @@ class ContactWindow(QWidget, Ui_Form): micro_msg.init_database() if not micro_msg.is_database_exist(): QMessageBox.critical(self, "错误", "数据库不存在\n请先解密数据库") - self.load_finish_signal.emit(True) + self.show_thread = ShowThread() + self.show_thread.showSingal.connect(self.show_contact) + self.show_thread.load_finish_signal.connect(self.load_finish_signal) + self.show_thread.start() return self.show_thread = ShowContactThread() self.show_thread.showSingal.connect(self.show_contact) @@ -130,3 +133,16 @@ class ShowContactThread(QThread): self.showSingal.emit(contact) # pprint(contact.__dict__) self.load_finish_signal.emit(True) + + +class ShowThread(QThread): + showSingal = pyqtSignal(ContactPC) + load_finish_signal = pyqtSignal(bool) + + # heightSingal = pyqtSignal(int) + def __init__(self): + super().__init__() + + def run(self) -> None: + QThread.sleep(1) + self.load_finish_signal.emit(True) diff --git a/app/ui_pc/mainview.py b/app/ui_pc/mainview.py index a07cb69..ec71313 100644 --- a/app/ui_pc/mainview.py +++ b/app/ui_pc/mainview.py @@ -80,7 +80,7 @@ class MainWinController(QMainWindow, mainwindow.Ui_MainWindow): self.label.setGeometry((self.width() - 300) // 2, (self.height() - 100) // 2, 300, 100) self.label.setPixmap(QPixmap(':/icons/icons/loading.svg')) - def load_data(self): + def load_data(self, flag=True): if os.path.exists('./app/data/info.json'): with open('./app/data/info.json', 'r', encoding='utf-8') as f: dic = json.loads(f.read()) @@ -117,6 +117,7 @@ class MainWinController(QMainWindow, mainwindow.Ui_MainWindow): tool_window = ToolWindow() tool_window.get_info_signal.connect(self.set_my_info) + tool_window.decrypt_success_signal.connect(self.load_data) tool_window.load_finish_signal.connect(self.loading) self.stackedWidget.addWidget(tool_window) self.listWidget.setCurrentRow(0) diff --git a/app/ui_pc/tool/pc_decrypt/pc_decrypt.py b/app/ui_pc/tool/pc_decrypt/pc_decrypt.py index d481089..160afe5 100644 --- a/app/ui_pc/tool/pc_decrypt/pc_decrypt.py +++ b/app/ui_pc/tool/pc_decrypt/pc_decrypt.py @@ -13,7 +13,7 @@ from . import decryptUi class DecryptControl(QWidget, decryptUi.Ui_Dialog): - DecryptSignal = pyqtSignal(str) + DecryptSignal = pyqtSignal(bool) get_wxidSignal = pyqtSignal(str) def __init__(self, parent=None): @@ -126,7 +126,7 @@ class DecryptControl(QWidget, decryptUi.Ui_Dialog): # 中间可以添加处理逻辑 # QMessageBox.about(self, "解密成功", "数据库文件存储在app/DataBase/Msg文件夹下") - self.DecryptSignal.emit('ok') + self.DecryptSignal.emit(True) # self.close() def setProgressBarMaxNum(self, max_val): @@ -156,7 +156,7 @@ class DecryptControl(QWidget, decryptUi.Ui_Dialog): except: with open('./info.json', 'w', encoding='utf-8') as f: f.write(json.dumps(dic)) - self.DecryptSignal.emit('ok') + self.DecryptSignal.emit(True) self.close() diff --git a/app/ui_pc/tool/tool_window.py b/app/ui_pc/tool/tool_window.py index a7b227e..747bbe4 100644 --- a/app/ui_pc/tool/tool_window.py +++ b/app/ui_pc/tool/tool_window.py @@ -46,6 +46,7 @@ HistoryPanel::item:hover { class ToolWindow(QWidget, Ui_Dialog): get_info_signal = pyqtSignal(str) + decrypt_success_signal = pyqtSignal(bool) load_finish_signal = pyqtSignal(bool) def __init__(self, parent=None): @@ -64,6 +65,7 @@ class ToolWindow(QWidget, Ui_Dialog): tool_item = QListWidgetItem(Icon.MyInfo_Icon, 'None', self.listWidget) decrypt_window = DecryptControl() decrypt_window.get_wxidSignal.connect(self.get_info_signal) + decrypt_window.DecryptSignal.connect(self.decrypt_success_signal) self.stackedWidget.addWidget(decrypt_window) label = QLabel('我是页面', self) label.setAlignment(Qt.AlignCenter) diff --git a/app/util/path.py b/app/util/path.py index 537c78e..83f25d2 100644 --- a/app/util/path.py +++ b/app/util/path.py @@ -3,6 +3,8 @@ import os from app.person_pc import MePC from app.util import dat2pic +if not os.path.exists('./data/'): + os.mkdir('./data/') if not os.path.exists('./data/image'): os.mkdir('./data/image')