return;
m_file = file;
+ m_size = 0;
+ m_ed2k = 0;
+ m_hashingState = m_renamingState = m_addingState = m_markingState = m_settingStateState = NotStarted;
}
qint64 File::size()
{
- return m_file.size();
+ return m_size ? m_size : m_file.size();
}
QByteArray File::ed2k()
if (m_renamingState == Success)
return true;
+ if (!m_file.isFile())
+ return false;
+
if (m_hashingState != Success)
actionsQueue.enqueue(Hashing);
return m_state;
}
+File *File::fromEd2k(const QString &ed2k)
+{
+ QRegExp rx("^ed2k://\\|file\\|[^|]+\\|([0-9]+)\\|([a-z0-9]{32})\\|", Qt::CaseInsensitive, QRegExp::RegExp2);
+
+ if (rx.indexIn(ed2k) == -1)
+ return 0;
+
+ bool ok = false;
+ qint64 size = rx.cap(1).toLongLong(&ok);
+ if (!ok)
+ return 0;
+
+ QByteArray hash = rx.cap(2).toLower().toLatin1();
+
+ File *ret = new File();
+ ret->m_size = size;
+ ret->m_ed2k = hash;
+ return ret;
+}
+
MyListState File::defaultState()
{
return m_defaultState;
{
staticInit();
+ m_size = 0;
+
hashResult = 0;
fileReply = 0;
addReply = 0;
void clearState();
MyListState state() const;
+ static File *fromEd2k(const QString &ed2k);
+
static MyListState defaultState();
static void setDefaultState(const MyListState &defaultState);
QFileInfo m_file;
QByteArray m_ed2k;
+ qint64 m_size;
bool notWorking;