Allow change of preload without restart
This commit is contained in:
@@ -348,6 +348,35 @@ QVariant ImageRingList::headerData(int section, Qt::Orientation orientation, int
|
|||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ImageRingList::setPreload(int width)
|
||||||
|
{
|
||||||
|
DEFAULT_WIDTH = width;
|
||||||
|
if(m_images.size() == 0)return;
|
||||||
|
|
||||||
|
int newWidth = DEFAULT_WIDTH<m_images.size()/2 ? DEFAULT_WIDTH : m_images.size()/2;
|
||||||
|
if(newWidth > m_width)
|
||||||
|
{
|
||||||
|
for(int i = newWidth - m_width; i>0; i--)
|
||||||
|
{
|
||||||
|
m_firstImage = decrement(m_firstImage);
|
||||||
|
(*m_firstImage)->load();
|
||||||
|
m_lastImage = increment(m_lastImage);
|
||||||
|
(*m_lastImage)->load();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(newWidth < m_width)
|
||||||
|
{
|
||||||
|
for(int i = m_width - newWidth; i>0; i--)
|
||||||
|
{
|
||||||
|
(*m_firstImage)->release();
|
||||||
|
m_firstImage = increment(m_firstImage);
|
||||||
|
(*m_lastImage)->release();
|
||||||
|
m_lastImage = decrement(m_lastImage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m_width = newWidth;
|
||||||
|
}
|
||||||
|
|
||||||
void ImageRingList::setFiles(const QStringList files, const QString ¤tFile)
|
void ImageRingList::setFiles(const QStringList files, const QString ¤tFile)
|
||||||
{
|
{
|
||||||
QThreadPool::globalInstance()->clear();
|
QThreadPool::globalInstance()->clear();
|
||||||
|
|||||||
@@ -89,6 +89,8 @@ public:
|
|||||||
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
|
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
|
||||||
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
|
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
|
||||||
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
|
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
|
||||||
|
public slots:
|
||||||
|
void setPreload(int width);
|
||||||
protected:
|
protected:
|
||||||
void setFiles(const QStringList files, const QString ¤tFile = QString());
|
void setFiles(const QStringList files, const QString ¤tFile = QString());
|
||||||
QList<ImagePtr>::iterator increment(QList<ImagePtr>::iterator iter);
|
QList<ImagePtr>::iterator increment(QList<ImagePtr>::iterator iter);
|
||||||
|
|||||||
@@ -627,6 +627,7 @@ void MainWindow::showMarkFilesDialog()
|
|||||||
void MainWindow::showSettingsDialog()
|
void MainWindow::showSettingsDialog()
|
||||||
{
|
{
|
||||||
SettingsDialog settingsDialog(this);
|
SettingsDialog settingsDialog(this);
|
||||||
|
connect(&settingsDialog, &SettingsDialog::preloadChanged, m_ringList, &ImageRingList::setPreload);
|
||||||
settingsDialog.exec();
|
settingsDialog.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -92,4 +92,6 @@ void SettingsDialog::saveSettings()
|
|||||||
settings.setValue("settings/preloadimagecount", m_preloadImages->value());
|
settings.setValue("settings/preloadimagecount", m_preloadImages->value());
|
||||||
settings.setValue("settings/dontusenativedialogs", m_useNativeDialog->isChecked());
|
settings.setValue("settings/dontusenativedialogs", m_useNativeDialog->isChecked());
|
||||||
QApplication::setAttribute(Qt::AA_DontUseNativeDialogs, m_useNativeDialog->isChecked());
|
QApplication::setAttribute(Qt::AA_DontUseNativeDialogs, m_useNativeDialog->isChecked());
|
||||||
|
if(DEFAULT_WIDTH != m_preloadImages->value())
|
||||||
|
emit preloadChanged(m_preloadImages->value());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ public:
|
|||||||
explicit SettingsDialog(QWidget *parent = nullptr);
|
explicit SettingsDialog(QWidget *parent = nullptr);
|
||||||
static void loadSettings();
|
static void loadSettings();
|
||||||
static bool loadThumbsizes();
|
static bool loadThumbsizes();
|
||||||
|
signals:
|
||||||
|
void preloadChanged(int witdth);
|
||||||
private:
|
private:
|
||||||
void saveSettings();
|
void saveSettings();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user