source: trunk/tools/qtestlib/wince/cetest/cetcpsyncconnection.cpp

Last change on this file was 846, checked in by Dmitry A. Kuminov, 14 years ago

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

  • Property svn:eol-style set to native
File size: 7.5 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation (qt-info@nokia.com)
6**
7** This file is part of the tools applications of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at qt-info@nokia.com.
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#include "CeTcpSyncConnection.h"
43#include <qdir.h>
44#include <qfile.h>
45#include <qfileinfo>
46
47static const QString ceTcpSyncProgram = "cetcpsync";
48extern void debugOutput(const QString& text, int level);
49
50CeTcpSyncConnection::CeTcpSyncConnection()
51 : AbstractRemoteConnection()
52 , connected(false)
53{
54}
55
56CeTcpSyncConnection::~CeTcpSyncConnection()
57{
58 if (isConnected())
59 disconnect();
60}
61
62bool CeTcpSyncConnection::connect(QVariantList&)
63{
64 // We connect with each command, so this is always true
65 // The command itself will fail then
66 const QString cmd = ceTcpSyncProgram + " noop";
67 if (system(qPrintable(cmd)) != 0)
68 return false;
69 connected = true;
70 return true;
71}
72
73void CeTcpSyncConnection::disconnect()
74{
75 connected = false;
76}
77
78bool CeTcpSyncConnection::isConnected() const
79{
80 return connected;
81}
82
83inline QString boolToString(bool b)
84{
85 return b ? "true" : "false";
86}
87
88static bool fileTimeFromString(FILETIME& ft, const QString& str)
89{
90 int idx = str.indexOf("*");
91 if (idx <= 0)
92 return false;
93 bool ok;
94 ft.dwLowDateTime = str.left(idx).toULong(&ok);
95 if (!ok)
96 return false;
97 ft.dwHighDateTime = str.mid(idx+1).toULong(&ok);
98 return ok;
99}
100
101static QString fileTimeToString(FILETIME& ft)
102{
103 return QString::number(ft.dwLowDateTime) + "*" + QString::number(ft.dwHighDateTime);
104}
105
106bool CeTcpSyncConnection::copyFileToDevice(const QString &localSource, const QString &deviceDest, bool failIfExists)
107{
108 QString cmd = ceTcpSyncProgram + " copyFileToDevice \"" + localSource + "\" \"" + deviceDest + "\" " + boolToString(failIfExists);
109 return system(qPrintable(cmd)) == 0;
110}
111
112bool CeTcpSyncConnection::copyDirectoryToDevice(const QString &localSource, const QString &deviceDest, bool recursive)
113{
114 QString cmd = ceTcpSyncProgram + " copyDirectoryToDevice \"" + localSource + "\" \"" + deviceDest + "\" " + boolToString(recursive);
115 return system(qPrintable(cmd)) == 0;
116}
117
118bool CeTcpSyncConnection::copyFileFromDevice(const QString &deviceSource, const QString &localDest, bool failIfExists)
119{
120 QString cmd = ceTcpSyncProgram + " copyFileFromDevice \"" + deviceSource + "\" \"" + localDest + "\" " + boolToString(failIfExists);
121 return system(qPrintable(cmd)) == 0;
122}
123
124bool CeTcpSyncConnection::copyDirectoryFromDevice(const QString &deviceSource, const QString &localDest, bool recursive)
125{
126 QString cmd = ceTcpSyncProgram + " copyDirectoryFromDevice \"" + deviceSource + "\" \"" + localDest + "\" " + boolToString(recursive);
127 return system(qPrintable(cmd)) == 0;
128}
129
130bool CeTcpSyncConnection::copyFile(const QString &srcFile, const QString &destFile, bool failIfExists)
131{
132 QString cmd = ceTcpSyncProgram + " copyFile \"" + srcFile + "\" \"" + destFile + "\" " + boolToString(failIfExists);
133 return system(qPrintable(cmd)) == 0;
134}
135
136bool CeTcpSyncConnection::copyDirectory(const QString &srcDirectory, const QString &destDirectory,
137 bool recursive)
138{
139 QString cmd = ceTcpSyncProgram + " copyDirectory \"" + srcDirectory + "\" \"" + destDirectory + "\" " + boolToString(recursive);
140 return system(qPrintable(cmd)) == 0;
141}
142
143bool CeTcpSyncConnection::deleteFile(const QString &fileName)
144{
145 QString cmd = ceTcpSyncProgram + " deleteFile \"" + fileName + "\"";
146 return system(qPrintable(cmd)) == 0;
147}
148
149bool CeTcpSyncConnection::deleteDirectory(const QString &directory, bool recursive, bool failIfContentExists)
150{
151 QString cmd = ceTcpSyncProgram + " deleteDirectory \"" + directory + "\" " + boolToString(recursive) + " " + boolToString(failIfContentExists);
152 return system(qPrintable(cmd)) == 0;
153}
154
155bool CeTcpSyncConnection::execute(QString program, QString arguments, int timeout, int *returnValue)
156{
157 QString cmd = ceTcpSyncProgram + " execute \"" + program + "\" \"" + arguments + "\" " + QString::number(timeout);
158 int exitCode = system(qPrintable(cmd));
159 if (returnValue)
160 *returnValue = exitCode;
161 return true;
162}
163
164bool CeTcpSyncConnection::createDirectory(const QString &path, bool deleteBefore)
165{
166 QString cmd = ceTcpSyncProgram + " createDirectory \"" + path + "\" " + boolToString(deleteBefore);
167 return system(qPrintable(cmd)) == 0;
168}
169
170bool CeTcpSyncConnection::timeStampForLocalFileTime(FILETIME* fTime) const
171{
172 QString cmd = ceTcpSyncProgram + " timeStampForLocalFileTime " + fileTimeToString(*fTime) + " >qt_cetcpsyncdata.txt";
173 if (system(qPrintable(cmd)) != 0)
174 return false;
175
176 QFile file("qt_cetcpsyncdata.txt");
177 if (!file.open(QIODevice::ReadOnly))
178 return false;
179
180 bool result = fileTimeFromString(*fTime, file.readLine());
181 file.close();
182 file.remove();
183 return result;
184}
185
186bool CeTcpSyncConnection::fileCreationTime(const QString &fileName, FILETIME* deviceCreationTime) const
187{
188 QString cmd = ceTcpSyncProgram + " fileCreationTime \"" + fileName + "\" >qt_cetcpsyncdata.txt";
189 if (system(qPrintable(cmd)) != 0)
190 return false;
191
192 QFile file("qt_cetcpsyncdata.txt");
193 if (!file.open(QIODevice::ReadOnly))
194 return false;
195
196 bool result = fileTimeFromString(*deviceCreationTime, file.readLine());
197 file.close();
198 file.remove();
199 return result;
200}
201
202bool CeTcpSyncConnection::resetDevice()
203{
204 qWarning("CeTcpSyncConnection::resetDevice not implemented");
205 return false;
206}
207
208bool CeTcpSyncConnection::toggleDevicePower(int *returnValue)
209{
210 Q_UNUSED(returnValue);
211 qWarning("CeTcpSyncConnection::toggleDevicePower not implemented");
212 return false;
213}
214
215bool CeTcpSyncConnection::setDeviceAwake(bool activate, int *returnValue)
216{
217 Q_UNUSED(activate);
218 Q_UNUSED(returnValue);
219 qWarning("CeTcpSyncConnection::setDeviceAwake not implemented");
220 return false;
221}
Note: See TracBrowser for help on using the repository browser.