From kde-commits Wed Sep 15 19:16:44 2010 From: Marco Martin Date: Wed, 15 Sep 2010 19:16:44 +0000 To: kde-commits Subject: KDE/kdebase/apps/plasma/applets/folderview Message-Id: <20100915191644.570FEAC871 () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=128457791522500 SVN commit 1175746 by mart: configChanged() support since reloading is costly it checks if something is actually changed before reloading patch by Rohan Garg CCMAIL:rohangarg@ubuntu.com CCMAIL:fredrik@kde.org M +110 -2 folderview.cpp --- trunk/KDE/kdebase/apps/plasma/applets/folderview/folderview.cpp #1175745:1175746 @@ -416,11 +416,119 @@ void FolderView::configChanged() { - //TODO: reload all other config values there KConfigGroup cg = config(); - setUrl(cg.readEntry("url", m_url)); + + //Declare some variables that are used afterwards + bool needReload = false; + bool preserveIconPositions = false; + + //Reload m_customLabel values + QString label = m_customLabel; + m_customLabel = cg.readEntry("customLabel", m_customLabel); + if (label != m_customLabel) { + needReload = true; + } + + //Reload m_customIconSize values + const int size = m_customIconSize; + m_customIconSize = cg.readEntry("customIconSize", m_customIconSize); + if (size != iconSize().width()) { + needReload = true; + + } + + m_showPreviews = cg.readEntry("showPreviews", m_showPreviews); + m_drawShadows = cg.readEntry("drawShadows", m_drawShadows); + m_iconsLocked = cg.readEntry("iconsLocked", m_iconsLocked); + m_alignToGrid = cg.readEntry("alignToGrid", m_alignToGrid); + m_numTextLines = cg.readEntry("numTextLines", m_numTextLines); + + const int filterType = m_filterType; + m_filterType = cg.readEntry("filter", m_filterType); + if (filterType != m_filterType) { + needReload = true; + } + + QColor color = m_textColor; + m_textColor = cg.readEntry("textColor", m_textColor); + if (color != m_textColor) { + needReload = true; + } + + m_previewPlugins = cg.readEntry("previewPlugins", m_previewPlugins); + + if (m_previewGenerator && m_previewPlugins != m_previewGenerator->enabledPlugins()) { + m_previewGenerator->setEnabledPlugins(m_previewPlugins); + + //Changing the preview plugins will also need a reload to work, so we need to preserve + //the icons position + needReload = true; + preserveIconPositions = true; + } + + m_sortDirsFirst = cg.readEntry("sortDirsFirst", m_sortDirsFirst); + toggleDirectoriesFirst(m_sortDirsFirst); + + const int sortColumn = m_sortColumn; + m_sortColumn = cg.readEntry("sortColumn", m_sortColumn); + if (m_sortColumn != sortColumn) { + if (m_sortColumn != -1) { + m_model->invalidate(); + m_model->sort(m_sortColumn, Qt::AscendingOrder); + } else if (m_iconView) { + m_iconView->setCustomLayout(true); + } + updateSortActionsState(); + } + + const QString filterFiles = m_filterFiles; + m_filterFiles = cg.readEntry("filterFiles", m_filterFiles); + + if (filterFiles != m_filterFiles) { + needReload = true; + } + + const QStringList mimeFilter = m_filterFilesMimeList; + m_filterFilesMimeList = cg.readEntry("mimeFilter", m_filterFilesMimeList); + + if (mimeFilter != m_filterFilesMimeList) { + needReload = true; + } + + const KUrl url = m_url; + m_url = cg.readEntry("url", m_url); + if (url != m_url) { + setUrl(m_url); + needReload = true; + } + + + if (m_iconView) { + updateIconViewState(); + } + + if (m_listView) { + updateListViewState(); + } + + if (needReload) { + //Manually save and restore the icon positions if we need it + QStringList iconPositionsData; + if (preserveIconPositions && m_iconView) { + iconPositionsData = m_iconView->iconPositionsData(); + + } + + + if (preserveIconPositions && m_iconView) { + m_iconView->setIconPositionsData(iconPositionsData); + } + // So the KFileItemActions will be recreated for the new URL. + delete m_itemActions; + m_itemActions = 0; m_dirModel->dirLister()->openUrl(m_url); } +} FolderView::~FolderView() {