Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

settings.cpp

Go to the documentation of this file.
00001 #include <stdlib.h>
00002 #include <qdir.h>
00003 
00004 #include <opie2/odebug.h>
00005 #include <qpe/config.h>
00006 
00007 #include "settings.h"
00008 //#include "defines.h"
00009 
00010 #define IMAP_PORT           "143"
00011 #define IMAP_SSL_PORT       "993"
00012 #define SMTP_PORT           "25"
00013 #define SMTP_SSL_PORT       "465"
00014 #define POP3_PORT           "110"
00015 #define POP3_SSL_PORT       "995"
00016 #define NNTP_PORT           "119"
00017 #define NNTP_SSL_PORT       "563"
00018 
00019 Settings::Settings()
00020     : QObject()
00021 {
00022    updateAccounts();
00023 }
00024 
00025 void Settings::checkDirectory()
00026 {
00027     if ( !QDir( (QString) getenv( "HOME" ) + "/Applications/opiemail/" ).exists() ) {
00028         system( "mkdir -p $HOME/Applications/opiemail" );
00029         odebug << "$HOME/Applications/opiemail created" << oendl;
00030     }
00031 }
00032 
00033 QList<Account> Settings::getAccounts()
00034 {
00035     return accounts;
00036 }
00037 
00038 void Settings::addAccount( Account *account )
00039 {
00040     accounts.append( account );
00041 }
00042 
00043 void Settings::delAccount( Account *account )
00044 {
00045     accounts.remove( account );
00046     account->remove();
00047 }
00048 
00049 void Settings::updateAccounts()
00050 {
00051     accounts.clear();
00052     QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" );
00053     QStringList::Iterator it;
00054 
00055     QStringList imap = dir.entryList( "imap-*" );
00056     for ( it = imap.begin(); it != imap.end(); it++ ) {
00057         odebug << "Added IMAP account" << oendl;
00058         IMAPaccount *account = new IMAPaccount( (*it).replace(0, 5, "") );
00059         accounts.append( account );
00060     }
00061 
00062     QStringList pop3 = dir.entryList( "pop3-*" );
00063     for ( it = pop3.begin(); it != pop3.end(); it++ ) {
00064         odebug << "Added POP account" << oendl;
00065         POP3account *account = new POP3account( (*it).replace(0, 5, "") );
00066         accounts.append( account );
00067     }
00068 
00069     QStringList smtp = dir.entryList( "smtp-*" );
00070     for ( it = smtp.begin(); it != smtp.end(); it++ ) {
00071         odebug << "Added SMTP account" << oendl;
00072         SMTPaccount *account = new SMTPaccount( (*it).replace(0, 5, "") );
00073         accounts.append( account );
00074     }
00075 
00076     QStringList nntp = dir.entryList( "nntp-*" );
00077     for ( it = nntp.begin(); it != nntp.end(); it++ ) {
00078         odebug << "Added NNTP account" << oendl;
00079         NNTPaccount *account = new NNTPaccount( (*it).replace(0, 5, "") );
00080         accounts.append( account );
00081     }
00082 
00083     readAccounts();
00084 }
00085 
00086 void Settings::saveAccounts()
00087 {
00088     checkDirectory();
00089     Account *it;
00090 
00091     for ( it = accounts.first(); it; it = accounts.next() ) {
00092         it->save();
00093     }
00094 }
00095 
00096 void Settings::readAccounts()
00097 {
00098     checkDirectory();
00099     Account *it;
00100 
00101     for ( it = accounts.first(); it; it = accounts.next() ) {
00102         it->read();
00103     }
00104 }
00105 
00106 Account::Account()
00107 {
00108     accountName = "changeMe";
00109     type = MAILLIB::A_UNDEFINED;
00110     ssl = false;
00111     connectionType = 1;
00112     offline = false;
00113 }
00114 
00115 void Account::remove()
00116 {
00117     QFile file( getFileName() );
00118     file.remove();
00119 }
00120 
00121 IMAPaccount::IMAPaccount()
00122     : Account()
00123 {
00124     file = IMAPaccount::getUniqueFileName();
00125     accountName = "New IMAP Account";
00126     ssl = false;
00127     connectionType = 1;
00128     type = MAILLIB::A_IMAP;
00129     port = IMAP_PORT;
00130 }
00131 
00132 IMAPaccount::IMAPaccount( QString filename )
00133     : Account()
00134 {
00135     file = filename;
00136     accountName = "New IMAP Account";
00137     ssl = false;
00138     connectionType = 1;
00139     type = MAILLIB::A_IMAP;
00140     port = IMAP_PORT;
00141 }
00142 
00143 QString IMAPaccount::getUniqueFileName()
00144 {
00145     int num = 0;
00146     QString unique;
00147 
00148     QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" );
00149 
00150     QStringList imap = dir.entryList( "imap-*" );
00151     do {
00152         unique.setNum( num++ );
00153     } while ( imap.contains( "imap-" + unique ) > 0 );
00154 
00155     return unique;
00156 }
00157 
00158 void IMAPaccount::read()
00159 {
00160     Config *conf = new Config( getFileName(), Config::File );
00161     conf->setGroup( "IMAP Account" );
00162     accountName = conf->readEntry( "Account","" );
00163     if (accountName.isNull()) accountName = "";
00164     server = conf->readEntry( "Server","" );
00165     if (server.isNull()) server="";
00166     port = conf->readEntry( "Port","" );
00167     if (port.isNull()) port="143";
00168     connectionType = conf->readNumEntry( "ConnectionType" );
00169     ssl = conf->readBoolEntry( "SSL",false );
00170     user = conf->readEntry( "User","" );
00171     if (user.isNull()) user = "";
00172     password = conf->readEntryCrypt( "Password","" );
00173     if (password.isNull()) password = "";
00174     prefix = conf->readEntry("MailPrefix","");
00175     if (prefix.isNull()) prefix = "";
00176     offline = conf->readBoolEntry("Offline",false);
00177     delete conf;
00178 }
00179 
00180 void IMAPaccount::save()
00181 {
00182     odebug << "saving " + getFileName() << oendl;
00183     Settings::checkDirectory();
00184 
00185     Config *conf = new Config( getFileName(), Config::File );
00186     conf->setGroup( "IMAP Account" );
00187     conf->writeEntry( "Account", accountName );
00188     conf->writeEntry( "Server", server );
00189     conf->writeEntry( "Port", port );
00190     conf->writeEntry( "SSL", ssl );
00191     conf->writeEntry( "ConnectionType", connectionType );
00192     conf->writeEntry( "User", user );
00193     conf->writeEntryCrypt( "Password", password );
00194     conf->writeEntry( "MailPrefix",prefix);
00195     conf->writeEntry( "Offline",offline);
00196     conf->write();
00197     delete conf;
00198 }
00199 
00200 
00201 QString IMAPaccount::getFileName()
00202 {
00203     return (QString) getenv( "HOME" ) + "/Applications/opiemail/imap-" + file;
00204 }
00205 
00206 POP3account::POP3account()
00207     : Account()
00208 {
00209     file = POP3account::getUniqueFileName();
00210     accountName = "New POP3 Account";
00211     ssl = false;
00212     connectionType = 1;
00213     type = MAILLIB::A_POP3;
00214     port = POP3_PORT;
00215     m_CheckSize = true;
00216     m_MaxSize = 1024;
00217 }
00218 
00219 POP3account::POP3account( QString filename )
00220     : Account()
00221 {
00222     file = filename;
00223     accountName = "New POP3 Account";
00224     ssl = false;
00225     connectionType = 1;
00226     type = MAILLIB::A_POP3;
00227     port = POP3_PORT;
00228     m_CheckSize = true;
00229     m_MaxSize = 1024;
00230 }
00231 
00232 QString POP3account::getUniqueFileName()
00233 {
00234     int num = 0;
00235     QString unique;
00236 
00237     QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" );
00238 
00239     QStringList imap = dir.entryList( "pop3-*" );
00240     do {
00241         unique.setNum( num++ );
00242     } while ( imap.contains( "pop3-" + unique ) > 0 );
00243 
00244     return unique;
00245 }
00246 
00247 void POP3account::read()
00248 {
00249     Config *conf = new Config( getFileName(), Config::File );
00250     conf->setGroup( "POP3 Account" );
00251     accountName = conf->readEntry( "Account" );
00252     server = conf->readEntry( "Server" );
00253     port = conf->readEntry( "Port" );
00254     ssl = conf->readBoolEntry( "SSL" );
00255     connectionType = conf->readNumEntry( "ConnectionType" );
00256     user = conf->readEntry( "User" );
00257     password = conf->readEntryCrypt( "Password" );
00258     offline = conf->readBoolEntry("Offline",false);
00259     m_CheckSize = conf->readBoolEntry("Checkmaxsize",true);
00260     m_MaxSize = conf->readNumEntry("Maxsize",1024);
00261     delete conf;
00262 }
00263 
00264 void POP3account::save()
00265 {
00266     odebug << "saving " + getFileName() << oendl;
00267     Settings::checkDirectory();
00268 
00269     Config *conf = new Config( getFileName(), Config::File );
00270     conf->setGroup( "POP3 Account" );
00271     conf->writeEntry( "Account", accountName );
00272     conf->writeEntry( "Server", server );
00273     conf->writeEntry( "Port", port );
00274     conf->writeEntry( "SSL", ssl );
00275     conf->writeEntry( "ConnectionType", connectionType );
00276     conf->writeEntry( "User", user );
00277     conf->writeEntryCrypt( "Password", password );
00278     conf->writeEntry( "Offline",offline);
00279     conf->writeEntry("Checkmaxsize",m_CheckSize);
00280     conf->writeEntry("Maxsize",m_MaxSize);
00281     conf->write();
00282     delete conf;
00283 }
00284 
00285 
00286 QString POP3account::getFileName()
00287 {
00288     return (QString) getenv( "HOME" ) + "/Applications/opiemail/pop3-" + file;
00289 }
00290 
00291 bool POP3account::getCheckMaxSize()const
00292 {
00293     return m_CheckSize;
00294 }
00295 
00296 void POP3account::setCheckMaxSize(bool aValue)
00297 {
00298     m_CheckSize = aValue;
00299 }
00300 
00301 int POP3account::getMaxSize()const
00302 {
00303     return m_MaxSize;
00304 }
00305 
00306 void POP3account::setMaxSize(int aValue)
00307 {
00308     m_MaxSize = aValue;
00309 }
00310 
00311 SMTPaccount::SMTPaccount()
00312     : Account()
00313 {
00314     file = SMTPaccount::getUniqueFileName();
00315     accountName = "New SMTP Account";
00316     ssl = false;
00317     connectionType = 1;
00318     login = false;
00319     useCC = false;
00320     useBCC = false;
00321     useReply = false;
00322     type = MAILLIB::A_SMTP;
00323     port = SMTP_PORT;
00324 }
00325 
00326 SMTPaccount::SMTPaccount( QString filename )
00327     : Account()
00328 {
00329     file = filename;
00330     accountName = "New SMTP Account";
00331     ssl = false;
00332     connectionType = 1;
00333     login = false;
00334     type = MAILLIB::A_SMTP;
00335     port = SMTP_PORT;
00336 }
00337 
00338 QString SMTPaccount::getUniqueFileName()
00339 {
00340     int num = 0;
00341     QString unique;
00342 
00343     QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" );
00344 
00345     QStringList imap = dir.entryList( "smtp-*" );
00346     do {
00347         unique.setNum( num++ );
00348     } while ( imap.contains( "smtp-" + unique ) > 0 );
00349 
00350     return unique;
00351 }
00352 
00353 void SMTPaccount::read()
00354 {
00355     Config *conf = new Config( getFileName(), Config::File );
00356     conf->setGroup( "SMTP Account" );
00357     accountName = conf->readEntry( "Account" );
00358     server = conf->readEntry( "Server" );
00359     port = conf->readEntry( "Port" );
00360     ssl = conf->readBoolEntry( "SSL" );
00361     connectionType = conf->readNumEntry( "ConnectionType" );
00362     login = conf->readBoolEntry( "Login" );
00363     user = conf->readEntry( "User" );
00364     password = conf->readEntryCrypt( "Password" );
00365     delete conf;
00366 }
00367 
00368 void SMTPaccount::save()
00369 {
00370     odebug << "saving " + getFileName() << oendl;
00371     Settings::checkDirectory();
00372 
00373     Config *conf = new Config( getFileName(), Config::File );
00374     conf->setGroup( "SMTP Account" );
00375     conf->writeEntry( "Account", accountName );
00376     conf->writeEntry( "Server", server );
00377     conf->writeEntry( "Port", port );
00378     conf->writeEntry( "SSL", ssl );
00379     conf->writeEntry( "ConnectionType", connectionType );
00380     conf->writeEntry( "Login", login );
00381     conf->writeEntry( "User", user );
00382     conf->writeEntryCrypt( "Password", password );
00383     conf->write();
00384     delete conf;
00385 }
00386 
00387 
00388 QString SMTPaccount::getFileName()
00389 {
00390     return (QString) getenv( "HOME" ) + "/Applications/opiemail/smtp-" + file;
00391 }
00392 
00393 NNTPaccount::NNTPaccount()
00394     : Account()
00395 {
00396     file = NNTPaccount::getUniqueFileName();
00397     accountName = "New NNTP Account";
00398     ssl = false;
00399     login = false;
00400     type = MAILLIB::A_NNTP;
00401     port = NNTP_PORT;
00402 }
00403 
00404 NNTPaccount::NNTPaccount( QString filename )
00405     : Account()
00406 {
00407     file = filename;
00408     accountName = "New NNTP Account";
00409     ssl = false;
00410     login = false;
00411     type = MAILLIB::A_NNTP;
00412     port = NNTP_PORT;
00413 }
00414 
00415 QString NNTPaccount::getUniqueFileName()
00416 {
00417     int num = 0;
00418     QString unique;
00419 
00420     QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" );
00421 
00422     QStringList imap = dir.entryList( "nntp-*" );
00423     do {
00424         unique.setNum( num++ );
00425     } while ( imap.contains( "nntp-" + unique ) > 0 );
00426 
00427     return unique;
00428 }
00429 
00430 void NNTPaccount::read()
00431 {
00432     Config *conf = new Config( getFileName(), Config::File );
00433     conf->setGroup( "NNTP Account" );
00434     accountName = conf->readEntry( "Account" );
00435     server = conf->readEntry( "Server" );
00436     port = conf->readEntry( "Port" );
00437     ssl = conf->readBoolEntry( "SSL" );
00438     login = conf->readBoolEntry( "Login" );
00439     user = conf->readEntry( "User" );
00440     password = conf->readEntryCrypt( "Password" );
00441     subscribedGroups = conf->readListEntry( "Subscribed", ',' );
00442     delete conf;
00443 }
00444 
00445 void NNTPaccount::save()
00446 {
00447     odebug << "saving " + getFileName() << oendl;
00448     Settings::checkDirectory();
00449 
00450     Config *conf = new Config( getFileName(), Config::File );
00451     conf->setGroup( "NNTP Account" );
00452     conf->writeEntry( "Account", accountName );
00453     conf->writeEntry( "Server", server );
00454     conf->writeEntry( "Port", port );
00455     conf->writeEntry( "SSL", ssl );
00456     conf->writeEntry( "Login", login );
00457     conf->writeEntry( "User", user );
00458     conf->writeEntryCrypt( "Password", password );
00459     conf->writeEntry( "Subscribed" , subscribedGroups, ',' );
00460     conf->write();
00461     delete conf;
00462 }
00463 
00464 
00465 QString NNTPaccount::getFileName()
00466 {
00467     return (QString) getenv( "HOME" ) + "/Applications/opiemail/nntp-" + file;
00468 }

Generated on Sat Nov 5 16:17:24 2005 for OPIE by  doxygen 1.4.2