Browse Source

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)
0.13
Wladimir J. van der Laan 10 years ago
parent
commit
d26f0b263c
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
  1. 46
      src/qt/guiutil.cpp

46
src/qt/guiutil.cpp

@ -40,6 +40,7 @@
#if BOOST_FILESYSTEM_VERSION >= 3 #if BOOST_FILESYSTEM_VERSION >= 3
#include <boost/filesystem/detail/utf8_codecvt_facet.hpp> #include <boost/filesystem/detail/utf8_codecvt_facet.hpp>
#endif #endif
#include <boost/scoped_array.hpp>
#include <QAbstractItemView> #include <QAbstractItemView>
#include <QApplication> #include <QApplication>
@ -567,12 +568,17 @@ TableViewLastColumnResizingFixer::TableViewLastColumnResizingFixer(QTableView* t
#ifdef WIN32 #ifdef WIN32
boost::filesystem::path static StartupShortcutPath() 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"; return GetSpecialFolderPath(CSIDL_STARTUP) / "Bitcoin.lnk";
} }
bool GetStartOnSystemStartup() bool GetStartOnSystemStartup()
{ {
// check for Bitcoin.lnk // check for Bitcoin*.lnk
return boost::filesystem::exists(StartupShortcutPath()); return boost::filesystem::exists(StartupShortcutPath());
} }
@ -588,8 +594,8 @@ bool SetStartOnSystemStartup(bool fAutoStart)
// Get a pointer to the IShellLink interface. // Get a pointer to the IShellLink interface.
IShellLink* psl = NULL; IShellLink* psl = NULL;
HRESULT hres = CoCreateInstance(CLSID_ShellLink, NULL, HRESULT hres = CoCreateInstance(CLSID_ShellLink, NULL,
CLSCTX_INPROC_SERVER, IID_IShellLink, CLSCTX_INPROC_SERVER, IID_IShellLink,
reinterpret_cast<void**>(&psl)); reinterpret_cast<void**>(&psl));
if (SUCCEEDED(hres)) if (SUCCEEDED(hres))
{ {
@ -597,20 +603,34 @@ bool SetStartOnSystemStartup(bool fAutoStart)
TCHAR pszExePath[MAX_PATH]; TCHAR pszExePath[MAX_PATH];
GetModuleFileName(NULL, pszExePath, sizeof(pszExePath)); 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 // Set the path to the shortcut target
psl->SetPath(pszExePath); psl->SetPath(pszExePath);
PathRemoveFileSpec(pszExePath); PathRemoveFileSpec(pszExePath);
psl->SetWorkingDirectory(pszExePath); psl->SetWorkingDirectory(pszExePath);
psl->SetShowCmd(SW_SHOWMINNOACTIVE); 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 // Query IShellLink for the IPersistFile interface for
// saving the shortcut in persistent storage. // saving the shortcut in persistent storage.
IPersistFile* ppf = NULL; IPersistFile* ppf = NULL;
hres = psl->QueryInterface(IID_IPersistFile, hres = psl->QueryInterface(IID_IPersistFile, reinterpret_cast<void**>(&ppf));
reinterpret_cast<void**>(&ppf));
if (SUCCEEDED(hres)) if (SUCCEEDED(hres))
{ {
WCHAR pwsz[MAX_PATH]; WCHAR pwsz[MAX_PATH];
@ -630,11 +650,10 @@ bool SetStartOnSystemStartup(bool fAutoStart)
} }
return true; return true;
} }
#elif defined(Q_OS_LINUX) #elif defined(Q_OS_LINUX)
// Follow the Desktop Application Autostart Spec: // 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() boost::filesystem::path static GetAutostartDir()
{ {
@ -690,8 +709,13 @@ bool SetStartOnSystemStartup(bool fAutoStart)
// Write a bitcoin.desktop file to the autostart directory: // Write a bitcoin.desktop file to the autostart directory:
optionFile << "[Desktop Entry]\n"; optionFile << "[Desktop Entry]\n";
optionFile << "Type=Application\n"; optionFile << "Type=Application\n";
optionFile << "Name=Bitcoin\n"; if (GetBoolArg("-testnet", false))
optionFile << "Exec=" << pszExePath << " -min\n"; 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 << "Terminal=false\n";
optionFile << "Hidden=false\n"; optionFile << "Hidden=false\n";
optionFile.close(); optionFile.close();

Loading…
Cancel
Save