#include <QDebug>\r
#include <QApplication>\r
#include <QSettings>\r
-#include <QMenuBar>\r
-#include <QMimeData>\r
-#include <QUrl>\r
-#include <QMessageBox>\r
+#include <QPalette>\r
#ifdef Q_OS_WIN32\r
#include <windows.h>\r
#endif\r
qDebug() << path;\r
}\r
else {\r
- QFileInfoList::iterator it, itRoot = m_fileInfoList.end();\r
+ QFileInfoList::iterator it;\r
+ bool removeDotDot = false;\r
for (it = m_fileInfoList.begin(); it != m_fileInfoList.end(); ) {\r
- if (it->fileName() == "..") {\r
- if (m_dir.isRoot()) {\r
- it = m_fileInfoList.erase(it);\r
- itRoot = m_fileInfoList.end();\r
- continue;\r
- }\r
- else {\r
- itRoot = it;\r
- }\r
- }\r
#ifdef Q_OS_WIN32\r
if (!(filter() & QDir::System)){\r
DWORD dwFlags = ::GetFileAttributes(\r
}\r
}\r
#endif\r
+ if (it->fileName() == "..") {\r
+ if (m_dir.isRoot()) {\r
+ qDebug() << m_dir.absolutePath() << " is root.";\r
+ it = m_fileInfoList.erase(it);\r
+ removeDotDot = true;\r
+ continue;\r
+ }\r
+ }\r
it++;\r
}\r
// ソート方法によらず、".."は必ず先頭にする\r
- if (itRoot != m_fileInfoList.begin() && itRoot != m_fileInfoList.end()) {\r
- QFileInfo info(*itRoot);\r
- m_fileInfoList.erase(itRoot);\r
- m_fileInfoList.push_front(info);\r
+ if (!removeDotDot) {\r
+ QFileInfoList::iterator itRoot = m_fileInfoList.end();\r
+ for (it = m_fileInfoList.begin(); it != m_fileInfoList.end(); it++) {\r
+ if (it->fileName() == "..") {\r
+ itRoot = it;\r
+ break;\r
+ }\r
+ }\r
+ if (itRoot != m_fileInfoList.end()) {\r
+ QFileInfo info(*itRoot);\r
+ m_fileInfoList.erase(itRoot);\r
+ m_fileInfoList.push_front(info);\r
+ }\r
}\r
}\r
\r
m_fsWatcher = new QFileSystemWatcher(this);\r
m_fsWatcher->addPath(path);\r
connect(m_fsWatcher, SIGNAL(directoryChanged(QString)),\r
-// this, SLOT(refresh()));\r
this, SIGNAL(listUpdated()));\r
\r
endResetModel();\r
stateChanged();\r
}\r
\r
-\r
+#if 0\r
bool FileTableModel::isDir(const QModelIndex &index) const\r
{\r
+ if (!index.isValid()) {\r
+ qDebug() << "isDir() : index is invalid.";\r
+ return QString();\r
+ }\r
return m_fileInfoList[index.row()].isDir();\r
}\r
\r
const QString FileTableModel::absoluteFilePath(const QModelIndex &index) const\r
{\r
- return m_dir.absoluteFilePath(m_fileInfoList[index.row()].fileName());\r
+ if (!index.isValid()) {\r
+ qDebug() << "absoluteFilePath() : index is invalid.";\r
+ return QString();\r
+ }\r
+// return m_dir.absoluteFilePath(m_fileInfoList[index.row()].fileName());\r
+ return m_fileInfoList[index.row()].absoluteFilePath();\r
}\r
\r
+const QString FileTableModel::fileName(const QModelIndex &index) const\r
+{\r
+ if (!index.isValid()) {\r
+ qDebug() << "fileName() : index is invalid.";\r
+ return QString();\r
+ }\r
+ return m_fileInfoList[index.row()].fileName();\r
+}\r
+#endif\r
+\r
QFileInfo FileTableModel::fileInfo(const QModelIndex &index) const\r
{\r
+ if (!index.isValid()) {\r
+ qDebug() << "fileInfo() : index is invalid.";\r
+ return QFileInfo();\r
+ }\r
return m_fileInfoList[index.row()];\r
}\r
\r
-#define Brush(x, y, z) QBrush((x).value((y), (z)).value<QColor>());\r
-\r
-\r
void FileTableModel::updateAppearance()\r
{\r
QSettings settings;\r
QPalette palette(QApplication::palette("QTableView"));\r
\r
- m_font = settings.value(IniKey_ViewFont, QApplication::font()).value<QFont>();\r
- m_NormalBrush = Brush(settings, IniKey_ViewColorBgNormal, palette.base());\r
- m_NormalTextBrush = Brush(settings, IniKey_ViewColorFgNormal, palette.text());\r
- m_MarkBrush = Brush(settings, IniKey_ViewColorBgMark, DefaultMarkBgColor);\r
- m_MarkTextBrush = Brush(settings, IniKey_ViewColorFgMark, DefaultMarkFgColor);\r
- m_SystemBrush = Brush(settings, IniKey_ViewColorFgSystem, DefaultSystemColor);\r
- m_HiddenBrush = Brush(settings, IniKey_ViewColorFgHidden, DefaultHiddenColor);\r
- m_ReadonlyBrush = Brush(settings, IniKey_ViewColorFgReadonly, DefaultReadonlyColor);\r
+ m_font = settings.value(IniKey_ViewFont).value<QFont>();\r
+ m_NormalBrush = QBrush(settings.value(IniKey_ViewColorBgNormal).value<QColor>());\r
+ m_NormalTextBrush = QBrush(settings.value(IniKey_ViewColorFgNormal).value<QColor>());\r
+ m_MarkBrush = QBrush(settings.value(IniKey_ViewColorBgMark).value<QColor>());\r
+ m_MarkTextBrush = QBrush(settings.value(IniKey_ViewColorFgMark).value<QColor>());\r
+ m_SystemBrush = QBrush(settings.value(IniKey_ViewColorFgSystem).value<QColor>());\r
+ m_HiddenBrush = QBrush(settings.value(IniKey_ViewColorFgHidden).value<QColor>());\r
+ m_ReadonlyBrush = QBrush(settings.value(IniKey_ViewColorFgReadonly).value<QColor>());\r
+ m_ReadonlyBrush = QBrush(settings.value(IniKey_ViewColorFgReadonly).value<QColor>());\r
\r
beginResetModel();\r
endResetModel();\r
}\r
\r
-//void FileTableModel::refresh()\r
-//{\r
-// setPath(m_dir.absolutePath());\r
-\r
-//}\r
-\r
void FileTableModel::stateChanged()\r
{\r
int numFolder = 0;\r
if (index.column() == 0) {\r
flags |= Qt::ItemIsUserCheckable;\r
}\r
-// TODO\r
-// flags |= Qt::ItemIsDragEnabled;\r
flags |= Qt::ItemIsDropEnabled;\r
}\r
return flags;\r
\r
return types;\r
}\r
-\r
-bool FileTableModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)\r
-{\r
- Q_UNUSED(parent);\r
-\r
- qDebug() << action << row << column;\r
-\r
- if (action == Qt::IgnoreAction)\r
- return true;\r
-\r
- if (!data->hasFormat("text/uri-list"))\r
- return false;\r
-\r
- if (column > 0)\r
- return false;\r
-\r
- QString msg;\r
- msg = "ドロップを検知しました。<br/>";\r
- foreach (const QUrl &url, data->urls()) {\r
- msg += url.toLocalFile() + "<br/>";\r
- qDebug() << url.toLocalFile();\r
- }\r
- QMessageBox::information(NULL, "info", msg);\r
-\r
- return true;\r
-}\r