You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
208 lines
4.7 KiB
C
208 lines
4.7 KiB
C
/******************************************************************************
|
|
Copyright(C):2015~2018 hzleaper
|
|
FileName:$FILE_BASE$.$FILE_EXT$
|
|
Author:zhikun wu
|
|
Email:zk.wu@hzleaper.com
|
|
Tools:vs2010 pc on company
|
|
Created:$DATE$
|
|
History:$DAY$:$MONTH$:$YEAR$ $HOUR$:$MINUTE$
|
|
*******************************************************************************/
|
|
#ifndef __Q_TP_FUNCTIONS_H
|
|
#define __Q_TP_FUNCTIONS_H
|
|
|
|
//#include "baseStruct.h"
|
|
#include "tpGuiHeader.h"
|
|
#include <QtCore\qregularexpression.h>
|
|
#include <QtCore\qjsonarray.h>
|
|
#include <QtCore\qpoint.h>
|
|
#include <QtCore\qrect.h>
|
|
#include <QtCore\qvector.h>
|
|
#include <QtCore\qfile.h>
|
|
#include <QtWidgets\qwidget.h>
|
|
#include <QtWidgets\qtreewidget.h>
|
|
#include <QtCore\qjsonobject.h>
|
|
#include <QFileInfo>
|
|
#include <QDir>
|
|
#include <QDebug>
|
|
|
|
inline void TpRectMaxRB(const QRect& rect, QRect& rtMax) {
|
|
if (rect.right() > rtMax.right()) {
|
|
rtMax.setRight(rect.right());
|
|
}
|
|
if (rect.bottom() > rtMax.bottom()) {
|
|
rtMax.setBottom(rect.bottom());
|
|
}
|
|
}
|
|
|
|
inline QString TpExeFileToPath(QString& strExe) {
|
|
QFileInfo fph(strExe);
|
|
return fph.absolutePath() + QString("/");
|
|
}
|
|
|
|
inline QString TpExeFileName(QString& strExe) {
|
|
QFileInfo fph(strExe);
|
|
if (!fph.exists())
|
|
{
|
|
qWarning() << "Invalid file path : " << strExe;
|
|
return QString("");
|
|
}
|
|
return fph.baseName();
|
|
}
|
|
|
|
inline bool TpJsonArray2Point(const QJsonArray& jsonArray, QPoint& point) {
|
|
if (jsonArray.isEmpty() || jsonArray.size() < 2) {
|
|
return false;
|
|
}
|
|
point.setX(jsonArray[0].toInt());
|
|
point.setY(jsonArray[1].toInt());
|
|
return true;
|
|
}
|
|
|
|
inline bool TpJsonArray2Rect(const QJsonArray& jsonArray, QRect& rect) {
|
|
if (jsonArray.isEmpty() || jsonArray.size() < 4) {
|
|
return false;
|
|
}
|
|
rect.setX(jsonArray[0].toInt());
|
|
rect.setY(jsonArray[1].toInt());
|
|
rect.setWidth(jsonArray[2].toInt());
|
|
rect.setHeight(jsonArray[3].toInt());
|
|
return true;
|
|
}
|
|
|
|
inline bool TpJsonArray2RectF(const QJsonArray& jsonArray, QRectF& rectF) {
|
|
if (jsonArray.isEmpty() || jsonArray.size() < 4) {
|
|
return false;
|
|
}
|
|
rectF.setX(jsonArray[0].toDouble());
|
|
rectF.setY(jsonArray[1].toDouble());
|
|
rectF.setWidth(jsonArray[2].toDouble());
|
|
rectF.setHeight(jsonArray[3].toDouble());
|
|
return true;
|
|
}
|
|
|
|
inline QVector<int> TpSplitSize(int nTotals, int splits)
|
|
{
|
|
QVector<int> vt(splits);
|
|
int blkSize = nTotals / splits;
|
|
int blkRem = nTotals % splits;
|
|
int blks = 0;
|
|
for (int i = 0; i < splits; ++i)
|
|
{
|
|
blks += blkSize;
|
|
if (blkRem > 0)
|
|
{
|
|
blks += 1;
|
|
--blkRem;
|
|
}
|
|
vt[i] = blks;
|
|
}
|
|
return vt;
|
|
}
|
|
|
|
inline QVector<int> TpSplitFixedSize(int nTotals, int size, int d)
|
|
{
|
|
QVector<int> vt;
|
|
if (size <= 0)
|
|
{
|
|
size = nTotals;
|
|
}
|
|
int nBlk = size;
|
|
if (d > 0)
|
|
{
|
|
nBlk = d;
|
|
}
|
|
else
|
|
{
|
|
nBlk += d;
|
|
}
|
|
while (nBlk < nTotals)
|
|
{
|
|
vt.append(nBlk);
|
|
nBlk += size;
|
|
}
|
|
vt.append(nTotals);
|
|
return vt;
|
|
}
|
|
|
|
#define __SPECIAL_EXE_NAME "leaper.exe"
|
|
#define __SPECIAL_CODE "abcdeaxx&&88**xxdddr88**dfejjjf"
|
|
inline bool TpExeCanStart(int argc, const char *argv[])
|
|
{
|
|
QString sExe(argv[0]);
|
|
if (sExe.endsWith(__SPECIAL_EXE_NAME, Qt::CaseInsensitive) ||
|
|
(argc >= 2 && 0 == strcmp(__SPECIAL_CODE, argv[1])) )
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
#define __SPECIAL_FILE_FOR_UPDATED "update.leaper"
|
|
inline bool TpIsUpdated(const QString& szMainPath, bool bCreate = true)
|
|
{
|
|
QFile file(szMainPath + __SPECIAL_FILE_FOR_UPDATED);
|
|
if (file.exists())
|
|
{
|
|
return false;
|
|
}
|
|
if (bCreate)
|
|
{
|
|
file.open(QFile::WriteOnly);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
inline QObject* TpTopParent(QObject* p)
|
|
{
|
|
if (NULL != p)
|
|
{
|
|
while (NULL != p->parent())
|
|
{
|
|
p = p->parent();
|
|
}
|
|
}
|
|
return p;
|
|
}
|
|
|
|
inline QWidget* TpTopWidget(QObject* p)
|
|
{
|
|
QWidget* pw = NULL;
|
|
while (NULL != p)
|
|
{
|
|
if (p->isWidgetType())
|
|
{
|
|
pw = qobject_cast<QWidget*>(p);
|
|
}
|
|
p = p->parent();
|
|
}
|
|
return pw;
|
|
}
|
|
|
|
inline void TpPathChecked(QString& szPath)
|
|
{
|
|
if (!szPath.endsWith("/") && !szPath.endsWith("\\"))
|
|
{
|
|
szPath.append("/");
|
|
}
|
|
}
|
|
|
|
inline QTpObjectList TpFindObjects(const QString& objName, QObject* parent)
|
|
{
|
|
QTpObjectList objList;
|
|
if (NULL != parent)
|
|
{
|
|
objList.append(parent->findChildren<QObject*>(objName));
|
|
if (objName == parent->objectName())
|
|
{
|
|
objList.append(parent);
|
|
}
|
|
}
|
|
return objList;
|
|
}
|
|
|
|
inline bool TpWidgetLessThan(const QWidget* p1, const QWidget* p2)
|
|
{
|
|
return p1->objectName() < p2->objectName();
|
|
}
|
|
|
|
#endif |