X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/507984415a2953000ef1edb77c9dbc3364846b13..b1c9b5126d:/src/renamedialog.cpp diff --git a/src/renamedialog.cpp b/src/renamedialog.cpp index 4055b32a6..02dd2e9f6 100644 --- a/src/renamedialog.cpp +++ b/src/renamedialog.cpp @@ -19,14 +19,15 @@ #include "renamedialog.h" +#include #include #include -#include -#include +#include +#include -RenameDialog::RenameDialog(const KUrl::List& items) : - KDialog(), +RenameDialog::RenameDialog(QWidget *parent, const KFileItemList& items) : + KDialog(parent), m_renameOneItem(false) { const QSize minSize = minimumSize(); @@ -36,11 +37,13 @@ RenameDialog::RenameDialog(const KUrl::List& items) : Q_ASSERT(itemCount >= 1); m_renameOneItem = (itemCount == 1); - setCaption(m_renameOneItem ? i18n("Rename Item") : i18n("Rename Items")); - setButtons(Ok|Cancel); + setCaption(m_renameOneItem ? + i18nc("@title:window", "Rename Item") : + i18nc("@title:window", "Rename Items")); + setButtons(Ok | Cancel); setDefaultButton(Ok); - setButtonGuiItem(Ok, KGuiItem(i18n("Rename"), "dialog-apply")); + setButtonGuiItem(Ok, KGuiItem(i18nc("@action:button", "Rename"), "dialog-ok-apply")); QWidget* page = new QWidget(this); setMainWidget(page); @@ -50,28 +53,28 @@ RenameDialog::RenameDialog(const KUrl::List& items) : QLabel* editLabel = 0; if (m_renameOneItem) { - const KUrl& url = items.first(); - editLabel = new QLabel(i18n("Rename the item '%1' to:", url.fileName()), + m_newName = items.first().name(); + editLabel = new QLabel(i18nc("@label:textbox", "Rename the item %1 to:", m_newName), page); - } - else { - editLabel = new QLabel(i18n("Rename the %1 selected items to:", itemCount), + } else { + m_newName = i18nc("@info:status", "New name #"); + editLabel = new QLabel(i18ncp("@label:textbox", + "Rename the %1 selected item to:", + "Rename the %1 selected items to:", itemCount), page); } m_lineEdit = new KLineEdit(page); - m_newName = m_renameOneItem ? i18n("New name") : i18n("New name #"); - - 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 - // case, add this postfix to the name suggestion. - postfix.insert(0, '.'); + QString extension = KMimeType::extractKnownExtension(items[0].url().prettyUrl()); + if (extension.length() > 0) { + extension.insert(0, '.'); + // The first item seems to have a extension (e. g. '.jpg' or '.txt'). Now + // check whether all other URLs have the same extension. If this is the + // case, add this extension to the name suggestion. for (int i = 1; i < itemCount; ++i) { - if (!items[i].prettyUrl().contains(postfix)) { - // at least one item does not have the same postfix - postfix.truncate(0); + if (!items[i].url().prettyUrl().contains(extension)) { + // at least one item does not have the same extension + extension.truncate(0); break; } } @@ -82,9 +85,15 @@ RenameDialog::RenameDialog(const KUrl::List& items) : --selectionLength; // don't select the # character } - if (postfix.length() > 0) { - m_newName.append(postfix); + const int extensionLength = extension.length(); + if (extensionLength > 0) { + if (m_renameOneItem) { + selectionLength -= extensionLength; + } else { + m_newName.append(extension); + } } + m_lineEdit->setText(m_newName); m_lineEdit->setSelection(0, selectionLength); m_lineEdit->setFocus(); @@ -93,7 +102,7 @@ RenameDialog::RenameDialog(const KUrl::List& items) : topLayout->addWidget(m_lineEdit); if (!m_renameOneItem) { - QLabel* infoLabel = new QLabel(i18n("(# will be replaced by ascending numbers)"), page); + QLabel* infoLabel = new QLabel(i18nc("@info", "(# will be replaced by ascending numbers)"), page); topLayout->addWidget(infoLabel); } } @@ -107,11 +116,11 @@ void RenameDialog::slotButtonClicked(int button) 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_renameOneItem && m_newName.contains('#') != 1) { + m_errorString = i18nc("@info:status", + "The new name is empty. A name with at least one character must be entered."); + } else if (!m_renameOneItem && (m_newName.count('#') == 0)) { m_newName.truncate(0); - m_errorString = i18n("The name must contain exactly one # character."); + m_errorString = i18nc("@info:status", "The name must contain at least one # character."); } }