File indexing completed on 2024-06-23 05:14:19
0001 /* 0002 utils/userinfo.cpp 0003 0004 This file is part of Kleopatra, the KDE keymanager 0005 SPDX-FileCopyrightText: 2021 g10 Code GmbH 0006 SPDX-FileContributor: Ingo Klöcker <dev@ingo-kloecker.de> 0007 0008 SPDX-License-Identifier: GPL-2.0-or-later 0009 */ 0010 0011 #include "userinfo.h" 0012 0013 // Needed for global defines 0014 #include <QtSystemDetection> 0015 0016 #ifdef Q_OS_WIN 0017 #include "userinfo_win_p.h" 0018 #endif 0019 0020 #include <KEMailSettings> 0021 #include <KEmailAddress> 0022 0023 namespace 0024 { 0025 enum UserInfoDetail { 0026 UserInfoName, 0027 UserInfoEmailAddress, 0028 }; 0029 0030 static QString env_get_user_name(UserInfoDetail detail) 0031 { 0032 const auto var = qEnvironmentVariable("EMAIL"); 0033 if (!var.isEmpty()) { 0034 QString name, addrspec, comment; 0035 const auto result = KEmailAddress::splitAddress(var, name, addrspec, comment); 0036 if (result == KEmailAddress::AddressOk) { 0037 return (detail == UserInfoEmailAddress ? addrspec : name); 0038 } 0039 } 0040 return QString(); 0041 } 0042 } 0043 0044 QString Kleo::userFullName() 0045 { 0046 const KEMailSettings e; 0047 auto name = e.getSetting(KEMailSettings::RealName); 0048 #ifdef Q_OS_WIN 0049 if (name.isEmpty()) { 0050 name = win_get_user_name(NameDisplay); 0051 } 0052 if (name.isEmpty()) { 0053 name = win_get_user_name(NameUnknown); 0054 } 0055 #endif 0056 if (name.isEmpty()) { 0057 name = env_get_user_name(UserInfoName); 0058 } 0059 return name; 0060 } 0061 0062 QString Kleo::userEmailAddress() 0063 { 0064 const KEMailSettings e; 0065 auto mbox = e.getSetting(KEMailSettings::EmailAddress); 0066 #ifdef Q_OS_WIN 0067 if (mbox.isEmpty()) { 0068 mbox = win_get_user_name(NameUserPrincipal); 0069 } 0070 #endif 0071 if (mbox.isEmpty()) { 0072 mbox = env_get_user_name(UserInfoEmailAddress); 0073 } 0074 return mbox; 0075 } 0076 0077 bool Kleo::userIsElevated() 0078 { 0079 #ifdef Q_OS_WIN 0080 static bool ret = win_user_is_elevated(); 0081 return ret; 0082 #else 0083 return false; 0084 #endif 0085 }