1 #include "renamemultidialog.h"
\r
2 #include "ui_renamemultidialog.h"
\r
4 #include <QFileIconProvider>
\r
5 #include <QMessageBox>
\r
7 ///////////////////////////////////////////////////////////////////////////////
\r
8 /// \brief RenameMultiDialog::RenameMultiDialog
\r
9 /// \param parent 親ウィジェット
\r
13 RenameMultiDialog::RenameMultiDialog(QWidget *parent) :
\r
14 AbstractRenameDialog(parent),
\r
15 ui(new Ui::RenameMultiDialog)
\r
21 labels << tr("変更前") << tr("変更後");
\r
22 ui->tableWidget->setHorizontalHeaderLabels(labels);
\r
24 ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
\r
25 ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
\r
28 ///////////////////////////////////////////////////////////////////////////////
\r
29 /// \brief RenameMultiDialog::~RenameMultiDialog
\r
33 RenameMultiDialog::~RenameMultiDialog()
\r
38 ///////////////////////////////////////////////////////////////////////////////
\r
39 /// \brief RenameMultiDialog::setNames
\r
40 /// \param names ファイルインフォリスト
\r
42 /// 変更前後のファイル名を設定します。
\r
44 void RenameMultiDialog::setNames(const QFileInfoList &names)
\r
46 foreach (const QFileInfo &info, names) {
\r
47 int row = ui->tableWidget->rowCount();
\r
48 ui->tableWidget->insertRow(row);
\r
50 QTableWidgetItem *iBefore = new QTableWidgetItem(info.fileName());
\r
51 iBefore->setFlags(iBefore->flags() ^ Qt::ItemIsEditable);
\r
52 iBefore->setIcon(QFileIconProvider().icon(info));
\r
53 ui->tableWidget->setItem(row, 0, iBefore);
\r
55 QTableWidgetItem *iAfter = new QTableWidgetItem(info.fileName());
\r
56 ui->tableWidget->setItem(row, 1, iAfter);
\r
58 ui->tableWidget->resizeColumnsToContents();
\r
59 ui->tableWidget->resizeRowsToContents();
\r
62 ///////////////////////////////////////////////////////////////////////////////
\r
63 /// \brief RenameMultiDialog::on_btn_UpperAll_clicked
\r
65 /// ファイル名全体を大文字にします。
\r
67 void RenameMultiDialog::on_btn_UpperAll_clicked()
\r
69 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
70 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
71 ui->tableWidget->item(n, 1)->setText(item->text().toUpper());
\r
75 ///////////////////////////////////////////////////////////////////////////////
\r
76 /// \brief RenameMultiDialog::on_btn_LowerAll_clicked
\r
78 /// ファイル名全体を小文字にします。
\r
80 void RenameMultiDialog::on_btn_LowerAll_clicked()
\r
82 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
83 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
84 ui->tableWidget->item(n, 1)->setText(item->text().toLower());
\r
88 ///////////////////////////////////////////////////////////////////////////////
\r
89 /// \brief RenameMultiDialog::on_btn_UpperExt_clicked
\r
93 void RenameMultiDialog::on_btn_UpperExt_clicked()
\r
95 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
96 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
97 QFileInfo info(m_dir.absoluteFilePath(item->text()));
\r
98 ui->tableWidget->item(n, 1)->setText(
\r
99 info.completeBaseName() + "." + info.suffix().toUpper());
\r
103 ///////////////////////////////////////////////////////////////////////////////
\r
104 /// \brief RenameMultiDialog::on_btn_LowerExt_clicked
\r
108 void RenameMultiDialog::on_btn_LowerExt_clicked()
\r
110 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
111 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
112 QFileInfo info(m_dir.absoluteFilePath(item->text()));
\r
113 ui->tableWidget->item(n, 1)->setText(
\r
114 info.completeBaseName() + "." + info.suffix().toLower());
\r
118 ///////////////////////////////////////////////////////////////////////////////
\r
119 /// \brief RenameMultiDialog::on_replaceExec_clicked
\r
123 void RenameMultiDialog::on_replaceExec_clicked()
\r
125 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
126 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
127 QString name = item->text();
\r
129 if (!ui->replaceFrom->text().isEmpty()) {
\r
130 name.replace(ui->replaceFrom->text(), ui->replaceTo->text());
\r
132 if (!ui->insertText->text().isEmpty()) {
\r
133 int pos = ui->insertPos->text().toInt();
\r
135 pos = name.size() + pos + 1;
\r
137 name.insert(pos, ui->insertText->text());
\r
139 ui->tableWidget->item(n, 1)->setText(name);
\r
143 ///////////////////////////////////////////////////////////////////////////////
\r
144 /// \brief RenameMultiDialog::on_numberExec_clicked
\r
148 void RenameMultiDialog::on_numberExec_clicked()
\r
151 int nStart = ui->numberStart->text().toInt(&bOk);
\r
153 QMessageBox::critical(this,
\r
155 tr("連番開始番号が不正です。"));
\r
156 ui->numberStart->setFocus();
\r
159 int nColumn = ui->numberStart->text().size();
\r
160 int nStep = ui->numberStep->text().toInt();
\r
161 for (int n = 0; n < ui->tableWidget->rowCount(); n++, nStart += nStep) {
\r
162 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
163 QString name = item->text();
\r
164 QFileInfo info(m_dir.absoluteFilePath(name));
\r
166 QString first = ui->numberFirst->text();
\r
167 first.replace("?B", info.completeBaseName());
\r
168 first.replace("?E", info.suffix());
\r
170 QString last = ui->numberLast->text();
\r
171 last.replace("?B", info.completeBaseName());
\r
172 last.replace("?E", info.suffix());
\r
174 QString fmt = "%0" + QString("%1").arg(nColumn) + "d";
\r
176 number.sprintf(fmt.toLatin1(), nStart);
\r
178 ui->tableWidget->item(n, 1)->setText(first + number + last);
\r
182 ///////////////////////////////////////////////////////////////////////////////
\r
183 /// \brief RenameMultiDialog::on_buttonBox_clicked
\r
184 /// \param button 押されたボタン
\r
186 /// リセットボタンクリック時の処理を行います。
\r
188 void RenameMultiDialog::on_buttonBox_clicked(QAbstractButton *button)
\r
190 if (button->text() == tr("Reset")) {
\r
191 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
192 QTableWidgetItem *item = ui->tableWidget->item(n, 0);
\r
193 ui->tableWidget->item(n, 1)->setText(item->text());
\r
198 ///////////////////////////////////////////////////////////////////////////////
\r
199 /// \brief RenameMultiDialog::accept
\r
201 /// OKボタンクリック時の処理を行います。
\r
203 void RenameMultiDialog::accept()
\r
206 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
207 QTableWidgetItem *item = ui->tableWidget->item(n, 1);
\r
208 if (item->text().isEmpty()) {
\r
209 QMessageBox::critical(this,
\r
211 tr("変更後のファイル名が未入力です。"));
\r
212 ui->tableWidget->selectRow(n);
\r
217 for (int n = 0; n < ui->tableWidget->rowCount(); n++) {
\r
218 QTableWidgetItem *iBefore = ui->tableWidget->item(n, 0);
\r
219 QTableWidgetItem *iAfter = ui->tableWidget->item(n, 1);
\r
220 if (iBefore->text() != iAfter->text()) {
\r
221 m_RenameMap.insert(m_dir.absoluteFilePath(iBefore->text()),
\r
222 m_dir.absoluteFilePath(iAfter->text()));
\r
226 AbstractRenameDialog::accept();
\r