1
0
mirror of https://gitee.com/drabel/LibQQt.git synced 2025-01-04 10:18:44 +08:00

add support to VLC

This commit is contained in:
tianduanrui 2018-05-29 09:15:15 +08:00
parent 9843ee4014
commit f9bd9e311b
14 changed files with 566 additions and 510 deletions

View File

@ -30,6 +30,12 @@ SUBDIRS =
#lessThan(QT_MAJOR_VERSION , 5):SUBDIRS += test/qqtwebkittest #lessThan(QT_MAJOR_VERSION , 5):SUBDIRS += test/qqtwebkittest
#lessThan(QT_MAJOR_VERSION , 5):SUBDIRS += test/qqtwebclient #lessThan(QT_MAJOR_VERSION , 5):SUBDIRS += test/qqtwebclient
#need OpenCV
#SUBDIRS += examples/QQtOpenCVExample
#need QZXing, default closed.
#SUBDIRS += examples/qrcodeexample
#----------------------------------------------------------------- #-----------------------------------------------------------------
#Q3级别 V2 第二版第二代 #Q3级别 V2 第二版第二代
#QQt installed to Qt library or #QQt installed to Qt library or
@ -41,14 +47,14 @@ SUBDIRS =
#QQt提供QQtApplication帮助App管理Application句柄 #QQt提供QQtApplication帮助App管理Application句柄
#SUBDIRS += examples/qqtframe2 #SUBDIRS += examples/qqtframe2
#必看 #必看
#SUBDIRS += examples/exquisite #
SUBDIRS += examples/exquisite
#SUBDIRS += examples/tabwidgetexamples #SUBDIRS += examples/tabwidgetexamples
#need QZXing, default closed.
#SUBDIRS += examples/qrcodeexample
#SUBDIRS += examples/qqtchartexample #SUBDIRS += examples/qqtchartexample
# #
#SUBDIRS += examples/console_app #
SUBDIRS += examples/console_app
#----------------------------------------------------------------- #-----------------------------------------------------------------
#need webaccessmanager - WebSupport #need webaccessmanager - WebSupport
#need QSsl #need QSsl
@ -61,10 +67,12 @@ SUBDIRS =
#----------------------------------------------------------------- #-----------------------------------------------------------------
#some test project #some test project
#SUBDIRS += test/gumbo_query_test #SUBDIRS += test/gumbo_query_test
#SUBDIRS += test/customqvariant #
SUBDIRS += test/customqvariant
#SUBDIRS += test/framelesshelperwidget #SUBDIRS += test/framelesshelperwidget
#SUBDIRS += test/treeviewtest #SUBDIRS += test/treeviewtest
#SUBDIRS += test/bytearraytest #
SUBDIRS += test/bytearraytest
#!contains(QSYS_PRIVATE, iOS|iOSSimulator){ #!contains(QSYS_PRIVATE, iOS|iOSSimulator){
# SUBDIRS += test/cmdwidget # SUBDIRS += test/cmdwidget
#} #}
@ -80,18 +88,25 @@ SUBDIRS =
#greaterThan(QT_MAJOR_VERSION , 4):SUBDIRS += test/qqtbtfileserver #greaterThan(QT_MAJOR_VERSION , 4):SUBDIRS += test/qqtbtfileserver
#0000 #0000
#SUBDIRS += test/svgtest #
#SUBDIRS += test/qqtdicttest SUBDIRS += test/svgtest
#
SUBDIRS += test/qqtdicttest
#必开 #必开
#SUBDIRS += test/qqtdicttest2 #
SUBDIRS += test/qqtdicttest2
#必开 #必开
#SUBDIRS += test/giftest #
SUBDIRS += test/giftest
#必开 这两个例子是关于QQtAudio的最好展示 #必开 这两个例子是关于QQtAudio的最好展示
#SUBDIRS += examples/qqtaudioexample #
SUBDIRS += examples/qqtaudioexample
#111111 #111111
#greaterThan(QT_VERSION, 4.6.0):SUBDIRS += test/voicetest #
#mac:lessThan(QT_MAJOR_VERSION , 5):SUBDIRS -= test/voicetest greaterThan(QT_VERSION, 4.6.0):SUBDIRS += test/voicetest
#
mac:lessThan(QT_MAJOR_VERSION , 5):SUBDIRS -= test/voicetest
#网络创建工具 #网络创建工具
#SUBDIRS += demo/QQtClientCreator #SUBDIRS += demo/QQtClientCreator
@ -111,18 +126,20 @@ SUBDIRS =
#和QQt脱离开的Multi-link技术 #和QQt脱离开的Multi-link技术
#默认链接QQt但是可以容易的脱开 #默认链接QQt但是可以容易的脱开
#----------------------------------------------------------------- #-----------------------------------------------------------------
#SUBDIRS += test/openglwidgettest #
#SUBDIRS += test/osdtest SUBDIRS += test/openglwidgettest
#
SUBDIRS += test/osdtest
#SUBDIRS += test/inputtest #SUBDIRS += test/inputtest
#SUBDIRS += demo/SysInfoNotify #SUBDIRS += demo/SysInfoNotify
#SUBDIRS += test/QQtWidgetClickHelperTest #
#SUBDIRS += test/QQtWidgetClickSoundHelperTest SUBDIRS += test/QQtWidgetClickHelperTest
#
SUBDIRS += test/QQtWidgetClickSoundHelperTest
#这是一对用于测试Multi-link对其他的lib的链接能力 #这是一对用于测试Multi-link对其他的lib的链接能力
#SUBDIRS += test/QQtMultiLinkTest #SUBDIRS += test/QQtMultiLinkTest
#在subdirs里面添加一次add_base_manager.pri是否可以影响全部子工程 #在subdirs里面添加一次add_base_manager.pri是否可以影响全部子工程?不会
#SUBDIRS += test/SubDirBaseManagerTest #SUBDIRS += test/SubDirBaseManagerTest
SUBDIRS += examples/QQtOpenCVExample

View File

@ -10,19 +10,9 @@ TEMPLATE = subdirs
SUBDIRS = SUBDIRS =
##-----------------------------------------------------------------
##Q1级别 V1 第一版第一代
##-----------------------------------------------------------------
#古老的链接LibQQt的方式废弃
#App管理Application句柄的方式废弃
#
SUBDIRS += examples/qqtframe
#
SUBDIRS += examples/animationframe
#
#need vlcQt libvlc library #need vlcQt libvlc library
#SUBDIRS += test/qqtliveplayer #
SUBDIRS += test/qqtliveplayer
#need ffmpeg library #need ffmpeg library
#SUBDIRS += test/qqtffmpegplayer #SUBDIRS += test/qqtffmpegplayer
@ -32,139 +22,5 @@ SUBDIRS += examples/animationframe
#lessThan(QT_MAJOR_VERSION , 5):SUBDIRS += test/qqtwebkittest #lessThan(QT_MAJOR_VERSION , 5):SUBDIRS += test/qqtwebkittest
#lessThan(QT_MAJOR_VERSION , 5):SUBDIRS += test/qqtwebclient #lessThan(QT_MAJOR_VERSION , 5):SUBDIRS += test/qqtwebclient
#----------------------------------------------------------------- #need OpenCV
#Q3级别 V2 第二版第二代 #SUBDIRS += examples/QQtOpenCVExample
#QQt installed to Qt library or
#QQt installed to sdk or
#QQt is build
#-----------------------------------------------------------------
#第二种引用LibQQt的方式
#方法include(.../LibQQt/multi-link/add_base_manager.pri)
#QQt提供QQtApplication帮助App管理Application句柄
#
SUBDIRS += examples/qqtframe2
#必看
#
SUBDIRS += examples/exquisite
#
SUBDIRS += examples/tabwidgetexamples
#need QZXing, default closed.
#SUBDIRS += examples/qrcodeexample
#
SUBDIRS += examples/qqtchartexample
#
#
SUBDIRS += examples/console_app
#-----------------------------------------------------------------
#need webaccessmanager - WebSupport
#need QSsl
#need GumoQuery
#-----------------------------------------------------------------
#
greaterThan(QT_MAJOR_VERSION , 4):SUBDIRS += demo/QtSdkManager
#
greaterThan(QT_MAJOR_VERSION , 4):SUBDIRS += demo/VegeTablesPrice
#
SUBDIRS += demo/GuiBuildTool
#
SUBDIRS += demo/LearnCookieTest
#-----------------------------------------------------------------
#some test project
#
SUBDIRS += test/gumbo_query_test
#
SUBDIRS += test/customqvariant
#
SUBDIRS += test/framelesshelperwidget
#
SUBDIRS += test/treeviewtest
#
SUBDIRS += test/bytearraytest
#
!contains(QSYS_PRIVATE, iOS|iOSSimulator){
#
SUBDIRS += test/cmdwidget
#
}
#
SUBDIRS += test/coretest
#
SUBDIRS += test/tmpproj
#
#need QtSoap - WebSupport
##
SUBDIRS += test/easter
#
SUBDIRS += demo/soapQQtOnline
#
##need bluetooth library
#
greaterThan(QT_MAJOR_VERSION , 4):SUBDIRS += test/qqtbtfileserver
#0000
#
SUBDIRS += test/svgtest
#
SUBDIRS += test/qqtdicttest
#必开
#
SUBDIRS += test/qqtdicttest2
#必开
#
SUBDIRS += test/giftest
#必开 这两个例子是关于QQtAudio的最好展示
#
SUBDIRS += examples/qqtaudioexample
#111111
#
greaterThan(QT_VERSION, 4.6.0):SUBDIRS += test/voicetest
#
mac:lessThan(QT_MAJOR_VERSION , 5):SUBDIRS -= test/voicetest
#网络创建工具
#
SUBDIRS += demo/QQtClientCreator
#
SUBDIRS += demo/QQtServerCreator
#这边是个组合项,客户端和服务器一起的必看
#
SUBDIRS += examples/qqtclientexample
#
SUBDIRS += examples/qqtserverexample
#通信协议的复杂的例子
#
SUBDIRS += examples/qqtnetworkexample
#udp 嵌入式linuxQt编译了udp支持默认是支持的
#
SUBDIRS += examples/qqtudpexample
#
lessThan(QT_VERSION , 5.8.0):SUBDIRS -= examples/qqtudpexample
#-----------------------------------------------------------------
#Q5级别 V2 第三版第二代
#和QQt脱离开的Multi-link技术
#默认链接QQt但是可以容易的脱开
#-----------------------------------------------------------------
#
SUBDIRS += test/openglwidgettest
#
SUBDIRS += test/osdtest
#
SUBDIRS += test/inputtest
#
SUBDIRS += demo/SysInfoNotify
#
SUBDIRS += test/QQtWidgetClickHelperTest
#
SUBDIRS += test/QQtWidgetClickSoundHelperTest
#这是一对用于测试Multi-link对其他的lib的链接能力
SUBDIRS += test/QQtMultiLinkTest
#在subdirs里面添加一次add_base_manager.pri是否可以影响全部子工程
SUBDIRS += test/SubDirBaseManagerTest

View File

@ -0,0 +1,55 @@
#----------------------------------------------------------------
#add_library_VLC.pri
#这是给用户提供的方便pri
#这个比较common允许拷贝到用户工程中更改。
#----------------------------------------------------------------
#添加依赖library
LIBRARYVER =
DEBUG = d
#这个地方mingw比较特殊必须发布release版本其他平台不清楚。
mingw:DEBUG=
contains(BUILD, Release) {
DEBUG=
}
add_library(VLC, VLCQtCore$${LIBRARYVER}$${DEBUG})
add_library(VLC, VLCQtWidgets$${LIBRARYVER}$${DEBUG})
#添加头文件 (如果头文件目录扩展了,就改这个函数)
defineReplace(get_vlc_header){
path = $$1
isEmpty(1)|!isEmpty(2) : error("get_vlc_header(path) requires one arguments.")
command =
#basic
command += $${path}
command += $${path}/VLCQtCore
command += $${path}/VLCQtWidgets
return ($$command)
}
defineTest(add_vlc_header){
#包含VLC头文件的过程
header_path = $$get_add_header(VLC)
INCLUDEPATH += $$get_vlc_header($$header_path)
export(INCLUDEPATH)
return (1)
}
add_vlc_header()
#这样包含也很好,简洁明了
#add_header(VLC, VLCQtCore)
#add_header(VLC, VLCQtWidgets)
#...
#添加宏定义
#add_defines(xx)
#发布依赖library
#注意Android也需要这个函数使用这个函数Android才会发布Library到运行时。上边的只是链接作用。
defineTest(add_deploy_library_VLC) {
add_deploy_libraries(VLC)
}

View File

@ -38,10 +38,11 @@ MOBILITY =
include (../../multi-link/add_base_manager.pri) include (../../multi-link/add_base_manager.pri)
include (../../app-lib/add_custom_manager.pri) include (../../app-lib/add_custom_manager.pri)
#这里做的事情,可以拷贝到custom manager里面完成 #这里做的事情,可以拷贝custom managerapp目录里再custom manager里面完成
add_version(1,0,0,0) add_version(1,0,0,0)
add_deploy() add_deploy()
add_deploy_config($$PWD/AppRoot) add_deploy_config($$PWD/AppRoot)
add_deploy_library_QQt()
#添加其他library #添加其他library
include (../../app-lib/add_library_OpenCV.pri) include (../../app-lib/add_library_OpenCV.pri)

View File

@ -28,6 +28,9 @@ include($${PWD}/add_multi_link_technology.pri)
#app发布所需要的函数 #app发布所需要的函数
include ($${PWD}/add_deploy.pri) include ($${PWD}/add_deploy.pri)
#app发布library所需要的函数
include ($${PWD}/add_deploy_library.pri)
#app发布配置项需要的函数 #app发布配置项需要的函数
include ($${PWD}/add_deploy_config.pri) include ($${PWD}/add_deploy_config.pri)

View File

@ -72,128 +72,6 @@ defineReplace(get_add_deploy_on_android) {
return ($$command) return ($$command)
} }
##########################################
#app的发布lib函数命令
##########################################
#app发布lib到自己的目标里必须先发布app如果没有先发布app会出错。
#lib发布lib没有的事情
#解释从app build目录里拷贝是有原因的在Creator编译完成后我把依赖库拷贝过去了add_library()实现的。
defineReplace(get_add_deploy_library_on_mac) {
#APP_DEPLOY_PWD
#APP_DEST_PWD
libname = $$1
librealname = $$2
isEmpty(1): error("get_add_deploy_library_on_mac(libname, librealname) requires at last one argument")
!isEmpty(3): error("get_add_deploy_library_on_mac(libname, librealname) requires at most two argument")
isEmpty(2): librealname = $${libname}
#这里有个bug用户删除了SDK以后App qmake阶段读取这个SDK结果读到这个位置为0...bug其实不应该为0应该为用户设置的SDK版本号。
#解决方法一忽略第一遍编译。也就是什么SDK都没有的时候编译一遍lib生成了SDK可是不管他再qmake后编译一遍。能解决。
libmajorver = $$system(readlink $${LIB_LIB_PWD}/$${librealname}.framework/Versions/Current)
#这里是以防万一lib不存在 但是不能退出如果是subdirs包含Library的工程就不能退出。
isEmpty(libmajorver){
libmajorver=0
message($$TARGET link $$libname, unexisted lib.)
}
command =
command += $$MK_DIR $${APP_BUILD_PWD}/$${TARGET}.app/Contents/Frameworks &&
#拷贝sdk到build
command += $$COPY_DIR $${LIB_LIB_PWD}/$${librealname}.framework $${APP_BUILD_PWD}/$${TARGET}.app/Contents/Frameworks &&
#更改app bundle链接Lib的位置。
command += install_name_tool -change $${librealname}.framework/Versions/$${libmajorver}/$${librealname} \
@rpath/$${librealname}.framework/Versions/$${libmajorver}/$${librealname} \
$${APP_BUILD_PWD}/$${TARGET}.app/Contents/MacOS/$${TARGET} &&
command += macdeployqt $${APP_BUILD_PWD}/$${TARGET}.app -verbose=1 &&
lessThan(QT_MAJOR_VERSION, 5){
command += chmod +x $${THIS_PRI_PWD}/mac_deploy_qt4.sh &&
command += $${THIS_PRI_PWD}/mac_deploy_qt4.sh $${APP_BUILD_PWD}/$${TARGET}.app/Contents/MacOS/$${TARGET} &&
}
command += $$MK_DIR $${APP_DEPLOY_PWD}/$${TARGET}.app/Contents/Frameworks &&
#拷贝sdk到deploy
command += $$COPY_DIR $${LIB_LIB_PWD}/$${librealname}.framework $${APP_DEPLOY_PWD}/$${TARGET}.app/Contents/Frameworks &&
#更改app bundle链接Lib的位置。
command += install_name_tool -change $${librealname}.framework/Versions/$${libmajorver}/$${librealname} \
@rpath/$${librealname}.framework/Versions/$${libmajorver}/$${librealname} \
$${APP_DEPLOY_PWD}/$${TARGET}.app/Contents/MacOS/$${TARGET} &&
command += macdeployqt $${APP_DEPLOY_PWD}/$${TARGET}.app -verbose=1
lessThan(QT_MAJOR_VERSION, 5){
command += &&
command += chmod +x $${THIS_PRI_PWD}/mac_deploy_qt4.sh &&
command += $${THIS_PRI_PWD}/mac_deploy_qt4.sh $${APP_DEPLOY_PWD}/$${TARGET}.app/Contents/MacOS/$${TARGET}
}
#message($$command)
return ($$command)
}
defineReplace(get_add_deploy_library_on_windows) {
#APP_DEPLOY_PWD
#APP_DEST_PWD
libname = $$1
librealname = $$2
isEmpty(1): error("get_add_deploy_library_on_windows(libname, librealname) requires at last one argument")
!isEmpty(3): error("get_add_deploy_library_on_windows(libname, librealname) requires at most two argument")
isEmpty(2): librealname = $${libname}
command =
command += $$RM $${APP_BUILD_PWD}\\$${librealname}.* $$CMD_SEP
#拷贝sdk到build
command += $$COPY_DIR $${LIB_LIB_PWD}\\$${librealname}.* $${APP_BUILD_PWD} $$CMD_SEP
command += $$RM $${APP_DEPLOY_PWD}\\$${librealname}.* $$CMD_SEP
#拷贝sdk到deploy
command += $$COPY_DIR $${LIB_LIB_PWD}\\$${librealname}.* $${APP_DEPLOY_PWD}
#message($$command)
return ($$command)
}
defineReplace(get_add_deploy_library_on_linux) {
#APP_DEPLOY_PWD
#APP_DEST_PWD
libname = $$1
librealname = $$2
isEmpty(1): error("get_add_deploy_library_on_windows(libname, librealname) requires at last one argument")
!isEmpty(3): error("get_add_deploy_library_on_windows(libname, librealname) requires at most two argument")
isEmpty(2): librealname = $${libname}
command =
command += $$RM $${APP_BUILD_PWD}/lib$${libname}.so* $$CMD_SEP
command += $$COPY_DIR $${LIB_LIB_PWD}/lib$${librealname}.so* $${APP_BUILD_PWD} $$CMD_SEP
command += $$RM $${APP_DEPLOY_PWD}/lib$${libname}.so* $$CMD_SEP
command += $$COPY_DIR $${LIB_LIB_PWD}/lib$${librealname}.so* $${APP_DEPLOY_PWD}
#message($$command)
return ($$command)
}
defineReplace(get_add_deploy_library_on_android) {
#APP_DEPLOY_PWD
#APP_DEST_PWD
libname = $$1
librealname = $$2
isEmpty(1): error("get_add_deploy_library_on_windows(libname, librealname) requires at last one argument")
!isEmpty(3): error("get_add_deploy_library_on_windows(libname, librealname) requires at most two argument")
isEmpty(2): librealname = $${libname}
LIB_ANDROID_PATH = $${LIB_LIB_PWD}/lib$${librealname}.so
equals(QMAKE_HOST.os, Windows) {
LIB_ANDROID_PATH~=s,/,\\,g
}
message(Android target $${ANDROID_TARGET_ARCH})
message($${TARGET} deploy library $${LIB_ANDROID_PATH})
command =
command += $${LIB_ANDROID_PATH}
#message($$command)
return ($$command)
}
################################################################################ ################################################################################
#外部用函数 #外部用函数
@ -256,73 +134,3 @@ defineTest(add_deploy) {
return (1) return (1)
} }
defineTest(add_deploy_library) {
#APP_DEPLOY_PWD
#APP_DEST_PWD
#deploy root
isEmpty(APP_DEPLOY_ROOT){
message($${TARGET} $${CONFIG_FILE})
message(APP_DEPLOY_ROOT = /user/set/path is required, please modify .qmake/app_configure.pri )
error(please check $$CONFIG_FILE under add_multi_link_technology.pri)
}
isEmpty(LIB_SDK_ROOT){
message($${TARGET} $${CONFIG_FILE})
message(LIB_SDK_ROOT = /user/set/path is required, please modify .qmake/app_configure.pri )
error(please check $$CONFIG_FILE under add_multi_link_technology.pri)
}
#起始位置 编译位置 中间目标位置
APP_DEST_PWD=$${DESTDIR}
isEmpty(APP_DEST_PWD):APP_DEST_PWD=.
APP_BUILD_PWD = $$APP_DEST_PWD
#set app deploy pwd
#APP_DEPLOY_PWD is here.
APP_DEPLOY_PWD = $${APP_DEPLOY_ROOT}/$${TARGET}/$${QSYS_STD_DIR}
#不仅仅发布目标为Windows的时候才需要改变路径
#开发机为Windows就必须改变。
#contains(QKIT_PRIVATE, WIN32||WIN64) {
equals(QMAKE_HOST.os, Windows) {
APP_DEPLOY_PWD~=s,/,\\,g
}
libname = $$1
librealname = $$2
isEmpty(1): error("add_deploy_library(libname, librealname) requires at last one argument")
!isEmpty(3): error("add_deploy_library(libname, librealname) requires at most two argument")
isEmpty(2): librealname = $${libname}
LIB_STD_DIR = $${libname}/$${QSYS_STD_DIR}
LIB_SDK_PWD = $${LIB_SDK_ROOT}/$${LIB_STD_DIR}
LIB_LIB_PWD = $${LIB_SDK_PWD}/lib
equals(QMAKE_HOST.os, Windows) {
LIB_LIB_PWD~=s,/,\\,g
}
!isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK += $$CMD_SEP
contains(QSYS_PRIVATE, Win32|Windows||Win64) {
#发布windows版本
QMAKE_POST_LINK += $$get_add_deploy_library_on_windows($${libname}, $${librealname})
} else: contains(QSYS_PRIVATE, macOS) {
#发布苹果版本iOS版本也是这个
QMAKE_POST_LINK += $$get_add_deploy_library_on_mac($${libname}, $${librealname})
} else: contains(QSYS_PRIVATE, Android||AndroidX86) {
ANDROID_EXTRA_LIBS += $$get_add_deploy_library_on_android($${libname}, $${librealname})
} else {
#发布linux、e-linux这个是一样的。
QMAKE_POST_LINK += $$get_add_deploy_library_on_linux($${libname}, $${librealname})
}
export(QMAKE_POST_LINK)
message("$${TARGET} has deployed lib $${librealname}.")
return (1)
}
#判断某个lib是否已经发布
#避免二次发布,拷贝浪费时间。
defineTest(has_deployed_lib) {
return(0)
}

View File

@ -0,0 +1,345 @@
#-------------------------------------------------------------
#add_deploy_library.pri
#提供app发布library函数只是app工程使用
#-------------------------------------------------------------
################################################################################
#内部用函数
#获取命令
################################################################################
THIS_PRI_PWD = $${PWD}
###############################################################
#app的发布library命令函数
###############################################################
#app发布lib到自己的目标里必须先发布app如果没有先发布app会出错macOS
#lib发布lib没有的事情
#解释过去从sdk到build到deploy现在从sdk到build从sdk到deploy
defineReplace(get_add_deploy_library_on_mac) {
#APP_DEPLOY_PWD
#APP_DEST_PWD
libname = $$1
librealname = $$2
isEmpty(1): error("get_add_deploy_library_on_mac(libname, librealname) requires at last one argument")
!isEmpty(3): error("get_add_deploy_library_on_mac(libname, librealname) requires at most two argument")
isEmpty(2): librealname = $${libname}
#这里有个bug用户删除了SDK以后App qmake阶段读取这个SDK结果读到这个位置为0...bug其实不应该为0应该为用户设置的SDK版本号。
#解决方法一忽略第一遍编译。也就是什么SDK都没有的时候编译一遍lib生成了SDK可是不管他再qmake后编译一遍。能解决。
libmajorver = $$system(readlink $${LIB_LIB_PWD}/$${librealname}.framework/Versions/Current)
#这里是以防万一lib不存在 但是不能退出如果是subdirs包含Library的工程就不能退出。
isEmpty(libmajorver){
libmajorver=0
message($$TARGET link $$libname, unexisted lib.)
}
command =
command += $$MK_DIR $${APP_BUILD_PWD}/$${TARGET}.app/Contents/Frameworks &&
#拷贝sdk到build
command += $$COPY_DIR $${LIB_LIB_PWD}/$${librealname}.framework $${APP_BUILD_PWD}/$${TARGET}.app/Contents/Frameworks &&
#更改app bundle链接Lib的位置。
command += install_name_tool -change $${librealname}.framework/Versions/$${libmajorver}/$${librealname} \
@rpath/$${librealname}.framework/Versions/$${libmajorver}/$${librealname} \
$${APP_BUILD_PWD}/$${TARGET}.app/Contents/MacOS/$${TARGET} &&
command += macdeployqt $${APP_BUILD_PWD}/$${TARGET}.app -verbose=1 &&
lessThan(QT_MAJOR_VERSION, 5){
command += chmod +x $${THIS_PRI_PWD}/mac_deploy_qt4.sh &&
command += $${THIS_PRI_PWD}/mac_deploy_qt4.sh $${APP_BUILD_PWD}/$${TARGET}.app/Contents/MacOS/$${TARGET} &&
}
command += $$MK_DIR $${APP_DEPLOY_PWD}/$${TARGET}.app/Contents/Frameworks &&
#拷贝sdk到deploy
command += $$COPY_DIR $${LIB_LIB_PWD}/$${librealname}.framework $${APP_DEPLOY_PWD}/$${TARGET}.app/Contents/Frameworks &&
#更改app bundle链接Lib的位置。
command += install_name_tool -change $${librealname}.framework/Versions/$${libmajorver}/$${librealname} \
@rpath/$${librealname}.framework/Versions/$${libmajorver}/$${librealname} \
$${APP_DEPLOY_PWD}/$${TARGET}.app/Contents/MacOS/$${TARGET} &&
command += macdeployqt $${APP_DEPLOY_PWD}/$${TARGET}.app -verbose=1
lessThan(QT_MAJOR_VERSION, 5){
command += &&
command += chmod +x $${THIS_PRI_PWD}/mac_deploy_qt4.sh &&
command += $${THIS_PRI_PWD}/mac_deploy_qt4.sh $${APP_DEPLOY_PWD}/$${TARGET}.app/Contents/MacOS/$${TARGET}
}
#message($$command)
return ($$command)
}
defineReplace(get_add_deploy_library_on_windows) {
#APP_DEPLOY_PWD
#APP_DEST_PWD
libname = $$1
librealname = $$2
isEmpty(1): error("get_add_deploy_library_on_windows(libname, librealname) requires at last one argument")
!isEmpty(3): error("get_add_deploy_library_on_windows(libname, librealname) requires at most two argument")
isEmpty(2): librealname = $${libname}
command =
command += $$RM $${APP_BUILD_PWD}\\$${librealname}.* $$CMD_SEP
#拷贝sdk到build
command += $$COPY_DIR $${LIB_LIB_PWD}\\$${librealname}.* $${APP_BUILD_PWD} $$CMD_SEP
command += $$RM $${APP_DEPLOY_PWD}\\$${librealname}.* $$CMD_SEP
#拷贝sdk到deploy
command += $$COPY_DIR $${LIB_LIB_PWD}\\$${librealname}.* $${APP_DEPLOY_PWD}
#message($$command)
return ($$command)
}
defineReplace(get_add_deploy_library_on_linux) {
#APP_DEPLOY_PWD
#APP_DEST_PWD
libname = $$1
librealname = $$2
isEmpty(1): error("get_add_deploy_library_on_windows(libname, librealname) requires at last one argument")
!isEmpty(3): error("get_add_deploy_library_on_windows(libname, librealname) requires at most two argument")
isEmpty(2): librealname = $${libname}
command =
command += $$RM $${APP_BUILD_PWD}/lib$${libname}.so* $$CMD_SEP
command += $$COPY_DIR $${LIB_LIB_PWD}/lib$${librealname}.so* $${APP_BUILD_PWD} $$CMD_SEP
command += $$RM $${APP_DEPLOY_PWD}/lib$${libname}.so* $$CMD_SEP
command += $$COPY_DIR $${LIB_LIB_PWD}/lib$${librealname}.so* $${APP_DEPLOY_PWD}
#message($$command)
return ($$command)
}
defineReplace(get_add_deploy_library_on_android) {
#APP_DEPLOY_PWD
#APP_DEST_PWD
libname = $$1
librealname = $$2
isEmpty(1): error("get_add_deploy_library_on_windows(libname, librealname) requires at last one argument")
!isEmpty(3): error("get_add_deploy_library_on_windows(libname, librealname) requires at most two argument")
isEmpty(2): librealname = $${libname}
LIB_ANDROID_PATH = $${LIB_LIB_PWD}/lib$${librealname}.so
equals(QMAKE_HOST.os, Windows) {
LIB_ANDROID_PATH~=s,/,\\,g
}
message(Android target $${ANDROID_TARGET_ARCH})
message($${TARGET} deploy library $${LIB_ANDROID_PATH})
command =
command += $${LIB_ANDROID_PATH}
#message($$command)
return ($$command)
}
################################################################################
#外部用函数
################################################################################
defineTest(add_deploy_library) {
#APP_DEPLOY_PWD
#APP_DEST_PWD
#deploy root
isEmpty(APP_DEPLOY_ROOT){
message($${TARGET} $${CONFIG_FILE})
message(APP_DEPLOY_ROOT = /user/set/path is required, please modify .qmake/app_configure.pri )
error(please check $$CONFIG_FILE under add_multi_link_technology.pri)
}
isEmpty(LIB_SDK_ROOT){
message($${TARGET} $${CONFIG_FILE})
message(LIB_SDK_ROOT = /user/set/path is required, please modify .qmake/app_configure.pri )
error(please check $$CONFIG_FILE under add_multi_link_technology.pri)
}
#起始位置 编译位置 中间目标位置
APP_DEST_PWD=$${DESTDIR}
isEmpty(APP_DEST_PWD):APP_DEST_PWD=.
APP_BUILD_PWD = $$APP_DEST_PWD
#set app deploy pwd
#APP_DEPLOY_PWD is here.
APP_DEPLOY_PWD = $${APP_DEPLOY_ROOT}/$${TARGET}/$${QSYS_STD_DIR}
#不仅仅发布目标为Windows的时候才需要改变路径
#开发机为Windows就必须改变。
#contains(QKIT_PRIVATE, WIN32||WIN64) {
equals(QMAKE_HOST.os, Windows) {
APP_DEPLOY_PWD~=s,/,\\,g
}
libname = $$1
librealname = $$2
isEmpty(1): error("add_deploy_library(libname, librealname) requires at last one argument")
!isEmpty(3): error("add_deploy_library(libname, librealname) requires at most two argument")
isEmpty(2): librealname = $${libname}
LIB_STD_DIR = $${libname}/$${QSYS_STD_DIR}
LIB_SDK_PWD = $${LIB_SDK_ROOT}/$${LIB_STD_DIR}
LIB_LIB_PWD = $${LIB_SDK_PWD}/lib
equals(QMAKE_HOST.os, Windows) {
LIB_LIB_PWD~=s,/,\\,g
}
!isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK += $$CMD_SEP
contains(QSYS_PRIVATE, Win32|Windows||Win64) {
#发布windows版本
QMAKE_POST_LINK += $$get_add_deploy_library_on_windows($${libname}, $${librealname})
} else: contains(QSYS_PRIVATE, macOS) {
#发布苹果版本iOS版本也是这个
QMAKE_POST_LINK += $$get_add_deploy_library_on_mac($${libname}, $${librealname})
} else: contains(QSYS_PRIVATE, Android||AndroidX86) {
ANDROID_EXTRA_LIBS += $$get_add_deploy_library_on_android($${libname}, $${librealname})
} else {
#发布linux、e-linux这个是一样的。
QMAKE_POST_LINK += $$get_add_deploy_library_on_linux($${libname}, $${librealname})
}
export(QMAKE_POST_LINK)
message("$${TARGET} has deployed lib $${librealname}.")
return (1)
}
#判断某个lib是否已经发布
#避免二次发布,拷贝浪费时间。
defineTest(has_deployed_library) {
return(0)
}
################################################################################
#内部用函数
################################################################################
###############################################################
#app的发布librarys命令函数
###############################################################
defineReplace(get_add_deploy_libraries_on_mac) {
#APP_DEPLOY_PWD
#APP_DEST_PWD
libname = $$1
isEmpty(1)|!isEmpty(2): error("get_add_deploy_libraries_on_mac(libname) requires one argument")
command =
command += $$COPY_DIR $${LIB_LIB_PWD}/* $${APP_BUILD_PWD} $$CMD_SEP
command += $$COPY_DIR $${LIB_LIB_PWD}/* $${APP_DEPLOY_PWD}
#message($$command)
return ($$command)
}
defineReplace(get_add_deploy_libraries_on_windows) {
#APP_DEPLOY_PWD
#APP_DEST_PWD
libname = $$1
isEmpty(1)|!isEmpty(2): error("get_add_deploy_libraries_on_windows(libname) requires one argument")
command =
#拷贝sdk到build
command += $$COPY_DIR $${LIB_LIB_PWD}\\* $${APP_BUILD_PWD} $$CMD_SEP
#拷贝sdk到deploy
command += $$COPY_DIR $${LIB_LIB_PWD}\\* $${APP_DEPLOY_PWD}
#message($$command)
return ($$command)
}
defineReplace(get_add_deploy_libraries_on_linux) {
#APP_DEPLOY_PWD
#APP_DEST_PWD
libname = $$1
isEmpty(1)|!isEmpty(2): error("get_add_deploy_libraries_on_linux(libname) requires one argument")
command =
command += $$COPY_DIR $${LIB_LIB_PWD}/* $${APP_BUILD_PWD} $$CMD_SEP
command += $$COPY_DIR $${LIB_LIB_PWD}/* $${APP_DEPLOY_PWD}
#message($$command)
return ($$command)
}
#这个?
defineReplace(get_add_deploy_libraries_on_android) {
#APP_DEPLOY_PWD
#APP_DEST_PWD
libname = $$1
isEmpty(1)|!isEmpty(2): error("get_add_deploy_libraries_on_linux(libname) requires one argument")
LIB_ANDROID_PATH = $${LIB_LIB_PWD}/lib$${libname}.so
equals(QMAKE_HOST.os, Windows) {
LIB_ANDROID_PATH~=s,/,\\,g
}
message(Android target $${ANDROID_TARGET_ARCH})
command =
command += $${LIB_ANDROID_PATH}
#message($$command)
return ($$command)
}
################################################################################
#外部用函数
################################################################################
defineTest(add_deploy_libraries) {
#APP_DEPLOY_PWD
#APP_DEST_PWD
#deploy root
isEmpty(APP_DEPLOY_ROOT){
message($${TARGET} $${CONFIG_FILE})
message(APP_DEPLOY_ROOT = /user/set/path is required, please modify .qmake/app_configure.pri )
error(please check $$CONFIG_FILE under add_multi_link_technology.pri)
}
isEmpty(LIB_SDK_ROOT){
message($${TARGET} $${CONFIG_FILE})
message(LIB_SDK_ROOT = /user/set/path is required, please modify .qmake/app_configure.pri )
error(please check $$CONFIG_FILE under add_multi_link_technology.pri)
}
#起始位置 编译位置 中间目标位置
APP_DEST_PWD=$${DESTDIR}
isEmpty(APP_DEST_PWD):APP_DEST_PWD=.
APP_BUILD_PWD = $$APP_DEST_PWD
#set app deploy pwd
#APP_DEPLOY_PWD is here.
APP_DEPLOY_PWD = $${APP_DEPLOY_ROOT}/$${TARGET}/$${QSYS_STD_DIR}
#不仅仅发布目标为Windows的时候才需要改变路径
#开发机为Windows就必须改变。
#contains(QKIT_PRIVATE, WIN32||WIN64) {
equals(QMAKE_HOST.os, Windows) {
APP_DEPLOY_PWD~=s,/,\\,g
}
libname = $$1
isEmpty(1)|!isEmpty(2): error("add_deploy_libraries(libname) requires one argument")
LIB_STD_DIR = $${libname}/$${QSYS_STD_DIR}
LIB_SDK_PWD = $${LIB_SDK_ROOT}/$${LIB_STD_DIR}
LIB_LIB_PWD = $${LIB_SDK_PWD}/lib
equals(QMAKE_HOST.os, Windows) {
LIB_LIB_PWD~=s,/,\\,g
}
!isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK += $$CMD_SEP
contains(QSYS_PRIVATE, Win32|Windows||Win64) {
#发布windows版本
QMAKE_POST_LINK += $$get_add_deploy_libraries_on_windows($${libname})
} else: contains(QSYS_PRIVATE, macOS) {
#发布苹果版本iOS版本也是这个
QMAKE_POST_LINK += $$get_add_deploy_libraries_on_mac($${libname})
} else: contains(QSYS_PRIVATE, Android||AndroidX86) {
ANDROID_EXTRA_LIBS += $$get_add_deploy_libraries_on_android($${libname})
} else {
#发布linux、e-linux这个是一样的。
QMAKE_POST_LINK += $$get_add_deploy_libraries_on_linux($${libname})
}
export(QMAKE_POST_LINK)
message("$${TARGET} has deployed librarys under $${libname}.")
return (1)
}

View File

@ -28,5 +28,10 @@ add_library(QQt)
#以上代码只完成了链接libQQt 包含libQQt头文件 包含libQQt宏文件(在宏文件控制下Library的头文件才有精确的意义) #以上代码只完成了链接libQQt 包含libQQt头文件 包含libQQt宏文件(在宏文件控制下Library的头文件才有精确的意义)
#没有发布libQQt #没有发布libQQt
#App在开发中调用发布App以后 必然需要调用app_deploy_library(QQt)发布QQt到运行时。强大的从sdk发布到build和deploy位置。 #App在开发中调用发布App以后 必然需要调用add_deploy_library(QQt)发布QQt到运行时。强大的从sdk发布到build和deploy位置。
#调试,正常;发布运行,正常。 #调试,正常;发布运行,正常。
#:) 方便函数
defineTest(add_deploy_library_QQt){
add_deploy_library(QQt)
return (1)
}

View File

@ -2,18 +2,18 @@
#define ANIMATIONMANAGER_H #define ANIMATIONMANAGER_H
#include <QObject> #include <QObject>
#include "qqtdefine.h" #include "qqt.h"
class AnimationManager : public QObject class AnimationManager : public QObject
{ {
public: public:
static AnimationManager *Instance(QObject* parent = 0); static AnimationManager* Instance ( QObject* parent = 0 );
signals: signals:
public slots: public slots:
protected: protected:
explicit AnimationManager(QObject *parent = nullptr); explicit AnimationManager ( QObject* parent = nullptr );
private: private:
static AnimationManager* _instance; static AnimationManager* _instance;
}; };

View File

@ -13,62 +13,62 @@
/* /*
* Lan协议当中去 * Lan协议当中去
*/ */
void QQTLanServer(QObject* parent = 0) void QQTLanServer ( QObject* parent = 0 )
{ {
static QQtTcpServer* s = new QQtTcpServer(parent); static QQtTcpServer* s = new QQtTcpServer ( parent );
s->listen(QHostAddress::Any, 8000); s->listen ( QHostAddress::Any, 8000 );
s->installedProtocol(); //s->installedProtocol();
} }
QQTApp::QQTApp(int& argc, char** argv) : QApplication(argc, argv) QQTApp::QQTApp ( int& argc, char** argv ) : QApplication ( argc, argv )
{ {
#ifndef __QT5__ #ifndef __QT5__
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForTr ( QTextCodec::codecForName ( "UTF-8" ) );
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForCStrings ( QTextCodec::codecForName ( "UTF-8" ) );
#endif #endif
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForLocale ( QTextCodec::codecForName ( "UTF-8" ) );
QApplication::setOrganizationName("QQt"); QApplication::setOrganizationName ( "QQt" );
QApplication::setOrganizationDomain("qqtliveplayer"); // 专为Mac OS X 准备的 QApplication::setOrganizationDomain ( "qqtliveplayer" ); // 专为Mac OS X 准备的
QApplication::setApplicationName("qqtliveplayer"); QApplication::setApplicationName ( "qqtliveplayer" );
QSettings::setPath(QSettings::NativeFormat, QSettings::UserScope, CONFIG_PATH); QSettings::setPath ( QSettings::NativeFormat, QSettings::UserScope, CONFIG_PATH );
QSettings::setPath(QSettings::NativeFormat, QSettings::SystemScope, CONFIG_PATH); QSettings::setPath ( QSettings::NativeFormat, QSettings::SystemScope, CONFIG_PATH );
system("rm -f /tmp/LCK..ttyS*"); system ( "rm -f /tmp/LCK..ttyS*" );
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) #if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
/* /*
* *
*/ */
QApplication::setGraphicsSystem("raster"); QApplication::setGraphicsSystem ( "raster" );
#endif #endif
#ifdef __EMBEDDED_LINUX__ #ifdef __EMBEDDED_LINUX__
//QApplication::setOverrideCursor(Qt::ArrowCursor); //QApplication::setOverrideCursor(Qt::ArrowCursor);
QWSServer::setCursorVisible(false); QWSServer::setCursorVisible ( false );
#endif #endif
#ifdef __EMBEDDED_LINUX__ #ifdef __EMBEDDED_LINUX__
QFontDatabase db; QFontDatabase db;
#if 0 #if 0
int heitiFontID = db.addApplicationFont("/usr/lib/fonts/heiti.ttf"); int heitiFontID = db.addApplicationFont ( "/usr/lib/fonts/heiti.ttf" );
QString heiti = db.applicationFontFamilies(heitiFontID).at(0); QString heiti = db.applicationFontFamilies ( heitiFontID ).at ( 0 );
pline() << heiti; pline() << heiti;
#else #else
int wenquanyiFontID = db.addApplicationFont("/usr/lib/fonts/wenquanyi.ttf"); int wenquanyiFontID = db.addApplicationFont ( "/usr/lib/fonts/wenquanyi.ttf" );
QString wenquanyi = db.applicationFontFamilies(wenquanyiFontID).at(0); QString wenquanyi = db.applicationFontFamilies ( wenquanyiFontID ).at ( 0 );
pline() << wenquanyi; pline() << wenquanyi;
#endif #endif
QFont font(wenquanyi, 11); QFont font ( wenquanyi, 11 );
QApplication::setFont(font); QApplication::setFont ( font );
#endif #endif
pline() << qApp->applicationDirPath(); pline() << qApp->applicationDirPath();
language = new QTranslator(this); language = new QTranslator ( this );
setLanguage(); setLanguage();
#if 0 #if 0
@ -76,7 +76,7 @@ QQTApp::QQTApp(int& argc, char** argv) : QApplication(argc, argv)
* *
*/ */
managerDB = newDatabaseConn(); managerDB = newDatabaseConn();
setDatabaseName(managerDB, DB_MANAGER); setDatabaseName ( managerDB, DB_MANAGER );
#endif #endif
#if 1 #if 1
@ -86,11 +86,11 @@ QQTApp::QQTApp(int& argc, char** argv) : QApplication(argc, argv)
* *
* QQT效果 * QQT效果
*/ */
QFile styleFile("./skin/default.qss"); QFile styleFile ( "./skin/default.qss" );
styleFile.open(QIODevice::ReadOnly); styleFile.open ( QIODevice::ReadOnly );
QString styleString(styleFile.readAll());; QString styleString ( styleFile.readAll() );;
styleFile.close(); styleFile.close();
setStyleSheet(styleString); setStyleSheet ( styleString );
/* /*
* *
*/ */
@ -98,18 +98,18 @@ QQTApp::QQTApp(int& argc, char** argv) : QApplication(argc, argv)
#endif #endif
#ifdef __EMBEDDED_LINUX__ #ifdef __EMBEDDED_LINUX__
QQtInput::Instance()->Init("min", "control", "QQT", 14, 14); QQtInput::Instance()->Init ( "min", "control", "QQT", 14, 14 );
#endif #endif
qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime())); qsrand ( QTime ( 0, 0, 0 ).secsTo ( QTime::currentTime() ) );
QObject::connect(QQtPluginWatcher::Instance(), SIGNAL(storageChanged(int)), QObject::connect ( QQtPluginWatcher::Instance(), SIGNAL ( storageChanged ( int ) ),
this, SLOT(slotUPanAutoRun(int))); this, SLOT ( slotUPanAutoRun ( int ) ) );
//QQtTcpClient //QQtTcpClient
//QQTCloudClientInstance(this); //QQTCloudClientInstance(this);
#ifdef __EMBEDDED_LINUX__ #ifdef __EMBEDDED_LINUX__
//QQTEthManager //QQTEthManager
QQtEthenetManager::Instance(this); QQtEthenetManager::Instance ( this );
#endif #endif
//QQtTcpServer //QQtTcpServer
//QQTPeerPort //QQTPeerPort
@ -129,25 +129,25 @@ void QQTApp::setLanguage()
*/ */
QSettings setting; QSettings setting;
QString qm; QString qm;
qm = setting.value("Language").toInt() ? "./lang/en_US.qm" : "./lang/zh_CN.qm"; qm = setting.value ( "Language" ).toInt() ? "./lang/en_US.qm" : "./lang/zh_CN.qm";
language->load(qm); language->load ( qm );
pline() << "currentLanguage" << qm; pline() << "currentLanguage" << qm;
installTranslator(language); installTranslator ( language );
} }
void QQTApp::slotUPanAutoRun(int status) void QQTApp::slotUPanAutoRun ( int status )
{ {
if (QQtPluginWatcher::E_ADD == status) if ( QQtPluginWatcher::E_ADD == status )
{ {
QString mP = QQtPluginWatcher::Instance()->upanMountPath(); QString mP = QQtPluginWatcher::Instance()->upanMountPath();
QString app = QString("%1/autorun.sh").arg(mP); QString app = QString ( "%1/autorun.sh" ).arg ( mP );
QFile file(app); QFile file ( app );
if (file.exists()) if ( file.exists() )
if (QDialog::Rejected == QQtMsgBox::question(0, tr("Some app want to run in u disk!accepted?"))) if ( QDialog::Rejected == QQtMsgBox::question ( 0, tr ( "Some app want to run in u disk!accepted?" ) ) )
return; return;
QProcess* p = new QProcess(this); QProcess* p = new QProcess ( this );
p->setWorkingDirectory(mP); p->setWorkingDirectory ( mP );
p->start(app); p->start ( app );
} }
} }

View File

@ -3,9 +3,6 @@
# Project created by QtCreator 2016-06-17T10:03:52 # Project created by QtCreator 2016-06-17T10:03:52
# #
#------------------------------------------------- #-------------------------------------------------
include(../../multi-link/add_base_manager.pri)
QT += core gui QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
@ -15,43 +12,8 @@ TEMPLATE = app
INCLUDEPATH += . INCLUDEPATH += .
CONFIG += c++11 CONFIG += c++11
unix {
LIBS += -lVLCQtCore -lVLCQtWidgets
#QMAKE_CXXFLAGS += -std=c++11
#LIBS += -L/usr/local/lib -lVLCQtCore -lVLCQtWidgets
INCLUDEPATH += /usr/local/include
}
win32 {
## Windows common build here
contains(QMAKE_TARGET.arch, x86) {
message("x86 build")
## Windows x86 (32bit) specific build here
CONFIG(debug, debug|release) {
LIBS += -LC:\\Users\\tdr\\Documents\\QtSolution\\qt4web\\vlcqt\\lib -lVLCQtCored -lVLCQtWidgetsd
} else {
LIBS += -LC:\\Users\\tdr\\Documents\\QtSolution\\qt4web\\vlcqt\\lib -lVLCQtCore -lVLCQtWidgets
}
INCLUDEPATH += C:\\Users\\tdr\\Documents\\QtSolution\\qt4web\\vlcqt\\include
} else {
message("x86_64 build")
## Windows x64 (64bit) specific build here
CONFIG(debug, debug|release) {
LIBS += -LC:\\Users\\tdr\\Documents\\QtSolution\\qt4web\\vlcqt64\\lib -lVLCQtCored -lVLCQtWidgetsd
} else {
LIBS += -LC:\\Users\\tdr\\Documents\\QtSolution\\qt4web\\vlcqt64\\lib -lVLCQtCore -lVLCQtWidgets
}
INCLUDEPATH += C:\\Users\\tdr\\Documents\\QtSolution\\qt4web\\vlcqt64\\include
}
}
SOURCES += $$PWD/main.cpp $$PWD/qqtapp.cpp $$PWD/qqtwindow.cpp \ SOURCES += $$PWD/main.cpp $$PWD/qqtapp.cpp $$PWD/qqtwindow.cpp \
animationmanager.cpp animationmanager.cpp
@ -60,14 +22,15 @@ HEADERS += $$PWD/qqtapp.h $$PWD/qqtwindow.h \
FORMS += $$PWD/qqtwindow.ui FORMS += $$PWD/qqtwindow.ui
include(../../multi-link/add_base_manager.pri)
#这个的设置有特点,要先设置 #这个的设置有特点,要先设置
add_version (1,0,0,0) add_version (1,0,0,0)
#先发布App #先发布App
#app从build到deploy #app从build到deploy
add_deploy() add_deploy()
#后发布依赖 #后发布依赖
#libQQt从sdk到build和deploy #libQQt从sdk到build和deploy
add_deploy_library(QQt) add_deploy_library_QQt()
include(../../app-lib/add_library_VLC.pri)
add_deploy_library_VLC()

View File

@ -16,73 +16,75 @@
#include "qqttreewidget.h" #include "qqttreewidget.h"
#include "qqtsqltreemodel.h" #include "qqtsqltreemodel.h"
QQTWindow::QQTWindow(QWidget *parent) : QQTWindow::QQTWindow ( QWidget* parent ) :
QStackedWidget(parent), QStackedWidget ( parent ),
ui(new Ui::QQTWindow) ui ( new Ui::QQTWindow )
{ {
ui->setupUi(this); ui->setupUi ( this );
QQtObjectManager::registerObject(this); QQtObjectManager::registerObject ( this );
#ifdef __EMBEDDED_LINUX__ #ifdef __EMBEDDED_LINUX__
/* /*
* frameless足够 * frameless足够
*/ */
setWindowFlags(Qt::FramelessWindowHint); setWindowFlags ( Qt::FramelessWindowHint );
/* /*
* *
*/ */
setAttribute(Qt::WA_TranslucentBackground, true); setAttribute ( Qt::WA_TranslucentBackground, true );
#endif #endif
setFixedSize(1024, 600); setFixedSize ( 1024, 600 );
moveCenter(this); moveCenter ( this );
setAcceptDrops(true); setAcceptDrops ( true );
ui->treeView->setModel(QQTTreeWidget::SQLTREE); QQtSqlTreeModel* model = new QQtSqlTreeModel ( this );
((QQTSqlTreeModel*)ui->treeView->model()) ui->treeView->setModel ( model );
->setFilePath("LiveStream.db");
((QQTSqlTreeModel*)ui->treeView->model())
->query("");
for(int i = 1; i < 11; i++)
ui->treeView->setColumnHidden(i, true);
((QQTSqlTreeModel*)ui->treeView->model())
->setHeaderData(0, Qt::Horizontal, tr("pindao liebiao"));
connect(ui->treeView, SIGNAL(doubleClicked(const QModelIndex&)),
this, SLOT(doubleClicked(const QModelIndex&)));
#if 1 ( ( QQtSqlTreeModel* ) ui->treeView->model() )
QPixmap pixmap("./skin/default/splash.png"); ->setAbsoluteFilePath ( "LiveStream.db" );
QSplashScreen splash(pixmap); ( ( QQtSqlTreeModel* ) ui->treeView->model() )
splash.showMessage(tr("Loading..."), Qt::AlignBottom); ->query ( "" );
splash.setFixedSize(600, 400); for ( int i = 1; i < 11; i++ )
ui->treeView->setColumnHidden ( i, true );
( ( QQtSqlTreeModel* ) ui->treeView->model() )
->setHeaderData ( 0, Qt::Horizontal, tr ( "pindao liebiao" ) );
connect ( ui->treeView, SIGNAL ( doubleClicked ( const QModelIndex& ) ),
this, SLOT ( doubleClicked ( const QModelIndex& ) ) );
#if 0
QPixmap pixmap ( "./skin/default/splash.png" );
QSplashScreen splash ( pixmap );
splash.showMessage ( tr ( "Loading..." ), Qt::AlignBottom );
splash.setFixedSize ( 600, 400 );
splash.show(); splash.show();
QQTSleep(400); QQtSleep ( 400 );
splash.finish(this); splash.finish ( this );
#elif 0 #elif 0
/** /**
* set movie in label0 * set movie in label0
* label0 will dispear in this function * label0 will dispear in this function
*/ */
QMovie mov("./skin/default/splash.gif"); QMovie mov ( "./skin/default/splash.gif" );
QLabel label; QLabel label;
label.setMovie(&mov); label.setMovie ( &mov );
label.setFixedSize(400, 300); label.setFixedSize ( 400, 300 );
moveCenter(&label); moveCenter ( &label );
mov.start(); mov.start();
label.show(); label.show();
QQTSleep(3000); QQtSleep ( 3000 );
#endif #endif
#if 1 #if 1
//QCoreApplication::setAttribute(Qt::AA_X11InitThreads); //QCoreApplication::setAttribute(Qt::AA_X11InitThreads);
//VlcCommon::setPluginPath(QCoreApplication::applicationDirPath() + "/plugins"); //VlcCommon::setPluginPath(QCoreApplication::applicationDirPath() + "/plugins");
_instance = new VlcInstance(VlcCommon::args(), this); _instance = new VlcInstance ( VlcCommon::args(), this );
_player = new VlcMediaPlayer(_instance); _player = new VlcMediaPlayer ( _instance );
_player->setVideoWidget(ui->widget); _player->setVideoWidget ( ui->widget );
ui->widget->setMediaPlayer(_player); ui->widget->setMediaPlayer ( _player );
ui->widget->setWindowFlags(ui->widget->windowFlags()|Qt::WindowTransparentForInput); ui->widget->setWindowFlags ( ui->widget->windowFlags() | Qt::WindowTransparentForInput );
ui->horizontalSlider->setMediaPlayer(_player); ui->horizontalSlider->setMediaPlayer ( _player );
ui->horizontalSlider->setVolume(100); ui->horizontalSlider->setVolume ( 100 );
_media = NULL; _media = NULL;
//VlcMediaPlayer *_player2; //VlcMediaPlayer *_player2;
@ -101,7 +103,7 @@ QQTWindow::QQTWindow(QWidget *parent) :
* nobody use animation to mainwindow * nobody use animation to mainwindow
* so this animation use to child window * so this animation use to child window
*/ */
AnimationManager::Instance(this); AnimationManager::Instance ( this );
} }
QQTWindow::~QQTWindow() QQTWindow::~QQTWindow()
@ -109,33 +111,33 @@ QQTWindow::~QQTWindow()
delete ui; delete ui;
} }
void QQTWindow::doubleClicked(const QModelIndex &index) void QQTWindow::doubleClicked ( const QModelIndex& index )
{ {
if(!index.parent().isValid()) if ( !index.parent().isValid() )
return; return;
QString uri = index.model()->index(index.row(), 1, index.parent()).data().toString(); QString uri = index.model()->index ( index.row(), 1, index.parent() ).data().toString();
pline() << uri; pline() << uri;
if(_player->hasVout()) if ( _player->hasVout() )
_player->stop(); _player->stop();
if(_media) if ( _media )
delete _media; delete _media;
//QString url = "http://ivi.bupt.edu.cn/hls/cctv1.m3u8"; //QString url = "http://ivi.bupt.edu.cn/hls/cctv1.m3u8";
_media = new VlcMedia(uri, _instance); _media = new VlcMedia ( uri, _instance );
_player->open(_media); _player->open ( _media );
} }
/** /**
* @brief QQTWindow::dragEnterEvent * @brief QQTWindow::dragEnterEvent
* dragEnterEvent事件 * dragEnterEvent事件
*/ */
void QQTWindow::dragEnterEvent(QDragEnterEvent *event) void QQTWindow::dragEnterEvent ( QDragEnterEvent* event )
{ {
//如果为文件,则支持拖放 //如果为文件,则支持拖放
if (event->mimeData()->hasFormat("text/uri-list")) if ( event->mimeData()->hasFormat ( "text/uri-list" ) )
event->acceptProposedAction(); event->acceptProposedAction();
} }
@ -143,28 +145,29 @@ void QQTWindow::dragEnterEvent(QDragEnterEvent *event)
* @brief QQTWindow::dropEvent * @brief QQTWindow::dropEvent
* dropEvent事件 * dropEvent事件
*/ */
void QQTWindow::dropEvent(QDropEvent *event) void QQTWindow::dropEvent ( QDropEvent* event )
{ {
/** /**
* *
* *
*/ */
QList<QUrl> urls = event->mimeData()->urls(); QList<QUrl> urls = event->mimeData()->urls();
if(urls.isEmpty()) if ( urls.isEmpty() )
return; return;
/** /**
* *
*/ */
foreach(QUrl url, urls) { foreach ( QUrl url, urls )
{
QString file_name = url.toLocalFile(); QString file_name = url.toLocalFile();
pline() << file_name; pline() << file_name;
if(_player->hasVout()) if ( _player->hasVout() )
_player->stop(); _player->stop();
if(_media) if ( _media )
delete _media; delete _media;
_media = new VlcMedia(file_name, true, _instance); _media = new VlcMedia ( file_name, true, _instance );
_player->open(_media); _player->open ( _media );
break; break;
} }
} }

View File

@ -47,7 +47,7 @@
</rect> </rect>
</property> </property>
</widget> </widget>
<widget class="QQTTreeWidget" name="treeView"> <widget class="QQtTreeWidget" name="treeView">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>20</x> <x>20</x>
@ -90,7 +90,7 @@
<container>1</container> <container>1</container>
</customwidget> </customwidget>
<customwidget> <customwidget>
<class>QQTTreeWidget</class> <class>QQtTreeWidget</class>
<extends>QTreeView</extends> <extends>QTreeView</extends>
<header location="global">qqttreewidget.h</header> <header location="global">qqttreewidget.h</header>
</customwidget> </customwidget>