]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/renamedialog.cpp
compilation fix
[dolphin.git] / src / renamedialog.cpp
index e68feff8d29d4cc8957476148dd7441126fdf536..190f64b93f5cb7dc771e36641630b1ea593c46b9 100644 (file)
 #include <QVBoxLayout>
 
 RenameDialog::RenameDialog(const KUrl::List& items) :
-    KDialog()
+        KDialog(),
+        m_renameOneItem(false)
 {
-    setCaption(i18n("Rename Items"));
-    setButtons(Ok|Cancel);
+    const QSize minSize = minimumSize();
+    setMinimumSize(QSize(320, minSize.height()));
+
+    const int itemCount = items.count();
+    Q_ASSERT(itemCount >= 1);
+    m_renameOneItem = (itemCount == 1);
+
+    setCaption(m_renameOneItem ? i18n("Rename Item") : i18n("Rename Items"));
+    setButtons(Ok | Cancel);
     setDefaultButton(Ok);
 
     setButtonGuiItem(Ok, KGuiItem(i18n("Rename"), "dialog-apply"));
@@ -40,18 +48,20 @@ RenameDialog::RenameDialog(const KUrl::List& items) :
     QVBoxLayout* topLayout = new QVBoxLayout(page);
     topLayout->setMargin(KDialog::marginHint());
 
-    const int itemCount = items.count();
-    QLabel* editLabel = new QLabel(i18n("Rename the %1 selected items to:", itemCount),
-                                   page);
+    QLabel* editLabel = 0;
+    if (m_renameOneItem) {
+        const KUrl& url = items.first();
+        m_newName = url.fileName();
+        editLabel = new QLabel(i18n("Rename the item '%1' to:", m_newName),
+                               page);
+    } else {
+        m_newName = i18n("New name #");
+        editLabel = new QLabel(i18n("Rename the %1 selected items to:", itemCount),
+                               page);
+    }
 
     m_lineEdit = new KLineEdit(page);
-    m_newName = i18n("New name #");
-
-    // TODO: reactivate assertion as soon as KFileItemDelegate supports renaming of
-    // single items
-    //Q_ASSERT(itemCount > 1);
-
-    QString postfix(items[0].prettyUrl().section('.',1));
+    QString postfix(items[0].prettyUrl().section('.', 1));
     if (postfix.length() > 0) {
         // The first item seems to have a postfix (e. g. 'jpg' or 'txt'). Now
         // check whether all other items have the same postfix. If this is the
@@ -66,33 +76,43 @@ RenameDialog::RenameDialog(const KUrl::List& items) :
         }
     }
 
-    const int selectionLength = m_newName.length();
-    if (postfix.length() > 0) {
-        m_newName.append(postfix);
+    int selectionLength = m_newName.length();
+    if (!m_renameOneItem) {
+        --selectionLength; // don't select the # character
+    }
+
+    const int postfixLength = postfix.length();
+    if (postfixLength > 0) {
+        if (m_renameOneItem) {
+            selectionLength -= postfixLength;
+        } else {
+            m_newName.append(postfix);
+        }
     }
+
     m_lineEdit->setText(m_newName);
-    m_lineEdit->setSelection(0, selectionLength - 1);
+    m_lineEdit->setSelection(0, selectionLength);
     m_lineEdit->setFocus();
 
-    QLabel* infoLabel = new QLabel(i18n("(# will be replaced by ascending numbers)"), page);
-
     topLayout->addWidget(editLabel);
     topLayout->addWidget(m_lineEdit);
-    topLayout->addWidget(infoLabel);
+
+    if (!m_renameOneItem) {
+        QLabel* infoLabel = new QLabel(i18n("(# will be replaced by ascending numbers)"), page);
+        topLayout->addWidget(infoLabel);
+    }
 }
 
 RenameDialog::~RenameDialog()
-{
-}
+{}
 
 void RenameDialog::slotButtonClicked(int button)
 {
-    if (button==Ok) {
+    if (button == Ok) {
         m_newName = m_lineEdit->text();
         if (m_newName.isEmpty()) {
             m_errorString = i18n("The new name is empty. A name with at least one character must be entered.");
-        }
-        else if (m_newName.contains('#') != 1) {
+        } else if (!m_renameOneItem && m_newName.contains('#') != 1) {
             m_newName.truncate(0);
             m_errorString = i18n("The name must contain exactly one # character.");
         }