SVN commit 1134266 by staniek: Migration *When source filename is preselected (e.g. when opening mdb file with Kexi), do not display the source name selection page *Append proper extension is not present, e.g. .kexi (regression in 2.x) M +4 -0 doc/dev/CHANGELOG-Kexi-js M +27 -0 main/startup/KexiStartupFileWidget.cpp M +17 -11 migration/importwizard.cpp M +3 -0 migration/importwizard.h --- trunk/koffice/kexi/doc/dev/CHANGELOG-Kexi-js #1134265:1134266 @@ -99,6 +99,10 @@ ~~~~~~~~~~~~~~~~ 2.3 alpha 1 ~~~~~~~~~~~~~~~~ +Migration +*When source filename is preselected (e.g. when opening mdb file with Kexi), do not display the source name selection page +*Append proper extension is not present, e.g. .kexi (regression in 2.x) + **** TODO: setting "enabled" property to false does not work Forms *Image Box widget: --- trunk/koffice/kexi/main/startup/KexiStartupFileWidget.cpp #1134265:1134266 @@ -339,6 +339,33 @@ return false; } + if (!currentFilter().isEmpty()) { + if (d->mode & SavingFileBasedDB) { + const QStringList filters( currentFilter().split(" ") ); + QString path = highlightedFile(); + kDebug()<< "filter:" << filters << "path:" << path; + QString ext( QFileInfo(path).suffix() ); + bool hasExtension = false; + foreach (const QString& filter, filters) { + const QString f( filter.trimmed() ); + hasExtension = !f.mid(2).isEmpty() && ext==f.mid(2); + if (hasExtension) + break; + } + if (!hasExtension) { + //no extension: add one + QString defaultExtension( d->defaultExtension ); + if (defaultExtension.isEmpty()) { + defaultExtension = filters.first().trimmed().mid(2); //first one + } + path += (QLatin1String(".")+defaultExtension); + kDebug() << "appended extension" << path; + setSelection( path ); + d->highlightedUrl = KUrl(path); + } + } + } + kDebug() << "KexiStartupFileWidget::checkURL() path: " << d->highlightedUrl; // kDebug() << "KexiStartupFileWidget::checkURL() fname: " << url.fileName(); //todo if ( url.isLocalFile() ) { --- trunk/koffice/kexi/migration/importwizard.cpp #1134265:1134266 @@ -103,6 +103,8 @@ // m_srcTypeCombo->setCurrentText( driverName ); // showPage( m_srcConnPage ); + setAppropriate(m_srcConnPageItem, false); + setAppropriate(m_srcDBPageItem, false); m_srcConn->showSimpleConn(); m_srcConn->setSelectedFileName(m_predefinedDatabaseName); @@ -145,6 +147,14 @@ m_args->clear(); } +QString ImportWizard::selectedSourceFileName() const +{ + if (m_predefinedDatabaseName.isEmpty()) + return m_srcConn->selectedFileName(); + + return m_predefinedDatabaseName; +} + //=========================================================== // void ImportWizard::setupIntro() @@ -484,11 +494,7 @@ void ImportWizard::arriveDstTitlePage() { if (fileBasedSrcSelected()) { - QString fname; - if (m_predefinedDatabaseName.isEmpty()) - fname = m_srcConn->selectedFileName(); - else - fname = m_predefinedDatabaseName; + const QString fname(selectedSourceFileName()); QString suggestedDBName(QFileInfo(fname).fileName()); const QFileInfo fi(suggestedDBName); suggestedDBName = suggestedDBName.left(suggestedDBName.length() @@ -607,12 +613,12 @@ QString ImportWizard::driverNameForSelectedSource() { if (fileBasedSrcSelected()) { - KMimeType::Ptr ptr = KMimeType::findByFileContent(m_srcConn->selectedFileName()); + KMimeType::Ptr ptr = KMimeType::findByFileContent(selectedSourceFileName()); if (!ptr || ptr.data()->name() == "application/octet-stream" || ptr.data()->name() == "text/plain") { //try by URL: - ptr = KMimeType::findByUrl(m_srcConn->selectedFileName()); + ptr = KMimeType::findByUrl(selectedSourceFileName()); } return ptr ? m_migrateManager.driverForMimeType(ptr.data()->name()) : QString(); } @@ -743,7 +749,7 @@ md->destination = new KexiProjectData(*cdata, dbname); if (fileBasedSrcSelected()) { KexiDB::ConnectionData* conn_data = new KexiDB::ConnectionData(); - conn_data->setFileName(m_srcConn->selectedFileName()); + conn_data->setFileName(selectedSourceFileName()); md->source = conn_data; md->sourceName.clear(); } else { @@ -855,7 +861,7 @@ { if (currentPage() == m_srcConnPageItem) { if (fileBasedSrcSelected() - && /*! @todo use KUrl? */!QFileInfo(m_srcConn->selectedFileName()).isFile()) { + && /*! @todo use KUrl? */!QFileInfo(selectedSourceFileName()).isFile()) { KMessageBox::sorry(this, i18n("Select source database filename.")); return; @@ -870,7 +876,7 @@ if (!import || m_migrateManager.error()) { QString dbname; if (fileBasedSrcSelected()) - dbname = m_srcConn->selectedFileName(); + dbname = selectedSourceFileName(); else dbname = m_srcConn->selectedConnectionData() ? m_srcConn->selectedConnectionData()->serverInfoString() : QString(); @@ -978,7 +984,7 @@ void ImportWizard::slotOptionsButtonClicked() { - QPointer dlg = new OptionsDialog(m_srcConn->selectedFileName(), m_sourceDBEncoding, this); + QPointer dlg = new OptionsDialog(selectedSourceFileName(), m_sourceDBEncoding, this); if (QDialog::Accepted == dlg->exec()) { if (m_sourceDBEncoding != dlg->encodingComboBox()->selectedEncoding()) { m_sourceDBEncoding = dlg->encodingComboBox()->selectedEncoding(); --- trunk/koffice/kexi/migration/importwizard.h #1134265:1134266 @@ -119,6 +119,9 @@ void arriveFinishPage(); void arriveImportingPage(); + //! @return source filename selected by user or preselected one (if present) + QString selectedSourceFileName() const; + QWidget *m_introPageWidget, *m_srcConnPageWidget, *m_srcDBPageWidget, *m_dstTypePageWidget, *m_dstPageWidget, *m_importTypePageWidget, *m_importingPageWidget, *m_finishPageWidget;