KexiDB::SchemaData* KexiReportDesignView::storeNewData(const KexiDB::SchemaData& sdata, bool &cancel)
{
    KexiDB::SchemaData *s = KexiView::storeNewData(sdata, cancel);
    kexipluginsdbg << "new id:" << s->id();

    if (!s || cancel) {
        delete s;
        return 0;
    }
    if (!storeData()) {
        //failure: remove object's schema data to avoid garbage
        KexiDB::Connection *conn = KexiMainWindowIface::global()->project()->dbConnection();
        conn->removeObject(s->id());
        delete s;
        return 0;
    }
    return s;
    
    
    
    
    #if 0
    
    
    KexiDB::SchemaData *rpt = new KexiDB::SchemaData();
    *rpt = sdata;
    //sdata.setName ( name );
    //sdata.setDescription ( _rd->reportTitle() );
    KexiDB::Connection *conn = KexiMainWindowIface::global()->project()->dbConnection();

    if (conn->storeObjectSchemaData(*rpt, true /*newObject*/)) {
        window()->setId(rpt->id());

        if (rpt->id() > 0 && storeDataBlock(_rd->document().toString(), "pgzreport_layout")) {
            kDebug() << "Saved OK " << rpt->id();
        } else {
            kDebug() << "NOT Saved OK";
            return 0;
        }
    } else {
        kDebug() << "Unable to store schema data";
        return 0;
    }
    return rpt;
    #endif
}
Beispiel #2
0
KexiDB::SchemaData* KexiView::copyData(const KexiDB::SchemaData& sdata,
                                        KexiView::StoreNewDataOptions options,
                                        bool &cancel)
{
    Q_UNUSED(options)
    Q_UNUSED(cancel)
    QScopedPointer<KexiDB::SchemaData> new_schema(new KexiDB::SchemaData);
    *new_schema = sdata;

    KexiDB::Connection *conn = KexiMainWindowIface::global()->project()->dbConnection();
    if (!conn->storeObjectSchemaData(*new_schema.data(), true)
        || !conn->copyDataBlock(d->window->id(), new_schema->id())
        || !KexiMainWindowIface::global()->project()->copyUserDataBlock(d->window->id(), new_schema->id())
       )
    {
        return 0;
    }
    d->newlyAssignedID = new_schema->id();
    return new_schema.take();
}