+///////////////////////////////////////////////////////////////////////////////
+/// \brief FolderPanel::updateAppearance
+///
+/// 外観を変更します。
+///
+void FolderPanel::updateAppearance(const Preferences &prefs)
+{
+ qDebug() << "FolderPanel::updateAppearance()";
+
+ QPalette pal;
+
+ pal = ui->filterLabel->palette();
+ pal.setColor(ui->filterLabel->backgroundRole(), prefs.folderViewBgColor(model()->isActive()));
+ pal.setColor(ui->filterLabel->foregroundRole(), prefs.folderViewFgColor(model()->isActive()));
+ ui->filterLabel->setAutoFillBackground(true);
+ ui->filterLabel->setPalette(pal);
+
+ pal = ui->locationBox->palette();
+ pal.setColor(QPalette::Base, prefs.locationBoxBgColor(model()->isActive()));
+ pal.setColor(QPalette::Text, prefs.locationBoxFgColor(model()->isActive()));
+ ui->locationBox->setPalette(pal);
+ ui->locationBox->setFont(prefs.getLocationBoxFont());
+
+ pal = ui->searchBox->palette();
+ pal.setColor(QPalette::Base, prefs.getSearchBoxBgColor());
+ pal.setColor(QPalette::Text, prefs.getSearchBoxFgColor());
+ ui->searchBox->setPalette(pal);
+ ui->searchBox->setFont(prefs.getSearchBoxFont());
+
+ pal = ui->folderView->palette();
+ pal.setColor(QPalette::Base, prefs.folderViewBgColor(model()->isActive()));
+ ui->folderView->setPalette(pal);
+
+ pal = ui->thumbnailView->palette();
+ pal.setColor(QPalette::Base, prefs.folderViewBgColor(model()->isActive()));
+ ui->thumbnailView->setPalette(pal);
+
+ QHeaderView *header = ui->folderView->verticalHeader();
+ QFont font = prefs.getFolderViewFont();
+ header->setDefaultSectionSize(QFontMetrics(font).height() * prefs.getLineHeight());
+}
+
+///////////////////////////////////////////////////////////////////////////////
+/// \brief FolderPanel::searchNext
+/// \param step 次なら1, 前なら-1
+///
+/// 次または前のアイテムを検索します。
+///
+void FolderPanel::searchNext(int step)
+{
+ qDebug() << "FolderPanel::searchNext()" << step;
+
+ QModelIndex index = model()->search(ui->searchBox->text(),
+ itemView()->currentIndex(),
+ step);
+ showSearchResult(index);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+/// \brief FolderPanel::setItemView
+/// \param name "folderView"または"thumbnailView"
+///
+/// 指定されたビューを可視状態にします。
+///
+void FolderPanel::setItemView(const QString &name)
+{
+ ui->folderView->setVisible(false);
+ ui->thumbnailView->setVisible(false);
+ findChild<QWidget*>(name)->setVisible(true);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+/// \brief FolderPanel::showSearchResult
+/// \param index 検索されたアイテム
+///
+/// 検索結果を表示します。
+///
+void FolderPanel::showSearchResult(const QModelIndex &index)
+{
+ Preferences prefs(this);
+
+ QPalette pal = ui->searchBox->palette();
+ if (index.isValid()) {
+ itemView()->setCurrentIndex(index);
+ pal.setColor(QPalette::Base, prefs.getSearchBoxBgColor());
+ pal.setColor(QPalette::Text, prefs.getSearchBoxFgColor());
+ }
+ else {
+ pal.setColor(QPalette::Base, prefs.getSearchBoxUnmatchBgColor());
+ pal.setColor(QPalette::Text, prefs.getSearchBoxUnmatchFgColor());
+ }
+ ui->searchBox->setPalette(pal);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+/// \brief FolderPanel::model_dataChanged
+/// \param topLeft (使用しません)
+/// \param bottomRight (使用しません)
+///
+/// アイテムの選択状態変更に伴う処理を行います。
+///
+void FolderPanel::model_dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
+{
+ Q_UNUSED(topLeft);
+ Q_UNUSED(bottomRight);
+
+ QFileInfoList list = model()->markedItems();
+ if (list.isEmpty()) {
+ ui->filterLabel->setText(tr("フィルタ:%1").arg(model()->nameFilters().join(" ")));
+ }
+ else {
+ int numFolders = 0;
+ int numFiles = 0;
+ qint64 totalSize = 0;
+ foreach (const QFileInfo &fi, list) {
+ if (fi.isDir()) {
+ ++numFolders;
+ }
+ else {
+ ++numFiles;
+ totalSize += fi.size();
+ }
+ }
+
+ QString text;
+ if (numFolders > 0) {
+ text += tr("%1個のフォルダ ").arg(numFolders);
+ }
+ if (numFiles > 0) {
+ text += tr("%1個のファイル ").arg(numFiles);
+ }
+ if (!text.isEmpty()) {
+ text += tr("を選択 合計%1").arg(fileSizeToString(totalSize));
+ }
+ ui->filterLabel->setText(text);
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////////
+/// \brief FolderPanel::model_Reset
+///
+/// モデルリセット後の処理を行います。
+///
+void FolderPanel::model_Reset()
+{
+ ui->locationBox->setText(model()->rootPath());
+ ui->filterLabel->setText(tr("フィルタ:%1").arg(model()->nameFilters().join(" ")));
+}