File indexing completed on 2024-04-21 05:45:48
0001 /******************************************************************************* 0002 * Copyright (C) 2008-2013 Konstantinos Smanis <konstantinos.smanis@gmail.com> * 0003 * * 0004 * This program is free software: you can redistribute it and/or modify it * 0005 * under the terms of the GNU General Public License as published by the Free * 0006 * Software Foundation, either version 3 of the License, or (at your option) * 0007 * any later version. * 0008 * * 0009 * This program is distributed in the hope that it will be useful, but WITHOUT * 0010 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * 0011 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * 0012 * more details. * 0013 * * 0014 * You should have received a copy of the GNU General Public License along * 0015 * with this program. If not, see <http://www.gnu.org/licenses/>. * 0016 *******************************************************************************/ 0017 0018 #ifndef KCMGRUB2_H 0019 #define KCMGRUB2_H 0020 0021 #include <KCModule> 0022 #include <QBitArray> 0023 0024 // Project 0025 class Entry; 0026 0027 // Ui 0028 namespace Ui 0029 { 0030 class KCMGRUB2; 0031 } 0032 0033 class KCMGRUB2 : public KCModule 0034 { 0035 Q_OBJECT 0036 public: 0037 explicit KCMGRUB2(QObject *parent, const KPluginMetaData &data, const QVariantList &list); 0038 virtual ~KCMGRUB2(); 0039 0040 void defaults() override; 0041 void load() override; 0042 void save() override; 0043 private Q_SLOTS: 0044 void slotRemoveOldEntries(); 0045 void slotGrubSavedefaultChanged(); 0046 void slotGrubHiddenTimeoutToggled(bool checked); 0047 void slotGrubHiddenTimeoutChanged(); 0048 void slotGrubHiddenTimeoutQuietChanged(); 0049 void slotGrubTimeoutToggled(bool checked); 0050 void slotGrubTimeoutChanged(); 0051 void slotGrubLanguageChanged(); 0052 void slotGrubDisableRecoveryChanged(); 0053 void slotMemtestChanged(); 0054 void slotGrubDisableOsProberChanged(); 0055 void slotGrubGfxmodeChanged(); 0056 void slotGrubGfxpayloadLinuxChanged(); 0057 void slotResolutionsRefresh(); 0058 void slotGrubColorNormalChanged(); 0059 void slotGrubColorHighlightChanged(); 0060 void slowGrubBackgroundChanged(); 0061 void slotPreviewGrubBackground(); 0062 void slotCreateGrubBackground(); 0063 void slotGrubThemeChanged(); 0064 void slotGrubCmdlineLinuxDefaultChanged(); 0065 void slotGrubCmdlineLinuxChanged(); 0066 void slotGrubTerminalChanged(); 0067 void slotGrubTerminalInputChanged(); 0068 void slotGrubTerminalOutputChanged(); 0069 void slotGrubDistributorChanged(); 0070 void slotGrubSerialCommandChanged(); 0071 void slotGrubInitTuneChanged(); 0072 void slotGrubDisableLinuxUuidChanged(); 0073 void slotInstallBootloader(); 0074 0075 void slotUpdateSuggestions(); 0076 void slotTriggeredSuggestion(QAction *action); 0077 0078 private: 0079 struct ColorInfo { 0080 QString grubColor; 0081 QString text; 0082 QColor color; 0083 }; 0084 void setupColors(std::initializer_list<ColorInfo> colors); 0085 void setupObjects(); 0086 void setupConnections(); 0087 0088 bool readFile(const QString &fileName, QByteArray &fileContents); 0089 void readAll(); 0090 0091 void showLocales(); 0092 void sortResolutions(); 0093 void showResolutions(); 0094 0095 QString parseTitle(const QString &line); 0096 void parseEntries(const QString &config); 0097 void parseSettings(const QString &config); 0098 void parseEnv(const QString &config); 0099 0100 Ui::KCMGRUB2 *ui; 0101 0102 enum { 0103 grubSavedefaultDirty, 0104 grubHiddenTimeoutDirty, 0105 grubHiddenTimeoutQuietDirty, 0106 grubTimeoutDirty, 0107 grubLocaleDirty, 0108 grubDisableRecoveryDirty, 0109 memtestDirty, 0110 grubDisableOsProberDirty, 0111 grubGfxmodeDirty, 0112 grubGfxpayloadLinuxDirty, 0113 grubColorNormalDirty, 0114 grubColorHighlightDirty, 0115 grubBackgroundDirty, 0116 grubThemeDirty, 0117 grubCmdlineLinuxDefaultDirty, 0118 grubCmdlineLinuxDirty, 0119 grubTerminalDirty, 0120 grubTerminalInputDirty, 0121 grubTerminalOutputDirty, 0122 grubDistributorDirty, 0123 grubSerialCommandDirty, 0124 grubInitTuneDirty, 0125 grubDisableLinuxUuidDirty, 0126 lastDirtyBit 0127 }; 0128 QBitArray m_dirtyBits; 0129 0130 QList<Entry> m_entries; 0131 QHash<QString, QString> m_settings; 0132 QHash<QString, QString> m_env; 0133 bool m_memtest; 0134 bool m_memtestOn; 0135 QHash<QString, QString> m_devices; 0136 QStringList m_resolutions; 0137 bool m_resolutionsEmpty; 0138 bool m_resolutionsForceRead; 0139 QStringList m_locales; 0140 }; 0141 0142 #endif