[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/kexi
From: Jarosław Staniek <staniek () kde ! org>
Date: 2010-11-24 13:09:18
Message-ID: 20101124130918.E6482AC8A2 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1200253 by staniek:
Core
*set ownership of SchemaData objects to KexiWindow if plain schema data was created \
(always the case except for Tables and Queries)
M +10 -1 core/KexiWindow.cpp
M +8 -2 core/KexiWindow.h
M +15 -4 core/kexipart.cpp
M +12 -2 core/kexipart.h
M +6 -3 plugins/queries/kexiquerypart.cpp
M +2 -2 plugins/queries/kexiquerypart.h
M +5 -4 plugins/tables/kexitablepart.cpp
M +1 -1 plugins/tables/kexitablepart.h
--- trunk/koffice/kexi/core/KexiWindow.cpp #1200252:1200253
@@ -1,6 +1,6 @@
/* This file is part of the KDE project
Copyright (C) 2003 Lucijan Busch <lucijan@kde.org>
- Copyright (C) 2003-2007 Jarosław Staniek <staniek@kde.org>
+ Copyright (C) 2003-2010 Jarosław Staniek <staniek@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -57,6 +57,7 @@
Private()
// : viewModeGroup(0)
: schemaData(0)
+ , schemaDataOwned(false)
, isRegistered(false)
, dirtyChangedEnabled(true)
, switchToViewModeEnabled(true) {
@@ -72,6 +73,8 @@
// delete d->stack;
// d->stack = 0;
// qDeleteAll(sharedViewActions);
+ if (schemaDataOwned)
+ delete schemaData;
}
inline int indexForView(int mode) const {
@@ -105,6 +108,7 @@
KexiPart::Item *item;
// QString origCaption; //!< helper
KexiDB::SchemaData* schemaData;
+ bool schemaDataOwned;
QPointer<KexiView> newlySelectedView; //!< Used in isDirty(), temporary set in \
switchToViewMode() //!< during view setup, when a new view is not yet raised.
//! Used in viewThatRecentlySetDirtyFlag(), modified in dirtyChanged().
@@ -771,6 +775,11 @@
return d->schemaData;
}
+void KexiWindow::setSchemaDataOwned(bool set)
+{
+ d->schemaDataOwned = set;
+}
+
KexiWindowData *KexiWindow::data() const
{
return d->data;
--- trunk/koffice/kexi/core/KexiWindow.h #1200252:1200253
@@ -1,6 +1,6 @@
/* This file is part of the KDE project
Copyright (C) 2003 Lucijan Busch <lucijan@kde.org>
- Copyright (C) 2003-2007 Jarosław Staniek <staniek@kde.org>
+ Copyright (C) 2003-2010 Jarosław Staniek <staniek@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -192,7 +192,13 @@
void setSchemaData(KexiDB::SchemaData* schemaData);
- /*! Reimpelmented: "*" is added if for 'dirty' dialog's data. */
+ //! Sets 'owned' property for schema data.
+ //! If true, the window will delete the schema data before destruction.
+ //! By default schema data is not owned.
+ //! @see setSchemaData(), KexiPart::loadSchemaData(), \
KexiPart::loadAndSetSchemaData() + void setSchemaDataOwned(bool set);
+
+ /*! Reimplemented: "*" is added if for 'dirty' dialog's data. */
// QString caption() const;
/*! Used by KexiView subclasses. \return temporary data shared between
--- trunk/koffice/kexi/core/kexipart.cpp #1200252:1200253
@@ -1,6 +1,6 @@
/* This file is part of the KDE project
Copyright (C) 2003 Lucijan Busch <lucijan@kde.org>
- Copyright (C) 2003-2007 Jarosław Staniek <staniek@kde.org>
+ Copyright (C) 2003-2010 Jarosław Staniek <staniek@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -294,7 +294,7 @@
if (!item.neverSaved()) {
//we have to load schema data for this dialog
- window->setSchemaData(loadSchemaData(window, sdata, viewMode));
+ loadAndSetSchemaData(window, sdata, viewMode);
if (!window->schemaData()) {
//last chance:
if (false == d->askForOpeningInTextMode(
@@ -303,7 +303,7 @@
return 0;
}
viewMode = Kexi::TextViewMode;
- window->setSchemaData(loadSchemaData(window, sdata, viewMode));
+ loadAndSetSchemaData(window, sdata, viewMode);
}
if (!window->schemaData()) {
if (!d->status.error())
@@ -382,15 +382,26 @@
}
KexiDB::SchemaData* Part::loadSchemaData(KexiWindow *window, const \
KexiDB::SchemaData& sdata,
- Kexi::ViewMode viewMode)
+ Kexi::ViewMode viewMode, bool *ownedByWindow)
{
Q_UNUSED(window);
Q_UNUSED(viewMode);
KexiDB::SchemaData *new_schema = new KexiDB::SchemaData();
*new_schema = sdata;
+ if (ownedByWindow)
+ *ownedByWindow = true;
return new_schema;
}
+void Part::loadAndSetSchemaData(KexiWindow *window, const KexiDB::SchemaData& sdata,
+ Kexi::ViewMode viewMode)
+{
+ bool schemaDataOwned = true;
+ KexiDB::SchemaData* sd = loadSchemaData(window, sdata, viewMode, \
&schemaDataOwned); + window->setSchemaData(sd);
+ window->setSchemaDataOwned(schemaDataOwned);
+}
+
bool Part::loadDataBlock(KexiWindow *window, QString &dataString, const QString& \
dataID) {
if (!KexiMainWindowIface::global()->project()->dbConnection()->loadDataBlock(
--- trunk/koffice/kexi/core/kexipart.h #1200252:1200253
@@ -1,6 +1,6 @@
/* This file is part of the KDE project
Copyright (C) 2003 Lucijan Busch <lucijan@kde.org>
- Copyright (C) 2003-2007 Jarosław Staniek <staniek@kde.org>
+ Copyright (C) 2003-2010 Jarosław Staniek <staniek@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -287,8 +287,13 @@
virtual void initPartActions();
virtual void initInstanceActions();
+ /*! Can be reimplemented if schema data is extended behind the default set of \
properties. + This is the case for table and query schema objects,
+ where object of KexiDB::SchemaData subclass is returned.
+ In this case value pointed by @a ownedByWindow is set to false.
+ Default implemenatation owned (value pointed by @a ownedByWindow is set to \
true). */ virtual KexiDB::SchemaData* loadSchemaData(KexiWindow *window,
- const KexiDB::SchemaData& sdata, Kexi::ViewMode viewMode);
+ const KexiDB::SchemaData& sdata, Kexi::ViewMode viewMode, bool \
*ownedByWindow);
bool loadDataBlock(KexiWindow *window, QString &dataString, const QString& \
dataID = QString());
@@ -343,6 +348,11 @@
// KAction* sharedViewAction(const char* name) const;
private:
+ //! Calls loadSchemaData() (virtual), updates ownership of schema data for @a \
window + //! and assigns the created data to @a window.
+ void loadAndSetSchemaData(KexiWindow *window, const KexiDB::SchemaData& sdata,
+ Kexi::ViewMode viewMode);
+
class Private;
Private * const d;
--- trunk/koffice/kexi/plugins/queries/kexiquerypart.cpp #1200252:1200253
@@ -1,6 +1,6 @@
/* This file is part of the KDE project
Copyright (C) 2004 Lucijan Busch <lucijan@kde.org>
- Copyright (C) 2004,2006 Jarosław Staniek <staniek@kde.org>
+ Copyright (C) 2004-2010 Jarosław Staniek <staniek@kde.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -161,7 +161,8 @@
}
KexiDB::SchemaData* KexiQueryPart::loadSchemaData(
- KexiWindow *window, const KexiDB::SchemaData& sdata, Kexi::ViewMode viewMode)
+ KexiWindow *window, const KexiDB::SchemaData& sdata, Kexi::ViewMode viewMode,
+ bool *ownedByWindow)
{
KexiQueryPart::TempData * temp = \
static_cast<KexiQueryPart::TempData*>(window->data()); QString sqlText;
@@ -176,7 +177,7 @@
if (viewMode == Kexi::TextViewMode) {
//for SQL view, no parsing is initially needed:
//-just make a copy:
- return KexiPart::Part::loadSchemaData(window, sdata, viewMode);
+ return KexiPart::Part::loadSchemaData(window, sdata, viewMode, \
ownedByWindow); }
/* Set this to true on data loading loadSchemaData() to indicate that \
TextView mode
could be used instead of DataView or DesignView, because there are problems
@@ -189,6 +190,8 @@
(KexiDB::SchemaData&)*query = sdata; //copy main attributes
temp->registerTableSchemaChanges(query);
+ if (ownedByWindow)
+ *ownedByWindow = false;
query->debug();
return query;
--- trunk/koffice/kexi/plugins/queries/kexiquerypart.h #1200252:1200253
@@ -1,6 +1,6 @@
/* This file is part of the KDE project
Copyright (C) 2003 Lucijan Busch <lucijan@kde.org>
- Copyright (C) 2004,2006 Jarosław Staniek <staniek@kde.org>
+ Copyright (C) 2004-2010 Jarosław Staniek <staniek@kde.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -111,7 +111,7 @@
// virtual QList<KAction*> createViewActions(Kexi::ViewMode mode);
virtual KexiDB::SchemaData* loadSchemaData(KexiWindow *window,
- const KexiDB::SchemaData& sdata, Kexi::ViewMode viewMode);
+ const KexiDB::SchemaData& sdata, Kexi::ViewMode viewMode, bool \
*ownedByWindow); };
#endif
--- trunk/koffice/kexi/plugins/tables/kexitablepart.cpp #1200252:1200253
@@ -1,7 +1,7 @@
/* This file is part of the KDE project
Copyright (C) 2003 Lucijan Busch <lucijan@kde.org>
Copyright (C) 2002, 2003 Joseph Wenninger <jowenn@kde.org>
- Copyright (C) 2004 Jarosław Staniek <staniek@kde.org>
+ Copyright (C) 2004-2010 Jarosław Staniek <staniek@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
@@ -155,11 +155,12 @@
return conn->alterTableName(*sch, newName);
}
-KexiDB::SchemaData*
-KexiTablePart::loadSchemaData(KexiWindow *window, const KexiDB::SchemaData& sdata,
- Kexi::ViewMode viewMode)
+KexiDB::SchemaData* KexiTablePart::loadSchemaData(KexiWindow *window, const \
KexiDB::SchemaData& sdata, + Kexi::ViewMode viewMode, \
bool *ownedByWindow) {
Q_UNUSED(viewMode);
+ if (ownedByWindow)
+ *ownedByWindow = false;
return KexiMainWindowIface::global()->project()->dbConnection()->tableSchema(sdata.name());
}
--- trunk/koffice/kexi/plugins/tables/kexitablepart.h #1200252:1200253
@@ -77,7 +77,7 @@
virtual void setupCustomPropertyPanelTabs(KTabWidget *tab);
virtual KexiDB::SchemaData* loadSchemaData(KexiWindow *window, const \
KexiDB::SchemaData& sdata,
- Kexi::ViewMode viewMode);
+ Kexi::ViewMode viewMode, bool *ownedByWindow);
private:
class Private;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic