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 TDEConfig *config = instance->config();
84 TDEConfigGroupSaver 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 );
97 m_bShowFreeSpaceOverlays = config->readBoolEntry(
"ShowFreeSpaceOverlays",
true );
99 m_dontPreview = config->readListEntry(
"DontPreview" );
100 m_dontPreview.remove(
"audio/");
105 if (!config->readBoolEntry(
"EnableSoundPreviews",
false))
107 if (!m_dontPreview.contains(
"audio/"))
108 m_dontPreview.append(
"audio/");
111 d->previewsEnabled = config->readBoolEntry(
"PreviewsEnabled",
true );
114 m_textColor = config->readColorEntry(
"TextColor", &tc );
115 m_bgColor = config->readColorEntry(
"BgColor" );
116 m_bgPixmapFile = config->readPathEntry(
"BgImage" );
125 TDEConfigGroupSaver cgs2(TDEGlobal::config(),
"Settings");
126 m_textColor = TDEGlobal::config()->readColorEntry(
"TextColor", &m_textColor );
127 m_bgColor = TDEGlobal::config()->readColorEntry(
"BgColor", &m_bgColor );
128 m_bgPixmapFile = TDEGlobal::config()->readPathEntry(
"BgImage", m_bgPixmapFile );
132 TDEGlobal::dirs()->addResourceType(
"tiles",
133 TDEGlobal::dirs()->kde_default(
"data") +
"konqueror/tiles/");
136 bool KonqPropsView::isCaseInsensitiveSort()
const
138 return d->caseInsensitiveSort;
141 bool KonqPropsView::isDirsFirst()
const
146 bool KonqPropsView::isDescending()
const
148 return d->descending;
151 TDEConfigBase * KonqPropsView::currentConfig()
153 if ( !m_currentConfig )
156 assert ( m_bSaveViewPropertiesLocally );
159 if (!dotDirectory.isEmpty())
160 m_currentConfig =
new KSimpleConfig( dotDirectory );
163 return m_currentConfig;
166 TDEConfigBase * KonqPropsView::currentColorConfig()
170 return currentConfig();
173 return TDEGlobal::config();
178 delete d->previewsToShow;
191 u.addPath(
".directory");
192 bool dotDirExists = u.isLocalFile() && TQFile::exists( u.path() );
193 dotDirectory = u.isLocalFile() ? u.path() : TQString::null;
197 if (dotDirExists || m_dotDirExists)
199 m_iIconSize = m_defaultProps->iconSize();
200 m_iItemTextPos = m_defaultProps->itemTextPos();
201 d->sortcriterion = m_defaultProps->sortCriterion();
202 d->dirsfirst = m_defaultProps->isDirsFirst();
203 d->descending = m_defaultProps->isDescending();
204 m_bShowDot = m_defaultProps->isShowingDotFiles();
205 d->caseInsensitiveSort=m_defaultProps->isCaseInsensitiveSort();
206 m_dontPreview = m_defaultProps->m_dontPreview;
207 m_textColor = m_defaultProps->m_textColor;
208 m_bgColor = m_defaultProps->m_bgColor;
209 m_bgPixmapFile = m_defaultProps->bgPixmapFile();
215 KSimpleConfig * config =
new KSimpleConfig( dotDirectory,
true );
216 config->setGroup(
"URL properties");
218 m_iIconSize = config->readNumEntry(
"IconSize", m_iIconSize );
219 m_iItemTextPos = config->readNumEntry(
"ItemTextPos", m_iItemTextPos );
220 d->sortcriterion = config->readEntry(
"SortingCriterion" , d->sortcriterion );
221 d->dirsfirst = config->readBoolEntry(
"SortDirsFirst", d->dirsfirst );
222 d->descending = config->readBoolEntry(
"SortDescending", d->descending );
223 m_bShowDot = config->readBoolEntry(
"ShowDotFiles", m_bShowDot );
224 d->caseInsensitiveSort=config->readBoolEntry(
"CaseInsensitiveSort",d->caseInsensitiveSort);
225 m_bShowDirectoryOverlays = config->readBoolEntry(
"ShowDirectoryOverlays", m_bShowDirectoryOverlays );
226 m_bShowFreeSpaceOverlays = config->readBoolEntry(
"ShowFreeSpaceOverlays", m_bShowFreeSpaceOverlays );
227 if (config->hasKey(
"DontPreview" ))
229 m_dontPreview = config->readListEntry(
"DontPreview" );
235 if (config->hasKey(
"EnableSoundPreviews"))
238 if (!config->readBoolEntry(
"EnableSoundPreviews",
false))
239 if (!m_dontPreview.contains(
"audio/"))
240 m_dontPreview.append(
"audio/");
244 if (m_defaultProps->m_dontPreview.contains(
"audio/"))
245 if (!m_dontPreview.contains(
"audio/"))
246 m_dontPreview.append(
"audio/");
252 m_textColor = config->readColorEntry(
"TextColor", &m_textColor );
253 m_bgColor = config->readColorEntry(
"BgColor", &m_bgColor );
254 m_bgPixmapFile = config->readPathEntry(
"BgImage", m_bgPixmapFile );
256 d->previewsEnabled = config->readBoolEntry(
"PreviewsEnabled", d->previewsEnabled );
260 bool configChanged=(m_dotDirExists|| dotDirExists);
261 m_dotDirExists = dotDirExists;
262 m_currentConfig = 0L;
264 return configChanged;
272 if ( m_bSaveViewPropertiesLocally )
273 delete m_currentConfig;
275 m_bSaveViewPropertiesLocally = value;
276 m_currentConfig = 0L;
279 void KonqPropsView::setIconSize(
int size )
282 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
283 m_defaultProps->setIconSize( size );
284 else if (currentConfig())
286 TDEConfigGroupSaver cgs(currentConfig(), currentGroup());
287 currentConfig()->writeEntry(
"IconSize", m_iIconSize );
288 currentConfig()->sync();
292 void KonqPropsView::setItemTextPos(
int pos )
294 m_iItemTextPos = pos;
295 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
296 m_defaultProps->setItemTextPos( pos );
297 else if (currentConfig())
299 TDEConfigGroupSaver cgs(currentConfig(), currentGroup());
300 currentConfig()->writeEntry(
"ItemTextPos", m_iItemTextPos );
301 currentConfig()->sync();
305 void KonqPropsView::setSortCriterion(
const TQString &criterion )
307 d->sortcriterion = criterion;
308 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
309 m_defaultProps->setSortCriterion( criterion );
310 else if (currentConfig())
312 TDEConfigGroupSaver cgs(currentConfig(), currentGroup());
313 currentConfig()->writeEntry(
"SortingCriterion", d->sortcriterion );
314 currentConfig()->sync();
318 void KonqPropsView::setDirsFirst(
bool first)
320 d->dirsfirst = first;
321 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
322 m_defaultProps->setDirsFirst( first );
323 else if (currentConfig())
325 TDEConfigGroupSaver cgs(currentConfig(), currentGroup());
326 currentConfig()->writeEntry(
"SortDirsFirst", d->dirsfirst );
327 currentConfig()->sync();
331 void KonqPropsView::setDescending(
bool descend)
333 d->descending = descend;
334 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
335 m_defaultProps->setDescending( descend );
336 else if (currentConfig())
338 TDEConfigGroupSaver cgs(currentConfig(), currentGroup());
339 currentConfig()->writeEntry(
"SortDescending", d->descending );
340 currentConfig()->sync();
344 void KonqPropsView::setShowingDotFiles(
bool show )
346 kdDebug(1203) <<
"KonqPropsView::setShowingDotFiles " << show << endl;
348 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
350 kdDebug(1203) <<
"Saving in default properties" << endl;
351 m_defaultProps->setShowingDotFiles( show );
353 else if (currentConfig())
355 kdDebug(1203) <<
"Saving in current config" << endl;
356 TDEConfigGroupSaver cgs(currentConfig(), currentGroup());
357 currentConfig()->writeEntry(
"ShowDotFiles", m_bShowDot );
358 currentConfig()->sync();
362 void KonqPropsView::setCaseInsensitiveSort(
bool on )
364 kdDebug(1203) <<
"KonqPropsView::setCaseInsensitiveSort " << on << endl;
365 d->caseInsensitiveSort = on;
366 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
368 kdDebug(1203) <<
"Saving in default properties" << endl;
369 m_defaultProps->setCaseInsensitiveSort( on );
371 else if (currentConfig())
373 kdDebug(1203) <<
"Saving in current config" << endl;
374 TDEConfigGroupSaver cgs(currentConfig(), currentGroup());
375 currentConfig()->writeEntry(
"CaseInsensitiveSort", d->caseInsensitiveSort );
376 currentConfig()->sync();
380 void KonqPropsView::setShowingDirectoryOverlays(
bool show )
382 kdDebug(1203) <<
"KonqPropsView::setShowingDirectoryOverlays " << show << endl;
383 m_bShowDirectoryOverlays = show;
384 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
386 kdDebug(1203) <<
"Saving in default properties" << endl;
387 m_defaultProps->setShowingDirectoryOverlays( show );
389 else if (currentConfig())
391 kdDebug(1203) <<
"Saving in current config" << endl;
392 TDEConfigGroupSaver cgs(currentConfig(), currentGroup());
393 currentConfig()->writeEntry(
"ShowDirectoryOverlays", m_bShowDirectoryOverlays );
394 currentConfig()->sync();
398 void KonqPropsView::setShowingFreeSpaceOverlays(
bool show )
400 kdDebug(1203) <<
"KonqPropsView::setShowingFreeSpaceOverlays " << show << endl;
401 m_bShowFreeSpaceOverlays = show;
402 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
404 kdDebug(1203) <<
"Saving in default properties" << endl;
405 m_defaultProps->setShowingFreeSpaceOverlays( show );
407 else if (currentConfig())
409 kdDebug(1203) <<
"Saving in current config" << endl;
410 TDEConfigGroupSaver cgs(currentConfig(), currentGroup());
411 currentConfig()->writeEntry(
"ShowFreeSpaceOverlays", m_bShowFreeSpaceOverlays );
412 currentConfig()->sync();
416 void KonqPropsView::setShowingPreview(
const TQString &preview,
bool show )
418 if ( m_dontPreview.contains( preview ) != show )
421 m_dontPreview.remove( preview );
423 m_dontPreview.append( preview );
424 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
425 m_defaultProps->setShowingPreview( preview, show );
426 else if (currentConfig())
428 TDEConfigGroupSaver cgs(currentConfig(), currentGroup());
432 bool audioEnabled = !m_dontPreview.contains(
"audio/");
436 m_dontPreview.remove(
"audio/");
437 currentConfig()->writeEntry(
"DontPreview", m_dontPreview );
438 currentConfig()->writeEntry(
"EnableSoundPreviews", audioEnabled );
439 currentConfig()->sync();
441 m_dontPreview.append(
"audio/");
445 delete d->previewsToShow;
446 d->previewsToShow = 0;
449 void KonqPropsView::setShowingPreview(
bool show )
451 d->previewsEnabled = show;
453 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
455 kdDebug(1203) <<
"Saving in default properties" << endl;
456 m_defaultProps-> setShowingPreview( show );
458 else if (currentConfig())
460 kdDebug(1203) <<
"Saving in current config" << endl;
461 TDEConfigGroupSaver cgs(currentConfig(), currentGroup());
462 currentConfig()->writeEntry(
"PreviewsEnabled", d->previewsEnabled );
463 currentConfig()->sync();
466 delete d->previewsToShow;
467 d->previewsToShow = 0;
470 bool KonqPropsView::isShowingPreview()
472 return d->previewsEnabled;
475 void KonqPropsView::setBgColor(
const TQColor & color )
478 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
480 m_defaultProps->setBgColor( color );
484 TDEConfigBase * colorConfig = currentColorConfig();
487 TDEConfigGroupSaver cgs(colorConfig, currentGroup());
488 colorConfig->writeEntry(
"BgColor", m_bgColor );
494 const TQColor & KonqPropsView::bgColor( TQWidget * widget )
const
496 if ( !m_bgColor.isValid() )
497 return widget->colorGroup().base();
502 void KonqPropsView::setTextColor(
const TQColor & color )
505 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
507 m_defaultProps->setTextColor( color );
511 TDEConfigBase * colorConfig = currentColorConfig();
514 TDEConfigGroupSaver cgs(colorConfig, currentGroup());
515 colorConfig->writeEntry(
"TextColor", m_textColor );
521 const TQColor & KonqPropsView::textColor( TQWidget * widget )
const
523 if ( !m_textColor.isValid() )
524 return widget->colorGroup().text();
529 void KonqPropsView::setBgPixmapFile(
const TQString & file )
531 m_bgPixmapFile = file;
533 if ( m_defaultProps && !m_bSaveViewPropertiesLocally )
535 m_defaultProps->setBgPixmapFile( file );
539 TDEConfigBase * colorConfig = currentColorConfig();
542 TDEConfigGroupSaver cgs(colorConfig, currentGroup());
543 colorConfig->writePathEntry(
"BgImage", file );
549 TQPixmap KonqPropsView::loadPixmap()
const
553 if ( !m_bgPixmapFile.isEmpty() )
554 bgPixmap = wallpaperPixmap( m_bgPixmapFile );
558 void KonqPropsView::applyColors(TQWidget * widget)
const
560 if ( m_bgPixmapFile.isEmpty() )
561 widget->setPaletteBackgroundColor( bgColor( widget ) );
564 TQPixmap pix = loadPixmap();
570 if ( ! pix.isNull() )
571 widget->setBackgroundPixmap( pix );
575 if ( m_textColor.isValid() )
576 widget->setPaletteForegroundColor( m_textColor );
579 const TQStringList& KonqPropsView::previewSettings()
581 if ( ! d->previewsToShow )
583 d->previewsToShow =
new TQStringList;
585 if (d->previewsEnabled) {
586 TDETrader::OfferList plugins = TDETrader::self()->query(
"ThumbCreator" );
587 for ( TDETrader::OfferList::ConstIterator it = plugins.begin(); it != plugins.end(); ++it )
589 TQString name = (*it)->desktopEntryName();
590 if ( ! m_dontPreview.contains(name) )
591 d->previewsToShow->append( name );
593 if ( ! m_dontPreview.contains(
"audio/" ) )
594 d->previewsToShow->append(
"audio/" );
598 return *(d->previewsToShow);
601 const TQString& KonqPropsView::sortCriterion()
const {
602 return d->sortcriterion;