410 lines
7.3 KiB
C++
410 lines
7.3 KiB
C++
/***************************************************************************************
|
|
*
|
|
* IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
|
|
*
|
|
* By downloading, copying, installing or using the software you agree to this license.
|
|
* If you do not agree to this license, do not download, install,
|
|
* copy or use the software.
|
|
*
|
|
* Copyright (C) 2014-2024, Happytimesoft Corporation, all rights reserved.
|
|
*
|
|
* Redistribution and use in binary forms, with or without modification, are permitted.
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software distributed
|
|
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
|
|
* language governing permissions and limitations under the License.
|
|
*
|
|
****************************************************************************************/
|
|
|
|
#include "sys_inc.h"
|
|
#include "config.h"
|
|
#include "utils.h"
|
|
#include <QCoreApplication>
|
|
#include <QDir>
|
|
#include <QFile>
|
|
#include <QMessageBox>
|
|
#include <QSettings>
|
|
#include <QScreen>
|
|
#include <QApplication>
|
|
#include <QDateTime>
|
|
#include <QCoreApplication>
|
|
#include <QStandardPaths>
|
|
|
|
|
|
QString getSnapshotPath()
|
|
{
|
|
#if defined(IOS)
|
|
return QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation).last();
|
|
#else
|
|
return QStandardPaths::standardLocations(QStandardPaths::PicturesLocation).last();
|
|
#endif
|
|
}
|
|
|
|
QString getRecordPath()
|
|
{
|
|
#if defined(IOS)
|
|
return QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation).last();
|
|
#else
|
|
return QStandardPaths::standardLocations(QStandardPaths::MoviesLocation).last();
|
|
#endif
|
|
}
|
|
|
|
QString getOpenFilePath()
|
|
{
|
|
QSettings setting;
|
|
|
|
return setting.value("openFilePath").toString();
|
|
}
|
|
|
|
BOOL getEnableLogFlag()
|
|
{
|
|
QSettings setting;
|
|
|
|
return setting.value("enableLog", 1).toInt();
|
|
}
|
|
|
|
int getVideoRenderMode()
|
|
{
|
|
QSettings setting;
|
|
|
|
return setting.value("videoRenderMode", 0).toInt();
|
|
}
|
|
|
|
BOOL getRtpMulticast()
|
|
{
|
|
QSettings setting;
|
|
|
|
return setting.value("rtpMulticast", 0).toInt();
|
|
}
|
|
|
|
BOOL getRtpOverUdp()
|
|
{
|
|
QSettings setting;
|
|
|
|
return setting.value("rtpOverUdp", 0).toInt();
|
|
}
|
|
|
|
BOOL getRtspOverHttp()
|
|
{
|
|
QSettings setting;
|
|
|
|
return setting.value("rtspOverHttp", 0).toInt();
|
|
}
|
|
|
|
int getRtspOverHttpPort()
|
|
{
|
|
QSettings setting;
|
|
|
|
return setting.value("rtspOverHttpPort", 80).toInt();
|
|
}
|
|
|
|
BOOL getRtspOverWs()
|
|
{
|
|
QSettings setting;
|
|
|
|
return setting.value("rtspOverWs", 0).toInt();
|
|
}
|
|
|
|
int getRtspOverWsPort()
|
|
{
|
|
QSettings setting;
|
|
|
|
return setting.value("rtspOverWsPort", 80).toInt();
|
|
}
|
|
|
|
int getLogLevel()
|
|
{
|
|
QSettings setting;
|
|
|
|
return setting.value("logLevel", 2).toInt();
|
|
}
|
|
|
|
int getSysLang()
|
|
{
|
|
QSettings setting;
|
|
|
|
return setting.value("sysLang", 0).toInt();
|
|
}
|
|
|
|
int getRecordTime()
|
|
{
|
|
QSettings setting;
|
|
|
|
return setting.value("recordTime", 0).toInt();
|
|
}
|
|
|
|
int getRecordSize()
|
|
{
|
|
QSettings setting;
|
|
|
|
return setting.value("recordSize", 0).toInt();
|
|
}
|
|
|
|
int getHWDecoding()
|
|
{
|
|
QSettings setting;
|
|
|
|
return setting.value("HWDecoding", 0).toInt();
|
|
}
|
|
|
|
int getLayoutMode()
|
|
{
|
|
QSettings setting;
|
|
|
|
return setting.value("layoutMode", 4).toInt();
|
|
}
|
|
|
|
BOOL getChannels(QList<CHANNEL> & channels)
|
|
{
|
|
QSettings settings;
|
|
|
|
int size = settings.beginReadArray("Channels");
|
|
for (int i = 0; i < size; ++i)
|
|
{
|
|
settings.setArrayIndex(i);
|
|
CHANNEL channel;
|
|
channel.url = settings.value("Url").toString();
|
|
channel.user = settings.value("User").toString();
|
|
channel.pass = settings.value("Pass").toString();
|
|
channels.append(channel);
|
|
}
|
|
settings.endArray();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
QString getTempFile(QString prefix, QString extName)
|
|
{
|
|
QDateTime tm = QDateTime::currentDateTime();
|
|
QString time;
|
|
QString fileName;
|
|
|
|
time = QString::asprintf("%04d%02d%02d_%02d%02d%02d",
|
|
tm.date().year(), tm.date().month(), tm.date().day(),
|
|
tm.time().hour(), tm.time().minute(), tm.time().second());
|
|
|
|
fileName = prefix + "_" + time + extName;
|
|
|
|
return fileName;
|
|
}
|
|
|
|
void saveOpenFilePath(QString path)
|
|
{
|
|
QSettings setting;
|
|
|
|
setting.setValue("openFilePath", path);
|
|
}
|
|
|
|
void saveEnableLogFlag(BOOL flag)
|
|
{
|
|
QSettings setting;
|
|
|
|
setting.setValue("enableLog", flag);
|
|
}
|
|
|
|
void saveVideoRenderMode(int mode)
|
|
{
|
|
QSettings setting;
|
|
|
|
setting.setValue("videoRenderMode", mode);
|
|
}
|
|
|
|
void saveRtpMulticast(BOOL flag)
|
|
{
|
|
QSettings setting;
|
|
|
|
setting.setValue("rtpMulticast", flag);
|
|
}
|
|
|
|
void saveRtpOverUdp(BOOL flag)
|
|
{
|
|
QSettings setting;
|
|
|
|
setting.setValue("rtpOverUdp", flag);
|
|
}
|
|
|
|
void saveRtspOverHttp(BOOL flag)
|
|
{
|
|
QSettings setting;
|
|
|
|
setting.setValue("rtspOverHttp", flag);
|
|
}
|
|
|
|
void saveRtspOverHttpPort(int port)
|
|
{
|
|
QSettings setting;
|
|
|
|
setting.setValue("rtspOverHttpPort", port);
|
|
}
|
|
|
|
void saveRtspOverWs(BOOL flag)
|
|
{
|
|
QSettings setting;
|
|
|
|
setting.setValue("rtspOverWs", flag);
|
|
}
|
|
|
|
void saveRtspOverWsPort(int port)
|
|
{
|
|
QSettings setting;
|
|
|
|
setting.setValue("rtspOverWsPort", port);
|
|
}
|
|
|
|
void saveLogLevel(int level)
|
|
{
|
|
QSettings setting;
|
|
|
|
setting.setValue("logLevel", level);
|
|
}
|
|
|
|
void saveSysLang(int lang)
|
|
{
|
|
QSettings setting;
|
|
|
|
setting.setValue("sysLang", lang);
|
|
}
|
|
|
|
void saveRecordTime(int value)
|
|
{
|
|
QSettings setting;
|
|
|
|
setting.setValue("recordTime", value);
|
|
}
|
|
|
|
void saveRecordSize(int value)
|
|
{
|
|
QSettings setting;
|
|
|
|
setting.setValue("recordSize", value);
|
|
}
|
|
|
|
void saveHWDecoding(int value)
|
|
{
|
|
QSettings setting;
|
|
|
|
setting.setValue("HWDecoding", value);
|
|
}
|
|
|
|
void saveLayoutMode(int value)
|
|
{
|
|
QSettings setting;
|
|
|
|
setting.setValue("layoutMode", value);
|
|
}
|
|
|
|
void saveChannels(QList<CHANNEL> & channels)
|
|
{
|
|
QSettings settings;
|
|
settings.beginWriteArray("Channels");
|
|
for (int i = 0; i < channels.size(); ++i)
|
|
{
|
|
settings.setArrayIndex(i);
|
|
settings.setValue("Url", channels[i].url);
|
|
settings.setValue("User", channels[i].user);
|
|
settings.setValue("Pass", channels[i].pass);
|
|
}
|
|
settings.endArray();
|
|
}
|
|
|
|
BOOL isUrl(QString url)
|
|
{
|
|
BOOL isUrl = 0;
|
|
|
|
if (isRtspUrl(url))
|
|
{
|
|
isUrl = 1;
|
|
}
|
|
else if (isRtmpUrl(url))
|
|
{
|
|
isUrl = 1;
|
|
}
|
|
else if (isHttpUrl(url))
|
|
{
|
|
isUrl = 1;
|
|
}
|
|
else if (isSrtUrl(url))
|
|
{
|
|
isUrl = 1;
|
|
}
|
|
|
|
return isUrl;
|
|
}
|
|
|
|
BOOL isRtspUrl(QString url)
|
|
{
|
|
BOOL isUrl = 0;
|
|
|
|
if (url.startsWith("rtsp://"))
|
|
{
|
|
isUrl = 1;
|
|
}
|
|
#ifdef OVER_WEBSOCKET
|
|
else if (url.startsWith("ws://"))
|
|
{
|
|
// rtsp over websocket
|
|
isUrl = 1;
|
|
}
|
|
#ifdef HTTPS
|
|
else if (url.startsWith("wss://"))
|
|
{
|
|
// rtsp over websocket
|
|
isUrl = 1;
|
|
}
|
|
#endif
|
|
#endif
|
|
|
|
return isUrl;
|
|
}
|
|
|
|
BOOL isRtmpUrl(QString url)
|
|
{
|
|
BOOL isUrl = 0;
|
|
|
|
if (url.startsWith("rtmp://") ||
|
|
url.startsWith("rtmpt://") ||
|
|
url.startsWith("rtmps://") ||
|
|
url.startsWith("rtmpe://") ||
|
|
url.startsWith("rtmpfp://") ||
|
|
url.startsWith("rtmpte://") ||
|
|
url.startsWith("rtmpts://"))
|
|
{
|
|
isUrl = 1;
|
|
}
|
|
|
|
return isUrl;
|
|
}
|
|
|
|
BOOL isHttpUrl(QString url)
|
|
{
|
|
BOOL isUrl = 0;
|
|
|
|
if (url.startsWith("http://"))
|
|
{
|
|
isUrl = 1;
|
|
}
|
|
#ifdef HTTPS
|
|
else if (url.startsWith("https://"))
|
|
{
|
|
isUrl = 1;
|
|
}
|
|
#endif
|
|
|
|
return isUrl;
|
|
}
|
|
|
|
BOOL isSrtUrl(QString url)
|
|
{
|
|
BOOL isUrl = 0;
|
|
|
|
if (url.startsWith("srt://"))
|
|
{
|
|
isUrl = 1;
|
|
}
|
|
|
|
return isUrl;
|
|
}
|
|
|
|
|