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 AbstractRenameDialog(parent),
\r
8 ui(new Ui::RenameMultiDialog)
\r
14 labels << tr("変更前") << tr("変更後");
\r
15 ui->tableWidget->setHorizontalHeaderLabels(labels);
\r
17 ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
\r
18 ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
\r
21 RenameMultiDialog::~RenameMultiDialog()
\r
26 void RenameMultiDialog::setNames(const QFileInfoList &names)
\r
28 foreach (const QFileInfo &info, names) {
\r
29 int row = ui->tableWidget->rowCount();
\r
30 ui->tableWidget->insertRow(row);
\r
32 QTableWidgetItem *iBefore = new QTableWidgetItem(info.fileName());
\r
33 iBefore->setFlags(iBefore->flags() ^ Qt::ItemIsEditable);
\r
34 iBefore->setIcon(QFileIconProvider().icon(info));
\r
35 ui->tableWidget->setItem(row, 0, iBefore);
\r
37 QTableWidgetItem *iAfter = new QTableWidgetItem(info.fileName());
\r
38 ui->tableWidget->setItem(row, 1, iAfter);
\r
40 ui->tableWidget->resizeColumnsToContents();
\r
41 ui->tableWidget->resizeRowsToContents();
\r
44 void RenameMultiDialog::on_btn_UpperAll_clicked()
\r
46 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
47 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
48 ui->tableWidget->item(n, 1)->setText(item->text().toUpper());
\r
52 void RenameMultiDialog::on_btn_LowerAll_clicked()
\r
54 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
55 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
56 ui->tableWidget->item(n, 1)->setText(item->text().toLower());
\r
60 void RenameMultiDialog::on_btn_UpperExt_clicked()
\r
62 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
63 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
64 QFileInfo info(m_dir.absoluteFilePath(item->text()));
\r
65 ui->tableWidget->item(n, 1)->setText(
\r
66 info.completeBaseName() + "." + info.suffix().toUpper());
\r
70 void RenameMultiDialog::on_btn_LowerExt_clicked()
\r
72 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
73 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
74 QFileInfo info(m_dir.absoluteFilePath(item->text()));
\r
75 ui->tableWidget->item(n, 1)->setText(
\r
76 info.completeBaseName() + "." + info.suffix().toLower());
\r
80 void RenameMultiDialog::on_replaceExec_clicked()
\r
82 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
83 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
84 QString name = item->text();
\r
86 if (!ui->replaceFrom->text().isEmpty()) {
\r
87 name.replace(ui->replaceFrom->text(), ui->replaceTo->text());
\r
89 if (!ui->insertText->text().isEmpty()) {
\r
90 int pos = ui->insertPos->text().toInt();
\r
92 pos = name.size() + pos + 1;
\r
94 name.insert(pos, ui->insertText->text());
\r
96 ui->tableWidget->item(n, 1)->setText(name);
\r
100 void RenameMultiDialog::on_numberExec_clicked()
\r
103 int nStart = ui->numberStart->text().toInt(&bOk);
\r
105 QMessageBox::critical(this,
\r
107 tr("連番開始番号が不正です。"));
\r
108 ui->numberStart->setFocus();
\r
111 int nColumn = ui->numberStart->text().size();
\r
112 int nStep = ui->numberStep->text().toInt();
\r
113 for (int n = 0; n < ui->tableWidget->rowCount(); n++, nStart += nStep) {
\r
114 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
115 QString name = item->text();
\r
116 QFileInfo info(m_dir.absoluteFilePath(name));
\r
118 QString first = ui->numberFirst->text();
\r
119 first.replace("?B", info.completeBaseName());
\r
120 first.replace("?E", info.suffix());
\r
122 QString last = ui->numberLast->text();
\r
123 last.replace("?B", info.completeBaseName());
\r
124 last.replace("?E", info.suffix());
\r
126 QString fmt = "%0" + QString("%1").arg(nColumn) + "d";
\r
128 number.sprintf(fmt.toLatin1(), nStart);
\r
130 ui->tableWidget->item(n, 1)->setText(first + number + last);
\r
134 void RenameMultiDialog::on_buttonBox_clicked(QAbstractButton *button)
\r
136 if (button->text() == tr("Reset")) {
\r
137 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
138 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
139 ui->tableWidget->item(n, 1)->setText(item->text());
\r
144 void RenameMultiDialog::accept()
\r
147 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
148 QTableWidgetItem *item = ui->tableWidget->item(n, 1);
\r
149 if (item->text().isEmpty()) {
\r
150 QMessageBox::critical(this,
\r
152 tr("変更後のファイル名が未入力です。"));
\r
153 ui->tableWidget->selectRow(n);
\r
158 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
159 QTableWidgetItem *iBefore = ui->tableWidget->item(n, 0);
\r
160 QTableWidgetItem *iAfter = ui->tableWidget->item(n, 1);
\r
161 if (iBefore->text() != iAfter->text()) {
\r
162 m_RenameMap.insert(m_dir.absoluteFilePath(iBefore->text()),
\r
163 m_dir.absoluteFilePath(iAfter->text()));
\r
167 AbstractRenameDialog::accept();
\r