qt/LedOK/loapptools.cpp
2022-01-04 18:11:48 +08:00

237 lines
6.6 KiB
C++

#include "loapptools.h"
#include "loappconfig.h"
#include <wProgramManager/wEditProgram/wpageitem.h>
#include <LoUIClass/x_uimsgboxok.h>
LoAppTools* LoAppTools::m_instance = nullptr;
LoAppTools::LoAppTools(QObject *parent) :
QObject (parent)
{
m_tick = new QTimer(this);
connect(m_tick, SIGNAL(timeout()), this, SIGNAL(sTick()));
m_tick->start(TICK_INTERVAL);
}
LoAppTools* LoAppTools::getInstance()
{
if(m_instance == nullptr)
m_instance = new LoAppTools(qApp);
return m_instance;
}
QBrush LoAppTools::getBrush(const QColor& color)
{
QBrush bsh;
if(color.alpha() == 0) {
bsh = Qt::NoBrush;
} else {
bsh = QBrush(color);
}
return bsh;
}
int LoAppTools::color2Int(const QColor& color)
{
int res = 0;
res |= (color.red() & 0xFF) << 24;
res |= (color.green() & 0xFF) << 16;
res |= (color.blue() & 0xFF) << 8;
res |= (color.alpha() & 0xFF);
return res;
}
QColor LoAppTools::int2Color(int value)
{
QColor res;
res.setRed ((value >> 24) & 0xFF);
res.setGreen((value >> 16) & 0xFF);
res.setBlue ((value >> 8) & 0xFF);
res.setAlpha((value ) & 0xFF);
return res;
}
bool LoAppTools::checkFileConflicted(const QString &fileNew)
{
QStringList flist = m_page->filesList();
flist.removeDuplicates();
QFileInfo fiNew(fileNew);
foreach(QString fileCur, flist) {
QFileInfo fiCur(fileCur);
if(fiNew.fileName() == fiCur.fileName() && fiNew.size() != fiCur.size()) {
return true;
}
}
return false;
}
QString LoAppTools::selectFile(const QString &filter, QWidget *parent)
{
LoAppConfig *cfg = LoAppConfig::getInstance();
QString file = QFileDialog::getOpenFileName(parent, tr("Select File"), cfg->SearchPath(), filter);
if(file.isNull()) return QString::Null();
if(checkFileConflicted(file)) {
auto dlg = new X_UIMsgBoxOk(tr("File name conflicted"),"", parent,0);
dlg->exec();
return QString::Null();
}
cfg->setSearchPath(QFileInfo(file).absolutePath());
return file;
}
QStringList LoAppTools::selectPhotoFile(const QString &filter, QWidget *parent)
{
LoAppConfig *cfg = LoAppConfig::getInstance();
QString strs;
QStringList file_list, output_name;
QStringList str_path_list = QFileDialog::getOpenFileNames(parent, tr("Select File"), cfg->SearchPath(), filter);
for (int i = 0; i < str_path_list.size(); i++){
QString str_path = str_path_list[i];
//单个文件路径
qDebug() << "path=" << str_path;
QFileInfo file = QFileInfo(str_path);
//获得文件名
QString file_name = file.fileName();
file_list.append(str_path);
output_name.append(file_name);
strs.append(file_name);
strs += "\n";
}
return str_path_list;
}
QString LoAppTools::selectFile(const QString &filter, QWidget *parent,bool bSame)
{
LoAppConfig *cfg = LoAppConfig::getInstance();
QString file = QFileDialog::getOpenFileName(parent, tr("Select File"), cfg->SearchPath(), filter);
if(file.isNull()) return QString::Null();
if(bSame)
{
}
else {
if(checkFileConflicted(file)) {
auto dlg = new X_UIMsgBoxOk(tr("File name conflicted"),"", parent,0);
dlg->exec();
return QString::Null();
}
}
cfg->setSearchPath(QFileInfo(file).absolutePath());
return file;
}
QString LoAppTools::selectStr(bool f, const QString &s0, const QString &s1)
{
return f ? s0 : s1;
}
//QString LoAppTools::convertFileSize(quint64 n)
//{
// QString res;
// if(n < 1024) {
// res = QString("%1B").arg(n);
// } else if(n < 1024 * 1024) {
// res = QString("%1KB").arg(n/1024);
// } else if(n < 1024 * 1024 * 1024) {
// res = QString("%1MB").arg(n/(1024 * 1024));
// } else {
// res = QString("%1GB").arg(n/(1024 * 1024 * 1024));
// }
// return res;
//}
QString LoAppTools::convertFileSize(const qlonglong & bytes)
{
float num = bytes;
QStringList list;
list << "KB" << "MB" << "GB" << "TB";
QStringListIterator i(list);
QString unit("bytes");
while(num >= 1024.0 && i.hasNext())
{
unit = i.next();
num /= 1024.0;
}
return QString().setNum(num,'f',2)+" "+unit;
}
//QString LoAppTools::convertFileSize(const qlonglong & bytes)
//{
// QString number;
// if(bytes < 0x400) //If less than 1 KB, report in B
// {
// number = QLocale::system().toString(bytes);
// number.append(" B");
// return number;
// }
// else
// {
// if(bytes >= 0x400 && bytes < 0x100000) //If less than 1 MB, report in KB, unless rounded result is 1024 KB, then report in MB
// {
// qlonglong result = (bytes + (0x400/2))/0x400;
// if(result < 0x400)
// {
// number = QLocale::system().toString(result);
// number.append(" KB");
// return number;
// }
// else
// {
// qlonglong result = (bytes + (0x100000/2))/0x100000;
// number = QLocale::system().toString(result);
// number.append(" MB");
// return number;
// }
// }
// else
// {
// if(bytes >= 0x100000 && bytes < 0x40000000) //If less than 1 GB, report in MB, unless rounded result is 1024 MB, then report in GB
// {
// qlonglong result = (bytes + (0x100000/2))/0x100000;
// if(result < 0x100000)
// {
// number = QLocale::system().toString(result);
// number.append(" MB");
// return number;
// }
// else
// {
// qlonglong result = (bytes + (0x40000000/2))/0x40000000;
// number = QLocale::system().toString(result);
// number.append(" GB");
// return number;
// }
// }
// else
// {
// if(bytes >= 0x40000000 && bytes < 0x10000000000) //If less than 1 TB, report in GB, unless rounded result is 1024 GB, then report in TB
// {
// qlonglong result = (bytes + (0x40000000/2))/0x40000000;
// if(result < 0x40000000)
// {
// number = QLocale::system().toString(result);
// number.append(" GB");
// return number;
// }
// else
// {
// qlonglong result = (bytes + (0x10000000000/2))/0x10000000000;
// number = QLocale::system().toString(result);
// number.append(" TB");
// return number;
// }
// }
// else
// {
// qlonglong result = (bytes + (0x10000000000/2))/0x10000000000; //If more than 1 TB, report in TB
// number = QLocale::system().toString(result);
// number.append(" TB");
// return number;
// }
// }
// }
// }
//}