📄 mailform.cpp
字号:
#include "mailform.h"#include <qpushbutton.h>#include <qtooltip.h>#include <qfont.h>#include <qtable.h>#include <qprogressbar.h>#include <qfile.h>#include <qstring.h>#include <qfile.h>#include <qtextstream.h>#include <qprocess.h>#include <qsocket.h>#include <qlayout.h>#define FONT_SIZE 10static int j=0;//static int amountOfMail;//static QString state;//static int myi=0;//static bool flag;static int state;//static bool firstConnect=true;MailForm::MailForm(QWidget * parent, const char * name): QDialog(parent,name){ setCaption("Form1"); mailFormLayout = new QVBoxLayout( this, 11, 6, "mailFormLayout"); butLayout = new QHBoxLayout( 0, 0, 6, "butLayout"); butSpacer = new QSpacerItem( 40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ); mailFormLayout->setMargin(7); PushButton1= new QPushButton(this,"PushButton1"); //PushButton1->setGeometry(QRect(460,370,50,30)); PushButton1->setText(tr("&Exit")); PushButton2= new QPushButton(this,"PushButton2"); //PushButton2->setGeometry(QRect(380,370,78,30)); PushButton2->setText(tr("&Retrieve")); PushButton3= new QPushButton(this,"PushButton3"); //PushButton3->setGeometry(QRect(300,370,78,30)); PushButton3->setText(tr("&Compose")); QFont font(PushButton1->font()); font.setFamily("Courier"); font.setPointSize(FONT_SIZE); PushButton1->setFont(font); PushButton2->setFont(font); PushButton3->setFont(font); QToolTip::add(PushButton1,tr("Click on this Button will Exit This Form.")); QToolTip::setFont(font); table = new QTable(this , "table"); //table->setGeometry(QRect(20,20,500,340)); table->setNumRows(15); table->setNumCols(5); table->horizontalHeader()->setLabel( 0, tr( "From:" ) ); table->horizontalHeader()->setLabel( 1, tr( "To:" ) ); table->horizontalHeader()->setLabel( 2, tr( "Date:" ) ); table->horizontalHeader()->setLabel( 3, tr( "Subject:" ) ); table->horizontalHeader()->setLabel( 4, tr( "Content" ) ); table->setColumnWidth ( 3,215); table->setColumnWidth ( 4,500); table->hideColumn(1); table->hideColumn(4); butLayout->addItem( butSpacer ); butLayout->addWidget( PushButton3); butLayout->addWidget( PushButton2); butLayout->addWidget( PushButton1); mailFormLayout->addWidget( table ); mailFormLayout->addLayout( butLayout); progBar = new QProgressBar(15,this,"progBar"); progBar->setGeometry(QRect(180,180,200,30)); progBar->hide(); connect(PushButton1,SIGNAL(clicked()),this,SLOT(close())); connect(PushButton2,SIGNAL(clicked()), this,SLOT(open_hello())); //line = new QString(); //file = new QFile( "in.txt" ) ; //file->open( IO_ReadWrite | IO_Truncate ); //stream= new QTextStream(file); proc = new QProcess(this); //connect(proc,SIGNAL(readyReadStdout()),this, SLOT(ReadOutput())); mailSocket = new QSocket(); connect(mailSocket, SIGNAL(readyRead()), this, SLOT(readWrite())); connect(mailSocket,SIGNAL(connected()),this,SLOT(whenConnected())); mailStream = new QTextStream(mailSocket); iMailCount =0; resize( QSize(480,272).expandedTo(minimumSizeHint()) ); }void MailForm::whenConnected(){ //table->setText(13,0,"The Socket connected to Host!!!");}void MailForm::fillContent(){ //for (int i=0 ; i<4 ; i++) //{ //if (!(file->atEnd())) // { //*line = stream->readLine(); // table->setText(j,i,*line); // } //} progBar->setProgress(j); j=j+1; if (j==15) { progBar->hide(); QObject::killTimers(); j=0; progBar->setProgress(j); //file->reset(); }}void MailForm::open_hello(){ for (int r=0; r<15; r++) for (int s=0; s<5; s++) table->setText(r,s,""); mailSocket->connectToHost("pop3.ethome.com.tw",110); state = USER; iMailCount =0;}void MailForm::readWrite(){ int b,c; bool flag=false; QString contentString=""; QString response,temp; if (!mailSocket->canReadLine()) return; switch(state){ case USER : //table->setText(14,1, "@@USER@@ " + mailSocket->readLine()); *mailStream << "user trovsky\r\n"; state= PASS; break; case PASS : //table->setText(14,2, "@@PASS@@ " + mailSocket->readLine()); *mailStream << "pass 2ljuxgou\r\n"; state= STAT; break; case STAT : //table->setText(14,3, "@@STAT@@ " + mailSocket->readLine()); *mailStream << "stat\r\n"; state= RETR; break; /*case WAIT2: state=RETR; table->setText(13,0, "@@WAIT2@@ " + mailSocket->readLine()); break; */ case RETR : //table->setText(13,1, "@@RETR@@ " + mailSocket->readLine()); if (iMailCount < 15) { iMailCount = iMailCount + 1; temp.setNum(iMailCount); *mailStream << "retr " << temp << "\r\n"; state = WAIT; } else { /*messageBox->append("@@READ@@ ");*/ state= QUIT; *mailStream << "noop" << "\r\n"; } break; case WAIT : //table->setText(13,2, "@@WAIT@@ " + mailSocket->readLine()); state = READ; break; case READ : //printf("%d\n",iMailCount); //messageBox->append("=========Mail "+temp.setNum(iMailCount)+"============"); do { //printf("%d\n",iMailCount); temp = mailSocket->readLine(); if (temp=="\r\n") flag=true; b=temp.find("Return-Path"); c=temp.find("\n",b); if (!(b==-1)) table->setText(iMailCount-1,0,temp.mid(b+12,c-b-12).remove('<').remove('>').stripWhiteSpace()); b=temp.find("X-Original-To:"); c=temp.find("\n",b); if (!(b==-1)) table->setText(iMailCount-1,1,temp.mid(b+15,c-b-15).stripWhiteSpace()); b=temp.find("Subject:"); c=temp.find("\n",b); if (!(b==-1)) table->setText(iMailCount-1,3,temp.mid(b+9,c-b-9)); b=temp.find("Date:"); c=temp.find("\n",b); if (!(b==-1)) { table->setText(iMailCount-1,2,temp.mid(b+6,c-b-6)); //flag=true; //messageBox->append("Content:"); } if (flag) contentString += mailSocket->readLine(); } while (mailSocket->canReadLine()); table->setText(iMailCount-1,4,contentString); contentString=""; flag=false; state=RETR; *mailStream << "noop" << "\r\n"; break; case QUIT : //messageBox->append("@@QUIT@@ "+mailSocket->readLine()); //*mailStream << "noop" << "\r\n"; //*mailStream << "quit" << "\r\n"; //printf("QUIT instruction sended!!!\n"); //table->setText(14,0,"@@QUIT@@ "+mailSocket->readLine()); mailSocket->flush(); *mailStream << "quit" << "\r\n"; //delete mailSocket; break; } }MailForm::~MailForm() {}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -