Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
尘离序散
obs-studio
提交
4e7f076c
O
obs-studio
项目概览
尘离序散
/
obs-studio
与 Fork 源项目一致
从无法访问的项目Fork
通知
30
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
obs-studio
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4e7f076c
编写于
7月 13, 2014
作者:
J
jp9000
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add basic update checking
上级
f801348a
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
124 addition
and
0 deletion
+124
-0
build/data/obs-studio/locale/en-US.ini
build/data/obs-studio/locale/en-US.ini
+5
-0
obs/forms/OBSBasic.ui
obs/forms/OBSBasic.ui
+6
-0
obs/window-basic-main.cpp
obs/window-basic-main.cpp
+102
-0
obs/window-basic-main.hpp
obs/window-basic-main.hpp
+11
-0
未找到文件。
build/data/obs-studio/locale/en-US.ini
浏览文件 @
4e7f076c
...
...
@@ -56,6 +56,10 @@ LicenseAgreement.ClickIAgreeToContinue="If you accept the terms of the agreement
LicenseAgreement.IAgree
=
"I Agree"
LicenseAgreement.Exit
=
"Exit"
# update dialog
UpdateAvailable
=
"New Update Available"
UpdateAvailable.Text
=
"Version %1.%2.%3 is now available. <a href='%4'>Click here to download</a>"
# audio device names
Basic.DesktopDevice1
=
"Desktop Audio"
Basic.DesktopDevice2
=
"Desktop Audio 2"
...
...
@@ -164,6 +168,7 @@ Basic.MainMenu.Help="&Help"
Basic.MainMenu.Help.Logs
=
"&Log Files"
Basic.MainMenu.Help.Logs.UploadCurrentLog
=
"Upload &Current Log File"
Basic.MainMenu.Help.Logs.UploadLastLog
=
"Upload &Last Log File"
Basic.MainMenu.Help.CheckForUpdates
=
"Check For Updates"
# basic mode settings dialog
Basic.Settings.ProgramRestart
=
"The program must be restarted for these settings to take effect."
...
...
obs/forms/OBSBasic.ui
浏览文件 @
4e7f076c
...
...
@@ -468,6 +468,7 @@
<addaction
name=
"actionUploadLastLog"
/>
</widget>
<addaction
name=
"menuLogFiles"
/>
<addaction
name=
"actionCheckForUpdates"
/>
</widget>
<widget
class=
"QMenu"
name=
"menuBasic_MainMenu_Edit"
>
<property
name=
"title"
>
...
...
@@ -768,6 +769,11 @@
<string>
Ctrl+End
</string>
</property>
</action>
<action
name=
"actionCheckForUpdates"
>
<property
name=
"text"
>
<string>
Basic.MainMenu.Help.CheckForUpdates
</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>
...
...
obs/window-basic-main.cpp
浏览文件 @
4e7f076c
...
...
@@ -16,6 +16,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
******************************************************************************/
#include <time.h>
#include <obs.hpp>
#include <QMessageBox>
#include <QShowEvent>
...
...
@@ -551,6 +552,7 @@ void OBSBasic::OBSInit()
Load
(
savePath
);
ResetAudioDevices
();
TimedCheckForUpdates
();
loaded
=
true
;
}
...
...
@@ -831,6 +833,101 @@ bool OBSBasic::QueryRemoveSource(obs_source_t source)
return
button
==
QMessageBox
::
Yes
;
}
#define UPDATE_CHECK_INTERVAL (60*60*24*4)
/* 4 days */
void
OBSBasic
::
TimedCheckForUpdates
()
{
long
long
lastUpdate
=
config_get_int
(
App
()
->
GlobalConfig
(),
"General"
,
"LastUpdateCheck"
);
uint32_t
lastVersion
=
config_get_int
(
App
()
->
GlobalConfig
(),
"General"
,
"LastVersion"
);
if
(
lastVersion
<
LIBOBS_API_VER
)
{
lastUpdate
=
0
;
config_set_int
(
App
()
->
GlobalConfig
(),
"General"
,
"LastUpdateCheck"
,
0
);
}
long
long
t
=
(
long
long
)
time
(
nullptr
);
long
long
secs
=
t
-
lastUpdate
;
if
(
secs
>
UPDATE_CHECK_INTERVAL
)
CheckForUpdates
();
}
void
OBSBasic
::
CheckForUpdates
()
{
ui
->
actionCheckForUpdates
->
setEnabled
(
false
);
QUrl
url
(
"https://obsproject.com/obs2_update/mac_basic.json"
);
updateReply
=
networkManager
.
get
(
QNetworkRequest
(
url
));
connect
(
updateReply
,
SIGNAL
(
finished
()),
this
,
SLOT
(
updateFileFinished
()));
connect
(
updateReply
,
SIGNAL
(
readyRead
()),
this
,
SLOT
(
updateFileRead
()));
}
void
OBSBasic
::
updateFileRead
()
{
updateReturnData
.
push_back
(
updateReply
->
readAll
());
}
void
OBSBasic
::
updateFileFinished
()
{
ui
->
actionCheckForUpdates
->
setEnabled
(
true
);
if
(
updateReply
->
error
())
{
blog
(
LOG_WARNING
,
"Update check failed: %s"
,
QT_TO_UTF8
(
updateReply
->
errorString
()));
return
;
}
const
char
*
jsonReply
=
updateReturnData
.
constData
();
if
(
!
jsonReply
||
!*
jsonReply
)
return
;
obs_data_t
returnData
=
obs_data_create_from_json
(
jsonReply
);
obs_data_t
versionData
=
obs_data_getobj
(
returnData
,
"version"
);
const
char
*
description
=
obs_data_getstring
(
returnData
,
"description"
);
const
char
*
download
=
obs_data_getstring
(
returnData
,
"download"
);
if
(
returnData
&&
versionData
&&
description
&&
download
)
{
long
major
=
obs_data_getint
(
versionData
,
"major"
);
long
minor
=
obs_data_getint
(
versionData
,
"minor"
);
long
patch
=
obs_data_getint
(
versionData
,
"patch"
);
long
version
=
MAKE_SEMANTIC_VERSION
(
major
,
minor
,
patch
);
blog
(
LOG_INFO
,
"Update check: latest version is: %ld.%ld.%ld"
,
major
,
minor
,
patch
);
if
(
version
>
LIBOBS_API_VER
)
{
QString
str
=
QTStr
(
"UpdateAvailable.Text"
);
QMessageBox
messageBox
(
this
);
str
=
str
.
arg
(
QString
::
number
(
major
),
QString
::
number
(
minor
),
QString
::
number
(
patch
),
download
);
messageBox
.
setWindowTitle
(
QTStr
(
"UpdateAvailable"
));
messageBox
.
setTextFormat
(
Qt
::
RichText
);
messageBox
.
setText
(
str
);
messageBox
.
setInformativeText
(
QT_UTF8
(
description
));
messageBox
.
exec
();
long
long
t
=
(
long
long
)
time
(
nullptr
);
config_set_int
(
App
()
->
GlobalConfig
(),
"General"
,
"LastUpdateCheck"
,
t
);
config_save
(
App
()
->
GlobalConfig
());
}
}
else
{
blog
(
LOG_WARNING
,
"Bad JSON file received from server"
);
}
obs_data_release
(
versionData
);
obs_data_release
(
returnData
);
}
void
OBSBasic
::
RemoveSelectedScene
()
{
OBSScene
scene
=
GetCurrentScene
();
...
...
@@ -1626,6 +1723,11 @@ void OBSBasic::on_actionUploadLastLog_triggered()
UploadLog
(
App
()
->
GetLastLog
());
}
void
OBSBasic
::
on_actionCheckForUpdates_triggered
()
{
CheckForUpdates
();
}
void
OBSBasic
::
logUploadRead
()
{
logUploadReturnData
.
push_back
(
logUploadReply
->
readAll
());
...
...
obs/window-basic-main.hpp
浏览文件 @
4e7f076c
...
...
@@ -69,6 +69,10 @@ private:
QNetworkReply
*
logUploadReply
=
nullptr
;
QByteArray
logUploadReturnData
;
QBuffer
updatePostData
;
QNetworkReply
*
updateReply
=
nullptr
;
QByteArray
updateReturnData
;
obs_output_t
fileOutput
=
nullptr
;
obs_output_t
streamOutput
=
nullptr
;
obs_service_t
service
=
nullptr
;
...
...
@@ -120,6 +124,9 @@ private:
bool
QueryRemoveSource
(
obs_source_t
source
);
void
TimedCheckForUpdates
();
void
CheckForUpdates
();
void
GetFPSCommon
(
uint32_t
&
num
,
uint32_t
&
den
)
const
;
void
GetFPSInteger
(
uint32_t
&
num
,
uint32_t
&
den
)
const
;
void
GetFPSFraction
(
uint32_t
&
num
,
uint32_t
&
den
)
const
;
...
...
@@ -221,6 +228,7 @@ private slots:
void
on_action_Settings_triggered
();
void
on_actionUploadCurrentLog_triggered
();
void
on_actionUploadLastLog_triggered
();
void
on_actionCheckForUpdates_triggered
();
void
on_actionEditTransform_triggered
();
void
on_actionResetTransform_triggered
();
...
...
@@ -262,6 +270,9 @@ private slots:
void
logUploadRead
();
void
logUploadFinished
();
void
updateFileRead
();
void
updateFileFinished
();
void
AddSourceFromAction
();
void
EditSceneName
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录