Use K_GLOBAL_STATIC instead of K3StaticDeleter everywhere in kmail.

svn path=/trunk/KDE/kdepim/; revision=773017
wilder-work
Ingo Klcker 18 years ago
parent dc1f65bb61
commit e20ee786b6
  1. 29
      antispamconfig.cpp
  2. 5
      antispamconfig.h
  3. 22
      kmmainwidget.cpp
  4. 5
      kmmainwidget.h
  5. 28
      kmmsgdict.cpp
  6. 7
      kmmsgdict.h

@ -34,25 +34,36 @@
#include "antispamconfig.h"
#include <kascii.h>
#include <k3staticdeleter.h>
#include <kconfig.h>
#include <kconfiggroup.h>
#include <kglobal.h>
#include <QStringList>
using namespace KMail;
AntiSpamConfig * AntiSpamConfig::sSelf = 0;
static K3StaticDeleter<AntiSpamConfig> antispamconfig_sd;
AntiSpamConfig * AntiSpamConfig::instance() {
if ( !sSelf ) {
antispamconfig_sd.setObject( sSelf, new AntiSpamConfig() );
sSelf->readConfig();
namespace KMail {
class AntiSpamConfigSingletonProvider
{
public:
AntiSpamConfig instance;
};
}
K_GLOBAL_STATIC( AntiSpamConfigSingletonProvider, theAntiSpamConfigSingletonProvider )
AntiSpamConfig * AntiSpamConfig::instance()
{
// better safe than sorry; check whether the global static has already been destroyed
if ( theAntiSpamConfigSingletonProvider.isDestroyed() )
{
return 0;
}
return sSelf;
return &theAntiSpamConfigSingletonProvider->instance;
}
void AntiSpamConfig::readConfig()
{
mAgents.clear();

@ -77,6 +77,8 @@ namespace KMail {
typedef QList<SpamAgent> SpamAgents;
typedef QList<SpamAgent>::Iterator SpamAgentsIterator;
class AntiSpamConfigSingletonProvider;
/**
@short Singleton to manage loading the kmail.antispamrc file.
@author Patrick Audley <paudley@blackcat.ca>
@ -87,9 +89,8 @@ namespace KMail {
public member functions.
*/
class AntiSpamConfig {
friend class AntiSpamConfigSingletonProvider;
private:
static AntiSpamConfig * sSelf;
AntiSpamConfig() {}
public:

@ -47,6 +47,7 @@
#include <kactionmenu.h>
#include <kmenu.h>
#include <kacceleratormanager.h>
#include <kglobal.h>
#include <kglobalsettings.h>
#include <kstandardshortcut.h>
#include <kshortcutsdialog.h>
@ -65,7 +66,6 @@
#include <ktoolinvocation.h>
#include <kxmlguifactory.h>
#include <kstatusbar.h>
#include <k3staticdeleter.h>
#include <kaction.h>
#include <kvbox.h>
@ -150,8 +150,7 @@ using KMail::TemplateParser;
#include "kmmainwidget.moc"
QList<KMMainWidget*>* KMMainWidget::s_mainWidgetList = 0;
static K3StaticDeleter<QList<KMMainWidget*> > mwlsd;
K_GLOBAL_STATIC( KMMainWidget::PtrList, theMainWidgetList )
static const int defaultMinimumWidth = 400;
static const int defaultMinimumHeight = 300;
@ -206,9 +205,7 @@ KMMainWidget::KMMainWidget( QWidget *parent, KXMLGUIClient *aGUIClient,
mMessageTagToolbarActionSeparator = new QAction( this );
mMessageTagToolbarActionSeparator->setSeparator( true );
if( !s_mainWidgetList )
mwlsd.setObject( s_mainWidgetList, new QList<KMMainWidget*>() );
s_mainWidgetList->append( this );
theMainWidgetList->append( this );
setMinimumSize( defaultMinimumWidth, defaultMinimumHeight );
@ -274,7 +271,7 @@ KMMainWidget::KMMainWidget( QWidget *parent, KXMLGUIClient *aGUIClient,
//perform all cleanup that requires the kernel in destruct()
KMMainWidget::~KMMainWidget()
{
s_mainWidgetList->removeAll( this );
theMainWidgetList->removeAll( this );
qDeleteAll( mFilterCommands );
destruct();
}
@ -4162,6 +4159,17 @@ void KMMainWidget::setAccelsEnabled( bool enabled )
mAccel->setEnabled( enabled );
}
//-----------------------------------------------------------------------------
const KMMainWidget::PtrList * KMMainWidget::mainWidgetList()
{
// better safe than sorry; check whether the global static has already been destroyed
if ( theMainWidgetList.isDestroyed() )
{
return 0;
}
return theMainWidgetList;
}
//-----------------------------------------------------------------------------
KMSystemTray *KMMainWidget::systray() const
{

@ -89,6 +89,8 @@ class KMAIL_EXPORT KMMainWidget : public QWidget
Q_OBJECT
public:
typedef QList<KMMainWidget*> PtrList;
KMMainWidget(QWidget *parent, KXMLGUIClient *aGUIClient,
KActionCollection *actionCollection,
KConfig *config = KMKernel::config() );
@ -156,7 +158,7 @@ class KMAIL_EXPORT KMMainWidget : public QWidget
Returns a list of all KMMainWidgets. Warning, the list itself can be 0.
@return the list of all main widgets, or 0 if it is not yet initialized
*/
static const QList<KMMainWidget*>* mainWidgetList() { return s_mainWidgetList; }
static const PtrList *mainWidgetList();
KMSystemTray *systray() const;
@ -597,7 +599,6 @@ class KMAIL_EXPORT KMMainWidget : public QWidget
KMail::MessageActions *mMsgActions;
static QList<KMMainWidget*> *s_mainWidgetList;
bool mOpenedImapFolder;
Q3Accel *mAccel;

@ -10,7 +10,7 @@
#include <kdebug.h>
#include <kde_file.h>
#include <k3staticdeleter.h>
#include <kglobal.h>
#include <QFileInfo>
#include <Q3MemArray>
@ -141,8 +141,13 @@ public:
};
static K3StaticDeleter<KMMsgDict> msgDict_sd;
KMMsgDict * KMMsgDict::m_self = 0;
class KMMsgDictSingletonProvider
{
public:
KMMsgDict instance;
};
K_GLOBAL_STATIC( KMMsgDictSingletonProvider, theKMMsgDictSingletonProvider )
//-----------------------------------------------------------------------------
@ -153,7 +158,6 @@ KMMsgDict::KMMsgDict()
GlobalSettings::self()->setMsgDictSizeHint( 0 );
dict = new KMDict( lastSizeOfDict );
nextMsgSerNum = 1;
m_self = this;
}
//-----------------------------------------------------------------------------
@ -167,18 +171,22 @@ KMMsgDict::~KMMsgDict()
const KMMsgDict* KMMsgDict::instance()
{
if ( !m_self ) {
msgDict_sd.setObject( m_self, new KMMsgDict() );
// better safe than sorry; check whether the global static has already been destroyed
if ( theKMMsgDictSingletonProvider.isDestroyed() )
{
return 0;
}
return m_self;
return &theKMMsgDictSingletonProvider->instance;
}
KMMsgDict* KMMsgDict::mutableInstance()
{
if ( !m_self ) {
msgDict_sd.setObject( m_self, new KMMsgDict() );
// better safe than sorry; check whether the global static has already been destroyed
if ( theKMMsgDictSingletonProvider.isDestroyed() )
{
return 0;
}
return m_self;
return &theKMMsgDictSingletonProvider->instance;
}
//-----------------------------------------------------------------------------

@ -30,6 +30,8 @@ class KMDict;
class QString;
class FolderStorage;
class KMMsgDictSingletonProvider;
/**
* @short KMail message dictionary. Keeps location information for every
* message. The message serial number is the key for the dictionary.
@ -49,7 +51,7 @@ class FolderStorage;
*/
class KMMsgDict
{
template<class> friend class K3StaticDeleter;
friend class KMMsgDictSingletonProvider;
public:
/** Access the globally unique MessageDict */
static const KMMsgDict* instance();
@ -158,9 +160,6 @@ private:
/** The dictionary. */
KMDict *dict;
/** The singleton instance */
static KMMsgDict *m_self;
};
#endif /* __KMMSGDICT */

Loading…
Cancel
Save