LCOV - code coverage report
Current view: top level - core - qgsuserprofile.cpp (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 9 66 13.6 %
Date: 2021-04-10 08:29:14 Functions: 0 0 -
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /***************************************************************************
       2                 :            :                         qgsuserprofile.h
       3                 :            :      --------------------------------------
       4                 :            :     Date                 :  Jul-2017
       5                 :            :     Copyright            : (C) 2017 by Nathan Woodrow
       6                 :            :     Email                : woodrow.nathan at gmail dot com
       7                 :            :  ***************************************************************************
       8                 :            :  *                                                                         *
       9                 :            :  *   This program is free software; you can redistribute it and/or modify  *
      10                 :            :  *   it under the terms of the GNU General Public License as published by  *
      11                 :            :  *   the Free Software Foundation; either version 2 of the License, or     *
      12                 :            :  *   (at your option) any later version.                                   *
      13                 :            :  *                                                                         *
      14                 :            :  ***************************************************************************/
      15                 :            : 
      16                 :            : #include "qgsuserprofile.h"
      17                 :            : #include "qgsapplication.h"
      18                 :            : #include "qgssqliteutils.h"
      19                 :            : 
      20                 :            : #include <QDir>
      21                 :            : #include <QTextStream>
      22                 :            : #include <QSettings>
      23                 :            : #include <sqlite3.h>
      24                 :            : 
      25                 :          7 : QgsUserProfile::QgsUserProfile( const QString &folder )
      26                 :            : {
      27                 :          7 :   mProfileFolder = folder;
      28                 :          7 : }
      29                 :            : 
      30                 :         14 : const QString QgsUserProfile::folder() const
      31                 :            : {
      32                 :         14 :   return mProfileFolder;
      33                 :            : }
      34                 :            : 
      35                 :          0 : QgsError QgsUserProfile::validate() const
      36                 :            : {
      37                 :          0 :   QgsError error;
      38                 :          0 :   if ( !QDir( mProfileFolder ).exists() )
      39                 :            :   {
      40                 :          0 :     error.append( QObject::tr( "Profile folder doesn't exist" ) );
      41                 :          0 :   }
      42                 :          0 :   return error;
      43                 :          0 : }
      44                 :            : 
      45                 :          0 : const QString QgsUserProfile::name() const
      46                 :            : {
      47                 :          0 :   QDir dir( mProfileFolder );
      48                 :          0 :   return dir.dirName();
      49                 :          0 : }
      50                 :            : 
      51                 :          7 : void QgsUserProfile::initSettings() const
      52                 :            : {
      53                 :            :   // tell QSettings to use INI format and save the file in custom config path
      54                 :          7 :   QSettings::setDefaultFormat( QSettings::IniFormat );
      55                 :          7 :   QSettings::setPath( QSettings::IniFormat, QSettings::UserScope, folder() );
      56                 :          7 : }
      57                 :            : 
      58                 :          0 : const QString QgsUserProfile::alias() const
      59                 :            : {
      60                 :          0 :   const QString dbFile = qgisDB();
      61                 :          0 :   QString profileAlias = name();
      62                 :            : 
      63                 :            :   // Looks for qgis.db
      64                 :            :   // If it's not there we can just return name.
      65                 :          0 :   if ( !QFile::exists( dbFile ) )
      66                 :            :   {
      67                 :          0 :     return profileAlias;
      68                 :            :   }
      69                 :            : 
      70                 :          0 :   sqlite3_database_unique_ptr database;
      71                 :            : 
      72                 :            :   //check the db is available
      73                 :          0 :   int result = database.open( dbFile );
      74                 :          0 :   if ( result != SQLITE_OK )
      75                 :            :   {
      76                 :          0 :     return profileAlias;
      77                 :            :   }
      78                 :            : 
      79                 :          0 :   sqlite3_statement_unique_ptr preparedStatement = database.prepare( QStringLiteral( "SELECT value FROM tbl_config_variables WHERE variable = 'ALIAS'" ), result );
      80                 :          0 :   if ( result == SQLITE_OK )
      81                 :            :   {
      82                 :          0 :     if ( preparedStatement.step() == SQLITE_ROW )
      83                 :            :     {
      84                 :          0 :       QString alias = preparedStatement.columnAsText( 0 );
      85                 :          0 :       if ( !alias.isEmpty() )
      86                 :          0 :         profileAlias = alias;
      87                 :          0 :     }
      88                 :          0 :   }
      89                 :          0 :   return profileAlias;
      90                 :          0 : }
      91                 :            : 
      92                 :          0 : QgsError QgsUserProfile::setAlias( const QString &alias )
      93                 :            : {
      94                 :          0 :   QgsError error;
      95                 :          0 :   const QString dbFile = qgisDB();
      96                 :            : 
      97                 :            :   // Looks for qgis.db
      98                 :            :   // If it's not there we can just return name.
      99                 :          0 :   if ( !QFile::exists( dbFile ) )
     100                 :            :   {
     101                 :          0 :     error.append( QObject::tr( "qgis.db doesn't exist in the user's profile folder" ) );
     102                 :          0 :     return error;
     103                 :            :   }
     104                 :            : 
     105                 :          0 :   sqlite3_database_unique_ptr database;
     106                 :            : 
     107                 :            :   //check the db is available
     108                 :          0 :   int result = database.open( dbFile );
     109                 :          0 :   if ( result != SQLITE_OK )
     110                 :            :   {
     111                 :          0 :     error.append( QObject::tr( "Unable to open qgis.db for update." ) );
     112                 :          0 :     return error;
     113                 :            :   }
     114                 :            : 
     115                 :          0 :   const QString sql = QStringLiteral( "INSERT OR REPLACE INTO tbl_config_variables VALUES ('ALIAS', %1);" ).arg(
     116                 :          0 :                         QgsSqliteUtils::quotedString( alias ) );
     117                 :            : 
     118                 :          0 :   sqlite3_statement_unique_ptr preparedStatement = database.prepare( sql, result );
     119                 :          0 :   if ( result != SQLITE_OK || preparedStatement.step() != SQLITE_DONE )
     120                 :            :   {
     121                 :          0 :     error.append( QObject::tr( "Could not save alias to database: %1" ).arg( database.errorMessage() ) );
     122                 :          0 :   }
     123                 :            : 
     124                 :          0 :   return error;
     125                 :          0 : }
     126                 :            : 
     127                 :          0 : const QIcon QgsUserProfile::icon() const
     128                 :            : {
     129                 :          0 :   QString path = mProfileFolder + QDir::separator() + "icon.svg";
     130                 :          0 :   if ( !QDir( path ).exists() )
     131                 :            :   {
     132                 :          0 :     return QgsApplication::getThemeIcon( "user.svg" );
     133                 :            :   }
     134                 :          0 :   return QIcon( path );
     135                 :          0 : }
     136                 :            : 
     137                 :          0 : QString QgsUserProfile::qgisDB() const
     138                 :            : {
     139                 :          0 :   return mProfileFolder + QDir::separator() + "qgis.db";
     140                 :            : }

Generated by: LCOV version 1.14