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 QFileInfoList &names)
\r
27 foreach (const QFileInfo &info, names) {
\r
28 int row = ui->tableWidget->rowCount();
\r
29 ui->tableWidget->insertRow(row);
\r
31 QTableWidgetItem *iBefore = new QTableWidgetItem(info.fileName());
\r
32 iBefore->setFlags(iBefore->flags() ^ Qt::ItemIsEditable);
\r
33 iBefore->setIcon(QFileIconProvider().icon(info));
\r
34 ui->tableWidget->setItem(row, 0, iBefore);
\r
36 QTableWidgetItem *iAfter = new QTableWidgetItem(info.fileName());
\r
37 ui->tableWidget->setItem(row, 1, iAfter);
\r
39 ui->tableWidget->resizeColumnsToContents();
\r
40 ui->tableWidget->resizeRowsToContents();
\r
43 void RenameMultiDialog::on_btn_UpperAll_clicked()
\r
45 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
46 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
47 ui->tableWidget->item(n, 1)->setText(item->text().toUpper());
\r
51 void RenameMultiDialog::on_btn_LowerAll_clicked()
\r
53 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
54 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
55 ui->tableWidget->item(n, 1)->setText(item->text().toLower());
\r
59 void RenameMultiDialog::on_btn_UpperExt_clicked()
\r
61 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
62 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
63 QFileInfo info(m_dir.absoluteFilePath(item->text()));
\r
64 ui->tableWidget->item(n, 1)->setText(
\r
65 info.completeBaseName() + "." + info.suffix().toUpper());
\r
69 void RenameMultiDialog::on_btn_LowerExt_clicked()
\r
71 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
72 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
73 QFileInfo info(m_dir.absoluteFilePath(item->text()));
\r
74 ui->tableWidget->item(n, 1)->setText(
\r
75 info.completeBaseName() + "." + info.suffix().toLower());
\r
79 void RenameMultiDialog::on_replaceExec_clicked()
\r
81 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
82 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
83 QString name = item->text();
\r
85 if (!ui->replaceFrom->text().isEmpty()) {
\r
86 name.replace(ui->replaceFrom->text(), ui->replaceTo->text());
\r
88 if (!ui->insertText->text().isEmpty()) {
\r
89 int pos = ui->insertPos->text().toInt();
\r
91 pos = name.size() + pos + 1;
\r
93 name.insert(pos, ui->insertText->text());
\r
95 ui->tableWidget->item(n, 1)->setText(name);
\r
99 void RenameMultiDialog::on_numberExec_clicked()
\r
102 int nStart = ui->numberStart->text().toInt(&bOk);
\r
104 QMessageBox::critical(this,
\r
106 tr("連番開始番号が不正です。"));
\r
107 ui->numberStart->setFocus();
\r
110 int nColumn = ui->numberStart->text().size();
\r
111 int nStep = ui->numberStep->text().toInt();
\r
112 for (int n = 0; n < ui->tableWidget->rowCount(); n++, nStart += nStep) {
\r
113 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
114 QString name = item->text();
\r
115 QFileInfo info(m_dir.absoluteFilePath(name));
\r
117 QString first = ui->numberFirst->text();
\r
118 first.replace("?B", info.completeBaseName());
\r
119 first.replace("?E", info.suffix());
\r
121 QString last = ui->numberLast->text();
\r
122 last.replace("?B", info.completeBaseName());
\r
123 last.replace("?E", info.suffix());
\r
125 QString fmt = "%0" + QString("%1").arg(nColumn) + "d";
\r
127 number.sprintf(fmt.toLatin1(), nStart);
\r
129 ui->tableWidget->item(n, 1)->setText(first + number + last);
\r
133 void RenameMultiDialog::on_buttonBox_clicked(QAbstractButton *button)
\r
135 if (button->text() == tr("Reset")) {
\r
136 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
137 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
138 ui->tableWidget->item(n, 1)->setText(item->text());
\r
143 void RenameMultiDialog::accept()
\r
146 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
147 QTableWidgetItem *item = ui->tableWidget->item(n, 1);
\r
148 if (item->text().isEmpty()) {
\r
149 QMessageBox::critical(this,
\r
151 tr("変更後のファイル名が未入力です。"));
\r
152 ui->tableWidget->selectRow(n);
\r
157 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
158 QTableWidgetItem *iBefore = ui->tableWidget->item(n, 0);
\r
159 QTableWidgetItem *iAfter = ui->tableWidget->item(n, 1);
\r
160 if (iBefore->text() != iAfter->text()) {
\r
161 m_RenameMap.insert(m_dir.absoluteFilePath(iBefore->text()),
\r
162 m_dir.absoluteFilePath(iAfter->text()));
\r
166 IRenameDialog::accept();
\r