]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/startupsettingspage.cpp
There are some extractable strings in subdirs too.
[dolphin.git] / src / startupsettingspage.cpp
index e3f237ca9bb5a21be47b566a1816210a3b902a62..532c6e6063265dc7b01abe8e00506fec0d064410 100644 (file)
 #include <kdialog.h>
 #include <kfiledialog.h>
 #include <klocale.h>
+#include <klineedit.h>
+#include <kmessagebox.h>
 #include <kvbox.h>
 
 #include <QCheckBox>
 #include <QGroupBox>
 #include <QLabel>
-#include <QLineEdit>
 #include <QPushButton>
 #include <QRadioButton>
 
@@ -59,7 +60,8 @@ StartupSettingsPage::StartupSettingsPage(DolphinMainWindow* mainWin, QWidget* pa
     homeUrlBox->setSpacing(spacing);
 
     new QLabel(i18nc("@label:textbox", "Location:"), homeUrlBox);
-    m_homeUrl = new QLineEdit(homeUrlBox);
+    m_homeUrl = new KLineEdit(homeUrlBox);
+    m_homeUrl->setClearButtonShown(true);
 
     QPushButton* selectHomeUrlButton = new QPushButton(KIcon("folder-open"), QString(), homeUrlBox);
     connect(selectHomeUrlButton, SIGNAL(clicked()),
@@ -83,6 +85,9 @@ StartupSettingsPage::StartupSettingsPage(DolphinMainWindow* mainWin, QWidget* pa
     m_splitView = new QCheckBox(i18nc("@option:check Startup Settings", "Split view mode"), vBox);
     m_editableUrl = new QCheckBox(i18nc("@option:check Startup Settings", "Editable location bar"), vBox);
     m_filterBar = new QCheckBox(i18nc("@option:check Startup Settings", "Show filter bar"), vBox);
+    connect(m_splitView,   SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+    connect(m_editableUrl, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+    connect(m_filterBar,   SIGNAL(toggled(bool)), this, SIGNAL(changed()));
 
     // Add a dummy widget with no restriction regarding
     // a vertical resizing. This assures that the dialog layout
@@ -92,6 +97,10 @@ StartupSettingsPage::StartupSettingsPage(DolphinMainWindow* mainWin, QWidget* pa
     topLayout->addWidget(vBox);
 
     loadSettings();
+
+    // it's important connecting 'textChanged' after loadSettings(), as loadSettings()
+    // invokes m_homeUrl->setText()
+    connect(m_homeUrl, SIGNAL(textChanged(const QString&)), this, SIGNAL(changed()));
 }
 
 StartupSettingsPage::~StartupSettingsPage()
@@ -103,9 +112,11 @@ void StartupSettingsPage::applySettings()
     GeneralSettings* settings = DolphinSettings::instance().generalSettings();
 
     const KUrl url(m_homeUrl->text());
-    KFileItem fileItem(S_IFDIR, KFileItem::Unknown, url);
+    KFileItem fileItem(KFileItem::Unknown, KFileItem::Unknown, url);
     if (url.isValid() && fileItem.isDir()) {
         settings->setHomeUrl(url.prettyUrl());
+    } else {
+        KMessageBox::error(this, i18nc("@info", "The location for the home folder is invalid and will not be applied."));
     }
 
     settings->setSplitView(m_splitView->isChecked());
@@ -123,9 +134,10 @@ void StartupSettingsPage::restoreDefaults()
 void StartupSettingsPage::selectHomeUrl()
 {
     const QString homeUrl = m_homeUrl->text();
-    KUrl url = KFileDialog::getExistingDirectoryUrl(homeUrl);
+    KUrl url = KFileDialog::getExistingDirectoryUrl(homeUrl, this);
     if (!url.isEmpty()) {
         m_homeUrl->setText(url.prettyUrl());
+        emit changed();
     }
 }
 
@@ -137,7 +149,7 @@ void StartupSettingsPage::useCurrentLocation()
 
 void StartupSettingsPage::useDefaultLocation()
 {
-    m_homeUrl->setText("file://" + QDir::homePath());
+    m_homeUrl->setText(QDir::homePath());
 }
 
 void StartupSettingsPage::loadSettings()