#include "placesitemeditdialog.h"
+#include "dolphindebug.h"
+
#include <KAboutData>
-#include <k4aboutdata.h>
-#include <KComponentData>
-#include <KDebug>
#include <KFile>
-#include <KGlobal>
#include <KIconButton>
-#include <KLineEdit>
-#include <KLocale>
-#include <KMimeType>
+#include <KLocalizedString>
#include <KUrlRequester>
+
#include <QCheckBox>
+#include <QDialogButtonBox>
#include <QEvent>
#include <QFormLayout>
-#include <QVBoxLayout>
+#include <QLineEdit>
+#include <QMimeDatabase>
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)
QString PlacesItemEditDialog::icon() const
{
- return m_iconButton->icon();
+ return m_iconButton ? m_iconButton->icon() : m_icon;
}
void PlacesItemEditDialog::setText(const QString& text)
{
QString text = m_textEdit->text();
if (text.isEmpty()) {
- const KUrl url = m_urlEdit->url();
- text = url.fileName().isEmpty() ? url.prettyUrl() : url.fileName();
+ 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_urlEdit->url();
}
void PlacesItemEditDialog::slotUrlChanged(const QString& text)
{
- enableButtonOk(!text.isEmpty());
+ 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->lineEdit(), &KLineEdit::textChanged, this, &PlacesItemEditDialog::slotUrlChanged);
-
- m_iconButton = new KIconButton(mainWidget);
- formLayout->addRow(i18nc("@label", "Choose an icon:"), m_iconButton);
- m_iconButton->setIconSize(IconSize(KIconLoader::Desktop));
- m_iconButton->setIconType(KIconLoader::NoGroup, KIconLoader::Place);
- if (m_icon.isEmpty()) {
- m_iconButton->setIcon(KMimeType::iconNameForUrl(m_url));
- } else {
- m_iconButton->setIcon(m_icon);
+ connect(m_urlEdit, &KUrlRequester::textChanged, this, &PlacesItemEditDialog::slotUrlChanged);
+
+ if (m_url.scheme() != QLatin1String("trash")) {
+ m_iconButton = new KIconButton(mainWidget);
+ formLayout->addRow(i18nc("@label", "Choose an icon:"), m_iconButton);
+ m_iconButton->setIconSize(IconSize(KIconLoader::Desktop));
+ m_iconButton->setIconType(KIconLoader::NoGroup, KIconLoader::Place);
+ if (m_icon.isEmpty()) {
+ 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);
m_textEdit->setFocus();
}
- setMainWidget(mainWidget);
}