diff --git a/src/core/KexiRecentProjects.cpp b/src/core/KexiRecentProjects.cpp --- a/src/core/KexiRecentProjects.cpp +++ b/src/core/KexiRecentProjects.cpp @@ -85,9 +85,12 @@ if (!dir.exists() || !dir.isReadable()) { return; } - QStringList shortcuts = dir.entryList( - QStringList() << QLatin1String("*.kexis"), - QDir::Files | QDir::NoSymLinks | QDir::Readable | QDir::CaseSensitive); + const QStringList shortcuts + = dir.entryList(QStringList() << QLatin1String("*.kexis"), + QDir::Files | QDir::NoSymLinks | QDir::Readable | QDir::CaseSensitive + | QDir::Hidden // Hidden too because there can be names starting with + // dot or hidden for without a clear reason + ); #ifdef KexiRecentProjects_DEBUG qDebug() << shortcuts; #endif @@ -202,17 +205,21 @@ return false; } if (metaData->isFileBased()) { - shortcutPath = path + QFileInfo(newData->databaseName()).fileName(); + shortcutPath = QFileInfo(newData->databaseName()).fileName(); QFileInfo fi(shortcutPath); if (!fi.suffix().isEmpty()) { shortcutPath.chop(fi.suffix().length() + 1); } } else { - shortcutPath = path + newData->databaseName(); + shortcutPath = newData->databaseName(); if (!conn.hostName().isEmpty()) { shortcutPath += '_' + conn.hostName(); } } + if (shortcutPath.startsWith('.')) { + shortcutPath.prepend('_'); + } + shortcutPath = path + shortcutPath; int suffixNumber = 0; QString suffixNumberString; forever { // add "_{number}" to ensure uniqueness diff --git a/src/main/startup/KexiNewProjectAssistant.h b/src/main/startup/KexiNewProjectAssistant.h --- a/src/main/startup/KexiNewProjectAssistant.h +++ b/src/main/startup/KexiNewProjectAssistant.h @@ -80,23 +80,23 @@ void buttonClicked(); }; -class KexiDBTitlePage; +class KexiDBCaptionPage; class KexiStartupFileHandler; -class KexiProjectTitleSelectionPage : public KexiAssistantPage +class KexiProjectCaptionSelectionPage : public KexiAssistantPage { Q_OBJECT public: - explicit KexiProjectTitleSelectionPage(QWidget* parent = 0); - virtual ~KexiProjectTitleSelectionPage(); + explicit KexiProjectCaptionSelectionPage(QWidget* parent = nullptr); + virtual ~KexiProjectCaptionSelectionPage(); bool isAcceptable(); - KexiDBTitlePage* contents; + KexiDBCaptionPage* contents; KexiStartupFileHandler *fileHandler; QPointer messageWidget; private Q_SLOTS: - void titleTextChanged(const QString & text); + void captionTextChanged(const QString &text); void askForOverwriting(const KexiContextMessage& message); private: void updateUrl(); @@ -149,7 +149,7 @@ bool isAcceptable(); private Q_SLOTS: - void slotTitleChanged(const QString &capt); + void slotCaptionChanged(const QString &capt); void slotNameChanged(const QString &); void overwriteActionTriggered(); diff --git a/src/main/startup/KexiNewProjectAssistant.cpp b/src/main/startup/KexiNewProjectAssistant.cpp --- a/src/main/startup/KexiNewProjectAssistant.cpp +++ b/src/main/startup/KexiNewProjectAssistant.cpp @@ -35,7 +35,7 @@ #include #include #include -#include +#include #include #include @@ -196,21 +196,21 @@ return xi18n("New database"); } -KexiProjectTitleSelectionPage::KexiProjectTitleSelectionPage(QWidget* parent) +KexiProjectCaptionSelectionPage::KexiProjectCaptionSelectionPage(QWidget* parent) : KexiAssistantPage(xi18nc("@title:window", "Project Caption & Filename"), xi18nc("@info", "Enter caption for the new project. " "Filename will be created automatically based on the caption. " "You can change the filename too."), parent) { setBackButtonVisible(true); setNextButtonVisible(true); - contents = new KexiDBTitlePage(QString()); + contents = new KexiDBCaptionPage(QString()); contents->formLayout->setSpacing(KexiUtils::spacingHint()); - contents->le_title->setText(defaultDatabaseName()); - contents->le_title->selectAll(); - connect(contents->le_title, SIGNAL(textChanged(QString)), - this, SLOT(titleTextChanged(QString))); + contents->le_caption->setText(defaultDatabaseName()); + contents->le_caption->selectAll(); + connect(contents->le_caption, &KLineEdit::textChanged, this, + &KexiProjectCaptionSelectionPage::captionTextChanged); fileHandler = new KexiStartupFileHandler( QUrl("kfiledialog:///OpenExistingOrCreateNewProject"), KexiFileFilters::SavingFileBasedDB, @@ -222,43 +222,43 @@ updateUrl(); setContents(contents); - setRecentFocusWidget(contents->le_title); + setRecentFocusWidget(contents->le_caption); } -KexiProjectTitleSelectionPage::~KexiProjectTitleSelectionPage() +KexiProjectCaptionSelectionPage::~KexiProjectCaptionSelectionPage() { delete fileHandler; } -void KexiProjectTitleSelectionPage::askForOverwriting(const KexiContextMessage& message) +void KexiProjectCaptionSelectionPage::askForOverwriting(const KexiContextMessage& message) { qDebug() << message.text(); delete messageWidget; messageWidget = new KexiContextMessageWidget(this, contents->formLayout, contents->file_requester, message); - messageWidget->setNextFocusWidget(contents->le_title); + messageWidget->setNextFocusWidget(contents->le_caption); } -void KexiProjectTitleSelectionPage::titleTextChanged(const QString & text) +void KexiProjectCaptionSelectionPage::captionTextChanged(const QString &text) { Q_UNUSED(text); updateUrl(); } -void KexiProjectTitleSelectionPage::updateUrl() +void KexiProjectCaptionSelectionPage::updateUrl() { - fileHandler->updateUrl(contents->le_title->text()); + fileHandler->updateUrl(contents->le_caption->text()); } -bool KexiProjectTitleSelectionPage::isAcceptable() +bool KexiProjectCaptionSelectionPage::isAcceptable() { delete messageWidget; - if (contents->le_title->text().trimmed().isEmpty()) { + if (contents->le_caption->text().trimmed().isEmpty()) { messageWidget = new KexiContextMessageWidget(contents->formLayout, - contents->le_title, + contents->le_caption, xi18n("Enter project caption.")); - contents->le_title->setText(QString()); + contents->le_caption->setText(QString()); return false; } QUrl url = contents->file_requester->url(); @@ -393,16 +393,16 @@ m_le_dbname_txtchanged_enabled = true; contents = new KexiServerDBNamePage; - connect(contents->le_title, SIGNAL(textChanged(QString)), - this, SLOT(slotTitleChanged(QString))); + connect(contents->le_caption, &KLineEdit::textChanged, this, + &KexiProjectDatabaseNameSelectionPage::slotCaptionChanged); connect(contents->le_dbname, SIGNAL(textChanged(QString)), this, SLOT(slotNameChanged(QString))); - connect(contents->le_title, SIGNAL(returnPressed()), - this, SLOT(next())); + connect(contents->le_caption, &KLineEdit::returnPressed, + this, &KexiProjectDatabaseNameSelectionPage::next); connect(contents->le_dbname, SIGNAL(returnPressed()), this, SLOT(next())); - contents->le_title->setText(defaultDatabaseName()); - contents->le_title->selectAll(); + contents->le_caption->setText(defaultDatabaseName()); + contents->le_caption->selectAll(); KDbIdentifierValidator *idValidator = new KDbIdentifierValidator(this); idValidator->setLowerCaseForced(true); contents->le_dbname->setValidator(idValidator); @@ -419,7 +419,7 @@ m_projectSelector->layout()->setContentsMargins(0, 0, 0, 0); setContents(contents); - setRecentFocusWidget(contents->le_title); + setRecentFocusWidget(contents->le_caption); } KexiProjectDatabaseNameSelectionPage::~KexiProjectDatabaseNameSelectionPage() @@ -450,7 +450,7 @@ return true; } -void KexiProjectDatabaseNameSelectionPage::slotTitleChanged(const QString &capt) +void KexiProjectDatabaseNameSelectionPage::slotCaptionChanged(const QString &capt) { if (contents->le_dbname->text().isEmpty()) m_dbNameAutofill = true; @@ -479,11 +479,11 @@ bool KexiProjectDatabaseNameSelectionPage::isAcceptable() { delete messageWidget; - if (contents->le_title->text().trimmed().isEmpty()) { + if (contents->le_caption->text().trimmed().isEmpty()) { messageWidget = new KexiContextMessageWidget(contents->formLayout, - contents->le_title, + contents->le_caption, xi18n("Enter project caption.")); - contents->le_title->setText(QString()); + contents->le_caption->setText(QString()); return false; } QString dbName(enteredDbName()); @@ -517,7 +517,7 @@ this, contents->formLayout, contents->le_dbname, message); messageWidget->setMessageType(KMessageWidget::Warning); - messageWidget->setNextFocusWidget(contents->le_title); + messageWidget->setNextFocusWidget(contents->le_caption); return false; } } @@ -551,8 +551,8 @@ KexiProjectStorageTypeSelectionPage* projectStorageTypeSelectionPage() { return page(&m_projectStorageTypeSelectionPage); } - KexiProjectTitleSelectionPage* titleSelectionPage() { - return page(&m_titleSelectionPage); + KexiProjectCaptionSelectionPage* captionSelectionPage() { + return page(&m_captionSelectionPage); } KexiProjectCreationPage* projectCreationPage() { return page(&m_projectCreationPage); @@ -578,7 +578,7 @@ QPointer m_templateSelectionPage; QPointer m_projectStorageTypeSelectionPage; - QPointer m_titleSelectionPage; + QPointer m_captionSelectionPage; QPointer m_projectCreationPage; QPointer m_projectConnectionSelectionPage; QPointer m_projectDatabaseNameSelectionPage; @@ -613,24 +613,24 @@ else if (page == d->m_projectStorageTypeSelectionPage) { switch (d->projectStorageTypeSelectionPage()->selectedType()) { case KexiProjectStorageTypeSelectionPage::Type::File: - setCurrentPage(d->titleSelectionPage()); + setCurrentPage(d->captionSelectionPage()); break; case KexiProjectStorageTypeSelectionPage::Type::Server: setCurrentPage(d->projectConnectionSelectionPage()); break; default: break; } } - else if (page == d->m_titleSelectionPage) { - if (!d->titleSelectionPage()->isAcceptable()) { + else if (page == d->m_captionSelectionPage) { + if (!d->captionSelectionPage()->isAcceptable()) { return; } //file-based project KDbConnectionData cdata; cdata.setDriverId(KDb::defaultFileBasedDriverId()); - cdata.setDatabaseName(d->titleSelectionPage()->contents->file_requester->url().toLocalFile()); - createProject(cdata, cdata.databaseName(), d->titleSelectionPage()->contents->le_title->text()); + cdata.setDatabaseName(d->captionSelectionPage()->contents->file_requester->url().toLocalFile()); + createProject(cdata, cdata.databaseName(), d->captionSelectionPage()->contents->le_caption->text()); } else if (page == d->m_projectConnectionSelectionPage) { KDbConnectionData *cdata @@ -663,7 +663,7 @@ //server-based project createProject(*d->m_projectDatabaseNameSelectionPage->conndataToShow, d->m_projectDatabaseNameSelectionPage->contents->le_dbname->text().trimmed(), - d->m_projectDatabaseNameSelectionPage->contents->le_title->text().trimmed()); + d->m_projectDatabaseNameSelectionPage->contents->le_caption->text().trimmed()); } } diff --git a/src/main/startup/KexiServerDBNamePage.ui b/src/main/startup/KexiServerDBNamePage.ui --- a/src/main/startup/KexiServerDBNamePage.ui +++ b/src/main/startup/KexiServerDBNamePage.ui @@ -11,7 +11,16 @@ - + + 0 + + + 0 + + + 0 + + 0 @@ -24,7 +33,7 @@ - + 0 @@ -103,7 +112,7 @@ KLineEdit QLineEdit -
KLineEdit
+
klineedit.h
diff --git a/src/migration/importtablewizard.cpp b/src/migration/importtablewizard.cpp --- a/src/migration/importtablewizard.cpp +++ b/src/migration/importtablewizard.cpp @@ -37,7 +37,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/migration/importwizard.h b/src/migration/importwizard.h --- a/src/migration/importwizard.h +++ b/src/migration/importwizard.h @@ -1,4 +1,4 @@ -/* This file is part of the KDE project +/* This file is part of the KDE project Copyright (C) 2004 Adam Pigg Copyright (C) 2004-2016 Jarosław Staniek Copyright (C) 2005 Martin Ellis @@ -67,7 +67,7 @@ virtual void reject(); void helpClicked(); void slotOptionsButtonClicked(); - void destinationTitleTextChanged(const QString & text); + void destinationCaptionTextChanged(const QString &text); void sourceConnectionSelected(bool selected); private: @@ -77,7 +77,7 @@ void setupSrcConn(); void setupSrcDB(); void setupDstType(); - void setupDstTitle(); + void setupDstCaption(); void setupDst(); void setupFinish(); void setupImportType(); @@ -99,7 +99,7 @@ void arriveSrcConnPage(); void arriveSrcDBPage(); - void arriveDstTitlePage(); + void arriveDstCaptionPage(); void arriveDstPage(); void arriveFinishPage(); void arriveImportingPage(); diff --git a/src/migration/importwizard.cpp b/src/migration/importwizard.cpp --- a/src/migration/importwizard.cpp +++ b/src/migration/importwizard.cpp @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include #include #include @@ -95,15 +95,15 @@ QGroupBox *importTypeGroupBox; QRadioButton *importTypeStructureAndDataCheckBox; QRadioButton *importTypeStructureOnlyCheckBox; - KexiDBTitlePage* dstTitlePageWidget; - KPageWidgetItem *dstTitlePageItem; + KexiDBCaptionPage* dstCaptionPageWidget; + KPageWidgetItem *dstCaptionPageItem; KexiPrjTypeSelector *dstPrjTypeSelector; KexiConnectionSelectorWidget *srcConn, *dstConn; QString driverIdForSelectedSource; - QLineEdit *dstNewDBTitleLineEdit; + QLineEdit *dstNewDBCaptionLineEdit; QLabel *dstNewDBNameLabel; QLineEdit *dstNewDBNameLineEdit; @@ -149,7 +149,7 @@ setupSrcConn(); setupSrcDB(); setupDstType(); - setupDstTitle(); + setupDstCaption(); setupDst(); setupImportType(); setupImporting(); @@ -345,43 +345,43 @@ //=========================================================== // -void ImportWizard::setupDstTitle() +void ImportWizard::setupDstCaption() { - d->dstTitlePageWidget = new KexiDBTitlePage(xi18n("Destination project's caption:"), this); - d->dstTitlePageWidget->layout()->setMargin(KexiUtils::marginHint()); - d->dstTitlePageWidget->updateGeometry(); - d->dstNewDBTitleLineEdit = d->dstTitlePageWidget->le_title; - connect(d->dstNewDBTitleLineEdit, SIGNAL(textChanged(QString)), - this, SLOT(destinationTitleTextChanged(QString))); - d->dstNewDBNameUrlLabel = d->dstTitlePageWidget->label_requester; - d->dstNewDBNameUrl = d->dstTitlePageWidget->file_requester; + d->dstCaptionPageWidget = new KexiDBCaptionPage(xi18n("Destination project's caption:"), this); + d->dstCaptionPageWidget->layout()->setMargin(KexiUtils::marginHint()); + d->dstCaptionPageWidget->updateGeometry(); + d->dstNewDBCaptionLineEdit = d->dstCaptionPageWidget->le_caption; + connect(d->dstNewDBCaptionLineEdit, &QLineEdit::textChanged, this, + &ImportWizard::destinationCaptionTextChanged); + d->dstNewDBNameUrlLabel = d->dstCaptionPageWidget->label_requester; + d->dstNewDBNameUrl = d->dstCaptionPageWidget->file_requester; d->dstNewDBFileHandler = new KexiStartupFileHandler( QUrl("kfiledialog:///ProjectMigrationDestinationDir"), KexiFileFilters::SavingFileBasedDB, - d->dstTitlePageWidget->file_requester); - d->dstNewDBNameLabel = new QLabel(xi18n("Destination project's name:"), d->dstTitlePageWidget); - d->dstTitlePageWidget->formLayout->setWidget(2, QFormLayout::LabelRole, d->dstNewDBNameLabel); - d->dstNewDBNameLineEdit = new QLineEdit(d->dstTitlePageWidget); + d->dstCaptionPageWidget->file_requester); + d->dstNewDBNameLabel = new QLabel(xi18n("Destination project's name:"), d->dstCaptionPageWidget); + d->dstCaptionPageWidget->formLayout->setWidget(2, QFormLayout::LabelRole, d->dstNewDBNameLabel); + d->dstNewDBNameLineEdit = new QLineEdit(d->dstCaptionPageWidget); d->dstNewDBNameLineEdit->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed)); KDbIdentifierValidator *idValidator = new KDbIdentifierValidator(this); idValidator->setLowerCaseForced(true); d->dstNewDBNameLineEdit->setValidator(idValidator); - d->dstTitlePageWidget->formLayout->setWidget(2, QFormLayout::FieldRole, d->dstNewDBNameLineEdit); + d->dstCaptionPageWidget->formLayout->setWidget(2, QFormLayout::FieldRole, d->dstNewDBNameLineEdit); - d->dstTitlePageItem = new KPageWidgetItem(d->dstTitlePageWidget, xi18n("Enter Destination Database Project's Caption")); - addPage(d->dstTitlePageItem); + d->dstCaptionPageItem = new KPageWidgetItem(d->dstCaptionPageWidget, xi18n("Enter Destination Database Project's Caption")); + addPage(d->dstCaptionPageItem); } -void ImportWizard::destinationTitleTextChanged(const QString & text) +void ImportWizard::destinationCaptionTextChanged(const QString &text) { Q_UNUSED(text); updateDestinationDBFileName(); } void ImportWizard::updateDestinationDBFileName() { - d->dstNewDBFileHandler->updateUrl(d->dstNewDBTitleLineEdit->text()); - d->dstNewDBNameLineEdit->setText(d->dstNewDBTitleLineEdit->text()); + d->dstNewDBFileHandler->updateUrl(d->dstNewDBCaptionLineEdit->text()); + d->dstNewDBNameLineEdit->setText(d->dstNewDBCaptionLineEdit->text()); } //=========================================================== @@ -517,7 +517,7 @@ { QString issues; - if (d->dstNewDBTitleLineEdit->text().isEmpty()) { + if (d->dstNewDBCaptionLineEdit->text().isEmpty()) { issues = xi18nc("@info", "No new database name was entered."); } @@ -579,7 +579,7 @@ } } -void ImportWizard::arriveDstTitlePage() +void ImportWizard::arriveDstCaptionPage() { d->dstNewDBNameUrlLabel->setVisible(fileBasedDstSelected()); d->dstNewDBNameUrl->setVisible(fileBasedDstSelected()); @@ -591,22 +591,22 @@ const QFileInfo fi(suggestedDBName); suggestedDBName = suggestedDBName.left(suggestedDBName.length() - (fi.completeSuffix().isEmpty() ? 0 : (fi.completeSuffix().length() + 1))); - d->dstNewDBTitleLineEdit->setText(suggestedDBName); + d->dstNewDBCaptionLineEdit->setText(suggestedDBName); } else { if (d->predefinedConnectionData) { // server source db is predefined - d->dstNewDBTitleLineEdit->setText(d->predefinedDatabaseName); + d->dstNewDBCaptionLineEdit->setText(d->predefinedDatabaseName); } else { if (!d->srcProjectSelector || !d->srcProjectSelector->selectedProjectData()) { back(); //!< @todo return; } - d->dstNewDBTitleLineEdit->setText(d->srcProjectSelector->selectedProjectData()->databaseName()); + d->dstNewDBCaptionLineEdit->setText(d->srcProjectSelector->selectedProjectData()->databaseName()); } } - d->dstNewDBTitleLineEdit->selectAll(); - d->dstNewDBTitleLineEdit->setFocus(); + d->dstNewDBCaptionLineEdit->selectAll(); + d->dstNewDBCaptionLineEdit->setFocus(); updateDestinationDBFileName(); } @@ -771,9 +771,9 @@ qDebug() << "File Destination..."; cdata = new KDbConnectionData(); cdataDeleter.reset(cdata); // ownership won't be transferred - cdata->setCaption(d->dstNewDBTitleLineEdit->text()); + cdata->setCaption(d->dstNewDBCaptionLineEdit->text()); cdata->setDriverId(KDb::defaultFileBasedDriverId()); - dbname = d->dstTitlePageWidget->file_requester->url().toLocalFile(); + dbname = d->dstCaptionPageWidget->file_requester->url().toLocalFile(); cdata->setDatabaseName(dbname); qDebug() << "Current file name:" << dbname; } @@ -997,7 +997,7 @@ return; } } - } else if (currentPage() == d->dstTitlePageItem) { + } else if (currentPage() == d->dstCaptionPageItem) { if (fileBasedDstSelected()) { if (QFileInfo::exists(d->dstNewDBNameUrl->url().toLocalFile())) { if (!KexiUtils::askForFileOverwriting(d->dstNewDBNameUrl->url().toLocalFile(), this)) { @@ -1082,8 +1082,8 @@ } else if (curPage == d->srcDBPageItem) { arriveSrcDBPage(); } else if (curPage == d->dstTypePageItem) { - } else if (curPage == d->dstTitlePageItem) { - arriveDstTitlePage(); + } else if (curPage == d->dstCaptionPageItem) { + arriveDstCaptionPage(); } else if (curPage == d->dstPageItem) { if (fileBasedDstSelected()) { if (prevPage == d->importTypePageItem) { diff --git a/src/widget/CMakeLists.txt b/src/widget/CMakeLists.txt --- a/src/widget/CMakeLists.txt +++ b/src/widget/CMakeLists.txt @@ -39,7 +39,7 @@ KexiDataSourceComboBox.cpp KexiObjectInfoLabel.cpp kexicharencodingcombobox.cpp - KexiDBTitlePage.cpp + KexiDBCaptionPage.cpp KexiProjectSelectorWidget.cpp kexislider.cpp KexiServerDriverNotFoundMessage.cpp @@ -77,7 +77,7 @@ endif () ki18n_wrap_ui(kexiextendedwidgets_LIB_SRCS - KexiDBTitlePage.ui + KexiDBCaptionPage.ui KexiProjectSelector.ui ) diff --git a/src/widget/KexiDBTitlePage.h b/src/widget/KexiDBCaptionPage.h rename from src/widget/KexiDBTitlePage.h rename to src/widget/KexiDBCaptionPage.h --- a/src/widget/KexiDBTitlePage.h +++ b/src/widget/KexiDBCaptionPage.h @@ -17,22 +17,24 @@ * Boston, MA 02110-1301, USA. */ -#ifndef KEXIDBTITLEPAGE_H -#define KEXIDBTITLEPAGE_H +#ifndef KEXIDBCAPTIONPAGE_H +#define KEXIDBCAPTIONPAGE_H #include "kexiextwidgets_export.h" -#include "ui_KexiDBTitlePage.h" +#include "ui_KexiDBCaptionPage.h" #include //! @short A helper widget used to displaying a line edit with a label and layout -class KEXIEXTWIDGETS_EXPORT KexiDBTitlePage : public QWidget, public Ui_KexiDBTitlePage +class KEXIEXTWIDGETS_EXPORT KexiDBCaptionPage : public QWidget, public Ui_KexiDBCaptionPage { Q_OBJECT public: - //! Constructs title page. \a labelText can be provided to change default - //! "Project caption:" label. - explicit KexiDBTitlePage(const QString& labelText, QWidget* parent = 0); - ~KexiDBTitlePage(); + //! Constructs a caption editing page. + //! + //! \a labelText can be provided to change default "Project caption:" label. + explicit KexiDBCaptionPage(const QString &labelText, QWidget *parent = nullptr); + + ~KexiDBCaptionPage(); }; -#endif // KEXIDBTITLEPAGE_H +#endif // KEXIDBCAPTIONPAGE_H diff --git a/src/widget/KexiDBTitlePage.cpp b/src/widget/KexiDBCaptionPage.cpp rename from src/widget/KexiDBTitlePage.cpp rename to src/widget/KexiDBCaptionPage.cpp --- a/src/widget/KexiDBTitlePage.cpp +++ b/src/widget/KexiDBCaptionPage.cpp @@ -17,17 +17,17 @@ * Boston, MA 02110-1301, USA. */ -#include "KexiDBTitlePage.h" +#include "KexiDBCaptionPage.h" -KexiDBTitlePage::KexiDBTitlePage(const QString& labelText, QWidget* parent) +KexiDBCaptionPage::KexiDBCaptionPage(const QString& labelText, QWidget* parent) : QWidget(parent) { setupUi(this); if (!labelText.isEmpty()) label->setText(labelText); } -KexiDBTitlePage::~KexiDBTitlePage() +KexiDBCaptionPage::~KexiDBCaptionPage() { } diff --git a/src/widget/KexiDBTitlePage.ui b/src/widget/KexiDBCaptionPage.ui rename from src/widget/KexiDBTitlePage.ui rename to src/widget/KexiDBCaptionPage.ui --- a/src/widget/KexiDBTitlePage.ui +++ b/src/widget/KexiDBCaptionPage.ui @@ -1,7 +1,7 @@ - KexiDBTitlePage - + KexiDBCaptionPage + 0 @@ -11,26 +11,35 @@ - + + 0 + + + 0 + + + 0 + + 0 - Project title: + Pro&ject caption: false - le_title + le_caption - + 1 @@ -43,15 +52,15 @@ 0 - + true - Project filename: + Project file&name: false @@ -72,6 +81,9 @@ KFile::File|KFile::LocalOnly + + QFileDialog::AcceptSave + @@ -131,15 +143,15 @@ - - KUrlRequester - QWidget -
KUrlRequester
-
KLineEdit QLineEdit -
KLineEdit
+
klineedit.h
+
+ + KUrlRequester + QWidget +
kurlrequester.h
diff --git a/src/widget/KexiStartupFileHandler.cpp b/src/widget/KexiStartupFileHandler.cpp --- a/src/widget/KexiStartupFileHandler.cpp +++ b/src/widget/KexiStartupFileHandler.cpp @@ -43,6 +43,7 @@ #include #include #include +#include #include //! @internal @@ -121,6 +122,13 @@ else { url = startDirOrVariable; } + if (url.toLocalFile().isEmpty() || !QDir(url.toLocalFile()).exists()) { + url = QUrl::fromLocalFile(QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)); + QDir docDir(url.toLocalFile()); + if (!docDir.exists()) { // create if missing + (void)docDir.mkpath(QString()); + } + } d->setUrl(url); setMode(mode); /*removed in KEXI3 @@ -453,12 +461,15 @@ void KexiStartupFileHandler::updateUrl(const QString &name) { QUrl url = d->requester->url(); + QString path = url.toLocalFile(); + if (!QFileInfo(path).isDir() && !path.endsWith('/')) { + url = url.adjusted(QUrl::RemoveFilename); + path = url.toLocalFile(); + } QString fn = KDbUtils::stringToFileName(name); if (!fn.isEmpty() && !fn.endsWith(".kexi")) fn += ".kexi"; - url = url.adjusted(QUrl::RemoveFilename); - qDebug() << url.toLocalFile(); - url.setPath(url.toLocalFile() + fn); + url.setPath(QDir(path).absoluteFilePath(fn)); d->requester->setUrl(url); }