Changeset 50 for psi


Ignore:
Timestamp:
Sep 15, 2006, 8:27:11 PM (18 years ago)
Author:
dmik
Message:

Psi: Added recognition of the "PM Default Browser/Mail" setting for opening links (the HINI_USER_PROFILE\WPURLDEFAULTSETTINGS registry key is used for that purpose).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • psi/trunk/src/common.cpp

    r48 r50  
    981981}
    982982
     983#ifdef Q_WS_PM
     984static QString getBrowserSetting (PCSZ key)
     985{
     986        static const PSZ app = "WPURLDEFAULTSETTINGS";
     987
     988        QString value;
     989    ULONG keyLen = 0;
     990       
     991        if ( PrfQueryProfileSize( HINI_USERPROFILE, app, key, &keyLen ) && keyLen ) {
     992        char *buf = new char [keyLen];
     993        ULONG realLen =
     994            PrfQueryProfileString( HINI_USERPROFILE, app, key, NULL, buf, keyLen );
     995                if (realLen) {
     996                        realLen --; // excude zero terminator
     997                        buf[realLen] = 0;
     998                        value = QString::fromLocal8Bit(buf);
     999                }
     1000                delete[] buf;
     1001        }
     1002       
     1003        return value;
     1004}
     1005#endif
     1006
    9831007void openURL(const QString &url)
    9841008{
     
    10001024#endif
    10011025#ifdef Q_WS_PM
    1002         /// @todo (dmik) use HINI_USER_PROFILE\WPURLDEFAULTSETTINGS\DefaultBrowserExe
     1026        if(option.browser == 0)
     1027                useCustom = FALSE;
    10031028#endif
    10041029#ifdef Q_WS_X11
     
    10131038                bool isMail = FALSE;
    10141039                QString s = url;
    1015                 if(url.left(7) == "mailto:") {
     1040                if(url.left(7).lower() == "mailto:") {
     1041#ifdef Q_WS_PM
     1042                        // mozilla/thunderbird doesn't understand e-mails w/o 'mailto:'
     1043#else
    10161044                        s.remove(0, 7);
     1045#endif                 
    10171046                        isMail = TRUE;
    10181047                }
     
    10491078#endif
    10501079#ifdef Q_WS_PM
    1051         /// @todo (dmik) use HINI_USER_PROFILE\WPURLDEFAULTSETTINGS\DefaultBrowserExe
     1080                QString exe, params, workDir;
     1081               
     1082                if (url.left(7).lower() == "mailto:") {
     1083                        exe = getBrowserSetting("DefaultMailExe");
     1084                        params = getBrowserSetting("DefaultMailParameters");
     1085                        workDir = getBrowserSetting("DefaultMailWorkingDir");
     1086                } else if (url.left(5).lower() == "news:") {
     1087                        exe = getBrowserSetting("DefaultNewsExe");
     1088                        params = getBrowserSetting("DefaultNewsParameters");
     1089                        workDir = getBrowserSetting("DefaultNewsWorkingDir");
     1090                } else if (url.left(4).lower() == "ftp:") {
     1091                        exe = getBrowserSetting("DefaultFTPExe");
     1092                        params = getBrowserSetting("DefaultFTPParameters");
     1093                        workDir = getBrowserSetting("DefaultFTPWorkingDir");
     1094                } else if (url.left(4).lower() == "irc:") {
     1095                        exe = getBrowserSetting("DefaultIRCExe");
     1096                        params = getBrowserSetting("DefaultIRCParameters");
     1097                        workDir = getBrowserSetting("DefaultIRCWorkingDir");
     1098                }
     1099                // if the specific app is not found, fallback to the general broswer
     1100                if (exe.isEmpty()) {
     1101                        exe = getBrowserSetting("DefaultBrowserExe");
     1102                        params = getBrowserSetting("DefaultParameters");
     1103                        workDir = getBrowserSetting("DefaultWorkingDir");
     1104                }
     1105
     1106                bool success = false;
     1107
     1108                if (!exe.isEmpty()) {
     1109                        QStringList args;
     1110                        args += exe;
     1111                        if (!params.isEmpty()) args += params;
     1112                        args += url;
     1113                        QProcess cmd(args);
     1114                        if (!workDir.isEmpty()) cmd.setWorkingDirectory(workDir);
     1115                        success = cmd.start();
     1116                }
     1117
     1118                if (!success)
     1119                        QMessageBox::critical(0, CAP(QObject::tr("URL error")),
     1120                           QObject::tr("Unable to open the URL. Ensure that you have a web "
     1121                                                   "browser installed."));
    10521122#endif
    10531123#ifdef Q_WS_X11
     
    11131183{
    11141184#if defined(Q_WS_X11) || defined(Q_WS_MAC) || defined(Q_WS_PM)
    1115         /// @todo (dmik) test it
    11161185        time_t x;
    11171186        time(&x);
Note: See TracChangeset for help on using the changeset viewer.