You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kbfx/kbfxlib/common/kbfxconfig.cpp

863 lines
34 KiB

/*
* Copyright (C) 2006
* Siraj Razick <siraj@kdemail.net>
* PhobosK <phobosk@mail.kbfx.org>
* see Also AUTHORS
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License version 2 as
* published by the Free Software Foundation
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details
*
* You should have received a copy of the GNU Library General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "kbfxconfig.h"
KbfxConfig::KbfxConfig()
{
/* set default configuration values */
/* KBFX internal settings */
KbfxThemeRcDestination = KGlobal::dirs()->saveLocation ( "data", TQString ( "kbfx/themerc/" ), TRUE );
KbfxRcPath = KGlobal::dirs()->findResource ( "config", "kbfxrc" );
m_KbfxDeleteOldConf = FALSE;
TQString _unspecified = tr2i18n ( "Not Specified" );
TQString path = locate ( "data", "kbfx/skins/default/bg.png" );
path.remove ( "default/bg.png" );
kdDebug() << "Configuration path skins: " + path << endl;
/* KBFX general settings */
m_KbfxGeneralVersionDefault = APPLICATION_INTERNAL_VERSION;
m_KbfxThemesVersion = "version-2";
m_KbfxHistoryDefault = "";
/* theme properties */
m_SpinxThemeNameDefault = "default";
m_SpinxThemeBasePathDefault = path;
m_UserSpinxThemeBasePathDefault = path;
m_KbfxMenuTypeDefault = "spinx";
m_ToolBarResizeDefault = FALSE;
m_KbfxWatcherDefault = TRUE;
m_KbfxShowOldThemesDefault = FALSE;
/* user(dude) image properties */
m_SpinxDudeBlinkDefault = FALSE;
KUser *user = new KUser();
m_SpinxDudeImageDefault = locate ( "data", user->homeDir () + "/.face.icon" );
delete user;
/* tooltip properties */
m_ToolTipDefault = FALSE;
m_ToolTipAnimationDefault = TRUE;
m_ToolTipTextDefault = "Application menu";
m_ToolTipAvatarDefault = path + "default/butterfly.png";
m_SpinxTooltipDudeboxDefault = path + "default/tooltip_dudebox.png";
m_SpinxTooltipMaskDefault = path + "default/tooltip_mask.png";
m_SpinxTooltipWindowDefault = path + "default/tooltip_window.png";
m_SpinxTooltipLogoDefault = path + "default/tooltip_logo.png";
/* KBFX plugins */
m_pluginsLeftDefault="Applications";
m_pluginsRightDefault="Settings";
/* specific theme KBFX settings */
/* KBFX panel button */
m_KbfxNormalButtonPathDefault = path + "default/normal.png";
m_KbfxHoverButtonPathDefault = path + "default/hover.png";
m_KbfxPressedButtonPathDefault = path + "default/pressed.png";
/* face properties */
m_facePos_xDefault = -1;
m_facePos_yDefault = -1;
m_faceIconXDefault = 27;
m_faceIconYDefault = 8;
m_faceIconHDefault = 64;
m_faceIconWDefault = 65;
m_userNamePos_xDefault = 130;
m_userNamePos_yDefault = 32;
m_faceBoxHideTextDefault = FALSE;
/* top bar properties */
m_topBar_xDefault = 0;
m_topBar_yDefault = 0;
m_topBar_hDefault = 95;
m_topBar_wDefault = 504; //108+190+74;
/* bottom bar properties */
m_botBar_xDefault = 0;
m_botBar_yDefault = 428;
m_botBar_hDefault = 38;
m_botBar_wDefault = 504; //108+190+74;
/* scroll bar properties */
m_scrollBarBotYDefault = 95;
m_scrollBarBotXDefault = 108;
m_scrollBarTopXDefault = 108;
m_scrollBarTopYDefault = 95;
/* listbox properties */
m_listBox_xDefault = 0;
m_listBox_yDefault = m_topBar_hDefault;
m_listBox_wDefault = 132;
m_listBox_hDefault = 275;
/* search box properties */
m_searchBox_hDefault = 22;
m_searchBox_wDefault = 240;
m_searchBox_xDefault = 130;
m_searchBox_yDefault = 48;
m_searchBox_staticDefault = TRUE;
/* item view properties */
m_itemView_hDefault = 380;
m_itemView_wDefault = 240;
m_itemView_xDefault = 132;
m_itemView_yDefault = m_topBar_hDefault;
/* toolbar properties */
m_toolBarButtonNormalSizeDefault = 48;
m_toolBarButtonExpandSizeDefault = 48;
/* KBFX misc properties */
m_userMenuHeightDefault = 513;
m_userMenuWidthDefault = 504;
m_startHiddenDefault = FALSE;
m_fadeTimeDefault = 75;
m_noCommentsDefault = FALSE;
m_commentMargineDefault = 66;
m_iconSizeDefault = 32;
/* set default fonts values */
m_fontTooltipColorDefault = TQColor ( 0,0,0 );
m_fontTooltipFontDefault = TQFont ( "Arial", 8, TQFont::Normal );
m_fontAppNameColorDefault = TQColor ( 0,0,0 );
m_fontAppNameFontDefault = TQFont ( "Arial", 8, TQFont::Normal );
m_fontAppCommentColorDefault = TQColor ( 128,125,0 );
m_fontAppCommentFontDefault = TQFont ( "Arial", 8, TQFont::Normal );
m_fontIndexColorDefault = TQColor ( 0,0,0 );
m_fontIndexFontDefault = TQFont ( "Arial", 8, TQFont::Normal );
m_userNameColorDefault = TQColor ( 255,255,255 );
m_userNameFontDefault = TQFont ( "Arial", 10, TQFont::Bold );
m_sepNameColorDefault = TQColor ( 0,0,0 );
m_sepNameFontDefault = TQFont ( "Arial", 8, TQFont::Bold );
m_pluginNameColorDefault = TQColor ( 0,0,0 );
m_pluginNameFontDefault = TQFont ( "Arial", 8, TQFont::Normal );
m_lineColorDefault = TQColor ( 255,220,125 );
m_fontHoverBoldDefault = FALSE;
/* set default theme info values */
m_InfoVersionDefault = _unspecified;
m_InfoAuthorDefault = _unspecified;
m_InfoEmailDefault = _unspecified;
m_InfoUrlDefault = _unspecified;
read();
}
KbfxConfig& ConfigInit()
{
static KbfxConfig _config;
return _config;
}
void KbfxConfig::setDefault()
{
/* set default configuration */
m_KbfxHistory = m_KbfxHistoryDefault;
m_SpinxThemeName = m_SpinxThemeNameDefault;
m_SpinxThemeBasePath = m_SpinxThemeBasePathDefault;
m_UserSpinxThemeBasePath = m_UserSpinxThemeBasePathDefault;
m_KbfxMenuType = m_KbfxMenuTypeDefault;
m_ToolBarResize = m_ToolBarResizeDefault;
m_KbfxWatcher = m_KbfxWatcherDefault;
m_KbfxShowOldThemes = m_KbfxShowOldThemesDefault;
m_SpinxDudeBlink = m_SpinxDudeBlinkDefault;
m_SpinxDudeImage = m_SpinxDudeImageDefault;
m_ToolTip = m_ToolTipDefault;
m_ToolTipAnimation = m_ToolTipAnimationDefault;
m_ToolTipText = m_ToolTipTextDefault;
m_pluginsLeft = m_pluginsLeftDefault;
m_pluginsRight = m_pluginsRightDefault;
}
void KbfxConfig::setThemeInfoDefault()
{
/* set default configuration */
m_InfoVersion = m_InfoVersionDefault;
m_InfoAuthor = m_InfoAuthorDefault;
m_InfoEmail = m_InfoEmailDefault;
m_InfoUrl = m_InfoUrlDefault;
}
void KbfxConfig::setThemeDefault()
{
/* set default theme layout configuration */
m_KbfxNormalButtonPath = m_KbfxNormalButtonPathDefault;
m_KbfxHoverButtonPath = m_KbfxHoverButtonPathDefault;
m_KbfxPressedButtonPath = m_KbfxPressedButtonPathDefault;
m_ToolTipAvatar = m_ToolTipAvatarDefault;
m_SpinxTooltipDudebox = m_SpinxTooltipDudeboxDefault;
m_SpinxTooltipMask = m_SpinxTooltipMaskDefault;
m_SpinxTooltipWindow = m_SpinxTooltipWindowDefault;
m_SpinxTooltipLogo = m_SpinxTooltipLogoDefault;
m_facePos_x = m_facePos_xDefault;
m_facePos_y = m_facePos_yDefault;
m_faceIconX = m_faceIconXDefault;
m_faceIconY = m_faceIconYDefault;
m_faceIconH = m_faceIconHDefault;
m_faceIconW = m_faceIconWDefault;
m_userNamePos_x = m_userNamePos_xDefault;
m_userNamePos_y = m_userNamePos_yDefault;
m_faceBoxHideText = m_faceBoxHideTextDefault;
m_topBar_x = m_topBar_xDefault;
m_topBar_y = m_topBar_yDefault;
m_topBar_h = m_topBar_hDefault;
m_topBar_w = m_topBar_wDefault;
m_botBar_x = m_botBar_xDefault;
m_botBar_y = m_botBar_yDefault;
m_botBar_h = m_botBar_hDefault;
m_botBar_w = m_botBar_wDefault;
m_scrollBarBotY = m_scrollBarBotYDefault;
m_scrollBarBotX = m_scrollBarBotXDefault;
m_scrollBarTopX = m_scrollBarTopXDefault;
m_scrollBarTopY = m_scrollBarTopYDefault;
m_listBox_x = m_listBox_xDefault;
m_listBox_y = m_listBox_yDefault;
m_listBox_w = m_listBox_wDefault;
m_listBox_h = m_listBox_hDefault;
m_searchBox_h = m_searchBox_hDefault;
m_searchBox_w = m_searchBox_wDefault;
m_searchBox_x = m_searchBox_xDefault;
m_searchBox_y = m_searchBox_yDefault;
m_searchBox_static = m_searchBox_staticDefault;
m_itemView_h = m_itemView_hDefault;
m_itemView_w = m_itemView_wDefault;
m_itemView_x = m_itemView_xDefault;
m_itemView_y = m_itemView_yDefault;
m_toolBarButtonNormalSize = m_toolBarButtonNormalSizeDefault;
m_toolBarButtonExpandSize = m_toolBarButtonExpandSizeDefault;
m_userMenuHeight = m_userMenuHeightDefault;
m_userMenuWidth = m_userMenuWidthDefault;
m_startHidden = m_startHiddenDefault;
m_fadeTime = m_fadeTimeDefault;
m_noComments = m_noCommentsDefault;
m_commentMargine = m_commentMargineDefault;
m_iconSize = m_iconSizeDefault;
}
void KbfxConfig::setFontsDefault()
{
/* set default fonts values */
m_fontTooltipColor = m_fontTooltipColorDefault;
m_fontTooltipFont = m_fontTooltipFontDefault;
m_fontAppNameColor = m_fontAppNameColorDefault;
m_fontAppNameFont = m_fontAppNameFontDefault;
m_fontAppCommentColor = m_fontAppCommentColorDefault;
m_fontAppCommentFont = m_fontAppCommentFontDefault;
m_fontIndexColor = m_fontIndexColorDefault;
m_fontIndexFont = m_fontIndexFontDefault;
m_userNameColor = m_userNameColorDefault;
m_userNameFont = m_userNameFontDefault;
m_sepNameColor = m_sepNameColorDefault;
m_sepNameFont = m_sepNameFontDefault;
m_pluginNameColor = m_pluginNameColorDefault;
m_pluginNameFont = m_pluginNameFontDefault;
m_lineColor = m_lineColorDefault;
m_fontHoverBold = m_fontHoverBoldDefault;
}
void KbfxConfig::readThemeInfo ( TQString &themePath, TQString &themeName )
{
setThemeInfoDefault();
TQFileInfo * info_theme = new TQFileInfo ( themePath + themeName + "/" + m_KbfxThemesVersion );
KConfig * infoconfig = 0;
if ( info_theme->exists() == TRUE )
{
infoconfig = new KConfig ( info_theme->absFilePath() );
infoconfig->setGroup ( "ThemeGeneral" );
m_InfoVersion = infoconfig->readEntry ( "ThemeVersion", m_InfoVersionDefault );
m_InfoAuthor = infoconfig->readEntry ( "AuthorName", m_InfoAuthorDefault );
m_InfoEmail = infoconfig->readEntry ( "AuthorEmail", m_InfoEmailDefault );
m_InfoUrl = infoconfig->readEntry ( "Homepage", m_InfoUrlDefault );
}
/*
kdDebug() << " m_InfoVersion: " << m_InfoVersion
<< endl << " m_InfoAuthor: " << m_InfoAuthor
<< endl << " m_InfoEmail: " << m_InfoEmail
<< endl << " m_InfoUrl: " << m_InfoUrl
<< endl;
*/
delete info_theme;
delete infoconfig;
}
void KbfxConfig::read()
{
/* read general configuration */
KConfigSkeleton *confskel = new KConfigSkeleton ( TQString::fromLatin1 ( "kbfxrc" ) );
KConfig *conf = confskel->config();
TQString __default = KGlobal::iconLoader()->iconPath ( "kbfx", ( int ) KIcon::Desktop, FALSE );
conf->setGroup ( "KbfxGeneral" );
m_KbfxGeneralVersion = conf->readNumEntry ( "Version", 0 );
m_ToolBarResize = conf->readBoolEntry ( "ToolBarResize", m_ToolBarResizeDefault );
m_KbfxMenuType = conf->readEntry ( "MenuType", m_KbfxMenuTypeDefault );
m_KbfxWatcher = conf->readBoolEntry ( "KbfxWatcher", m_KbfxWatcherDefault );
m_KbfxShowOldThemes = conf->readBoolEntry ( "KbfxShowOld", m_KbfxShowOldThemesDefault );
conf->setGroup ( "SpinxTheme" );
m_UserSpinxThemeBasePath = conf->readEntry ( "UserThemePath", m_UserSpinxThemeBasePathDefault );
/* if a new version use default theme */
if ( m_KbfxGeneralVersion < m_KbfxGeneralVersionDefault )
{
m_SpinxThemeName = m_SpinxThemeNameDefault;
m_SpinxThemeBasePath = m_SpinxThemeBasePathDefault;
}
else
{
m_SpinxThemeName = conf->readEntry ( "ThemeName", m_SpinxThemeNameDefault );
m_SpinxThemeBasePath = conf->readEntry ( "ThemePath", m_SpinxThemeBasePathDefault );
}
conf->setGroup ( "UserImage" );
m_SpinxDudeBlink = conf->readBoolEntry ( "DudeBlink", m_SpinxDudeBlinkDefault );
conf->setGroup ( "ToolTip" );
m_ToolTip = conf->readBoolEntry ( "EnableToolTip", m_ToolTipDefault );
m_ToolTipAnimation = conf->readBoolEntry ( "AnimatedTooltip", m_ToolTipAnimationDefault );
m_ToolTipText = conf->readEntry ( "ToolTipText", m_ToolTipTextDefault );
conf->setGroup ( "Plugins" );
m_pluginsLeft = conf->readListEntry ( "LoadedPluginsLeft", m_pluginsLeftDefault );
m_pluginsRight = conf->readListEntry ( "LoadedPluginsRight", m_pluginsRightDefault );
conf->setGroup ( "Runtime" );
m_KbfxHistory = conf->readEntry ( "History", m_KbfxHistoryDefault );
/*
kdDebug() << " m_KbfxGeneralVersion: " << m_KbfxGeneralVersion
<< endl << " m_KbfxMenuType: " << m_KbfxMenuType
<< endl << " m_KbfxWatcher: " << m_KbfxWatcher
<< endl << " m_KbfxShowOldThemes: " << m_KbfxShowOldThemes
<< endl << " m_ToolBarResize: " << m_ToolBarResize
<< endl << " m_UserSpinxThemeBasePath : " << m_UserSpinxThemeBasePath
<< endl << " m_SpinxThemeName: " << m_SpinxThemeName
<< endl << " m_SpinxThemeBasePath: " << m_SpinxThemeBasePath
<< endl << " m_SpinxDudeBlink: " << m_SpinxDudeBlink
<< endl << " m_ToolTip: " << m_ToolTip
<< endl << " m_ToolTipAnimation: " << m_ToolTipAnimation
<< endl << " m_ToolTipText: " << m_ToolTipText
<< endl << " m_KbfxHoverButtonPath: " << m_KbfxHoverButtonPath
<< endl << " m_KbfxPressedButtonPath: " << m_KbfxPressedButtonPath
<< endl << " m_pluginsLeft: " << m_pluginsLeft
<< endl << " m_pluginsRight: " << m_pluginsRight
<< endl << " m_KbfxHistory: " << m_KbfxHistory
<< endl;
*/
delete confskel;
readFontrc ( m_SpinxThemeBasePath, m_SpinxThemeName );
readThemerc ( m_SpinxThemeBasePath, m_SpinxThemeName );
if ( m_KbfxGeneralVersion < m_KbfxGeneralVersionDefault )
{
m_KbfxGeneralVersion = m_KbfxGeneralVersionDefault;
m_KbfxDeleteOldConf = TRUE;
}
}
void KbfxConfig::readFontrc ( TQString & themePath, TQString & themeName, bool user_rc )
{
setFontsDefault();
/* if a new version use default theme fonts */
if ( m_KbfxGeneralVersion < m_KbfxGeneralVersionDefault )
{
themePath = m_SpinxThemeBasePathDefault;
themeName = m_SpinxThemeNameDefault;
}
/* get some font settings from theme file or from theme section */
TQString _abs_path = "";
TQFileInfo * info = new TQFileInfo ( themePath + themeName + "/kbfxfontrc" );
TQFileInfo * info_theme = new TQFileInfo ( KbfxThemeRcDestination + "/" + themeName + "_fontrc" );
KConfig * fontconfig = 0;
/* if theme kbfxfontrc exists, make its configuration as default values - prefer users' configuration */
if ( info_theme->exists() == TRUE || info->exists() == TRUE )
{
if ( info_theme->exists() == TRUE && m_KbfxGeneralVersion >= m_KbfxGeneralVersionDefault && user_rc )
{
_abs_path = info_theme->absFilePath();
}
else if ( info->exists() == TRUE || m_KbfxGeneralVersion < m_KbfxGeneralVersionDefault )
{
_abs_path = info->absFilePath();
}
fontconfig = new KConfig ( _abs_path );
fontconfig->setGroup ( "Fonts" );
m_fontTooltipColor = fontconfig->readColorEntry ( "TooltipText", &m_fontTooltipColorDefault );
m_fontTooltipFont = fontconfig->readFontEntry ( "TooltipTextFont", &m_fontTooltipFontDefault );
m_fontAppNameColor = fontconfig->readColorEntry ( "ApplicationText", &m_fontAppNameColorDefault );
m_fontAppNameFont = fontconfig->readFontEntry ( "ApplicationTextFont", &m_fontAppNameFontDefault );
m_fontAppCommentColor = fontconfig->readColorEntry ( "CommentText", &m_fontAppCommentColorDefault );
m_fontAppCommentFont = fontconfig->readFontEntry ( "CommentTextFont", &m_fontAppCommentFontDefault );
m_fontIndexColor = fontconfig->readColorEntry ( "GroupText", &m_fontIndexColorDefault );
m_fontIndexFont = fontconfig->readFontEntry ( "GroupTextFont", &m_fontIndexFontDefault );
m_userNameColor = fontconfig->readColorEntry ( "UserName", &m_userNameColorDefault );
m_userNameFont = fontconfig->readFontEntry ( "UserNameFont", &m_userNameFontDefault );
m_sepNameColor = fontconfig->readColorEntry ( "SeparatorColor", &m_sepNameColorDefault );
m_sepNameFont = fontconfig->readFontEntry ( "SeparatorFont", &m_sepNameFontDefault );
m_pluginNameColor = fontconfig->readColorEntry ( "PluginColor", &m_pluginNameColorDefault );
m_pluginNameFont = fontconfig->readFontEntry ( "PluginFont", &m_pluginNameFontDefault );
m_lineColor = fontconfig->readColorEntry ( "LineColor", &m_lineColorDefault );
m_fontHoverBold = fontconfig->readBoolEntry ( "HoverBold",m_fontHoverBoldDefault );
kdDebug() << "Read default font settings for theme: "
<< themeName
<< " from file: "
<< _abs_path
<< endl;
}
else
{
kdDebug() << "Left Default Font Values for theme: "
<< themeName
<< endl;
}
/*
kdDebug() << "Font Values:" << endl
<< m_fontTooltipColor << endl
<< m_fontTooltipFont << endl
<< m_fontAppNameColor << endl
<< m_fontAppNameFont << endl
<< m_fontAppCommentColor << endl
<< m_fontAppCommentFont << endl
<< m_fontIndexColor << endl
<< m_fontIndexFont << endl
<< m_userNameColor << endl
<< m_userNameFont << endl
<< m_sepNameColor << endl
<< m_sepNameFont << endl
<< m_pluginNameColor << endl
<< m_pluginNameFont << endl
<< m_fontHoverBold << endl
<< m_lineColor << endl
;
*/
delete info;
delete info_theme;
delete fontconfig;
}
void KbfxConfig::readThemerc ( TQString &themePath, TQString &themeName, bool user_rc )
{
/* if a new version use default theme layout */
if ( m_KbfxGeneralVersion < m_KbfxGeneralVersionDefault )
{
themePath = m_SpinxThemeBasePathDefault;
themeName = m_SpinxThemeNameDefault;
}
/* load theme's on and off buttons if any */
KbfxOnImg = TQPixmap ( KbfxPlasmaPixmapProvider::PixmapPath ( "on", themePath, themeName ) );
KbfxOffImg = TQPixmap ( KbfxPlasmaPixmapProvider::PixmapPath ( "off", themePath, themeName ) );
/* use theme's default dude image if any */
KConfigSkeleton *confskel = new KConfigSkeleton ( TQString::fromLatin1 ( "kbfxrc" ) );
KConfig *conf = confskel->config();
TQString __default = KGlobal::iconLoader()->iconPath ( "kbfx", ( int ) KIcon::Desktop, FALSE );
if ( m_SpinxDudeImageDefault == TQString() || !KStandardDirs::exists ( m_SpinxDudeImageDefault ) )
{
m_SpinxDudeImageDefault = KbfxPlasmaPixmapProvider::PixmapPath ( "menu_top_image_person", themePath, themeName );
}
conf->setGroup ( "UserImage" );
m_SpinxDudeImage = conf->readEntry ( "DudeImage", m_SpinxDudeImageDefault );
delete confskel;
/* load theme's default buttons if any */
m_KbfxNormalButtonPathDefault = KbfxPlasmaPixmapProvider::PixmapPath ( "normal", themePath, themeName );
m_KbfxHoverButtonPathDefault = KbfxPlasmaPixmapProvider::PixmapPath ( "hover", themePath, themeName );
m_KbfxPressedButtonPathDefault = KbfxPlasmaPixmapProvider::PixmapPath ( "pressed", themePath, themeName );
/* load theme's default tooltip images if any */
m_ToolTipAvatarDefault = KbfxPlasmaPixmapProvider::PixmapPath ( "butterfly", themePath, themeName );
m_SpinxTooltipDudeboxDefault = KbfxPlasmaPixmapProvider::PixmapPath ( "tooltip_dudebox", themePath, themeName );
m_SpinxTooltipMaskDefault = KbfxPlasmaPixmapProvider::PixmapPath ( "tooltip_mask", themePath, themeName );
m_SpinxTooltipWindowDefault = KbfxPlasmaPixmapProvider::PixmapPath ( "tooltip_window", themePath, themeName );
m_SpinxTooltipLogoDefault = KbfxPlasmaPixmapProvider::PixmapPath ( "tooltip_logo", themePath, themeName );
setThemeDefault();
/* get some theme layout settings from theme file or from theme section */
TQString _abs_path = "";
TQFileInfo * info = new TQFileInfo ( themePath + themeName + "/kbfxlayoutrc" );
TQFileInfo * info_theme = new TQFileInfo ( KbfxThemeRcDestination + "/" + themeName + "_layoutrc" );
KConfig *layoutconfig = 0;
/* if theme kbfxlayoutrc exists, make its configuration as default values - prefer users' configuration */
if ( info_theme->exists() == TRUE || info->exists() == TRUE )
{
if ( info_theme->exists() == TRUE && m_KbfxGeneralVersion >= m_KbfxGeneralVersionDefault && user_rc )
{
_abs_path = info_theme->absFilePath();
}
else if ( info->exists() == TRUE || m_KbfxGeneralVersion < m_KbfxGeneralVersionDefault )
{
_abs_path = info->absFilePath();
}
layoutconfig = new KConfig ( _abs_path );
layoutconfig->setGroup ( "KbfxButton" );
m_KbfxNormalButtonPath = layoutconfig->readEntry ( "Normal", m_KbfxNormalButtonPathDefault );
m_KbfxHoverButtonPath = layoutconfig->readEntry ( "Hover", m_KbfxHoverButtonPathDefault );
m_KbfxPressedButtonPath = layoutconfig->readEntry ( "Press", m_KbfxPressedButtonPathDefault );
m_fadeTime = layoutconfig->readNumEntry ( "FadeTime", m_fadeTimeDefault );
layoutconfig->setGroup ( "ToolTip" );
m_ToolTipAvatar = layoutconfig->readEntry ( "Avatar", m_ToolTipAvatarDefault );
m_SpinxTooltipDudebox = layoutconfig->readEntry ( "Dudebox", m_SpinxTooltipDudeboxDefault );
m_SpinxTooltipMask = layoutconfig->readEntry ( "Mask", m_SpinxTooltipMaskDefault );
m_SpinxTooltipWindow = layoutconfig->readEntry ( "Window", m_SpinxTooltipWindowDefault );
m_SpinxTooltipLogo = layoutconfig->readEntry ( "Logo", m_SpinxTooltipLogoDefault );
layoutconfig->setGroup ( "TopBar" );
m_facePos_x = layoutconfig->readNumEntry ( "DudeX", m_facePos_xDefault );
m_facePos_y = layoutconfig->readNumEntry ( "DudeY", m_facePos_yDefault );
m_faceIconX = layoutconfig->readNumEntry ( "FaceX",m_faceIconXDefault );
m_faceIconY = layoutconfig->readNumEntry ( "FaceY",m_faceIconYDefault );
m_faceIconH = layoutconfig->readNumEntry ( "FaceH",m_faceIconHDefault );
m_faceIconW = layoutconfig->readNumEntry ( "FaceW",m_faceIconWDefault );
m_userNamePos_x = layoutconfig->readNumEntry ( "UserNameX", m_userNamePos_xDefault );
m_userNamePos_y = layoutconfig->readNumEntry ( "UserNameY", m_userNamePos_yDefault );
m_faceBoxHideText= layoutconfig->readBoolEntry ( "DisableUserName", m_faceBoxHideTextDefault );
m_topBar_h = layoutconfig->readNumEntry ( "Height", m_topBar_hDefault );
m_topBar_w = layoutconfig->readNumEntry ( "Width", m_topBar_wDefault );
m_topBar_x = layoutconfig->readNumEntry ( "X", m_topBar_xDefault );
m_topBar_y = layoutconfig->readNumEntry ( "Y", m_topBar_yDefault );
layoutconfig->setGroup ( "BottomBar" );
m_botBar_h = layoutconfig->readNumEntry ( "Height", m_botBar_hDefault );
m_botBar_w = layoutconfig->readNumEntry ( "Width", m_botBar_wDefault );
m_botBar_x = layoutconfig->readNumEntry ( "X", m_botBar_xDefault );
m_botBar_y = layoutconfig->readNumEntry ( "Y", m_botBar_yDefault );
layoutconfig->setGroup ( "Scrollbars" );
m_scrollBarBotX = layoutconfig->readNumEntry ( "ScrollBarBotX", m_scrollBarBotXDefault );
m_scrollBarBotY = layoutconfig->readNumEntry ( "ScrollBarBotY", m_scrollBarBotYDefault );
m_scrollBarTopX = layoutconfig->readNumEntry ( "ScrollBarTopX", m_scrollBarTopXDefault );
m_scrollBarTopY = layoutconfig->readNumEntry ( "ScrollBarTopY", m_scrollBarTopYDefault );
layoutconfig->setGroup ( "ListBox" );
m_listBox_h = layoutconfig->readNumEntry ( "Height", m_listBox_hDefault );
m_listBox_w = layoutconfig->readNumEntry ( "Width", m_listBox_wDefault );
m_listBox_x = layoutconfig->readNumEntry ( "X", m_listBox_xDefault );
m_listBox_y = layoutconfig->readNumEntry ( "Y", m_listBox_yDefault );
layoutconfig->setGroup ( "SearchBox" );
m_searchBox_h = layoutconfig->readNumEntry ( "Height", m_searchBox_hDefault );
m_searchBox_w = layoutconfig->readNumEntry ( "Width", m_searchBox_wDefault );
m_searchBox_x = layoutconfig->readNumEntry ( "X", m_searchBox_xDefault );
m_searchBox_y = layoutconfig->readNumEntry ( "Y", m_searchBox_yDefault );
m_searchBox_static = layoutconfig->readBoolEntry ( "FixedPos", m_searchBox_staticDefault );
layoutconfig->setGroup ( "ItemView" );
m_itemView_h = layoutconfig->readNumEntry ( "Height", m_itemView_hDefault );
m_itemView_w = layoutconfig->readNumEntry ( "Width", m_itemView_wDefault );
m_itemView_x = layoutconfig->readNumEntry ( "X", m_itemView_xDefault );
m_itemView_y = layoutconfig->readNumEntry ( "Y", m_itemView_yDefault );
layoutconfig->setGroup ( "ToolBar" );
m_toolBarButtonNormalSize = layoutconfig->readNumEntry ( "ButtonNormalSize", m_toolBarButtonNormalSizeDefault );
m_toolBarButtonExpandSize = layoutconfig->readNumEntry ( "ButtonPressedSize", m_toolBarButtonExpandSizeDefault );
layoutconfig->setGroup ( "MainMenu" );
m_userMenuHeight = layoutconfig->readNumEntry ( "UserMenuHeight",m_userMenuHeightDefault );
m_userMenuWidth = layoutconfig->readNumEntry ( "UserMenuWidth",m_userMenuWidthDefault );
m_startHidden = layoutconfig->readBoolEntry ( "ContractedMenu", m_startHiddenDefault );
layoutconfig->setGroup ( "ItemProperties" );
m_noComments = layoutconfig->readBoolEntry ( "NoComments",m_noCommentsDefault );
m_commentMargine = layoutconfig->readNumEntry ( "CommentMargin",m_commentMargineDefault );
m_iconSize = layoutconfig->readNumEntry ( "IconSize",m_iconSizeDefault );
kdDebug() << "Read default layout settings for theme: "
<< themeName
<< " from file: "
<< _abs_path
<< endl;
}
else
{
kdDebug() << "Left Default Layout Values for theme: "
<< themeName
<< endl;
}
/*
kdDebug() << " m_KbfxNormalButtonPath: " << m_KbfxNormalButtonPath
<< endl << " m_KbfxHoverButtonPath: " << m_KbfxHoverButtonPath
<< endl << " m_KbfxPressedButtonPath: " << m_KbfxPressedButtonPath
<< endl << " m_fadeTime: " << m_fadeTime
<< endl << " m_SpinxDudeImage: " << m_SpinxDudeImage
<< endl << " m_ToolTipAvatar: " << m_ToolTipAvatar
<< endl << " m_SpinxTooltipDudebox: " << m_SpinxTooltipDudebox
<< endl << " m_SpinxTooltipMask: " << m_SpinxTooltipMask
<< endl << " m_SpinxTooltipWindow: " << m_SpinxTooltipWindow
<< endl << " m_SpinxTooltipLogo: " << m_SpinxTooltipLogo
<< endl << " m_facePos_x: " << m_facePos_x
<< endl << " m_facePos_y: " << m_facePos_y
<< endl << " m_faceIconX: " << m_faceIconX
<< endl << " m_faceIconY: " << m_faceIconY
<< endl << " m_faceIconH: " << m_faceIconH
<< endl << " m_faceIconW: " << m_faceIconW
<< endl << " m_userNamePos_x: " << m_userNamePos_x
<< endl << " m_userNamePos_y: " << m_userNamePos_y
<< endl << " m_faceBoxHideText: " << m_faceBoxHideText
<< endl << " m_topBar_x: " << m_topBar_x
<< endl << " m_topBar_y: " << m_topBar_y
<< endl << " m_topBar_h: " << m_topBar_h
<< endl << " m_topBar_w: " << m_topBar_w
<< endl << " m_botBar_x: " << m_botBar_x
<< endl << " m_botBar_y: " << m_botBar_y
<< endl << " m_botBar_h: " << m_botBar_h
<< endl << " m_botBar_w: " << m_botBar_w
<< endl << " m_scrollBarBotY: " << m_scrollBarBotY
<< endl << " m_scrollBarBotX: " << m_scrollBarBotX
<< endl << " m_scrollBarTopX: " << m_scrollBarTopX
<< endl << " m_scrollBarTopY: " << m_scrollBarTopY
<< endl << " m_listBox_x: " << m_listBox_x
<< endl << " m_listBox_y: " << m_listBox_y
<< endl << " m_listBox_w: " << m_listBox_w
<< endl << " m_listBox_h: " << m_listBox_h
<< endl << " m_searchBox_h: " << m_searchBox_h
<< endl << " m_searchBox_w: " << m_searchBox_w
<< endl << " m_searchBox_x: " << m_searchBox_x
<< endl << " m_searchBox_y: " << m_searchBox_y
<< endl << " m_searchBox_static: " << m_searchBox_static
<< endl << " m_itemView_h: " << m_itemView_h
<< endl << " m_itemView_w: " << m_itemView_w
<< endl << " m_itemView_x: " << m_itemView_x
<< endl << " m_itemView_y: " << m_itemView_y
<< endl << " m_toolBarButtonNormalSize: " << m_toolBarButtonNormalSize
<< endl << " m_toolBarButtonExpandSize: " << m_toolBarButtonExpandSize
<< endl << " m_userMenuHeight: " << m_userMenuHeight
<< endl << " m_userMenuWidth: " << m_userMenuHeight
<< endl << " m_startHidden: " << m_startHidden
<< endl << " m_noComments: " << m_noComments
<< endl << " m_commentMargine: " << m_commentMargine
<< endl << " m_iconSize: " << m_iconSize
<< endl;
*/
checkValues();
delete info;
delete info_theme;
delete layoutconfig;
}
void KbfxConfig::write()
{
if ( m_KbfxDeleteOldConf && KbfxRcPath != TQString() )
{
TQFile::remove ( KbfxRcPath );
kdDebug() << "Deleting general RC file: " << KbfxRcPath << endl;
}
KConfigSkeleton *confskel = new KConfigSkeleton ( TQString::fromLatin1 ( "kbfxrc" ) );
/* write general KBFX configuration options */
KConfig *conf = confskel->config();
conf->setGroup ( "KDE Action Restrictions" );
conf->writeEntry ( "warn_unwritable_config", FALSE );
conf->setGroup ( "KbfxGeneral" );
conf->writeEntry ( "Version", m_KbfxGeneralVersion );
conf->writeEntry ( "MenuType", m_KbfxMenuType );
conf->writeEntry ( "ToolBarResize", m_ToolBarResize );
conf->writeEntry ( "KbfxWatcher", m_KbfxWatcher );
conf->writeEntry ( "KbfxShowOld", m_KbfxShowOldThemes );
conf->setGroup ( "SpinxTheme" );
conf->writeEntry ( "UserThemePath", m_UserSpinxThemeBasePath );
conf->writeEntry ( "ThemeName", m_SpinxThemeName );
conf->writeEntry ( "ThemePath", m_SpinxThemeBasePath );
conf->setGroup ( "UserImage" );
conf->writeEntry ( "DudeBlink", m_SpinxDudeBlink );
conf->writeEntry ( "DudeImage", m_SpinxDudeImage );
conf->setGroup ( "ToolTip" );
conf->writeEntry ( "EnableToolTip", m_ToolTip );
conf->writeEntry ( "AnimatedTooltip", m_ToolTipAnimation );
conf->writeEntry ( "ToolTipText", m_ToolTipText );
conf->setGroup ( "Plugins" );
conf->writeEntry ( "LoadedPluginsLeft", m_pluginsLeft );
conf->writeEntry ( "LoadedPluginsRight", m_pluginsRight );
conf->setGroup ( "Runtime" );
conf->writeEntry ( "History", m_KbfxHistory );
conf->sync();
delete confskel;
}
void KbfxConfig::writeFontrc ( TQString & themeName )
{
/* write fonts KBFX configuration from theme name */
KConfig *fontconfig = new KConfig ( KbfxThemeRcDestination + "/" + themeName + "_fontrc" );
fontconfig->setGroup ( "Fonts" );
fontconfig->writeEntry ( "TooltipText", m_fontTooltipColor );
fontconfig->writeEntry ( "TooltipTextFont", m_fontTooltipFont );
fontconfig->writeEntry ( "ApplicationText", m_fontAppNameColor );
fontconfig->writeEntry ( "ApplicationTextFont", m_fontAppNameFont );
fontconfig->writeEntry ( "CommentText", m_fontAppCommentColor );
fontconfig->writeEntry ( "CommentTextFont", m_fontAppCommentFont );
fontconfig->writeEntry ( "GroupText", m_fontIndexColor );
fontconfig->writeEntry ( "GroupTextFont", m_fontIndexFont );
fontconfig->writeEntry ( "UserName", m_userNameColor );
fontconfig->writeEntry ( "UserNameFont", m_userNameFont );
fontconfig->writeEntry ( "SeparatorColor", m_sepNameColor );
fontconfig->writeEntry ( "SeparatorFont", m_sepNameFont );
fontconfig->writeEntry ( "PluginColor", m_pluginNameColor );
fontconfig->writeEntry ( "PluginFont", m_pluginNameFont );
fontconfig->writeEntry ( "LineColor", m_lineColor );
fontconfig->writeEntry ( "HoverBold",m_fontHoverBold );
fontconfig->sync();
delete fontconfig;
}
void KbfxConfig::writeThemerc ( TQString & themeName )
{
checkValues();
/* write layout theme configuration from theme name */
KConfig *layoutconfig = new KConfig ( KbfxThemeRcDestination + "/" + themeName + "_layoutrc" );
layoutconfig->setGroup ( "KbfxButton" );
layoutconfig->writeEntry ( "Normal", m_KbfxNormalButtonPath );
layoutconfig->writeEntry ( "Hover", m_KbfxHoverButtonPath );
layoutconfig->writeEntry ( "Press", m_KbfxPressedButtonPath );
layoutconfig->writeEntry ( "FadeTime", m_fadeTime );
layoutconfig->setGroup ( "ToolTip" );
layoutconfig->writeEntry ( "Avatar", m_ToolTipAvatar );
layoutconfig->writeEntry ( "Dudebox", m_SpinxTooltipDudebox );
layoutconfig->writeEntry ( "Mask", m_SpinxTooltipMask );
layoutconfig->writeEntry ( "Window", m_SpinxTooltipWindow );
layoutconfig->writeEntry ( "Logo", m_SpinxTooltipLogo );
layoutconfig->setGroup ( "TopBar" );
layoutconfig->writeEntry ( "DudeX", m_facePos_x );
layoutconfig->writeEntry ( "DudeY", m_facePos_y );
layoutconfig->writeEntry ( "FaceX",m_faceIconX );
layoutconfig->writeEntry ( "FaceY",m_faceIconY );
layoutconfig->writeEntry ( "FaceH",m_faceIconH );
layoutconfig->writeEntry ( "FaceW",m_faceIconW );
layoutconfig->writeEntry ( "UserNameX", m_userNamePos_x );
layoutconfig->writeEntry ( "UserNameY", m_userNamePos_y );
layoutconfig->writeEntry ( "DisableUserName", m_faceBoxHideText );
layoutconfig->writeEntry ( "Height", m_topBar_h );
layoutconfig->writeEntry ( "Width", m_topBar_w );
layoutconfig->writeEntry ( "X", m_topBar_x );
layoutconfig->writeEntry ( "Y", m_topBar_y );
layoutconfig->setGroup ( "BottomBar" );
layoutconfig->writeEntry ( "Height", m_botBar_h );
layoutconfig->writeEntry ( "Width", m_botBar_w );
layoutconfig->writeEntry ( "X", m_botBar_x );
layoutconfig->writeEntry ( "Y", m_botBar_y );
layoutconfig->setGroup ( "Scrollbars" );
layoutconfig->writeEntry ( "ScrollBarBotX", m_scrollBarBotX );
layoutconfig->writeEntry ( "ScrollBarBotY", m_scrollBarBotY );
layoutconfig->writeEntry ( "ScrollBarTopX", m_scrollBarTopX );
layoutconfig->writeEntry ( "ScrollBarTopY", m_scrollBarTopY );
layoutconfig->setGroup ( "ListBox" );
layoutconfig->writeEntry ( "Height", m_listBox_h );
layoutconfig->writeEntry ( "Width", m_listBox_w );
layoutconfig->writeEntry ( "X", m_listBox_x );
layoutconfig->writeEntry ( "Y", m_listBox_y );
layoutconfig->setGroup ( "SearchBox" );
layoutconfig->writeEntry ( "Height", m_searchBox_h );
layoutconfig->writeEntry ( "Width", m_searchBox_w );
layoutconfig->writeEntry ( "X", m_searchBox_x );
layoutconfig->writeEntry ( "Y", m_searchBox_y );
layoutconfig->writeEntry ( "FixedPos", m_searchBox_static );
layoutconfig->setGroup ( "ItemView" );
layoutconfig->writeEntry ( "Height", m_itemView_h );
layoutconfig->writeEntry ( "Width", m_itemView_w );
layoutconfig->writeEntry ( "X", m_itemView_x );
layoutconfig->writeEntry ( "Y", m_itemView_y );
layoutconfig->setGroup ( "ToolBar" );
layoutconfig->writeEntry ( "ButtonNormalSize", m_toolBarButtonNormalSize );
layoutconfig->writeEntry ( "ButtonPressedSize", m_toolBarButtonExpandSize );
layoutconfig->setGroup ( "MainMenu" );
layoutconfig->writeEntry ( "UserMenuHeight",m_userMenuHeight );
layoutconfig->writeEntry ( "UserMenuWidth",m_userMenuWidth );
layoutconfig->writeEntry ( "ContractedMenu", m_startHidden );
layoutconfig->setGroup ( "ItemProperties" );
layoutconfig->writeEntry ( "NoComments",m_noComments );
layoutconfig->writeEntry ( "CommentMargin",m_commentMargine );
layoutconfig->writeEntry ( "IconSize",m_iconSize );
layoutconfig->sync();
delete layoutconfig;
}
void KbfxConfig::checkValues()
{
/* Protect some of the values */
m_fadeTime = ( m_fadeTime == 0 ) ? m_fadeTime: ( m_fadeTime < 20 ) ? 20: ( m_fadeTime > 1000 ) ? 1000: m_fadeTime;
}