diff --git a/imageringlist.cpp b/imageringlist.cpp index 0203036..14a7ad6 100644 --- a/imageringlist.cpp +++ b/imageringlist.cpp @@ -72,7 +72,7 @@ ImageRingList::ImageRingList(QObject *parent) : QObject(parent) { } -bool ImageRingList::setDir(const QString path) +bool ImageRingList::setDir(const QString path, const QString ¤tFile) { QDir dir(path); @@ -87,13 +87,13 @@ bool ImageRingList::setDir(const QString path) { absolutePaths.append(dir.absoluteFilePath(file)); } - setFiles(absolutePaths); + setFiles(absolutePaths, currentFile); return true; } return false; } -void ImageRingList::setFiles(const QStringList files) +void ImageRingList::setFiles(const QStringList files, const QString ¤tFile) { m_images.clear(); foreach(const QString &file, files) @@ -103,7 +103,11 @@ void ImageRingList::setFiles(const QStringList files) m_images.append(ptr); } - m_firstImage = m_currImage = m_lastImage = m_images.begin(); + int index = files.indexOf(currentFile); + if(index < 0) + index = 0; + + m_firstImage = m_currImage = m_lastImage = m_images.begin()+index; (*m_currImage)->load(); m_width = DEFAULT_WIDTH::iterator m_lastImage; public: explicit ImageRingList(QObject *parent = 0); - bool setDir(const QString path); - void setFiles(const QStringList files); + bool setDir(const QString path, const QString ¤tFile = QString()); + void setFiles(const QStringList files, const QString ¤tFile = QString()); + void setFile(const QString &file); ImagePtr currentImage(); void increment(); void decrement(); diff --git a/mainwindow.cpp b/mainwindow.cpp index 82f0ef8..28c2f3e 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -94,7 +94,7 @@ void MainWindow::openFile() if(!file.isEmpty()) { QFileInfo info(file); - m_ringList->setDir(info.dir().absolutePath()); + m_ringList->setFile(info.canonicalFilePath()); updateWindowTitle(); } }