-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathip_completer.cpp
60 lines (54 loc) · 1.49 KB
/
ip_completer.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include "ip_completer.h"
IP_Completer::IP_Completer(QObject *parent) : QObject(parent), ipHistory("history.json")
{
ipCompleter.setFilterMode(Qt::MatchStartsWith);
ipCompleter.setCompletionMode(QCompleter::PopupCompletion);
if(!ipHistory.exists())
{
ipList<<"127.0.0.1";
if(!saveHistory())
throw QString("save ip history error");
ipList.clear();
}
if(!loadHistory())
throw QString("load ip history error");
listModel = new QStringListModel(ipList,parent);
ipCompleter.setModel(listModel);
}
IP_Completer::~IP_Completer()
{
delete listModel;
}
QCompleter *IP_Completer::getCompleter()
{
return &ipCompleter;
}
bool IP_Completer::saveHistory()
{
ipListJSON = QJsonArray::fromStringList(ipList);
ipListJSONDoc.setArray(ipListJSON);
if(!ipHistory.open(QIODevice::WriteOnly))
return false;
ipHistory.write(ipListJSONDoc.toJson());
ipHistory.close();
return true;
}
bool IP_Completer::loadHistory()
{
if(!ipHistory.open(QIODevice::ReadOnly))
return false;
ipListJSONDoc = QJsonDocument::fromJson(ipHistory.readAll(),&jsonError);
if(jsonError.error!=QJsonParseError::NoError)
return false;
ipListJSON = ipListJSONDoc.array();
for (int i=0;i<ipListJSON.size();i++)
ipList<<ipListJSON.at(i).toString();
ipHistory.close();
return true;
}
void IP_Completer::addIP(QString IP)
{
ipList<<IP;
ipList.removeDuplicates();
listModel->setStringList(ipList);
}