www.pudn.com > chap06.rar > mailclient.cpp


#include  
 
#include "mailclient.h" 
 
MailClient::MailClient() 
{ 
    QIcon folderIcon(style()->standardPixmap(QStyle::SP_DirClosedIcon)); 
    QIcon trashIcon(style()->standardPixmap(QStyle::SP_FileIcon)); 
 
    QStringList folderLabels; 
    folderLabels << tr("Folders"); 
 
    foldersTreeWidget = new QTreeWidget; 
    foldersTreeWidget->setHeaderLabels(folderLabels); 
    addFolder(folderIcon, tr("Inbox")); 
    addFolder(folderIcon, tr("Outbox")); 
    addFolder(folderIcon, tr("Sent")); 
    addFolder(trashIcon, tr("Trash")); 
 
    QStringList messageLabels; 
    messageLabels << tr("Subject") << tr("Sender") << tr("Date"); 
 
    messagesTreeWidget = new QTreeWidget; 
    messagesTreeWidget->setHeaderLabels(messageLabels); 
    addMessage(tr("Happy New Year!"), 
               tr("Grace K. "), 
               tr("2006-12-31")); 
    addMessage(tr("Radically new concept!"), 
               tr("Grace K. "), 
               tr("2006-12-22")); 
    addMessage(tr("Accounts"), 
               tr("pascale@nospam.com"), 
               tr("2006-12-31")); 
    addMessage(tr("Expenses"), 
               tr("Joe Bloggs "), 
               tr("2006-12-25")); 
    addMessage(tr("Re: Expenses"), 
               tr("Andy "), 
               tr("2007-01-02")); 
    addMessage(tr("Re: Accounts"), 
               tr("Joe Bloggs "), 
               tr("2007-01-03")); 
    addMessage(tr("Re: Accounts"), 
               tr("Andy "), 
               tr("2007-01-03")); 
    messagesTreeWidget->resizeColumnToContents(0); 
    messagesTreeWidget->resizeColumnToContents(1); 
 
    textEdit = new QTextEdit; 
    textEdit->setReadOnly(true); 
    textEdit->setHtml("" 
                      "
Subject:" "

Happy New Year!" "

Date:" "

Sun, 31 Dec 2006" "

From:" "

Grace K. <grace@software-inc.com>" "

To:" "all@software-inc.com" "
" "
I want to seize this occasion to thank " "everybody for the year that has gone, and want " "to wish you the best for next year. It has been " "a pleasure to work with you all on the Hawk " "project, and I'm sure we'll get concrete " "results shortly." "

Happy New Year!" "
--Grace"); menuBar()->addMenu(tr("&File")); menuBar()->addMenu(tr("&Edit")); menuBar()->addMenu(tr("&View")); menuBar()->addMenu(tr("F&older")); menuBar()->addMenu(tr("&Message")); menuBar()->addMenu(tr("&Settings")); menuBar()->addMenu(tr("&Help")); statusBar()->showMessage(tr("No new messages on server")); rightSplitter = new QSplitter(Qt::Vertical); rightSplitter->addWidget(messagesTreeWidget); rightSplitter->addWidget(textEdit); rightSplitter->setStretchFactor(1, 1); mainSplitter = new QSplitter(Qt::Horizontal); mainSplitter->addWidget(foldersTreeWidget); mainSplitter->addWidget(rightSplitter); mainSplitter->setStretchFactor(1, 1); setCentralWidget(mainSplitter); setWindowTitle(tr("Mail Client")); readSettings(); } void MailClient::closeEvent(QCloseEvent *event) { writeSettings(); event->accept(); } void MailClient::addFolder(const QIcon &icon, const QString &name) { QTreeWidgetItem *root; if (foldersTreeWidget->topLevelItemCount() == 0) { root = new QTreeWidgetItem(foldersTreeWidget); root->setText(0, tr("Mail")); foldersTreeWidget->setItemExpanded(root, true); } else { root = foldersTreeWidget->topLevelItem(0); } QTreeWidgetItem *newItem = new QTreeWidgetItem(root); newItem->setText(0, name); newItem->setIcon(0, icon); if (!foldersTreeWidget->currentItem()) foldersTreeWidget->setCurrentItem(newItem); } void MailClient::addMessage(const QString &subject, const QString &from, const QString &date) { QTreeWidgetItem *newItem = new QTreeWidgetItem(messagesTreeWidget); newItem->setText(0, subject); newItem->setText(1, from); newItem->setText(2, date); if (!messagesTreeWidget->currentItem()) messagesTreeWidget->setCurrentItem(newItem); } void MailClient::readSettings() { QSettings settings("Software Inc.", "Mail Client"); settings.beginGroup("mainWindow"); resize(settings.value("size", QSize(480, 360)).toSize()); mainSplitter->restoreState( settings.value("mainSplitter").toByteArray()); rightSplitter->restoreState( settings.value("rightSplitter").toByteArray()); settings.endGroup(); } void MailClient::writeSettings() { QSettings settings("Software Inc.", "Mail Client"); settings.beginGroup("mainWindow"); settings.setValue("size", size()); settings.setValue("mainSplitter", mainSplitter->saveState()); settings.setValue("rightSplitter", rightSplitter->saveState()); settings.endGroup(); }