Improve file selection in file system widget
This commit is contained in:
@@ -17,7 +17,7 @@ FilesystemWidget::FilesystemWidget(QAbstractItemModel *model, QWidget *parent) :
|
|||||||
|
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
|
|
||||||
connect(m_listView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(fileClicked(QModelIndex)));
|
connect(m_listView->selectionModel(), &QItemSelectionModel::currentChanged, this, &FilesystemWidget::fileClicked);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FilesystemWidget::setDir(const QString &dir)
|
void FilesystemWidget::setDir(const QString &dir)
|
||||||
@@ -34,9 +34,10 @@ void FilesystemWidget::selectFile(int row)
|
|||||||
m_listView->scrollTo(index);
|
m_listView->scrollTo(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FilesystemWidget::fileClicked(const QModelIndex &index)
|
void FilesystemWidget::fileClicked(const QModelIndex &index, const QModelIndex &)
|
||||||
{
|
{
|
||||||
emit fileSelected(index.row());
|
if(index.isValid())
|
||||||
|
emit fileSelected(index.row());
|
||||||
}
|
}
|
||||||
|
|
||||||
Filetree::Filetree(QWidget *parent) : QTreeView(parent)
|
Filetree::Filetree(QWidget *parent) : QTreeView(parent)
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@ public:
|
|||||||
void setDir(const QString &dir);
|
void setDir(const QString &dir);
|
||||||
private slots:
|
private slots:
|
||||||
void selectFile(int row);
|
void selectFile(int row);
|
||||||
void fileClicked(const QModelIndex &index);
|
void fileClicked(const QModelIndex &index, const QModelIndex &);
|
||||||
signals:
|
signals:
|
||||||
void fileSelected(int row);
|
void fileSelected(int row);
|
||||||
};
|
};
|
||||||
|
|||||||
+31
-22
@@ -210,30 +210,38 @@ void ImageRingList::loadFile(int row)
|
|||||||
{
|
{
|
||||||
if(row < m_images.size())
|
if(row < m_images.size())
|
||||||
{
|
{
|
||||||
m_firstImage = m_currImage = m_lastImage = m_images.begin()+row;
|
int diff = m_currImage != m_images.end() ? row - (m_currImage - m_images.begin()) : -100;
|
||||||
if(m_images.empty())
|
if(diff == 1)
|
||||||
return;
|
increment();
|
||||||
|
else if(diff == -1)
|
||||||
(*m_currImage)->load();
|
decrement();
|
||||||
|
else
|
||||||
m_width = DEFAULT_WIDTH<m_images.size()/2 ? DEFAULT_WIDTH : m_images.size()/2;
|
|
||||||
if(m_liveMode)
|
|
||||||
m_width = 0;
|
|
||||||
|
|
||||||
for(int i=0; i<m_width; i++)
|
|
||||||
{
|
{
|
||||||
m_firstImage = decrement(m_firstImage);
|
m_firstImage = m_currImage = m_lastImage = m_images.begin()+row;
|
||||||
(*m_firstImage)->load();
|
if(m_images.empty())
|
||||||
m_lastImage = increment(m_lastImage);
|
return;
|
||||||
(*m_lastImage)->load();
|
|
||||||
}
|
(*m_currImage)->load();
|
||||||
if(m_lastImage != m_firstImage)
|
|
||||||
{
|
m_width = DEFAULT_WIDTH<m_images.size()/2 ? DEFAULT_WIDTH : m_images.size()/2;
|
||||||
QList<ImagePtr>::iterator iter = increment(m_lastImage);
|
if(m_liveMode)
|
||||||
while(m_firstImage != iter)
|
m_width = 0;
|
||||||
|
|
||||||
|
for(int i=0; i<m_width; i++)
|
||||||
{
|
{
|
||||||
(*iter)->release();
|
m_firstImage = decrement(m_firstImage);
|
||||||
iter = increment(iter);
|
(*m_firstImage)->load();
|
||||||
|
m_lastImage = increment(m_lastImage);
|
||||||
|
(*m_lastImage)->load();
|
||||||
|
}
|
||||||
|
if(m_lastImage != m_firstImage)
|
||||||
|
{
|
||||||
|
QList<ImagePtr>::iterator iter = increment(m_lastImage);
|
||||||
|
while(m_firstImage != iter)
|
||||||
|
{
|
||||||
|
(*iter)->release();
|
||||||
|
iter = increment(iter);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -333,6 +341,7 @@ void ImageRingList::setFiles(const QStringList files, const QString ¤tFile
|
|||||||
index = 0;
|
index = 0;
|
||||||
|
|
||||||
endResetModel();
|
endResetModel();
|
||||||
|
m_currImage = m_images.end();
|
||||||
loadFile(index);
|
loadFile(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -216,9 +216,11 @@ void MainWindow::keyPressEvent(QKeyEvent *event)
|
|||||||
switch (event->key())
|
switch (event->key())
|
||||||
{
|
{
|
||||||
case Qt::Key_Left:
|
case Qt::Key_Left:
|
||||||
|
case Qt::Key_Up:
|
||||||
m_ringList->decrement();
|
m_ringList->decrement();
|
||||||
break;
|
break;
|
||||||
case Qt::Key_Right:
|
case Qt::Key_Right:
|
||||||
|
case Qt::Key_Down:
|
||||||
m_ringList->increment();
|
m_ringList->increment();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user