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

📄 userinfo.cpp

📁 用qt4 编写的局域网聊天工具
💻 CPP
字号:
/*************************************************************************** *   Copyright (C) 2007 by Anistratov Oleg                                 * *   ower@users.sourceforge.net                                            * *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License version 2        * *   as published by the Free Software Foundation;                         * *                                                                         * *   This program is distributed in the hope that it will be useful,       * *   but WITHOUT ANY WARRANTY; without even the implied warranty of        * *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         * *   GNU General Public License for more details.                          * *                                                                         * ***************************************************************************/#include "userinfo.h"#include "globals.h"#include <assert.h>#include <QHostAddress>#include <QCryptographicHash>#include <QFile>#include <QDir>#include <QIcon>UserInfo* UserInfo::m_myInfo = 0;UserInfo::UserInfo(const QHostAddress& addr, const QString & nick, int uid) :  m_enabled          (0),  m_programVerID     (0),  m_programVerName   (""),  m_status           (Globals::FREE),  m_ip               (addr.toIPv4Address()),  m_compName         (""),  m_statusDescription(""),  m_gender           (0),  m_nickname         (nick),  m_avatar           (NULL),  m_uid              (uid){}UserInfo::UserInfo(QC_DatagramHeader* hdr) :  m_enabled          (0),  m_programVerID     (0),  m_programVerName   (""),  m_status           (Globals::FREE),  m_ip               (hdr->src_ip),  m_compName         (""),  m_statusDescription(""),  m_gender           (0),  m_nickname         (hdr->name),  m_avatar           (NULL),  m_uid              (hdr->src_ip){}//\*****************************************************************************UserInfo::~UserInfo(){  qDebug("[~UserInfo]\n");}//\*****************************************************************************void UserInfo::setPhoto(const QByteArray & ba){  QCryptographicHash md5_hash(QCryptographicHash::Md5);  QFile              file;  QByteArray         hash;  md5_hash.addData(ba);  hash = md5_hash.result();  m_photoFilename = QDir::tempPath() + "/photo_" + m_nickname;  int len = hash.size();  for(int i = 0; i < len; i++)    m_photoFilename.append(QString::number((uchar)hash.at(i), 16));  file.setFileName(m_photoFilename);  if(file.open(QIODevice::WriteOnly | QIODevice::Unbuffered))  {    file.write(ba);    file.close();  }  else    qWarning("[UserInfo::setPhoto]: couldn't open '%s'", m_photoFilename.toLocal8Bit().data());}//\*****************************************************************************void UserInfo::setPicture(const QByteArray & ba){  QCryptographicHash md5_hash(QCryptographicHash::Md5);  QFile              file;  QByteArray         hash;  md5_hash.addData(ba);  hash = md5_hash.result();  m_pictureFilename = QDir::tempPath() + "/picture_" + m_nickname;  int len = hash.size();  for(int i = 0; i < len; i++)    m_pictureFilename.append(QString::number((uchar)hash.at(i), 16));  file.setFileName(m_pictureFilename);  if(file.open(QIODevice::WriteOnly | QIODevice::Unbuffered))  {    file.write(ba);    file.close();  }  else    qWarning("[UserInfo::setPicture]: couldn't open '%s'", m_pictureFilename.toLocal8Bit().data());}//\*****************************************************************************QPixmap* UserInfo::newIcon(uint wd, uint he, bool disabled) const{  QPixmap* pix  = NULL;  QPixmap* icon = new QPixmap(wd, he);  if(!m_pictureFilename.isEmpty())    pix = new QPixmap(m_pictureFilename);  else if(!m_photoFilename.isEmpty())    pix = new QPixmap(m_photoFilename);  if(pix)  {    if(disabled)      *icon = QIcon(*pix).pixmap(32, 32, QIcon::Disabled);    else      *icon = pix->scaled(wd, he, Qt::KeepAspectRatio, Qt::SmoothTransformation);    delete pix;    return icon;  }  delete icon;  return NULL;}//\*****************************************************************************QImage* UserInfo::newIconImg(uint wd, uint he) const{  QImage* pix  = NULL;  QImage* icon = new QImage;  m_avatarHash.resize(0);  if(!m_pictureFilename.isEmpty())  {    pix = new QImage(m_pictureFilename);    m_avatarHash = m_pictureHash;  }  else if(!m_photoFilename.isEmpty())  {    pix = new QImage(m_photoFilename);    m_avatarHash = m_photoHash;  }  if(pix)  {    *icon = pix->scaled(wd, he, Qt::KeepAspectRatio, Qt::SmoothTransformation);    delete pix;    return icon;  }  delete icon;  return NULL;}//\*****************************************************************************void UserInfo::setPictureOrPhoto(const QString & fname, QString & mmbr_fname, QByteArray & hash){  QFile file;  QByteArray ba;  QCryptographicHash md5_hash(QCryptographicHash::Md5);  if(!fname.isNull())  {    mmbr_fname = fname;    if(fname.isEmpty())      hash = QByteArray();    else    {      file.setFileName(mmbr_fname);      if(file.open(QIODevice::ReadOnly))      {        ba = file.readAll();        md5_hash.addData(ba);        hash = md5_hash.result();      }      else      {        qWarning("[UserInfo::setPictureOrPhoto]: couldn't open '%s'", mmbr_fname.toLocal8Bit().data());        hash = QByteArray();      }    }  }  if(!m_pictureFilename.isEmpty())    m_avatarHash = m_pictureHash;  else if(!m_photoFilename.isEmpty())    m_avatarHash = m_photoHash;  else    m_avatarHash.clear();}

⌨️ 快捷键说明

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