\r
FolderPanel::FolderPanel(QWidget *parent) :\r
QWidget(parent),\r
- ui(new Ui::FolderPanel),\r
- m_dir(),\r
- m_IconFactory(),\r
- m_fsWatcher(new QFileSystemWatcher(this)),\r
- m_bUpdating(false)\r
+ ui(new Ui::FolderPanel)\r
{\r
ui->setupUi(this);\r
ui->fileTable->setModel(new FileTableModel(this));\r
header->setSectionResizeMode(1, QHeaderView::Stretch);\r
header->setSectionResizeMode(2, QHeaderView::ResizeToContents);\r
header->setSectionResizeMode(3, QHeaderView::ResizeToContents);\r
+ header->setDefaultSectionSize(header->minimumSectionSize());\r
+\r
+ QHeaderView *vHeader = ui->fileTable->verticalHeader();\r
+ vHeader->setDefaultSectionSize(vHeader->defaultSectionSize() * 0.75);\r
}\r
\r
FolderPanel::~FolderPanel()\r
{\r
- UninstallWatcher();\r
delete ui;\r
}\r
\r
return ui->fileTable;\r
}\r
\r
-void FolderPanel::setCurrentFolder(const QString &path)\r
-{\r
- QSettings settings;\r
-\r
- getMainWnd()->setStatusText(tr("ファイルリストを更新中..."));\r
- QString curDir = m_dir.absolutePath();\r
- m_dir.setPath(QDir::cleanPath(path));\r
- m_dir.canonicalPath();\r
-\r
- QFileInfoList list = m_dir.entryInfoList();\r
-\r
- if (list.empty()) {\r
- QMessageBox::critical(\r
- this,\r
- tr("エラー"),\r
- tr("フォルダが存在しないか利用できません。"));\r
- m_dir.setPath(curDir);\r
- ui->locationField->setText(curDir);\r
- getMainWnd()->setStatusText(tr("レディ"));\r
- return;\r
- }\r
-\r
- // フォルダの変更監視\r
- InstallWatcher();\r
-\r
- // QtはWindowsのシステムファイル属性をうまく判定できていないため、\r
- // GetFileAttributes APIを使ってフィルタする\r
- bool showSystem;\r
- showSystem = settings.value(IniKey_ShowSystem, false).toBool();\r
-\r
- beginUpdate();\r
-// ui->fileTable->model()->removeRows(0, ui->fileTable->rowCount());\r
-// for (int i = 0; i < list.size(); i++) {\r
-// QFileInfo info = list.at(i);\r
-// if (info.fileName() == ".." && m_dir.isRoot()) {\r
-// continue;\r
-// }\r
-\r
-//#ifdef Q_OS_WIN32\r
-// DWORD dwFlags = ::GetFileAttributes(info.absoluteFilePath().toStdWString().c_str());\r
-// if (!showSystem && dwFlags != DWORD(-1) && (dwFlags & FILE_ATTRIBUTE_SYSTEM)) {\r
-// continue;\r
-// }\r
-//#endif\r
-\r
-// int row = ui->fileTable->rowCount();\r
-// ui->fileTable->insertRow(row);\r
-\r
-// // ファイル名とアイコン\r
-// QTableWidgetItem *iName = new QTableWidgetItem(info.fileName());\r
-// iName->setFlags(iName->flags() ^ Qt::ItemIsEditable);\r
-// if (info.fileName() == "..") {\r
-// iName->setIcon(QIcon(":/images/Up.png"));\r
-// }\r
-// else {\r
-// iName->setIcon(m_IconFactory.icon(info));\r
-// }\r
-// ui->fileTable->setItem(row, 1, iName);\r
-\r
-// // サイズ\r
-// QString str;\r
-// if (info.isDir()) {\r
-// str = tr("<DIR>");\r
-// }\r
-// else {\r
-// str = FilesizeToString(info.size());\r
-// }\r
-// QTableWidgetItem *iSize = new QTableWidgetItem(str);\r
-// iSize->setFlags(iSize->flags() ^ Qt::ItemIsEditable);\r
-// iSize->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);\r
-// ui->fileTable->setItem(row, 2, iSize);\r
-\r
-// // 最終更新日時\r
-// QTableWidgetItem *iDateTime = new QTableWidgetItem(\r
-// info.lastModified().toString("yy/MM/dd hh:mm"));\r
-// iDateTime->setFlags(iDateTime->flags() ^ Qt::ItemIsEditable);\r
-// ui->fileTable->setItem(row, 3, iDateTime);\r
-\r
-// // シグナル処理の関係で、チェックボックスは最後に追加する\r
-// QTableWidgetItem *iCheck = new QTableWidgetItem(tr(""));\r
-// iCheck->setFlags(iCheck->flags() ^ Qt::ItemIsEditable);\r
-// if (info.fileName() != "..") {\r
-// iCheck->setFlags(iCheck->flags() | Qt::ItemIsUserCheckable);\r
-// iCheck->setCheckState(Qt::Unchecked);\r
-// }\r
-// ui->fileTable->setItem(row, 0, iCheck);\r
-\r
-// }\r
- ui->fileTable->selectRow(0);\r
- ui->fileTable->resizeRowsToContents();\r
-\r
- ui->locationField->setText(m_dir.absolutePath());\r
- getMainWnd()->setStatusText(tr("レディ"));\r
- endUpdate();\r
-}\r
-\r
-void FolderPanel::InstallWatcher()\r
-{\r
- UninstallWatcher();\r
-\r
- m_fsWatcher = new QFileSystemWatcher(this);\r
- m_fsWatcher->addPath(m_dir.absolutePath());\r
- connect(m_fsWatcher, SIGNAL(directoryChanged(QString)),\r
- this, SLOT(on_directoryChanged(QString)));\r
-}\r
-\r
-void FolderPanel::UninstallWatcher()\r
-{\r
- if (m_fsWatcher != NULL) {\r
- delete m_fsWatcher;\r
- }\r
- m_fsWatcher = NULL;\r
-}\r
-\r
const QString FolderPanel::side() const\r
{\r
return ui->fileTable->side();\r
ui->locationField, SLOT(setText(QString)));\r
connect(model, SIGNAL(stateChanged(int,int,quint64)),\r
this, SLOT(onStateChanged(int,int,quint64)));\r
+ connect(model, SIGNAL(listUpdated()),\r
+ ui->fileTable, SLOT(refresh()));\r
\r
//>>>>> フィルタ初期化\r
model->setFilter(QDir::NoDot | QDir::AllDirs | QDir::Files);\r
default: model->setSorting(model->sorting() | QDir::Name); break;\r
}\r
// デフォルトだと文字列は昇順で、数値は降順…orz\r
- int orderBy = settings.value(side + slash + IniKey_OrderBy, OrderByDesc).toInt();\r
+ int orderBy = settings.value(side + slash + IniKey_OrderBy, OrderByAsc).toInt();\r
if (((sortBy == SortByName || sortBy == SortByType) && orderBy == OrderByDesc) ||\r
((sortBy == SortByDate || sortBy == SortBySize) && orderBy == OrderByAsc))\r
{\r
//>>>>> 監視フォルダ初期化\r
QString key = side + slash + IniKey_Dir;\r
QString path = settings.value(key, QDir::homePath()).toString();\r
- model->setPath(path);\r
\r
+ model->updateAppearance();\r
ui->fileTable->setModel(model);\r
- ui->fileTable->selectRow(0);\r
- ui->fileTable->resizeColumnsToContents();\r
- ui->fileTable->resizeRowsToContents();\r
+ ui->fileTable->setRootPath(path, true);\r
+}\r
+\r
+void FolderPanel::updateAppearance()\r
+{\r
+ QSettings settings;\r
+ QPalette palette;\r
+ QFont font;\r
+\r
+ font = ui->locationField->font();\r
+ font = settings.value(IniKey_BoxFont, font).value<QFont>();\r
+ palette = ui->locationField->palette();\r
+ palette.setColor(\r
+ QPalette::Base,\r
+ settings.value(IniKey_BoxColorBg, palette.base()).value<QColor>());\r
+ palette.setColor(\r
+ QPalette::Text,\r
+ settings.value(IniKey_BoxColorFg, palette.text()).value<QColor>());\r
+ ui->locationField->setFont(font);\r
+ ui->locationField->setPalette(palette);\r
+\r
+ palette = ui->fileTable->palette();\r
+ palette.setColor(\r
+ QPalette::Base,\r
+ settings.value(IniKey_ViewColorBgNormal, palette.base()).value<QColor>());\r
+ ui->fileTable->setPalette(palette);\r
+\r
+ FileTableModel *model = static_cast<FileTableModel*>(ui->fileTable->model());\r
+ if (model) {\r
+ model->updateAppearance();\r
+ }\r
}\r
\r
void FolderPanel::onStateChanged(int checkedFolders, int checkedFiles, quint64 totalSize)\r
ui->locationField->blockSignals(true);\r
\r
QString path = ui->locationField->text();\r
- setCurrentFolder(path);\r
+ ui->fileTable->setRootPath(path, true);\r
\r
ui->locationField->blockSignals(false);\r
}\r
\r
-void FolderPanel::on_directoryChanged(QString)\r
-{\r
-// int row = ui->fileTable->currentRow();\r
-// this->setCurrentFolder(m_dir.absolutePath());\r
-// if (row >= ui->fileTable->rowCount()) {\r
-// row = ui->fileTable->rowCount() - 1;\r
-// }\r
-// ui->fileTable->selectRow(row);\r
-}\r
-\r
-//void FolderPanel::on_fileTable_itemSelectionChanged()\r
-//{\r
-// if (isUpdating()) {\r
-// return;\r
-// }\r
-\r
-// int row = ui->fileTable->currentRow();\r
-// if (0 <= row && row < ui->fileTable->rowCount()) {\r
-// getMainWnd()->setStatusText(ui->fileTable->item(row, 1)->text());\r
-// }\r
-//}\r