115 lines
4 KiB
Python
115 lines
4 KiB
Python
from PyQt5.QtCore import Qt, pyqtSignal
|
|
from PyQt5.QtGui import *
|
|
from PyQt5.QtWidgets import *
|
|
import configparser
|
|
from utils.BasicUtils import *
|
|
from utils.CreateConfigure import CreateConfigure
|
|
from utils.Sync import Sync
|
|
from view.LoginWidget import LoginWidget
|
|
from view.SettingWidget import SettingWidget
|
|
from view.Tip_UI import TipUi
|
|
|
|
|
|
class User(QLabel):
|
|
update_signal = pyqtSignal()
|
|
sync_signal = pyqtSignal()
|
|
|
|
def __init__(self):
|
|
super(User, self).__init__()
|
|
self.widget = QWidget(self)
|
|
self.widget.setMaximumWidth(300)
|
|
self.setObjectName('User')
|
|
# todo:修改布局使适合微软todo的样式,设置点击事件,使用右键菜单的样式添加设置、同步、退出,暂时就这样
|
|
|
|
layout = QHBoxLayout()
|
|
info_layout = QVBoxLayout()
|
|
self.pic_label = QLabel('')
|
|
self.pic_label.setObjectName('pic_label')
|
|
self.pic_label.setPixmap(
|
|
QPixmap(os.path.abspath('../') + '/images/user.svg').scaled(50, 50, Qt.IgnoreAspectRatio,
|
|
Qt.SmoothTransformation))
|
|
layout.addWidget(self.pic_label, 2)
|
|
self.user_name = QLabel("本地账号")
|
|
self.user_name.setObjectName('user_name')
|
|
self.user_mail = QLabel('未同步')
|
|
self.user_mail.setStyleSheet('font-size:14px')
|
|
|
|
self.widget.setLayout(layout)
|
|
# 设置右键菜单
|
|
self.context_menu = QMenu(self)
|
|
|
|
info_layout.addWidget(self.user_name)
|
|
info_layout.addWidget(self.user_mail)
|
|
layout.addLayout(info_layout, 4)
|
|
layout.addStretch(1)
|
|
self.update_signal.connect(self.iniUI)
|
|
self.iniUI()
|
|
|
|
def iniUI(self):
|
|
self.context_menu.clear()
|
|
# 读取文件内容
|
|
account = read_init_file()
|
|
if account and account[0] != 'None':
|
|
self.user_name.setText(account[1])
|
|
self.user_mail.setText(account[3])
|
|
else:
|
|
self.user_name.setText("本地账号")
|
|
self.user_mail.setText('未同步')
|
|
# self.user_mail.setObjectName('user_mail')
|
|
|
|
# 背景透明
|
|
self.context_menu.setAttribute(Qt.WA_TranslucentBackground)
|
|
# 无边框、去掉自带阴影
|
|
self.context_menu.setWindowFlags(
|
|
self.context_menu.windowFlags() | Qt.FramelessWindowHint | Qt.NoDropShadowWindowHint)
|
|
|
|
self.context_menu.addAction(QIcon(os.getcwd() + '/../images/setting.svg'), '设置', self.setting)
|
|
|
|
self.context_menu.addAction(QIcon(os.getcwd() + '/../images/sync.svg'), '同步', self.sync)
|
|
if account and account[0] != 'None':
|
|
self.context_menu.addAction(QIcon(os.getcwd() + '/../images/exit.svg'), '登出', self.exit_account)
|
|
else:
|
|
self.context_menu.addAction(QIcon(os.getcwd() + '/../images/login.svg'), '登录', self.login_account)
|
|
|
|
def contextMenuEvent(self, event):
|
|
self.context_menu.exec_(event.globalPos())
|
|
|
|
# todo 设置右键点击事件
|
|
|
|
def setting(self):
|
|
self.setting_widget = SettingWidget()
|
|
self.setting_widget.show()
|
|
|
|
def sync(self):
|
|
account = read_init_file()
|
|
if account and account[0] != 'None':
|
|
sync = Sync()
|
|
sync.start()
|
|
|
|
sync.sync_signal.connect(self.sync_status)
|
|
self.sync_signal.emit()
|
|
else:
|
|
self.login_account()
|
|
pass
|
|
|
|
def sync_status(self):
|
|
TipUi.show_tip('同步成功!')
|
|
print('Success!')
|
|
|
|
def exit_account(self):
|
|
|
|
config_path = return_work_dir() + 'PyQtToDoList.ini'
|
|
# print(config_path)
|
|
try:
|
|
if os.path.exists(config_path):
|
|
os.remove(config_path)
|
|
CreateConfigure()
|
|
except Exception as e:
|
|
print(e)
|
|
self.update_signal.emit()
|
|
pass
|
|
|
|
def login_account(self):
|
|
self.login_window = LoginWidget()
|
|
self.login_window.login_signal.connect(self.iniUI)
|
|
self.login_window.show()
|