Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to make full screen
Forum Updated to NodeBB v4.3 + New Features

How to make full screen

Scheduled Pinned Locked Moved Solved General and Desktop
11 Posts 2 Posters 4.7k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • serkan_trS Offline
    serkan_trS Offline
    serkan_tr
    wrote on last edited by
    #1

    I am working on an open source project. When I opened the project on the tablet, it first took up the whole screen. I threw format on the tablet and installed windows 10 myself, this time the application does not open in full screen
    When you look at the QT codes, if it is mobile or if the screen is small, it takes full screen mode, although I close this part on the qml side, it does not cover the entire screen.
    I'll post the codes as comments.
    thank you in advance for the help

    serkan_trS 1 Reply Last reply
    0
    • serkan_trS serkan_tr

      I am working on an open source project. When I opened the project on the tablet, it first took up the whole screen. I threw format on the tablet and installed windows 10 myself, this time the application does not open in full screen
      When you look at the QT codes, if it is mobile or if the screen is small, it takes full screen mode, although I close this part on the qml side, it does not cover the entire screen.
      I'll post the codes as comments.
      thank you in advance for the help

      serkan_trS Offline
      serkan_trS Offline
      serkan_tr
      wrote on last edited by
      #2

      @serkan_tr main.cpp

      
      int main(int argc, char *argv[])
      {
      
          rclcpp::init(argc, argv);
          #ifndef __mobile__
              QString runguardString(QGC_APPLICATION_NAME);
              runguardString.append("RunGuardKey");
      
              RunGuard guard(runguardString);
              if (!guard.tryToRun()) {
                  // QApplication is necessary to use QMessageBox
                  QApplication errorApp(argc, argv);
                  QMessageBox::critical(nullptr, QObject::tr("Error"),
                      QObject::tr("A second instance of %1 is already running. Please close the other instance and try again.").arg(QGC_APPLICATION_NAME)
                  );
                  return -1;
              }
          #endif
      
              //-- Record boot time
              QGC::initTimer();
      
          #ifdef Q_OS_UNIX
              //Force writing to the console on UNIX/BSD devices
              if (!qEnvironmentVariableIsSet("QT_LOGGING_TO_CONSOLE"))
                  qputenv("QT_LOGGING_TO_CONSOLE", "1");
          #endif
      
              // install the message handler
              AppMessages::installHandler();
      
      
      
          #ifdef Q_OS_WIN
              // Set our own OpenGL buglist
              qputenv("QT_OPENGL_BUGLIST", ":/opengl/resources/opengl/buglist.json");
      
              // Allow for command line override of renderer
              for (int i = 0; i < argc; i++) {
                  const QString arg(argv[i]);
                  if (arg == QStringLiteral("-angle")) {
                      QCoreApplication::setAttribute(Qt::AA_UseOpenGLES);
                      break;
                  } else if (arg == QStringLiteral("-swrast")) {
                      QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL);
                      break;
                  }
              }
          #endif
      
      
          #ifndef NO_SERIAL_LINK
              qRegisterMetaType<QSerialPort::SerialPortError>();
          #endif
          #ifdef QGC_ENABLE_BLUETOOTH
              qRegisterMetaType<QBluetoothSocket::SocketError>();
              qRegisterMetaType<QBluetoothServiceInfo>();
          #endif
              qRegisterMetaType<QAbstractSocket::SocketError>();
              qRegisterMetaType<Vehicle::MavCmdResultFailureCode_t>("Vehicle::MavCmdResultFailureCode_t");
      
              // We statically link our own QtLocation plugin
      
          #ifdef Q_OS_WIN
              // In Windows, the compiler doesn't see the use of the class created by Q_IMPORT_PLUGIN
          #pragma warning( disable : 4930 4101 )
          #endif
      
          Q_IMPORT_PLUGIN(QGeoServiceProviderFactoryQGC)
      
          bool runUnitTests = false;          // Run unit tests
      
      
          QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
          QGCApplication* app = new QGCApplication(argc, argv, runUnitTests);
          Q_CHECK_PTR(app);
          if(app->isErrorState()) {
              app->exec();
              return -1;
          }
      
          // #ifdef Q_OS_LINUX
      
          QApplication::setWindowIcon(QIcon(":/res/resources/icons/qgroundcontrol.ico"));
          getQGCMapEngine()->init();
          qRegisterMetaType<QList<QPair<QByteArray,QByteArray> > >();
          app->_initCommon();
      
          int exitCode = 0;
          {
          #ifdef UNITTEST_BUILD
              if (runUnitTests) {
                  for (int i=0; i < (stressUnitTests ? 20 : 1); i++) {
                      if (!app->_initForUnitTests()) {
                          return -1;
                      }
      
                      // Run the test
                      int failures = UnitTest::run(unitTestOptions);
                      if (failures == 0) {
                          qDebug() << "ALL TESTS PASSED";
                          exitCode = 0;
                      } else {
                          qDebug() << failures << " TESTS FAILED!";
                          exitCode = -failures;
                          break;
                      }
                  }
              } else
          #endif
          }
      
          {
      
          #ifdef __android__
                  checkAndroidWritePermission();
          #endif
              if (!app->_initForNormalAppBoot()) {
                  return -1;
              }
              exitCode = app->exec();
          }
      
          app->_shutdown();
          delete app;
          //-- Shutdown Cache System
          destroyMapEngine();
      
          rclcpp::shutdown();
      
          qDebug() << "After app delete";
          return exitCode;
      }
      
      
      serkan_trS JoeCFDJ 2 Replies Last reply
      0
      • serkan_trS serkan_tr

        @serkan_tr main.cpp

        
        int main(int argc, char *argv[])
        {
        
            rclcpp::init(argc, argv);
            #ifndef __mobile__
                QString runguardString(QGC_APPLICATION_NAME);
                runguardString.append("RunGuardKey");
        
                RunGuard guard(runguardString);
                if (!guard.tryToRun()) {
                    // QApplication is necessary to use QMessageBox
                    QApplication errorApp(argc, argv);
                    QMessageBox::critical(nullptr, QObject::tr("Error"),
                        QObject::tr("A second instance of %1 is already running. Please close the other instance and try again.").arg(QGC_APPLICATION_NAME)
                    );
                    return -1;
                }
            #endif
        
                //-- Record boot time
                QGC::initTimer();
        
            #ifdef Q_OS_UNIX
                //Force writing to the console on UNIX/BSD devices
                if (!qEnvironmentVariableIsSet("QT_LOGGING_TO_CONSOLE"))
                    qputenv("QT_LOGGING_TO_CONSOLE", "1");
            #endif
        
                // install the message handler
                AppMessages::installHandler();
        
        
        
            #ifdef Q_OS_WIN
                // Set our own OpenGL buglist
                qputenv("QT_OPENGL_BUGLIST", ":/opengl/resources/opengl/buglist.json");
        
                // Allow for command line override of renderer
                for (int i = 0; i < argc; i++) {
                    const QString arg(argv[i]);
                    if (arg == QStringLiteral("-angle")) {
                        QCoreApplication::setAttribute(Qt::AA_UseOpenGLES);
                        break;
                    } else if (arg == QStringLiteral("-swrast")) {
                        QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL);
                        break;
                    }
                }
            #endif
        
        
            #ifndef NO_SERIAL_LINK
                qRegisterMetaType<QSerialPort::SerialPortError>();
            #endif
            #ifdef QGC_ENABLE_BLUETOOTH
                qRegisterMetaType<QBluetoothSocket::SocketError>();
                qRegisterMetaType<QBluetoothServiceInfo>();
            #endif
                qRegisterMetaType<QAbstractSocket::SocketError>();
                qRegisterMetaType<Vehicle::MavCmdResultFailureCode_t>("Vehicle::MavCmdResultFailureCode_t");
        
                // We statically link our own QtLocation plugin
        
            #ifdef Q_OS_WIN
                // In Windows, the compiler doesn't see the use of the class created by Q_IMPORT_PLUGIN
            #pragma warning( disable : 4930 4101 )
            #endif
        
            Q_IMPORT_PLUGIN(QGeoServiceProviderFactoryQGC)
        
            bool runUnitTests = false;          // Run unit tests
        
        
            QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
            QGCApplication* app = new QGCApplication(argc, argv, runUnitTests);
            Q_CHECK_PTR(app);
            if(app->isErrorState()) {
                app->exec();
                return -1;
            }
        
            // #ifdef Q_OS_LINUX
        
            QApplication::setWindowIcon(QIcon(":/res/resources/icons/qgroundcontrol.ico"));
            getQGCMapEngine()->init();
            qRegisterMetaType<QList<QPair<QByteArray,QByteArray> > >();
            app->_initCommon();
        
            int exitCode = 0;
            {
            #ifdef UNITTEST_BUILD
                if (runUnitTests) {
                    for (int i=0; i < (stressUnitTests ? 20 : 1); i++) {
                        if (!app->_initForUnitTests()) {
                            return -1;
                        }
        
                        // Run the test
                        int failures = UnitTest::run(unitTestOptions);
                        if (failures == 0) {
                            qDebug() << "ALL TESTS PASSED";
                            exitCode = 0;
                        } else {
                            qDebug() << failures << " TESTS FAILED!";
                            exitCode = -failures;
                            break;
                        }
                    }
                } else
            #endif
            }
        
            {
        
            #ifdef __android__
                    checkAndroidWritePermission();
            #endif
                if (!app->_initForNormalAppBoot()) {
                    return -1;
                }
                exitCode = app->exec();
            }
        
            app->_shutdown();
            delete app;
            //-- Shutdown Cache System
            destroyMapEngine();
        
            rclcpp::shutdown();
        
            qDebug() << "After app delete";
            return exitCode;
        }
        
        
        serkan_trS Offline
        serkan_trS Offline
        serkan_tr
        wrote on last edited by
        #3

        @serkan_tr QGCApplication.cpp

        
        class FinishVideoInitialization : public QRunnable
        {
        public:
          FinishVideoInitialization(VideoManager* manager)
              : _manager(manager)
          {}
        
          void run () {
              _manager->_initVideo();
          }
        
        private:
          VideoManager* _manager;
        };
        
        
        QGCApplication* QGCApplication::_app = nullptr;
        
        const char* QGCApplication::_deleteAllSettingsKey           = "DeleteAllSettingsNextBoot";
        const char* QGCApplication::_settingsVersionKey             = "SettingsVersion";
        
        // Mavlink status structures for entire app
        mavlink_status_t m_mavlink_status[MAVLINK_COMM_NUM_BUFFERS];
        
        // Qml Singleton factories
        
        static QObject* screenToolsControllerSingletonFactory(QQmlEngine*, QJSEngine*)
        {
            ScreenToolsController* screenToolsController = new ScreenToolsController;
            return screenToolsController;
        }
        
        static QObject* mavlinkSingletonFactory(QQmlEngine*, QJSEngine*)
        {
            return new QGCMAVLink();
        }
        
        static QObject* qgroundcontrolQmlGlobalSingletonFactory(QQmlEngine*, QJSEngine*)
        {
            // We create this object as a QGCTool even though it isn't in the toolbox
            QGroundControlQmlGlobal* qmlGlobal = new QGroundControlQmlGlobal(qgcApp(), qgcApp()->toolbox());
            qmlGlobal->setToolbox(qgcApp()->toolbox());
        
            return qmlGlobal;
        }
        
        static QObject* shapeFileHelperSingletonFactory(QQmlEngine*, QJSEngine*)
        {
            return new ShapeFileHelper;
        }
        
        QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting)
            : QApplication          (argc, argv)
            , _runningUnitTests     (unitTesting)
        {
            _app = this;
            _msecsElapsedTime.start();
        
        #ifdef Q_OS_LINUX
        #ifndef __mobile__
            if (!_runningUnitTests) {
                if (getuid() == 0) {
                    _exitWithError(QString(
                        tr("You are running %1 as root. "
                            "You should not do this since it will cause other issues with %1."
                            "%1 will now exit.<br/><br/>"
                            "If you are having serial port issues on Ubuntu, execute the following commands to fix most issues:<br/>"
                            "<pre>sudo usermod -a -G dialout $USER<br/>"
                            "sudo apt-get remove modemmanager</pre>").arg(qgcApp()->applicationName())));
                    return;
                }
                // Determine if we have the correct permissions to access USB serial devices
                QFile permFile("/etc/group");
                if(permFile.open(QIODevice::ReadOnly)) {
                    while(!permFile.atEnd()) {
                        QString line = permFile.readLine();
                        if (line.contains("dialout") && !line.contains(getenv("USER"))) {
                            permFile.close();
                            _exitWithError(QString(
                                tr("The current user does not have the correct permissions to access serial devices. "
                                   "You should also remove modemmanager since it also interferes.<br/><br/>"
                                   "If you are using Ubuntu, execute the following commands to fix these issues:<br/>"
                                   "<pre>sudo usermod -a -G dialout $USER<br/>"
                                   "sudo apt-get remove modemmanager</pre>")));
                            return;
                        }
                    }
                    permFile.close();
                }
        
                // Always set style to default, this way QT_QUICK_CONTROLS_STYLE environment variable doesn't cause random changes in ui
                QQuickStyle::setStyle("Default");
            }
        #endif
        #endif
        
            // Setup for network proxy support
            QNetworkProxyFactory::setUseSystemConfiguration(true);
        
            // Parse command line options
        
            bool fClearSettingsOptions = false; // Clear stored settings
            bool fClearCache = false;           // Clear parameter/airframe caches
            bool logging = false;               // Turn on logging
            QString loggingOptions;
        
            CmdLineOpt_t rgCmdLineOptions[] = {
                { "--clear-settings",   &fClearSettingsOptions, nullptr },
                { "--clear-cache",      &fClearCache,           nullptr },
                { "--logging",          &logging,               &loggingOptions },
                { "--fake-mobile",      &_fakeMobile,           nullptr },
                { "--log-output",       &_logOutput,            nullptr },
                // Add additional command line option flags here
            };
        
            ParseCmdLineOptions(argc, argv, rgCmdLineOptions, sizeof(rgCmdLineOptions)/sizeof(rgCmdLineOptions[0]), false);
        
            // Set up timer for delayed missing fact display
            _missingParamsDelayedDisplayTimer.setSingleShot(true);
            _missingParamsDelayedDisplayTimer.setInterval(_missingParamsDelayedDisplayTimerTimeout);
            connect(&_missingParamsDelayedDisplayTimer, &QTimer::timeout, this, &QGCApplication::_missingParamsDisplay);
        
            // Set application information
            QString applicationName;
            if (_runningUnitTests) {
                // We don't want unit tests to use the same QSettings space as the normal app. So we tweak the app
                // name. Also we want to run unit tests with clean settings every time.
                applicationName = QStringLiteral("%1_unittest").arg(QGC_APPLICATION_NAME);
            } else {
        #ifdef DAILY_BUILD
                // This gives daily builds their own separate settings space. Allowing you to use daily and stable builds
                // side by side without daily screwing up your stable settings.
                applicationName = QStringLiteral("%1 Daily").arg(QGC_APPLICATION_NAME);
        #else
                applicationName = QGC_APPLICATION_NAME;
        #endif
            }
            setApplicationName(applicationName);
            setOrganizationName(QGC_ORG_NAME);
            setOrganizationDomain(QGC_ORG_DOMAIN);
        
            this->setApplicationVersion(QString(APP_VERSION_STR));
        
            // Set settings format
            QSettings::setDefaultFormat(QSettings::IniFormat);
            QSettings settings;
            qDebug() << "*******Settings location" << settings.fileName() << "Is writable?:" << settings.isWritable();
        
        #ifdef UNITTEST_BUILD
            if (!settings.isWritable()) {
                qWarning() << "Setings location is not writable";
            }
        #endif
            // The setting will delete all settings on this boot
            fClearSettingsOptions |= settings.contains(_deleteAllSettingsKey);
        
            if (_runningUnitTests) {
                // Unit tests run with clean settings
                fClearSettingsOptions = true;
            }
        
            if (fClearSettingsOptions) {
                // User requested settings to be cleared on command line
                settings.clear();
        
                // Clear parameter cache
                QDir paramDir(ParameterManager::parameterCacheDir());
                paramDir.removeRecursively();
                paramDir.mkpath(paramDir.absolutePath());
            } else {
                // Determine if upgrade message for settings version bump is required. Check and clear must happen before toolbox is started since
                // that will write some settings.
                if (settings.contains(_settingsVersionKey)) {
                    if (settings.value(_settingsVersionKey).toInt() != QGC_SETTINGS_VERSION) {
                        settings.clear();
                        _settingsUpgraded = true;
                    }
                }
            }
            settings.setValue(_settingsVersionKey, QGC_SETTINGS_VERSION);
        
            if (fClearCache) {
                QDir dir(ParameterManager::parameterCacheDir());
                dir.removeRecursively();
                QFile airframe(cachedAirframeMetaDataFile());
                airframe.remove();
                QFile parameter(cachedParameterMetaDataFile());
                parameter.remove();
            }
        
            // Set up our logging filters
            QGCLoggingCategoryRegister::instance()->setFilterRulesFromSettings(loggingOptions);
        
            // Initialize Bluetooth
        #ifdef QGC_ENABLE_BLUETOOTH
            QBluetoothLocalDevice localDevice;
            if (localDevice.isValid())
            {
                _bluetoothAvailable = true;
            }
        #endif
        
            // Gstreamer debug settings
            int gstDebugLevel = 0;
            if (settings.contains(AppSettings::gstDebugLevelName)) {
                gstDebugLevel = settings.value(AppSettings::gstDebugLevelName).toInt();
            }
        
        #if defined(QGC_GST_STREAMING)
            // Initialize Video Receiver
            GStreamer::initialize(argc, argv, gstDebugLevel);
        #else
            Q_UNUSED(gstDebugLevel)
        #endif
        
            // We need to set language as early as possible prior to loading on JSON files.
            setLanguage();
        
            _toolbox = new QGCToolbox(this);
            _toolbox->setChildToolboxes();
        
        #ifndef __mobile__
            _gpsRtkFactGroup = new GPSRTKFactGroup(this);
           GPSManager *gpsManager = _toolbox->gpsManager();
           if (gpsManager) {
               connect(gpsManager, &GPSManager::onConnect,          this, &QGCApplication::_onGPSConnect);
               connect(gpsManager, &GPSManager::onDisconnect,       this, &QGCApplication::_onGPSDisconnect);
               connect(gpsManager, &GPSManager::surveyInStatus,     this, &QGCApplication::_gpsSurveyInStatus);
               connect(gpsManager, &GPSManager::satelliteUpdate,    this, &QGCApplication::_gpsNumSatellites);
           }
        #endif /* __mobile__ */
            _checkForNewVersion();
        }
        
        

        Just step the constructor part because the code is too long

        serkan_trS 1 Reply Last reply
        0
        • serkan_trS serkan_tr

          @serkan_tr QGCApplication.cpp

          
          class FinishVideoInitialization : public QRunnable
          {
          public:
            FinishVideoInitialization(VideoManager* manager)
                : _manager(manager)
            {}
          
            void run () {
                _manager->_initVideo();
            }
          
          private:
            VideoManager* _manager;
          };
          
          
          QGCApplication* QGCApplication::_app = nullptr;
          
          const char* QGCApplication::_deleteAllSettingsKey           = "DeleteAllSettingsNextBoot";
          const char* QGCApplication::_settingsVersionKey             = "SettingsVersion";
          
          // Mavlink status structures for entire app
          mavlink_status_t m_mavlink_status[MAVLINK_COMM_NUM_BUFFERS];
          
          // Qml Singleton factories
          
          static QObject* screenToolsControllerSingletonFactory(QQmlEngine*, QJSEngine*)
          {
              ScreenToolsController* screenToolsController = new ScreenToolsController;
              return screenToolsController;
          }
          
          static QObject* mavlinkSingletonFactory(QQmlEngine*, QJSEngine*)
          {
              return new QGCMAVLink();
          }
          
          static QObject* qgroundcontrolQmlGlobalSingletonFactory(QQmlEngine*, QJSEngine*)
          {
              // We create this object as a QGCTool even though it isn't in the toolbox
              QGroundControlQmlGlobal* qmlGlobal = new QGroundControlQmlGlobal(qgcApp(), qgcApp()->toolbox());
              qmlGlobal->setToolbox(qgcApp()->toolbox());
          
              return qmlGlobal;
          }
          
          static QObject* shapeFileHelperSingletonFactory(QQmlEngine*, QJSEngine*)
          {
              return new ShapeFileHelper;
          }
          
          QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting)
              : QApplication          (argc, argv)
              , _runningUnitTests     (unitTesting)
          {
              _app = this;
              _msecsElapsedTime.start();
          
          #ifdef Q_OS_LINUX
          #ifndef __mobile__
              if (!_runningUnitTests) {
                  if (getuid() == 0) {
                      _exitWithError(QString(
                          tr("You are running %1 as root. "
                              "You should not do this since it will cause other issues with %1."
                              "%1 will now exit.<br/><br/>"
                              "If you are having serial port issues on Ubuntu, execute the following commands to fix most issues:<br/>"
                              "<pre>sudo usermod -a -G dialout $USER<br/>"
                              "sudo apt-get remove modemmanager</pre>").arg(qgcApp()->applicationName())));
                      return;
                  }
                  // Determine if we have the correct permissions to access USB serial devices
                  QFile permFile("/etc/group");
                  if(permFile.open(QIODevice::ReadOnly)) {
                      while(!permFile.atEnd()) {
                          QString line = permFile.readLine();
                          if (line.contains("dialout") && !line.contains(getenv("USER"))) {
                              permFile.close();
                              _exitWithError(QString(
                                  tr("The current user does not have the correct permissions to access serial devices. "
                                     "You should also remove modemmanager since it also interferes.<br/><br/>"
                                     "If you are using Ubuntu, execute the following commands to fix these issues:<br/>"
                                     "<pre>sudo usermod -a -G dialout $USER<br/>"
                                     "sudo apt-get remove modemmanager</pre>")));
                              return;
                          }
                      }
                      permFile.close();
                  }
          
                  // Always set style to default, this way QT_QUICK_CONTROLS_STYLE environment variable doesn't cause random changes in ui
                  QQuickStyle::setStyle("Default");
              }
          #endif
          #endif
          
              // Setup for network proxy support
              QNetworkProxyFactory::setUseSystemConfiguration(true);
          
              // Parse command line options
          
              bool fClearSettingsOptions = false; // Clear stored settings
              bool fClearCache = false;           // Clear parameter/airframe caches
              bool logging = false;               // Turn on logging
              QString loggingOptions;
          
              CmdLineOpt_t rgCmdLineOptions[] = {
                  { "--clear-settings",   &fClearSettingsOptions, nullptr },
                  { "--clear-cache",      &fClearCache,           nullptr },
                  { "--logging",          &logging,               &loggingOptions },
                  { "--fake-mobile",      &_fakeMobile,           nullptr },
                  { "--log-output",       &_logOutput,            nullptr },
                  // Add additional command line option flags here
              };
          
              ParseCmdLineOptions(argc, argv, rgCmdLineOptions, sizeof(rgCmdLineOptions)/sizeof(rgCmdLineOptions[0]), false);
          
              // Set up timer for delayed missing fact display
              _missingParamsDelayedDisplayTimer.setSingleShot(true);
              _missingParamsDelayedDisplayTimer.setInterval(_missingParamsDelayedDisplayTimerTimeout);
              connect(&_missingParamsDelayedDisplayTimer, &QTimer::timeout, this, &QGCApplication::_missingParamsDisplay);
          
              // Set application information
              QString applicationName;
              if (_runningUnitTests) {
                  // We don't want unit tests to use the same QSettings space as the normal app. So we tweak the app
                  // name. Also we want to run unit tests with clean settings every time.
                  applicationName = QStringLiteral("%1_unittest").arg(QGC_APPLICATION_NAME);
              } else {
          #ifdef DAILY_BUILD
                  // This gives daily builds their own separate settings space. Allowing you to use daily and stable builds
                  // side by side without daily screwing up your stable settings.
                  applicationName = QStringLiteral("%1 Daily").arg(QGC_APPLICATION_NAME);
          #else
                  applicationName = QGC_APPLICATION_NAME;
          #endif
              }
              setApplicationName(applicationName);
              setOrganizationName(QGC_ORG_NAME);
              setOrganizationDomain(QGC_ORG_DOMAIN);
          
              this->setApplicationVersion(QString(APP_VERSION_STR));
          
              // Set settings format
              QSettings::setDefaultFormat(QSettings::IniFormat);
              QSettings settings;
              qDebug() << "*******Settings location" << settings.fileName() << "Is writable?:" << settings.isWritable();
          
          #ifdef UNITTEST_BUILD
              if (!settings.isWritable()) {
                  qWarning() << "Setings location is not writable";
              }
          #endif
              // The setting will delete all settings on this boot
              fClearSettingsOptions |= settings.contains(_deleteAllSettingsKey);
          
              if (_runningUnitTests) {
                  // Unit tests run with clean settings
                  fClearSettingsOptions = true;
              }
          
              if (fClearSettingsOptions) {
                  // User requested settings to be cleared on command line
                  settings.clear();
          
                  // Clear parameter cache
                  QDir paramDir(ParameterManager::parameterCacheDir());
                  paramDir.removeRecursively();
                  paramDir.mkpath(paramDir.absolutePath());
              } else {
                  // Determine if upgrade message for settings version bump is required. Check and clear must happen before toolbox is started since
                  // that will write some settings.
                  if (settings.contains(_settingsVersionKey)) {
                      if (settings.value(_settingsVersionKey).toInt() != QGC_SETTINGS_VERSION) {
                          settings.clear();
                          _settingsUpgraded = true;
                      }
                  }
              }
              settings.setValue(_settingsVersionKey, QGC_SETTINGS_VERSION);
          
              if (fClearCache) {
                  QDir dir(ParameterManager::parameterCacheDir());
                  dir.removeRecursively();
                  QFile airframe(cachedAirframeMetaDataFile());
                  airframe.remove();
                  QFile parameter(cachedParameterMetaDataFile());
                  parameter.remove();
              }
          
              // Set up our logging filters
              QGCLoggingCategoryRegister::instance()->setFilterRulesFromSettings(loggingOptions);
          
              // Initialize Bluetooth
          #ifdef QGC_ENABLE_BLUETOOTH
              QBluetoothLocalDevice localDevice;
              if (localDevice.isValid())
              {
                  _bluetoothAvailable = true;
              }
          #endif
          
              // Gstreamer debug settings
              int gstDebugLevel = 0;
              if (settings.contains(AppSettings::gstDebugLevelName)) {
                  gstDebugLevel = settings.value(AppSettings::gstDebugLevelName).toInt();
              }
          
          #if defined(QGC_GST_STREAMING)
              // Initialize Video Receiver
              GStreamer::initialize(argc, argv, gstDebugLevel);
          #else
              Q_UNUSED(gstDebugLevel)
          #endif
          
              // We need to set language as early as possible prior to loading on JSON files.
              setLanguage();
          
              _toolbox = new QGCToolbox(this);
              _toolbox->setChildToolboxes();
          
          #ifndef __mobile__
              _gpsRtkFactGroup = new GPSRTKFactGroup(this);
             GPSManager *gpsManager = _toolbox->gpsManager();
             if (gpsManager) {
                 connect(gpsManager, &GPSManager::onConnect,          this, &QGCApplication::_onGPSConnect);
                 connect(gpsManager, &GPSManager::onDisconnect,       this, &QGCApplication::_onGPSDisconnect);
                 connect(gpsManager, &GPSManager::surveyInStatus,     this, &QGCApplication::_gpsSurveyInStatus);
                 connect(gpsManager, &GPSManager::satelliteUpdate,    this, &QGCApplication::_gpsNumSatellites);
             }
          #endif /* __mobile__ */
              _checkForNewVersion();
          }
          
          

          Just step the constructor part because the code is too long

          serkan_trS Offline
          serkan_trS Offline
          serkan_tr
          wrote on last edited by
          #4

          @serkan_tr main.qml

          ApplicationWindow {
              id:             mainWindow
              minimumWidth:   ScreenTools.isMobile ? Screen.width  : Math.min(ScreenTools.defaultFontPixelWidth * 100, Screen.width)
              minimumHeight:  ScreenTools.isMobile ? Screen.height : Math.min(ScreenTools.defaultFontPixelWidth * 50, Screen.height)
              visible: true
          //    visibility: mainWindow.FullScreen
              Component.onCompleted: {
                  console.log((ScreenTools.defaultFontPixelWidth * 100).toString(),"--",Screen.width.toString(),"\n\n")
                  //-- Full screen on mobile or tiny screens
          //        mainWindow.minimumWidth = Math.min(1000,1000/*ScreenTools.defaultFontPixelWidth * 100, Screen.width*/)
          //        mainWindow.showFullScreen()
          //        console.log("\n\nsignal\n\n")
                  if (!ScreenTools.isMobile || Screen.height / ScreenTools.realPixelDensity < 120 /*|| 1 === 1*/) {
                       console.log("APP: true")
          //            mainWindow.FullScreen
                      mainWindow.showFullScreen()
          
                  } else {
                      console.log("APP: false")
                      width   = ScreenTools.isMobile ? Screen.width  : Math.min(250 * Screen.pixelDensity, Screen.width)
                      height  = ScreenTools.isMobile ? Screen.height : Math.min(150 * Screen.pixelDensity, Screen.height)
          //            mainWindow.showFullScreen()
                  }
          
                  // Start the sequence of first run prompt(s)
                  firstRunPromptManager.nextPrompt()
              }
          
              QtObject {
                  id: firstRunPromptManager
          
                  property var currentDialog:     null
                  property var rgPromptIds:       QGroundControl.corePlugin.firstRunPromptsToShow()
                  property int nextPromptIdIndex: 0
          
                  function clearNextPromptSignal() {
                      if (currentDialog) {
                          currentDialog.closed.disconnect(nextPrompt)
                      }
                  }
          
                  function nextPrompt() {
                      if (nextPromptIdIndex < rgPromptIds.length) {
                          var component = Qt.createComponent(QGroundControl.corePlugin.firstRunPromptResource(rgPromptIds[nextPromptIdIndex]));
                          currentDialog = component.createObject(mainWindow)
                          currentDialog.closed.connect(nextPrompt)
                          currentDialog.open()
                          nextPromptIdIndex++
                      } else {
                          currentDialog = null
                          showPreFlightChecklistIfNeeded()
                      }
                  }
              }
          
              property var                _rgPreventViewSwitch:       [ false ]
          
              readonly property real      _topBottomMargins:          ScreenTools.defaultFontPixelHeight * 0.5
          
              //-------------------------------------------------------------------------
              //-- Global Scope Variables
          
              QtObject {
                  id: globals
          
                  readonly property var       activeVehicle:                  QGroundControl.multiVehicleManager.activeVehicle
                  readonly property real      defaultTextHeight:              ScreenTools.defaultFontPixelHeight
                  readonly property real      defaultTextWidth:               ScreenTools.defaultFontPixelWidth
                  readonly property var       planMasterControllerFlyView:    flightView.planController
                  readonly property var       guidedControllerFlyView:        flightView.guidedController
          
                  property var                planMasterControllerPlanView:   null
                  property var                currentPlanMissionItem:         planMasterControllerPlanView ? planMasterControllerPlanView.missionController.currentPlanViewItem : null
              }
          
              /// Default color palette used throughout the UI
              QGCPalette { id: qgcPal; colorGroupEnabled: true }
          
              //-------------------------------------------------------------------------
              //-- Actions
          
              signal armVehicleRequest
              signal forceArmVehicleRequest
              signal disarmVehicleRequest
              signal vtolTransitionToFwdFlightRequest
              signal vtolTransitionToMRFlightRequest
              signal showPreFlightChecklistIfNeeded
          
              //-------------------------------------------------------------------------
              //-- Global Scope Functions
          
              /// Prevent view switching
              function pushPreventViewSwitch() {
                  _rgPreventViewSwitch.push(true)
              }
          
              /// Allow view switching
              function popPreventViewSwitch() {
                  if (_rgPreventViewSwitch.length == 1) {
                      console.warn("mainWindow.popPreventViewSwitch called when nothing pushed")
                      return
                  }
                  _rgPreventViewSwitch.pop()
              }
          
              /// @return true: View switches are not currently allowed
              function preventViewSwitch() {
                  return _rgPreventViewSwitch[_rgPreventViewSwitch.length - 1]
              }
          
              function viewSwitch(currentToolbar) {
                  toolDrawer.visible      = false
                  toolDrawer.toolSource   = ""
                  flightView.visible      = false
                  planView.visible        = false
                  toolbar.currentToolbar  = currentToolbar
              }
          
              function showFlyView() {
                  if (!flightView.visible) {
                      mainWindow.showPreFlightChecklistIfNeeded()
                  }
                  viewSwitch(toolbar.flyViewToolbar)
                  flightView.visible = true
              }
          
              function showPlanView() {
                  viewSwitch(toolbar.planViewToolbar)
                  planView.visible = true
              }
          
              function showTool(toolTitle, toolSource, toolIcon) {
                  toolDrawer.backIcon     = flightView.visible ? "/qmlimages/PaperPlane.svg" : "/qmlimages/Plan.svg"
                  toolDrawer.toolTitle    = toolTitle
                  toolDrawer.toolSource   = toolSource
                  toolDrawer.toolIcon     = toolIcon
                  toolDrawer.visible      = true
              }
              function showMapTool(toolSourceMap) {
                  toolDrawermap.toolSourceMap   = toolSourceMap
                  toolDrawermap.visible         = true
              }
              function showLedTool(toolSourceLed){
                toolDrawerled.toolSourceLed=toolSourceLed
                  if(toolDrawerled.visible==false){
                   toolDrawerled.visible=true
                  }
                  else{
                   toolDrawerled.visible=false
                  }
              }
              function showCalibTool(toolSourceCalib){
                  toolDrawercalibration.toolSourceCalib = toolSourceCalib
                  if(toolDrawercalibration.visible==false){
                   toolDrawercalibration.visible=true
                  }
                  else{
                   toolDrawercalibration.visible=false
                  }
              }
          
              function showAnalyzeTool() {
                  showTool(qsTr("Analyze Tools"), "AnalyzeView.qml", "/qmlimages/Analyze.svg")
              }
          
              function showSetupTool() {
                  showTool(qsTr("Vehicle Setup"), "SetupView.qml", "/qmlimages/Gears.svg")
              }
          
              function showSettingsTool() {
                  showTool(qsTr("Application Settings"), "AppSettings.qml", "/res/QGCLogoWhite")
              }
              function showLedToolpup(){
                 showLedTool("LedSettings2.qml")
              }
              function showMapToolpup(){
              showMapTool("MapSettings.qml")
              }
              function showCamTool(){
              showTool(qsTr("Camera Settings"),"CameraSettings.qml","/InstrumentValueIcons/camera-svgrepo-white.svg")
              }
              function showCalibToolpup(){
              showCalibTool("CalibrationSettings.qml")
              }
          
              //-------------------------------------------------------------------------
              //-- Global simple message dialog
          
              function showMessageDialog(dialogTitle, dialogText, buttons = StandardButton.Ok, acceptFunction = null) {
                  simpleMessageDialogComponent.createObject(mainWindow, { title: dialogTitle, text: dialogText, buttons: buttons, acceptFunction: acceptFunction }).open()
              }
          
              // This variant is only meant to be called by QGCApplication
              function _showMessageDialog(dialogTitle, dialogText) {
                  showMessageDialog(dialogTitle, dialogText)
              }
          
              Component {
                  id: simpleMessageDialogComponent
          
                  QGCSimpleMessageDialog {
                  }
              }
          
              /// Saves main window position and size
              MainWindowSavedState {
                  window: mainWindow
              }
          
              property bool _forceClose: false
          
              function finishCloseProcess() {
                  _forceClose = true
                  // For some reason on the Qml side Qt doesn't automatically disconnect a signal when an object is destroyed.
                  // So we have to do it ourselves otherwise the signal flows through on app shutdown to an object which no longer exists.
                  firstRunPromptManager.clearNextPromptSignal()
                  QGroundControl.linkManager.shutdown()
                  QGroundControl.videoManager.stopVideo();
                  mainWindow.close()
              }
          
              // On attempting an application close we check for:
              //  Unsaved missions - then
              //  Pending parameter writes - then
              //  Active connections
          
              property string closeDialogTitle: qsTr("Close %1").arg(QGroundControl.appName)
          
              function checkForUnsavedMission() {
                  if (globals.planMasterControllerPlanView && globals.planMasterControllerPlanView.dirty) {
                      showMessageDialog(closeDialogTitle,
                                        qsTr("You have a mission edit in progress which has not been saved/sent. If you close you will lose changes. Are you sure you want to close?"),
                                        StandardButton.Yes | StandardButton.No,
                                        function() { checkForPendingParameterWrites() })
                  } else {
                      checkForPendingParameterWrites()
                  }
              }
          
              function checkForPendingParameterWrites() {
                  for (var index=0; index<QGroundControl.multiVehicleManager.vehicles.count; index++) {
                      if (QGroundControl.multiVehicleManager.vehicles.get(index).parameterManager.pendingWrites) {
                          mainWindow.showMessageDialog(closeDialogTitle,
                              qsTr("You have pending parameter updates to a vehicle. If you close you will lose changes. Are you sure you want to close?"),
                              StandardButton.Yes | StandardButton.No,
                              function() { checkForActiveConnections() })
                          return
                      }
                  }
                  checkForActiveConnections()
              }
          
              function checkForActiveConnections() {
                  if (QGroundControl.multiVehicleManager.activeVehicle) {
                      mainWindow.showMessageDialog(closeDialogTitle,
                          qsTr("There are still active connections to vehicles. Are you sure you want to exit?"),
                          StandardButton.Yes | StandardButton.No,
                          function() { finishCloseProcess() })
                  } else {
                      finishCloseProcess()
                  }
              }
          
              onClosing: {
                  if (!_forceClose) {
                      close.accepted = false
                      checkForUnsavedMission()
                  }
              }
          
              //-------------------------------------------------------------------------
              /// Main, full window background (Fly View)
              background: Item {
                  id:             rootBackground
                  anchors.fill:   parent
              }
          
              //-------------------------------------------------------------------------
              /// Toolbar
              header: MainToolBar {
                  id:         toolbar
                  height:     ScreenTools.headerHeight
                  visible:    false /*!QGroundControl.videoManager.fullScreen*/
              }
          
              footer: LogReplayStatusBar {
                  visible: QGroundControl.settingsManager.flyViewSettings.showLogReplayStatusBar.rawValue
              }
          
              function showToolSelectDialog() {
                  if (!mainWindow.preventViewSwitch()) {
                      toolSelectDialogComponent.createObject(mainWindow).open()
                  }
              }
          
              FlyView {
                  id:             flightView
                  anchors.fill:   parent
          
              }
          
             /* PlanView {
                  id:             planView
                  anchors.fill:   parent
                  visible:        false
              }*/
          
              function toolDrawerVisible(){
              toolDrawer.visible=false
              }
          
             Rectangle   {
                  id:             toolDrawer
          
                  width:         900
                  height:         500
                  color:qgcPal.window
                  anchors{
                    horizontalCenter:parent.horizontalCenter
                    verticalCenter:parent.verticalCenter
                  }
                  visible:        false
          
                 property alias backIcon:    backIcon.source
                 property alias toolTitle:   toolbarDrawerText.text
                 property alias toolSource:  toolDrawerLoader.source
                 property alias toolIcon:    toolIcon.source
          
                  Rectangle {
                      id:             toolDrawerToolbar
                      anchors.left:   parent.left
                      anchors.right:  parent.right
                      anchors.top:    parent.top
                      height:         ScreenTools.toolbarHeight
                      color:          parent.color
                      RowLayout {
                          anchors.leftMargin: ScreenTools.defaultFontPixelWidth
                          anchors.left:       parent.left
                          anchors.top:        parent.top
                          anchors.bottom:     parent.bottom
                          spacing:            ScreenTools.defaultFontPixelWidth
          
          
                          QGCColoredImage {
                              id:                     backIcon
                              width:                  ScreenTools.defaultFontPixelHeight * 2
                              height:                 ScreenTools.defaultFontPixelHeight * 2
                              fillMode:               Image.PreserveAspectFit
                              mipmap:                 true
                              color:                  qgcPal.text
                          }
          
                          QGCLabel {
                              id:     backTextLabel
                              text:   qsTr("Back")
                          }
          
                          QGCLabel {
                              font.pointSize: ScreenTools.largeFontPointSize
                              text:           "<"
                          }
          
                         QGCColoredImage {
                              id:                     toolIcon
                              width:                  ScreenTools.defaultFontPixelHeight * 2
                              height:                 ScreenTools.defaultFontPixelHeight * 2
                              fillMode:               Image.PreserveAspectFit
                              mipmap:                 true
                              color:                  qgcPal.text
                          }
          
                          QGCLabel {
                              id:             toolbarDrawerText
                              font.pointSize: ScreenTools.largeFontPointSize
                          }
                      }
          
                      QGCMouseArea {
                          anchors.top:        parent.top
                          anchors.bottom:     parent.bottom
                          x:                  parent.mapFromItem(backIcon, backIcon.x, backIcon.y).x
                          width:              (backTextLabel.x + backTextLabel.width) - backIcon.x
                          onClicked: {
                              toolDrawer.visible      = false
                              toolDrawer.toolSource   = ""
                              toolDrawermap.visible=false
                          }
                      }
                  }
          
                  Loader {
                      id:             toolDrawerLoader
                      anchors.left:   parent.left
                      anchors.right:  parent.right
                      anchors.top:    toolDrawerToolbar.bottom
                      anchors.bottom: parent.bottom
          
          
                      Connections {
                          target:                 toolDrawerLoader.item
                          ignoreUnknownSignals:   true
                          onPopout:               toolDrawer.visible = false
                      }
                  }
              }
             function toolDrawermapVisible(){
             toolDrawermap.visible=false
             }
              Rectangle   {
                  id:           toolDrawermap
                  width:         700
                  height:        300
                  color:qgcPal.window
                  radius: 50
                  anchors{
                    horizontalCenter:parent.horizontalCenter
                    verticalCenter:parent.verticalCenter
                  }
                  visible:      false
                  property alias toolSourceMap:  toolDrawerLoadermap.source
          
          
                  property alias toolIconMap:    toolIconmap.source
          
          
                   Rectangle {
                       id:             toolDrawerToolbarmap
                       anchors.left:   parent.left
                       width:470
                       anchors.leftMargin:40
                       anchors.top:    parent.top
                       anchors.topMargin:20
                       radius:         90
          
          
                       RowLayout {
                           anchors.leftMargin: ScreenTools.defaultFontPixelWidth
                           anchors.left:       parent.left
                           anchors.top:        parent.top
                           anchors.bottom:     parent.bottom
                           spacing:            ScreenTools.defaultFontPixelWidth
          
          
                           QGCColoredImage {
                               id:                     backIconmap
                               width:                  ScreenTools.defaultFontPixelHeight * 2
                               height:                 ScreenTools.defaultFontPixelHeight * 2
                               fillMode:               Image.PreserveAspectFit
                               mipmap:                 true
                               color:                  qgcPal.text
                              MouseArea{
                              anchors.fill:parent
                              onClicked: {
          
                                  toolDrawermap.visible      = false
                                  toolDrawer.visible=false
          
                              }
                              }
                           }
          
                           QGCLabel {
                               id:     backTextLabelmap
                               text:   qsTr("Back")
                           }
          
                           QGCLabel {
                               font.pointSize: ScreenTools.largeFontPointSize
                               text:           "<"
                           }
          
                          QGCColoredImage {
                               id:                     toolIconmap
                               width:                  ScreenTools.defaultFontPixelHeight * 2
                               height:                 ScreenTools.defaultFontPixelHeight * 2
                               fillMode:               Image.PreserveAspectFit
                               mipmap:                 true
                               color:                  qgcPal.text
                           }
          
                           QGCLabel {
                               id:             toolbarDrawerTextmap
                               font.pointSize: ScreenTools.largeFontPointSize
                           }
                       }
          
                       QGCMouseArea {
                           anchors.top:        parent.top
                           anchors.bottom:     parent.bottom
                           x:                  parent.mapFromItem(backIconmap, backIconmap.x, backIconmap.y).x
                           width:              (backTextLabelmap.x + backTextLabelmap.width) - backIconmap.x
                           onClicked: {
                               toolDrawermap.visible      = false
                               toolDrawermap.toolSource   = ""
                               toolDrawer.visible         =false
                           }
                       }
                   }
          
                  Loader {
                      id:             toolDrawerLoadermap
                      anchors.left:   parent.left
                      anchors.top:    parent.top
                      anchors.right:  parent.right
                      Connections {
                          target:                 toolDrawerLoadermap.item
                          ignoreUnknownSignals:   true
                          onPopout:               toolDrawermap.visible = false
                      }
                  }
              }
          function toolDrawerLedvisible(){
          toolDrawerled.visible=false
          }
              Rectangle   {
                  id:           toolDrawerled
                  width:         700
                  height:        300
                  color:qgcPal.window
                  radius:50
                  anchors{
                    horizontalCenter:parent.horizontalCenter
                    verticalCenter:parent.verticalCenter
                  }
                  visible:      false
          
                  property alias toolSourceLed:  toolDrawerLoaderled.source
          
                  Loader {
                      id:             toolDrawerLoaderled
                      anchors.left:   parent.left
                      anchors.top:    parent.top
                      anchors.right:  parent.right
                      Connections {
                          target:                 toolDrawerLoaderled.item
                          ignoreUnknownSignals:   true
                          onPopout:               toolDrawerled.visible = false
                      }
                  }
              }
              function toolDrawerCalibvisible(){
              toolDrawercalibration.visible=false
              }
              Rectangle   {
                  id:           toolDrawercalibration
                  width:         850
                  height:        465
                  color:qgcPal.window
                  radius:50
                  anchors{
                    horizontalCenter:parent.horizontalCenter
                    verticalCenter:parent.verticalCenter
                  }
                  visible:      false
          
                  property alias toolSourceCalib:  toolDrawerLoadercalib.source
          
                  Loader {
                      id:             toolDrawerLoadercalib
                      anchors.left:   parent.left
                      anchors.top:    parent.top
                      anchors.right:  parent.right
                      Connections {
                          target:                 toolDrawerLoadercalib.item
                          ignoreUnknownSignals:   true
                          onPopout:               toolDrawercalibration.visible = false
                      }
                  }
              }
          
              //-------------------------------------------------------------------------
              //-- Critical Vehicle Message Popup
          
              property var    _vehicleMessageQueue:      []
              property string _vehicleMessage:     ""
          
              function showCriticalVehicleMessage(message) {
                  indicatorPopup.close()
                  if (criticalVehicleMessagePopup.visible || QGroundControl.videoManager.fullScreen) {
                      _vehicleMessageQueue.push(message)
                  } else {
                      _vehicleMessage = message
                      criticalVehicleMessagePopup.open()
                  }
              }
          
              Popup {
                  id:                 criticalVehicleMessagePopup
                  y:                  ScreenTools.defaultFontPixelHeight
                  x:                  Math.round((mainWindow.width - width) * 0.5)
                  width:              mainWindow.width  * 0.55
                  height:             ScreenTools.defaultFontPixelHeight * 6
                  modal:              false
                  focus:              true
                  closePolicy:        Popup.CloseOnEscape
          
                  background: Rectangle {
                      anchors.fill:   parent
                      color:          qgcPal.alertBackground
                      radius:         ScreenTools.defaultFontPixelHeight * 0.5
                      border.color:   qgcPal.alertBorder
                      border.width:   2
                  }
          
                  onOpened: {
                      criticalVehicleMessageText.text = mainWindow._vehicleMessage
                  }
          
                  onClosed: {
                      //-- Are there messages in the waiting queue?
                      if(mainWindow._vehicleMessageQueue.length) {
                          mainWindow._vehicleMessage = ""
                          //-- Show all messages in queue
                          for (var i = 0; i < mainWindow._vehicleMessageQueue.length; i++) {
                              var text = mainWindow._vehicleMessageQueue[i]
                              if(i) mainWindow._vehicleMessage += "<br>"
                              mainWindow._vehicleMessage += text
                          }
                          //-- Clear it
                          mainWindow._vehicleMessageQueue = []
                          criticalVehicleMessagePopup.open()
                      } else {
                          mainWindow._vehicleMessage = ""
                      }
                  }
          
                  Flickable {
                      id:                 criticalVehicleMessageFlick
                      anchors.margins:    ScreenTools.defaultFontPixelHeight * 0.5
                      anchors.fill:       parent
                      contentHeight:      criticalVehicleMessageText.height
                      contentWidth:       criticalVehicleMessageText.width
                      boundsBehavior:     Flickable.StopAtBounds
                      pixelAligned:       true
                      clip:               true
                      TextEdit {
                          id:             criticalVehicleMessageText
                          width:          criticalVehicleMessagePopup.width - criticalVehicleMessageClose.width - (ScreenTools.defaultFontPixelHeight * 2)
                          anchors.centerIn: parent
                          readOnly:       true
                          textFormat:     TextEdit.RichText
                          font.pointSize: ScreenTools.defaultFontPointSize
                          font.family:    ScreenTools.demiboldFontFamily
                          wrapMode:       TextEdit.WordWrap
                          color:          qgcPal.alertText
                      }
                  }
          
                  //-- Dismiss Vehicle Message
                  QGCColoredImage {
                      id:                 criticalVehicleMessageClose
                      anchors.margins:    ScreenTools.defaultFontPixelHeight * 0.5
                      anchors.top:        parent.top
                      anchors.right:      parent.right
                      width:              ScreenTools.isMobile ? ScreenTools.defaultFontPixelHeight * 1.5 : ScreenTools.defaultFontPixelHeight
                      height:             width
                      sourceSize.height:  width
                      source:             "/res/XDelete.svg"
                      fillMode:           Image.PreserveAspectFit
                      color:              qgcPal.alertText
                      MouseArea {
                          anchors.fill:       parent
                          anchors.margins:    -ScreenTools.defaultFontPixelHeight
                          onClicked: {
                              criticalVehicleMessagePopup.close()
                          }
                      }
                  }
          
                  //-- More text below indicator
                  QGCColoredImage {
                      anchors.margins:    ScreenTools.defaultFontPixelHeight * 0.5
                      anchors.bottom:     parent.bottom
                      anchors.right:      parent.right
                      width:              ScreenTools.isMobile ? ScreenTools.defaultFontPixelHeight * 1.5 : ScreenTools.defaultFontPixelHeight
                      height:             width
                      sourceSize.height:  width
                      source:             "/res/ArrowDown.svg"
                      fillMode:           Image.PreserveAspectFit
                      visible:            criticalVehicleMessageText.lineCount > 5
                      color:              qgcPal.alertText
                      MouseArea {
                          anchors.fill:   parent
                          onClicked: {
                              criticalVehicleMessageFlick.flick(0,-500)
                          }
                      }
                  }
              }
          
              //-------------------------------------------------------------------------
              //-- Indicator Popups
          
              function showIndicatorPopup(item, dropItem) {
                  indicatorPopup.currentIndicator = dropItem
                  indicatorPopup.currentItem = item
                  indicatorPopup.open()
              }
          
              function hideIndicatorPopup() {
                  indicatorPopup.close()
                  indicatorPopup.currentItem = null
                  indicatorPopup.currentIndicator = null
              }
          
              Popup {
                  id:             indicatorPopup
                  padding:        ScreenTools.defaultFontPixelWidth * 0.75
                  modal:          true
                  focus:          true
                  closePolicy:    Popup.CloseOnEscape | Popup.CloseOnPressOutside
                  property var    currentItem:        null
                  property var    currentIndicator:   null
                  background: Rectangle {
                      width:  loader.width
                      height: loader.height
                      color:  Qt.rgba(0,0,0,0)
                  }
                  Loader {
                      id:             loader
                      onLoaded: {
                          var centerX = mainWindow.contentItem.mapFromItem(indicatorPopup.currentItem, 0, 0).x - (loader.width * 0.5)
                          if((centerX + indicatorPopup.width) > (mainWindow.width - ScreenTools.defaultFontPixelWidth)) {
                              centerX = mainWindow.width - indicatorPopup.width - ScreenTools.defaultFontPixelWidth
                          }
                          indicatorPopup.x = centerX
                      }
                  }
                  onOpened: {
                      loader.sourceComponent = indicatorPopup.currentIndicator
                  }
                  onClosed: {
                      loader.sourceComponent = null
                      indicatorPopup.currentIndicator = null
                  }
              }
          }
          
          
          serkan_trS 1 Reply Last reply
          0
          • serkan_trS serkan_tr

            @serkan_tr main.cpp

            
            int main(int argc, char *argv[])
            {
            
                rclcpp::init(argc, argv);
                #ifndef __mobile__
                    QString runguardString(QGC_APPLICATION_NAME);
                    runguardString.append("RunGuardKey");
            
                    RunGuard guard(runguardString);
                    if (!guard.tryToRun()) {
                        // QApplication is necessary to use QMessageBox
                        QApplication errorApp(argc, argv);
                        QMessageBox::critical(nullptr, QObject::tr("Error"),
                            QObject::tr("A second instance of %1 is already running. Please close the other instance and try again.").arg(QGC_APPLICATION_NAME)
                        );
                        return -1;
                    }
                #endif
            
                    //-- Record boot time
                    QGC::initTimer();
            
                #ifdef Q_OS_UNIX
                    //Force writing to the console on UNIX/BSD devices
                    if (!qEnvironmentVariableIsSet("QT_LOGGING_TO_CONSOLE"))
                        qputenv("QT_LOGGING_TO_CONSOLE", "1");
                #endif
            
                    // install the message handler
                    AppMessages::installHandler();
            
            
            
                #ifdef Q_OS_WIN
                    // Set our own OpenGL buglist
                    qputenv("QT_OPENGL_BUGLIST", ":/opengl/resources/opengl/buglist.json");
            
                    // Allow for command line override of renderer
                    for (int i = 0; i < argc; i++) {
                        const QString arg(argv[i]);
                        if (arg == QStringLiteral("-angle")) {
                            QCoreApplication::setAttribute(Qt::AA_UseOpenGLES);
                            break;
                        } else if (arg == QStringLiteral("-swrast")) {
                            QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL);
                            break;
                        }
                    }
                #endif
            
            
                #ifndef NO_SERIAL_LINK
                    qRegisterMetaType<QSerialPort::SerialPortError>();
                #endif
                #ifdef QGC_ENABLE_BLUETOOTH
                    qRegisterMetaType<QBluetoothSocket::SocketError>();
                    qRegisterMetaType<QBluetoothServiceInfo>();
                #endif
                    qRegisterMetaType<QAbstractSocket::SocketError>();
                    qRegisterMetaType<Vehicle::MavCmdResultFailureCode_t>("Vehicle::MavCmdResultFailureCode_t");
            
                    // We statically link our own QtLocation plugin
            
                #ifdef Q_OS_WIN
                    // In Windows, the compiler doesn't see the use of the class created by Q_IMPORT_PLUGIN
                #pragma warning( disable : 4930 4101 )
                #endif
            
                Q_IMPORT_PLUGIN(QGeoServiceProviderFactoryQGC)
            
                bool runUnitTests = false;          // Run unit tests
            
            
                QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
                QGCApplication* app = new QGCApplication(argc, argv, runUnitTests);
                Q_CHECK_PTR(app);
                if(app->isErrorState()) {
                    app->exec();
                    return -1;
                }
            
                // #ifdef Q_OS_LINUX
            
                QApplication::setWindowIcon(QIcon(":/res/resources/icons/qgroundcontrol.ico"));
                getQGCMapEngine()->init();
                qRegisterMetaType<QList<QPair<QByteArray,QByteArray> > >();
                app->_initCommon();
            
                int exitCode = 0;
                {
                #ifdef UNITTEST_BUILD
                    if (runUnitTests) {
                        for (int i=0; i < (stressUnitTests ? 20 : 1); i++) {
                            if (!app->_initForUnitTests()) {
                                return -1;
                            }
            
                            // Run the test
                            int failures = UnitTest::run(unitTestOptions);
                            if (failures == 0) {
                                qDebug() << "ALL TESTS PASSED";
                                exitCode = 0;
                            } else {
                                qDebug() << failures << " TESTS FAILED!";
                                exitCode = -failures;
                                break;
                            }
                        }
                    } else
                #endif
                }
            
                {
            
                #ifdef __android__
                        checkAndroidWritePermission();
                #endif
                    if (!app->_initForNormalAppBoot()) {
                        return -1;
                    }
                    exitCode = app->exec();
                }
            
                app->_shutdown();
                delete app;
                //-- Shutdown Cache System
                destroyMapEngine();
            
                rclcpp::shutdown();
            
                qDebug() << "After app delete";
                return exitCode;
            }
            
            
            JoeCFDJ Offline
            JoeCFDJ Offline
            JoeCFD
            wrote on last edited by
            #5

            @serkan_tr I happend to know the source code a bit. You may try to replace the two lines(line 27 and 28):

                minimumWidth:   ScreenTools.isMobile ? Screen.width  : Math.min(ScreenTools.defaultFontPixelWidth * 100, Screen.width)
                minimumHeight:  ScreenTools.isMobile ? Screen.height : Math.min(ScreenTools.defaultFontPixelWidth * 50, Screen.height)
            

            of the code here
            https://github.com/mavlink/qgroundcontrol/blob/master/src/ui/MainRootWindow.qml
            with
            visibility: Window.FullScreen
            to see if it helps.

            serkan_trS 1 Reply Last reply
            1
            • serkan_trS serkan_tr

              @serkan_tr main.qml

              ApplicationWindow {
                  id:             mainWindow
                  minimumWidth:   ScreenTools.isMobile ? Screen.width  : Math.min(ScreenTools.defaultFontPixelWidth * 100, Screen.width)
                  minimumHeight:  ScreenTools.isMobile ? Screen.height : Math.min(ScreenTools.defaultFontPixelWidth * 50, Screen.height)
                  visible: true
              //    visibility: mainWindow.FullScreen
                  Component.onCompleted: {
                      console.log((ScreenTools.defaultFontPixelWidth * 100).toString(),"--",Screen.width.toString(),"\n\n")
                      //-- Full screen on mobile or tiny screens
              //        mainWindow.minimumWidth = Math.min(1000,1000/*ScreenTools.defaultFontPixelWidth * 100, Screen.width*/)
              //        mainWindow.showFullScreen()
              //        console.log("\n\nsignal\n\n")
                      if (!ScreenTools.isMobile || Screen.height / ScreenTools.realPixelDensity < 120 /*|| 1 === 1*/) {
                           console.log("APP: true")
              //            mainWindow.FullScreen
                          mainWindow.showFullScreen()
              
                      } else {
                          console.log("APP: false")
                          width   = ScreenTools.isMobile ? Screen.width  : Math.min(250 * Screen.pixelDensity, Screen.width)
                          height  = ScreenTools.isMobile ? Screen.height : Math.min(150 * Screen.pixelDensity, Screen.height)
              //            mainWindow.showFullScreen()
                      }
              
                      // Start the sequence of first run prompt(s)
                      firstRunPromptManager.nextPrompt()
                  }
              
                  QtObject {
                      id: firstRunPromptManager
              
                      property var currentDialog:     null
                      property var rgPromptIds:       QGroundControl.corePlugin.firstRunPromptsToShow()
                      property int nextPromptIdIndex: 0
              
                      function clearNextPromptSignal() {
                          if (currentDialog) {
                              currentDialog.closed.disconnect(nextPrompt)
                          }
                      }
              
                      function nextPrompt() {
                          if (nextPromptIdIndex < rgPromptIds.length) {
                              var component = Qt.createComponent(QGroundControl.corePlugin.firstRunPromptResource(rgPromptIds[nextPromptIdIndex]));
                              currentDialog = component.createObject(mainWindow)
                              currentDialog.closed.connect(nextPrompt)
                              currentDialog.open()
                              nextPromptIdIndex++
                          } else {
                              currentDialog = null
                              showPreFlightChecklistIfNeeded()
                          }
                      }
                  }
              
                  property var                _rgPreventViewSwitch:       [ false ]
              
                  readonly property real      _topBottomMargins:          ScreenTools.defaultFontPixelHeight * 0.5
              
                  //-------------------------------------------------------------------------
                  //-- Global Scope Variables
              
                  QtObject {
                      id: globals
              
                      readonly property var       activeVehicle:                  QGroundControl.multiVehicleManager.activeVehicle
                      readonly property real      defaultTextHeight:              ScreenTools.defaultFontPixelHeight
                      readonly property real      defaultTextWidth:               ScreenTools.defaultFontPixelWidth
                      readonly property var       planMasterControllerFlyView:    flightView.planController
                      readonly property var       guidedControllerFlyView:        flightView.guidedController
              
                      property var                planMasterControllerPlanView:   null
                      property var                currentPlanMissionItem:         planMasterControllerPlanView ? planMasterControllerPlanView.missionController.currentPlanViewItem : null
                  }
              
                  /// Default color palette used throughout the UI
                  QGCPalette { id: qgcPal; colorGroupEnabled: true }
              
                  //-------------------------------------------------------------------------
                  //-- Actions
              
                  signal armVehicleRequest
                  signal forceArmVehicleRequest
                  signal disarmVehicleRequest
                  signal vtolTransitionToFwdFlightRequest
                  signal vtolTransitionToMRFlightRequest
                  signal showPreFlightChecklistIfNeeded
              
                  //-------------------------------------------------------------------------
                  //-- Global Scope Functions
              
                  /// Prevent view switching
                  function pushPreventViewSwitch() {
                      _rgPreventViewSwitch.push(true)
                  }
              
                  /// Allow view switching
                  function popPreventViewSwitch() {
                      if (_rgPreventViewSwitch.length == 1) {
                          console.warn("mainWindow.popPreventViewSwitch called when nothing pushed")
                          return
                      }
                      _rgPreventViewSwitch.pop()
                  }
              
                  /// @return true: View switches are not currently allowed
                  function preventViewSwitch() {
                      return _rgPreventViewSwitch[_rgPreventViewSwitch.length - 1]
                  }
              
                  function viewSwitch(currentToolbar) {
                      toolDrawer.visible      = false
                      toolDrawer.toolSource   = ""
                      flightView.visible      = false
                      planView.visible        = false
                      toolbar.currentToolbar  = currentToolbar
                  }
              
                  function showFlyView() {
                      if (!flightView.visible) {
                          mainWindow.showPreFlightChecklistIfNeeded()
                      }
                      viewSwitch(toolbar.flyViewToolbar)
                      flightView.visible = true
                  }
              
                  function showPlanView() {
                      viewSwitch(toolbar.planViewToolbar)
                      planView.visible = true
                  }
              
                  function showTool(toolTitle, toolSource, toolIcon) {
                      toolDrawer.backIcon     = flightView.visible ? "/qmlimages/PaperPlane.svg" : "/qmlimages/Plan.svg"
                      toolDrawer.toolTitle    = toolTitle
                      toolDrawer.toolSource   = toolSource
                      toolDrawer.toolIcon     = toolIcon
                      toolDrawer.visible      = true
                  }
                  function showMapTool(toolSourceMap) {
                      toolDrawermap.toolSourceMap   = toolSourceMap
                      toolDrawermap.visible         = true
                  }
                  function showLedTool(toolSourceLed){
                    toolDrawerled.toolSourceLed=toolSourceLed
                      if(toolDrawerled.visible==false){
                       toolDrawerled.visible=true
                      }
                      else{
                       toolDrawerled.visible=false
                      }
                  }
                  function showCalibTool(toolSourceCalib){
                      toolDrawercalibration.toolSourceCalib = toolSourceCalib
                      if(toolDrawercalibration.visible==false){
                       toolDrawercalibration.visible=true
                      }
                      else{
                       toolDrawercalibration.visible=false
                      }
                  }
              
                  function showAnalyzeTool() {
                      showTool(qsTr("Analyze Tools"), "AnalyzeView.qml", "/qmlimages/Analyze.svg")
                  }
              
                  function showSetupTool() {
                      showTool(qsTr("Vehicle Setup"), "SetupView.qml", "/qmlimages/Gears.svg")
                  }
              
                  function showSettingsTool() {
                      showTool(qsTr("Application Settings"), "AppSettings.qml", "/res/QGCLogoWhite")
                  }
                  function showLedToolpup(){
                     showLedTool("LedSettings2.qml")
                  }
                  function showMapToolpup(){
                  showMapTool("MapSettings.qml")
                  }
                  function showCamTool(){
                  showTool(qsTr("Camera Settings"),"CameraSettings.qml","/InstrumentValueIcons/camera-svgrepo-white.svg")
                  }
                  function showCalibToolpup(){
                  showCalibTool("CalibrationSettings.qml")
                  }
              
                  //-------------------------------------------------------------------------
                  //-- Global simple message dialog
              
                  function showMessageDialog(dialogTitle, dialogText, buttons = StandardButton.Ok, acceptFunction = null) {
                      simpleMessageDialogComponent.createObject(mainWindow, { title: dialogTitle, text: dialogText, buttons: buttons, acceptFunction: acceptFunction }).open()
                  }
              
                  // This variant is only meant to be called by QGCApplication
                  function _showMessageDialog(dialogTitle, dialogText) {
                      showMessageDialog(dialogTitle, dialogText)
                  }
              
                  Component {
                      id: simpleMessageDialogComponent
              
                      QGCSimpleMessageDialog {
                      }
                  }
              
                  /// Saves main window position and size
                  MainWindowSavedState {
                      window: mainWindow
                  }
              
                  property bool _forceClose: false
              
                  function finishCloseProcess() {
                      _forceClose = true
                      // For some reason on the Qml side Qt doesn't automatically disconnect a signal when an object is destroyed.
                      // So we have to do it ourselves otherwise the signal flows through on app shutdown to an object which no longer exists.
                      firstRunPromptManager.clearNextPromptSignal()
                      QGroundControl.linkManager.shutdown()
                      QGroundControl.videoManager.stopVideo();
                      mainWindow.close()
                  }
              
                  // On attempting an application close we check for:
                  //  Unsaved missions - then
                  //  Pending parameter writes - then
                  //  Active connections
              
                  property string closeDialogTitle: qsTr("Close %1").arg(QGroundControl.appName)
              
                  function checkForUnsavedMission() {
                      if (globals.planMasterControllerPlanView && globals.planMasterControllerPlanView.dirty) {
                          showMessageDialog(closeDialogTitle,
                                            qsTr("You have a mission edit in progress which has not been saved/sent. If you close you will lose changes. Are you sure you want to close?"),
                                            StandardButton.Yes | StandardButton.No,
                                            function() { checkForPendingParameterWrites() })
                      } else {
                          checkForPendingParameterWrites()
                      }
                  }
              
                  function checkForPendingParameterWrites() {
                      for (var index=0; index<QGroundControl.multiVehicleManager.vehicles.count; index++) {
                          if (QGroundControl.multiVehicleManager.vehicles.get(index).parameterManager.pendingWrites) {
                              mainWindow.showMessageDialog(closeDialogTitle,
                                  qsTr("You have pending parameter updates to a vehicle. If you close you will lose changes. Are you sure you want to close?"),
                                  StandardButton.Yes | StandardButton.No,
                                  function() { checkForActiveConnections() })
                              return
                          }
                      }
                      checkForActiveConnections()
                  }
              
                  function checkForActiveConnections() {
                      if (QGroundControl.multiVehicleManager.activeVehicle) {
                          mainWindow.showMessageDialog(closeDialogTitle,
                              qsTr("There are still active connections to vehicles. Are you sure you want to exit?"),
                              StandardButton.Yes | StandardButton.No,
                              function() { finishCloseProcess() })
                      } else {
                          finishCloseProcess()
                      }
                  }
              
                  onClosing: {
                      if (!_forceClose) {
                          close.accepted = false
                          checkForUnsavedMission()
                      }
                  }
              
                  //-------------------------------------------------------------------------
                  /// Main, full window background (Fly View)
                  background: Item {
                      id:             rootBackground
                      anchors.fill:   parent
                  }
              
                  //-------------------------------------------------------------------------
                  /// Toolbar
                  header: MainToolBar {
                      id:         toolbar
                      height:     ScreenTools.headerHeight
                      visible:    false /*!QGroundControl.videoManager.fullScreen*/
                  }
              
                  footer: LogReplayStatusBar {
                      visible: QGroundControl.settingsManager.flyViewSettings.showLogReplayStatusBar.rawValue
                  }
              
                  function showToolSelectDialog() {
                      if (!mainWindow.preventViewSwitch()) {
                          toolSelectDialogComponent.createObject(mainWindow).open()
                      }
                  }
              
                  FlyView {
                      id:             flightView
                      anchors.fill:   parent
              
                  }
              
                 /* PlanView {
                      id:             planView
                      anchors.fill:   parent
                      visible:        false
                  }*/
              
                  function toolDrawerVisible(){
                  toolDrawer.visible=false
                  }
              
                 Rectangle   {
                      id:             toolDrawer
              
                      width:         900
                      height:         500
                      color:qgcPal.window
                      anchors{
                        horizontalCenter:parent.horizontalCenter
                        verticalCenter:parent.verticalCenter
                      }
                      visible:        false
              
                     property alias backIcon:    backIcon.source
                     property alias toolTitle:   toolbarDrawerText.text
                     property alias toolSource:  toolDrawerLoader.source
                     property alias toolIcon:    toolIcon.source
              
                      Rectangle {
                          id:             toolDrawerToolbar
                          anchors.left:   parent.left
                          anchors.right:  parent.right
                          anchors.top:    parent.top
                          height:         ScreenTools.toolbarHeight
                          color:          parent.color
                          RowLayout {
                              anchors.leftMargin: ScreenTools.defaultFontPixelWidth
                              anchors.left:       parent.left
                              anchors.top:        parent.top
                              anchors.bottom:     parent.bottom
                              spacing:            ScreenTools.defaultFontPixelWidth
              
              
                              QGCColoredImage {
                                  id:                     backIcon
                                  width:                  ScreenTools.defaultFontPixelHeight * 2
                                  height:                 ScreenTools.defaultFontPixelHeight * 2
                                  fillMode:               Image.PreserveAspectFit
                                  mipmap:                 true
                                  color:                  qgcPal.text
                              }
              
                              QGCLabel {
                                  id:     backTextLabel
                                  text:   qsTr("Back")
                              }
              
                              QGCLabel {
                                  font.pointSize: ScreenTools.largeFontPointSize
                                  text:           "<"
                              }
              
                             QGCColoredImage {
                                  id:                     toolIcon
                                  width:                  ScreenTools.defaultFontPixelHeight * 2
                                  height:                 ScreenTools.defaultFontPixelHeight * 2
                                  fillMode:               Image.PreserveAspectFit
                                  mipmap:                 true
                                  color:                  qgcPal.text
                              }
              
                              QGCLabel {
                                  id:             toolbarDrawerText
                                  font.pointSize: ScreenTools.largeFontPointSize
                              }
                          }
              
                          QGCMouseArea {
                              anchors.top:        parent.top
                              anchors.bottom:     parent.bottom
                              x:                  parent.mapFromItem(backIcon, backIcon.x, backIcon.y).x
                              width:              (backTextLabel.x + backTextLabel.width) - backIcon.x
                              onClicked: {
                                  toolDrawer.visible      = false
                                  toolDrawer.toolSource   = ""
                                  toolDrawermap.visible=false
                              }
                          }
                      }
              
                      Loader {
                          id:             toolDrawerLoader
                          anchors.left:   parent.left
                          anchors.right:  parent.right
                          anchors.top:    toolDrawerToolbar.bottom
                          anchors.bottom: parent.bottom
              
              
                          Connections {
                              target:                 toolDrawerLoader.item
                              ignoreUnknownSignals:   true
                              onPopout:               toolDrawer.visible = false
                          }
                      }
                  }
                 function toolDrawermapVisible(){
                 toolDrawermap.visible=false
                 }
                  Rectangle   {
                      id:           toolDrawermap
                      width:         700
                      height:        300
                      color:qgcPal.window
                      radius: 50
                      anchors{
                        horizontalCenter:parent.horizontalCenter
                        verticalCenter:parent.verticalCenter
                      }
                      visible:      false
                      property alias toolSourceMap:  toolDrawerLoadermap.source
              
              
                      property alias toolIconMap:    toolIconmap.source
              
              
                       Rectangle {
                           id:             toolDrawerToolbarmap
                           anchors.left:   parent.left
                           width:470
                           anchors.leftMargin:40
                           anchors.top:    parent.top
                           anchors.topMargin:20
                           radius:         90
              
              
                           RowLayout {
                               anchors.leftMargin: ScreenTools.defaultFontPixelWidth
                               anchors.left:       parent.left
                               anchors.top:        parent.top
                               anchors.bottom:     parent.bottom
                               spacing:            ScreenTools.defaultFontPixelWidth
              
              
                               QGCColoredImage {
                                   id:                     backIconmap
                                   width:                  ScreenTools.defaultFontPixelHeight * 2
                                   height:                 ScreenTools.defaultFontPixelHeight * 2
                                   fillMode:               Image.PreserveAspectFit
                                   mipmap:                 true
                                   color:                  qgcPal.text
                                  MouseArea{
                                  anchors.fill:parent
                                  onClicked: {
              
                                      toolDrawermap.visible      = false
                                      toolDrawer.visible=false
              
                                  }
                                  }
                               }
              
                               QGCLabel {
                                   id:     backTextLabelmap
                                   text:   qsTr("Back")
                               }
              
                               QGCLabel {
                                   font.pointSize: ScreenTools.largeFontPointSize
                                   text:           "<"
                               }
              
                              QGCColoredImage {
                                   id:                     toolIconmap
                                   width:                  ScreenTools.defaultFontPixelHeight * 2
                                   height:                 ScreenTools.defaultFontPixelHeight * 2
                                   fillMode:               Image.PreserveAspectFit
                                   mipmap:                 true
                                   color:                  qgcPal.text
                               }
              
                               QGCLabel {
                                   id:             toolbarDrawerTextmap
                                   font.pointSize: ScreenTools.largeFontPointSize
                               }
                           }
              
                           QGCMouseArea {
                               anchors.top:        parent.top
                               anchors.bottom:     parent.bottom
                               x:                  parent.mapFromItem(backIconmap, backIconmap.x, backIconmap.y).x
                               width:              (backTextLabelmap.x + backTextLabelmap.width) - backIconmap.x
                               onClicked: {
                                   toolDrawermap.visible      = false
                                   toolDrawermap.toolSource   = ""
                                   toolDrawer.visible         =false
                               }
                           }
                       }
              
                      Loader {
                          id:             toolDrawerLoadermap
                          anchors.left:   parent.left
                          anchors.top:    parent.top
                          anchors.right:  parent.right
                          Connections {
                              target:                 toolDrawerLoadermap.item
                              ignoreUnknownSignals:   true
                              onPopout:               toolDrawermap.visible = false
                          }
                      }
                  }
              function toolDrawerLedvisible(){
              toolDrawerled.visible=false
              }
                  Rectangle   {
                      id:           toolDrawerled
                      width:         700
                      height:        300
                      color:qgcPal.window
                      radius:50
                      anchors{
                        horizontalCenter:parent.horizontalCenter
                        verticalCenter:parent.verticalCenter
                      }
                      visible:      false
              
                      property alias toolSourceLed:  toolDrawerLoaderled.source
              
                      Loader {
                          id:             toolDrawerLoaderled
                          anchors.left:   parent.left
                          anchors.top:    parent.top
                          anchors.right:  parent.right
                          Connections {
                              target:                 toolDrawerLoaderled.item
                              ignoreUnknownSignals:   true
                              onPopout:               toolDrawerled.visible = false
                          }
                      }
                  }
                  function toolDrawerCalibvisible(){
                  toolDrawercalibration.visible=false
                  }
                  Rectangle   {
                      id:           toolDrawercalibration
                      width:         850
                      height:        465
                      color:qgcPal.window
                      radius:50
                      anchors{
                        horizontalCenter:parent.horizontalCenter
                        verticalCenter:parent.verticalCenter
                      }
                      visible:      false
              
                      property alias toolSourceCalib:  toolDrawerLoadercalib.source
              
                      Loader {
                          id:             toolDrawerLoadercalib
                          anchors.left:   parent.left
                          anchors.top:    parent.top
                          anchors.right:  parent.right
                          Connections {
                              target:                 toolDrawerLoadercalib.item
                              ignoreUnknownSignals:   true
                              onPopout:               toolDrawercalibration.visible = false
                          }
                      }
                  }
              
                  //-------------------------------------------------------------------------
                  //-- Critical Vehicle Message Popup
              
                  property var    _vehicleMessageQueue:      []
                  property string _vehicleMessage:     ""
              
                  function showCriticalVehicleMessage(message) {
                      indicatorPopup.close()
                      if (criticalVehicleMessagePopup.visible || QGroundControl.videoManager.fullScreen) {
                          _vehicleMessageQueue.push(message)
                      } else {
                          _vehicleMessage = message
                          criticalVehicleMessagePopup.open()
                      }
                  }
              
                  Popup {
                      id:                 criticalVehicleMessagePopup
                      y:                  ScreenTools.defaultFontPixelHeight
                      x:                  Math.round((mainWindow.width - width) * 0.5)
                      width:              mainWindow.width  * 0.55
                      height:             ScreenTools.defaultFontPixelHeight * 6
                      modal:              false
                      focus:              true
                      closePolicy:        Popup.CloseOnEscape
              
                      background: Rectangle {
                          anchors.fill:   parent
                          color:          qgcPal.alertBackground
                          radius:         ScreenTools.defaultFontPixelHeight * 0.5
                          border.color:   qgcPal.alertBorder
                          border.width:   2
                      }
              
                      onOpened: {
                          criticalVehicleMessageText.text = mainWindow._vehicleMessage
                      }
              
                      onClosed: {
                          //-- Are there messages in the waiting queue?
                          if(mainWindow._vehicleMessageQueue.length) {
                              mainWindow._vehicleMessage = ""
                              //-- Show all messages in queue
                              for (var i = 0; i < mainWindow._vehicleMessageQueue.length; i++) {
                                  var text = mainWindow._vehicleMessageQueue[i]
                                  if(i) mainWindow._vehicleMessage += "<br>"
                                  mainWindow._vehicleMessage += text
                              }
                              //-- Clear it
                              mainWindow._vehicleMessageQueue = []
                              criticalVehicleMessagePopup.open()
                          } else {
                              mainWindow._vehicleMessage = ""
                          }
                      }
              
                      Flickable {
                          id:                 criticalVehicleMessageFlick
                          anchors.margins:    ScreenTools.defaultFontPixelHeight * 0.5
                          anchors.fill:       parent
                          contentHeight:      criticalVehicleMessageText.height
                          contentWidth:       criticalVehicleMessageText.width
                          boundsBehavior:     Flickable.StopAtBounds
                          pixelAligned:       true
                          clip:               true
                          TextEdit {
                              id:             criticalVehicleMessageText
                              width:          criticalVehicleMessagePopup.width - criticalVehicleMessageClose.width - (ScreenTools.defaultFontPixelHeight * 2)
                              anchors.centerIn: parent
                              readOnly:       true
                              textFormat:     TextEdit.RichText
                              font.pointSize: ScreenTools.defaultFontPointSize
                              font.family:    ScreenTools.demiboldFontFamily
                              wrapMode:       TextEdit.WordWrap
                              color:          qgcPal.alertText
                          }
                      }
              
                      //-- Dismiss Vehicle Message
                      QGCColoredImage {
                          id:                 criticalVehicleMessageClose
                          anchors.margins:    ScreenTools.defaultFontPixelHeight * 0.5
                          anchors.top:        parent.top
                          anchors.right:      parent.right
                          width:              ScreenTools.isMobile ? ScreenTools.defaultFontPixelHeight * 1.5 : ScreenTools.defaultFontPixelHeight
                          height:             width
                          sourceSize.height:  width
                          source:             "/res/XDelete.svg"
                          fillMode:           Image.PreserveAspectFit
                          color:              qgcPal.alertText
                          MouseArea {
                              anchors.fill:       parent
                              anchors.margins:    -ScreenTools.defaultFontPixelHeight
                              onClicked: {
                                  criticalVehicleMessagePopup.close()
                              }
                          }
                      }
              
                      //-- More text below indicator
                      QGCColoredImage {
                          anchors.margins:    ScreenTools.defaultFontPixelHeight * 0.5
                          anchors.bottom:     parent.bottom
                          anchors.right:      parent.right
                          width:              ScreenTools.isMobile ? ScreenTools.defaultFontPixelHeight * 1.5 : ScreenTools.defaultFontPixelHeight
                          height:             width
                          sourceSize.height:  width
                          source:             "/res/ArrowDown.svg"
                          fillMode:           Image.PreserveAspectFit
                          visible:            criticalVehicleMessageText.lineCount > 5
                          color:              qgcPal.alertText
                          MouseArea {
                              anchors.fill:   parent
                              onClicked: {
                                  criticalVehicleMessageFlick.flick(0,-500)
                              }
                          }
                      }
                  }
              
                  //-------------------------------------------------------------------------
                  //-- Indicator Popups
              
                  function showIndicatorPopup(item, dropItem) {
                      indicatorPopup.currentIndicator = dropItem
                      indicatorPopup.currentItem = item
                      indicatorPopup.open()
                  }
              
                  function hideIndicatorPopup() {
                      indicatorPopup.close()
                      indicatorPopup.currentItem = null
                      indicatorPopup.currentIndicator = null
                  }
              
                  Popup {
                      id:             indicatorPopup
                      padding:        ScreenTools.defaultFontPixelWidth * 0.75
                      modal:          true
                      focus:          true
                      closePolicy:    Popup.CloseOnEscape | Popup.CloseOnPressOutside
                      property var    currentItem:        null
                      property var    currentIndicator:   null
                      background: Rectangle {
                          width:  loader.width
                          height: loader.height
                          color:  Qt.rgba(0,0,0,0)
                      }
                      Loader {
                          id:             loader
                          onLoaded: {
                              var centerX = mainWindow.contentItem.mapFromItem(indicatorPopup.currentItem, 0, 0).x - (loader.width * 0.5)
                              if((centerX + indicatorPopup.width) > (mainWindow.width - ScreenTools.defaultFontPixelWidth)) {
                                  centerX = mainWindow.width - indicatorPopup.width - ScreenTools.defaultFontPixelWidth
                              }
                              indicatorPopup.x = centerX
                          }
                      }
                      onOpened: {
                          loader.sourceComponent = indicatorPopup.currentIndicator
                      }
                      onClosed: {
                          loader.sourceComponent = null
                          indicatorPopup.currentIndicator = null
                      }
                  }
              }
              
              
              serkan_trS Offline
              serkan_trS Offline
              serkan_tr
              wrote on last edited by
              #6

              @serkan_tr said in How to make full screen:

              if (!ScreenTools.isMobile || Screen.height / ScreenTools.realPixelDensity < 120 /|| 1 === 1/) {
              console.log("APP: true")
              // mainWindow.FullScreen
              mainWindow.showFullScreen()

                  } else {
                      console.log("APP: false")
                      width   = ScreenTools.isMobile ? Screen.width  : Math.min(250 * Screen.pixelDensity, Screen.width)
                      height  = ScreenTools.isMobile ? Screen.height : Math.min(150 * Screen.pixelDensity, Screen.height)
              

              // mainWindow.showFullScreen()
              }
              I guess this is what I'm doing. Even if I put "mainWindow.showFullScreen()" else here, it doesn't work, the bottom part is still visible.
              My goal is to show the inside of my app as it was before formatting the tablet. I want it to completely fill the screen. no matter what device, tablet phone computer only this one should appear

              1 Reply Last reply
              0
              • JoeCFDJ JoeCFD

                @serkan_tr I happend to know the source code a bit. You may try to replace the two lines(line 27 and 28):

                    minimumWidth:   ScreenTools.isMobile ? Screen.width  : Math.min(ScreenTools.defaultFontPixelWidth * 100, Screen.width)
                    minimumHeight:  ScreenTools.isMobile ? Screen.height : Math.min(ScreenTools.defaultFontPixelWidth * 50, Screen.height)
                

                of the code here
                https://github.com/mavlink/qgroundcontrol/blob/master/src/ui/MainRootWindow.qml
                with
                visibility: Window.FullScreen
                to see if it helps.

                serkan_trS Offline
                serkan_trS Offline
                serkan_tr
                wrote on last edited by serkan_tr
                #7

                @JoeCFD I tried changing these lines but the screen size still did not change.
                what exactly should i write

                JoeCFDJ 1 Reply Last reply
                0
                • serkan_trS serkan_tr

                  @JoeCFD I tried changing these lines but the screen size still did not change.
                  what exactly should i write

                  JoeCFDJ Offline
                  JoeCFDJ Offline
                  JoeCFD
                  wrote on last edited by JoeCFD
                  #8

                  @serkan_tr can you show your picture? I use it for Linux and Android without issues. Maybe Windows 10 is too old.
                  mainWindow.showFullScreen() is not needed.

                  You can also try to get screen size from your main and set it somewhere.
                  QRect rec = QGuiApplication::screens().at( 0 )->geometry();
                  QSize( rec.width(), rec.height() ) is the screen size;

                  then, pass the size to
                  height and width of your mainWindow

                  serkan_trS 1 Reply Last reply
                  1
                  • JoeCFDJ JoeCFD

                    @serkan_tr can you show your picture? I use it for Linux and Android without issues. Maybe Windows 10 is too old.
                    mainWindow.showFullScreen() is not needed.

                    You can also try to get screen size from your main and set it somewhere.
                    QRect rec = QGuiApplication::screens().at( 0 )->geometry();
                    QSize( rec.width(), rec.height() ) is the screen size;

                    then, pass the size to
                    height and width of your mainWindow

                    serkan_trS Offline
                    serkan_trS Offline
                    serkan_tr
                    wrote on last edited by serkan_tr
                    #9

                    @JoeCFD
                    27 and 28 no matter what I do, only the smallest state changes
                    The "windows taskbar" part at the bottom still appears
                    ![Screenshot (1).png](Request Entity Too Large)

                    JoeCFDJ 1 Reply Last reply
                    0
                    • serkan_trS serkan_tr

                      @JoeCFD
                      27 and 28 no matter what I do, only the smallest state changes
                      The "windows taskbar" part at the bottom still appears
                      ![Screenshot (1).png](Request Entity Too Large)

                      JoeCFDJ Offline
                      JoeCFDJ Offline
                      JoeCFD
                      wrote on last edited by JoeCFD
                      #10

                      @serkan_tr I said remove or comment them out.
                      Use only
                      visibility: Window.FullScreen

                      serkan_trS 1 Reply Last reply
                      1
                      • JoeCFDJ JoeCFD

                        @serkan_tr I said remove or comment them out.
                        Use only
                        visibility: Window.FullScreen

                        serkan_trS Offline
                        serkan_trS Offline
                        serkan_tr
                        wrote on last edited by
                        #11

                        @JoeCFD I made the comments line everywhere, I only made the part you said active, but it is still full screen, the vindow and application parts are visible at the bottom.

                        ApplicationWindow {
                            id:             mainWindow
                        //    minimumWidth:   ScreenTools.isMobile ? Screen.width  : Math.min(ScreenTools.defaultFontPixelWidth * 100, Screen.width)
                        //    minimumHeight:  ScreenTools.isMobile ? Screen.height : Math.min(ScreenTools.defaultFontPixelWidth * 50, Screen.height)
                        //    visible: true
                            visibility: Window.FullScreen
                        //    visibility: Window.FullScreen
                        //    visibility: mainWindow.FullScreen
                        //    Component.onCompleted: {
                        //        console.log((ScreenTools.defaultFontPixelWidth * 100).toString(),"--",Screen.width.toString(),"\n\n")
                        //        //-- Full screen on mobile or tiny screens
                        ////        mainWindow.minimumWidth = Math.min(1000,1000/*ScreenTools.defaultFontPixelWidth * 100, Screen.width*/)
                        ////        mainWindow.showFullScreen()
                        ////        console.log("\n\nsignal\n\n")
                        //        if (!ScreenTools.isMobile || Screen.height / ScreenTools.realPixelDensity < 120 /*|| 1 === 1*/) {
                        //             console.log("APP: true")
                        ////            mainWindow.FullScreen
                        //            mainWindow.showFullScreen()
                        
                        //        } else {
                        //            console.log("APP: false")
                        //            width   = ScreenTools.isMobile ? Screen.width  : Math.min(250 * Screen.pixelDensity, Screen.width)
                        //            height  = ScreenTools.isMobile ? Screen.height : Math.min(150 * Screen.pixelDensity, Screen.height)
                        ////            mainWindow.showFullScreen()
                        //        }
                        
                        //        // Start the sequence of first run prompt(s)
                        //        firstRunPromptManager.nextPrompt()
                        //    }
                        
                        
                        1 Reply Last reply
                        0
                        • serkan_trS serkan_tr has marked this topic as solved on

                        • Login

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Search
                        • Get Qt Extensions
                        • Unsolved