QgsWelcomePage::QgsWelcomePage( QWidget* parent ) : QTabWidget( parent ) { QVBoxLayout* mainLayout = new QVBoxLayout; mainLayout->setMargin( 0 ); setLayout( mainLayout ); QHBoxLayout* layout = new QHBoxLayout(); layout->setMargin( 9 ); mainLayout->addLayout( layout ); QWidget* recentProjctsContainer = new QWidget; recentProjctsContainer->setLayout( new QVBoxLayout ); QLabel* recentProjectsTitle = new QLabel( QString( "<h1>%1</h1>" ).arg( tr( "Recent Projects" ) ) ); recentProjctsContainer->layout()->addWidget( recentProjectsTitle ); QListView* recentProjectsListView = new QListView(); mModel = new QgsWelcomePageItemsModel( recentProjectsListView ); recentProjectsListView->setModel( mModel ); recentProjectsListView->setItemDelegate( new QgsWelcomePageItemDelegate( recentProjectsListView ) ); recentProjctsContainer->layout()->addWidget( recentProjectsListView ); addTab( recentProjctsContainer, "Recent Projects" ); QWidget* whatsNewContainer = new QWidget; whatsNewContainer->setLayout( new QVBoxLayout ); QLabel* whatsNewTitle = new QLabel( QString( "<h1>%1</h1>" ).arg( tr( "QGIS News" ) ) ); whatsNewContainer->layout()->addWidget( whatsNewTitle ); QgsWebView* whatsNewPage = new QgsWebView(); whatsNewPage->setUrl( QUrl::fromLocalFile( QgsApplication::whatsNewFilePath() ) ); whatsNewPage->page()->setLinkDelegationPolicy( QWebPage::DelegateAllLinks ); whatsNewPage->setContextMenuPolicy( Qt::NoContextMenu ); whatsNewPage->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ); whatsNewPage->setStyleSheet( "background:transparent" ); whatsNewPage->setAttribute( Qt::WA_TranslucentBackground ); whatsNewContainer->layout()->addWidget( whatsNewPage ); // whatsNewContainer->setMaximumWidth( 250 ); // whatsNewContainer->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Preferred ); addTab( whatsNewContainer, "News" ); connect( whatsNewPage, SIGNAL( linkClicked( QUrl ) ), this, SLOT( whatsNewLinkClicked( QUrl ) ) ); mVersionInformation = new QLabel; mainLayout->addWidget( mVersionInformation ); mVersionInformation->setVisible( false ); mVersionInfo = new QgsVersionInfo(); connect( mVersionInfo, SIGNAL( versionInfoAvailable() ), this, SLOT( versionInfoReceived() ) ); mVersionInfo->checkVersion(); connect( recentProjectsListView, SIGNAL( activated( QModelIndex ) ), this, SLOT( itemActivated( QModelIndex ) ) ); }
void QgsVersionInfo::versionReplyFinished() { QNetworkReply *reply = qobject_cast<QNetworkReply *>( sender() ); Q_ASSERT( reply ); mError = reply->error(); mErrorString = reply->errorString(); if ( mError == QNetworkReply::NoError ) { QString versionMessage = reply->readAll(); // strip the header QString contentFlag = QStringLiteral( "#QGIS Version" ); int pos = versionMessage.indexOf( contentFlag ); if ( pos > -1 ) { pos += contentFlag.length(); versionMessage = versionMessage.mid( pos ); QStringList parts = versionMessage.split( '|', QString::SkipEmptyParts ); // check the version from the server against our version mLatestVersion = parts[0].toInt(); mDownloadInfo = parts.value( 1 ); mAdditionalHtml = parts.value( 2 ); } } // get error type switch ( mError ) { case QNetworkReply::ConnectionRefusedError: mErrorString = tr( "Connection refused - server may be down" ); break; case QNetworkReply::HostNotFoundError: mErrorString = tr( "The host name %1 could not be resolved. Check your DNS settings or contact your system administrator." ).arg( reply->request().url().host() ); break; case QNetworkReply::NoError: mErrorString = QLatin1String( "" ); break; default: mErrorString = reply->errorString(); break; } reply->deleteLater(); emit versionInfoAvailable(); }
QgsWelcomePage::QgsWelcomePage( bool skipVersionCheck, QWidget* parent ) : QWidget( parent ) { QSettings settings; QVBoxLayout* mainLayout = new QVBoxLayout; mainLayout->setMargin( 0 ); setLayout( mainLayout ); QHBoxLayout* layout = new QHBoxLayout(); layout->setMargin( 9 ); mainLayout->addLayout( layout ); QWidget* recentProjctsContainer = new QWidget; recentProjctsContainer->setLayout( new QVBoxLayout ); recentProjctsContainer->layout()->setContentsMargins( 3, 3, 3, 0 ); QLabel* recentProjectsTitle = new QLabel( QString( "<h1>%1</h1>" ).arg( tr( "Recent Projects" ) ) ); recentProjctsContainer->layout()->addWidget( recentProjectsTitle ); QListView* recentProjectsListView = new QListView(); recentProjectsListView->setResizeMode( QListView::Adjust ); mModel = new QgsWelcomePageItemsModel( recentProjectsListView ); recentProjectsListView->setModel( mModel ); recentProjectsListView->setItemDelegate( new QgsWelcomePageItemDelegate( recentProjectsListView ) ); recentProjctsContainer->layout()->addWidget( recentProjectsListView ); layout->addWidget( recentProjctsContainer ); mVersionInformation = new QLabel; mainLayout->addWidget( mVersionInformation ); mVersionInformation->setVisible( false ); mVersionInfo = new QgsVersionInfo(); if ( !QgsApplication::isRunningFromBuildDir() && settings.value( "/qgis/checkVersion", true ).toBool() && !skipVersionCheck ) { connect( mVersionInfo, SIGNAL( versionInfoAvailable() ), this, SLOT( versionInfoReceived() ) ); mVersionInfo->checkVersion(); } connect( recentProjectsListView, SIGNAL( activated( QModelIndex ) ), this, SLOT( itemActivated( QModelIndex ) ) ); }