ability to export non existing shortcuts to steam

UWP_Overlay
Peter Repukat 8 years ago
parent d41d063610
commit 4dee459b1e

@ -153,7 +153,114 @@ void GloSC::on_pbDelete_clicked()
void GloSC::on_pbAddToSteam_clicked() void GloSC::on_pbAddToSteam_clicked()
{ {
//TODO QSettings settings("HKEY_CURRENT_USER\\SOFTWARE\\Valve\\Steam", QSettings::NativeFormat);
QString steamPath = settings.value("SteamPath").toString();
QString activeUser = settings.value("ActiveProcess/ActiveUser").toString();
QFile shortcutsFile(steamPath + "/userdata/" + activeUser + "/config/shortcuts.vdf");
if (!shortcutsFile.exists())
{
QMessageBox::information(this, "GloSC", "Couldn't detect Steam shortcuts file!", QMessageBox::Ok);
return;
}
if (!shortcutsFile.open(QFile::ReadWrite))
{
QMessageBox::information(this, "GloSC", "Couldn't open Steam shortcuts file!", QMessageBox::Ok);
return;
}
//just detect already present paths the easy way and hardcode the actual shortcut structure
//will prob. come back to bite me, but for now it should be enough
QByteArray shortcutsFileBytes = shortcutsFile.readAll();
//get shortcutcount
QByteArray temp = shortcutsFileBytes;
temp.chop(9); //chop off last "tags"
temp = temp.mid(temp.lastIndexOf("tags") + 8, temp.size() - 1);
int shortcutCount = QString(temp).toInt();
QString itemName;
QString appDir = QDir::toNativeSeparators(QCoreApplication::applicationFilePath().mid(0, QCoreApplication::applicationFilePath().lastIndexOf("/")));
for (int i = 0; i < ui.lwInstances->count(); i++)
{
itemName = ui.lwInstances->item(i)->text();
if (!shortcutsFileBytes.contains(QString(appDir + "\\" + itemName + "\\" + itemName + ".exe").toStdString().c_str()))
{
shortcutsFileBytes.chop(2); //chop of end bytes
shortcutCount++;
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append(QString::number(shortcutCount));
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x01');
shortcutsFileBytes.append("appname");
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append(itemName);
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x01');
shortcutsFileBytes.append("exe");
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append(QString("\"" + appDir + "\\" + itemName + "\\" + itemName + ".exe\""));
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x01');
shortcutsFileBytes.append("StartDir");
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append(QString("\"" + appDir + "\\" + itemName + "\\" + "\""));
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x01');
shortcutsFileBytes.append("icon");
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x01');
shortcutsFileBytes.append("ShortcutPath");
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x02');
shortcutsFileBytes.append("IsHidden");
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x02');
shortcutsFileBytes.append("AllowDesktopConfig");
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x01');
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x02');
shortcutsFileBytes.append("OpenVR");
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append("tags");
shortcutsFileBytes.append('\x00');
shortcutsFileBytes.append('\x08');
shortcutsFileBytes.append('\x08');
//append chopped of bytes
shortcutsFileBytes.append('\x08');
shortcutsFileBytes.append('\x08');
}
}
shortcutsFile.close();
if (!shortcutsFile.open(QFile::ReadWrite | QIODevice::Truncate)) //damn qt is complicated...
{
QMessageBox::information(this, "GloSC", "Couldn't open Steam shortcuts file!", QMessageBox::Ok);
return;
}
shortcutsFile.write(shortcutsFileBytes);
shortcutsFile.close();
QMessageBox::information(this, "GloSC", "Shortcuts were added! Restart Steam for changes to take effect!", QMessageBox::Ok);
} }
void GloSC::on_pbSearchPath_clicked() void GloSC::on_pbSearchPath_clicked()

@ -23,6 +23,7 @@ limitations under the License.
#include <qsettings.h> #include <qsettings.h>
#include <QFileDialog> #include <QFileDialog>
#include <qlist.h> #include <qlist.h>
#include <qmessagebox.h>
#include <Windows.h> #include <Windows.h>
#include <appmodel.h> #include <appmodel.h>

@ -174,13 +174,13 @@
</widget> </widget>
<widget class="QPushButton" name="pbAddToSteam"> <widget class="QPushButton" name="pbAddToSteam">
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>true</bool>
</property> </property>
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>300</x> <x>270</x>
<y>330</y> <y>330</y>
<width>81</width> <width>111</width>
<height>31</height> <height>31</height>
</rect> </rect>
</property> </property>
@ -225,7 +225,7 @@
<rect> <rect>
<x>170</x> <x>170</x>
<y>330</y> <y>330</y>
<width>121</width> <width>91</width>
<height>31</height> <height>31</height>
</rect> </rect>
</property> </property>

Loading…
Cancel
Save