Commit Graph
84 Commits
Author SHA1 Message Date
ykeara a97a04efbc 5.5.0 Pairing, Universe Restriction Removal, space drag multiplier (#595)
* add Select Dongle Pairing, fix clipping on long SN names (quest)

* remove test log, add ws log, add pair protection non steamvr

* add missing install commands for new qt modules

* remove bad package

* add auto apply chaperone option, remove old seated/uncal/openxr fixes in favor of always on

* adjust battery overlay for tundras

* fix tundra tracker bat indicator positioning, remove offset page restrictions from non-standing universe, make pairing more responsive and display brief instructions

* add Drag Multiplier

* update documentation

* change version to release

* update readme

* fix format issues readme

* update readme with setting description

* change uid to prevent collision

* changed rounding for grav fling to 2 decimals to be consistand with other values on drag page
2022-04-12 18:07:25 -05:00
Vasily Utkin 5a7fe687d8 Remove warnings-as-errors by default
Compiling C++ on various different platforms with as many out of tree
dependencies as we have is volatile at best.
In order to prevent a third party warning from ruining the build for
people who don't care about third party warnings, we remove
warnings-as-errors by default.
They are still enabled by default on CI.
2021-01-01 23:28:19 +01:00
Vasily 7202230de3 Increase compiler optimization for Linux
`optimize_full` is an undocumented config option that enables O3 on
Linux.

On Windows it does not change the command line, but the final build is
slightly different for unknown reasons.
2020-04-12 00:52:31 +02:00
Vasily 5c85551b9d Fix MSVC not copying files on Qt 5.14.0
For some unknown reason, the jump to Qt 5.14.0 broke the way we're using
the COPIES/file_copies function only on MSVC.
The `mkspecs/features/file_copies.prf` file itself has not been changed.
2020-01-15 14:01:47 +01:00
Vasily 016e5ebc4a Add switch for enabling debug symbols and logs
Enabling the switch on release builds will optimize the binaries as
normal, but will still include debug symbols. This is advantageous for
bugs that do not show up in debug builds without optimizations.
2020-01-15 14:01:47 +01:00
Kung-vr d48648f17c Add binaries for openssl to windows distribution
Binaries are both v 1.1.1c from what's optionally included with Qt
2019-11-11 01:40:23 +09:00
Vasily 2a935895e9 Update Linux build docs for Arch/Ubuntu, add logging calls to Qmake
The page was not made with Arch in mind.

The currently required were tested on Manjaro, more packages may be
explicitly required due to the bare-bones nature of Arch.

Adds simple logging calls makes debugging easier.

The initial build script was basically ported over directly from
Windows. It was written because I at the time didn't understand
compiling on Linux, and the existing standards, very well.

Moving as many build components into a program specifically made for
building C++ makes everything much easier.

The old build script is still used on CI where control flow can only be
changed using environment variables.

`bear` and `clang-format` are only used on the CI, there's no reason to
include them here.
2019-08-23 15:12:58 +02:00
Vasily 730e633d07 Add naive make install for Linux
This enables a `sudo make install` that copies the build directory to
the PREFIX directory (/opt/OpenVR-AdvancedSettings/AdvancedSettings by
default).

The entire directory is being copied because Qt is incredibly weird
about how the INSTALLS variable works. From testing it appears that only
files that exist before the build process has started (even the
file_copy process) will be eligible for installation.

If the /OpenVR-AdvancedSettings/ directory is excluded, Qt will attempt
to remove the /opt/ folder on `make uninstall`, this is obviously not
desirable.
2019-08-07 12:53:20 +02:00
Vasily d36c67bbe3 Update files being copied to binary directory
The windows `qt.conf` caused errors on Linux. Now only the absolutely
needed files are copied over.
2019-07-30 10:45:28 +02:00
Vasily 8e43629bb2 Move windeployqt to Qmake
`qmake` is better suited for finding `windeployqt`, since it's in the same
directory as `qmake` on windows.

`qmake` is also better suited for finding the build target
(release/debug) vs third party scripts.

`windeployqt` is being forced to run in `cmd` because the syntax is
different for running executables in powershell, which means
`windeployqt` won't be executed and runtime or package errors will
occur.

With the removal of the windeployqt call the deploy step is no longer
needed for building on Windows, since all previous deploy tasks are now
handle by Qmake.
2019-07-30 10:45:28 +02:00
Vasily b5d69c589c Make Qmake copy package files instead of OS scripts
Described in commit 97e203fd89e7cb54c7ce96ce779b2e8cb6ac1374

The python functions are no longer needed since the python script
doesn't handle file copy any more.
2019-07-24 10:54:55 +02:00
Vasily 46c8a62565 Make Qmake copy package files instead of OS scripts
Described in commit 97e203fd89e7cb54c7ce96ce779b2e8cb6ac1374

The linux directory in package_files is included even on Windows install
for simplicity and because it takes up less than 1KB.
2019-07-24 10:54:55 +02:00
Vasily 6e088a6ec8 Make Qmake copy licenses instead of OS scripts
Described in commit 97e203fd89e7cb54c7ce96ce779b2e8cb6ac1374

Linux was not including any license files by mistake.
2019-07-24 10:54:55 +02:00
Vasily 9fc22ccbb4 Make Qmake copy Readme instead of OS scripts
Described in commit 97e203fd89e7cb54c7ce96ce779b2e8cb6ac1374
2019-07-24 10:54:55 +02:00
Vasily cbac2f9539 Make Qmake copy res directory instead of OS scripts
Since Qt 5.6 Qmake has supported the (undocumented) file_copies
function.

Moving to an OS independent version is superior for obvious
reasons.

Use in
https://stackoverflow.com/questions/3984104/qmake-how-to-copy-a-file-to-the-output/54162789#54162789

Uses the same interface as the INSTALLS function described here
https://doc.qt.io/qt-5/qmake-advanced-usage.html#installing-files

Implemented in the file_copies.prf file found here
https://code.qt.io/cgit/qt/qtbase.git/log/mkspecs/features/file_copies.prf
2019-07-24 10:54:55 +02:00
Vasily 4450b9b38a Add version number to Windows exe file description
The "real" version number doesn't accept non-integers. This should make
debugging easier.
2019-04-19 22:30:04 +02:00
Vasily bb1d3e16fb Convert executable icon to new method
Manually creating an RC file was the Qt 4 way. The Qt 5 way is just
giving it an icon.

When an RC_FILE isn't manually created Qt will attempt to create one. If
there are non-integers in the version number the compilation will crash.

AdvancedSettings_resource.rc is a build artifact on Windows.
2019-04-19 22:30:04 +02:00
Vasily 164158330e Convert C++ version string to be define instead of include
This allows Qmake to use the version number as well as not requiring all
other uses of the version string to strip double quotes from it. This
also reduces the fragility of the version string as it was required to
be a valid C++ char*, even in contexts where that wouldn't matter.
2019-04-19 22:30:04 +02:00
Vasily b5d63c8166 Update required Qt version to 5.12
On Ubuntu 16.04 and 18.04 it is not possible to get Qt 5.12 from the
official repo. You will need to get it from
https://launchpad.net/~beineri/+archive/ubuntu/opt-qt-5.12.2-bionic
which places the files in /opt. This leads qmake to including the files
as non system headers, which makes them spam errors. Adding them as
-isystem headers first prevents this.
2019-04-17 20:51:34 +02:00
Vasily a7706c1b0b Remove generated banner from .pro file
The banner does not add anything to the file and is only wasted space.
2019-02-21 18:48:53 +01:00
Vasily ab25124d7b Move source files and resources file into separate .pri files 2019-02-21 18:48:53 +01:00
Vitaly 4b48d051c8 Refactor Qt project file into compiler specific subfiles
Encapsulating compiler specific options in a separate file
makes it easier to reason about what is going to happen on
a specific qmake call.

clang-msvc and msvc are separate because they don't support
exactly the same compiler switches.
2019-02-21 18:48:53 +01:00
Vasily 60418279b5 Remove unused Ptt component 2019-02-16 17:59:17 +01:00
username223 ca67502fc5 Remove the Accessibility Tab completely from the app (#79)
See
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/27

The Accessibility tab was made redundant with the implementation of the
new playspace/room/universe tab in
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/60

The tab inherited from the PttController class, which required changes
in order to work with the new IVRInput system. See
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/51
for more about the IVRInput system.

Removing the page now at an early state is going to make it easier to
refactor the PttController since only one class is inheriting it,
instead of two. Since the Accessibility tab is going to be removed
anyway, it makes sense to remove it now.
2019-02-03 12:33:43 -06:00
Vasily c662334a17 Remove unneeded imports from .pro file 2019-02-02 16:09:07 +01:00
Vasily a4ecb0b114 Convert images to use .qrc file, move images
All images have been moved to the /img/ folder in order to fully
separate qml from images. The .qrc file allows qml to use the images by
appending the qrc:/ prefix before the abstract path to the image.

Note that the .qrc file is also check at compile time, which further
enhances the confidence the lack of errors.

Some of the images are not used in the QML, but instead directly passed
through to the OpenVR API. These have not been added to the .qrc file.
2019-02-02 16:09:06 +01:00
Vasily e0768a38b3 Move checkmark and back arrow into .qrc file
The QRC file is a platform independant way of referring to resource
files. It allows the program to access resources in an abstract way
instead of the direct file path.

This is the first step towards moving all files to the new system.
2019-02-02 16:09:02 +01:00
Vasily 76507bd602 Move common elements into /common/ and change imports
Elements work like they've always done, this just moves the commonly
used components away from the global namespace.

The qmldir file still does something, although at this point it is
unknown exactly how it's used and whether or not it could be changed to
simplify imports across the block.
2019-02-02 16:09:01 +01:00
Vasily b01425d745 Fix qml files not being added in Qt Creator
The missing backslashes continued the line, without them the additional
lines were not being included in the += call.
2019-02-01 20:24:02 +01:00
Vasily 083e85cf59 Refactor profile buttons and popups
The popups have been moved inside the scope of the ProfileButtons. Since
the popups open based on the location of their parents, they are
currently opening underneath where they used to open.

Since the profiles and ptt settings do not work anyway, this is seen as
acceptable.
2019-02-01 20:15:51 +01:00
Vasily cd4a6d6994 Refactor audio device selector into separate file
For now the way to go is to have the mirror device and audio device
selectors as different components instead of trying to inherit from a
single component and filling in the necessary function calls.

This is because some function calls are nested inside other components
and would be very messy. Perhaps in future commits the selectors will
inherit from a single parent.
2019-02-01 16:38:44 +01:00
Vasily b6ffa8d30d Move dialog boxes into separate folder
Setting the default audio profile has also been moved into the separate
dialog box. This should not change anything and no bugs were found in
testing, however I have no idea how objects in QML/C++ are initialized
or if our current codebase is created with this in mind.
2019-02-01 16:38:44 +01:00
Vasily 33768028b4 Move AudioPage.qml into separate directory
This encapsulates the page and separates it and the files it uses from
the rest of the application.
2019-02-01 16:38:42 +01:00
Vasily 70e7556de8 Move components into their own directories
This prevents the import "utilities_page" from also importing the
subcomponents. They should not be in the global namespace.
2019-01-27 10:29:57 +01:00
Vasily 629c4e2edb Separate individual components into qml files
This removes the massively indented logic in the previous version.
Notice that individual components will still be imported with an
import "utilities_page". Therefore anything except UtilitiesPage.qml
should be in a separate folder.
2019-01-26 20:29:14 +01:00
Vasily a94c37b858 Move UtilitiesPage and media_keys into separate folder
The QML at the moment is a giant mess. Moving pages into individual
folders and properly abstracting the sub components of the pages will
allow for much easier development and better error messages.
Additionally it will prevent polluting the global namespace. Really, all
the reasons for avoiding globally available values and using
abstractions in regular programming also come into play here.
2019-01-26 18:32:29 +01:00
Vasily 5f17377329 Add explanation to disabled warning in .pro file
MSVC does not yet support non experimental ways of selectively disabling
warnings for some files.
2019-01-23 22:44:09 +01:00
Vasily c0c824d380 Remove C++17 flags from g++ and clang
The flags are already being applied by QMAKE.
2019-01-23 22:18:28 +01:00
Vasily 20341021c5 Update travis to use clang and g++7 2019-01-23 22:16:45 +01:00
Vasily 43bf20da45 Fix msvc and clang-msvc warnings with C++17
The codecvt header has been deprecatd for C++17, but no replacement has
been specified in the standard. It is possible to use the Windows
specific MultiByteToWideChar() and WideCharToMultiByte() from
<Windows.h> instead, however the codecvt header still works so there's
no reason to change it until a proper replacement has been specified in
the standard.

It is additionally necessary to manually set the standard for clang-msvc
to C++17.
2019-01-23 20:43:44 +01:00
Vasily cd6403b8ff Update .pro file and add test C++17 statements to main
The test statements are making sure C++17 features are enabled on all
compilers. They should not be pushed to master as they are.
2019-01-23 19:31:03 +01:00
Vasily 01b0070e66 Rename steamivrinput.h/.cpp to ivrinput.h/.cpp
The name is shorter and identical to the folder name, emphasizing that
this is the main file in this module.
2019-01-19 21:32:12 +01:00
Vasily d7e3df185b Refactor IVRInput logic into several classes
Keeping the action name, handle and type together allows for better
error messages and limited run time type checking, to ensure that the
wrong function isn't called.

It is necessary to initialize the manifest in a class, since the Actions
depend on this being set.

Several files have been moved around to be more consistent.
2019-01-19 21:25:15 +01:00
Vasily 8bcab9b2c0 Refactor ivrinput functions to be more generic 2019-01-19 16:42:49 +01:00
Vasily 5accfd478a Implement beta IVRInput system for testing
In order to test new system:

Build and deploy application.

Copy both files from IVRInput/ dir into the bin/win64 folder.

Change const std::string m_actionManifestPath in steamivrinput.h to be
directly to your action_manifest.json file.

Run and turn on a Vive controller. Press the menu button. If logs say
"NEXT SONG SET!" it works.
2019-01-19 16:41:59 +01:00
Vasily d8f179fdf7 Refactor OpenVR init code to separate class
The OpenVR init code is currently being run in the OverlayController
constructor. Member objects that are initialized before the
OverlayController (ideally all of them) can't use OpenVR APIs before the
first line of the OverlayController constructor. Implementing the OpenVR
Init code as a class means that it is able to initialize before all the
other objects and allow them to use OpenVR APIs in their constructors.

The class has been placed in a folder called "overlaycontroller" to
signify that it should only be used by the OverlayController.

openvr_init.h uses #pragma once despite it being unofficial since it is
supported on all modern compilers.

The copy constructor, copy assignment operator, move constructor and
move assignment operator have been explicitly deleted in order to make
sure nobody tries to use the object in an unintended way, and to
document that these functions should not be automatically created.

The version error messages have been replaced with a single lambda,
since they were all identical.

The version error text should maybe tell the user to update Advanced
Settings instead of OpenVR, since Advanced Settings contains the version
strings in the binary.

No other exit functions were documented on the official docs besides
VR_Shutdown().
2019-01-18 23:28:17 +01:00
Vasily f5000a0ee0 Refactor Media Control Keys QML into smaller bits
The old QML was a giant mess of implementation details and logic.
Reducing the buttons to only 2 essential properties allows the
MediaControllerKeys object to be more easily understood.

Moving the MediaControllerKeys into its own QML file allows the
resulting page to be more easily understood and individual pieces
swapped in and out.

The current QML directory structure is non-existent, breaking parts down
into cohesive folders will allow for easier understanding of the bigger
picture.
2019-01-13 16:47:38 +01:00
Vasily 4829ce7c8a Add QML for audio buttons and add pngs
.pngs were chosen because the .svgs were only available in black. Qt
currently does not have an easy way of changing colors. The rest of the
interface icons are white, so getting them in white was necessary.
2019-01-12 19:14:59 +01:00
username223 6c26507945 Merge branch 'master' into update-win-builds 2019-01-04 20:56:39 +01:00
ykeara 20914b4e71 fixed phantom double line 2019-01-04 13:38:20 -06:00