kfilespeedbar.cpp
00001 /* This file is part of the KDE libraries 00002 Copyright (C) 2002 Carsten Pfeiffer <pfeiffer@kde.org> 00003 00004 library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License as published by the Free Software Foundation, version 2. 00007 00008 This library is distributed in the hope that it will be useful, 00009 but WITHOUT ANY WARRANTY; without even the implied warranty of 00010 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00011 Library General Public License for more details. 00012 00013 You should have received a copy of the GNU Library General Public License 00014 along with this library; see the file COPYING.LIB. If not, write to 00015 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00016 Boston, MA 02110-1301, USA. 00017 */ 00018 00019 #include "kfilespeedbar.h" 00020 #include "config-kfile.h" 00021 00022 #include <qdir.h> 00023 00024 #include <kconfig.h> 00025 #include <kglobal.h> 00026 #include <kglobalsettings.h> 00027 #include <klocale.h> 00028 #include <kprotocolinfo.h> 00029 #include <kstandarddirs.h> 00030 #include <kurl.h> 00031 00032 KFileSpeedBar::KFileSpeedBar( QWidget *parent, const char *name ) 00033 : KURLBar( true, parent, name ) 00034 { 00035 KConfig *config = KGlobal::config(); 00036 KConfigGroupSaver cs( config, ConfigGroup ); 00037 m_initializeSpeedbar = config->readBoolEntry( "Set speedbar defaults", 00038 true ); 00039 setIconSize(KIcon::SizeSmallMedium); 00040 readConfig( KGlobal::config(), "KFileDialog Speedbar" ); 00041 00042 if ( m_initializeSpeedbar ) 00043 { 00044 KURL u; 00045 u.setPath( KGlobalSettings::desktopPath() ); 00046 insertItem( u, i18n("Desktop"), false ); 00047 00048 //TODO: win32 00049 if ((KGlobalSettings::documentPath() != (QDir::homeDirPath()+"/")) && 00050 QDir(KGlobalSettings::documentPath()).exists()) 00051 { 00052 u.setPath( KGlobalSettings::documentPath() ); 00053 insertItem( u, i18n("Documents"), false, "document" ); 00054 } 00055 00056 u.setPath( QDir::homeDirPath() ); 00057 insertItem( u, i18n("Home Folder"), false, 00058 "folder_home" ); 00059 00060 u = "media:/"; 00061 if ( KProtocolInfo::isKnownProtocol( u ) ) 00062 insertItem( u, i18n("Storage Media"), false, 00063 KProtocolInfo::icon( "media" ) ); 00064 00065 u = "remote:/"; 00066 if ( KProtocolInfo::isKnownProtocol( u ) ) 00067 insertItem( u, i18n("Network Folders"), false, 00068 KProtocolInfo::icon( "remote" ) ); 00069 } 00070 } 00071 00072 KFileSpeedBar::~KFileSpeedBar() 00073 { 00074 } 00075 00076 void KFileSpeedBar::save( KConfig *config ) 00077 { 00078 if ( m_initializeSpeedbar && isModified() ) 00079 { 00080 KConfigGroup conf( config, ConfigGroup ); 00081 // write to kdeglobals 00082 conf.writeEntry( "Set speedbar defaults", false, true, true ); 00083 } 00084 00085 writeConfig( config, "KFileDialog Speedbar" ); 00086 } 00087 00088 QSize KFileSpeedBar::sizeHint() const 00089 { 00090 QSize sizeHint = KURLBar::sizeHint(); 00091 int ems = fontMetrics().width("mmmmmmmmmmmm"); 00092 if (sizeHint.width() < ems) 00093 { 00094 sizeHint.setWidth(ems); 00095 } 00096 return sizeHint; 00097 } 00098 00099 #include "kfilespeedbar.moc"