최초
git-svn-id: svn://192.168.0.12/source@48 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
19
ProxyProcess/ProxyProcess.pro
Normal file
19
ProxyProcess/ProxyProcess.pro
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#-------------------------------------------------
|
||||||
|
#
|
||||||
|
# Project created by QtCreator 2014-10-13T04:17:40
|
||||||
|
#
|
||||||
|
#-------------------------------------------------
|
||||||
|
QT += webkitwidgets network widgets sql
|
||||||
|
|
||||||
|
TARGET = ProxyProcess
|
||||||
|
CONFIG += console
|
||||||
|
CONFIG -= app_bundle
|
||||||
|
|
||||||
|
TEMPLATE = app
|
||||||
|
|
||||||
|
SOURCES += main.cpp \
|
||||||
|
scrawler.cpp \
|
||||||
|
|
||||||
|
|
||||||
|
HEADERS += \
|
||||||
|
scrawler.h
|
||||||
257
ProxyProcess/ProxyProcess.pro.user
Normal file
257
ProxyProcess/ProxyProcess.pro.user
Normal file
@@ -0,0 +1,257 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE QtCreatorProject>
|
||||||
|
<!-- Written by QtCreator 3.3.0, 2015-03-13T17:27:47. -->
|
||||||
|
<qtcreator>
|
||||||
|
<data>
|
||||||
|
<variable>EnvironmentId</variable>
|
||||||
|
<value type="QByteArray">{a05fc9db-6c77-45e7-9770-7cd31ad1131c}</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||||
|
<value type="int">0</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||||
|
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||||
|
<value type="QString" key="language">Cpp</value>
|
||||||
|
<valuemap type="QVariantMap" key="value">
|
||||||
|
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||||
|
<value type="QString" key="language">QmlJS</value>
|
||||||
|
<valuemap type="QVariantMap" key="value">
|
||||||
|
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||||
|
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||||
|
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||||
|
<valuemap type="QVariantMap"/>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.4.0 MinGW 32bit</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.4.0 MinGW 32bit</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.54.win32_mingw491_kit</value>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/source/build-ProxyProcess-Desktop_Qt_5_4_0_MinGW_32bit-Debug</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
|
||||||
|
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/source/build-ProxyProcess-Desktop_Qt_5_4_0_MinGW_32bit-Release</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
|
||||||
|
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy locally</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||||
|
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
||||||
|
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
||||||
|
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
||||||
|
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
|
||||||
|
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
||||||
|
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
||||||
|
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
||||||
|
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
||||||
|
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
||||||
|
<value type="int">0</value>
|
||||||
|
<value type="int">1</value>
|
||||||
|
<value type="int">2</value>
|
||||||
|
<value type="int">3</value>
|
||||||
|
<value type="int">4</value>
|
||||||
|
<value type="int">5</value>
|
||||||
|
<value type="int">6</value>
|
||||||
|
<value type="int">7</value>
|
||||||
|
<value type="int">8</value>
|
||||||
|
<value type="int">9</value>
|
||||||
|
<value type="int">10</value>
|
||||||
|
<value type="int">11</value>
|
||||||
|
<value type="int">12</value>
|
||||||
|
<value type="int">13</value>
|
||||||
|
<value type="int">14</value>
|
||||||
|
</valuelist>
|
||||||
|
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||||
|
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">ProxyProcess</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:C:/source/ProxyProcess/ProxyProcess.pro</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments">"http://proxylist.hidemyass.com/search-1305249#listable"</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">ProxyProcess.pro</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">true</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
|
||||||
|
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||||
|
<value type="int">1</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||||
|
<value type="int">18</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>Version</variable>
|
||||||
|
<value type="int">18</value>
|
||||||
|
</data>
|
||||||
|
</qtcreator>
|
||||||
38
ProxyProcess/main.cpp
Normal file
38
ProxyProcess/main.cpp
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
#include "scrawler.h"
|
||||||
|
|
||||||
|
#include <QCoreApplication>
|
||||||
|
#include <iostream>
|
||||||
|
#include <QSqlDatabase>
|
||||||
|
#include <QNetworkProxy>
|
||||||
|
#include <time.h>
|
||||||
|
#include <QDateTime>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
//srand(time(0));
|
||||||
|
QApplication a(argc, argv);
|
||||||
|
QDateTime start = QDateTime::currentDateTime();
|
||||||
|
|
||||||
|
a.setApplicationName(QString("Chrome"));
|
||||||
|
a.setApplicationVersion(QString("39.0.2171.95"));
|
||||||
|
|
||||||
|
SCrawler *process = new SCrawler;
|
||||||
|
QObject::connect(process, SIGNAL(finished()), QApplication::instance(), SLOT(quit()));
|
||||||
|
|
||||||
|
QWebSettings::setObjectCacheCapacities(0,0,0);
|
||||||
|
QWebSettings::clearMemoryCaches();
|
||||||
|
|
||||||
|
QStringList strArgv;
|
||||||
|
for (int i = 1; i < argc ; i++)
|
||||||
|
strArgv.push_back(argv[i]);
|
||||||
|
|
||||||
|
process->load(strArgv);
|
||||||
|
|
||||||
|
a.exec();
|
||||||
|
QDateTime end = QDateTime::currentDateTime();
|
||||||
|
//QDateTime interval = end - start;
|
||||||
|
cout << start.toString("yyyy-MM-dd hh:mm:ss").toStdString() << endl;
|
||||||
|
cout << end.toString("yyyy-MM-dd hh:mm:ss").toStdString() << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
267
ProxyProcess/scrawler.cpp
Normal file
267
ProxyProcess/scrawler.cpp
Normal file
@@ -0,0 +1,267 @@
|
|||||||
|
#include "scrawler.h"
|
||||||
|
#include <iostream>
|
||||||
|
#include <QSqlQuery>
|
||||||
|
#include <QSqlError>
|
||||||
|
#include <QByteArray>
|
||||||
|
#include <qDebug>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
struct SProxyList
|
||||||
|
{
|
||||||
|
QString m_strAddress;
|
||||||
|
int m_nPort;
|
||||||
|
};
|
||||||
|
|
||||||
|
SCrawler::SCrawler():QObject()
|
||||||
|
{
|
||||||
|
m_page = new QWebPage;
|
||||||
|
connect(m_page, SIGNAL(loadFinished(bool)), this, SLOT(saveResult(bool)));
|
||||||
|
}
|
||||||
|
|
||||||
|
SCrawler::~SCrawler()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void SCrawler::load(QStringList _strlistArgv)
|
||||||
|
{
|
||||||
|
QUrl url(_strlistArgv.at(0));
|
||||||
|
|
||||||
|
m_page->settings()->setAttribute(QWebSettings::AutoLoadImages, false);
|
||||||
|
m_page->settings()->setAttribute(QWebSettings::JavaEnabled, false);
|
||||||
|
|
||||||
|
|
||||||
|
if(_strlistArgv.length() > 1)
|
||||||
|
m_strFolder = _strlistArgv.at(1) + "\\";
|
||||||
|
|
||||||
|
m_page->currentFrame()->load(url);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SCrawler::UpdateError(QString _strError)
|
||||||
|
{
|
||||||
|
|
||||||
|
m_bError = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SCrawler::saveResult(bool ok)
|
||||||
|
{
|
||||||
|
if (!ok)
|
||||||
|
{
|
||||||
|
std::cerr << "Failed loading " << qPrintable(m_page->mainFrame()->url().toString()) << std::endl;
|
||||||
|
emit finished();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWebElement p_parse = Find(m_page->currentFrame()->documentElement(),"div","class","row inner");
|
||||||
|
|
||||||
|
//Debug("test.html",m_page->currentFrame()->toHtml());
|
||||||
|
//Debug("filtered.html", p_parse.toInnerXml());
|
||||||
|
|
||||||
|
QWebElementCollection trs = p_parse.findAll("tr");
|
||||||
|
QString DISPLAYINLINE = "{display:inline}";
|
||||||
|
QString DISPLAYNONE = "{display:none}";
|
||||||
|
QString totalResult;
|
||||||
|
|
||||||
|
for(int i = 1; i < trs.count(); i++)
|
||||||
|
{
|
||||||
|
QWebElementCollection tds = trs.at(i).findAll("td");
|
||||||
|
|
||||||
|
QWebElement firstStyle = trs.at(i).findFirst("style");
|
||||||
|
|
||||||
|
QString strFirstStyle = firstStyle.toInnerXml().trimmed();
|
||||||
|
|
||||||
|
QStringList disinline;
|
||||||
|
QStringList disnone;
|
||||||
|
// {display:inline} {display:none}
|
||||||
|
QStringList strlist = strFirstStyle.split(".", QString::SkipEmptyParts);
|
||||||
|
|
||||||
|
foreach(QString str, strlist)
|
||||||
|
{
|
||||||
|
if(str.trimmed().right(DISPLAYINLINE.length()).compare(DISPLAYINLINE) == 0)
|
||||||
|
{
|
||||||
|
disinline.append(str.trimmed().left(str.trimmed().length() - DISPLAYINLINE.length()));
|
||||||
|
// cout << DISPLAYINLINE.toStdString() << " : " << str.trimmed().left(str.trimmed().length() - DISPLAYINLINE.length()).toStdString() << endl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
disnone.append(str.trimmed().left(str.trimmed().length() - DISPLAYNONE.length()));
|
||||||
|
// cout << DISPLAYNONE.toStdString() << " : " << str.trimmed().left(str.trimmed().length() - DISPLAYNONE.length()).toStdString() << endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QString strIpContents = tds.at(1).toInnerXml();
|
||||||
|
foreach(QString str, disinline)
|
||||||
|
{
|
||||||
|
strIpContents.replace(str.trimmed(),"display: inline");
|
||||||
|
}
|
||||||
|
foreach(QString str, disnone)
|
||||||
|
{
|
||||||
|
strIpContents.replace(str.trimmed(),"display:none");
|
||||||
|
}
|
||||||
|
|
||||||
|
// cout << strIpContents.toStdString() << endl;
|
||||||
|
QStringList strIpContentsList = strIpContents.split(QRegExp("[<>]"),QString::SkipEmptyParts);
|
||||||
|
QString result;
|
||||||
|
for(int j = 0; j < strIpContentsList.count(); j++)
|
||||||
|
{
|
||||||
|
QString str1 = strIpContentsList.at(j).trimmed();
|
||||||
|
|
||||||
|
if(str1.at(0) == '/')
|
||||||
|
continue;
|
||||||
|
if(str1.left(4).compare("span") == 0)
|
||||||
|
continue;
|
||||||
|
if(str1.left(3).compare("div") == 0)
|
||||||
|
continue;
|
||||||
|
if(str1.left(5).compare("style") == 0)
|
||||||
|
continue;
|
||||||
|
if(str1.mid(1,3).compare("dis") == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(j > 0)
|
||||||
|
{
|
||||||
|
QString str2 = strIpContentsList.at(j-1).trimmed();
|
||||||
|
if(str2.right(5).compare("none\"") == 0)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
result += str1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//cout << strIpContentsList.length() << endl;
|
||||||
|
cout << result.toStdString() << endl;
|
||||||
|
//Debug("proxy.txt",result);
|
||||||
|
QString port = tds.at(2).toInnerXml().trimmed();
|
||||||
|
result += ("," + port);
|
||||||
|
totalResult += result;
|
||||||
|
if(i < trs.count() - 1)
|
||||||
|
totalResult += "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug(m_strFolder + "proxy.txt",totalResult);
|
||||||
|
|
||||||
|
emit finished();
|
||||||
|
}
|
||||||
|
|
||||||
|
int SCrawler::GetNumber(QString _str)
|
||||||
|
{
|
||||||
|
QString strNumber;
|
||||||
|
for (int i = 0; i < _str.size();i++)
|
||||||
|
{
|
||||||
|
if (_str.at(i).isNumber())
|
||||||
|
strNumber += _str.at(i);
|
||||||
|
}
|
||||||
|
return strNumber.toInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SCrawler::Debug(QString _strFilename,QString _strData)
|
||||||
|
{
|
||||||
|
QFile file(_strFilename);
|
||||||
|
QFile::remove(_strFilename);
|
||||||
|
if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))
|
||||||
|
// if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate))
|
||||||
|
return;
|
||||||
|
QTextStream out(&file);
|
||||||
|
out << _strData;
|
||||||
|
file.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString SCrawler::SqlString(QString _str)
|
||||||
|
{
|
||||||
|
_str = _str.replace("'","\\'");
|
||||||
|
_str = _str.replace("\"","\\\"");
|
||||||
|
return _str;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString SCrawler::GetSafeUtf(QString _strData)
|
||||||
|
{
|
||||||
|
QString str;
|
||||||
|
QChar *pch = _strData.data();
|
||||||
|
|
||||||
|
for (int i = 0; i < _strData.length(); i++)
|
||||||
|
{
|
||||||
|
if (pch[i].unicode() >= 12593 && pch[i].unicode() <= 12622)
|
||||||
|
str += pch[i];
|
||||||
|
if (pch[i].unicode() >= 44032 && pch[i].unicode() <= 55203)
|
||||||
|
str += pch[i];
|
||||||
|
if (pch[i].isDigit() || pch[i].isNumber() || pch[i].isSpace() || pch[i].isLower() || pch[i].isUpper() || pch[i].isSymbol() )
|
||||||
|
str += pch[i];
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWebElement SCrawler::Find(const QWebElement _FindElement,const QString _strElement,const QString _strAttrib,const QString _strFind)
|
||||||
|
{
|
||||||
|
QWebElementCollection elements = _FindElement.findAll(_strElement);
|
||||||
|
foreach (QWebElement element, elements)
|
||||||
|
{
|
||||||
|
if (element.attribute(_strAttrib) == _strFind)
|
||||||
|
{
|
||||||
|
return element;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
QWebElement element;
|
||||||
|
return element;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWebElement SCrawler::FindMid(const QWebElement _FindElement,const QString _strElement,const QString _strAttrib,const QString _strFind, const int _strStart, const int _strLength)
|
||||||
|
{
|
||||||
|
QWebElementCollection elements = _FindElement.findAll(_strElement);
|
||||||
|
foreach (QWebElement element, elements)
|
||||||
|
{
|
||||||
|
QString str = element.attribute(_strAttrib).trimmed().mid(_strStart,_strLength);
|
||||||
|
if (QString::compare(str,_strFind,Qt::CaseInsensitive)==0)
|
||||||
|
{
|
||||||
|
return element;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
QWebElement element;
|
||||||
|
return element;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWebElement SCrawler::FindMid(const QWebElement _FindElement,const QString _strElement,const QString _strAttrib,const QString _strFind, const int _strStart)
|
||||||
|
{
|
||||||
|
int _strLength = _strFind.length();
|
||||||
|
return FindMid(_FindElement, _strElement, _strAttrib, _strFind, _strStart, _strLength);
|
||||||
|
}
|
||||||
|
|
||||||
|
QWebElement SCrawler::FindRight(const QWebElement _FindElement,const QString _strElement,const QString _strAttrib,const QString _strFind)
|
||||||
|
{
|
||||||
|
QWebElementCollection elements = _FindElement.findAll(_strElement);
|
||||||
|
foreach (QWebElement element, elements)
|
||||||
|
{
|
||||||
|
QString str = element.attribute(_strAttrib).trimmed().right(_strFind.length());
|
||||||
|
cout << "FindRight : " << str.toStdString() << endl;
|
||||||
|
cout << "FindRight right : " << _strFind.toStdString() << endl;
|
||||||
|
if (QString::compare(str,_strFind,Qt::CaseInsensitive)==0)
|
||||||
|
{
|
||||||
|
return element;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
QWebElement element;
|
||||||
|
return element;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWebElement SCrawler::FindLeft(const QWebElement _FindElement,const QString _strElement,const QString _strAttrib,const QString _strFind)
|
||||||
|
{
|
||||||
|
int _strStart = 0;
|
||||||
|
return FindMid(_FindElement, _strElement, _strAttrib, _strFind, _strStart);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
QList<QWebElement> SCrawler::FindAllMid(const QWebElement _FindElement,const QString _strElement,const QString _strAttrib,const QString _strFind, const int _strStart, const int _strLength)
|
||||||
|
{
|
||||||
|
QWebElementCollection elements = _FindElement.findAll(_strElement);
|
||||||
|
QList<QWebElement> returnElements = QList<QWebElement>();
|
||||||
|
|
||||||
|
foreach (QWebElement element, elements)
|
||||||
|
{
|
||||||
|
QString str = element.attribute(_strAttrib).trimmed().mid(_strStart,_strLength);
|
||||||
|
if (QString::compare(str,_strFind,Qt::CaseInsensitive)==0)
|
||||||
|
{
|
||||||
|
returnElements.append(element);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return returnElements;
|
||||||
|
}
|
||||||
51
ProxyProcess/scrawler.h
Normal file
51
ProxyProcess/scrawler.h
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
#ifndef SCRAWLER_H
|
||||||
|
#define SCRAWLER_H
|
||||||
|
|
||||||
|
#include <QtWebKitWidgets>
|
||||||
|
|
||||||
|
class SCrawler : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
SCrawler();
|
||||||
|
~SCrawler();
|
||||||
|
void load(QStringList _strlistArgv);
|
||||||
|
void saveFile();
|
||||||
|
// static void Debug(QString _strFilename,QString _strData);
|
||||||
|
void Debug(QString _strFilename,QString _strData);
|
||||||
|
signals:
|
||||||
|
void finished();
|
||||||
|
private slots:
|
||||||
|
void saveResult(bool ok);
|
||||||
|
private:
|
||||||
|
int m_nSelect;
|
||||||
|
//QString m_strTableReply;
|
||||||
|
QString m_strReper;
|
||||||
|
QString m_strKeywordID;
|
||||||
|
|
||||||
|
QWebPage *m_page;
|
||||||
|
QString m_strFile;
|
||||||
|
QString m_strUrl;
|
||||||
|
QString m_strTable;
|
||||||
|
QString m_strFolder;
|
||||||
|
|
||||||
|
bool m_bUse;
|
||||||
|
bool m_bLast;
|
||||||
|
bool m_bError;
|
||||||
|
|
||||||
|
QString SqlString(QString _str);
|
||||||
|
QString GetSafeUtf(QString _strData);
|
||||||
|
int GetNumber(QString _str);
|
||||||
|
|
||||||
|
|
||||||
|
QWebElement Find(const QWebElement _FindElement,const QString _strElement,const QString _strAttrib,const QString _strFind);
|
||||||
|
QWebElement FindMid(const QWebElement _FindElement,const QString _strElement,const QString _strAttrib,const QString _strFind, const int _strStart, const int _strLength);
|
||||||
|
QWebElement FindMid(const QWebElement _FindElement,const QString _strElement,const QString _strAttrib,const QString _strFind, const int _strStart);
|
||||||
|
QWebElement FindRight(const QWebElement _FindElement,const QString _strElement,const QString _strAttrib,const QString _strFind);
|
||||||
|
QWebElement FindLeft(const QWebElement _FindElement,const QString _strElement,const QString _strAttrib,const QString _strFind);
|
||||||
|
QList<QWebElement> FindAllMid(const QWebElement _FindElement,const QString _strElement,const QString _strAttrib,const QString _strFind, const int _strStart, const int _strLength);
|
||||||
|
QWebElementCollection Finds(const QWebElement _FindElement,const QString _strElement,const QString _strAttrib,const QString _strFind);
|
||||||
|
void UpdateError(QString _strError);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SCRAWLER_H
|
||||||
20
ProxyUI/ProxyUI.pro
Normal file
20
ProxyUI/ProxyUI.pro
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#-------------------------------------------------
|
||||||
|
#
|
||||||
|
# Project created by QtCreator 2015-03-12T11:40:22
|
||||||
|
#
|
||||||
|
#-------------------------------------------------
|
||||||
|
|
||||||
|
QT += core gui
|
||||||
|
|
||||||
|
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||||
|
|
||||||
|
TARGET = ProxyUI
|
||||||
|
TEMPLATE = app
|
||||||
|
|
||||||
|
|
||||||
|
SOURCES += main.cpp\
|
||||||
|
widget.cpp
|
||||||
|
|
||||||
|
HEADERS += widget.h
|
||||||
|
|
||||||
|
FORMS += widget.ui
|
||||||
11
ProxyUI/main.cpp
Normal file
11
ProxyUI/main.cpp
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
#include "widget.h"
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
QApplication a(argc, argv);
|
||||||
|
Widget w;
|
||||||
|
w.show();
|
||||||
|
|
||||||
|
return a.exec();
|
||||||
|
}
|
||||||
160
ProxyUI/widget.cpp
Normal file
160
ProxyUI/widget.cpp
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
#include "widget.h"
|
||||||
|
#include "ui_widget.h"
|
||||||
|
|
||||||
|
Widget::Widget(QWidget *parent) :
|
||||||
|
QWidget(parent),
|
||||||
|
ui(new Ui::Widget)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
{
|
||||||
|
p_labelUrl = new QLabel(tr("URL: "));
|
||||||
|
p_labelTime = new QLabel(tr("Update Time Period(sec): "));
|
||||||
|
p_labelProxyFile = new QLabel(tr("Save Location: "));
|
||||||
|
p_labelRecentTime = new QLabel("");
|
||||||
|
p_labelNextTime = new QLabel("");
|
||||||
|
|
||||||
|
p_labelRecent = new QLabel(tr("Recent Updated Time: "));
|
||||||
|
p_labelNext = new QLabel("Next Update Time: ");
|
||||||
|
|
||||||
|
p_lineUrl = new QLineEdit("http://proxylist.hidemyass.com/search-1305249#listable");
|
||||||
|
p_lineTime = new QLineEdit("1800");
|
||||||
|
p_lineProxyFile = new QLineEdit(qApp->applicationDirPath());
|
||||||
|
p_btnChoose = new QPushButton("Choose");
|
||||||
|
|
||||||
|
p_FileDialog = new QFileDialog();
|
||||||
|
glayout = new QGridLayout();
|
||||||
|
|
||||||
|
p_lineUrl->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
|
||||||
|
p_lineTime->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
|
||||||
|
p_lineProxyFile->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
|
||||||
|
|
||||||
|
glayout->addWidget(p_labelUrl, 0, 0);
|
||||||
|
glayout->addWidget(p_lineUrl, 0, 1, 1, 3);
|
||||||
|
glayout->addWidget(p_labelTime, 1, 0);
|
||||||
|
glayout->addWidget(p_lineTime, 1, 1, 1, 3);
|
||||||
|
glayout->addWidget(p_labelProxyFile, 2, 0);
|
||||||
|
glayout->addWidget(p_lineProxyFile, 2, 1, 1, 2);
|
||||||
|
glayout->addWidget(p_btnChoose, 2, 3);
|
||||||
|
glayout->addWidget(p_labelRecent , 3, 0);
|
||||||
|
glayout->addWidget(p_labelRecentTime, 3, 1);
|
||||||
|
glayout->addWidget(p_labelNext, 3, 2);
|
||||||
|
glayout->addWidget(p_labelNextTime, 3, 3);
|
||||||
|
/*
|
||||||
|
for(int i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
hlayoutParam[i] = new QHBoxLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
hlayoutParam[0]->addWidget(p_labelUrl);
|
||||||
|
hlayoutParam[0]->addWidget(p_lineUrl);
|
||||||
|
hlayoutParam[1]->addWidget(p_labelTime);
|
||||||
|
hlayoutParam[1]->addWidget(p_lineTime);
|
||||||
|
hlayoutParam[2]->addWidget(p_labelProxyFile);
|
||||||
|
hlayoutParam[2]->addWidget(p_lineProxyFile);
|
||||||
|
hlayoutParam[2]->addWidget(p_btnChoose);
|
||||||
|
hlayoutParam[3]->addWidget(p_labelRecent);
|
||||||
|
hlayoutParam[3]->addWidget(p_labelRecentTime);
|
||||||
|
hlayoutParam[3]->addWidget(p_labelNext);
|
||||||
|
hlayoutParam[3]->addWidget(p_labelNextTime);
|
||||||
|
|
||||||
|
vlayoutParam = new QVBoxLayout();
|
||||||
|
|
||||||
|
for(int i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
vlayoutParam->addLayout(hlayoutParam[i]);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
p_btnStart = new QPushButton(tr("Timer Start"));
|
||||||
|
p_btnStop = new QPushButton(tr("Timer Stop"));
|
||||||
|
p_labelTimerOnOff = new QLabel(tr("Timer OFF"));
|
||||||
|
p_labelStatus = new QLabel(tr("Waiting"));
|
||||||
|
// vlayoutButton = new QVBoxLayout();
|
||||||
|
glayout->addWidget(p_btnStart,0, 4);
|
||||||
|
glayout->addWidget(p_btnStop, 1, 4);
|
||||||
|
glayout->addWidget(p_labelTimerOnOff, 2, 4);
|
||||||
|
glayout->addWidget(p_labelStatus,3 , 4);
|
||||||
|
QLabel *blank = new QLabel;
|
||||||
|
glayout->addWidget(blank, 4, 0, 1, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
p_timer = new QTimer(this);
|
||||||
|
|
||||||
|
connect(p_timer,SIGNAL(timeout()),this,SLOT(update()));
|
||||||
|
connect(p_btnStart, SIGNAL(clicked()), this, SLOT(btnStart()));
|
||||||
|
connect(p_btnStop, SIGNAL(clicked()), this, SLOT(btnStop()));
|
||||||
|
connect(p_btnChoose, SIGNAL(clicked()), this, SLOT(btnChoose()));
|
||||||
|
connect(&v_pro,SIGNAL(finished(int,QProcess::ExitStatus)),this,SLOT(processFinished()));
|
||||||
|
|
||||||
|
/*
|
||||||
|
hlayoutDefault = new QHBoxLayout(this);
|
||||||
|
hlayoutDefault->addLayout(vlayoutParam);
|
||||||
|
hlayoutDefault->addLayout(glayout);
|
||||||
|
hlayoutDefault->addLayout(vlayoutButton);
|
||||||
|
*/
|
||||||
|
setLayout(glayout);
|
||||||
|
resize(700, 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget::~Widget()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Widget::btnChoose()
|
||||||
|
{
|
||||||
|
qDebug("btnChoose()");
|
||||||
|
QString directory = QFileDialog::getExistingDirectory(this,
|
||||||
|
tr("Find Files"), QDir::currentPath());
|
||||||
|
|
||||||
|
if (!directory.isEmpty()) {
|
||||||
|
this->p_lineProxyFile->setText(directory);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Widget::btnStart()
|
||||||
|
{
|
||||||
|
qDebug("btnStart()");
|
||||||
|
if(p_timer->isActive())
|
||||||
|
return;
|
||||||
|
|
||||||
|
update();
|
||||||
|
|
||||||
|
p_timer->start(p_lineTime->text().toInt()*1000);
|
||||||
|
p_labelTimerOnOff->setText("Timer ON");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Widget::btnStop()
|
||||||
|
{
|
||||||
|
qDebug("btnStop()");
|
||||||
|
|
||||||
|
if(p_timer->isActive())
|
||||||
|
p_timer->stop();
|
||||||
|
|
||||||
|
p_labelTimerOnOff->setText("Timer OFF");
|
||||||
|
p_labelNextTime->setText("");
|
||||||
|
p_labelStatus->setText("Waiting");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Widget::update()
|
||||||
|
{
|
||||||
|
qDebug("update()");
|
||||||
|
//QDateTime time = QDateTime::currentDateTime();
|
||||||
|
|
||||||
|
v_pro.start("ProxyProcess",QStringList() << p_lineUrl->text() << p_lineProxyFile->text() );
|
||||||
|
//p_labelRecentTime->setText(time.toLocalTime().toString("yyyy-MM-dd hh:mm:ss"));
|
||||||
|
p_labelNextTime->setText(QDateTime::currentDateTime().toLocalTime().addSecs(p_lineTime->text().toInt()).toString("yyyy-MM-dd hh:mm:ss"));
|
||||||
|
p_labelStatus->setText("Updating");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Widget::processFinished()
|
||||||
|
{
|
||||||
|
qDebug("process finished");
|
||||||
|
p_labelRecentTime->setText(QDateTime::currentDateTime().toLocalTime().toString("yyyy-MM-dd hh:mm:ss"));
|
||||||
|
p_labelStatus->setText("Update Done");
|
||||||
|
}
|
||||||
65
ProxyUI/widget.h
Normal file
65
ProxyUI/widget.h
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
#ifndef WIDGET_H
|
||||||
|
#define WIDGET_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QHBoxLayout>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QFileDialog>
|
||||||
|
#include <QProcess>
|
||||||
|
#include <QTimer>
|
||||||
|
#include <QDateTime>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class Widget;
|
||||||
|
}
|
||||||
|
|
||||||
|
class Widget : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit Widget(QWidget *parent = 0);
|
||||||
|
~Widget();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::Widget *ui;
|
||||||
|
|
||||||
|
QHBoxLayout *hlayoutParam[4];
|
||||||
|
QHBoxLayout *hlayoutDefault;
|
||||||
|
QVBoxLayout *vlayoutButton;
|
||||||
|
QVBoxLayout *vlayoutParam;
|
||||||
|
QGridLayout *glayout;
|
||||||
|
QLineEdit *p_lineUrl;
|
||||||
|
QLineEdit *p_lineTime;
|
||||||
|
QLineEdit *p_lineProxyFile;
|
||||||
|
|
||||||
|
|
||||||
|
QLabel *p_labelUrl;
|
||||||
|
QLabel *p_labelTime;
|
||||||
|
QLabel *p_labelProxyFile;
|
||||||
|
QLabel *p_labelRecentTime;
|
||||||
|
QLabel *p_labelNextTime;
|
||||||
|
QLabel *p_labelTimerOnOff;
|
||||||
|
QLabel *p_labelRecent;
|
||||||
|
QLabel *p_labelNext;
|
||||||
|
QLabel *p_labelStatus;
|
||||||
|
|
||||||
|
QFileDialog *p_FileDialog;
|
||||||
|
|
||||||
|
QPushButton *p_btnStart;
|
||||||
|
QPushButton *p_btnStop;
|
||||||
|
QPushButton *p_btnChoose;
|
||||||
|
QProcess v_pro;
|
||||||
|
QTimer *p_timer;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void btnStart();
|
||||||
|
void btnStop();
|
||||||
|
void btnChoose();
|
||||||
|
void update();
|
||||||
|
void processFinished();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // WIDGET_H
|
||||||
20
ProxyUI/widget.ui
Normal file
20
ProxyUI/widget.ui
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<ui version="4.0">
|
||||||
|
<class>Widget</class>
|
||||||
|
<widget class="QWidget" name="Widget" >
|
||||||
|
<property name="geometry" >
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle" >
|
||||||
|
<string>Widget</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<layoutDefault spacing="6" margin="11" />
|
||||||
|
<pixmapfunction></pixmapfunction>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
||||||
Reference in New Issue
Block a user