00001
00002
00003
00004 #include "akregatorconfig.h"
00005
00006 #include <kglobal.h>
00007 #include <QtCore/QFile>
00008
00009 using namespace Akregator;
00010
00011 namespace Akregator {
00012 class SettingsHelper
00013 {
00014 public:
00015 SettingsHelper() : q(0) {}
00016 ~SettingsHelper() { delete q; }
00017 Settings *q;
00018 };
00019 }
00020 K_GLOBAL_STATIC(SettingsHelper, s_globalSettings)
00021 Settings *Settings::self()
00022 {
00023 if (!s_globalSettings->q) {
00024 new Settings;
00025 s_globalSettings->q->readConfig();
00026 }
00027
00028 return s_globalSettings->q;
00029 }
00030
00031 Settings::Settings( )
00032 : KConfigSkeleton( QLatin1String( "akregatorrc" ) )
00033 {
00034 Q_ASSERT(!s_globalSettings->q);
00035 s_globalSettings->q = this;
00036 setCurrentGroup( QLatin1String( "View" ) );
00037
00038 KConfigSkeleton::ItemBool *itemShowQuickFilter;
00039 itemShowQuickFilter = new KConfigSkeleton::ItemBool( currentGroup(), QLatin1String( "Show Quick Filter" ), mShowQuickFilter, true );
00040 addItem( itemShowQuickFilter, QLatin1String( "ShowQuickFilter" ) );
00041 KConfigSkeleton::ItemInt *itemViewMode;
00042 itemViewMode = new KConfigSkeleton::ItemInt( currentGroup(), QLatin1String( "View Mode" ), mViewMode, 0 );
00043 addItem( itemViewMode, QLatin1String( "ViewMode" ) );
00044 QList<int> defaultSplitter1Sizes;
00045 defaultSplitter1Sizes.append( 225 );
00046 defaultSplitter1Sizes.append( 650 );
00047
00048 KConfigSkeleton::ItemIntList *itemSplitter1Sizes;
00049 itemSplitter1Sizes = new KConfigSkeleton::ItemIntList( currentGroup(), QLatin1String( "Splitter 1 Sizes" ), mSplitter1Sizes, defaultSplitter1Sizes );
00050 addItem( itemSplitter1Sizes, QLatin1String( "Splitter1Sizes" ) );
00051 QList<int> defaultSplitter2Sizes;
00052 defaultSplitter2Sizes.append( 50 );
00053 defaultSplitter2Sizes.append( 350 );
00054
00055 KConfigSkeleton::ItemIntList *itemSplitter2Sizes;
00056 itemSplitter2Sizes = new KConfigSkeleton::ItemIntList( currentGroup(), QLatin1String( "Splitter 2 Sizes" ), mSplitter2Sizes, defaultSplitter2Sizes );
00057 addItem( itemSplitter2Sizes, QLatin1String( "Splitter2Sizes" ) );
00058
00059 setCurrentGroup( QLatin1String( "Appearance" ) );
00060
00061 KConfigSkeleton::ItemString *itemStandardFont;
00062 itemStandardFont = new KConfigSkeleton::ItemString( currentGroup(), QLatin1String( "Standard Font" ), mStandardFont );
00063 addItem( itemStandardFont, QLatin1String( "StandardFont" ) );
00064 KConfigSkeleton::ItemString *itemFixedFont;
00065 itemFixedFont = new KConfigSkeleton::ItemString( currentGroup(), QLatin1String( "Fixed Font" ), mFixedFont );
00066 addItem( itemFixedFont, QLatin1String( "FixedFont" ) );
00067 KConfigSkeleton::ItemString *itemSerifFont;
00068 itemSerifFont = new KConfigSkeleton::ItemString( currentGroup(), QLatin1String( "Serif Font" ), mSerifFont );
00069 addItem( itemSerifFont, QLatin1String( "SerifFont" ) );
00070 KConfigSkeleton::ItemString *itemSansSerifFont;
00071 itemSansSerifFont = new KConfigSkeleton::ItemString( currentGroup(), QLatin1String( "Sans Serif Font" ), mSansSerifFont );
00072 addItem( itemSansSerifFont, QLatin1String( "SansSerifFont" ) );
00073 KConfigSkeleton::ItemBool *itemUseCustomColors;
00074 itemUseCustomColors = new KConfigSkeleton::ItemBool( currentGroup(), QLatin1String( "UseCustomColors" ), mUseCustomColors, false );
00075 addItem( itemUseCustomColors, QLatin1String( "UseCustomColors" ) );
00076 KConfigSkeleton::ItemColor *itemColorUnreadArticles;
00077 itemColorUnreadArticles = new KConfigSkeleton::ItemColor( currentGroup(), QLatin1String( "ColorUnreadArticles" ), mColorUnreadArticles, QColor( "#0000FF" ) );
00078 addItem( itemColorUnreadArticles, QLatin1String( "ColorUnreadArticles" ) );
00079 KConfigSkeleton::ItemColor *itemColorNewArticles;
00080 itemColorNewArticles = new KConfigSkeleton::ItemColor( currentGroup(), QLatin1String( "ColorNewArticles" ), mColorNewArticles, QColor( "#FF0000" ) );
00081 addItem( itemColorNewArticles, QLatin1String( "ColorNewArticles" ) );
00082
00083 setCurrentGroup( QLatin1String( "HTML Settings" ) );
00084
00085 KConfigSkeleton::ItemStringList *itemFonts;
00086 itemFonts = new KConfigSkeleton::ItemStringList( currentGroup(), QLatin1String( "Fonts" ), mFonts );
00087 addItem( itemFonts, QLatin1String( "Fonts" ) );
00088 KConfigSkeleton::ItemInt *itemMediumFontSize;
00089 itemMediumFontSize = new KConfigSkeleton::ItemInt( currentGroup(), QLatin1String( "MediumFontSize" ), mMediumFontSize, 12 );
00090 addItem( itemMediumFontSize, QLatin1String( "MediumFontSize" ) );
00091 KConfigSkeleton::ItemInt *itemMinimumFontSize;
00092 itemMinimumFontSize = new KConfigSkeleton::ItemInt( currentGroup(), QLatin1String( "MinimumFontSize" ), mMinimumFontSize, 8 );
00093 addItem( itemMinimumFontSize, QLatin1String( "MinimumFontSize" ) );
00094 KConfigSkeleton::ItemBool *itemUnderlineLinks;
00095 itemUnderlineLinks = new KConfigSkeleton::ItemBool( currentGroup(), QLatin1String( "UnderlineLinks" ), mUnderlineLinks );
00096 addItem( itemUnderlineLinks, QLatin1String( "UnderlineLinks" ) );
00097
00098 setCurrentGroup( QLatin1String( "Archive" ) );
00099
00100 QList<KConfigSkeleton::ItemEnum::Choice> valuesArchiveMode;
00101 {
00102 KConfigSkeleton::ItemEnum::Choice choice;
00103 choice.name = QLatin1String( "keepAllArticles" );
00104 valuesArchiveMode.append( choice );
00105 }
00106 {
00107 KConfigSkeleton::ItemEnum::Choice choice;
00108 choice.name = QLatin1String( "limitArticleNumber" );
00109 valuesArchiveMode.append( choice );
00110 }
00111 {
00112 KConfigSkeleton::ItemEnum::Choice choice;
00113 choice.name = QLatin1String( "limitArticleAge" );
00114 valuesArchiveMode.append( choice );
00115 }
00116 {
00117 KConfigSkeleton::ItemEnum::Choice choice;
00118 choice.name = QLatin1String( "disableArchiving" );
00119 valuesArchiveMode.append( choice );
00120 }
00121 KConfigSkeleton::ItemEnum *itemArchiveMode;
00122 itemArchiveMode = new KConfigSkeleton::ItemEnum( currentGroup(), QLatin1String( "ArchiveMode" ), mArchiveMode, valuesArchiveMode, EnumArchiveMode::keepAllArticles );
00123 addItem( itemArchiveMode, QLatin1String( "ArchiveMode" ) );
00124 KConfigSkeleton::ItemInt *itemMaxArticleAge;
00125 itemMaxArticleAge = new KConfigSkeleton::ItemInt( currentGroup(), QLatin1String( "Max Article Age" ), mMaxArticleAge, 60 );
00126 addItem( itemMaxArticleAge, QLatin1String( "MaxArticleAge" ) );
00127 KConfigSkeleton::ItemInt *itemMaxArticleNumber;
00128 itemMaxArticleNumber = new KConfigSkeleton::ItemInt( currentGroup(), QLatin1String( "Max Article Number" ), mMaxArticleNumber, 1000 );
00129 addItem( itemMaxArticleNumber, QLatin1String( "MaxArticleNumber" ) );
00130 KConfigSkeleton::ItemBool *itemDoNotExpireImportantArticles;
00131 itemDoNotExpireImportantArticles = new KConfigSkeleton::ItemBool( currentGroup(), QLatin1String( "Do Not Expire Important Articles" ), mDoNotExpireImportantArticles, true );
00132 addItem( itemDoNotExpireImportantArticles, QLatin1String( "DoNotExpireImportantArticles" ) );
00133
00134 setCurrentGroup( QLatin1String( "Network" ) );
00135
00136 KConfigSkeleton::ItemInt *itemConcurrentFetches;
00137 itemConcurrentFetches = new KConfigSkeleton::ItemInt( currentGroup(), QLatin1String( "Concurrent Fetches" ), mConcurrentFetches, 6 );
00138 addItem( itemConcurrentFetches, QLatin1String( "ConcurrentFetches" ) );
00139 KConfigSkeleton::ItemBool *itemUseHTMLCache;
00140 itemUseHTMLCache = new KConfigSkeleton::ItemBool( currentGroup(), QLatin1String( "Use HTML Cache" ), mUseHTMLCache, true );
00141 addItem( itemUseHTMLCache, QLatin1String( "UseHTMLCache" ) );
00142 KConfigSkeleton::ItemString *itemCustomUserAgent;
00143 itemCustomUserAgent = new KConfigSkeleton::ItemString( currentGroup(), QLatin1String( "Custom UserAgent" ), mCustomUserAgent );
00144 addItem( itemCustomUserAgent, QLatin1String( "CustomUserAgent" ) );
00145
00146 setCurrentGroup( QLatin1String( "General" ) );
00147
00148 KConfigSkeleton::ItemBool *itemFetchOnStartup;
00149 itemFetchOnStartup = new KConfigSkeleton::ItemBool( currentGroup(), QLatin1String( "Fetch On Startup" ), mFetchOnStartup, false );
00150 addItem( itemFetchOnStartup, QLatin1String( "FetchOnStartup" ) );
00151 KConfigSkeleton::ItemBool *itemMarkAllFeedsReadOnStartup;
00152 itemMarkAllFeedsReadOnStartup = new KConfigSkeleton::ItemBool( currentGroup(), QLatin1String( "Mark All Feeds Read On Startup" ), mMarkAllFeedsReadOnStartup, false );
00153 addItem( itemMarkAllFeedsReadOnStartup, QLatin1String( "MarkAllFeedsReadOnStartup" ) );
00154 KConfigSkeleton::ItemBool *itemUseIntervalFetch;
00155 itemUseIntervalFetch = new KConfigSkeleton::ItemBool( currentGroup(), QLatin1String( "Use Interval Fetch" ), mUseIntervalFetch, true );
00156 addItem( itemUseIntervalFetch, QLatin1String( "UseIntervalFetch" ) );
00157 KConfigSkeleton::ItemInt *itemAutoFetchInterval;
00158 itemAutoFetchInterval = new KConfigSkeleton::ItemInt( currentGroup(), QLatin1String( "Auto Fetch Interval" ), mAutoFetchInterval, 30 );
00159 addItem( itemAutoFetchInterval, QLatin1String( "AutoFetchInterval" ) );
00160 KConfigSkeleton::ItemBool *itemUseNotifications;
00161 itemUseNotifications = new KConfigSkeleton::ItemBool( currentGroup(), QLatin1String( "Use Notifications" ), mUseNotifications, false );
00162 addItem( itemUseNotifications, QLatin1String( "UseNotifications" ) );
00163 KConfigSkeleton::ItemBool *itemShowTrayIcon;
00164 itemShowTrayIcon = new KConfigSkeleton::ItemBool( currentGroup(), QLatin1String( "Show Tray Icon" ), mShowTrayIcon, true );
00165 addItem( itemShowTrayIcon, QLatin1String( "ShowTrayIcon" ) );
00166
00167 setCurrentGroup( QLatin1String( "Browser" ) );
00168
00169 KConfigSkeleton::ItemBool *itemCloseButtonOnTabs;
00170 itemCloseButtonOnTabs = new KConfigSkeleton::ItemBool( currentGroup(), QLatin1String( "Close Button On Tabs" ), mCloseButtonOnTabs, false );
00171 addItem( itemCloseButtonOnTabs, QLatin1String( "CloseButtonOnTabs" ) );
00172 KConfigSkeleton::ItemBool *itemExternalBrowserUseKdeDefault;
00173 itemExternalBrowserUseKdeDefault = new KConfigSkeleton::ItemBool( currentGroup(), QLatin1String( "External Browser Use Kde Default" ), mExternalBrowserUseKdeDefault, true );
00174 addItem( itemExternalBrowserUseKdeDefault, QLatin1String( "ExternalBrowserUseKdeDefault" ) );
00175 KConfigSkeleton::ItemBool *itemExternalBrowserUseCustomCommand;
00176 itemExternalBrowserUseCustomCommand = new KConfigSkeleton::ItemBool( currentGroup(), QLatin1String( "External Browser Use Custom Command" ), mExternalBrowserUseCustomCommand, false );
00177 addItem( itemExternalBrowserUseCustomCommand, QLatin1String( "ExternalBrowserUseCustomCommand" ) );
00178 KConfigSkeleton::ItemString *itemExternalBrowserCustomCommand;
00179 itemExternalBrowserCustomCommand = new KConfigSkeleton::ItemString( currentGroup(), QLatin1String( "External Browser Custom Command" ), mExternalBrowserCustomCommand, QLatin1String( "firefox -remote 'openURL(%u,new-tab)'" ) );
00180 addItem( itemExternalBrowserCustomCommand, QLatin1String( "ExternalBrowserCustomCommand" ) );
00181 QList<KConfigSkeleton::ItemEnum::Choice> valuesLMBBehaviour;
00182 {
00183 KConfigSkeleton::ItemEnum::Choice choice;
00184 choice.name = QLatin1String( "OpenInInternalBrowser" );
00185 valuesLMBBehaviour.append( choice );
00186 }
00187 {
00188 KConfigSkeleton::ItemEnum::Choice choice;
00189 choice.name = QLatin1String( "OpenInBackground" );
00190 valuesLMBBehaviour.append( choice );
00191 }
00192 {
00193 KConfigSkeleton::ItemEnum::Choice choice;
00194 choice.name = QLatin1String( "OpenInExternalBrowser" );
00195 valuesLMBBehaviour.append( choice );
00196 }
00197 KConfigSkeleton::ItemEnum *itemLMBBehaviour;
00198 itemLMBBehaviour = new KConfigSkeleton::ItemEnum( currentGroup(), QLatin1String( "LMB Behaviour" ), mLMBBehaviour, valuesLMBBehaviour, EnumLMBBehaviour::OpenInInternalBrowser );
00199 addItem( itemLMBBehaviour, QLatin1String( "LMBBehaviour" ) );
00200 QList<KConfigSkeleton::ItemEnum::Choice> valuesMMBBehaviour;
00201 {
00202 KConfigSkeleton::ItemEnum::Choice choice;
00203 choice.name = QLatin1String( "OpenInInternalBrowser" );
00204 valuesMMBBehaviour.append( choice );
00205 }
00206 {
00207 KConfigSkeleton::ItemEnum::Choice choice;
00208 choice.name = QLatin1String( "OpenInBackground" );
00209 valuesMMBBehaviour.append( choice );
00210 }
00211 {
00212 KConfigSkeleton::ItemEnum::Choice choice;
00213 choice.name = QLatin1String( "OpenInExternalBrowser" );
00214 valuesMMBBehaviour.append( choice );
00215 }
00216 KConfigSkeleton::ItemEnum *itemMMBBehaviour;
00217 itemMMBBehaviour = new KConfigSkeleton::ItemEnum( currentGroup(), QLatin1String( "MMB Behaviour" ), mMMBBehaviour, valuesMMBBehaviour, EnumMMBBehaviour::OpenInExternalBrowser );
00218 addItem( itemMMBBehaviour, QLatin1String( "MMBBehaviour" ) );
00219
00220 setCurrentGroup( QLatin1String( "Columns" ) );
00221
00222 QList<int> defaultFeedlistHeaderStates;
00223
00224 KConfigSkeleton::ItemIntList *itemFeedlistHeaderStates;
00225 itemFeedlistHeaderStates = new KConfigSkeleton::ItemIntList( currentGroup(), QLatin1String( "Feedlist Header States" ), mFeedlistHeaderStates, defaultFeedlistHeaderStates );
00226 addItem( itemFeedlistHeaderStates, QLatin1String( "FeedlistHeaderStates" ) );
00227 QList<int> defaultArticlelistHeaderStates;
00228
00229 KConfigSkeleton::ItemIntList *itemArticlelistHeaderStates;
00230 itemArticlelistHeaderStates = new KConfigSkeleton::ItemIntList( currentGroup(), QLatin1String( "Articlelist Header States" ), mArticlelistHeaderStates, defaultArticlelistHeaderStates );
00231 addItem( itemArticlelistHeaderStates, QLatin1String( "ArticlelistHeaderStates" ) );
00232 KConfigSkeleton::ItemInt *itemArticlelistSortColumn;
00233 itemArticlelistSortColumn = new KConfigSkeleton::ItemInt( currentGroup(), QLatin1String( "Articlelist Sort Column" ), mArticlelistSortColumn, 0 );
00234 addItem( itemArticlelistSortColumn, QLatin1String( "ArticlelistSortColumn" ) );
00235 KConfigSkeleton::ItemInt *itemArticlelistSortOrder;
00236 itemArticlelistSortOrder = new KConfigSkeleton::ItemInt( currentGroup(), QLatin1String( "Articlelist Sort Order" ), mArticlelistSortOrder, 0 );
00237 addItem( itemArticlelistSortOrder, QLatin1String( "ArticlelistSortOrder" ) );
00238
00239 setCurrentGroup( QLatin1String( "Advanced" ) );
00240
00241 KConfigSkeleton::ItemString *itemArchiveBackend;
00242 itemArchiveBackend = new KConfigSkeleton::ItemString( currentGroup(), QLatin1String( "Archive Backend" ), mArchiveBackend, QLatin1String( "metakit" ) );
00243 addItem( itemArchiveBackend, QLatin1String( "ArchiveBackend" ) );
00244 KConfigSkeleton::ItemBool *itemUseMarkReadDelay;
00245 itemUseMarkReadDelay = new KConfigSkeleton::ItemBool( currentGroup(), QLatin1String( "Delay Mark Read" ), mUseMarkReadDelay, true );
00246 addItem( itemUseMarkReadDelay, QLatin1String( "UseMarkReadDelay" ) );
00247 KConfigSkeleton::ItemInt *itemMarkReadDelay;
00248 itemMarkReadDelay = new KConfigSkeleton::ItemInt( currentGroup(), QLatin1String( "Mark Read Delay" ), mMarkReadDelay, 0 );
00249 addItem( itemMarkReadDelay, QLatin1String( "MarkReadDelay" ) );
00250 }
00251
00252 Settings::~Settings()
00253 {
00254 }
00255