1 #include "renamemultidialog.h"
\r
2 #include "ui_renamemultidialog.h"
\r
3 #include <QFileIconProvider>
\r
4 #include <QMessageBox>
\r
6 RenameMultiDialog::RenameMultiDialog(QWidget *parent) :
\r
7 IRenameDialog(parent),
\r
8 ui(new Ui::RenameMultiDialog)
\r
14 labels << tr("変更前") << tr("変更後");
\r
15 ui->tableWidget->setHorizontalHeaderLabels(labels);
\r
17 ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
\r
20 RenameMultiDialog::~RenameMultiDialog()
\r
25 void RenameMultiDialog::setNames(const QStringList &names)
\r
27 foreach (const QString &name, names) {
\r
28 QFileInfo info(name);
\r
30 int row = ui->tableWidget->rowCount();
\r
31 ui->tableWidget->insertRow(row);
\r
33 QTableWidgetItem *iBefore = new QTableWidgetItem(info.fileName());
\r
34 iBefore->setFlags(iBefore->flags() ^ Qt::ItemIsEditable);
\r
35 iBefore->setIcon(QFileIconProvider().icon(info));
\r
36 ui->tableWidget->setItem(row, 0, iBefore);
\r
38 QTableWidgetItem *iAfter = new QTableWidgetItem(info.fileName());
\r
39 ui->tableWidget->setItem(row, 1, iAfter);
\r
41 ui->tableWidget->resizeColumnsToContents();
\r
42 ui->tableWidget->resizeRowsToContents();
\r
45 void RenameMultiDialog::on_btn_UpperAll_clicked()
\r
47 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
48 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
49 ui->tableWidget->item(n, 1)->setText(item->text().toUpper());
\r
53 void RenameMultiDialog::on_btn_LowerAll_clicked()
\r
55 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
56 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
57 ui->tableWidget->item(n, 1)->setText(item->text().toLower());
\r
61 void RenameMultiDialog::on_btn_UpperExt_clicked()
\r
63 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
64 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
65 QFileInfo info(m_dir.absoluteFilePath(item->text()));
\r
66 ui->tableWidget->item(n, 1)->setText(
\r
67 info.completeBaseName() + "." + info.suffix().toUpper());
\r
71 void RenameMultiDialog::on_btn_LowerExt_clicked()
\r
73 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
74 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
75 QFileInfo info(m_dir.absoluteFilePath(item->text()));
\r
76 ui->tableWidget->item(n, 1)->setText(
\r
77 info.completeBaseName() + "." + info.suffix().toLower());
\r
81 void RenameMultiDialog::on_replaceExec_clicked()
\r
83 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
84 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
85 QString name = item->text();
\r
87 if (!ui->replaceFrom->text().isEmpty()) {
\r
88 name.replace(ui->replaceFrom->text(), ui->replaceTo->text());
\r
90 if (!ui->insertText->text().isEmpty()) {
\r
91 int pos = ui->insertPos->text().toInt();
\r
93 pos = name.size() + pos + 1;
\r
95 name.insert(pos, ui->insertText->text());
\r
97 ui->tableWidget->item(n, 1)->setText(name);
\r
101 void RenameMultiDialog::on_numberExec_clicked()
\r
104 int nStart = ui->numberStart->text().toInt(&bOk);
\r
106 QMessageBox::critical(this,
\r
108 tr("連番開始番号が不正です。"));
\r
109 ui->numberStart->setFocus();
\r
112 int nColumn = ui->numberStart->text().size();
\r
113 int nStep = ui->numberStep->text().toInt();
\r
114 for (int n = 0; n < ui->tableWidget->rowCount(); n++, nStart += nStep) {
\r
115 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
116 QString name = item->text();
\r
117 QFileInfo info(m_dir.absoluteFilePath(name));
\r
119 QString first = ui->numberFirst->text();
\r
120 first.replace("?B", info.completeBaseName());
\r
121 first.replace("?E", info.suffix());
\r
123 QString last = ui->numberLast->text();
\r
124 last.replace("?B", info.completeBaseName());
\r
125 last.replace("?E", info.suffix());
\r
127 QString fmt = "%0" + QString("%1").arg(nColumn) + "d";
\r
129 number.sprintf(fmt.toLatin1(), nStart);
\r
131 ui->tableWidget->item(n, 1)->setText(first + number + last);
\r
135 void RenameMultiDialog::on_buttonBox_clicked(QAbstractButton *button)
\r
137 if (button->text() == tr("Reset")) {
\r
138 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
139 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
140 ui->tableWidget->item(n, 1)->setText(item->text());
\r
145 void RenameMultiDialog::accept()
\r
148 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
149 QTableWidgetItem *item = ui->tableWidget->item(n, 1);
\r
150 if (item->text().isEmpty()) {
\r
151 QMessageBox::critical(this,
\r
153 tr("変更後のファイル名が未入力です。"));
\r
154 ui->tableWidget->selectRow(n);
\r
159 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
160 QTableWidgetItem *iBefore = ui->tableWidget->item(n, 0);
\r
161 QTableWidgetItem *iAfter = ui->tableWidget->item(n, 1);
\r
162 if (iBefore->text() != iAfter->text()) {
\r
163 m_RenameMap.insert(m_dir.absoluteFilePath(iBefore->text()),
\r
164 m_dir.absoluteFilePath(iAfter->text()));
\r
168 IRenameDialog::accept();
\r