This is the first attempt at fixing the shortcut
library drawing issue. When the app is frozen
waiting for some games/apps to finish, the
ImageListView refreshes, but doesn't refresh
with any icons, so it all looks a bit pants.
This is my first attempt at fixing that.
Reworked the Uplay and Steam game
detection to make them more reliable.
Found a couple of logic errors that were
causing issues with process detection.
Also moved away from accessing
process.MainModule as it was causing
exceptions. Now just using process name
as it is simple and fast.
This time I know it works as I have checked
games are found even if saved in different
folders on different drives, and even when
Ubiconnect is installed in a non-default
location. It even copes when games are
uninstalled and their remnants are left in
registry.
Updated Uplay library scanning to work
properly, but it requires access to
the HKEY_LOCAL_MACHINE reg key,
which only works with adrministrative
rights. I really don't want to need that,
so I'll be trying to find an alternative way
to get the information I need from the file
system.
Modified some logic so that the audio device
volume and capture device volume will still
be applied even if the current device is selected.
Previous logic incorrectly would only change the
volume if the audio device was also changed.
Volume is always evaluated even if the audio
device doesn't have to change (unless don't
change audio device or don't change capture
device are selected).
Logic for determining the shortcut icon
name was flawed, and wouldn't work. Moved
to a new icon naming scheme using shortcut
UUID to make it simpler to update. Icon is written
every time that the shortcut is saved.
Added more robustness and error checks
to handle AudioSwitcher not being able to
detect chipsets, and to cope with situations
with no active audio or capture devices.
Should be much more robust as it also
handles exceptions better, and has better
error logging.
Steam library processing was missing the
default steam library. This meant that only
people with additional steam libraries were
detecting games. This has been fixed now.
Added in some more TRACE logging for
Steam and for Uplay libraries.
Both Steam and Uplay library logic would error
when the library was installed, but didn't have
any installed games. Thanks to @joeymanson23
for the report. Fixes#4.
Adds a LOT more logging to the Steam and Uplay
libraries to allow for remote troubleshooting via
the log file, especially if the logging settings are
set to TRACE.
Also fixed the long standing issue for being able
to install two copies of DisplayMagician of the
same version. Now the installer will prevent that
from happening!
If there was a problem with applying
a displayprofile, then the exception
would stop the ApplyProfile window
from being closed. And as it was set
to top most window, the user wouldnt
be able to make any changes and would
have to reboot their computer. I have
added an X button up to top right of the
screen to allow people to close the window
when there is a problem.
DisplayProfile updates after a profile
switch properly. The UI wasn't reflecting
the proper changes after a profile change
made from the DisplayProfile page, but
now it does.
This change was to separate 'Equals'
(which checks for exactly the same) with
'Possible' (which checks that the connected
displays are available to use. Should make
the profile comparison a lot more accurate.
Fixed the Profile.Equals logic so that it
could detect the difference between
Surround and non-Surround triple screen
configurations. Now seems to work fine.
Also adjusted the ProfileAdapter so that
the profile imagelistview works correctly.
Moved to using the UUID rather than the
name to allow users to change the name
without affecting the UUID. That was a
change I should have made AGES ago.
Relaxed the profile matching logic to
use my looser displayidentifier logic
as it is more likely that connections to
a display is changed rather thant the
display paths, resolution or anything like
that. Will use this as an experiment to
see if it works or not.
Also fixed the shortcut renaming errors
by searching for the UUID, not the shortcut
name which is the pretty much the way
I should have done it in the first place!
Added the ability for user to only start a
program if it hasn't been started yet. This
is for things like SimHub that should
already be started by Windows when the
PC first boots.
Also corrects a bug that ignored the autoname
property so that it overwrote the suggested
filename when saving a shortcut.
ImageListView was too keen when a shortcut was
renamed and it tried updating ShortcutLibraryForm
straight away when it reutned, even before we had
a chance to update the data to ILV uses to populate
itself. The fix was to stop ILV being so keen, and to
suspend ILV from doing redraws until we had a
chance to refresh the UI. Problem solved.
Added a button to save a profile shortcut
to the Windows desktop. This will enable
people to quickly change to another display
configuration if they want to using a desktop
display. This will work even if they are unable
to get admin rights to install the background
popup menu.
Fixed the logic for profile selection on
shortcuts so that the profile is either
selected or not based on its existence
or whether the profile is valid to use now
or whether the shortcut is new.
Updated styling of the profile selector in the
shortcut editing form. It now looks the same
as the others. There is now a slightly annoying
problem where clicking elsewhere in the form
deselects the imagelistview selection, but that
is a small thing to worry about later.
It was erroring when loading games into
a blank shortcut screen. This was stopping
us being able to select any games at all.
Fixed another problem with Shortcut.IsValid
causing exception when loading a profle
that no longer existed. It now will correctly
report that the shortcut is isvalid.
Fixed the profiles selection so it doesn't change
when you swap screens. Made the 'View
current display' button refresh the profile validity
too, so that a user now only has to change their
display settings in Windows and then swap back
DisplayMagician and click the View Current Display
button and the profiles will be updated.
Highlighting colours and structure changed
to work better with the ILV structure. Next step
is to add the ability to visually show invalid
shortcuts to notify when a shortcut won't
work.
Added a messagebox to warn the user
when they try to run an invalid shortcut.
It now asks the user if they really want to
do it, or it directly opens the 'edit' window
for if they want to fix things now.
Combined DisplayMagicianShared logging into
the main log file to simplify log reporting for the
future. Also started adding info and debug
statements to the program to make the debug
level log work well for troubleshooting. This is
going to take a LONG time to complete, but will
be worth it in the end.
Changed some misanchored UI
elements so that they will move correctly
when the UI windows are resized. Also
fixed a mistake that meant the 'Create
Shortcut' message wasn't hidden
when it should be.
UplayLibrary was erroring when run without
Uplay installed. Needed to tweak it so that
DisplayMagician will work without Uplay
library or Steam library installed.
Found issue where the IsRunning process
checks were breaking because they were
being running before the steam process
had a chance to create the process. This
meant the information wasn't aviailable for
the SteamGame.IsRunning function to
inspect. Fixed by adding in a 0.5 sec delay.
Toasts working for minimised start (allows use to
open the application) and for minimised close
(allows user to open the application or exit the
application).
Installer works, but there are a few issues with it.
- It doesn't register the DesktopBackground COM server
- It doesn't create a start menu shortcut with the AUMID
- It doesn't check for .Net Framework 4.8 or later
- It doesn't try to install .Net Framework 4.8 or later if not there
- It doesn't have any customised backgrounds...
- It doesn't ask to run DisplayMagician when install is finished
This registers the Application User Model ID
with Win 10 so that it recognises the application
and can interact with it. This allows Toasts, Taskbar
pinning, right-click menus and other functions to
work.
Had problems storing ChangeAudioDevice and
SetAudioVolume settings (and the Capture Device
versions) so had to slightly change the way the
settings were stored.
Also set it to a more reasonable 20 second timeout
and then it continues through the starting process.
Also added some NLog error handling in RunShortcut.
There was an issue with the IsPossible check
as it hadn't been adjusted from when I removed
the Output from the display fingerprint. The
Output number changes in the NVIDIA driver
so it is different after a reboot. I hadn't removed
the Output from the current display device
check, and so it wasn't matching the correct
stored fingerprint.
Helper messages added to the MainForm and
to the Shortcut library to try and help people
understand what order to do things in so that
the software works as intended.
Fixed an issue where Steam and Uplay don't detect the
game correctly. Now they find the processes themselves.
Also fixed ProgramSettings so that it generates a new
settings file on startup.
Also added LogLevel option to the ProgramSettings so that
I can start rolling out the NLog log statements to report
errors from the binary when it's installed on people's
PCs.
The audio onselect event had an errant bit of
logic that resulted in an exception - now fixed.
Also updated the Setup UI with nicer pictures
and some words that are more reflective of the
purpose of this software.
Added the ability to store the audio device
information within the ShortcutItem, and also
added the logic to the ShortcutForm to correctly
load and save the audio device settings. Also
coped with the edge case of when an audio device
is turned off or unplugged when the user edits the
shortcut... in that case we want to still keep the
old audio device settings as it is likely to be plugged
back in when the shortcut is actually run.
Part of the work through getting audio devices
into DisplayMagician, as it now scans the devices
and automatically selects the one in use currently.
You can also press the 'rescan' button to have it
update the list. This is the UI part done.
Next step is the saving the chosen audio device
to the saved Shortcut!