34
34
#define QTC_MAX_FILENAME_LEN 1024
35
35
#define QTC_MAX_INPUT_LINE_LEN 256
36
#define QTC_FILE "qtcurvestylerc"
36
#define QTC_FILE "stylerc"
37
#define QTC_OLD_FILE "qtcurvestylerc"
37
38
#define QTC_VERSION_KEY "version"
481
static const char *xdgConfigFolder()
483
static char xdgDir[QTC_MAX_FILENAME_LEN]={'\0'};
481
// Take from KStandardDirs::makeDir
482
bool makeDir(const QString& dir, int mode)
484
// we want an absolute path
485
if (QDir::isRelativePath(dir))
489
return QDir().mkpath(dir);
491
QString target = dir;
492
uint len = target.length();
494
// append trailing slash if missing
495
if (dir.at(len - 1) != '/')
504
int pos = target.indexOf('/', i);
505
base += target.mid(i - 1, pos - i + 1);
506
QByteArray baseEncoded = QFile::encodeName(base);
507
// bail out if we encountered a problem
508
if (stat(baseEncoded, &st) != 0)
510
// Directory does not exist....
511
// Or maybe a dangling symlink ?
512
if (lstat(baseEncoded, &st) == 0)
513
(void)unlink(baseEncoded); // try removing
515
if (mkdir(baseEncoded, static_cast<mode_t>(mode)) != 0) {
516
baseEncoded.prepend( "trying to create local folder " );
517
perror(baseEncoded.constData());
518
return false; // Couldn't create it :-(
528
#include <kstandarddirs.h>
532
static const char *qtcConfDir()
534
static char *cfgDir=NULL;
487
538
static const char *home=NULL;
523
sprintf(xdgDir, "%s/.config", home);
574
cfgDir=(char *)malloc(strlen(home)+18);
575
sprintf(cfgDir, "%s/.config/qtcurve/", home);
579
cfgDir=(char *)malloc(strlen(env)+10);
580
sprintf(cfgDir, "%s/qtcurve/", env);
528
#if defined CONFIG_WRITE || !defined __cplusplus
583
//#if defined CONFIG_WRITE || !defined __cplusplus
530
585
struct stat info;
532
if(0!=lstat(xdgDir, &info))
587
if(0!=lstat(cfgDir, &info))
534
589
#ifdef __cplusplus
535
KStandardDirs::makeDir(xdgDir, 0755);
537
g_mkdir_with_parents(xdgDir, 0755);
591
makeDir(cfgDir, 0755);
593
KStandardDirs::makeDir(cfgDir, 0755);
596
g_mkdir_with_parents(cfgDir, 0755);
606
#if !defined QT_VERSION || QT_VERSION >= 0x040000
608
#define QTC_MENU_FILE_PREFIX "menubar-"
611
static bool qtcMenuBarHidden(const QString &app)
613
return QFile::exists(QFile::decodeName(qtcConfDir())+QTC_MENU_FILE_PREFIX+app);
616
static void qtcSetMenuBarHidden(const QString &app, bool hidden)
619
QFile::remove(QFile::decodeName(qtcConfDir())+QTC_MENU_FILE_PREFIX+app);
621
QFile(QFile::decodeName(qtcConfDir())+QTC_MENU_FILE_PREFIX+app).open(QIODevice::WriteOnly);
624
static bool qtcFileExists(const char *name)
628
return 0==lstat(name, &info) && S_ISREG(info.st_mode);
631
static char * qtcGetMenuBarFileName(const char *app)
637
filename=(char *)malloc(strlen(qtcConfDir())+strlen(QTC_MENU_FILE_PREFIX)+strlen(app)+1);
638
sprintf(filename, "%s"QTC_MENU_FILE_PREFIX"%s", qtcConfDir(), app);
644
static bool qtcMenuBarHidden(const char *app)
646
return qtcFileExists(qtcGetMenuBarFileName(app));
649
static void qtcSetMenuBarHidden(const char *app, bool hidden)
652
unlink(qtcGetMenuBarFileName(app));
655
FILE *f=fopen(qtcGetMenuBarFileName(app), "w");
547
664
#ifdef CONFIG_READ
899
1016
#ifdef __cplusplus
900
1017
if(file.isEmpty())
902
const char *xdg=xdgConfigFolder();
1019
const char *cfgDir=qtcConfDir();
906
QString filename(xdg);
1023
QString filename(QFile::decodeName(cfgDir)+QTC_FILE);
908
filename+="/"QTC_FILE;
1025
if(!QFile::exists(filename))
1026
filename=QFile::decodeName(cfgDir)+"../"QTC_OLD_FILE;
909
1027
return readConfig(filename, opts, defOpts);
915
const char *xdg=xdgConfigFolder();
1033
const char *cfgDir=qtcConfDir();
919
char filename[QTC_MAX_FILENAME_LEN];
1037
char *filename=(char *)malloc(strlen(cfgDir)+strlen(QTC_OLD_FILE)+4);
921
sprintf(filename, "%s/"QTC_FILE, xdg);
922
return readConfig(filename, opts, defOpts);
1040
sprintf(filename, "%s"QTC_FILE, cfgDir);
1041
if(!qtcFileExists(filename))
1042
sprintf(filename, "%s../"QTC_OLD_FILE, cfgDir);
1043
rv=readConfig(filename, opts, defOpts);
952
1075
opts->customGradient=def->customGradient;
1077
#if !defined QTC_CONFIG_DIALOG && defined QT_VERSION && (QT_VERSION >= 0x040000)
1080
opts->menubarApps=QSet<QString>::fromList(readStringEntry(cfg, "menubarApps").split(','));
1081
opts->menubarApps << "kcalc" << "amarok" << "vlc" << "smplayer";
954
1086
Options newOpts;
955
1087
Options *def=&newOpts;
1154
1286
QTC_CFG_READ_BOOL(menuIcons)
1155
1287
QTC_CFG_READ_BOOL(forceAlternateLvCols)
1156
1288
QTC_CFG_READ_BOOL(squareLvSelection)
1289
QTC_CFG_READ_BOOL(invertBotTab)
1290
QTC_CFG_READ_BOOL(menubarHiding)
1157
1291
#if defined QTC_CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
1158
1292
QTC_CFG_READ_BOOL(stdBtnSizes)
1159
1293
QTC_CFG_READ_BOOL(titlebarBorder)
1766
1900
opts->menuIcons=true;
1767
1901
opts->forceAlternateLvCols=false;
1768
1902
opts->squareLvSelection=false;
1903
opts->invertBotTab=true;
1904
opts->menubarHiding=false;
1769
1905
#if defined QTC_CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
1770
1906
opts->stdBtnSizes=false;
1771
1907
opts->titlebarBorder=true;
2228
const char *xdg=xdgConfigFolder();
2364
const char *cfgDir=qtcConfDir();
2232
char filename[QTC_MAX_FILENAME_LEN];
2234
sprintf(filename, "%s/"QTC_FILE, xdg);
2236
2368
#if QT_VERSION >= 0x040000
2237
KConfig defCfg(filename, KConfig::SimpleConfig);
2369
KConfig defCfg(QFile::decodeName(cfgDir)+QTC_FILE, KConfig::SimpleConfig);
2239
KConfig defCfg(filename, false, false);
2371
KConfig defCfg(QFile::decodeName(cfgDir)+QTC_FILE, false, false);
2242
2374
return writeConfig(&defCfg, opts, def, exportingStyle);
2341
2473
CFG_WRITE_ENTRY(menuIcons)
2342
2474
CFG_WRITE_ENTRY(forceAlternateLvCols)
2343
2475
CFG_WRITE_ENTRY(squareLvSelection)
2476
CFG_WRITE_ENTRY(invertBotTab)
2477
CFG_WRITE_ENTRY(menubarHiding)
2344
2478
#if defined QTC_CONFIG_DIALOG || (defined QT_VERSION && (QT_VERSION >= 0x040000))
2345
2479
CFG_WRITE_ENTRY(stdBtnSizes)
2346
2480
CFG_WRITE_ENTRY(titlebarBorder)