/*********************************************
File Name: TMainWidget.cpp
Description: 客户端主界面
********************************************/
#include "TMainWidget.h"
#include "TFriendListWidget.h"
#include "TLatestMessageListWidget.h"
#include "TToolBox.h"
#include "TMainCtrl.h"
#include "TChatWidget.h"
#include "TFriendButton.h"
#include "TInformationWidget.h"
#include "TClickLabel.h"
#include "TLinkButton.h"
#include "TLinkFriendButton.h"
#include "TSearchListWidget.h"
#include "TEncryption.h"
static const QString TMP_LOCAL_HISTORY_PARH = "/tmp/local_history_message";
//拷贝文件:
bool copyFileToPath(QString sourceDir ,QString toDir, bool coverFileIfExist)
{
toDir.replace("\\","/");
if (sourceDir == toDir){
return true;
}
if (!QFile::exists(sourceDir)){
return false;
}
QDir *createfile = new QDir;
bool exist = createfile->exists(toDir);
if (exist){
if(coverFileIfExist){
createfile->remove(toDir);
}
}//end if
if(!QFile::copy(sourceDir, toDir))
{
return false;
}
return true;
}
TMainWidget::TMainWidget(const TUserInformation me, QWidget *parent) :
QWidget(parent), mDatabase(me.mstrUserID)
{
mnFlag = 0;
mnTimerId = 0;
mMyselfInfo = me;
mnOnlineCounter = 0;
initIMMainWidget();
linkSignalWithSlot();
creatMenu();
setWindowTitle(tr("MPR IM"));
}
TMainWidget::~TMainWidget()
{
// 关闭定时器
if (mnTimerId != 0)
{
killTimer(mnTimerId);
mnTimerId = 0;
}
if (mDatabase.isOpen())
{
mDatabase.close();
}
// 清空容器
clearContainers();
qDeleteAll(mmapInformation.begin(), mmapInformation.end());
mmapInformation.clear();
}
/*************************************************
Function Name: getLocalMyInformation()
Description: 获取本地个人信息
*************************************************/
TUserInformation TMainWidget::getLocalMyInformation() const
{
return mMyselfInfo;
}
/*************************************************
Function Name: getLocalMyInformation()
Description: 获取本地个人信息
*************************************************/
bool TMainWidget::isMyFriend(const QString & id) const
{
if (mmapFriend.contains(id))
return true;
return false;
}
/*************************************************
Function Name: insertChatRoomMap()
Description: 插入聊天室
*************************************************/
void TMainWidget::insertChatRoomMap(const QString &id, TChatWidget *chatRoom)
{
id;
chatRoom;
}
/*************************************************
Function Name: insertFlockRoomMap()
Description: 插入聊天室
*************************************************/
void TMainWidget::insertFlockRoomMap(const QString & id,
TFlockChatWidget *chatRoom)
{
id;
chatRoom;
}
/*************************************************
Function Name: insertDiscussionRoomMap()
Description: 插入聊天室
*************************************************/
void TMainWidget::insertDiscussionRoomMap(const QString & id,
TDiscussionChatWidget *chatRoom)
{
id;
chatRoom;
}
/*************************************************
Function Name: getFriendInformation
Description: 获取好友信息(发送至服务器)
*************************************************/
void TMainWidget::getFriendInformation(const QString &id)
{
if (nullptr != mpMainCtrl)
mpMainCtrl->getFriendInformation(id);
}
/*************************************************
Function Name: changeMyInformation
Description: 改变自己信息(发送至服务器)
*************************************************/
void TMainWidget::changeMyInformation(const TUserInformation &me)
{
if (nullptr != mpMainCtrl)
mpMainCtrl->changeMyInformation(me);
}
/*************************************************
Function Name: changeFriendRemark
Description: 改变好友备注(发送至服务器)
*************************************************/
void TMainWidget::changeFriendRemark(const QString & friendID,
const QString & remark)
{
if (nullptr != mpMainCtrl)
mpMainCtrl->changeFriendRemark(mMyselfInfo.mstrUserID, friendID, remark);
}
/*************************************************
Function Name: deleteFriend
Description: 删除好友(发送至服务器
*************************************************/
void TMainWidget::deleteFriend(const QString & friendID)
{
if (nullptr != mpMainCtrl)
mpMainCtrl->deleteFriend(mMyselfInfo.mstrUserID, friendID);
}
/*************************************************
Function Name: removeInformationWidget
Description: 删除存储于mmapInformation中的信息窗口
*************************************************/
void TMainWidget::removeInformationWidget(const QString & userID)
{
mmapInformation[userID]->deleteLater();
mmapInformation.remove(userID);
}
/*************************************************
Function Name: removeFlockInformationWidget
Description: 删除存储与mmapFlockInformation中的信息窗口
*************************************************/
void TMainWidget::removeFlockInformationWidget(const QString & flockID)
{
flockID;
}
/*************************************************
Function Name: removeDiscussionInformationWidget
Description: 删除存储与mmapDiscussionInformation中的信息窗口
*************************************************/
void TMainWidget::removeDiscussionInformationWidget(const QString & discussionID)
{
discussionID;
}
/*************************************************
Function Name: changeFlockInformation
Description: 修改群信息(发送至服务器)
*************************************************/
void TMainWidget::changeFlockInformation(const TFlockInformation & flock)
{
flock;
}
/*************************************************
Function Name: changeDiscussionInformation
Description: 修改讨论组信息 (发送至服务器
*************************************************/
void TMainWidget::changeDiscussionInformation(const TDiscussionInformation & discussion)
{
discussion;
}
/*************************************************
Function Name: removeChatWidget
Description: 删除存储于mmapChatRoom中的聊天窗口
*************************************************/
void TMainWidget::removeChatWidget(const QString &friendID)
{
friendID;
}
/*************************************************
Function Name: removeFlockChatWidget
Description: 删除存储于mmapFlockRoom中的群聊窗口
*************************************************/
void TMainWidget::removeFlockChatWidget(const QString & flockID)
{
flockID;
}
/*************************************************
Function Name: removeDiscussionChatWidget
Description: 删除存储于mDdiscussionChatWidget中的讨论组窗口
*************************************************/
void TMainWidget::removeDiscussionChatWidget(const QString & discussionID)
{
discussionID;
}
/*************************************************
Function Name: dropFlock
Description: 解散群(发送至服务器)
*************************************************/
void TMainWidget::dropFlock(const QString & flockID)
{
flockID;
}
/*************************************************
Function Name: dropDiscussion
Description: 解散讨论组(发送至服务器)
*************************************************/
void TMainWidget::dropDiscussion(const QString & discussionID)
{
discussionID;
}
/*************************************************
Function Name: leaveFlock
Description: 退出群(发送至服务器)
*************************************************/
void TMainWidget::leaveFlock(const QString &memberID, const QString & flockID)
{