Merge pull request #5793
6cb4a52
[Qt, Linux] honor current network when creating autostart link (Philip Kaufmann)9673c35
[Qt, Win] honor current network when creating autostart link (Philip Kaufmann)
This commit is contained in:
commit
d26f0b263c
1 changed files with 35 additions and 11 deletions
|
@ -40,6 +40,7 @@
|
|||
#if BOOST_FILESYSTEM_VERSION >= 3
|
||||
#include <boost/filesystem/detail/utf8_codecvt_facet.hpp>
|
||||
#endif
|
||||
#include <boost/scoped_array.hpp>
|
||||
|
||||
#include <QAbstractItemView>
|
||||
#include <QApplication>
|
||||
|
@ -567,12 +568,17 @@ TableViewLastColumnResizingFixer::TableViewLastColumnResizingFixer(QTableView* t
|
|||
#ifdef WIN32
|
||||
boost::filesystem::path static StartupShortcutPath()
|
||||
{
|
||||
if (GetBoolArg("-testnet", false))
|
||||
return GetSpecialFolderPath(CSIDL_STARTUP) / "Bitcoin (testnet).lnk";
|
||||
else if (GetBoolArg("-regtest", false))
|
||||
return GetSpecialFolderPath(CSIDL_STARTUP) / "Bitcoin (regtest).lnk";
|
||||
|
||||
return GetSpecialFolderPath(CSIDL_STARTUP) / "Bitcoin.lnk";
|
||||
}
|
||||
|
||||
bool GetStartOnSystemStartup()
|
||||
{
|
||||
// check for Bitcoin.lnk
|
||||
// check for Bitcoin*.lnk
|
||||
return boost::filesystem::exists(StartupShortcutPath());
|
||||
}
|
||||
|
||||
|
@ -588,8 +594,8 @@ bool SetStartOnSystemStartup(bool fAutoStart)
|
|||
// Get a pointer to the IShellLink interface.
|
||||
IShellLink* psl = NULL;
|
||||
HRESULT hres = CoCreateInstance(CLSID_ShellLink, NULL,
|
||||
CLSCTX_INPROC_SERVER, IID_IShellLink,
|
||||
reinterpret_cast<void**>(&psl));
|
||||
CLSCTX_INPROC_SERVER, IID_IShellLink,
|
||||
reinterpret_cast<void**>(&psl));
|
||||
|
||||
if (SUCCEEDED(hres))
|
||||
{
|
||||
|
@ -597,20 +603,34 @@ bool SetStartOnSystemStartup(bool fAutoStart)
|
|||
TCHAR pszExePath[MAX_PATH];
|
||||
GetModuleFileName(NULL, pszExePath, sizeof(pszExePath));
|
||||
|
||||
TCHAR pszArgs[5] = TEXT("-min");
|
||||
// Start client minimized
|
||||
QString strArgs = "-min";
|
||||
// Set -testnet /-regtest options
|
||||
strArgs += QString::fromStdString(strprintf(" -testnet=%d -regtest=%d", GetBoolArg("-testnet", false), GetBoolArg("-regtest", false)));
|
||||
|
||||
#ifdef UNICODE
|
||||
boost::scoped_array<TCHAR> args(new TCHAR[strArgs.length() + 1]);
|
||||
// Convert the QString to TCHAR*
|
||||
strArgs.toWCharArray(args.get());
|
||||
// Add missing '\0'-termination to string
|
||||
args[strArgs.length()] = '\0';
|
||||
#endif
|
||||
|
||||
// Set the path to the shortcut target
|
||||
psl->SetPath(pszExePath);
|
||||
PathRemoveFileSpec(pszExePath);
|
||||
psl->SetWorkingDirectory(pszExePath);
|
||||
psl->SetShowCmd(SW_SHOWMINNOACTIVE);
|
||||
psl->SetArguments(pszArgs);
|
||||
#ifndef UNICODE
|
||||
psl->SetArguments(strArgs.toStdString().c_str());
|
||||
#else
|
||||
psl->SetArguments(args.get());
|
||||
#endif
|
||||
|
||||
// Query IShellLink for the IPersistFile interface for
|
||||
// saving the shortcut in persistent storage.
|
||||
IPersistFile* ppf = NULL;
|
||||
hres = psl->QueryInterface(IID_IPersistFile,
|
||||
reinterpret_cast<void**>(&ppf));
|
||||
hres = psl->QueryInterface(IID_IPersistFile, reinterpret_cast<void**>(&ppf));
|
||||
if (SUCCEEDED(hres))
|
||||
{
|
||||
WCHAR pwsz[MAX_PATH];
|
||||
|
@ -630,11 +650,10 @@ bool SetStartOnSystemStartup(bool fAutoStart)
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#elif defined(Q_OS_LINUX)
|
||||
|
||||
// Follow the Desktop Application Autostart Spec:
|
||||
// http://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html
|
||||
// http://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html
|
||||
|
||||
boost::filesystem::path static GetAutostartDir()
|
||||
{
|
||||
|
@ -690,8 +709,13 @@ bool SetStartOnSystemStartup(bool fAutoStart)
|
|||
// Write a bitcoin.desktop file to the autostart directory:
|
||||
optionFile << "[Desktop Entry]\n";
|
||||
optionFile << "Type=Application\n";
|
||||
optionFile << "Name=Bitcoin\n";
|
||||
optionFile << "Exec=" << pszExePath << " -min\n";
|
||||
if (GetBoolArg("-testnet", false))
|
||||
optionFile << "Name=Bitcoin (testnet)\n";
|
||||
else if (GetBoolArg("-regtest", false))
|
||||
optionFile << "Name=Bitcoin (regtest)\n";
|
||||
else
|
||||
optionFile << "Name=Bitcoin\n";
|
||||
optionFile << "Exec=" << pszExePath << strprintf(" -min -testnet=%d -regtest=%d\n", GetBoolArg("-testnet", false), GetBoolArg("-regtest", false));
|
||||
optionFile << "Terminal=false\n";
|
||||
optionFile << "Hidden=false\n";
|
||||
optionFile.close();
|
||||
|
|
Loading…
Reference in a new issue