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

📄 singlemsgshistoryview.cpp

📁 用qt4 编写的局域网聊天工具
💻 CPP
字号:
/*************************************************************************** *   Copyright (C) 2007 by Anistratov Oleg                                 * *   ower86@gmail.com                                                      * *                                                                         * *   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 "singlemsgshistoryview.h"#include <QGridLayout>#include <QDateTime>#include <QListWidgetItem>#include <QHeaderView>#include "singlemessage.h"#include "singlemsgshistorymodel.h"#include "qchaticon.h"SingleMsgsHistoryView::SingleMsgsHistoryView(QWidget *parent) :  QWidget(parent),  m_model(NULL){  QGridLayout* grid           = new QGridLayout(this);  QGridLayout* btns_grid      = new QGridLayout(0);  m_treeView                  = new QTreeView(this);  m_layoutCmbx                = new QComboBox(this);  m_viewFormatLab             = new QLabel(this);  m_nextNewMessageBtn         = new QToolButton(this);  m_prevNewMessageBtn         = new QToolButton(this);  m_nextOpenedMessageBtn      = new QToolButton(this);  m_prevOpenedMessageBtn      = new QToolButton(this);  m_closeAllNewMessagesBtn    = new QToolButton(this);  m_closeAllOpenedMessagesBtn = new QToolButton(this);  m_currentCloseChbx          = new QCheckBox(this);  m_nextNewMessageAct         = new QAction(this);  m_prevNewMessageAct         = new QAction(this);  m_nextOpenedMessageAct      = new QAction(this);  m_prevOpenedMessageAct      = new QAction(this);  m_closeAllNewMessagesAct    = new QAction(this);  m_closeAllOpenedMessagesAct = new QAction(this);  m_treeView->header()->setClickable(true);  m_treeView->header()->setMovable(false);  m_treeView->setSortingEnabled(true);  grid->addWidget(m_viewFormatLab            , 0, 0);  grid->addWidget(m_layoutCmbx               , 0, 1);  grid->addWidget(m_treeView                 , 1, 0, 1, 3);  btns_grid->addWidget(m_currentCloseChbx, 0, 4);  btns_grid->addWidget(new QLabel(tr("New Messages :"), this), 0, 0);  btns_grid->addWidget(m_prevNewMessageBtn        , 0, 1);  btns_grid->addWidget(m_nextNewMessageBtn        , 0, 2);  btns_grid->addWidget(m_closeAllNewMessagesBtn   , 0, 3);  btns_grid->addWidget(new QLabel(tr("Opened Messages :"), this), 1, 0);  btns_grid->addWidget(m_prevOpenedMessageBtn     , 1, 1);  btns_grid->addWidget(m_nextOpenedMessageBtn     , 1, 2);  btns_grid->addWidget(m_closeAllOpenedMessagesBtn, 1, 3);  btns_grid->setColumnStretch(4, 1);  grid->addLayout(btns_grid, 2, 0, 1, 3);  grid->setColumnStretch(1, 1);  grid->setColumnStretch(2, 1);  connect(m_treeView  , SIGNAL(doubleClicked(QModelIndex)), this, SIGNAL(doubleClicked(QModelIndex)));  connect(m_layoutCmbx, SIGNAL(currentIndexChanged(int))  , this, SLOT  (setTreeLayout(int)));  connect(m_treeView->header(), SIGNAL(sortIndicatorChanged(int, Qt::SortOrder)), this, SLOT(sort(int, Qt::SortOrder)));  connect(m_nextNewMessageBtn        , SIGNAL(clicked()), this, SLOT(nextNewMessage()));  connect(m_prevNewMessageBtn        , SIGNAL(clicked()), this, SLOT(prevNewMessage()));  connect(m_nextOpenedMessageBtn     , SIGNAL(clicked()), this, SLOT(nextOpenedMessage()));  connect(m_prevOpenedMessageBtn     , SIGNAL(clicked()), this, SLOT(prevOpenedMessage()));  connect(m_closeAllNewMessagesBtn   , SIGNAL(clicked()), this, SLOT(closeAllNewMessages()));  connect(m_closeAllOpenedMessagesBtn, SIGNAL(clicked()), this, SLOT(closeAllOpenedMessages()));  connect(m_nextNewMessageAct        , SIGNAL(triggered(bool)), this, SLOT(nextNewMessage()));  connect(m_prevNewMessageAct        , SIGNAL(triggered(bool)), this, SLOT(prevNewMessage()));  connect(m_nextOpenedMessageAct     , SIGNAL(triggered(bool)), this, SLOT(nextOpenedMessage()));  connect(m_prevOpenedMessageAct     , SIGNAL(triggered(bool)), this, SLOT(prevOpenedMessage()));  connect(m_closeAllNewMessagesAct   , SIGNAL(triggered(bool)), this, SLOT(closeAllNewMessages()));  connect(m_closeAllOpenedMessagesAct, SIGNAL(triggered(bool)), this, SLOT(closeAllOpenedMessages()));  resize(800, 600);  retranslate();  updateShortcuts();}SingleMsgsHistoryView::~SingleMsgsHistoryView(){}void SingleMsgsHistoryView::retranslate(){  m_layoutCmbx->clear();  m_layoutCmbx->addItem(tr("Direction / IP - Nickname / Date | Message"), SingleMsgsHistoryModel::IpUserDate);  m_layoutCmbx->addItem(tr("Direction / Date | IP | Nickname | Message"), SingleMsgsHistoryModel::Date);  m_viewFormatLab->setText(tr("View Format:"));  m_nextNewMessageBtn        ->setText(tr("Next new message"));  m_prevNewMessageBtn        ->setText(tr("Previous new message"));  m_nextOpenedMessageBtn     ->setText(tr("Next opened message"));  m_prevOpenedMessageBtn     ->setText(tr("Previous opened message"));  m_closeAllNewMessagesBtn   ->setText(tr("Close all new messages"));  m_closeAllOpenedMessagesBtn->setText(tr("Close all opened messages"));  m_nextNewMessageBtn        ->setToolTip(tr("Next new message"));  m_prevNewMessageBtn        ->setToolTip(tr("Previous new message"));  m_nextOpenedMessageBtn     ->setToolTip(tr("Next opened message"));  m_prevOpenedMessageBtn     ->setToolTip(tr("Previous opened message"));  m_closeAllNewMessagesBtn   ->setToolTip(tr("Close all new messages"));  m_closeAllOpenedMessagesBtn->setToolTip(tr("Close all opened messages"));  m_currentCloseChbx->setText(tr("Close current message before switching to next"));  m_nextNewMessageBtn        ->setIcon(QIcon(QChatIcon::icon("go-next")));  m_prevNewMessageBtn        ->setIcon(QIcon(QChatIcon::icon("go-previous")));  m_nextOpenedMessageBtn     ->setIcon(QIcon(QChatIcon::icon("go-next")));  m_prevOpenedMessageBtn     ->setIcon(QIcon(QChatIcon::icon("go-previous")));  m_closeAllNewMessagesBtn   ->setIcon(QIcon(QChatIcon::icon("dialog-close")));  m_closeAllOpenedMessagesBtn->setIcon(QIcon(QChatIcon::icon("dialog-close")));}void SingleMsgsHistoryView::setTreeLayout(int idx){  if(m_model)  {    m_model->rebuildTree(m_layoutCmbx->itemData(idx).toInt());    m_treeView->expandAll();    m_treeView->resizeColumnToContents(0);    m_treeView->resizeColumnToContents(1);    m_treeView->resizeColumnToContents(2);    m_treeView->resizeColumnToContents(3);    m_treeView->header()->setClickable(true);  }}void SingleMsgsHistoryView::sort(int column, Qt::SortOrder order){  if(m_model)    m_model->sort(column, order);//     m_treeView->sortByColumn(column, order);}void SingleMsgsHistoryView::setModel(QAbstractItemModel * model){  m_model = (SingleMsgsHistoryModel*)model;  m_treeView->setModel(model);//   m_model->rebuildTree(SingleMsgsHistoryModel::IpUserDate);}void SingleMsgsHistoryView::update(){  if(m_model) m_model->update();}void SingleMsgsHistoryView::updateShortcuts(){  QChatSettings* prefs = QChatSettings::settings();  m_nextNewMessageAct        ->setShortcut(prefs->shortcut("NextNewMessage"));  m_prevNewMessageAct        ->setShortcut(prefs->shortcut("PrevNewMessage"));  m_nextOpenedMessageAct     ->setShortcut(prefs->shortcut("NextOpenedMessage"));  m_prevOpenedMessageAct     ->setShortcut(prefs->shortcut("PrevOpenedMessage"));  m_closeAllNewMessagesAct   ->setShortcut(prefs->shortcut("CloseAllNewMessages"));  m_closeAllOpenedMessagesAct->setShortcut(prefs->shortcut("CloseAllOpenedMessages"));}

⌨️ 快捷键说明

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