|
|
// kmreaderwin.cpp |
|
|
|
|
|
#include "kmfolder.h" |
|
|
#include "kmmessage.h" |
|
|
#include "kmmsgpart.h" |
|
|
#include "kmfoldermgr.h" |
|
|
#include "kmglobal.h" |
|
|
#include "kmreaderwin.h" |
|
|
#include "kmreaderwin.moc" |
|
|
|
|
|
#define FORWARD 0 |
|
|
#define REPLY 1 |
|
|
#define REPLYALL 2 |
|
|
|
|
|
KMReaderView::KMReaderView(QWidget *parent =0, const char *name = 0, int msgno = 0,KMFolder *f = 0) |
|
|
:QWidget(parent,name) |
|
|
{ |
|
|
printf("Entering view: msgno = %i \n",msgno); |
|
|
|
|
|
kdeDir = getenv("KDEDIR"); |
|
|
if(!kdeDir) |
|
|
{KMsgBox::message(0,"Ouuch","$KDEDIR not set.\nPlease do so"); |
|
|
qApp->quit(); |
|
|
} |
|
|
picsDir.append(kdeDir); |
|
|
picsDir +="/lib/pics"; |
|
|
|
|
|
currentFolder = new KMFolder(); |
|
|
currentFolder = f; |
|
|
|
|
|
currentMessage = new KMMessage(); |
|
|
currentIndex = msgno; |
|
|
|
|
|
if(f !=0) |
|
|
currentMessage = f->getMsg(msgno); |
|
|
else |
|
|
currentMessage= NULL; |
|
|
|
|
|
printf("After getmsg\n"); |
|
|
|
|
|
// Let's initialize the HTMLWidget |
|
|
|
|
|
messageCanvas = new KHTMLWidget(this,0,picsDir); |
|
|
messageCanvas->setURLCursor(upArrowCursor); |
|
|
messageCanvas->resize(parent->width()-16,parent->height()-110); //16 |
|
|
connect(messageCanvas,SIGNAL(URLSelected(const char *,int)),this,SLOT(openURL(const char *,int))); |
|
|
connect(messageCanvas,SIGNAL(popupMenu(const char *, const QPoint &)), SLOT(popupMenu(const char *, const QPoint &))); |
|
|
vert = new QScrollBar( 0, 110, 12, messageCanvas->height()-110, 0, |
|
|
QScrollBar::Vertical, this, "vert" ); |
|
|
horz = new QScrollBar( 0, 0, 24, messageCanvas->width()-16, 0, |
|
|
QScrollBar::Horizontal, this, "horz" ); |
|
|
connect( messageCanvas, SIGNAL( scrollVert( int ) ), SLOT( slotScrollVert(int))); |
|
|
connect( messageCanvas, SIGNAL( scrollHorz( int ) ), SLOT( slotScrollHorz(int))); |
|
|
connect( vert, SIGNAL(valueChanged(int)), messageCanvas, SLOT(slotScrollVert(int))); |
|
|
connect( horz, SIGNAL(valueChanged(int)), messageCanvas, SLOT(slotScrollHorz(int))); |
|
|
connect( messageCanvas, SIGNAL( documentChanged() ), SLOT( slotDocumentChanged() ) ); |
|
|
connect( messageCanvas, SIGNAL( documentDone() ), SLOT( slotDocumentDone() ) ); |
|
|
|
|
|
// Puh, okay this is done |
|
|
|
|
|
QAccel *accel = new QAccel( this ); |
|
|
accel->connectItem( accel->insertItem(Key_Up),this,SLOT(slotScrollLeRi()) ); |
|
|
accel->connectItem( accel->insertItem(Key_Down),this,SLOT(slotScrollUpDo()) ); |
|
|
|
|
|
if(currentMessage) |
|
|
parseMessage(currentMessage); |
|
|
else |
|
|
clearCanvas(); |
|
|
|
|
|
printf("Leaving constructor\n"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// *********************** Public slots ******************* |
|
|
|
|
|
void KMReaderView::clearCanvas() |
|
|
{ |
|
|
// Produce a white canvas |
|
|
|
|
|
messageCanvas->begin(picsDir); |
|
|
messageCanvas->write("<HTML><BODY BGCOLOR=WHITE></BODY></HTML>"); |
|
|
messageCanvas->end(); |
|
|
messageCanvas->parse(); |
|
|
} |
|
|
|
|
|
void KMReaderView::updateDisplay() |
|
|
{ |
|
|
} |
|
|
|
|
|
|
|
|
// ********************** Protected ********************** |
|
|
|
|
|
void KMReaderView::resizeEvent(QResizeEvent *) |
|
|
{ |
|
|
messageCanvas->setGeometry(0,0,this->width()-16,this->height()); //16 |
|
|
horz->setGeometry(0,height()-16,width()-16,16); |
|
|
vert->setGeometry(width()-16,0,16,height()); |
|
|
} |
|
|
|
|
|
|
|
|
// ******************* Private slots ******************** |
|
|
|
|
|
void KMReaderView::parseMessage(KMMessage *message) |
|
|
{ |
|
|
QString strTemp; |
|
|
QString str1Temp; |
|
|
QString subjStr; |
|
|
QString text; |
|
|
QString header; |
|
|
QString dateStr; |
|
|
QString fromStr; |
|
|
QString toStr; |
|
|
QString ccStr; |
|
|
long length; |
|
|
int pos=0; |
|
|
|
|
|
int numParts = message->numBodyParts(); |
|
|
currentMessage = message; // To make sure currentMessage is set. |
|
|
printf("Debug numBodyparts=%i\n", numParts); |
|
|
|
|
|
text = message->body(&length); |
|
|
if (numParts <= 1) text.truncate(length); |
|
|
|
|
|
dateStr.sprintf("Date: %s<br>",message->dateStr()); |
|
|
|
|
|
strTemp.sprintf("%s",message->from()); |
|
|
if((pos=strTemp.find("<",0,0)) != -1) |
|
|
{strTemp.remove(0,pos+1); |
|
|
strTemp.replace(QRegExp(">",0,0),"");} |
|
|
fromStr.sprintf("From: <A HREF=\"mailto:"); |
|
|
fromStr.append(strTemp + "\">"); |
|
|
if(pos != -1) |
|
|
{strTemp.sprintf("%s",message->from()); |
|
|
strTemp.truncate(pos); |
|
|
} |
|
|
strTemp = strTemp.stripWhiteSpace(); |
|
|
fromStr.append(strTemp + "</A>"+"<br>"); |
|
|
|
|
|
ccStr = message->cc(); |
|
|
if(ccStr.isEmpty()) |
|
|
ccStr = ""; |
|
|
else |
|
|
{ccStr=""; |
|
|
ccStr.sprintf("Cc: %s<br>",message->cc());} |
|
|
|
|
|
subjStr.sprintf("Subject: %s<br><P>",message->subject()); |
|
|
|
|
|
toStr.sprintf("To: %s<br>", message->to()); |
|
|
|
|
|
// Init messageCanvas |
|
|
messageCanvas->begin(picsDir); |
|
|
|
|
|
// header |
|
|
messageCanvas->write("<TABLE><TR><TD><IMG SRC=\"" + picsDir +"/kdelogo.xpm\"></TD><TD HSPACE=50><B>"); |
|
|
messageCanvas->write(subjStr); |
|
|
messageCanvas->write(fromStr); |
|
|
messageCanvas->write(toStr); |
|
|
messageCanvas->write(ccStr); |
|
|
messageCanvas->write(dateStr); |
|
|
messageCanvas->write("</B></TD></TR></TABLE><br><br>"); |
|
|
|
|
|
|
|
|
|
|
|
// Prepare text |
|
|
|
|
|
//***** 1. Search for hyperlinks (http, ftp , @) ********// |
|
|
|
|
|
|
|
|
// ****** 2. Check if message body is html. Search for <html> tag ********// |
|
|
/* |
|
|
if((text.find(QRegExp("<html>",0,0)) != -1) && (text.find(QRegExp("</html>",0,0)) != -1)) // we found the tags |
|
|
printf("Found html tags!\n"); |
|
|
|
|
|
else |
|
|
{// First of all convert escape sequences etc to html*/ |
|
|
text.replace(QRegExp("\n"),"<BR>"); |
|
|
text.replace(QRegExp("\\x20",FALSE,FALSE)," "); // SP |
|
|
|
|
|
messageCanvas->write("<HTML><HEAD><TITLE></TITLE></HEAD>"); |
|
|
messageCanvas->write("<BODY BGCOLOR=WHITE>"); |
|
|
//} |
|
|
|
|
|
// Okay! Let's write it to the canvas |
|
|
|
|
|
messageCanvas->write(text); |
|
|
|
|
|
printf("before part\n"); |
|
|
|
|
|
/* int x=0; |
|
|
for(x=1;x <= numParts;x++) |
|
|
{printf("x : %i\n",x); |
|
|
KMMessagePart *part = new KMMessagePart; |
|
|
currentMessage->bodyPart(x,part); |
|
|
cout << part->typeStr(); |
|
|
cout << part->subtypeStr(); |
|
|
delete part; |
|
|
}*/ |
|
|
|
|
|
messageCanvas->write("</BODY></HTML>"); |
|
|
messageCanvas->end(); |
|
|
messageCanvas->parse(); |
|
|
printf("Leaving parsing\n"); |
|
|
} |
|
|
|
|
|
void KMReaderView::replyMessage() |
|
|
{ |
|
|
printf("Entering reply\n"); |
|
|
KMComposeWin *c = new KMComposeWin(NULL,NULL,NULL,currentMessage,REPLY); |
|
|
c->show(); |
|
|
c->resize(c->size()); |
|
|
printf("Leaving reply()\n"); |
|
|
} |
|
|
|
|
|
void KMReaderView::replyAll() |
|
|
{ |
|
|
KMComposeWin *c = new KMComposeWin(NULL,NULL,NULL,currentMessage,REPLYALL); |
|
|
c->show(); |
|
|
c->resize(c->size()); |
|
|
printf("Leaving replyAll()\n"); |
|
|
|
|
|
} |
|
|
void KMReaderView::forwardMessage() |
|
|
{ |
|
|
KMComposeWin *c = new KMComposeWin(NULL,NULL,NULL,currentMessage,FORWARD); |
|
|
c->show(); |
|
|
c->resize(c->size()); |
|
|
} |
|
|
|
|
|
|
|
|
void KMReaderView::nextMessage() |
|
|
{ |
|
|
currentIndex++; |
|
|
printf("Index (next) : %i\n",currentIndex); |
|
|
clearCanvas(); |
|
|
currentMessage = currentFolder->getMsg(currentIndex); |
|
|
parseMessage(currentMessage); |
|
|
} |
|
|
|
|
|
void KMReaderView::previousMessage() |
|
|
{ |
|
|
if(currentIndex == 1) |
|
|
return; |
|
|
currentIndex--; |
|
|
printf("Index (prev) : %i\n",currentIndex); |
|
|
clearCanvas(); |
|
|
currentMessage = currentFolder->getMsg(currentIndex); |
|
|
parseMessage(currentMessage); |
|
|
} |
|
|
|
|
|
void KMReaderView::deleteMessage() |
|
|
{ |
|
|
printf("Message %i will be deleted\n",currentIndex); |
|
|
currentMessage->del(); |
|
|
currentIndex--; |
|
|
currentFolder->expunge(); |
|
|
nextMessage(); |
|
|
} |
|
|
|
|
|
void KMReaderView::saveMail() |
|
|
{ |
|
|
QString mailString; |
|
|
QString fileName; |
|
|
QFile *file; |
|
|
fileName = QFileDialog::getSaveFileName(NULL,"*.kmail",0); |
|
|
if(fileName.isEmpty()) |
|
|
return; |
|
|
file = new QFile(fileName); |
|
|
if(file->exists()) |
|
|
{int i = KMsgBox::yesNoCancel(0,"Question?","The file you selected already exists! Overwrite?"); |
|
|
printf("i = %i\n",i); |
|
|
if(i==1); // How do I remove a file with QT?? |
|
|
else if(i==2) |
|
|
{delete file; |
|
|
saveMail();} |
|
|
else if(i==3) |
|
|
{delete file; |
|
|
return; } |
|
|
} |
|
|
if(!file->open(IO_ReadWrite)) |
|
|
{KMsgBox::message(0,"Ouuch","Could not open file!"); |
|
|
return;} |
|
|
mailString = currentMessage->asString(); |
|
|
file->writeBlock(mailString,mailString.length()-1); |
|
|
file->close(); |
|
|
|
|
|
} |
|
|
|
|
|
void KMReaderView::printMail() |
|
|
{ |
|
|
} |
|
|
|
|
|
void KMReaderView::slotScrollVert( int _y ) |
|
|
{ |
|
|
vert->setValue( _y ); |
|
|
} |
|
|
|
|
|
|
|
|
void KMReaderView::slotScrollHorz( int _x ) |
|
|
{ |
|
|
horz->setValue( _x ); |
|
|
} |
|
|
|
|
|
void KMReaderView::slotScrollUpDo() |
|
|
{ |
|
|
printf("Entering slotScrollUpDo\n"); |
|
|
int i = vert->value(); |
|
|
i--; |
|
|
horz->setValue(i); |
|
|
} |
|
|
|
|
|
void KMReaderView::slotScrollLeRi() |
|
|
{ |
|
|
printf("Entering slotScrollLeRi\n"); |
|
|
int i = vert->value(); |
|
|
i++; |
|
|
vert->setValue(i); |
|
|
} |
|
|
|
|
|
|
|
|
void KMReaderView::slotDocumentChanged() |
|
|
{ |
|
|
if ( messageCanvas->docHeight() > messageCanvas->height() ) |
|
|
vert->setRange( 0, messageCanvas->docHeight() - messageCanvas->height() ); |
|
|
else |
|
|
vert->setRange( 0, 0 ); |
|
|
|
|
|
if ( messageCanvas->docWidth() > messageCanvas->width() ) |
|
|
horz->setRange( 0, messageCanvas->docWidth() - messageCanvas->width() ); |
|
|
else |
|
|
horz->setRange( 0, 0 ); |
|
|
} |
|
|
|
|
|
|
|
|
void KMReaderView::slotDocumentDone() |
|
|
{ |
|
|
vert->setValue( 0 ); |
|
|
} |
|
|
|
|
|
|
|
|
void KMReaderView::openURL(const char *url, int) |
|
|
{ |
|
|
printf("URL selected\n"); |
|
|
QString fullURL; |
|
|
fullURL = url; |
|
|
cout << fullURL << "\n"; |
|
|
|
|
|
if ( fullURL.find( "http:" ) >= 0 ) |
|
|
{QString cmd = "kfmclient exec "; |
|
|
cmd += fullURL; |
|
|
cmd += " Open"; |
|
|
system( cmd ); |
|
|
} |
|
|
else if ( fullURL.find( "ftp:" ) >= 0 ) |
|
|
{ |
|
|
QString cmd = "kfmclient exec "; |
|
|
cmd += fullURL; |
|
|
cmd += " Open"; |
|
|
system( cmd ); |
|
|
} |
|
|
else if ( fullURL.find( "mailto:" ) >= 0 ) |
|
|
{ fullURL.remove(0,7); |
|
|
KMComposeWin *w = new KMComposeWin(0,0,fullURL); |
|
|
w->show(); |
|
|
w->resize(w->size()); |
|
|
} |
|
|
|
|
|
} |
|
|
void KMReaderView::popupHeaderMenu(const char *_url, const QPoint &cords) |
|
|
{ |
|
|
printf("Right mouse button pressed on headerCanvas\n"); |
|
|
QString url = _url; |
|
|
if(!url.isEmpty()) |
|
|
{printf("Mouse was pressed over an url!\n"); |
|
|
QPopupMenu *p = new QPopupMenu(); |
|
|
p->insertItem("Add to Addressbook"); |
|
|
p->insertItem("Properties"); |
|
|
p->popup(cords,0);} |
|
|
|
|
|
} |
|
|
|
|
|
void KMReaderView::popupMenu(const char *_url, const QPoint &cords) |
|
|
{ |
|
|
QString temp=_url; |
|
|
int number; |
|
|
|
|
|
printf("Right mouse button pressed on messageCanvas\n"); |
|
|
|
|
|
if(temp.isEmpty()) |
|
|
{printf("Mouse was not over an url!\n"); // Pressed outside url |
|
|
QPopupMenu *p = new QPopupMenu(); |
|
|
p->insertItem("Reply to Sender",this,SLOT(replyMessage())); |
|
|
p->insertItem("Reply to All Recipients",this,SLOT(replyAll())); |
|
|
p->insertItem("Forward Message",this,SLOT(forwardMessage())); |
|
|
p->insertSeparator(); |
|
|
QPopupMenu *folderMenu = new QPopupMenu(); // dummy |
|
|
folderMenu->insertItem("Inbox"); |
|
|
folderMenu->insertItem("Sent messages"); |
|
|
folderMenu->insertItem("Trash"); |
|
|
p->insertItem("Send Message to Folder",folderMenu); |
|
|
p->insertItem("Delete Message"); |
|
|
p->insertItem("Save Message",this,SLOT(saveMail())); |
|
|
p->insertItem("Print Message",this,SLOT(printMail())); |
|
|
p->popup(cords,0);} |
|
|
|
|
|
else |
|
|
{printf("Mouse was pressed over an url: %s\n",_url); // Pressed over url |
|
|
temp.replace(QRegExp("file:/"),""); |
|
|
cout << temp << "\n"; |
|
|
number = temp.toUInt(); |
|
|
printf("Attachment : %i",number); |
|
|
currentAtmnt = number; |
|
|
QPopupMenu *p = new QPopupMenu(); |
|
|
p->insertItem("Open...",this,SLOT(openAtmnt())); |
|
|
p->insertItem("Print...",this,SLOT(printAtmnt())); |
|
|
p->insertItem("Save as...",this,SLOT(saveAtmnt())); |
|
|
p->insertItem("Quick View...",this,SLOT(viewAtmnt())); |
|
|
p->popup(cords,0);} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void KMReaderView::saveURL(int) |
|
|
{ |
|
|
printf("Entering saveURL()\n"); |
|
|
|
|
|
} |
|
|
|
|
|
void KMReaderView::copy() |
|
|
{ |
|
|
messageCanvas->getSelectedText(selectedText); |
|
|
} |
|
|
|
|
|
void KMReaderView::markAll() |
|
|
{ |
|
|
} |
|
|
|
|
|
void KMReaderView::viewSource() |
|
|
{ |
|
|
QString text; |
|
|
KMProperties *p = new KMProperties(0,0,currentMessage); |
|
|
p->show(); |
|
|
p->resize(p->size()); |
|
|
} |
|
|
|
|
|
|
|
|
/***************************************************************************/ |
|
|
/***************************************************************************/ |
|
|
|
|
|
|
|
|
|
|
|
KMReaderWin::KMReaderWin(QWidget *, const char *, int msgno = 0,KMFolder *f =0) |
|
|
:KTopLevelWidget(NULL) |
|
|
{ |
|
|
|
|
|
tempFolder = new KMFolder(); |
|
|
tempFolder = f; |
|
|
setCaption("KMail Reader"); |
|
|
|
|
|
parseConfiguration(); |
|
|
|
|
|
newView = new KMReaderView(this,NULL, msgno,f); |
|
|
setView(newView); |
|
|
|
|
|
setupMenuBar(); |
|
|
|
|
|
setupToolBar(); |
|
|
|
|
|
if(!showToolBar) |
|
|
enableToolBar(KToolBar::Hide); |
|
|
resize(480, 510); |
|
|
} |
|
|
|
|
|
void KMReaderWin::show() |
|
|
{ |
|
|
KTopLevelWidget::show(); |
|
|
resize(size()); |
|
|
} |
|
|
|
|
|
|
|
|
// ******************** Public slots ******************** |
|
|
|
|
|
|
|
|
void KMReaderWin::parseConfiguration() |
|
|
{ |
|
|
KConfig *config; |
|
|
QString o; |
|
|
printf("Entering parseConfig\n"); |
|
|
config = KApplication::getKApplication()->getConfig(); |
|
|
config->setGroup("Settings"); |
|
|
o = config->readEntry("Reader ShowToolBar"); |
|
|
if((!o.isEmpty() && o.find("no",0,false)) == 0) |
|
|
showToolBar = 0; |
|
|
|
|
|
else |
|
|
showToolBar = 1; |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
// ***************** Private slots ******************** |
|
|
|
|
|
void KMReaderWin::setupMenuBar() |
|
|
{ |
|
|
menuBar = new KMenuBar(this); |
|
|
|
|
|
QPopupMenu *menu = new QPopupMenu(); |
|
|
menu->insertItem("Save...",newView,SLOT(saveMail()),ALT+Key_S); |
|
|
menu->insertItem("Address Book...",this,SLOT(toDo()),ALT+Key_B); |
|
|
menu->insertItem("Print...",newView,SLOT(printMail()),ALT+Key_P); |
|
|
menu->insertItem("Properties",newView,SLOT(viewSource()),ALT+Key_O); |
|
|
menu->insertSeparator(); |
|
|
menu->insertItem("New Composer",this,SLOT(newComposer()),ALT+Key_C); |
|
|
menu->insertItem("New Mailreader",this,SLOT(newReader()),ALT+Key_R); |
|
|
menu->insertSeparator(); |
|
|
menu->insertItem("Close",this,SLOT(abort()),CTRL+ALT+Key_C); |
|
|
menuBar->insertItem("File",menu); |
|
|
|
|
|
menu = new QPopupMenu(); |
|
|
menu->insertItem("Copy",newView,SLOT(copy()),CTRL+Key_C); |
|
|
menu->insertItem("Mark all",newView,SLOT(markAll())); |
|
|
menu->insertSeparator(); |
|
|
menu->insertItem("Find...",this,SLOT(toDo())); |
|
|
menuBar->insertItem("Edit",menu); |
|
|
|
|
|
menu = new QPopupMenu(); |
|
|
menu->insertItem("Reply...",newView,SLOT(replyMessage()),ALT+Key_R); |
|
|
menu->insertItem("Reply all...", newView,SLOT(replyAll()),ALT+Key_A); |
|
|
menu->insertItem("Forward ...",newView,SLOT(forwardMessage()),ALT+Key_F); |
|
|
menu->insertSeparator(); |
|
|
menu->insertItem("Next...",newView,SLOT(nextMessage()),Key_Next); |
|
|
menu->insertItem("Previous...",newView,SLOT(previousMessage()),Key_Prior); |
|
|
menu->insertSeparator(); |
|
|
menu->insertItem("Delete...",newView,SLOT(deleteMessage()), Key_Delete); |
|
|
|
|
|
menuBar->insertItem("Message",menu); |
|
|
|
|
|
menu = new QPopupMenu(); |
|
|
menu->insertItem("Toggle Toolbar", this, SLOT(toggleToolBar()),ALT+Key_O); |
|
|
|
|
|
menuBar->insertItem("Options",menu); |
|
|
|
|
|
menuBar->insertSeparator(); |
|
|
|
|
|
menu = new QPopupMenu(); |
|
|
menu->insertItem("Help",this,SLOT(invokeHelp()),ALT+Key_H); |
|
|
menu->insertSeparator(); |
|
|
menu->insertItem("About",this,SLOT(about())); |
|
|
menuBar->insertItem("Help",menu); |
|
|
|
|
|
setMenu(menuBar); |
|
|
} |
|
|
|
|
|
void KMReaderWin::setupToolBar() |
|
|
{ |
|
|
QString pixdir = ""; // pics dir code "inspired" by kghostview (thanks) |
|
|
char *kdedir = getenv("KDEDIR"); |
|
|
if (kdedir) pixdir.append(kdedir); |
|
|
else |
|
|
{KMsgBox::message(0,"Oucch","$KDEDIR not set. Please do so"); |
|
|
qApp->quit(); |
|
|
} |
|
|
pixdir += "/lib/pics/toolbar/"; |
|
|
|
|
|
|
|
|
|
|
|
toolBar = new KToolBar(this); |
|
|
|
|
|
QPixmap pixmap; |
|
|
|
|
|
pixmap.load(pixdir+"kmsave.xpm"); |
|
|
toolBar->insertButton(pixmap,0,SIGNAL(clicked()),newView,SLOT(saveMail()),TRUE,"Save Mail"); |
|
|
pixmap.load(pixdir+"kmprint.xpm"); |
|
|
toolBar->insertButton(pixmap,1,SIGNAL(clicked()),newView,SLOT(printMail()),TRUE,"Print"); |
|
|
toolBar->insertSeparator(); |
|
|
pixmap.load(pixdir+"kmreply.xpm"); |
|
|
toolBar->insertButton(pixmap,2,SIGNAL(clicked()),newView,SLOT(replyMessage()),TRUE,"Reply"); |
|
|
pixmap.load(pixdir+"kmreply.xpm"); |
|
|
toolBar->insertButton(pixmap,3,SIGNAL(clicked()),newView,SLOT(replyAll()),TRUE,"Reply all"); |
|
|
pixmap.load(pixdir+"kmforward.xpm"); |
|
|
toolBar->insertButton(pixmap,4,SIGNAL(clicked()),newView,SLOT(forwardMessage()),TRUE,"Forward"); |
|
|
toolBar->insertSeparator(); |
|
|
pixmap.load(pixdir+"down.xpm"); |
|
|
toolBar->insertButton(pixmap,5,SIGNAL(clicked()),newView,SLOT(nextMessage()),TRUE,"Next message"); |
|
|
pixmap.load(pixdir+"up.xpm"); |
|
|
toolBar->insertButton(pixmap,6,SIGNAL(clicked()),newView,SLOT(previousMessage()),TRUE,"Previous message"); |
|
|
toolBar->insertSeparator(); |
|
|
pixmap.load(pixdir+"kmdel.xpm"); |
|
|
toolBar->insertButton(pixmap,7,SIGNAL(clicked()),newView,SLOT(deleteMessage()),TRUE,"Delete Message"); |
|
|
toolBar->insertSeparator(); |
|
|
pixmap.load(pixdir+"help.xpm"); |
|
|
toolBar->insertButton(pixmap,8,SIGNAL(clicked()),this,SLOT(invokeHelp()),TRUE,"Help"); |
|
|
|
|
|
addToolBar(toolBar); |
|
|
} |
|
|
|
|
|
void KMReaderWin::invokeHelp() |
|
|
{ |
|
|
|
|
|
KApplication::getKApplication()->invokeHTMLHelp("",""); |
|
|
|
|
|
} |
|
|
|
|
|
void KMReaderWin::toDo() |
|
|
{ |
|
|
KMsgBox::message(this,"Ouch", |
|
|
"Not yet implemented!\n" |
|
|
"We are sorry for the inconvenience :-)",1); |
|
|
} |
|
|
|
|
|
void KMReaderWin::newComposer() |
|
|
{ |
|
|
KMComposeWin *k = new KMComposeWin(); |
|
|
k->show(); |
|
|
k->resize(k->size()); |
|
|
} |
|
|
|
|
|
void KMReaderWin::newReader() |
|
|
{ |
|
|
/* KMMainWin *w = new KMMainWin(); |
|
|
w->show(); |
|
|
w->resize(w->size());*/ |
|
|
} |
|
|
|
|
|
void KMReaderWin::about() |
|
|
{ |
|
|
KMsgBox::message(this,"About", |
|
|
"kmail [ALPHA]\n\n" |
|
|
"Yat-Nam Lo <lynx@topaz.hknet.com>\n" |
|
|
"Stephan Meyer <Stephan.Meyer@munich.netsurf.de>\n" |
|
|
"Stefan Taferner <taferner@alpin.or.at>\n" |
|
|
"Markus W<EFBFBD>bben <markus.wuebben@kde.org>\n\n" |
|
|
"This program is covered by the GPL.",1); |
|
|
} |
|
|
|
|
|
void KMReaderWin::toggleToolBar() |
|
|
{ |
|
|
enableToolBar(KToolBar::Toggle); |
|
|
} |
|
|
|
|
|
void KMReaderWin::abort() |
|
|
{ |
|
|
close(); |
|
|
} |
|
|
|
|
|
|
|
|
// **************** Protected ************************ |
|
|
|
|
|
void KMReaderWin::closeEvent(QCloseEvent *e) |
|
|
{ |
|
|
KTopLevelWidget::closeEvent(e); |
|
|
delete this; |
|
|
KConfig *config = new KConfig(); |
|
|
config = KApplication::getKApplication()->getConfig(); |
|
|
config->setGroup("Settings"); |
|
|
if(showToolBar) |
|
|
config->writeEntry("Reader ShowToolBar","yes"); |
|
|
else |
|
|
config->writeEntry("Reader ShowToolBar","no"); |
|
|
config->sync(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
KMProperties::KMProperties(QWidget *parent=0, const char *name=0, KMMessage *cM=0) |
|
|
: QDialog(parent, name) |
|
|
{ |
|
|
QString text = cM->asString(); |
|
|
setMaximumSize(410,472); |
|
|
setMinimumSize(410,472); |
|
|
|
|
|
tabDialog = new QTabDialog(this,"main",FALSE,0); |
|
|
tabDialog->move(0,0); |
|
|
|
|
|
topLevel = new KMGeneral(tabDialog,"kfs",cM); |
|
|
tabDialog->addTab(topLevel,"General"); |
|
|
|
|
|
sourceWidget = new KMSource(tabDialog,"Source", text); |
|
|
tabDialog->addTab(sourceWidget,"Source"); |
|
|
|
|
|
connect(tabDialog,SIGNAL(applyButtonPressed()),qApp,SLOT(quit()) ); |
|
|
} |
|
|
|
|
|
KMProperties::~KMProperties() |
|
|
{ |
|
|
delete topLevel; |
|
|
delete sourceWidget; |
|
|
delete tabDialog; |
|
|
} |
|
|
|
|
|
KMGeneral::KMGeneral(QWidget *parent=0, const char *name=0, KMMessage *cM=0) |
|
|
: QDialog(parent, name) |
|
|
{ |
|
|
setMinimumSize(400,370); |
|
|
setMaximumSize(400,370); |
|
|
tempMes = new KMMessage(); |
|
|
tempMes =cM; |
|
|
} |
|
|
|
|
|
void KMGeneral::paintEvent(QPaintEvent *) |
|
|
{ |
|
|
QPainter p; |
|
|
QString temp; |
|
|
p.begin(this); |
|
|
QPoint point(20,30); |
|
|
QPixmap pix("/usr/local/kde/lib/pics/kmsend.xpm"); |
|
|
p.drawPixmap(point,pix); |
|
|
p.setPen(black); |
|
|
temp.sprintf("Subject: %s", tempMes->subject()); |
|
|
p.drawText(60, 30, temp); |
|
|
temp.sprintf("From: %s", tempMes->from()); |
|
|
p.drawText(60, 60, temp); |
|
|
p.drawLine(10,80,380,80); |
|
|
temp = tempMes->asString(); |
|
|
temp.sprintf("Size: %i kb",temp.length()/1024); |
|
|
p.drawText(20,100,temp); |
|
|
p.drawText(20,130,"Folder:"); |
|
|
p.drawLine(10,150,380,150); |
|
|
temp.sprintf("Attachments: %i", tempMes->numBodyParts()); |
|
|
p.drawText(20,170,temp); |
|
|
p.drawText(20,200,"Format:"); |
|
|
p.drawLine(10,220,380,220); |
|
|
temp.sprintf("Sent: %s", tempMes->dateStr()); |
|
|
p.drawText(20,240,temp); |
|
|
p.drawText(20,270,"Recieved on:"); |
|
|
p.end(); |
|
|
|
|
|
} |
|
|
|
|
|
KMSource::KMSource(QWidget *parent=0, const char *name=0,QString text=0) |
|
|
: QDialog(parent, name) |
|
|
{ |
|
|
edit = new QMultiLineEdit(this); |
|
|
edit->resize(360,340); |
|
|
edit->move(20,20); |
|
|
edit->setText(text); |
|
|
edit->setReadOnly(TRUE); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|