libkdepim

broadcaststatus.cpp

00001 /*
00002   broadcaststatus.cpp
00003 
00004   This file is part of KDEPIM.
00005 
00006   Author: Don Sanders <sanders@kde.org>
00007 
00008   Copyright (C) 2000 Don Sanders <sanders@kde.org>
00009 
00010   License GPL
00011 */
00012 
00013 #ifdef HAVE_CONFIG_H
00014 #include <config.h>
00015 #endif
00016 
00017 #include <qdatetime.h>
00018 
00019 #include <klocale.h>
00020 #include <kglobal.h>
00021 #include <kstaticdeleter.h>
00022 
00023 #include "broadcaststatus.h"
00024 #include "progressmanager.h"
00025 
00026 KPIM::BroadcastStatus* KPIM::BroadcastStatus::instance_ = 0;
00027 static KStaticDeleter<KPIM::BroadcastStatus> broadcastStatusDeleter;
00028 
00029 namespace KPIM {
00030 
00031 BroadcastStatus* BroadcastStatus::instance()
00032 {
00033   if (!instance_)
00034     broadcastStatusDeleter.setObject( instance_, new BroadcastStatus() );
00035 
00036   return instance_;
00037 }
00038 
00039 BroadcastStatus::BroadcastStatus()
00040   :mTransientActive( false )
00041 {
00042 }
00043 
00044 BroadcastStatus::~BroadcastStatus()
00045 {
00046   instance_ = 0;
00047 }
00048 
00049 void BroadcastStatus::setStatusMsg( const QString& message )
00050 {
00051   mStatusMsg = message;
00052   if( !mTransientActive )
00053     emit statusMsg( message );
00054 }
00055 
00056 void BroadcastStatus::setStatusMsgWithTimestamp( const QString& message )
00057 {
00058   KLocale* locale = KGlobal::locale();
00059   setStatusMsg( i18n( "%1 is a time, %2 is a status message", "[%1] %2" )
00060                 .arg( locale->formatTime( QTime::currentTime(),
00061                                           true /* with seconds */ ) )
00062                 .arg( message ) );
00063 }
00064 
00065 void BroadcastStatus::setStatusMsgTransmissionCompleted( int numMessages,
00066                                                            int numBytes,
00067                                                            int numBytesRead,
00068                                                            int numBytesToRead,
00069                                                            bool mLeaveOnServer,
00070                                                            KPIM::ProgressItem* item )
00071 {
00072   QString statusMsg;
00073   if( numMessages > 0 ) {
00074     if( numBytes != -1 ) {
00075       if( ( numBytesToRead != numBytes ) && mLeaveOnServer )
00076         statusMsg = i18n( "Transmission complete. %n new message in %1 KB "
00077                           "(%2 KB remaining on the server).",
00078                           "Transmission complete. %n new messages in %1 KB "
00079                           "(%2 KB remaining on the server).",
00080                           numMessages )
00081                     .arg( numBytesRead / 1024 )
00082                     .arg( numBytes / 1024 );
00083       else
00084         statusMsg = i18n( "Transmission complete. %n message in %1 KB.",
00085                          "Transmission complete. %n messages in %1 KB.",
00086                           numMessages )
00087                     .arg( numBytesRead / 1024 );
00088     }
00089     else
00090       statusMsg = i18n( "Transmission complete. %n new message.",
00091                         "Transmission complete. %n new messages.",
00092                         numMessages );
00093   }
00094   else
00095     statusMsg = i18n( "Transmission complete. No new messages." );
00096 
00097   setStatusMsgWithTimestamp( statusMsg );
00098   if ( item )
00099     item->setStatus( statusMsg );
00100 }
00101 
00102 void BroadcastStatus::setStatusMsgTransmissionCompleted( const QString& account,
00103                                                            int numMessages,
00104                                                            int numBytes,
00105                                                            int numBytesRead,
00106                                                            int numBytesToRead,
00107                                                            bool mLeaveOnServer,
00108                                                            KPIM::ProgressItem* item )
00109 {
00110   QString statusMsg;
00111   if( numMessages > 0 ) {
00112     if( numBytes != -1 ) {
00113       if( ( numBytesToRead != numBytes ) && mLeaveOnServer )
00114         statusMsg = i18n( "Transmission for account %3 complete. "
00115                           "%n new message in %1 KB "
00116                           "(%2 KB remaining on the server).",
00117                           "Transmission for account %3 complete. "
00118                           "%n new messages in %1 KB "
00119                           "(%2 KB remaining on the server).",
00120                           numMessages )
00121                     .arg( numBytesRead / 1024 )
00122                     .arg( numBytes / 1024 )
00123                     .arg( account );
00124       else
00125         statusMsg = i18n( "Transmission for account %2 complete. "
00126                           "%n message in %1 KB.",
00127                           "Transmission for account %2 complete. "
00128                           "%n messages in %1 KB.",
00129                           numMessages )
00130                     .arg( numBytesRead / 1024 )
00131                     .arg( account );
00132     }
00133     else
00134       statusMsg = i18n( "Transmission for account %1 complete. "
00135                         "%n new message.",
00136                         "Transmission for account %1 complete. "
00137                         "%n new messages.",
00138                         numMessages )
00139                   .arg( account );
00140   }
00141   else
00142     statusMsg = i18n( "Transmission for account %1 complete. No new messages.")
00143                 .arg( account );
00144 
00145   setStatusMsgWithTimestamp( statusMsg );
00146   if ( item )
00147     item->setStatus( statusMsg );
00148 }
00149 
00150 void BroadcastStatus::setTransientStatusMsg( const QString& msg )
00151 {
00152   mTransientActive = true;
00153   emit statusMsg( msg );
00154 }
00155 
00156 void BroadcastStatus::reset()
00157 {
00158   mTransientActive = false;
00159   // restore
00160   emit statusMsg( mStatusMsg );
00161 }
00162 
00163 }
00164 
00165 #include "broadcaststatus.moc"
KDE Home | KDE Accessibility Home | Description of Access Keys