Changeset 50 for psi/trunk

Show
Ignore:
Timestamp:
09/15/06 20:27:11 (2 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).

Files:
1 modified

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);