You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
4.9 KiB
165 lines
4.9 KiB
//
|
|
// C++ Implementation: mailboxwizard
|
|
//
|
|
// Description:
|
|
//
|
|
//
|
|
// Author: Ulrich Weigelt <ulrich.weigelt@gmx.de>, (C) 2008
|
|
//
|
|
// Copyright: See COPYING file that comes with this distribution
|
|
//
|
|
//
|
|
#include "mailboxwizard.h"
|
|
|
|
MailBoxWizard::MailBoxWizard( TQWidget* parent, const char* name )
|
|
: TQWizard( parent, name, true )
|
|
{
|
|
|
|
//this is page one
|
|
//in this the user can chosse his mail directory
|
|
//----------------------------------------------
|
|
TQWidget* page1 = new TQWidget( this, "page1" );
|
|
TQHBoxLayout* layMain1 = new TQHBoxLayout( page1, 0, 10 );
|
|
|
|
txtMailDir = new KLineEdit( page1, "txtMailDir" );
|
|
layMain1->addWidget( txtMailDir );
|
|
|
|
btnMailDir = new KPushButton( KGuiItem( TQString(), TQString( "folder" ), i18n( "Press to choose the mail directory" ), i18n( "Press to choose the mail directory" ) ), page1, "btnMailDir" );
|
|
btnMailDir->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
|
|
layMain1->addWidget( btnMailDir );
|
|
connect( btnMailDir, SIGNAL( clicked() ), this, SLOT( slotOpenDirDialog() ) );
|
|
|
|
title1 = i18n( "Please choose the path to the mailboxes.\nKShowmail supports only MailDir boxes." );
|
|
addPage( page1, title1 );
|
|
|
|
|
|
//this is page two
|
|
//in this the user can choose the mailbox
|
|
//---------------------------------------
|
|
TQWidget* page2 = new TQWidget( this, "page2" );
|
|
TQHBoxLayout* layMain2 = new TQHBoxLayout( page2, 0, 10 );
|
|
|
|
lstMailboxes = new TDEListView( page2, "lstMailboxes" );
|
|
lstMailboxes->addColumn( "Mailbox" );
|
|
lstMailboxes->setRootIsDecorated( true );
|
|
layMain2->addWidget( lstMailboxes );
|
|
|
|
title2 = i18n( "Please choose the mailbox" );
|
|
addPage( page2, title2 );
|
|
setFinishEnabled( page2, true );
|
|
|
|
connect( this, SIGNAL( selected( const TQString& ) ), this, SLOT( slotPageChanged( const TQString& ) ) );
|
|
}
|
|
|
|
|
|
MailBoxWizard::~MailBoxWizard()
|
|
{
|
|
}
|
|
|
|
void MailBoxWizard::slotOpenDirDialog( )
|
|
{
|
|
//save old path
|
|
TQString oldPath = txtMailDir->text();
|
|
|
|
//get new path
|
|
TQString path = KFileDialog::getExistingDirectory( oldPath, this, i18n( "Choose the mailbox directory") );
|
|
|
|
//put new or old path in the edit line
|
|
if( path == TQString::null )
|
|
txtMailDir->setText( oldPath );
|
|
else
|
|
txtMailDir->setText( path );
|
|
}
|
|
|
|
void MailBoxWizard::slotPageChanged( const TQString& pageTitle )
|
|
{
|
|
//just we looking for mailboxes if the page 2 was opened
|
|
if( pageTitle == title2 )
|
|
{
|
|
//clear all entries
|
|
lstMailboxes->clear();
|
|
|
|
//create an directory object to browse the given directory
|
|
TQDir mailDir( txtMailDir->text() );
|
|
if( mailDir.isReadable() ) //is the dir readable?
|
|
{
|
|
//get a list of all entries in this directory
|
|
const TQStringList entries = mailDir.entryList( TQDir::Dirs | TQDir::Readable | TQDir::Writable | TQDir::Hidden, TQDir::Name | TQDir::IgnoreCase | TQDir::LocaleAware );
|
|
|
|
for( TQStringList::const_iterator it = entries.begin(); it != entries.end(); ++it )
|
|
{
|
|
//add an entry to the mailbox list
|
|
TQDir newMailDir( mailDir );
|
|
newMailDir.cd( (*it) );
|
|
if( (*it) != ".." && (*it) != "." && isMailDir( newMailDir ) )
|
|
addMailBoxListItem( *it, mailDir );
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
bool MailBoxWizard::isMailDir( const TQDir & path )
|
|
{
|
|
//get a list of all subdirectories in this directory
|
|
const TQStringList entries = path.entryList( TQDir::Dirs | TQDir::Readable | TQDir::Writable | TQDir::Hidden, TQDir::Name | TQDir::IgnoreCase | TQDir::LocaleAware );
|
|
|
|
//a maildir folder must contains the folders "cur", "new" and "tmp"
|
|
bool curFound = false;
|
|
bool newFound = false;
|
|
bool tmpFound = false;
|
|
|
|
//iterate over all directories and look for the three necessary dirs
|
|
TQStringList::const_iterator it = entries.begin();
|
|
while( it != entries.end() && !( curFound && newFound && tmpFound ) )
|
|
{
|
|
if( *it == "tmp" )
|
|
tmpFound = true;
|
|
else if( *it == "cur" )
|
|
curFound = true;
|
|
else if( *it == "new" )
|
|
newFound = true;
|
|
|
|
++it;
|
|
}
|
|
|
|
return curFound && newFound && tmpFound;
|
|
}
|
|
|
|
void MailBoxWizard::addMailBoxListItem( TQString boxname, TQDir path )
|
|
{
|
|
//translate some default mailboxes
|
|
TQString boxnameTrans;
|
|
if( boxname.lower() == "inbox" )
|
|
boxnameTrans = i18n( "Inbox" );
|
|
else if( boxname.lower() == "outbox" )
|
|
boxnameTrans = i18n( "Outbox" );
|
|
else if( boxname.lower() == "drafts" )
|
|
boxnameTrans = i18n( "Drafts" );
|
|
else if( boxname.lower() == "sent-mail" )
|
|
boxnameTrans = i18n( "sent-mail" );
|
|
else if( boxname.lower() == "trash" )
|
|
boxnameTrans = i18n( "Trash" );
|
|
else
|
|
boxnameTrans = boxname;
|
|
|
|
//create item
|
|
MailBoxWizardListItem* newItem;
|
|
newItem = new MailBoxWizardListItem( lstMailboxes, boxnameTrans, path.absPath() + "/" + boxname + "/" );
|
|
|
|
|
|
}
|
|
|
|
TQString MailBoxWizard::getPath( )
|
|
{
|
|
MailBoxWizardListItem* item = (MailBoxWizardListItem*)lstMailboxes->selectedItem();
|
|
|
|
TQString path = TQString::null;
|
|
if( item != NULL )
|
|
path = item->getPath();
|
|
|
|
return path;
|
|
}
|
|
|
|
#include "mailboxwizard.moc"
|