Skip to content

Commit

Permalink
Merge branch 'master' of https://git.oschina.net/akee/entboost
Browse files Browse the repository at this point in the history
  • Loading branch information
sohokay94how committed Sep 8, 2021
2 parents e77fddb + 3631f2b commit 7676003
Show file tree
Hide file tree
Showing 40 changed files with 544 additions and 413 deletions.
4 changes: 3 additions & 1 deletion src/POP/DlgChatInput.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,9 @@ void CDlgChatInput::SetCtrlColor(bool bInvalidate)
}
void CDlgChatInput::SetInputFocus(void)
{
m_richInput.SetFocus();
if (m_richInput.GetSafeHwnd()!=0) {
m_richInput.SetFocus();
}
}

// CDlgChatInput message handlers
Expand Down
2 changes: 1 addition & 1 deletion src/POP/DlgMyEnterprise.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1280,7 +1280,7 @@ void CDlgMyEnterprise::EmployeeInfo(const EB_MemberInfo* pMemberInfo, bool bChan
else
pEmpItemInfo->m_nExtData |= CTreeItemInfo::ITEM_EXT_DATA_FORBID_SPEECH;

if (theApp.IsEnterpriseCreateUserId(pMemberInfo->m_nMemberUserId))
if (pDepItemInfo->m_nSubType<=EB_GROUP_TYPE_PROJECT && theApp.IsEnterpriseCreateUserId(pMemberInfo->m_nMemberUserId))
pEmpItemInfo->m_nSubType = 11;
else if (theEBAppClient.EB_IsGroupCreator(pMemberInfo->m_sGroupCode, pMemberInfo->m_nMemberUserId))
pEmpItemInfo->m_nSubType = 10;
Expand Down
13 changes: 7 additions & 6 deletions src/POP/DlgMyGroup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ void CDlgMyGroup::SetMemberInfo(HTREEITEM hGroupItem, IEB_MemberInfo* pEBEmploye
}
}
#else
void CDlgMyGroup::SetMemberInfo(HTREEITEM hGroupItem, const EB_MemberInfo* pMemberInfo, SORT_ITEMS_FLAG nSortItems)
void CDlgMyGroup::SetMemberInfo(const CTreeItemInfo::pointer &hGroupItem, const EB_MemberInfo* pMemberInfo, SORT_ITEMS_FLAG nSortItems)
{
if (hGroupItem != NULL && pMemberInfo != NULL && pMemberInfo->m_sMemberCode>0)
{
Expand All @@ -228,7 +228,7 @@ void CDlgMyGroup::SetMemberInfo(HTREEITEM hGroupItem, const EB_MemberInfo* pMemb
CTreeItemInfo::pointer pEmpItemInfo;
if (!m_pEmpItemInfo.find(pMemberInfo->m_sMemberCode, pEmpItemInfo))
{
HTREEITEM hEmpItem = m_treeDepartment.InsertItem(sText, hGroupItem);
HTREEITEM hEmpItem = m_treeDepartment.InsertItem(sText, hGroupItem->m_hItem);
pEmpItemInfo = CTreeItemInfo::create(CTreeItemInfo::ITEM_TYPE_MEMBER,hEmpItem);
m_pEmpItemInfo.insert(pMemberInfo->m_sMemberCode, pEmpItemInfo);
m_treeDepartment.SetItemData(hEmpItem, (DWORD)pEmpItemInfo.get());
Expand Down Expand Up @@ -257,7 +257,8 @@ void CDlgMyGroup::SetMemberInfo(HTREEITEM hGroupItem, const EB_MemberInfo* pMemb
else
pEmpItemInfo->m_nExtData |= CTreeItemInfo::ITEM_EXT_DATA_FORBID_SPEECH;

if (theApp.IsEnterpriseCreateUserId(pMemberInfo->m_nMemberUserId))

if (hGroupItem->m_nSubType<=EB_GROUP_TYPE_PROJECT && theApp.IsEnterpriseCreateUserId(pMemberInfo->m_nMemberUserId))
pEmpItemInfo->m_nSubType = 11;
else if (theEBAppClient.EB_IsGroupCreator(pMemberInfo->m_sGroupCode, pMemberInfo->m_nMemberUserId))
pEmpItemInfo->m_nSubType = 10;
Expand All @@ -274,7 +275,7 @@ void CDlgMyGroup::SetMemberInfo(HTREEITEM hGroupItem, const EB_MemberInfo* pMemb
//m_treeDepartment.SelectItem(pEmpItemInfo->m_hItem);
// ?? 这里要实现,状况改变
if (nSortItems==ENABLE_SORT)
m_treeDepartment.Sort(hGroupItem, CPOPApp::TreeCmpFunc);
m_treeDepartment.Sort(hGroupItem->m_hItem, CPOPApp::TreeCmpFunc);
}
}
#endif
Expand Down Expand Up @@ -441,7 +442,7 @@ void CDlgMyGroup::MyDepartmentInfo(const EB_GroupInfo* pGroupInfo)
{
const EB_MemberInfo& pMemberInfo = pOutMemberInfoList[i];
if (pMemberInfo.m_sMemberCode==0) continue;
SetMemberInfo(pDepItemInfo->m_hItem, &pMemberInfo,DISABLE_SORT);
SetMemberInfo(pDepItemInfo, &pMemberInfo,DISABLE_SORT);
}
if ( !pOutMemberInfoList.empty() ) {
m_treeDepartment.Sort(pDepItemInfo->m_hItem, CPOPApp::TreeCmpFunc);
Expand Down Expand Up @@ -528,7 +529,7 @@ void CDlgMyGroup::MyDepMemberInfo(const EB_MemberInfo* pMemberInfo, bool bChange
// 已经加载成员
if (pDepItemInfo->m_dwItemData==0)
pDepItemInfo->m_dwItemData = 1;
SetMemberInfo(pDepItemInfo->m_hItem, pMemberInfo);
SetMemberInfo(pDepItemInfo, pMemberInfo);
if (bChangeLineState)
{
CEBString sGroupName;
Expand Down
2 changes: 1 addition & 1 deletion src/POP/DlgMyGroup.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ class CDlgMyGroup : public CDialog
#ifdef USES_EBCOM_TEST
void SetMemberInfo(HTREEITEM hGroupItem, IEB_MemberInfo* pEBEmployeeInfo);
#else
void SetMemberInfo(HTREEITEM hGroupItem, const EB_MemberInfo* pMemberInfo,SORT_ITEMS_FLAG nSortItems=AUTO_SORT);
void SetMemberInfo(const CTreeItemInfo::pointer &hGroupItem, const EB_MemberInfo* pMemberInfo,SORT_ITEMS_FLAG nSortItems=AUTO_SORT);
#endif
CTreeItemInfo::pointer GetDepItemInfo(HTREEITEM hItem) const;
void CallItem(HTREEITEM hItem);
Expand Down
8 changes: 4 additions & 4 deletions src/POP/DlgSelectUser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -485,7 +485,7 @@ void CDlgSelectUser::onMemberInfo(const EB_MemberInfo* pMemberInfo)
else
pEmpItemInfo->m_nExtData |= CTreeItemInfo::ITEM_EXT_DATA_FORBID_SPEECH;

if (theApp.IsEnterpriseCreateUserId(pMemberInfo->m_nMemberUserId))
if (pDepItemInfo->m_nSubType<=EB_GROUP_TYPE_PROJECT && theApp.IsEnterpriseCreateUserId(pMemberInfo->m_nMemberUserId))
pEmpItemInfo->m_nSubType = 11;
else if (theEBAppClient.EB_IsGroupCreator(pMemberInfo->m_sGroupCode, pMemberInfo->m_nMemberUserId))
pEmpItemInfo->m_nSubType = 10;
Expand Down Expand Up @@ -525,7 +525,7 @@ void CDlgSelectUser::onMemberInfo(const EB_MemberInfo* pMemberInfo)
else
pEmpItemInfo->m_nExtData |= CTreeItemInfo::ITEM_EXT_DATA_FORBID_SPEECH;

if (theApp.IsEnterpriseCreateUserId(pMemberInfo->m_nMemberUserId))
if (pDepItemInfo->m_nSubType<=EB_GROUP_TYPE_PROJECT && theApp.IsEnterpriseCreateUserId(pMemberInfo->m_nMemberUserId))
pEmpItemInfo->m_nSubType = 11;
else if (theEBAppClient.EB_IsGroupCreator(pMemberInfo->m_sGroupCode, pMemberInfo->m_nMemberUserId))
pEmpItemInfo->m_nSubType = 10;
Expand Down Expand Up @@ -671,7 +671,7 @@ void CDlgSelectUser::onMemberInfo(const EB_GroupInfo* pGroupInfo, const EB_Membe
else
pEmpItemInfo->m_nExtData |= CTreeItemInfo::ITEM_EXT_DATA_FORBID_SPEECH;

if (theApp.IsEnterpriseCreateUserId(pMemberInfo->m_nMemberUserId))
if (pDepItemInfo->m_nSubType<=EB_GROUP_TYPE_PROJECT && theApp.IsEnterpriseCreateUserId(pMemberInfo->m_nMemberUserId))
pEmpItemInfo->m_nSubType = 11;
else if (theEBAppClient.EB_IsGroupCreator(pMemberInfo->m_sGroupCode, pMemberInfo->m_nMemberUserId))
pEmpItemInfo->m_nSubType = 10;
Expand Down Expand Up @@ -711,7 +711,7 @@ void CDlgSelectUser::onMemberInfo(const EB_GroupInfo* pGroupInfo, const EB_Membe
else
pEmpItemInfo->m_nExtData |= CTreeItemInfo::ITEM_EXT_DATA_FORBID_SPEECH;

if (theApp.IsEnterpriseCreateUserId(pMemberInfo->m_nMemberUserId))
if (pDepItemInfo->m_nSubType<=EB_GROUP_TYPE_PROJECT && theApp.IsEnterpriseCreateUserId(pMemberInfo->m_nMemberUserId))
pEmpItemInfo->m_nSubType = 11;
else if (theEBAppClient.EB_IsGroupCreator(pMemberInfo->m_sGroupCode, pMemberInfo->m_nMemberUserId))
pEmpItemInfo->m_nSubType = 10;
Expand Down
2 changes: 1 addition & 1 deletion src/POP/DlgUserList.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ int CDlgUserList::OnUserEmpInfo(const EB_MemberInfo* pMemberInfo, bool bSort)
pTreeItemInfo->m_nExtData &= ~CTreeItemInfo::ITEM_EXT_DATA_FORBID_SPEECH;
else
pTreeItemInfo->m_nExtData |= CTreeItemInfo::ITEM_EXT_DATA_FORBID_SPEECH;
if (theApp.IsEnterpriseCreateUserId(pMemberInfo->m_nMemberUserId))
if (m_pGroupInfo.m_nGroupType<=EB_GROUP_TYPE_PROJECT && theApp.IsEnterpriseCreateUserId(pMemberInfo->m_nMemberUserId))
pTreeItemInfo->m_nSubType = 11;
else if (theEBAppClient.EB_IsGroupCreator(pMemberInfo->m_sGroupCode, pMemberInfo->m_nMemberUserId))
pTreeItemInfo->m_nSubType = 10;
Expand Down
8 changes: 4 additions & 4 deletions src/POP/POP.rc
Original file line number Diff line number Diff line change
Expand Up @@ -1023,8 +1023,8 @@ END
//

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,25,1,563
PRODUCTVERSION 1,25,1,563
FILEVERSION 1,25,1,565
PRODUCTVERSION 1,25,1,565
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
Expand All @@ -1041,12 +1041,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Entboost.com, Inc."
VALUE "FileDescription", "���������ͻ���"
VALUE "FileVersion", "1, 25, 1, 563"
VALUE "FileVersion", "1, 25, 1, 565"
VALUE "InternalName", "ebc.exe"
VALUE "LegalCopyright", "(c) Entboost.com, Inc. All rights reserved."
VALUE "OriginalFilename", "ebc.exe"
VALUE "ProductName", "���������ͻ���"
VALUE "ProductVersion", "1, 25, 1, 563"
VALUE "ProductVersion", "1, 25, 1, 565"
END
END
BLOCK "VarFileInfo"
Expand Down
2 changes: 1 addition & 1 deletion src/POP/POPDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7467,7 +7467,7 @@ void CPOPDlg::OnTimer(UINT_PTR nIDEvent)
std::vector<eb::bigint> pGroupIdList;
std::vector<eb::bigint> pFromUserIdList;
CString sSql;
sSql.Format(_T("SELECT DISTINCT dep_code,from_uid FROM msg_record_t WHERE from_uid<>%lld (read_flag&1)=0 LIMIT 30"),theApp.GetLogonUserId());
sSql.Format(_T("SELECT DISTINCT dep_code,from_uid FROM msg_record_t WHERE from_uid<>%lld AND (read_flag&1)=0 LIMIT 30"),theApp.GetLogonUserId());
int nCookie = 0;
theApp.m_pBoUsers->select(sSql, nCookie);
cgcValueInfo::pointer pRecord = theApp.m_pBoUsers->first(nCookie);
Expand Down
30 changes: 1 addition & 29 deletions src/libpopusermanager/UserManagerApp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -903,11 +903,7 @@ void CUserManagerApp::DoProcess(void)
if (theREsendIdList.find(nMsgId,pCallToSendInfo,true))
{
const mycp::bigint sCallId = pProcessMsgInfo->m_nBigInt2;
#ifdef _QT_MAKE_
SendCrFile(sCallId,pCallToSendInfo->m_sFilePath,pCallToSendInfo->m_sTo,pCallToSendInfo->m_bPrivate,pCallToSendInfo->m_bOffFile);
#else
SendCrFile(sCallId,pCallToSendInfo->m_sFilePath.c_str(),pCallToSendInfo->m_sTo,pCallToSendInfo->m_bPrivate,pCallToSendInfo->m_bOffFile);
#endif
}
}break;
#endif
Expand Down Expand Up @@ -939,13 +935,8 @@ void CUserManagerApp::DoProcess(void)
{
const mycp::bigint sCallId = pProcessMsgInfo->m_nCallGroupId;
const mycp::bigint sResourceId = pProcessMsgInfo->m_nBigInt1;
#ifdef _QT_MAKE_
const QString sFileName(pProcessMsgInfo->m_sString1);
const EBFileString sFileName(pProcessMsgInfo->m_sString1);
SendCrFile(sCallId,sFileName,sResourceId);
#else
const tstring sFileName(pProcessMsgInfo->m_sString1);
SendCrFile(sCallId,sFileName.c_str(),sResourceId);
#endif
}break;
case CProcessMsgInfo::PROCESS_MSG_TYPE_LOAD_RESOURCE_INFO:
{
Expand Down Expand Up @@ -6385,11 +6376,7 @@ void CUserManagerApp::OnProcessTimer(const CPOPCUserManager* pUMOwner)
//}
//DeleteOnlineFileList(sCallId,pCallToSendInfo->m_nMsgId);
// 重新发送
#ifdef _QT_MAKE_
SendCrFile(sCallId,pCallToSendInfo->m_sFilePath,pCallToSendInfo->m_sTo,pCallToSendInfo->m_bPrivate,pCallToSendInfo->m_bOffFile);
#else
SendCrFile(sCallId,pCallToSendInfo->m_sFilePath.c_str(),pCallToSendInfo->m_sTo,pCallToSendInfo->m_bPrivate,pCallToSendInfo->m_bOffFile);
#endif
}
}
}
Expand Down Expand Up @@ -11916,17 +11903,10 @@ void CUserManagerApp::ProcessToSendList(mycp::bigint nCallId, bool bSendGroupCal
if (!pSendFileList.exist(pCallToSendInfo->m_sFilePath))
{
pSendFileList.insert(pCallToSendInfo->m_sFilePath,true,false);
#ifdef _QT_MAKE_
if (pCallToSendInfo->m_nResourceId>0)
SendCrFile(nCallId,pCallToSendInfo->m_sFilePath,pCallToSendInfo->m_nResourceId);
else
SendCrFile(nCallId,pCallToSendInfo->m_sFilePath,pCallToSendInfo->m_sTo,pCallToSendInfo->m_bPrivate,pCallToSendInfo->m_bOffFile,true);
#else
if (pCallToSendInfo->m_nResourceId>0)
SendCrFile(nCallId,pCallToSendInfo->m_sFilePath.c_str(),pCallToSendInfo->m_nResourceId);
else
SendCrFile(nCallId,pCallToSendInfo->m_sFilePath.c_str(),pCallToSendInfo->m_sTo,pCallToSendInfo->m_bPrivate,pCallToSendInfo->m_bOffFile,true);
#endif
}
}
}
Expand Down Expand Up @@ -12438,11 +12418,7 @@ void CUserManagerApp::OnSendingFile(const CCrFileInfo& pFileInfo)
if (bResendFile)
{
bool bInviteCall = false;
#ifdef _QT_MAKE_
this->SendCrFile(sCallId,pFileInfo.m_sFileName,pFileInfo.m_sSendTo,pFileInfo.m_bPrivate,pFileInfo.m_bOffFile,false,&bInviteCall);
#else
this->SendCrFile(sCallId,pFileInfo.m_sFileName.c_str(),pFileInfo.m_sSendTo,pFileInfo.m_bPrivate,pFileInfo.m_bOffFile,false,&bInviteCall);
#endif
if (bInviteCall)
bP2Pequest = false;
}
Expand Down Expand Up @@ -12753,11 +12729,7 @@ void CUserManagerApp::OnCancelFile(const CCrFileInfo& pFileInfo)
CToSendInfo::pointer pCallToSendInfo;
if (theREsendIdList.find(pFileInfo.m_nMsgId,pCallToSendInfo,true))
{
#ifdef _QT_MAKE_
SendCrFile(sCallId,pCallToSendInfo->m_sFilePath,pCallToSendInfo->m_sTo,pCallToSendInfo->m_bPrivate,pCallToSendInfo->m_bOffFile);
#else
SendCrFile(sCallId,pCallToSendInfo->m_sFilePath.c_str(),pCallToSendInfo->m_sTo,pCallToSendInfo->m_bPrivate,pCallToSendInfo->m_bOffFile);
#endif
}
#endif
return;
Expand Down
15 changes: 9 additions & 6 deletions src/proj/Qt/entboost/ebclientapp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ EbcLocales theLocales;
EbClientApp::EbClientApp(QObject *parent)
: QObject(parent)
, m_nSelectCallId(0)
, m_nSelectGroupId(0)
, m_mainColor(0,162,232)
// , m_hotColor(m_mainColor), m_preColor(m_mainColor)

Expand Down Expand Up @@ -100,6 +101,7 @@ EbClientApp::pointer EbClientApp::create(QObject *parent)
void EbClientApp::clearSubscribeSelectInfo()
{
m_nSelectCallId = 0;
m_nSelectGroupId = 0;
}

//void EbClientApp::triggeredApps(eb::bigint subId)
Expand Down Expand Up @@ -584,6 +586,7 @@ void EbClientApp::onAppIdSuccess(QEvent * e)
}
else {
/// 没有配置,使用默认
m_sqliteEbc->execute("UPDATE sys_value_t SET value1='' WHERE name='product-name'");
this->m_sProductName = QString::fromStdString( this->m_setting.GetEnterprise() );
}
}
Expand Down Expand Up @@ -731,14 +734,13 @@ void EbClientApp::onAppIdSuccess(QEvent * e)
const std::string sEnterprise( this->m_setting.GetEnterprise() );
if ( sEnterprise.find("恩布")==std::string::npos ) {
m_sProductName = QString::fromUtf8("恩布互联");
// if (m_receiver!=NULL)
// QApplication::postEvent(m_receiver, new QEvent((QEvent::Type)EB_COMMAND_UPDATE_PRODUCT_NAME));
}
else {
m_sProductName = sEnterprise.c_str();
}

if (QFile::exists(sEntLogoImagePath)) {
QFile::remove(sEntLogoImagePath); // ?
// if (m_receiver!=NULL)
// QApplication::postEvent(m_receiver, new QEvent((QEvent::Type)EB_COMMAND_UPDATE_ENT_LOGO));
}
}

Expand Down Expand Up @@ -843,6 +845,9 @@ bool EbClientApp::initApp(void)
}
void EbClientApp::exitApp(bool bResetEbumOnly)
{
if (!bResetEbumOnly) {
this->m_ebum.EB_SetMsgReceiver(0);
}
this->m_ebum.EB_UnInit();
if (!bResetEbumOnly) {
m_sqliteEbc.reset();
Expand Down Expand Up @@ -987,10 +992,8 @@ QString EbClientApp::urlIconFilePath(const QUrl &url)

QString EbClientApp::subscribeFuncUrl(mycp::bigint subId, const std::string &sParameters)
{
mycp::bigint m_nSelectCallId = 0;
mycp::bigint m_nSelectUserId = 0;
tstring m_sSelectAccount;
mycp::bigint m_nSelectGroupId = 0;

const tstring sFuncUrl = m_ebum.EB_GetSubscribeFuncUrl(
subId,m_nSelectCallId,m_nSelectUserId,m_sSelectAccount,m_nSelectGroupId );
Expand Down
1 change: 1 addition & 0 deletions src/proj/Qt/entboost/ebclientapp.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ class EbClientApp : public QObject
CLockMap<eb::bigint,bool> m_pAutoCallFromUserIdList;
CLockMap<eb::bigint,bool> m_pCancelFileList;
eb::bigint m_nSelectCallId;
eb::bigint m_nSelectGroupId;
void clearSubscribeSelectInfo(void);
// void triggeredApps(eb::bigint subId);
// std::vector<EB_SubscribeFuncInfo> m_pSubscribeFuncList;
Expand Down
19 changes: 14 additions & 5 deletions src/proj/Qt/entboost/ebcontextmenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -867,17 +867,26 @@ void EbContextMenu::onTriggeredActionExitGroup()

void EbContextMenu::onTriggeredActionGroupAddForbidSpeech()
{
if (m_itemInfo.get()==0 || m_itemInfo->m_nItemType!=EbWidgetItemInfo::ITEM_TYPE_GROUP) return;
if (m_itemInfo.get()==0 || m_itemInfo->m_sGroupCode==0) {
return;
}
/// 群组禁言
theApp->m_ebum.EB_SetGroupForbidSpeech(m_itemInfo->m_sGroupCode,true);

if (m_itemInfo->m_nItemType==EbWidgetItemInfo::ITEM_TYPE_GROUP ||
m_type==UserList) {
theApp->m_ebum.EB_SetGroupForbidSpeech(m_itemInfo->m_sGroupCode,true);
}
}

void EbContextMenu::onTriggeredActionGroupDelForbidSpeech()
{
if (m_itemInfo.get()==0 || m_itemInfo->m_nItemType!=EbWidgetItemInfo::ITEM_TYPE_GROUP) return;
if (m_itemInfo.get()==0 || m_itemInfo->m_sGroupCode==0) {
return;
}
/// 解除群组禁言
theApp->m_ebum.EB_SetGroupForbidSpeech(m_itemInfo->m_sGroupCode,false);
if (m_itemInfo->m_nItemType==EbWidgetItemInfo::ITEM_TYPE_GROUP ||
m_type==UserList) {
theApp->m_ebum.EB_SetGroupForbidSpeech(m_itemInfo->m_sGroupCode,false);
}
}

void EbContextMenu::onTriggeredActionEditMember()
Expand Down
2 changes: 2 additions & 0 deletions src/proj/Qt/entboost/ebdefines.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ static const char * theHideMainFrame = "eb-hide-mainframe";
static const char * theOpenFileManager = "eb-open-filemanager";
static const char * theMailTo = "mailto";

const qint64 constGroupShareSubId = 1002300105;


typedef enum EB_VIEW_MODE {
EB_VIEW_MAIN_FRAME, /// 主界面
Expand Down
Loading

0 comments on commit 7676003

Please sign in to comment.