1 /*
2 *
3 * This file is a part of Libcprime.
4 * Library for saving activites and bookmarks, share file and more.
5 * Copyright 2019 CuboCore Group
6 *
7
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 3 of the License, or
12 * (at your option) any later version.
13 *
14
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21
22 *
23 * You should have received a copy of the GNU General Public License
24 * along with this program; if not, vsit http://www.gnu.org/licenses/.
25 *
26 */
27
28
29 #include <QSettings>
30 #include <QDateTime>
31
32 #include "filefunc.h"
33 #include "variables.h"
34 #include "pinmanage.h"
35
36
PinManage()37 PinManage::PinManage()
38 {
39 CPrime::FileUtils::setupFolder(CPrime::FolderSetup::ConfigFolder);
40 pinSettings = new QSettings(CPrime::Variables::CC_PinsFilePath(), QSettings::NativeFormat);
41 }
42
~PinManage()43 PinManage::~PinManage()
44 {
45 delete pinSettings;
46 }
47
getPinSections()48 QStringList PinManage::getPinSections()
49 {
50 QStringList sections = pinSettings->childGroups();
51 if (sections.isEmpty())
52 addSection("Speed Dial");
53
54 return pinSettings->childKeys();
55 }
56
getPinNames(const QString & sectionName)57 QStringList PinManage::getPinNames(const QString §ionName)
58 {
59 pinSettings->beginGroup(sectionName);
60 QStringList list = pinSettings->childKeys();
61 pinSettings->endGroup();
62 return list;
63 }
64
addSection(const QString & sectionName)65 void PinManage::addSection(const QString §ionName)
66 {
67 // Create a section on General group
68 pinSettings->setValue(sectionName, 0); // '0' doesn't mean anything
69 pinSettings->sync();
70 }
71
addPin(const QString & sectionName,const QString & pinName,const QString & pinpath)72 void PinManage::addPin(const QString §ionName, const QString &pinName, const QString &pinpath)
73 {
74 QString value = pinpath + "\t\t\t" + QDateTime::currentDateTime().toString("hh.mm.ss - dd.MM.yyyy");
75 pinSettings->setValue(QString("%1/%2").arg(sectionName).arg(pinName), value);
76 pinSettings->sync();
77 }
78
delSection(const QString & sectionName)79 void PinManage::delSection(const QString §ionName)
80 {
81 pinSettings->remove(sectionName);
82 pinSettings->sync();
83 }
84
delPin(const QString & pinName,const QString & section)85 void PinManage::delPin(const QString &pinName, const QString §ion)
86 {
87 pinSettings->remove(QString("%1/%2").arg(section).arg(pinName));
88 pinSettings->sync();
89 }
90
editPin(const QString & sectionName,const QString & pinName,const QString & pinpath)91 void PinManage::editPin(const QString §ionName, const QString &pinName, const QString &pinpath)
92 {
93 addPin(sectionName, pinName, pinpath);
94 }
95
changeAll(const QString & oldSectionName,const QString & oldpinName,const QString & sectionName,const QString & pinName,const QString & pinValue)96 void PinManage::changeAll(const QString &oldSectionName, const QString &oldpinName,
97 const QString §ionName, const QString &pinName, const QString &pinValue)
98 {
99 delPin(oldpinName, oldSectionName);
100 addPin(sectionName, pinName, pinValue);
101 }
102
pinPath(const QString & sectionName,const QString & pinName)103 QString PinManage::pinPath(const QString §ionName, const QString &pinName)
104 {
105 QStringList values(pinValues(sectionName, pinName).split("\t\t\t"));
106 return values.at(0);
107 }
108
piningTime(const QString & sectionName,const QString & pinName)109 QString PinManage::piningTime(const QString §ionName, const QString &pinName)
110 {
111 QStringList values(pinValues(sectionName, pinName).split("\t\t\t"));
112 return values.at(1);
113 }
114
checkingPinName(const QString & sectionName,const QString & pinName)115 QString PinManage::checkingPinName(const QString §ionName, const QString &pinName)
116 {
117 if (getPinNames(sectionName).contains(pinName, Qt::CaseInsensitive)) {
118 return "Pin exists.";
119 } else {
120 return "";
121 }
122 }
123
124 // Check on specific section
checkingPinPath(const QString & sectionn,const QString & pinpath)125 QString PinManage::checkingPinPath(const QString §ionn, const QString &pinpath)
126 {
127 Q_FOREACH (const QString &bName, getPinNames(sectionn)) {
128 if (!pinpath.compare(pinPath(sectionn, bName))) {
129 return QString("'%1' \nexists in %2 section.").arg(bName).arg(sectionn);
130 }
131 }
132
133 return "";
134 }
135
136 // Check all section
checkingPinPathEx(const QString & pinpath)137 QString PinManage::checkingPinPathEx(const QString &pinpath)
138 {
139 QString message;
140 Q_FOREACH (const QString §ion, getPinSections()) {
141 message = checkingPinPath(section, pinpath);
142 if (message.count())
143 break;
144 }
145 return message;
146 }
147
pinValues(const QString & sectionName,const QString & pinName) const148 QString PinManage::pinValues(const QString §ionName, const QString &pinName) const
149 {
150 return pinSettings->value(QString("%1/%2").arg(sectionName).arg(pinName)).toString();
151 }
152