Gefu is an Experimental File Utility.
-#### 2014/09/22 Ver0.25
+#### 2014/09/24 Ver0.25
* 内蔵ビューアでのファイル読み込みを別スレッド化しました。
* 内蔵バイナリビューアを実装しました。
* 内蔵イメージビューアを自前描画に変更しました。
Gefu(げふぅ) - Gefu is an Experimental File Utility - \r
Version 0.25\r
===============================================================================\r
- 2014/09/22 @miyabi_satoh\r
+ 2014/09/24 @miyabi_satoh\r
\r
◇ 概要 ◇\r
\r
Twitter: https://twitter.com/miyabi_satoh\r
\r
◇ 履歴 ◇\r
-#### 2014/09/22 Ver0.25\r
+#### 2014/09/24 Ver0.25\r
* 内蔵ビューアでのファイル読み込みを別スレッド化しました。\r
* 内蔵バイナリビューアを実装しました。\r
* 内蔵イメージビューアを自前描画に変更しました。\r
#include "operationworker.h"\r
#include "global.h"\r
\r
-#include <QFileInfo>\r
-\r
class CopyMoveWorker : public OperationWorker\r
{\r
Q_OBJECT\r
qApp->setOrganizationName("gefu");\r
qApp->setWindowIcon(QIcon("://images/file-manager.png"));\r
\r
- // 古い設定ファイルを削除する\r
-#ifdef Q_OS_MAC\r
- QSettings::setDefaultFormat(QSettings::IniFormat);\r
- QSettings settings(this);\r
- if (QFileInfo::exists(settings.fileName())) {\r
- QFile(settings.fileName()).remove();\r
- QDir().rmdir(QFileInfo(settings.fileName()).absolutePath());\r
- }\r
-#endif\r
-\r
// 設定の初期化\r
Preferences prefs(this);\r
if (prefs.isReset()) {\r
#include <QNetworkReply>\r
#include <QAbstractItemView>\r
#include <QMainWindow>\r
-\r
class FolderView;\r
class FolderModel;\r
class Panel;\r
class MainWindow;\r
}\r
\r
-///////////////////////////////////////////////////////////////////////////////\r
-/// \brief The MainWindow class\r
-///\r
class MainWindow : public QMainWindow\r
{\r
Q_OBJECT\r
#include "operationdialog.h"\r
#include "ui_operationdialog.h"\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OperationDialog::OperationDialog\r
+/// \param parent 親ウィジェット\r
+///\r
+/// コンストラクタ\r
+///\r
OperationDialog::OperationDialog(QWidget *parent) :\r
QDialog(parent),\r
ui(new Ui::OperationDialog),\r
resize(parent->width() * 0.8, height());\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OperationDialog::~OperationDialog\r
+///\r
+/// デストラクタ\r
+///\r
OperationDialog::~OperationDialog()\r
{\r
delete ui;\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OperationDialog::setAutoClose\r
+/// \param yes 処理完了時に自動で閉じる場合はtrue\r
+///\r
void OperationDialog::setAutoClose(bool yes)\r
{\r
ui->chkAutoClose->setChecked(yes);\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OperationDialog::autoClose\r
+/// \return 処理完了時に自動で閉じる場合はtrue\r
+///\r
bool OperationDialog::autoClose() const\r
{\r
return ui->chkAutoClose->isChecked();\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OperationDialog::onProgress\r
+/// \param msg 表示するメッセージ\r
+///\r
+/// 処理経過メッセージを表示します。\r
+///\r
void OperationDialog::onProgress(const QString &msg)\r
{\r
ui->textEdit->append(msg + " ... ");\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OperationDialog::onSuccess\r
+/// \param msg 表示するメッセージ\r
+///\r
+/// 処理成功メッセージを表示します。\r
+///\r
void OperationDialog::onSuccess(const QString &msg)\r
{\r
ui->textEdit->append("<font color='green'>" + msg + "</font>");\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OperationDialog::onError\r
+/// \param msg 表示するメッセージ\r
+///\r
+/// エラーメッセージを表示します。\r
+///\r
void OperationDialog::onError(const QString &msg)\r
{\r
m_Error = true;\r
ui->textEdit->append("<font color='red'><strong>" + msg + "</strong></font>");\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OperationDialog::onFinished\r
+/// \param abort 中断した場合はtrue\r
+///\r
+/// 処理終了時の処理を行います。\r
+///\r
void OperationDialog::onFinished(bool abort)\r
{\r
ui->progressBar->setMaximum(1);\r
}\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OperationDialog::on_btnCloseCancel_clicked\r
+///\r
+/// 「閉じる」または「キャンセル」ボタンクリック時の処理を行います。\r
+///\r
void OperationDialog::on_btnCloseCancel_clicked()\r
{\r
if (ui->btnCloseCancel->text() == tr("閉じる")) {\r
}\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OperationDialog::on_btnShowDetail_clicked\r
+///\r
+/// 詳細表示/非表示の処理を行います。\r
+///\r
void OperationDialog::on_btnShowDetail_clicked()\r
{\r
if (ui->textEdit->isVisible()) {\r
}\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OperationDialog::exec\r
+/// \return ダイアログ処理の結果を返します。\r
+///\r
+/// ダイアログを表示します。\r
+///\r
int OperationDialog::exec()\r
{\r
connect(m_worker, SIGNAL(finished(bool)), this, SLOT(onFinished(bool)));\r
#include <QMessageBox>\r
#include <QDateTime>\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OverWriteDialog::OverWriteDialog\r
+/// \param parent 親ウィジェット\r
+///\r
+/// コンストラクタ\r
+///\r
OverWriteDialog::OverWriteDialog(QWidget *parent) :\r
QDialog(parent),\r
ui(new Ui::OverWriteDialog),\r
connect(ui->rbSkip, SIGNAL(clicked()), this, SLOT(onRenameOrElse()));\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OverWriteDialog::~OverWriteDialog\r
+///\r
+/// デストラクタ\r
+///\r
OverWriteDialog::~OverWriteDialog()\r
{\r
delete ui;\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OverWriteDialog::reset\r
+///\r
+/// 設定を初期化します。\r
+///\r
void OverWriteDialog::reset()\r
{\r
QString method = Preferences(this).getCopyBehavior();\r
ui->keepSetting->setChecked(false);\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OverWriteDialog::setFileInfo\r
+/// \param srcPath ソースパス\r
+/// \param tgtPath ターゲットパス\r
+///\r
+/// ソース・ターゲットの情報を設定します。\r
+///\r
void OverWriteDialog::setFileInfo(const QString srcPath, const QString tgtPath)\r
{\r
QFileInfo srcInfo(srcPath);\r
ui->tableWidget->setItem(1, 2, iTgtDate);\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OverWriteDialog::copyMethod\r
+/// \return 選択されているコピー方法を返します。\r
+///\r
QString OverWriteDialog::copyMethod() const\r
{\r
return ui->method->checkedButton()->objectName();\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OverWriteDialog::isKeepSetting\r
+/// \return 同じ処理を行うかのチェック状態を返します。\r
+///\r
bool OverWriteDialog::isKeepSetting() const\r
{\r
return ui->keepSetting->isChecked();\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OverWriteDialog::alias\r
+/// \return 別名を返します。\r
+///\r
const QString OverWriteDialog::alias() const\r
{\r
return ui->lineEdit->text();\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OverWriteDialog::onRenameOrElse\r
+///\r
+/// 別名の活性・非活性を切り替えます。\r
+///\r
void OverWriteDialog::onRenameOrElse()\r
{\r
if (ui->rbRename->isChecked()) {\r
}\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief OverWriteDialog::accept\r
+///\r
+/// OKボタンクリック時の処理を行います。\r
+///\r
void OverWriteDialog::accept()\r
{\r
if (ui->rbRename->isChecked()) {\r
#include <QPainter>
#include <QStandardPaths>
+///////////////////////////////////////////////////////////////////////////////
+/// \brief PreferenceDialog::PreferenceDialog
+/// \param parent 親ウィジェット
+///
+/// コンストラクタ
+///
PreferenceDialog::PreferenceDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::PreferenceDialog)
ui->archiverPath->setText(prefs.getArchiverPath());
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief PreferenceDialog::~PreferenceDialog
+///
+/// デストラクタ
+///
PreferenceDialog::~PreferenceDialog()
{
delete ui;
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief PreferenceDialog::loadAppearance
+/// \param prefs プリファレンスオブジェクト
+///
+/// 外観(色)設定を読み込みます。
+///
void PreferenceDialog::loadAppearance(Preferences &prefs)
{
setPalette(ui->fvNormalSample, QPalette::Base, prefs.getFolderViewBgColor());
ui->darkFactor->setValue(prefs.getDarkFacotr());
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief PreferenceDialog::saveAppearance
+/// \param prefs プリファレンスオブジェクト
+///
+/// 外観(色)設定を保存します。
+///
void PreferenceDialog::saveAppearance(Preferences &prefs)
{
prefs.setFolderViewBgColor(ui->fvNormalSample->palette().base().color());
prefs.setDarkFacotr(ui->darkFactor->value());
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief PreferenceDialog::setFont
+/// \param label ラベルオブジェクト
+/// \param font フォントオブジェクト
+///
+/// ラベルにフォントを設定します。
+///
void PreferenceDialog::setFont(QLabel *label, const QFont &font)
{
label->setFont(font);
label->setText(QString("%1, %2pt").arg(font.family()).arg(font.pointSize()));
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief PreferenceDialog::setPalette
+/// \param w ウィジェット
+/// \param role ロール
+/// \param color 色
+///
+/// パレットに色を設定します。
+///
void PreferenceDialog::setPalette(QWidget *w, QPalette::ColorRole role, const QColor &color)
{
QPalette pal = w->palette();
w->setPalette(pal);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief PreferenceDialog::chooseColor
+///
+/// 色選択ダイアログを表示します。
+///
void PreferenceDialog::chooseColor()
{
QColor color;
}
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief PreferenceDialog::chooseFont
+///
+/// フォント選択ダイアログを表示します。
+///
void PreferenceDialog::chooseFont()
{
QFont font;
}
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief PreferenceDialog::choosePath
+///
+/// プログラム選択ダイアログを表示します。
+///
void PreferenceDialog::choosePath()
{
QStringList list = QStandardPaths::standardLocations(
}
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief PreferenceDialog::exportAppearance
+///
+/// 「エクスポート」ボタンクリック時の処理を行います。
+///
void PreferenceDialog::exportAppearance()
{
QStringList list = QStandardPaths::standardLocations(
saveAppearance(prefs);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief PreferenceDialog::importAppearance
+///
+/// 「インポート」ボタンクリック時の処理を行います。
+///
void PreferenceDialog::importAppearance()
{
QStringList list = QStandardPaths::standardLocations(
loadAppearance(prefs);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief PreferenceDialog::accept
+///
+/// OKボタンクリック時の処理を行います。
+///
void PreferenceDialog::accept()
{
Preferences prefs(this);
QDialog::accept();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief PreferenceDialog::eventFilter
+/// \param obj イベントが発生したオブジェクト
+/// \param event イベントオブジェクト
+/// \return イベントを処理した場合はtrueを返します。
+///
bool PreferenceDialog::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::Paint) {
-// QPaintEvent *e = static_cast<QPaintEvent*>(event);
QLineEdit *edit = static_cast<QLineEdit*>(obj);
QPainter painter(edit);
#include <QDebug>
#include <QDesktopWidget>
+///////////////////////////////////////////////////////////////////////////////
+/// \brief DefaultPreferExtensions
+/// \return 外部アプリを優先する拡張子のデフォルトを返します。
+///
QString DefaultPreferExtensions()
{
QStringList list;
return list.join(",");
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief DefaultFixedFont
+/// \return デフォルトの固定幅フォントを返します。
+///
QFont DefaultFixedFont()
{
QFont font = qApp->font();
return font;
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::Preferences
+/// \param parent 親オブジェクト
+///
+/// コンストラクタ
+///
Preferences::Preferences(QObject *parent) :
QSettings(QSettings::IniFormat,
QSettings::UserScope,
{
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::Preferences
+/// \param path 設定ファイルのパス
+/// \param parent 親オブジェクト
+///
+/// コンストラクタ
+///
Preferences::Preferences(const QString &path, QObject *parent) :
QSettings(path, QSettings::IniFormat, parent)
{
#define Key_NameFilter(side) (side + "/NameFilter")
#define Key_Sort(side) (side + "/Sort")
#define Key_Path(side) (side + "/Path")
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::restoreModel
+/// \param side "Left" or "Right"
+/// \param m フォルダモデルオブジェクト
+///
+/// モデルの状態を復元します。
+///
void Preferences::restoreModel(const QString &side, FolderModel *m)
{
qDebug() << "Preferences::restoreModel()" << side;
m->setRootPath(path);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::saveModel
+/// \param side "Left" or "Right"
+/// \param m フォルダモデルオブジェクト
+///
+/// モデルの状態を保存します。
+///
void Preferences::saveModel(const QString &side, const FolderModel *m)
{
qDebug() << "Preferences::saveModel()" << side;
#define Key_WindowGeometry "WindowGeometry"
#define Key_WindowState "WindowState"
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::restoreWindow
+/// \param w メインウィンドウオブジェクト
+///
+/// メインウィンドウの状態を復元します。
+///
void Preferences::restoreWindow(QMainWindow *w)
{
qDebug() << "Preferences::restoreWindow()";
}
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::saveWindow
+/// \param w メインウィンドウオブジェクト
+///
+/// メインウィンドウの状態を保存します。
+///
void Preferences::saveWindow(const QMainWindow *w)
{
setValue(Key_WindowGeometry, w->saveGeometry());
setValue(Key_WindowState, w->saveState());
}
-///////////////////////////////////////////////////////////////////////////////
#define Key_BookmarkEntry(i) QString("Bookmark/Entry%1").arg(i)
#define Key_BookmarkPath(i) QString("Bookmark/Path%1").arg(i)
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::addBookmark
+/// \param name 名前
+/// \param path パス
+///
+/// ブックマークを追加します。
+///
void Preferences::addBookmark(const QString &name, const QString &path)
{
int n;
setValue(Key_BookmarkPath(n), path);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::clearBookmark
+///
+/// ブックマークをクリアします。
+///
void Preferences::clearBookmark()
{
beginGroup("Bookmark");
endGroup();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::getBookmarkEntry
+/// \param n 番号
+/// \return n番目のブックマーク名を取得します。
+///
QString Preferences::getBookmarkEntry(int n) const
{
return value(Key_BookmarkEntry(n)).toString();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::getBookmarkPath
+/// \param n 番号
+/// \return n番目のブックマークパスを取得します。
+///
QString Preferences::getBookmarkPath(int n) const
{
return value(Key_BookmarkPath(n)).toString();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::folderViewFgColor
+/// \param active アクティブならtrue
+/// \return フォルダービューの文字色を返します。
+///
QColor Preferences::folderViewFgColor(bool active) const
{
int darkFactor = 100;
return getFolderViewFgColor().darker(darkFactor);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::folderViewBgColor
+/// \param active アクティブならtrue
+/// \return フォルダービューの背景色を返します。
+///
QColor Preferences::folderViewBgColor(bool active) const
{
int darkFactor = 100;
return getFolderViewBgColor().darker(darkFactor);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::folderViewMarkedFgColor
+/// \param active アクティブならtrue
+/// \return フォルダービューのマーク文字色を返します。
+///
QColor Preferences::folderViewMarkedFgColor(bool active) const
{
int darkFactor = 100;
return getFolderViewMarkedFgColor().darker(darkFactor);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::folderViewMarkedBgColor
+/// \param active アクティブならtrue
+/// \return フォルダービューのマーク背景色を返します。
+///
QColor Preferences::folderViewMarkedBgColor(bool active) const
{
int darkFactor = 100;
return getFolderViewMarkedBgColor().darker(darkFactor);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::folderViewSystemColor
+/// \param active アクティブならtrue
+/// \return システム属性の文字色を返します。
+///
QColor Preferences::folderViewSystemColor(bool active) const
{
int darkFactor = 100;
return getFolderViewSystemColor().darker(darkFactor);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::folderViewHiddenColor
+/// \param active アクティブならtrue
+/// \return 隠し属性の文字色を返します。
+///
QColor Preferences::folderViewHiddenColor(bool active) const
{
int darkFactor = 100;
return getFolderViewHiddenColor().darker(darkFactor);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::folderViewReadOnlyColor
+/// \param active アクティブならtrue
+/// \return 読取専用属性の文字色を返します。
+///
QColor Preferences::folderViewReadOnlyColor(bool active) const
{
int darkFactor = 100;
return getFolderViewReadOnlyColor().darker(darkFactor);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::locationBoxFgColor
+/// \param active アクティブならtrue
+/// \return ロケーションボックスの文字色を返します。
+///
QColor Preferences::locationBoxFgColor(bool active) const
{
int darkFactor = 100;
return getLocationBoxFgColor().darker(darkFactor);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Preferences::locationBoxBgColor
+/// \param active アクティブならtrue
+/// \return ロケーションボックスの背景色を返します。
+///
QColor Preferences::locationBoxBgColor(bool active) const
{
int darkFactor = 100;
#include "renamemultidialog.h"\r
#include "ui_renamemultidialog.h"\r
+\r
#include <QFileIconProvider>\r
#include <QMessageBox>\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameMultiDialog::RenameMultiDialog\r
+/// \param parent 親ウィジェット\r
+///\r
+/// コンストラクタ\r
+///\r
RenameMultiDialog::RenameMultiDialog(QWidget *parent) :\r
AbstractRenameDialog(parent),\r
ui(new Ui::RenameMultiDialog)\r
ui->tableWidget->horizontalHeader()->setStretchLastSection(true);\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameMultiDialog::~RenameMultiDialog\r
+///\r
+/// デストラクタ\r
+///\r
RenameMultiDialog::~RenameMultiDialog()\r
{\r
delete ui;\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameMultiDialog::setNames\r
+/// \param names ファイルインフォリスト\r
+///\r
+/// 変更前後のファイル名を設定します。\r
+///\r
void RenameMultiDialog::setNames(const QFileInfoList &names)\r
{\r
foreach (const QFileInfo &info, names) {\r
ui->tableWidget->resizeRowsToContents();\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameMultiDialog::on_btn_UpperAll_clicked\r
+///\r
+/// ファイル名全体を大文字にします。\r
+///\r
void RenameMultiDialog::on_btn_UpperAll_clicked()\r
{\r
for (int n = 0; n < ui->tableWidget->rowCount(); n++) {\r
}\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameMultiDialog::on_btn_LowerAll_clicked\r
+///\r
+/// ファイル名全体を小文字にします。\r
+///\r
void RenameMultiDialog::on_btn_LowerAll_clicked()\r
{\r
for (int n = 0; n < ui->tableWidget->rowCount(); n++) {\r
}\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameMultiDialog::on_btn_UpperExt_clicked\r
+///\r
+/// 拡張子を大文字にします。\r
+///\r
void RenameMultiDialog::on_btn_UpperExt_clicked()\r
{\r
for (int n = 0; n < ui->tableWidget->rowCount(); n++) {\r
}\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameMultiDialog::on_btn_LowerExt_clicked\r
+///\r
+/// 拡張子を小文字にします。\r
+///\r
void RenameMultiDialog::on_btn_LowerExt_clicked()\r
{\r
for (int n = 0; n < ui->tableWidget->rowCount(); n++) {\r
}\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameMultiDialog::on_replaceExec_clicked\r
+///\r
+/// 置換・挿入を実行します。\r
+///\r
void RenameMultiDialog::on_replaceExec_clicked()\r
{\r
for (int n = 0; n < ui->tableWidget->rowCount(); n++) {\r
}\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameMultiDialog::on_numberExec_clicked\r
+///\r
+/// 連番処理を実行します。\r
+///\r
void RenameMultiDialog::on_numberExec_clicked()\r
{\r
bool bOk;\r
}\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameMultiDialog::on_buttonBox_clicked\r
+/// \param button 押されたボタン\r
+///\r
+/// リセットボタンクリック時の処理を行います。\r
+///\r
void RenameMultiDialog::on_buttonBox_clicked(QAbstractButton *button)\r
{\r
if (button->text() == tr("Reset")) {\r
}\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameMultiDialog::accept\r
+///\r
+/// OKボタンクリック時の処理を行います。\r
+///\r
void RenameMultiDialog::accept()\r
{\r
// 未入力チェック\r
\r
AbstractRenameDialog::accept();\r
}\r
-\r
#include "ui_renamesingledialog.h"\r
#include <QMessageBox>\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameSingleDialog::RenameSingleDialog\r
+/// \param parent 親ウィジェット\r
+///\r
+/// コンストラクタ\r
+///\r
RenameSingleDialog::RenameSingleDialog(QWidget *parent) :\r
AbstractRenameDialog(parent),\r
ui(new Ui::RenameSingleDialog)\r
ui->nameAfter->setFocus();\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameSingleDialog::~RenameSingleDialog\r
+///\r
+/// デストラクタ\r
+///\r
RenameSingleDialog::~RenameSingleDialog()\r
{\r
delete ui;\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameSingleDialog::setNames\r
+/// \param names ファイルインフォリスト\r
+///\r
+/// 変更前後の名前を設定します。\r
+///\r
void RenameSingleDialog::setNames(const QFileInfoList &names)\r
{\r
ui->nameBefore->setText(names[0].fileName());\r
ui->nameAfter->setText(names[0].fileName());\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameSingleDialog::on_btn_UpperAll_clicked\r
+///\r
+/// ファイル名全体を大文字にします。\r
+///\r
void RenameSingleDialog::on_btn_UpperAll_clicked()\r
{\r
ui->nameAfter->setText(ui->nameAfter->text().toUpper());\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameSingleDialog::on_btn_LowerAll_clicked\r
+///\r
+/// ファイル名全体を小文字にします。\r
+///\r
void RenameSingleDialog::on_btn_LowerAll_clicked()\r
{\r
ui->nameAfter->setText(ui->nameAfter->text().toLower());\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameSingleDialog::on_btn_UpperExt_clicked\r
+///\r
+/// 拡張子を大文字にします。\r
+///\r
void RenameSingleDialog::on_btn_UpperExt_clicked()\r
{\r
QFileInfo info(m_dir.absoluteFilePath(ui->nameAfter->text()));\r
ui->nameAfter->setText(info.completeBaseName() + "." + info.suffix().toUpper());\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameSingleDialog::on_btn_LowerExt_clicked\r
+///\r
+/// 拡張子を小文字にします。\r
+///\r
void RenameSingleDialog::on_btn_LowerExt_clicked()\r
{\r
QFileInfo info(m_dir.absoluteFilePath(ui->nameAfter->text()));\r
ui->nameAfter->setText(info.completeBaseName() + "." + info.suffix().toLower());\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameSingleDialog::accept\r
+///\r
+/// OKボタンクリック時の処理を行います。\r
+///\r
void RenameSingleDialog::accept()\r
{\r
if (ui->nameAfter->text() != ui->nameBefore->text()) {\r
\r
const int SLEEP_TIME = 1;\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameWorker::RenameWorker\r
+///\r
+/// コンストラクタ\r
+///\r
RenameWorker::RenameWorker() :\r
OperationWorker(),\r
m_RenameMap(NULL)\r
{\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameWorker::run\r
+///\r
+/// リネーム処理を行います。\r
+///\r
void RenameWorker::run()\r
{\r
StringMap::const_iterator it;\r
emit finished();\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief RenameWorker::initialText\r
+/// \return 初期表示テキストを返します。\r
+///\r
QString RenameWorker::initialText() const\r
{\r
return tr("名前を変更しています...");\r
#include "sortdialog.h"\r
#include "ui_sortdialog.h"\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief SortDialog::SortDialog\r
+/// \param parent 親ウィジェット\r
+///\r
+/// コンストラクタ\r
+///\r
SortDialog::SortDialog(QWidget *parent) :\r
QDialog(parent),\r
ui(new Ui::SortDialog),\r
ui->setupUi(this);\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief SortDialog::~SortDialog\r
+///\r
+/// デストラクタ\r
+///\r
SortDialog::~SortDialog()\r
{\r
delete ui;\r
}\r
\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief SortDialog::setModel\r
+/// \param m フォルダモデル\r
+///\r
+/// モデルを設定します。\r
+///\r
void SortDialog::setModel(FolderModel *m)\r
{\r
m_model = m;\r
ui->ignoreCase->setChecked(true);\r
}\r
\r
-\r
+///////////////////////////////////////////////////////////////////////////////\r
+/// \brief SortDialog::accept\r
+///\r
+/// OKボタンクリック時の処理を行います。\r
+///\r
void SortDialog::accept()\r
{\r
QDir::SortFlags sort;\r
const int GAP_LINE_TEXT = 1;
const int MARGIN_RIGHT = 1;
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::TextView
+/// \param parent 親ウィジェット
+///
+/// コンストラクタ
+///
TextView::TextView(QScrollArea *parent) :
QWidget(parent)
{
resetSelection(0);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::setData
+/// \param data バイト列
+///
+/// データを設定します。
+///
void TextView::setData(const QByteArray &data)
{
m_source = data;
convertFrom(code.c_str());
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::adjust
+///
+/// 表示領域を調整します。
+///
void TextView::adjust()
{
// 行数をカウントする
}
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::convertFrom
+/// \param code 文字コード
+///
+/// 文字コードを変更します。
+///
void TextView::convertFrom(const char *code)
{
QTextCodec *codec = QTextCodec::codecForName(code);
emit statusChanged(code);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::cursorPos
+/// \param pos カーソル位置
+/// \return カーソル位置に該当するViewPositionのインデックスを返します。
+///
int TextView::cursorPos(const QPoint &pos)
{
int n;
return n;
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::lineNumChars
+/// \param lines 行数
+/// \return 行番号の表示に必要な桁数を返します。
+///
int TextView::lineNumChars(int lines) const
{
if (lines == -1) {
return QString("%1").arg(lines).size() + 1;
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::resetSelection
+/// \param index ViewPositionのインデックス
+///
+/// 選択領域を初期化します。
+///
void TextView::resetSelection(int index)
{
m_selectionInit = index;
emit copyAvailable(false);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::setSelection
+/// \param index ViewPositionのインデックス
+///
+/// 選択領域を設定します。
+///
void TextView::setSelection(int index)
{
if (index > m_selectionInit) {
emit copyAvailable(m_selectionBegin != m_selectionEnd);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::onConvertFromEUC
+///
+/// EUC-JPからUnicodeへ変換します。
+///
void TextView::onConvertFromEUC()
{
convertFrom("EUC-JP");
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::onConvertFromJIS
+///
+/// ISO-2022-JP(JIS)からUnicodeへ変換します。
+///
void TextView::onConvertFromJIS()
{
convertFrom("ISO 2022-JP");
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::onConvertFromSJIS
+///
+/// Shift-JIS(SJIS)からUnicodeへ変換します。
+///
void TextView::onConvertFromSJIS()
{
convertFrom("Shift-JIS");
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::onConvertFromUTF8
+///
+/// UTF-8からUnicodeへ変換します。
+///
void TextView::onConvertFromUTF8()
{
convertFrom("UTF-8");
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::onConvertFromUTF16
+///
+/// UTF-16からUnicodeへ変換します。
+///
void TextView::onConvertFromUTF16()
{
convertFrom("UTF-16");
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::onConvertFromUTF16BE
+///
+/// UTF-16BEからUnicodeへ変換します。
+///
void TextView::onConvertFromUTF16BE()
{
convertFrom("UTF-16BE");
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::onConvertFromUTF16LE
+///
+/// UTF-16LEからUnicodeへ変換します。
+///
void TextView::onConvertFromUTF16LE()
{
convertFrom("UTF-16LE");
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::onCopy
+///
+/// 選択領域をクリップボードにコピーします。
+///
void TextView::onCopy()
{
QString selected;
clipboard->setText(selected);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::onScaleDown
+///
+/// 文字を小さくします。
+///
void TextView::onScaleDown()
{
Preferences prefs(this);
update();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::onScaleUp
+///
+/// 文字を大きくします。
+///
void TextView::onScaleUp()
{
Preferences prefs(this);
update();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::onSelectAll
+///
+/// 全て選択します。
+///
void TextView::onSelectAll()
{
m_selectionInit = 0;
m_selectionEnd = m_viewPositions.size();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::setVisible
+/// \param visible 表示(true)/非表示(false)
+///
+/// 表示時の処理を行います。
+///
void TextView::setVisible(bool visible)
{
if (visible) {
QWidget::setVisible(visible);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::mousePressEvent
+/// \param e マウスイベントオブジェクト
+///
+/// マウスクリック時の処理を行います。
+///
void TextView::mousePressEvent(QMouseEvent *e)
{
if (e->button() == Qt::LeftButton) {
}
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::mouseDoubleClickEvent
+/// \param e マウスイベントオブジェクト
+///
+/// ダブルクリック時の処理を行います。
+///
void TextView::mouseDoubleClickEvent(QMouseEvent *e)
{
if (e->button() == Qt::LeftButton) {
}
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::mouseMoveEvent
+/// \param e マウスイベントオブジェクト
+///
+/// マウス移動時の処理を行います。
+///
void TextView::mouseMoveEvent(QMouseEvent *e)
{
m_scrollArea->ensureVisible(e->x(), e->y());
update();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::paintEvent
+/// \param e ペイントイベントオブジェクト
+///
+/// 描画イベントを処理します。
+///
void TextView::paintEvent(QPaintEvent *e)
{
QPainter painter(this);
}
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief TextView::resizeEvent
+/// \param e リサイズイベントオブジェクト
+///
+/// リサイズ時の処理を行います。
+///
void TextView::resizeEvent(QResizeEvent *e)
{
QWidget::resizeEvent(e);
#include <QPainter>
#include <QStylePainter>
+///////////////////////////////////////////////////////////////////////////////
+/// \brief ThumbnailDelegate::ThumbnailDelegate
+/// \param parent 親オブジェクト
+///
+/// コンストラクタ
+///
ThumbnailDelegate::ThumbnailDelegate(QObject *parent) :
QStyledItemDelegate(parent)
{
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief ThumbnailDelegate::paint
+/// \param painter ペインターオブジェクト
+/// \param option オプション
+/// \param index インデックス
+///
+/// 描画を行います
+///
void ThumbnailDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
const FolderModel *model = static_cast<const FolderModel*>(index.model());
bool checked = model->data(index, Qt::CheckStateRole).toInt() == Qt::Checked;
- // マーク
+ // マーク背景
if (checked) {
painter->fillRect(option.rect, model->data(index, Qt::BackgroundRole).value<QBrush>());
}
- // ハイライト
+ // ハイライト背景
if (option.state & QStyle::State_Selected) {
painter->fillRect(option.rect, option.palette.highlight());
}
pixmap);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief ThumbnailDelegate::sizeHint
+/// \param option オプション
+/// \param index インデックス
+/// \return サイズを返します。
+///
QSize ThumbnailDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
{
Q_UNUSED(option);
viewport()->installEventFilter(w);
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief ThumbnailView::onScaleDown
+///
+/// サムネイルサイズを小さくします。
+///
void ThumbnailView::onScaleDown()
{
qDebug() << "ThumbnailView::onScaleDown()";
folderModel()->clearPixmapCache();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief ThumbnailView::onScaleUp
+///
+/// サムネイルサイズを大きくします。
+///
void ThumbnailView::onScaleUp()
{
qDebug() << "ThumbnailView::onScaleUp()";
folderModel()->clearPixmapCache();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief ThumbnailView::setModel
+/// \param model モデル
+///
+/// モデルを設定します。
+///
void ThumbnailView::setModel(QAbstractItemModel *model)
{
if (this->model()) {
}
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief ThumbnailView::setVisible
+/// \param visible 表示(true)/非表示(false)
+///
+/// サムネイルサイズを初期化します。
+///
void ThumbnailView::setVisible(bool visible)
{
if (visible) {
#include <QTimer>
#include <QThread>
+const int SLEEP_TIME = 100;
+
+///////////////////////////////////////////////////////////////////////////////
+/// \brief ThumbnailWorker::ThumbnailWorker
+///
+/// コンストラクタ
+///
ThumbnailWorker::ThumbnailWorker() :
AbstractWorker(),
m_pathList()
{
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief ThumbnailWorker::addPath
+/// \param path パス
+///
+/// パスを追加します。
+///
void ThumbnailWorker::addPath(const QString &path)
{
QMutexLocker locker(&m_mutex);
m_pathList << path;
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief ThumbnailWorker::clearPath
+///
+/// パスをクリアします。
+///
void ThumbnailWorker::clearPath()
{
QMutexLocker locker(&m_mutex);
m_pathList.clear();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief ThumbnailWorker::getPath
+/// \return リストからパスを取得します。
+///
QString ThumbnailWorker::getPath()
{
QMutexLocker locker(&m_mutex);
return m_pathList.takeFirst();
}
+///////////////////////////////////////////////////////////////////////////////
+/// \brief ThumbnailWorker::run
+///
+/// サムネイルを生成します。
+///
void ThumbnailWorker::run()
{
qDebug() << "ThumbnailWorker::run() enter.";
emit resultReady(path, pixmap);
}
}
- this->thread()->msleep(100);
+ this->thread()->msleep(SLEEP_TIME);
}
emit finished();
#include <windows.h>
#endif
+///////////////////////////////////////////////////////////////////////////////
+/// \brief Win32::hasSystemAttribute
+/// \param path パス
+/// \return システム属性ファイルであればtrueを返します。
+///
bool Win32::hasSystemAttribute(const QString &path)
{
#ifdef Q_OS_WIN