OSDN Git Service

Ver0.26
[gefu/Gefu.git] / overwritedialog.cpp
1 #include "preferences.h"\r
2 #include "overwritedialog.h"\r
3 #include "ui_overwritedialog.h"\r
4 \r
5 #include <QDir>\r
6 #include <QMessageBox>\r
7 #include <QDateTime>\r
8 \r
9 ///////////////////////////////////////////////////////////////////////////////\r
10 /// \brief OverWriteDialog::OverWriteDialog\r
11 /// \param parent   親ウィジェット\r
12 ///\r
13 /// コンストラクタ\r
14 ///\r
15 OverWriteDialog::OverWriteDialog(QWidget *parent) :\r
16     QDialog(parent),\r
17     ui(new Ui::OverWriteDialog),\r
18     m_tgtPath()\r
19 {\r
20     ui->setupUi(this);\r
21 \r
22     QHeaderView *header = ui->tableWidget->horizontalHeader();\r
23     header->setSectionResizeMode(QHeaderView::ResizeToContents);\r
24     header->setSectionResizeMode(0, QHeaderView::Stretch);\r
25 \r
26     connect(ui->rbAppendNumber, SIGNAL(clicked()), this, SLOT(onRenameOrElse()));\r
27     connect(ui->rbOverWrite, SIGNAL(clicked()), this, SLOT(onRenameOrElse()));\r
28     connect(ui->rbOverWriteIfNew, SIGNAL(clicked()), this, SLOT(onRenameOrElse()));\r
29     connect(ui->rbRename, SIGNAL(clicked()), this, SLOT(onRenameOrElse()));\r
30     connect(ui->rbSkip, SIGNAL(clicked()), this, SLOT(onRenameOrElse()));\r
31 }\r
32 \r
33 ///////////////////////////////////////////////////////////////////////////////\r
34 /// \brief OverWriteDialog::~OverWriteDialog\r
35 ///\r
36 /// デストラクタ\r
37 ///\r
38 OverWriteDialog::~OverWriteDialog()\r
39 {\r
40     delete ui;\r
41 }\r
42 \r
43 ///////////////////////////////////////////////////////////////////////////////\r
44 /// \brief OverWriteDialog::reset\r
45 ///\r
46 /// 設定を初期化します。\r
47 ///\r
48 void OverWriteDialog::reset()\r
49 {\r
50     QString method = Preferences(this).getCopyBehavior();\r
51     QRadioButton *radio = findChild<QRadioButton*>("rb" + method);\r
52     if (radio == NULL) {\r
53         radio = ui->rbOverWriteIfNew;\r
54     }\r
55     radio->setChecked(true);\r
56     if (radio != ui->rbRename) {\r
57         ui->lineEdit->setEnabled(false);\r
58     }\r
59 \r
60     ui->keepSetting->setChecked(false);\r
61 }\r
62 \r
63 ///////////////////////////////////////////////////////////////////////////////\r
64 /// \brief OverWriteDialog::setFileInfo\r
65 /// \param srcPath  ソースパス\r
66 /// \param tgtPath  ターゲットパス\r
67 ///\r
68 /// ソース・ターゲットの情報を設定します。\r
69 ///\r
70 void OverWriteDialog::setFileInfo(const QString srcPath, const QString tgtPath)\r
71 {\r
72     QFileInfo srcInfo(srcPath);\r
73     QFileInfo tgtInfo(tgtPath);\r
74     m_tgtPath = tgtPath;\r
75     ui->lineEdit->setText(tgtInfo.fileName());\r
76 \r
77     QTableWidgetItem *iSrcName = new QTableWidgetItem(srcInfo.fileName());\r
78     iSrcName->setFlags(iSrcName->flags() ^ Qt::ItemIsEditable);\r
79     iSrcName->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter);\r
80     ui->tableWidget->setItem(0, 0, iSrcName);\r
81 \r
82     QTableWidgetItem *iTgtName = new QTableWidgetItem(tgtInfo.fileName());\r
83     iTgtName->setFlags(iTgtName->flags() ^ Qt::ItemIsEditable);\r
84     iTgtName->setTextAlignment(Qt::AlignLeft | Qt::AlignVCenter);\r
85     ui->tableWidget->setItem(1, 0, iTgtName);\r
86 \r
87     QTableWidgetItem *iSrcSize = new QTableWidgetItem(tr("%1 Bytes").arg(srcInfo.size()));\r
88     iSrcSize->setFlags(iSrcSize->flags() ^ Qt::ItemIsEditable);\r
89     iSrcSize->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);\r
90     ui->tableWidget->setItem(0, 1, iSrcSize);\r
91 \r
92     QTableWidgetItem *iTgtSize = new QTableWidgetItem(tr("%1 Bytes").arg(tgtInfo.size()));\r
93     iTgtSize->setFlags(iTgtSize->flags() ^ Qt::ItemIsEditable);\r
94     iTgtSize->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);\r
95     ui->tableWidget->setItem(1, 1, iTgtSize);\r
96 \r
97     QTableWidgetItem *iSrcDate = new QTableWidgetItem(srcInfo.lastModified().toString("yy/MM/dd hh:mm"));\r
98     iSrcDate->setFlags(iSrcDate->flags() ^ Qt::ItemIsEditable);\r
99     iSrcDate->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);\r
100     ui->tableWidget->setItem(0, 2, iSrcDate);\r
101 \r
102     QTableWidgetItem *iTgtDate = new QTableWidgetItem(tgtInfo.lastModified().toString("yy/MM/dd hh:mm"));\r
103     iTgtDate->setFlags(iTgtDate->flags() ^ Qt::ItemIsEditable);\r
104     iTgtDate->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);\r
105     ui->tableWidget->setItem(1, 2, iTgtDate);\r
106 }\r
107 \r
108 ///////////////////////////////////////////////////////////////////////////////\r
109 /// \brief OverWriteDialog::copyMethod\r
110 /// \return 選択されているコピー方法を返します。\r
111 ///\r
112 QString OverWriteDialog::copyMethod() const\r
113 {\r
114     return ui->method->checkedButton()->objectName();\r
115 }\r
116 \r
117 ///////////////////////////////////////////////////////////////////////////////\r
118 /// \brief OverWriteDialog::isKeepSetting\r
119 /// \return 同じ処理を行うかのチェック状態を返します。\r
120 ///\r
121 bool OverWriteDialog::isKeepSetting() const\r
122 {\r
123     return ui->keepSetting->isChecked();\r
124 }\r
125 \r
126 ///////////////////////////////////////////////////////////////////////////////\r
127 /// \brief OverWriteDialog::alias\r
128 /// \return 別名を返します。\r
129 ///\r
130 const QString OverWriteDialog::alias() const\r
131 {\r
132     return ui->lineEdit->text();\r
133 }\r
134 \r
135 ///////////////////////////////////////////////////////////////////////////////\r
136 /// \brief OverWriteDialog::onRenameOrElse\r
137 ///\r
138 /// 別名の活性・非活性を切り替えます。\r
139 ///\r
140 void OverWriteDialog::onRenameOrElse()\r
141 {\r
142     if (ui->rbRename->isChecked()) {\r
143         ui->lineEdit->setEnabled(true);\r
144     }\r
145     else {\r
146         ui->lineEdit->setEnabled(false);\r
147     }\r
148 }\r
149 \r
150 ///////////////////////////////////////////////////////////////////////////////\r
151 /// \brief OverWriteDialog::accept\r
152 ///\r
153 /// OKボタンクリック時の処理を行います。\r
154 ///\r
155 void OverWriteDialog::accept()\r
156 {\r
157     if (ui->rbRename->isChecked()) {\r
158         QString newPath = QFileInfo(m_tgtPath).absoluteDir().absoluteFilePath(ui->lineEdit->text());\r
159         if (QFileInfo(newPath).exists()) {\r
160             QMessageBox::critical(\r
161                         this,\r
162                         tr("エラー"),\r
163                         tr("すでに同名のファイルが存在しています。"));\r
164             ui->lineEdit->setFocus();\r
165             return;\r
166         }\r
167     }\r
168 \r
169     QDialog::accept();\r
170 }\r