[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