20 #include "konq_propsview.h"
21 #include "konq_settings.h"
24 #include <kstandarddirs.h>
26 #include <tqpixmapcache.h>
27 #include <tqiconview.h>
32 #include <kinstance.h>
35 #include <ksimpleconfig.h>
37 static TQPixmap wallpaperPixmap(
const TQString & _wallpaper )
39 TQString key =
"wallpapers/";
43 if ( TQPixmapCache::find( key, pix ) )
46 TQString path = locate(
"tiles", _wallpaper);
48 path = locate(
"wallpaper", _wallpaper);
57 kdWarning(1203) <<
"Could not load wallpaper " << path << endl;
59 TQPixmapCache::insert( key, pix );
61 }
else kdWarning(1203) <<
"Couldn't locate wallpaper " << _wallpaper << endl;
65 struct KonqPropsView::Private
67 TQStringList* previewsToShow;
68 bool previewsEnabled:1;
69 bool caseInsensitiveSort:1;
72 TQString sortcriterion;
76 : m_bSaveViewPropertiesLocally( false ),
78 m_dotDirExists( true ),
79 m_currentConfig( defaultProps ? 0L : instance->config() ),
80 m_defaultProps( defaultProps )
83 KConfig *config = instance->config();
84 KConfigGroupSaver cgs(config,
"Settings");
87 d->previewsToShow = 0;
88 d->caseInsensitiveSort=config->readBoolEntry(
"CaseInsensitiveSort",
true );
90 m_iIconSize = config->readNumEntry(
"IconSize", 0 );
91 m_iItemTextPos = config->readNumEntry(
"ItemTextPos", TQIconView::Bottom );
92 d->sortcriterion = config->readEntry(
"SortingCriterion",
"sort_nci" );
93 d->dirsfirst = config->readBoolEntry(
"SortDirsFirst",
true );
94 d->descending = config->readBoolEntry(
"SortDescending",
false );
95 m_bShowDot = config->readBoolEntry(
"ShowDotFiles",
false );
96 m_bShowDirectoryOverlays = config->readBoolEntry(
"ShowDirectoryOverlays",
false );
98 m_dontPreview = config->readListEntry(
"DontPreview" );
99 m_dontPreview.remove(
"audio/");
104 if (!config->readBoolEntry(
"EnableSoundPreviews",
false))
106 if (!m_dontPreview.contains(
"audio/"))
107 m_dontPreview.append(
"audio/");
110 d->previewsEnabled = config->readBoolEntry(
"PreviewsEnabled",
true );
113 m_textColor = config->readColorEntry(
"TextColor", &tc );
114 m_bgColor = config->readColorEntry(
"BgColor" );
115 m_bgPixmapFile = config->readPathEntry(
"BgImage" );
124 KConfigGroupSaver cgs2(KGlobal::config(),
"Settings");
125 m_textColor = KGlobal::config()->readColorEntry(
"TextColor", &m_textColor );
126 m_bgColor = KGlobal::config()->readColorEntry(
"BgColor", &m_bgColor );
127 m_bgPixmapFile = KGlobal::config()->readPathEntry(
"BgImage", m_bgPixmapFile );
131 KGlobal::dirs()->addResourceType(
"tiles",
132 KGlobal::dirs()->kde_default(
"data") +
"konqueror/tiles/");
135 bool KonqPropsView::isCaseInsensitiveSort()
const
137 return d->caseInsensitiveSort;
140 bool KonqPropsView::isDirsFirst()
const
145 bool KonqPropsView::isDescending()
const
147 return d->descending;
150 KConfigBase * KonqPropsView::currentConfig()
152 if ( !m_currentConfig )
155 assert ( m_bSaveViewPropertiesLocally );
158 if (!dotDirectory.isEmpty())
159 m_currentConfig =
new KSimpleConfig( dotDirectory );
162 return m_currentConfig;
165 KConfigBase * KonqPropsView::currentColorConfig()
169 return currentConfig();
172 return KGlobal::config();
177 delete d->previewsToShow;
190 u.addPath(
".directory");
191 bool dotDirExists = u.isLocalFile() && TQFile::exists( u.path() );
192 dotDirectory = u.isLocalFile() ? u.path() : TQString::null;
196 if (dotDirExists || m_dotDirExists)
198 m_iIconSize = m_defaultProps->iconSize();
199 m_iItemTextPos = m_defaultProps->itemTextPos();
200 d->sortcriterion = m_defaultProps->sortCriterion();
201 d->dirsfirst = m_defaultProps->isDirsFirst();
202 d->descending = m_defaultProps->isDescending();
203 m_bShowDot = m_defaultProps->isShowingDotFiles();
204 d->caseInsensitiveSort=m_defaultProps->isCaseInsensitiveSort();
205 m_dontPreview = m_defaultProps->m_dontPreview;
206 m_textColor = m_defaultProps->m_textColor;
207 m_bgColor = m_defaultProps->m_bgColor;
208 m_bgPixmapFile = m_defaultProps->bgPixmapFile();
214 KSimpleConfig * config =
new KSimpleConfig( dotDirectory,
true );
215 config->setGroup(
"URL properties");
217 m_iIconSize = config->readNumEntry(
"IconSize", m_iIconSize );
218 m_iItemTextPos = config->readNumEntry(
"ItemTextPos", m_iItemTextPos );
219 d->sortcriterion = config->readEntry(
"SortingCriterion" , d->sortcriterion );
220 d->dirsfirst = config->readBoolEntry(
"SortDirsFirst", d->dirsfirst );
221 d->descending = config->readBoolEntry(
"SortDescending", d->descending );
222 m_bShowDot = config->readBoolEntry(
"ShowDotFiles", m_bShowDot );
223 d->caseInsensitiveSort=config->readBoolEntry(
"CaseInsensitiveSort",d->caseInsensitiveSort);
224 m_bShowDirectoryOverlays = config->readBoolEntry(
"ShowDirectoryOverlays", m_bShowDirectoryOverlays );
225 if (config->hasKey(
"DontPreview" ))
227 m_dontPreview = config->readListEntry(
"DontPreview" );
233 if (config->hasKey(
"EnableSoundPreviews"))
236 if (!config->readBoolEntry(
"EnableSoundPreviews",
false))
237 if (!m_dontPreview.contains(
"audio/"))
238 m_dontPreview.append(
"audio/");
242 if (m_defaultProps->m_dontPreview.contains(
"audio/"))
243 if (!m_dontPreview.contains(
"audio/"))
244 m_dontPreview.append(
"audio/");
250 m_textColor = config->readColorEntry(
"TextColor", &m_textColor );
251 m_bgColor = config->readColorEntry(
"BgColor", &m_bgColor );
252 m_bgPixmapFile = config->readPathEntry(
"BgImage", m_bgPixmapFile );
254 d->previewsEnabled = config->readBoolEntry(
"PreviewsEnabled", d->previewsEnabled );
258 bool configChanged=(m_dotDirExists|| dotDirExists);
259 m_dotDirExists = dotDirExists;
260 m_currentConfig = 0L;
262 return configChanged;
270 if ( m_bSaveViewPropertiesLocally )
271 delete m_currentConfig;
273 m_bSaveViewPropertiesLocally = value;
274 m_currentConfig = 0L;
277 void KonqPropsView::setIconSize(
int size )
280 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
281 m_defaultProps->setIconSize( size );
282 else if (currentConfig())
284 KConfigGroupSaver cgs(currentConfig(), currentGroup());
285 currentConfig()->writeEntry(
"IconSize", m_iIconSize );
286 currentConfig()->sync();
290 void KonqPropsView::setItemTextPos(
int pos )
292 m_iItemTextPos = pos;
293 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
294 m_defaultProps->setItemTextPos( pos );
295 else if (currentConfig())
297 KConfigGroupSaver cgs(currentConfig(), currentGroup());
298 currentConfig()->writeEntry(
"ItemTextPos", m_iItemTextPos );
299 currentConfig()->sync();
303 void KonqPropsView::setSortCriterion(
const TQString &criterion )
305 d->sortcriterion = criterion;
306 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
307 m_defaultProps->setSortCriterion( criterion );
308 else if (currentConfig())
310 KConfigGroupSaver cgs(currentConfig(), currentGroup());
311 currentConfig()->writeEntry(
"SortingCriterion", d->sortcriterion );
312 currentConfig()->sync();
316 void KonqPropsView::setDirsFirst(
bool first)
318 d->dirsfirst = first;
319 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
320 m_defaultProps->setDirsFirst( first );
321 else if (currentConfig())
323 KConfigGroupSaver cgs(currentConfig(), currentGroup());
324 currentConfig()->writeEntry(
"SortDirsFirst", d->dirsfirst );
325 currentConfig()->sync();
329 void KonqPropsView::setDescending(
bool descend)
331 d->descending = descend;
332 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
333 m_defaultProps->setDescending( descend );
334 else if (currentConfig())
336 KConfigGroupSaver cgs(currentConfig(), currentGroup());
337 currentConfig()->writeEntry(
"SortDescending", d->descending );
338 currentConfig()->sync();
342 void KonqPropsView::setShowingDotFiles(
bool show )
344 kdDebug(1203) <<
"KonqPropsView::setShowingDotFiles " << show << endl;
346 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
348 kdDebug(1203) <<
"Saving in default properties" << endl;
349 m_defaultProps->setShowingDotFiles( show );
351 else if (currentConfig())
353 kdDebug(1203) <<
"Saving in current config" << endl;
354 KConfigGroupSaver cgs(currentConfig(), currentGroup());
355 currentConfig()->writeEntry(
"ShowDotFiles", m_bShowDot );
356 currentConfig()->sync();
360 void KonqPropsView::setCaseInsensitiveSort(
bool on )
362 kdDebug(1203) <<
"KonqPropsView::setCaseInsensitiveSort " << on << endl;
363 d->caseInsensitiveSort = on;
364 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
366 kdDebug(1203) <<
"Saving in default properties" << endl;
367 m_defaultProps->setCaseInsensitiveSort( on );
369 else if (currentConfig())
371 kdDebug(1203) <<
"Saving in current config" << endl;
372 KConfigGroupSaver cgs(currentConfig(), currentGroup());
373 currentConfig()->writeEntry(
"CaseInsensitiveSort", d->caseInsensitiveSort );
374 currentConfig()->sync();
378 void KonqPropsView::setShowingDirectoryOverlays(
bool show )
380 kdDebug(1203) <<
"KonqPropsView::setShowingDirectoryOverlays " << show << endl;
381 m_bShowDirectoryOverlays = show;
382 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
384 kdDebug(1203) <<
"Saving in default properties" << endl;
385 m_defaultProps->setShowingDirectoryOverlays( show );
387 else if (currentConfig())
389 kdDebug(1203) <<
"Saving in current config" << endl;
390 KConfigGroupSaver cgs(currentConfig(), currentGroup());
391 currentConfig()->writeEntry(
"ShowDirectoryOverlays", m_bShowDirectoryOverlays );
392 currentConfig()->sync();
396 void KonqPropsView::setShowingPreview(
const TQString &preview,
bool show )
398 if ( m_dontPreview.contains( preview ) != show )
401 m_dontPreview.remove( preview );
403 m_dontPreview.append( preview );
404 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
405 m_defaultProps->setShowingPreview( preview, show );
406 else if (currentConfig())
408 KConfigGroupSaver cgs(currentConfig(), currentGroup());
412 bool audioEnabled = !m_dontPreview.contains(
"audio/");
416 m_dontPreview.remove(
"audio/");
417 currentConfig()->writeEntry(
"DontPreview", m_dontPreview );
418 currentConfig()->writeEntry(
"EnableSoundPreviews", audioEnabled );
419 currentConfig()->sync();
421 m_dontPreview.append(
"audio/");
425 delete d->previewsToShow;
426 d->previewsToShow = 0;
429 void KonqPropsView::setShowingPreview(
bool show )
431 d->previewsEnabled = show;
433 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
435 kdDebug(1203) <<
"Saving in default properties" << endl;
436 m_defaultProps-> setShowingPreview( show );
438 else if (currentConfig())
440 kdDebug(1203) <<
"Saving in current config" << endl;
441 KConfigGroupSaver cgs(currentConfig(), currentGroup());
442 currentConfig()->writeEntry(
"PreviewsEnabled", d->previewsEnabled );
443 currentConfig()->sync();
446 delete d->previewsToShow;
447 d->previewsToShow = 0;
450 bool KonqPropsView::isShowingPreview()
452 return d->previewsEnabled;
455 void KonqPropsView::setBgColor(
const TQColor & color )
458 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
460 m_defaultProps->setBgColor( color );
464 KConfigBase * colorConfig = currentColorConfig();
467 KConfigGroupSaver cgs(colorConfig, currentGroup());
468 colorConfig->writeEntry(
"BgColor", m_bgColor );
474 const TQColor & KonqPropsView::bgColor( TQWidget * widget )
const
476 if ( !m_bgColor.isValid() )
477 return widget->colorGroup().base();
482 void KonqPropsView::setTextColor(
const TQColor & color )
485 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
487 m_defaultProps->setTextColor( color );
491 KConfigBase * colorConfig = currentColorConfig();
494 KConfigGroupSaver cgs(colorConfig, currentGroup());
495 colorConfig->writeEntry(
"TextColor", m_textColor );
501 const TQColor & KonqPropsView::textColor( TQWidget * widget )
const
503 if ( !m_textColor.isValid() )
504 return widget->colorGroup().text();
509 void KonqPropsView::setBgPixmapFile(
const TQString & file )
511 m_bgPixmapFile = file;
513 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
515 m_defaultProps->setBgPixmapFile( file );
519 KConfigBase * colorConfig = currentColorConfig();
522 KConfigGroupSaver cgs(colorConfig, currentGroup());
523 colorConfig->writePathEntry(
"BgImage", file );
529 TQPixmap KonqPropsView::loadPixmap()
const
533 if ( !m_bgPixmapFile.isEmpty() )
534 bgPixmap = wallpaperPixmap( m_bgPixmapFile );
538 void KonqPropsView::applyColors(TQWidget * widget)
const
540 if ( m_bgPixmapFile.isEmpty() )
541 widget->setPaletteBackgroundColor( bgColor( widget ) );
544 TQPixmap pix = loadPixmap();
550 if ( ! pix.isNull() )
551 widget->setBackgroundPixmap( pix );
555 if ( m_textColor.isValid() )
556 widget->setPaletteForegroundColor( m_textColor );
559 const TQStringList& KonqPropsView::previewSettings()
561 if ( ! d->previewsToShow )
563 d->previewsToShow =
new TQStringList;
565 if (d->previewsEnabled) {
566 KTrader::OfferList plugins = KTrader::self()->query(
"ThumbCreator" );
567 for ( KTrader::OfferList::ConstIterator it = plugins.begin(); it != plugins.end(); ++it )
569 TQString name = (*it)->desktopEntryName();
570 if ( ! m_dontPreview.contains(name) )
571 d->previewsToShow->append( name );
573 if ( ! m_dontPreview.contains(
"audio/" ) )
574 d->previewsToShow->append(
"audio/" );
578 return *(d->previewsToShow);
581 const TQString& KonqPropsView::sortCriterion()
const {
582 return d->sortcriterion;