File indexing completed on 2024-05-05 05:48:32

0001 /*
0002     CT Environment Variable Implementation
0003     --------------------------------------------------------------------
0004     SPDX-FileCopyrightText: 1999 Gary Meyer <gary@meyer.net>
0005     --------------------------------------------------------------------
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "ctvariable.h"
0010 
0011 #include <KLocalizedString>
0012 #include <QRegularExpression>
0013 
0014 #include "ctHelper.h"
0015 
0016 CTVariable::CTVariable(const QString &tokenString, const QString &_comment, const QString &_userLogin)
0017 {
0018     QString tokStr = tokenString;
0019 
0020     if (tokStr.mid(0, 2) == QLatin1String("#\\")) {
0021         tokStr = tokStr.mid(2, tokStr.length() - 2);
0022         enabled = false;
0023     } else {
0024         enabled = true;
0025     }
0026 
0027     const int spacepos = tokStr.indexOf(QRegularExpression(QLatin1String("[ =]")));
0028     variable = tokStr.mid(0, spacepos);
0029 
0030     value = tokStr.mid(spacepos + 1, tokStr.length() - spacepos - 1);
0031     comment = _comment;
0032 
0033     userLogin = _userLogin;
0034 
0035     mInitialVariable = variable;
0036     mInitialValue = value;
0037     mInitialComment = comment;
0038     mInitialUserLogin = userLogin;
0039     mInitialEnabled = enabled;
0040 }
0041 
0042 CTVariable::CTVariable(const CTVariable &source)
0043     : variable(source.variable)
0044     , value(source.value)
0045     , comment(source.comment)
0046     , userLogin(source.userLogin)
0047     , enabled(source.enabled)
0048     , mInitialVariable(QLatin1String(""))
0049     , mInitialValue(QLatin1String(""))
0050     , mInitialComment(QLatin1String(""))
0051     , mInitialUserLogin(QLatin1String(""))
0052     , mInitialEnabled(true)
0053 {
0054 }
0055 
0056 CTVariable &CTVariable::operator=(const CTVariable &source)
0057 {
0058     if (this == &source) {
0059         return *this;
0060     }
0061 
0062     variable = source.variable;
0063     value = source.value;
0064     comment = source.comment;
0065     userLogin = source.userLogin;
0066     enabled = source.enabled;
0067 
0068     mInitialVariable = QLatin1String("");
0069     mInitialValue = QLatin1String("");
0070     mInitialComment = QLatin1String("");
0071     mInitialUserLogin = QLatin1String("");
0072     mInitialEnabled = true;
0073     return *this;
0074 }
0075 
0076 QString CTVariable::exportVariable()
0077 {
0078     QString exportVariable = CTHelper::exportComment(comment);
0079 
0080     if (!enabled) {
0081         exportVariable += QLatin1String("#\\");
0082     }
0083 
0084     exportVariable += variable + QLatin1String("=") + value + QLatin1String("\n");
0085 
0086     return exportVariable;
0087 }
0088 
0089 void CTVariable::apply()
0090 {
0091     mInitialVariable = variable;
0092     mInitialValue = value;
0093     mInitialComment = comment;
0094     mInitialUserLogin = userLogin;
0095 
0096     mInitialEnabled = enabled;
0097 }
0098 
0099 void CTVariable::cancel()
0100 {
0101     variable = mInitialVariable;
0102     value = mInitialValue;
0103     comment = mInitialComment;
0104     userLogin = mInitialUserLogin;
0105     enabled = mInitialEnabled;
0106 }
0107 
0108 bool CTVariable::dirty() const
0109 {
0110     return (variable != mInitialVariable) || (value != mInitialValue) || (comment != mInitialComment) || (userLogin != mInitialUserLogin)
0111         || (enabled != mInitialEnabled);
0112 }
0113 
0114 QIcon CTVariable::variableIcon() const
0115 {
0116     if (variable == QLatin1String("MAILTO")) {
0117         return QIcon::fromTheme(QLatin1String("mail-message"));
0118     } else if (variable == QLatin1String("SHELL")) {
0119         return QIcon::fromTheme(QLatin1String("utilities-terminal"));
0120     } else if (variable == QLatin1String("HOME")) {
0121         return QIcon::fromTheme(QLatin1String("go-home"));
0122     } else if (variable == QLatin1String("PATH")) {
0123         return QIcon::fromTheme(QLatin1String("folder"));
0124     } else if (variable == QLatin1String("LD_CONFIG_PATH")) {
0125         return QIcon::fromTheme(QLatin1String("application-x-sharedlib"));
0126     }
0127 
0128     return QIcon::fromTheme(QLatin1String("text-plain"));
0129 }
0130 
0131 QString CTVariable::information() const
0132 {
0133     if (variable == QLatin1String("HOME")) {
0134         return i18n("Override default home folder.");
0135     } else if (variable == QLatin1String("MAILTO")) {
0136         return i18n("Email output to specified account.");
0137     } else if (variable == QLatin1String("SHELL")) {
0138         return i18n("Override default shell.");
0139     } else if (variable == QLatin1String("PATH")) {
0140         return i18n("Folders to search for program files.");
0141     } else if (variable == QLatin1String("LD_CONFIG_PATH")) {
0142         return i18n("Dynamic libraries location.");
0143     }
0144 
0145     return i18n("Local Variable");
0146 }