X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/d1c5dc52a3ac4f83262d00d37a61f6bfb52d5bf4..87e8d0ba:/src/panels/places/placesitemeditdialog.cpp diff --git a/src/panels/places/placesitemeditdialog.cpp b/src/panels/places/placesitemeditdialog.cpp index dd7ac85a5..4a56ce908 100644 --- a/src/panels/places/placesitemeditdialog.cpp +++ b/src/panels/places/placesitemeditdialog.cpp @@ -24,32 +24,32 @@ #include "placesitemeditdialog.h" #include -#include +#include "dolphindebug.h" #include #include -#include -#include -#include +#include +#include #include #include #include #include #include +#include +#include +#include PlacesItemEditDialog::PlacesItemEditDialog(QWidget* parent) : - KDialog(parent), + QDialog(parent), m_icon(), m_text(), m_url(), m_allowGlobal(false), - m_urlEdit(0), - m_textEdit(0), - m_iconButton(0), - m_appLocal(0) + m_urlEdit(nullptr), + m_textEdit(nullptr), + m_iconButton(nullptr), + m_appLocal(nullptr), + m_buttonBox(nullptr) { - setButtons( Ok | Cancel ); - setModal(true); - setDefaultButton(Ok); } void PlacesItemEditDialog::setIcon(const QString& icon) @@ -59,7 +59,7 @@ void PlacesItemEditDialog::setIcon(const QString& icon) QString PlacesItemEditDialog::icon() const { - return m_icon; + return m_iconButton->icon(); } void PlacesItemEditDialog::setText(const QString& text) @@ -69,17 +69,22 @@ void PlacesItemEditDialog::setText(const QString& text) QString PlacesItemEditDialog::text() const { - return m_text; + QString text = m_textEdit->text(); + if (text.isEmpty()) { + const QUrl url = m_urlEdit->url(); + text = url.fileName().isEmpty() ? url.toDisplayString(QUrl::PreferLocalFile) : url.fileName(); + } + return text; } -void PlacesItemEditDialog::setUrl(const KUrl& url) +void PlacesItemEditDialog::setUrl(const QUrl& url) { m_url = url; } -KUrl PlacesItemEditDialog::url() const +QUrl PlacesItemEditDialog::url() const { - return m_url; + return m_urlEdit->url(); } void PlacesItemEditDialog::setAllowGlobal(bool allow) @@ -100,47 +105,58 @@ bool PlacesItemEditDialog::event(QEvent* event) return QWidget::event(event); } +void PlacesItemEditDialog::slotUrlChanged(const QString& text) +{ + m_buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!text.isEmpty()); +} + PlacesItemEditDialog::~PlacesItemEditDialog() { } void PlacesItemEditDialog::initialize() { + m_buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel, this); + connect(m_buttonBox, &QDialogButtonBox::accepted, this, &PlacesItemEditDialog::accept); + connect(m_buttonBox, &QDialogButtonBox::rejected, this, &PlacesItemEditDialog::reject); + setModal(true); + + QVBoxLayout *mainLayout = new QVBoxLayout; + setLayout(mainLayout); QWidget* mainWidget = new QWidget(this); + mainLayout->addWidget(mainWidget); + mainLayout->addWidget(m_buttonBox); + QVBoxLayout* vBox = new QVBoxLayout(mainWidget); QFormLayout* formLayout = new QFormLayout(); vBox->addLayout( formLayout ); - m_textEdit = new KLineEdit(mainWidget); + m_textEdit = new QLineEdit(mainWidget); formLayout->addRow(i18nc("@label", "Label:"), m_textEdit); m_textEdit->setText(m_text); - m_textEdit->setClickMessage(i18n("Enter descriptive label here")); + m_textEdit->setPlaceholderText(i18n("Enter descriptive label here")); - m_urlEdit = new KUrlRequester(m_url.prettyUrl(), mainWidget); + m_urlEdit = new KUrlRequester(m_url, mainWidget); m_urlEdit->setMode(KFile::Directory); formLayout->addRow(i18nc("@label", "Location:"), m_urlEdit); // Provide room for at least 40 chars (average char width is half of height) m_urlEdit->setMinimumWidth(m_urlEdit->fontMetrics().height() * (40 / 2)); + connect(m_urlEdit, &KUrlRequester::textChanged, this, &PlacesItemEditDialog::slotUrlChanged); m_iconButton = new KIconButton(mainWidget); formLayout->addRow(i18nc("@label", "Choose an icon:"), m_iconButton); - m_iconButton->setIconSize(KIconLoader::SizeLarge); + m_iconButton->setIconSize(IconSize(KIconLoader::Desktop)); m_iconButton->setIconType(KIconLoader::NoGroup, KIconLoader::Place); if (m_icon.isEmpty()) { - m_iconButton->setIcon(KMimeType::iconNameForUrl(m_url)); + QMimeDatabase db; + m_iconButton->setIcon(db.mimeTypeForUrl(m_url).iconName()); } else { m_iconButton->setIcon(m_icon); } if (m_allowGlobal) { - QString appName; - if (KGlobal::mainComponent().aboutData()) { - appName = KGlobal::mainComponent().aboutData()->programName(); - } - if (appName.isEmpty()) { - appName = KGlobal::mainComponent().componentName(); - } + const QString appName = KAboutData::applicationData().displayName(); m_appLocal = new QCheckBox( i18n("&Only show when using this application (%1)", appName ), mainWidget ); m_appLocal->setChecked(false); vBox->addWidget(m_appLocal); @@ -152,7 +168,5 @@ void PlacesItemEditDialog::initialize() m_textEdit->setFocus(); } - setMainWidget( mainWidget ); } -#include "placesitemeditdialog.moc"