Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,7 @@ CMakeLists.txt.user*
.vs
.vscode
*.code-workspace
*.zip
*.zip

# Build
build/
6 changes: 3 additions & 3 deletions dogcom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ void DogCom::FillConfig(QString a, QString p, QString m)
mac_addr = m;
}

void DogCom::print_packet(const char msg[], const unsigned char *packet, int length)
void DogCom::print_packet(const char* msg, const unsigned char *packet, int length)
{
if (!log)
return;
Expand All @@ -45,7 +45,7 @@ void DogCom::run()
// qDebug()<<"account:"<<account;
// qDebug()<<"password:"<<password;
// qDebug()<<"mac_addr:"<<mac_addr;
qDebug() << endl;
qDebug() << Qt::endl;
qDebug() << "Start dogcoming...";
// 后台登录维持连接的线程
srand((unsigned int)time(nullptr));
Expand All @@ -54,7 +54,7 @@ void DogCom::run()
{
skt.init();
}
catch (DogcomSocketException e)
catch (DogcomSocketException& e)
{
qCritical() << "dogcom socket init error"
<< " msg: " << e.what();
Expand Down
8 changes: 5 additions & 3 deletions main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ void LogMsgOutput(QtMsgType type,
QFile file(dir.path() + QString("/logs/log%1.lgt").arg(timePoint));
file.open(QIODevice::WriteOnly | QIODevice::Append);
QTextStream out(&file);
out << log << endl;
out << log << Qt::endl;
file.close();

// 释放锁
Expand All @@ -72,7 +72,7 @@ int main(int argc, char *argv[])
#endif

SingleApplication::setQuitOnLastWindowClosed(false);
SingleApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
// SingleApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

qDebug() << "...main...";

Expand All @@ -82,7 +82,9 @@ int main(int argc, char *argv[])
a.setFont(font);

QTranslator translator;
translator.load(":/ts/DrCOM_zh_CN.qm");
if (!translator.load(":/ts/DrCOM_zh_CN.qm")) {
qWarning() << "Failed to load translation file!";
}
a.installTranslator(&translator);

MainWindow w(&a);
Expand Down
20 changes: 11 additions & 9 deletions mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#include <QDebug>
#include <QMessageBox>
#include <QValidator>
#include <QRegExp>
#include <QRegularExpression>
#include <QSettings>
#include <QWindow>
#include "constants.h"
Expand All @@ -15,6 +15,7 @@
#include <QUrl>
#include <QCloseEvent>
#include <QProcess>
#include <QTimer>

MainWindow::MainWindow(SingleApplication *parentApp, QWidget *parent) :
QDialog(parent),
Expand Down Expand Up @@ -94,7 +95,7 @@ MainWindow::MainWindow(SingleApplication *parentApp, QWidget *parent) :
this, &MainWindow::HandleIpAddress);

// 验证手动输入的mac地址
macValidator = new QRegExpValidator(QRegExp("[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}"));
macValidator = new QRegularExpressionValidator(QRegularExpression("[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}"), this);
ui->lineEditMAC->setValidator(macValidator);

// 尚未登录 不可注销
Expand Down Expand Up @@ -151,15 +152,15 @@ void MainWindow::RestartDrcom()
QProcess::startDetached(qApp->arguments()[0], qApp->arguments());
qDebug() << "Restart done.";
}
else if(CURR_STATE==STATE_LOGGING)
;// 正在登录时候退出,假装没看到,不理
// else if(CURR_STATE==STATE_LOGGING)
// 正在登录时候退出,假装没看到,不理
}

void MainWindow::QuitDrcom()
{
// 退出之前恢复重试计数
QSettings s(SETTINGS_FILE_NAME);
s.setValue(ID_RESTART_TIMES, 0);
QSettings s(SETTINGS_FILE_NAME, QSettings::IniFormat);
s.setValue(ID_RESTART_TIMES, 0);
qDebug() << "reset restartTimes";
qDebug() << "QuitDrcom";

Expand All @@ -168,9 +169,10 @@ void MainWindow::QuitDrcom()
if(CURR_STATE==STATE_ONLINE)
dogcomController->LogOut();
else if(CURR_STATE==STATE_OFFLINE)
qApp->quit();
else if(CURR_STATE==STATE_LOGGING)
;// 正在登录时候退出,假装没看到,不理
// qApp->quit();
QTimer::singleShot(0, qApp, SLOT(quit()));
// else if(CURR_STATE==STATE_LOGGING)
// 正在登录时候退出,假装没看到,不理

// qApp->quit()调用放到了注销响应那块
}
Expand Down
4 changes: 2 additions & 2 deletions mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

#include <QDialog>
#include <QSettings>
#include <QRegExpValidator>
#include <QRegularExpressionValidator>
#include <dogcomcontroller.h>
#include <QSystemTrayIcon>
#include "singleapplication.h"
Expand Down Expand Up @@ -61,7 +61,7 @@ public slots:
// 用于在未登录时关闭窗口就退出
int CURR_STATE;

QRegExpValidator *macValidator;
QValidator *macValidator;
DogcomController *dogcomController;

// 设置托盘中的注销按钮的可用性
Expand Down
12 changes: 6 additions & 6 deletions mainwindow.ui
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>242</width>
<width>250</width>
<height>237</height>
</rect>
</property>
Expand Down Expand Up @@ -47,7 +47,7 @@
</font>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
<enum>QLineEdit::EchoMode::Password</enum>
</property>
</widget>
</item>
Expand All @@ -60,7 +60,7 @@
<string>MAC</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
<set>Qt::AlignmentFlag::AlignCenter</set>
</property>
</widget>
</item>
Expand All @@ -70,7 +70,7 @@
<string>Account</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
<set>Qt::AlignmentFlag::AlignCenter</set>
</property>
</widget>
</item>
Expand All @@ -86,7 +86,7 @@
<string>Password</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
<set>Qt::AlignmentFlag::AlignCenter</set>
</property>
</widget>
</item>
Expand Down Expand Up @@ -137,7 +137,7 @@
<string>Your IP address will be shown here</string>
</property>
<property name="alignment">
<set>Qt::AlignHCenter|Qt::AlignTop</set>
<set>Qt::AlignmentFlag::AlignHCenter|Qt::AlignmentFlag::AlignTop</set>
</property>
</widget>
</item>
Expand Down
8 changes: 5 additions & 3 deletions singleinstance/singleapplication.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
#include <QtCore/QByteArray>
#include <QtCore/QSharedMemory>

#include <cstdlib>

#include "singleapplication.h"
#include "singleapplication_p.h"

Expand Down Expand Up @@ -75,7 +77,7 @@ SingleApplication::SingleApplication( int &argc, char *argv[], bool allowSeconda
}

InstancesInfo* inst = static_cast<InstancesInfo*>( d->memory->data() );
QTime time;
QElapsedTimer time;
time.start();

// Make sure the shared memory block is initialised and in consistent state
Expand All @@ -92,8 +94,8 @@ SingleApplication::SingleApplication( int &argc, char *argv[], bool allowSeconda
d->memory->unlock();

// Random sleep here limits the probability of a collision between two racing apps
qsrand( QDateTime::currentMSecsSinceEpoch() % std::numeric_limits<uint>::max() );
QThread::sleep( 8 + static_cast <unsigned long>( static_cast <float>( qrand() ) / RAND_MAX * 10 ) );
srand( QDateTime::currentMSecsSinceEpoch() % std::numeric_limits<uint>::max() );
QThread::sleep( 8 + static_cast <unsigned long>( static_cast <float>( rand() ) / RAND_MAX * 10 ) );
}

if( inst->primary == false) {
Expand Down
10 changes: 5 additions & 5 deletions singleinstance/singleapplication_p.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ SingleApplicationPrivate::~SingleApplicationPrivate()
void SingleApplicationPrivate::genBlockServerName()
{
QCryptographicHash appData( QCryptographicHash::Sha256 );
appData.addData( "SingleApplication", 17 );
appData.addData( "SingleApplication");
appData.addData( SingleApplication::app_t::applicationName().toUtf8() );
appData.addData( SingleApplication::app_t::organizationName().toUtf8() );
appData.addData( SingleApplication::app_t::organizationDomain().toUtf8() );
Expand Down Expand Up @@ -217,7 +217,7 @@ void SingleApplicationPrivate::connectToPrimary( int msecs, ConnectionType conne
writeStream << blockServerName.toLatin1();
writeStream << static_cast<quint8>(connectionType);
writeStream << instanceNumber;
quint16 checksum = qChecksum(initMsg.constData(), static_cast<quint32>(initMsg.length()));
quint16 checksum = qChecksum(QByteArrayView(initMsg.constData(), static_cast<quint32>(initMsg.length())));
writeStream << checksum;

// The header indicates the message length that follows
Expand All @@ -239,8 +239,8 @@ void SingleApplicationPrivate::connectToPrimary( int msecs, ConnectionType conne
quint16 SingleApplicationPrivate::blockChecksum()
{
return qChecksum(
static_cast <const char *>( memory->data() ),
offsetof( InstancesInfo, checksum )
QByteArrayView((static_cast <const char *>(memory->data())),
offsetof( InstancesInfo, checksum ))
);
}

Expand Down Expand Up @@ -365,7 +365,7 @@ void SingleApplicationPrivate::readInitMessageBody( QLocalSocket *sock )
quint16 msgChecksum = 0;
readStream >> msgChecksum;

const quint16 actualChecksum = qChecksum( msgBytes.constData(), static_cast<quint32>( msgBytes.length() - sizeof( quint16 ) ) );
const quint16 actualChecksum = qChecksum( QByteArrayView(msgBytes.constData(), static_cast<quint32>( msgBytes.length() - sizeof( quint16 ) )) );

bool isValid = readStream.status() == QDataStream::Ok &&
QLatin1String(latin1Name) == blockServerName &&
Expand Down