Miloš Minařík a écrit : > Hello, let's discuss the points > > 1) Strange, builds fine for me. Can you post the errors you get? > /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp: In member function ‘void QtSoftUpdate::updateWengoPhoneEventHandlerThreadSafe(const std::string&, long long unsigned int, const std::string&, unsigned int)’: /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp:90: error: ‘updDownloadUrl’ was not declared in this scope /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp:91: error: ‘updBuildId’ was not declared in this scope /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp:92: error: ‘updVersion’ was not declared in this scope /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp:93: error: ‘updFileSize’ was not declared in this scope /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp:95: error: ‘_downloadUpdatesWindow’ was not declared in this scope /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp:97: error: ‘_uiDownload’ was not declared in this scope /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp:100: error: no matching function for call to ‘SafeConnect::connect(<type error>, const char*, QtSoftUpdate* const, const char*)’ /Users/laurent/Desktop/qutecom-2.2/libs/qtutil/include/qtutil/SafeConnect.h:81: note: candidates are: static void SafeConnect::connect(const QObject*, const char*, const QObject*, const char*, Qt::ConnectionType) /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp:101: error: no matching function for call to ‘SafeConnect::connect(<type error>, const char*, QtSoftUpdate* const, const char*)’ /Users/laurent/Desktop/qutecom-2.2/libs/qtutil/include/qtutil/SafeConnect.h:81: note: candidates are: static void SafeConnect::connect(const QObject*, const char*, const QObject*, const char*, Qt::ConnectionType) /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp:107: error: no matching function for call to ‘QString::fromStdString(<type error>)’ /Library/Frameworks/QtCore.framework/Headers/qstring.h:1029: note: candidates are: static QString QString::fromStdString(const std::string&) /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp: At global scope: /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp:152: error: no ‘void QtSoftUpdate::rejectUpdate()’ member function declared in class ‘QtSoftUpdate’ /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp: In member function ‘void QtSoftUpdate::rejectUpdate()’: /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp:154: error: ‘updBuildId’ was not declared in this scope /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp: At global scope: /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp:161: error: no ‘void QtSoftUpdate::startDownload()’ member function declared in class ‘QtSoftUpdate’ /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp: In member function ‘void QtSoftUpdate::startDownload()’: /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp:189: error: ‘downloadUrl’ was not declared in this scope /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp:189: error: ‘buildId’ was not declared in this scope /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp:189: error: ‘version’ was not declared in this scope /Users/laurent/Desktop/qutecom-2.2/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp:189: error: ‘fileSize’ was not declared in this scope [ 84%] Building CXX object wengophone/src/presentation/qt/CMakeFiles/QuteCom.dir/webservices/softupdate/QtBrowserSoftUpdate.o make[2]: *** [wengophone/src/presentation/qt/CMakeFiles/QuteCom.dir/webservices/softupdate/QtSoftUpdate.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [wengophone/src/presentation/qt/CMakeFiles/QuteCom.dir/all] Error 2 make: *** [all] Error 2
It seems that you have not integrate QtSoftUpdate.h modifications in the patch > 2) In fact it's mainly the original automatic update. Problem was it worked > just with wengo accounts, so I changed it to work with basic account type > too. I have also made some slight modifications to make it more user friendly. > Ok > 3) Well, it's used just for storing the last rejected update number, so I > guess I could save this information to configuration file instead. > I think it will be better. > 4) I added a window which asks if you want to install updates, because > originally it didn't ask and started the update whether you liked it or not. > And that's one of things what I meant when saying "more user friendly". > Good idea, please can you use the original instead of a clone, i don't want to have multi ui files for the same window ... > 5) I will check it. > Thanks, Minam Laurent > minam > > Laurent Tarrisse wrote: > >> Hello Minam, >> >> I've got some problems with your patch : >> >> 1/ Your patch refuse to build, there are some declarations not put in >> your patch. >> >> 2/ There is already an automatic update. Can you explain why you have >> made this patch ? >> >> 3/ Update *have not* to be UserProfile dependent. >> >> 4/ You've cloned the update window, why ? >> >> 5/ it seems that About's connect have been removed >> >> https switch is a good idea. >> >> Laurent >> >> minam a ?crit : >> >>> # HG changeset patch >>> # User bedr...@bedrich-5f0ecfa. >>> # Date 1245316874 -7200 >>> # Node ID 28123d22f3642ae88b5c667c20ed017ef75ecc8b >>> # Parent 16afed46a4e9f149a581d5bb1bfe207ed4a8844e >>> Automatic updates. For more information see >>> >> http://trac.qutecom.org/wiki/AutomaticUpdates >> >>> diff -r 16afed46a4e9 -r 28123d22f364 wengophone/resources/config/config.xml >>> --- a/wengophone/resources/config/config.xml Tue Jan 20 16:47:33 2009 -0500 >>> +++ b/wengophone/resources/config/config.xml Thu Jun 18 11:21:14 2009 +0200 >>> @@ -110,7 +110,7 @@ >>> >>> <!-- Can be one of Hidden, IconsOnly, TextUnderIcons --> >>> <general.toolbarmode><string>Hidden</string></general.toolbarmode> >>> - >>> +<https.updates.enabled><bool>1</bool></https.updates.enabled> >>> <ieactivex.enable><bool>1</bool></ieactivex.enable> >>> >>> <language><string>detect</string></language> >>> diff -r 16afed46a4e9 -r 28123d22f364 >>> >> wengophone/src/control/profile/CUserProfile.cpp >> >>> --- a/wengophone/src/control/profile/CUserProfile.cpp Tue Jan 20 16:47:33 >>> 2009 >>> >> -0500 >> >>> +++ b/wengophone/src/control/profile/CUserProfile.cpp Thu Jun 18 11:21:14 >>> 2009 >>> >> +0200 >> >>> @@ -162,8 +162,8 @@ >>> >>> //Check for WengoPhone update >>> if (_userProfile.getSipAccount()) { >>> - if (_userProfile.getSipAccount()->getType() == >>> >> SipAccount::SipAccountTypeWengo) { >> >>> - wsSoftUpdate.checkForUpdate(); >>> + if (_userProfile.getSipAccount()->getType() == >>> >> SipAccount::SipAccountTypeBasic) { >> >>> + wsSoftUpdate.checkForUpdate(false); >>> } >>> } >>> } >>> diff -r 16afed46a4e9 -r 28123d22f364 >>> >> wengophone/src/control/webservices/softupdate/CSoftUpdate.cpp >> >>> --- a/wengophone/src/control/webservices/softupdate/CSoftUpdate.cpp Tue Jan >>> 20 >>> >> 16:47:33 2009 -0500 >> >>> +++ b/wengophone/src/control/webservices/softupdate/CSoftUpdate.cpp Thu Jun >>> 18 >>> >> 11:21:14 2009 +0200 >> >>> @@ -49,5 +49,5 @@ >>> } >>> >>> void CSoftUpdate::checkForUpdate() { >>> - _wsSoftUpdate.checkForUpdate(); >>> + _wsSoftUpdate.checkForUpdate(false); >>> } >>> diff -r 16afed46a4e9 -r 28123d22f364 wengophone/src/model/config/Config.cpp >>> --- a/wengophone/src/model/config/Config.cpp Tue Jan 20 16:47:33 2009 -0500 >>> +++ b/wengophone/src/model/config/Config.cpp Thu Jun 18 11:21:14 2009 +0200 >>> @@ -173,6 +173,7 @@ >>> const string Config::LINUX_PREFERED_BROWSER_KEY = "linux.prefered.browser"; >>> >>> const string Config::CALL_ENCRYPTION_MODE_KEY = "call.encryption.mode"; >>> +const string Config::HTTPS_UPDATES_ENABLED_KEY = "https.updates.enabled"; >>> >>> const string Config::URL_ACCOUNTCREATION_KEY = "url.accountcreation"; >>> >>> @@ -759,6 +760,11 @@ >>> bool Config::getCallEncryptionMode() const { >>> return getBooleanKeyValue(CALL_ENCRYPTION_MODE_KEY); >>> } >>> + >>> +bool Config::getHttpsUpdatesEnabled() const { >>> + return getBooleanKeyValue(HTTPS_UPDATES_ENABLED_KEY); >>> +} >>> + >>> string Config::getAccountCreationUrl() const { >>> return getStringKeyValue(URL_ACCOUNTCREATION_KEY); >>> } >>> diff -r 16afed46a4e9 -r 28123d22f364 wengophone/src/model/config/Config.h >>> --- a/wengophone/src/model/config/Config.h Tue Jan 20 16:47:33 2009 -0500 >>> +++ b/wengophone/src/model/config/Config.h Thu Jun 18 11:21:14 2009 +0200 >>> @@ -598,6 +598,8 @@ >>> /** Call encryption mode. */ >>> static const std::string CALL_ENCRYPTION_MODE_KEY; >>> bool getCallEncryptionMode() const; >>> + static const std::string HTTPS_UPDATES_ENABLED_KEY; >>> + bool getHttpsUpdatesEnabled() const; >>> >>> /** @} */ >>> >>> diff -r 16afed46a4e9 -r 28123d22f364 >>> >> wengophone/src/model/profile/UserProfile.cpp >> >>> --- a/wengophone/src/model/profile/UserProfile.cpp Tue Jan 20 16:47:33 2009 >>> >> -0500 >> >>> +++ b/wengophone/src/model/profile/UserProfile.cpp Thu Jun 18 11:21:14 2009 >>> >> +0200 >> >>> @@ -495,7 +495,7 @@ >>> LOG_DEBUG("SMS created"); >>> >>> //Creates SoftUpdate, SoftUpdate needs a WengoAccount >>> - _wsSoftUpdate = new WsSoftUpdate(wengoAccount); >>> + _wsSoftUpdate = new WsSoftUpdate(wengoAccount, this); >>> wsSoftUpdateCreatedEvent(*this, *_wsSoftUpdate); >>> LOG_DEBUG("SoftUpdate created"); >>> >>> @@ -508,6 +508,11 @@ >>> wsCallForwardCreatedEvent(*this, *_wsCallForward); >>> _wsCallForward->wsCallForwardEvent += >>> >> boost::bind(&UserProfile::wsCallForwardEventHandler, this, _1, _2, _3); >> >>> } >>> + else if (_sipAccount->getType() == SipAccount::SipAccountTypeBasic) { >>> + WengoAccount * wengoAccount = dynamic_cast<WengoAccount*>(_sipAccount); >>> + _wsSoftUpdate = new WsSoftUpdate(wengoAccount, this); >>> + wsSoftUpdateCreatedEvent(*this, *_wsSoftUpdate); >>> + } >>> phoneLineCreatedEvent(*this, *_activePhoneLine); >>> >>> loadHistory(getProfileDirectory()); >>> @@ -625,3 +630,7 @@ >>> >>> return false; >>> } >>> + >>> +void UserProfile::setLastRejectedUpdate(unsigned long long buildId) { >>> + _lastRejectedUpdate = buildId; >>> +} >>> diff -r 16afed46a4e9 -r 28123d22f364 >>> >> wengophone/src/model/profile/UserProfile.h >> >>> --- a/wengophone/src/model/profile/UserProfile.h Tue Jan 20 16:47:33 2009 >>> >> -0500 >> >>> +++ b/wengophone/src/model/profile/UserProfile.h Thu Jun 18 11:21:14 2009 >>> >> +0200 >> >>> @@ -412,6 +412,15 @@ >>> std::string getName() const { >>> return _name; >>> } >>> + >>> + /** >>> + * Softupdate >>> + */ >>> + unsigned long long getLastRejectedUpdate() { >>> + return _lastRejectedUpdate; >>> + } >>> + >>> + void setLastRejectedUpdate(unsigned long long buildId); >>> >>> private: >>> >>> @@ -559,6 +568,9 @@ >>> >>> /** Name of the UserProfile. */ >>> std::string _name; >>> + >>> + /** BuildId of last rejected update */ >>> + unsigned long long _lastRejectedUpdate; >>> }; >>> >>> #endif //OWUSERPROFILE_H >>> diff -r 16afed46a4e9 -r 28123d22f364 >>> >> wengophone/src/model/profile/UserProfileXMLSerializer.cpp >> >>> --- a/wengophone/src/model/profile/UserProfileXMLSerializer.cpp Tue Jan 20 >>> >> 16:47:33 2009 -0500 >> >>> +++ b/wengophone/src/model/profile/UserProfileXMLSerializer.cpp Thu Jun 18 >>> >> 11:21:14 2009 +0200 >> >>> @@ -27,6 +27,7 @@ >>> #include "UserProfile.h" >>> >>> #include <tinyxml.h> >>> +#include <sstream> >>> >>> UserProfileXMLSerializer::UserProfileXMLSerializer(UserProfile & >>> userProfile) >>> >>> : ProfileXMLSerializer(userProfile), _userProfile(userProfile) { >>> @@ -34,6 +35,8 @@ >>> >>> std::string UserProfileXMLSerializer::serialize() { >>> std::string result; >>> + unsigned long long tmpLastRejectedUpdate; >>> + std::stringstream tmp; >>> >>> result += "<userprofile>\n"; >>> >>> @@ -48,6 +51,11 @@ >>> result += sserializer.serialize(); >>> } >>> >>> + result += "<updates>\n<lastrejectedupdate>"; >>> + tmp << _userProfile.getLastRejectedUpdate(); >>> + result += tmp.str(); >>> + result += "</lastrejectedupdate>\n</updates>"; >>> + >>> result += "</userprofile>\n"; >>> >>> return result; >>> @@ -65,6 +73,16 @@ >>> >>> result = ProfileXMLSerializer::unserializeContent(userprofile); >>> if (result) { >>> + // Retrieving informations for softupdate >>> + TiXmlText * text = >>> >> userprofile.FirstChild("updates").FirstChild("lastrejectedupdate").FirstChild().Text(); >> >>> + unsigned long long lastRejectedUpdate; >>> + if (text) { >>> + std::stringstream ss(std::string(text->Value())); >>> + ss >> lastRejectedUpdate; >>> + _userProfile.setLastRejectedUpdate(lastRejectedUpdate); >>> + } >>> + ///// >>> + >>> // Retrieving wengoaccount >>> TiXmlNode * wengoaccount = userprofile.FirstChild("wengoaccount").Node(); >>> if (wengoaccount) { >>> diff -r 16afed46a4e9 -r 28123d22f364 >>> >> wengophone/src/model/webservices/softupdate/WsSoftUpdate.cpp >> >>> --- a/wengophone/src/model/webservices/softupdate/WsSoftUpdate.cpp Tue Jan >>> 20 >>> >> 16:47:33 2009 -0500 >> >>> +++ b/wengophone/src/model/webservices/softupdate/WsSoftUpdate.cpp Thu Jun >>> 18 >>> >> 11:21:14 2009 +0200 >> >>> @@ -31,23 +31,35 @@ >>> >>> #include <sstream> >>> >>> -WsSoftUpdate::WsSoftUpdate(WengoAccount * wengoAccount) >>> +#include <model/profile/UserProfile.h> >>> + >>> +WsSoftUpdate::WsSoftUpdate(WengoAccount * wengoAccount, UserProfile * >>> >> userProfile) >> >>> : WengoWebService(wengoAccount) { >>> >>> Config & config = ConfigManager::getInstance().getCurrentConfig(); >>> + _lastRejectedUpdate = userProfile->getLastRejectedUpdate(); >>> >>> //Setup the web service >>> setHostname(config.getWengoServerHostname()); >>> setGet(true); >>> - setHttps(true); >>> + if (config.getHttpsUpdatesEnabled()) { >>> + setHttps(true); >>> + setPort(443); >>> + } >>> + else { >>> + setHttps(false); >>> + setPort(80); >>> + } >>> setServicePath(config.getWengoSoftUpdatePath()); >>> setPort(443); >>> setWengoAuthentication(false); >>> } >>> >>> -void WsSoftUpdate::checkForUpdate() { >>> +void WsSoftUpdate::checkForUpdate(bool forced) { >>> std::string operatingSystem; >>> >>> + forcedUpdate = forced; >>> + >>> #ifdef OS_WINDOWS >>> operatingSystem = "windows"; >>> #elif defined (OS_MACOSX) >>> @@ -106,8 +118,9 @@ >>> ss >> fileSize; >>> } >>> >>> + // Gets the last rejected update buildId from user profile >>> >>> - if ((WengoPhoneBuildId::getBuildId() != 0) && (buildId > >>> >> WengoPhoneBuildId::getBuildId())) { >> >>> + if ((WengoPhoneBuildId::getBuildId() != 0) && (buildId > >>> >> WengoPhoneBuildId::getBuildId()) && ((buildId > _lastRejectedUpdate) || >> forcedUpdate)) { >> >>> //A new version of WengoPhone is available and we don't have a developer >>> >> version with buildid=0 >> >>> LOG_DEBUG("new WengoPhone version available=" + version + " buildid=" + >>> >> String::fromUnsignedLongLong(buildId)); >> >>> diff -r 16afed46a4e9 -r 28123d22f364 >>> >> wengophone/src/model/webservices/softupdate/WsSoftUpdate.h >> >>> --- a/wengophone/src/model/webservices/softupdate/WsSoftUpdate.h Tue Jan 20 >>> >> 16:47:33 2009 -0500 >> >>> +++ b/wengophone/src/model/webservices/softupdate/WsSoftUpdate.h Thu Jun 18 >>> >> 11:21:14 2009 +0200 >> >>> @@ -21,6 +21,7 @@ >>> #define OWWSSOFTUPDATE_H >>> >>> #include <model/webservices/WengoWebService.h> >>> +#include <model/profile/UserProfile.h> >>> >>> /** >>> * WengoPhone update web service. >>> @@ -37,7 +38,7 @@ >>> * >>> * @param wengoAccount the WengoAccount used for web services >>> */ >>> - WsSoftUpdate(WengoAccount * wengoAccount); >>> + WsSoftUpdate(WengoAccount * wengoAccount, UserProfile * userProfile); >>> >>> virtual ~WsSoftUpdate() {} >>> >>> @@ -59,14 +60,19 @@ >>> /** >>> * Checks if a WengoPhone update is available. >>> */ >>> - void checkForUpdate(); >>> + void checkForUpdate(bool forced); >>> >>> private: >>> + //Indicates whether the update check was done automatically or by menu >>> item >>> + bool forcedUpdate; >>> >>> /** >>> * @see WengoWebService >>> */ >>> void answerReceived(const std::string & answer, int id); >>> + >>> + //BuildId of last rejected update >>> + unsigned long long _lastRejectedUpdate; >>> }; >>> >>> #endif //OWWSSOFTUPDATE_H >>> diff -r 16afed46a4e9 -r 28123d22f364 >>> >> wengophone/src/presentation/qt/CMakeLists.txt >> >>> --- a/wengophone/src/presentation/qt/CMakeLists.txt Tue Jan 20 16:47:33 2009 >>> >> -0500 >> >>> +++ b/wengophone/src/presentation/qt/CMakeLists.txt Thu Jun 18 11:21:14 2009 >>> >> +0200 >> >>> @@ -421,6 +421,7 @@ >>> webservices/sms/SmsWindow.ui >>> webservices/softupdate/SoftUpdateWindow.ui >>> webservices/softupdate/BrowserSoftUpdateWindow.ui >>> + webservices/softupdate/DownloadUpdatesWindow.ui >>> >>> conference/ConferenceCallWidget.ui >>> >>> diff -r 16afed46a4e9 -r 28123d22f364 >>> >> wengophone/src/presentation/qt/QtToolBar.cpp >> >>> --- a/wengophone/src/presentation/qt/QtToolBar.cpp Tue Jan 20 16:47:33 2009 >>> >> -0500 >> >>> +++ b/wengophone/src/presentation/qt/QtToolBar.cpp Thu Jun 18 11:21:14 2009 >>> >> +0200 >> >>> @@ -52,10 +52,12 @@ >>> #include <model/phonecall/ConferenceCall.h> >>> #include <model/account/wengo/WengoAccount.h> >>> #include <model/profile/UserProfile.h> >>> +#include <model/profile/UserProfileHandler.h> >>> #include <model/history/History.h> >>> #include <model/config/ConfigManager.h> >>> #include <model/config/Config.h> >>> #include <model/config/EnumToolBarMode.h> >>> +#include <model/webservices/softupdate/WsSoftUpdate.h> >>> >>> #include <util/Logger.h> >>> >>> @@ -134,7 +136,7 @@ >>> //menuHelp >>> connectOrHide(WsUrl::Forum, _ui->actionShowWengoForum, this, >>> >> SLOT(showWengoForum())); >> >>> connectOrHide(WsUrl::FAQ, _ui->actionWengoFAQ, this, SLOT(showWengoFAQ())); >>> - SAFE_CONNECT(_ui->actionShowAbout, SIGNAL(triggered()), >>> SLOT(showAbout())); >>> + SAFE_CONNECT(_ui->actionCheckForUpdates, SIGNAL(triggered()), >>> >> SLOT(checkForUpdates())); >> >>> //menuTools >>> SAFE_CONNECT(_ui->actionShowConfig, SIGNAL(triggered()), >>> SLOT(showConfig())); >>> @@ -289,6 +291,11 @@ >>> qtAbout->getWidget()->show(); >>> } >>> >>> +void QtToolBar::checkForUpdates() { >>> + WsSoftUpdate * wsSoftUpdate = >>> >> _cWengoPhone.getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile()->getWsSoftUpdate(); >> >>> + wsSoftUpdate->checkForUpdate(true); >>> +} >>> + >>> void QtToolBar::sendSms() { >>> >>> CUserProfile * cuserprofile = >>> >> _cWengoPhone.getCUserProfileHandler().getCUserProfile(); >> >>> diff -r 16afed46a4e9 -r 28123d22f364 >>> >> wengophone/src/presentation/qt/QtToolBar.h >> >>> --- a/wengophone/src/presentation/qt/QtToolBar.h Tue Jan 20 16:47:33 2009 >>> >> -0500 >> >>> +++ b/wengophone/src/presentation/qt/QtToolBar.h Thu Jun 18 11:21:14 2009 >>> >> +0200 >> >>> @@ -79,6 +79,8 @@ >>> >>> void showAbout(); >>> >>> + void checkForUpdates(); >>> + >>> void sendSms(); >>> >>> void showWengoFAQ(); >>> diff -r 16afed46a4e9 -r 28123d22f364 >>> >> wengophone/src/presentation/qt/WengoPhoneWindow.ui >> >>> --- a/wengophone/src/presentation/qt/WengoPhoneWindow.ui Tue Jan 20 16:47:33 >>> >> 2009 -0500 >> >>> +++ b/wengophone/src/presentation/qt/WengoPhoneWindow.ui Thu Jun 18 11:21:14 >>> >> 2009 +0200 >> >>> @@ -102,6 +102,8 @@ >>> <addaction name="actionShowWengoForum" /> >>> <addaction name="actionWengoFAQ" /> >>> <addaction name="separator" /> >>> + <addaction name="actionCheckForUpdates" /> >>> + <addaction name="separator" /> >>> <addaction name="actionShowAbout" /> >>> </widget> >>> <widget class="QMenu" name="menuActions" > >>> @@ -475,6 +477,11 @@ >>> <string>&Hidden</string> >>> </property> >>> </action> >>> + <action name="actionCheckForUpdates" > >>> + <property name="text" > >>> + <string>Check f&or Updates...</string> >>> + </property> >>> + </action> >>> </widget> >>> <customwidgets> >>> <customwidget> >>> diff -r 16afed46a4e9 -r 28123d22f364 >>> >> wengophone/src/presentation/qt/lang/qtwengophone_cs.ts >> >>> --- a/wengophone/src/presentation/qt/lang/qtwengophone_cs.ts Tue Jan 20 >>> >> 16:47:33 2009 -0500 >> >>> +++ b/wengophone/src/presentation/qt/lang/qtwengophone_cs.ts Thu Jun 18 >>> >> 11:21:14 2009 +0200 >> >>> @@ -1109,6 +1109,35 @@ >>> </message> >>> </context> >>> <context> >>> + <name>DownloadUpdatesWindow</name> >>> + <message> >>> + <location filename="../webservices/softupdate/DownloadUpdatesWindow.ui" >>> >> line="13"/> >> >>> + <source>@product@ - Update available</source> >>> + <translation>@product@ - Jsou dostupn? aktualizace</translation> >>> + </message> >>> + <message> >>> + <location filename="../webservices/softupdate/DownloadUpdatesWindow.ui" >>> >> line="55"/> >> >>> + <source>An update is available. Do you want to download it? >>> + >>> +Version: %1 >>> +File Size: %2 (MB)</source> >>> + <translation>Jsou dostupn? aktualizace. Chcete je nyn? st?hnout? >>> + >>> +Verze: %1 >>> +Velikost souboru: %2 (MB)</translation> >>> + </message> >>> + <message> >>> + <location filename="../webservices/softupdate/DownloadUpdatesWindow.ui" >>> >> line="101"/> >> >>> + <source>Yes</source> >>> + <translation>Ano</translation> >>> + </message> >>> + <message> >>> + <location filename="../webservices/softupdate/DownloadUpdatesWindow.ui" >>> >> line="108"/> >> >>> + <source>No</source> >>> + <translation>Ne</translation> >>> + </message> >>> +</context> >>> +<context> >>> <name>EventWidget</name> >>> <message> >>> <location filename="../profilebar/EventWidget.ui" line="33"/> >>> @@ -4545,6 +4574,11 @@ >>> <translation>&O aplikaci</translation> >>> </message> >>> <message> >>> + <location filename="../WengoPhoneWindow.ui" line="519"/> >>> + <source>Check f&or Updates...</source> >>> + <translation>Zk&ontrolovat aktualizace</translation> >>> + </message> >>> + <message> >>> <location filename="../WengoPhoneWindow.ui" line="241"/> >>> <source>Add &Contact...</source> >>> <translation>P?idat &kontakt...</translation> >>> diff -r 16afed46a4e9 -r 28123d22f364 >>> >> wengophone/src/presentation/qt/webservices/softupdate/DownloadUpdatesWindow.ui >> >>> --- /dev/null Thu Jan 01 00:00:00 1970 +0000 >>> +++ >>> >> b/wengophone/src/presentation/qt/webservices/softupdate/DownloadUpdatesWindow.ui >> Thu Jun 18 11:21:14 2009 +0200 >> >>> @@ -0,0 +1,170 @@ >>> +<ui version="4.0" > >>> + <class>DownloadUpdatesWindow</class> >>> + <widget class="QDialog" name="DownloadUpdatesWindow" > >>> + <property name="geometry" > >>> + <rect> >>> + <x>0</x> >>> + <y>0</y> >>> + <width>365</width> >>> + <height>131</height> >>> + </rect> >>> + </property> >>> + <property name="windowTitle" > >>> + <string>@product@ - Update available</string> >>> + </property> >>> + <property name="sizeGripEnabled" > >>> + <bool>false</bool> >>> + </property> >>> + <layout class="QVBoxLayout" name="verticalLayout" > >>> + <item> >>> + <layout class="QGridLayout" name="gridLayout" > >>> + <property name="sizeConstraint" > >>> + <enum>QLayout::SetDefaultConstraint</enum> >>> + </property> >>> + <property name="spacing" > >>> + <number>6</number> >>> + </property> >>> + <item row="0" column="0" > >>> + <widget class="QLabel" name="label_2" > >>> + <property name="sizePolicy" > >>> + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > >>> + <horstretch>0</horstretch> >>> + <verstretch>0</verstretch> >>> + </sizepolicy> >>> + </property> >>> + <property name="text" > >>> + <string/> >>> + </property> >>> + <property name="pixmap" > >>> + <pixmap resource="../../../../../resources/wengophone.qrc" >>> :/pics/update.png</pixmap> >>> + </property> >>> + <property name="scaledContents" > >>> + <bool>false</bool> >>> + </property> >>> + </widget> >>> + </item> >>> + <item row="0" column="1" > >>> + <widget class="QLabel" name="updateTextLabel" > >>> + <property name="sizePolicy" > >>> + <sizepolicy vsizetype="Preferred" hsizetype="Preferred" > >>> + <horstretch>0</horstretch> >>> + <verstretch>0</verstretch> >>> + </sizepolicy> >>> + </property> >>> + <property name="text" > >>> + <string>An update is available. Do you want to download it? >>> + >>> +Version: %1 >>> +File Size: %2 (MB)</string> >>> + </property> >>> + <property name="textFormat" > >>> + <enum>Qt::PlainText</enum> >>> + </property> >>> + <property name="alignment" > >>> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> >>> + </property> >>> + <property name="indent" > >>> + <number>10</number> >>> + </property> >>> + </widget> >>> + </item> >>> + </layout> >>> + </item> >>> + <item> >>> + <spacer name="verticalSpacer" > >>> + <property name="orientation" > >>> + <enum>Qt::Vertical</enum> >>> + </property> >>> + <property name="sizeHint" stdset="0" > >>> + <size> >>> + <width>20</width> >>> + <height>8</height> >>> + </size> >>> + </property> >>> + </spacer> >>> + </item> >>> + <item> >>> + <layout class="QHBoxLayout" name="horizontalLayout" > >>> + <item> >>> + <spacer name="horizontalSpacer" > >>> + <property name="orientation" > >>> + <enum>Qt::Horizontal</enum> >>> + </property> >>> + <property name="sizeHint" stdset="0" > >>> + <size> >>> + <width>40</width> >>> + <height>20</height> >>> + </size> >>> + </property> >>> + </spacer> >>> + </item> >>> + <item> >>> + <widget class="QPushButton" name="yesButton" > >>> + <property name="text" > >>> + <string>Yes</string> >>> + </property> >>> + </widget> >>> + </item> >>> + <item> >>> + <widget class="QPushButton" name="noButton" > >>> + <property name="text" > >>> + <string>No</string> >>> + </property> >>> + </widget> >>> + </item> >>> + <item> >>> + <spacer name="horizontalSpacer_2" > >>> + <property name="orientation" > >>> + <enum>Qt::Horizontal</enum> >>> + </property> >>> + <property name="sizeHint" stdset="0" > >>> + <size> >>> + <width>40</width> >>> + <height>20</height> >>> + </size> >>> + </property> >>> + </spacer> >>> + </item> >>> + </layout> >>> + </item> >>> + </layout> >>> + </widget> >>> + <resources> >>> + <include location="../../../../../resources/wengophone.qrc" /> >>> + <include >>> >> location="../../../../../../../../../../../resources/wengophone.qrc" /> >> >>> + </resources> >>> + <connections> >>> + <connection> >>> + <sender>yesButton</sender> >>> + <signal>clicked()</signal> >>> + <receiver>DownloadUpdatesWindow</receiver> >>> + <slot>accept()</slot> >>> + <hints> >>> + <hint type="sourcelabel" > >>> + <x>140</x> >>> + <y>190</y> >>> + </hint> >>> + <hint type="destinationlabel" > >>> + <x>182</x> >>> + <y>135</y> >>> + </hint> >>> + </hints> >>> + </connection> >>> + <connection> >>> + <sender>noButton</sender> >>> + <signal>clicked()</signal> >>> + <receiver>DownloadUpdatesWindow</receiver> >>> + <slot>reject()</slot> >>> + <hints> >>> + <hint type="sourcelabel" > >>> + <x>225</x> >>> + <y>190</y> >>> + </hint> >>> + <hint type="destinationlabel" > >>> + <x>182</x> >>> + <y>135</y> >>> + </hint> >>> + </hints> >>> + </connection> >>> + </connections> >>> +</ui> >>> diff -r 16afed46a4e9 -r 28123d22f364 >>> >> wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp >> >>> --- a/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp >>> >> Tue Jan 20 16:47:33 2009 -0500 >> >>> +++ b/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp >>> >> Thu Jun 18 11:21:14 2009 +0200 >> >>> @@ -20,6 +20,7 @@ >>> #include "QtSoftUpdate.h" >>> >>> #include "ui_SoftUpdateWindow.h" >>> +#include "ui_DownloadUpdatesWindow.h" >>> >>> #include "QtBrowserSoftUpdate.h" >>> >>> @@ -39,6 +40,10 @@ >>> >>> #include <QtGui/QtGui> >>> >>> +#include <model/profile/UserProfileHandler.h> >>> +#include <control/profile/CUserProfileHandler.h> >>> +#include <model/profile/UserProfile.h> >>> + >>> static const char * UPDATE_PROGRAM = "update.exe"; >>> >>> QtSoftUpdate::QtSoftUpdate(CSoftUpdate & cSoftUpdate) >>> @@ -82,35 +87,28 @@ >>> const std::string & version, >>> unsigned fileSize) { >>> >>> -#ifdef OS_WINDOWS >>> - _softUpdateWindow = new QDialog(_qtWengoPhone->getWidget()); >>> + updDownloadUrl = downloadUrl; >>> + updBuildId = buildId; >>> + updVersion = version; >>> + updFileSize = fileSize; >>> + >>> + _downloadUpdatesWindow = new QDialog(_qtWengoPhone->getWidget()); >>> + >>> + _uiDownload = new Ui:ownloadUpdatesWindow(); >>> + _uiDownload->setupUi(_downloadUpdatesWindow); >>> + >>> + SAFE_CONNECT(_downloadUpdatesWindow, SIGNAL(accepted()), >>> >> SLOT(startDownload())); >> >>> + SAFE_CONNECT(_downloadUpdatesWindow, SIGNAL(rejected()), >>> >> SLOT(rejectUpdate())); >> >>> + >>> >>> - _ui = new Ui::SoftUpdateWindow(); >>> - _ui->setupUi(_softUpdateWindow); >>> - >>> - SAFE_CONNECT(_softUpdateWindow, SIGNAL(rejected()), >>> SLOT(abortDownload())); >>> - >>> + >>> //updateTextLabel >>> - _originalLabelText = _ui->updateTextLabel->text() >>> - .arg(QString::fromStdString(version)) >>> - .arg(QString::fromStdString(downloadUrl)) >>> - .arg(fileSize); >>> - _ui->updateTextLabel->setText(_originalLabelText); >>> - >>> - //Deletes previous update program >>> - QFile file(UPDATE_PROGRAM); >>> - file.remove(); >>> - file.close(); >>> - >>> - _softUpdater = new SoftUpdater(downloadUrl, UPDATE_PROGRAM); >>> - _softUpdater->dataReadProgressEvent += >>> >> boost::bind(&QtSoftUpdate::dataReadProgressEventHandler, this, _1, _2, _3); >> >>> - _softUpdater->downloadFinishedEvent += >>> >> boost::bind(&QtSoftUpdate::downloadFinishedEventHandler, this, _1); >> >>> - _softUpdater->start(); >>> - >>> - _softUpdateWindow->exec(); >>> -#else >>> - QtBrowserSoftUpdate(downloadUrl, buildId, version, fileSize, >>> >> _qtWengoPhone->getWidget()); >> >>> -#endif >>> + _originalLabelText = _uiDownload->updateTextLabel->text() >>> + .arg(QString::fromStdString(updVersion)) >>> + .arg(updFileSize); >>> + _uiDownload->updateTextLabel->setText(_originalLabelText); >>> + >>> + _downloadUpdatesWindow->exec(); >>> } >>> >>> void QtSoftUpdate::dataReadProgressEventHandler(double bytesDone, double >>> >> bytesTotal, unsigned downloadSpeed) { >> >>> @@ -151,10 +149,47 @@ >>> } >>> } >>> >>> +void QtSoftUpdate::rejectUpdate() { >>> + UserProfile * userprofile = >>> >> _cSoftUpdate.getCWengoPhone().getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile(); >> >>> + userprofile->setLastRejectedUpdate(updBuildId); >>> +} >>> + >>> void QtSoftUpdate::abortDownload() { >>> _softUpdater->abort(); >>> } >>> >>> +void QtSoftUpdate::startDownload() { >>> +#ifdef OS_WINDOWS >>> + _softUpdateWindow = new QDialog(_qtWengoPhone->getWidget()); >>> + >>> + _ui = new Ui::SoftUpdateWindow(); >>> + _ui->setupUi(_softUpdateWindow); >>> + >>> + SAFE_CONNECT(_softUpdateWindow, SIGNAL(rejected()), >>> SLOT(abortDownload())); >>> + >>> + //updateTextLabel >>> + _originalLabelText = _ui->updateTextLabel->text() >>> + .arg(QString::fromStdString(updVersion)) >>> + .arg(QString::fromStdString(updDownloadUrl)) >>> + .arg(updFileSize); >>> + _ui->updateTextLabel->setText(_originalLabelText); >>> + >>> + //Deletes previous update program >>> + QFile file(UPDATE_PROGRAM); >>> + file.remove(); >>> + file.close(); >>> + >>> + _softUpdater = new SoftUpdater(updDownloadUrl, UPDATE_PROGRAM); >>> + _softUpdater->dataReadProgressEvent += >>> >> boost::bind(&QtSoftUpdate::dataReadProgressEventHandler, this, _1, _2, _3); >> >>> + _softUpdater->downloadFinishedEvent += >>> >> boost::bind(&QtSoftUpdate::downloadFinishedEventHandler, this, _1); >> >>> + _softUpdater->start(); >>> + >>> + _softUpdateWindow->exec(); >>> +#else >>> + QtBrowserSoftUpdate(downloadUrl, buildId, version, fileSize, >>> >> _qtWengoPhone->getWidget()); >> >>> +#endif >>> +} >>> + >>> void QtSoftUpdate::launchUpdateProcess() { >>> QProcess * updateProcess = new QProcess(); >>> SAFE_CONNECT(updateProcess, SIGNAL(error(QProcess::ProcessError)), >>> >> SLOT(updateProcessError(QProcess::ProcessError))); >> >>> _______________________________________________ >>> QuteCom-dev mailing list >>> [email protected] >>> http://lists.qutecom.org/mailman/listinfo/qutecom-dev >>> >>> >> > _______________________________________________ > QuteCom-dev mailing list > [email protected] > http://lists.qutecom.org/mailman/listinfo/qutecom-dev > > > _______________________________________________ QuteCom-dev mailing list [email protected] http://lists.qutecom.org/mailman/listinfo/qutecom-dev
