[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdepim
From:       Volker Krause <vkrause () kde ! org>
Date:       2010-12-05 11:33:44
Message-ID: 20101205113344.9F454AC8A6 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1203745 by vkrause:

Change the delayed initialization to be more robust against interference
from sub-eventloops based on David's suggestions. Should fix Sabine's
composer crash and might fix a similar problem Till is seeing on WinCE.


 M  +1 -2      kleopatra/mainwindow_mobile.cpp  
 M  +1 -3      kleopatra/mainwindow_mobile.h  
 M  +1 -2      mobile/calendar/mainview.cpp  
 M  +1 -1      mobile/calendar/mainview.h  
 M  +1 -3      mobile/contacts/contacteditorview.cpp  
 M  +1 -3      mobile/contacts/contacteditorview.h  
 M  +1 -3      mobile/contacts/contactgroupeditorview.cpp  
 M  +1 -3      mobile/contacts/contactgroupeditorview.h  
 M  +1 -2      mobile/contacts/mainview.cpp  
 M  +1 -3      mobile/contacts/mainview.h  
 M  +1 -2      mobile/lib/calendar/incidenceview.cpp  
 M  +1 -3      mobile/lib/calendar/incidenceview.h  
 M  +6 -3      mobile/lib/kdeclarativefullscreenview.cpp  
 M  +5 -3      mobile/lib/kdeclarativefullscreenview.h  
 M  +1 -3      mobile/lib/kdeclarativemainview.cpp  
 M  +1 -1      mobile/lib/kdeclarativemainview.h  
 M  +1 -3      mobile/mail/composerview.cpp  
 M  +1 -3      mobile/mail/composerview.h  
 M  +1 -3      mobile/mail/mainview.cpp  
 M  +1 -1      mobile/mail/mainview.h  
 M  +1 -2      mobile/notes/mainview.cpp  
 M  +1 -3      mobile/notes/mainview.h  
 M  +1 -2      mobile/tasks/mainview.cpp  
 M  +1 -3      mobile/tasks/mainview.h  


--- trunk/KDE/kdepim/kleopatra/mainwindow_mobile.cpp #1203744:1203745
@@ -300,10 +300,9 @@
     controller.createActions( coll );
 }
 
-void MainWindow::delayedInit() {
+void MainWindow::doDelayedInit() {
     qmlRegisterType<KeyTreeViewItem>( "org.kde.kleopatra", 2, 1, "KeyTreeView" );
     qmlRegisterType<SearchBarItem>  ( "org.kde.kleopatra", 2, 1, "SearchBar"   );
-    KDeclarativeFullScreenView::delayedInit();
     d->setupActions();
     engine()->rootContext()->setContextProperty( "application", QVariant::fromValue( \
static_cast<QObject*>( this ) ) );  }
--- trunk/KDE/kdepim/kleopatra/mainwindow_mobile.h #1203744:1203745
@@ -53,10 +53,8 @@
 public Q_SLOTS:
     void importCertificatesFromFile( const QStringList & files );
 
-protected Q_SLOTS:
-    /* reimp */ void delayedInit();
-
 protected:
+    /* reimp */ void doDelayedInit();
     /* reimp */ void closeEvent( QCloseEvent * );
     /* reimp */ void keyPressEvent( QKeyEvent * );
 
--- trunk/KDE/kdepim/mobile/calendar/mainview.cpp #1203744:1203745
@@ -117,9 +117,8 @@
   return m_calendarPrefs;
 }
 
-void MainView::delayedInit()
+void MainView::doDelayedInit()
 {
-  KDeclarativeMainView::delayedInit();
   setWindowTitle( i18n( "Calendar" ) );
 
   addMimeType( KCalCore::Event::eventMimeType() );
--- trunk/KDE/kdepim/mobile/calendar/mainview.h #1203744:1203745
@@ -96,7 +96,6 @@
     void changeCalendarColor();
 
   protected Q_SLOTS:
-    void delayedInit();
     void qmlLoadingStateChanged( QDeclarativeView::Status status );
 
   private Q_SLOTS:
@@ -108,6 +107,7 @@
     void updateActionTexts();
 
   protected:
+    void doDelayedInit();
     virtual void setupStandardActionManager( QItemSelectionModel \
                *collectionSelectionModel,
                                              QItemSelectionModel *itemSelectionModel \
);  
--- trunk/KDE/kdepim/mobile/contacts/contacteditorview.cpp #1203744:1203745
@@ -210,10 +210,8 @@
   setWindowTitle( i18n( "KDE Contacts" ) );
 }
 
-void ContactEditorView::delayedInit()
+void ContactEditorView::doDelayedInit()
 {
-  KDeclarativeFullScreenView::delayedInit();
-
   qmlRegisterType<DeclarativeEditorGeneral>( "org.kde.contacteditors", 4, 5, \
"ContactEditorGeneral" );  qmlRegisterType<DeclarativeEditorBusiness>( \
"org.kde.contacteditors", 4, 5, "ContactEditorBusiness" );  \
qmlRegisterType<DeclarativeEditorLocation>( "org.kde.contacteditors", 4, 5, \
                "ContactEditorLocation" );
--- trunk/KDE/kdepim/mobile/contacts/contacteditorview.h #1203744:1203745
@@ -63,10 +63,8 @@
 
   protected:
     void closeEvent( QCloseEvent *event );
+    virtual void doDelayedInit();
 
-  protected slots:
-    virtual void delayedInit();
-
   private:
     class Private;
     Private *const d;
--- trunk/KDE/kdepim/mobile/contacts/contactgroupeditorview.cpp #1203744:1203745
@@ -166,10 +166,8 @@
   setWindowTitle( i18n( "KDE Contacts" ) );
 }
 
-void ContactGroupEditorView::delayedInit()
+void ContactGroupEditorView::doDelayedInit()
 {
-  KDeclarativeFullScreenView::delayedInit();
-
   qmlRegisterType<DeclarativeEditorContactGroup>( "org.kde.contacteditors", 4, 5, \
"ContactGroupEditor" );  
   connect( d->mItemManager, SIGNAL( itemSaveFinished( \
                IncidenceEditorNG::EditorItemManager::SaveAction ) ),
--- trunk/KDE/kdepim/mobile/contacts/contactgroupeditorview.h #1203744:1203745
@@ -51,10 +51,8 @@
 
   protected:
     void closeEvent( QCloseEvent *event );
+    virtual void doDelayedInit();
 
-  protected slots:
-    virtual void delayedInit();
-
   private:
     class Private;
     Private *const d;
--- trunk/KDE/kdepim/mobile/contacts/mainview.cpp #1203744:1203745
@@ -61,7 +61,7 @@
 {
 }
 
-void MainView::delayedInit()
+void MainView::doDelayedInit()
 {
   qmlRegisterType<Akonadi::Contact::ContactViewItem>( "org.kde.akonadi.contacts", 4, \
5, "ContactView" );  qmlRegisterType<Akonadi::Contact::ContactGroupViewItem>( \
"org.kde.akonadi.contacts", 4, 5, "ContactGroupView" ); @@ -73,7 +73,6 @@
   provider->setModel( itemModel() );
   engine()->addImageProvider( QLatin1String( "contact_images" ), provider );
 
-  KDeclarativeMainView::delayedInit();
   setWindowTitle( i18n( "Contacts" ) );
 
   addMimeType( KABC::Addressee::mimeType() );
--- trunk/KDE/kdepim/mobile/contacts/mainview.h #1203744:1203745
@@ -48,9 +48,6 @@
     void editContact( const Akonadi::Item &item );
     void editContactGroup( const Akonadi::Item &item );
 
-  protected Q_SLOTS:
-    virtual void delayedInit();
-
   private Q_SLOTS:
     void finishEdit( QObject *editor );
     void itemSelectionChanged( const QItemSelection &selected, const QItemSelection& \
); @@ -59,6 +56,7 @@
     void updateActionTexts();
 
   protected:
+    virtual void doDelayedInit();
     virtual void setupStandardActionManager( QItemSelectionModel \
                *collectionSelectionModel,
                                              QItemSelectionModel *itemSelectionModel \
);  
--- trunk/KDE/kdepim/mobile/lib/calendar/incidenceview.cpp #1203744:1203745
@@ -76,9 +76,8 @@
   context->setContextProperty( "_incidenceview", this );
 }
 
-void IncidenceView::delayedInit()
+void IncidenceView::doDelayedInit()
 {
-  KDeclarativeFullScreenView::delayedInit();
   qmlRegisterType<DCollectionCombo>( "org.kde.incidenceeditors", 4, 5, \
"CollectionCombo" );  qmlRegisterType<DIEGeneral>( "org.kde.incidenceeditors", 4, 5, \
"GeneralEditor" );  qmlRegisterType<DIEMore>( "org.kde.incidenceeditors", 4, 5, \
                "MoreEditor" );
--- trunk/KDE/kdepim/mobile/lib/calendar/incidenceview.h #1203744:1203745
@@ -84,15 +84,13 @@
     void showClock( QObject *obj );
     void setNewTime( int hour, int minute );
 
-  protected slots:
-    void delayedInit();
-
   private slots:
     void slotSaveFinished( IncidenceEditorNG::EditorItemManager::SaveAction action \
                );
     void slotSaveFailed( IncidenceEditorNG::EditorItemManager::SaveAction action,
                          const QString &message );
 
   private:
+    void doDelayedInit();
     void initIncidenceMore();
 
   private:
--- trunk/KDE/kdepim/mobile/lib/kdeclarativefullscreenview.cpp #1203744:1203745
@@ -140,9 +140,6 @@
   if ( qmlPath.isEmpty() ) // Try harder
     qmlPath = KStandardDirs::locate( "data", QLatin1String( "mobileui" ) + \
QDir::separator() + m_qmlFileName + ".qml" );  
-  // call setSource() only once our derived classes have set up everything
-  QMetaObject::invokeMethod( this, "setQmlFile", Qt::QueuedConnection, Q_ARG( \
                QString, qmlPath ) );
-
   // TODO: Get this from a KXMLGUIClient?
   mActionCollection = new KActionCollection( this );
 
@@ -155,6 +152,12 @@
   if ( debugTiming ) {
     kWarning() << "KDeclarativeFullScreenView ctor done" << t.elapsed() << &t << \
QDateTime::currentDateTime();  }
+
+  doDelayedInitInternal();
+  doDelayedInit(); // let sub-classes do their init work
+
+  // call setSource() only once our derived classes have set up everything
+  QMetaObject::invokeMethod( this, "setQmlFile", Qt::QueuedConnection, Q_ARG( \
QString, qmlPath ) );  }
 
 KDeclarativeFullScreenView::~KDeclarativeFullScreenView()
--- trunk/KDE/kdepim/mobile/lib/kdeclarativefullscreenview.h #1203744:1203745
@@ -69,13 +69,15 @@
     
     KActionCollection* actionCollection() const;
 
-  protected Q_SLOTS:
+  protected:
     /** Most initialization work should be done here instead of the ctor.
-     * @note: Remember to call the base class implementation when overwriting this.
      */
-    virtual void delayedInit();
+    virtual void doDelayedInit() = 0;
+    /** This is for KDeclarativeFullScreenView, don't touch! */
+    virtual void doDelayedInitInternal() {}
 
   private Q_SLOTS:
+    void delayedInit();
     void setQmlFile( const QString &source );
     void slotStatusChanged ( QDeclarativeView::Status );
 
--- trunk/KDE/kdepim/mobile/lib/kdeclarativemainview.cpp #1203744:1203745
@@ -145,14 +145,12 @@
            d, SLOT( searchStopped() ) );
 }
 
-void KDeclarativeMainView::delayedInit()
+void KDeclarativeMainView::doDelayedInitInternal()
 {
   qmlRegisterType<DeclarativeFilterLineEdit>( "org.kde.akonadi", 4, 5, \
"FilterLineEdit" );  qmlRegisterType<DeclarativeBulkActionFilterLineEdit>( \
"org.kde.akonadi", 4, 5, "BulkActionFilterLineEdit" );  \
qmlRegisterUncreatableType<GuiStateManager>( "org.kde.pim.mobileui", 4, 5, \
"GuiStateManager", QLatin1String( "This type is only exported for its enums" ) );  
-  KDeclarativeFullScreenView::delayedInit();
-
   static const bool debugTiming = KCmdLineArgs::parsedArgs()->isSet( "timeit" );
 
   QTime time;
--- trunk/KDE/kdepim/mobile/lib/kdeclarativemainview.h #1203744:1203745
@@ -273,7 +273,6 @@
     virtual bool useFilterLineEditInCurrentState() const;
 
   protected Q_SLOTS:
-    void delayedInit();
     void breadcrumbsSelectionChanged();
     void itemSelectionChanged();
 
@@ -303,6 +302,7 @@
     void setItemNaigationAndActionSelectionModels( QItemSelectionModel \
*itemNavigationSelectionModel, QItemSelectionModel *itemActionSelectionModel );  
   private:
+    void doDelayedInitInternal();
     KDeclarativeMainViewPrivate * const d;
     Q_DISABLE_COPY( KDeclarativeMainView )
 
--- trunk/KDE/kdepim/mobile/mail/composerview.cpp #1203744:1203745
@@ -94,11 +94,9 @@
   setAttribute(Qt::WA_DeleteOnClose);
 }
 
-void ComposerView::delayedInit()
+void ComposerView::doDelayedInit()
 {
   kDebug();
-  KDeclarativeFullScreenView::delayedInit();
-
   qmlRegisterType<DeclarativeEditor>( "org.kde.messagecomposer", 4, 5, "Editor" );
   qmlRegisterType<DeclarativeIdentityComboBox>( "org.kde.kpimidentities", 4, 5, \
"IdentityComboBox" );  qmlRegisterType<DeclarativeRecipientsEditor>( \
                "org.kde.messagecomposer", 4, 5, "RecipientsEditor" );
--- trunk/KDE/kdepim/mobile/mail/composerview.h #1203744:1203745
@@ -100,9 +100,6 @@
     void cryptoStateChanged();
     void recipientsCountChanged();
 
-  protected slots:
-    void delayedInit();
-
   private slots:
     void qmlLoaded ( QDeclarativeView::Status );
     void success();
@@ -123,6 +120,7 @@
     void saveAsTemplate();
 
  protected:
+    void doDelayedInit();
     void closeEvent ( QCloseEvent * event );
 
   private:
--- trunk/KDE/kdepim/mobile/mail/mainview.cpp #1203744:1203745
@@ -293,10 +293,8 @@
 }
 
 
-void MainView::delayedInit()
+void MainView::doDelayedInit()
 {
-  KDeclarativeMainView::delayedInit();
-
   static const bool debugTiming = KCmdLineArgs::parsedArgs()->isSet( "timeit" );
   MobileKernel::self()->setFolderCollectionMonitor( monitor() );
 
--- trunk/KDE/kdepim/mobile/mail/mainview.h #1203744:1203745
@@ -121,7 +121,6 @@
     void currentCollectionChanged();
 
   protected slots:
-    void delayedInit();
     void forwardMessage();
     void forwardAsAttachment();
     void redirect();
@@ -150,6 +149,7 @@
     void collectionSelectionChanged();
 
   protected:
+    void doDelayedInit();
     virtual void setupStandardActionManager( QItemSelectionModel \
                *collectionSelectionModel,
                                              QItemSelectionModel *itemSelectionModel \
);  
--- trunk/KDE/kdepim/mobile/notes/mainview.cpp #1203744:1203745
@@ -64,9 +64,8 @@
 {
 }
 
-void MainView::delayedInit()
+void MainView::doDelayedInit()
 {
-  KDeclarativeMainView::delayedInit();
   setWindowTitle( i18n( "Notes" ) );
 
   qmlRegisterType<DeclarativeSearchWidget>( "org.kde.akonadi.notes", 4, 5, \
                "SearchWidget" );
--- trunk/KDE/kdepim/mobile/notes/mainview.h #1203744:1203745
@@ -43,10 +43,8 @@
 
     void startComposer();
 
-  protected slots:
-    virtual void delayedInit();
-
   protected:
+    virtual void doDelayedInit();
     virtual void setupStandardActionManager( QItemSelectionModel \
                *collectionSelectionModel,
                                              QItemSelectionModel *itemSelectionModel \
);  
--- trunk/KDE/kdepim/mobile/tasks/mainview.cpp #1203744:1203745
@@ -91,9 +91,8 @@
   mCalendarPrefs->writeConfig();
 }
 
-void MainView::delayedInit()
+void MainView::doDelayedInit()
 {
-  KDeclarativeMainView::delayedInit();
   setWindowTitle( i18n( "Tasks" ) );
 
   addMimeType( KCalCore::Todo::todoMimeType() );
--- trunk/KDE/kdepim/mobile/tasks/mainview.h #1203744:1203745
@@ -63,9 +63,6 @@
     void editIncidence( const Akonadi::Item &item );
     void saveAllAttachments();
 
-  protected slots:
-    virtual void delayedInit();
-
   private slots:
     void finishEdit( QObject *editor );
     void fetchForSaveAllAttachmentsDone( KJob* job );
@@ -75,6 +72,7 @@
     void updateActionTexts();
 
   protected:
+    virtual void doDelayedInit();
     virtual QAbstractItemModel* createItemModelContext( QDeclarativeContext \
                *context, QAbstractItemModel *model );
     virtual void setupStandardActionManager( QItemSelectionModel \
                *collectionSelectionModel,
                                              QItemSelectionModel *itemSelectionModel \
);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic