Added ability to toggle autorun
This commit is contained in:
		
							parent
							
								
									1f478bc48a
								
							
						
					
					
						commit
						0fcdff9be2
					
				@ -43,6 +43,7 @@ HEADERS += \
 | 
			
		||||
  src/service/apptranslator.h \
 | 
			
		||||
  src/service/debug.h \
 | 
			
		||||
  src/service/globalaction.h \
 | 
			
		||||
  src/service/runatsystemstart.h \
 | 
			
		||||
  src/service/singleapplication.h \
 | 
			
		||||
  src/service/updates.h \
 | 
			
		||||
  src/service/widgetstate.h \
 | 
			
		||||
@ -71,6 +72,7 @@ SOURCES += \
 | 
			
		||||
  src/service/apptranslator.cpp \
 | 
			
		||||
  src/service/debug.cpp \
 | 
			
		||||
  src/service/globalaction.cpp \
 | 
			
		||||
  src/service/runatsystemstart.cpp \
 | 
			
		||||
  src/service/singleapplication.cpp \
 | 
			
		||||
  src/service/updates.cpp \
 | 
			
		||||
  src/service/widgetstate.cpp \
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										95
									
								
								src/service/runatsystemstart.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								src/service/runatsystemstart.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,95 @@
 | 
			
		||||
#include "runatsystemstart.h"
 | 
			
		||||
 | 
			
		||||
#include <QCoreApplication>
 | 
			
		||||
#include <QDir>
 | 
			
		||||
#include <QSettings>
 | 
			
		||||
 | 
			
		||||
namespace service
 | 
			
		||||
{
 | 
			
		||||
#ifdef Q_OS_LINUX
 | 
			
		||||
QString desktopFile()
 | 
			
		||||
{
 | 
			
		||||
  auto name = QCoreApplication::applicationName().toLower();
 | 
			
		||||
  name.remove(QLatin1Char(' '));
 | 
			
		||||
  const auto result = QDir::homePath() + QLatin1String("/.config/autostart/") +
 | 
			
		||||
                      name + QLatin1String(".desktop");
 | 
			
		||||
  return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool RunAtSystemStart::isAvailable()
 | 
			
		||||
{
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool RunAtSystemStart::isEnabled()
 | 
			
		||||
{
 | 
			
		||||
  return QFile::exists(desktopFile());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void RunAtSystemStart::setEnabled(bool isOn)
 | 
			
		||||
{
 | 
			
		||||
  if (!isOn) {
 | 
			
		||||
    QFile::remove(desktopFile());
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  QFile f(desktopFile());
 | 
			
		||||
  if (!f.open(QFile::WriteOnly))
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  const auto contents = QString(R"([Desktop Entry]
 | 
			
		||||
Name=%1
 | 
			
		||||
Exec=%2
 | 
			
		||||
)")
 | 
			
		||||
                            .arg(QCoreApplication::applicationName(),
 | 
			
		||||
                                 QCoreApplication::applicationFilePath());
 | 
			
		||||
  f.write(contents.toUtf8());
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef Q_OS_WIN
 | 
			
		||||
const auto registryKey =
 | 
			
		||||
    "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run";
 | 
			
		||||
 | 
			
		||||
bool RunAtSystemStart::isAvailable()
 | 
			
		||||
{
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool RunAtSystemStart::isEnabled()
 | 
			
		||||
{
 | 
			
		||||
  QSettings settings(registryKey, QSettings::NativeFormat);
 | 
			
		||||
  return settings.contains(QCoreApplication::applicationName());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void RunAtSystemStart::setEnabled(bool isOn)
 | 
			
		||||
{
 | 
			
		||||
  QSettings settings(registryKey, QSettings::NativeFormat);
 | 
			
		||||
  if (isOn) {
 | 
			
		||||
    settings.setValue(
 | 
			
		||||
        QCoreApplication::applicationName(),
 | 
			
		||||
        QDir::toNativeSeparators(QCoreApplication::applicationFilePath()));
 | 
			
		||||
  } else {
 | 
			
		||||
    settings.remove(QCoreApplication::applicationName());
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef Q_OS_MAC
 | 
			
		||||
bool RunAtSystemStart::isAvailable()
 | 
			
		||||
{
 | 
			
		||||
  return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool RunAtSystemStart::isEnabled()
 | 
			
		||||
{
 | 
			
		||||
  return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void RunAtSystemStart::setEnabled(bool /*isOn*/)
 | 
			
		||||
{
 | 
			
		||||
  return;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
}  // namespace service
 | 
			
		||||
							
								
								
									
										13
									
								
								src/service/runatsystemstart.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/service/runatsystemstart.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
namespace service
 | 
			
		||||
{
 | 
			
		||||
class RunAtSystemStart
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
  static bool isAvailable();
 | 
			
		||||
  static bool isEnabled();
 | 
			
		||||
  static void setEnabled(bool isOn);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
}  // namespace service
 | 
			
		||||
@ -1,4 +1,5 @@
 | 
			
		||||
#include "settings.h"
 | 
			
		||||
#include "runatsystemstart.h"
 | 
			
		||||
 | 
			
		||||
#include <QFile>
 | 
			
		||||
#include <QSettings>
 | 
			
		||||
@ -190,6 +191,11 @@ void Settings::save() const
 | 
			
		||||
 | 
			
		||||
  settings.endGroup();
 | 
			
		||||
 | 
			
		||||
  if (service::RunAtSystemStart::isAvailable()) {
 | 
			
		||||
    if (runAtSystemStart != service::RunAtSystemStart::isEnabled())
 | 
			
		||||
      service::RunAtSystemStart::setEnabled(runAtSystemStart);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  cleanupOutdated(settings);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -275,6 +281,8 @@ void Settings::load()
 | 
			
		||||
  showRecognized = settings.value(qs_showRecognized, showRecognized).toBool();
 | 
			
		||||
  showCaptured = settings.value(qs_showCaptured, showCaptured).toBool();
 | 
			
		||||
 | 
			
		||||
  runAtSystemStart = service::RunAtSystemStart::isEnabled();
 | 
			
		||||
 | 
			
		||||
  settings.endGroup();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -34,6 +34,7 @@ public:
 | 
			
		||||
  QString clipboardHotkey{"Ctrl+Alt+C"};
 | 
			
		||||
 | 
			
		||||
  bool showMessageOnStart{true};
 | 
			
		||||
  bool runAtSystemStart{false};
 | 
			
		||||
 | 
			
		||||
  ProxyType proxyType{ProxyType::System};
 | 
			
		||||
  QString proxyHostName;
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,7 @@
 | 
			
		||||
#include "settingseditor.h"
 | 
			
		||||
#include "languagecodes.h"
 | 
			
		||||
#include "manager.h"
 | 
			
		||||
#include "runatsystemstart.h"
 | 
			
		||||
#include "tesseract.h"
 | 
			
		||||
#include "ui_settingseditor.h"
 | 
			
		||||
#include "updates.h"
 | 
			
		||||
@ -22,6 +23,9 @@ SettingsEditor::SettingsEditor(Manager &manager, update::Loader &updater)
 | 
			
		||||
 | 
			
		||||
  connect(ui->portable, &QCheckBox::toggled,  //
 | 
			
		||||
          this, &SettingsEditor::handlePortableChanged);
 | 
			
		||||
 | 
			
		||||
  ui->runAtSystemStart->setEnabled(service::RunAtSystemStart::isAvailable());
 | 
			
		||||
 | 
			
		||||
  {
 | 
			
		||||
    auto model = new QStringListModel(this);
 | 
			
		||||
    model->setStringList({tr("General"), tr("Recognition"), tr("Correction"),
 | 
			
		||||
@ -97,6 +101,8 @@ Settings SettingsEditor::settings() const
 | 
			
		||||
  Settings settings;
 | 
			
		||||
  settings.setPortable(ui->portable->isChecked());
 | 
			
		||||
 | 
			
		||||
  settings.runAtSystemStart = ui->runAtSystemStart->isChecked();
 | 
			
		||||
 | 
			
		||||
  settings.captureHotkey = ui->captureEdit->keySequence().toString();
 | 
			
		||||
  settings.repeatCaptureHotkey =
 | 
			
		||||
      ui->repeatCaptureEdit->keySequence().toString();
 | 
			
		||||
@ -151,6 +157,8 @@ void SettingsEditor::setSettings(const Settings &settings)
 | 
			
		||||
  wasPortable_ = settings.isPortable();
 | 
			
		||||
  ui->portable->setChecked(settings.isPortable());
 | 
			
		||||
 | 
			
		||||
  ui->runAtSystemStart->setChecked(settings.runAtSystemStart);
 | 
			
		||||
 | 
			
		||||
  ui->captureEdit->setKeySequence(settings.captureHotkey);
 | 
			
		||||
  ui->repeatCaptureEdit->setKeySequence(settings.repeatCaptureHotkey);
 | 
			
		||||
  ui->repeatEdit->setKeySequence(settings.showLastHotkey);
 | 
			
		||||
 | 
			
		||||
@ -49,8 +49,8 @@
 | 
			
		||||
      <number>0</number>
 | 
			
		||||
     </property>
 | 
			
		||||
     <widget class="QWidget" name="pageGeneral">
 | 
			
		||||
      <layout class="QVBoxLayout" name="verticalLayout">
 | 
			
		||||
       <item>
 | 
			
		||||
      <layout class="QGridLayout" name="gridLayout_11">
 | 
			
		||||
       <item row="0" column="0" colspan="2">
 | 
			
		||||
        <widget class="QGroupBox" name="groupBox">
 | 
			
		||||
         <property name="title">
 | 
			
		||||
          <string>Shortcuts</string>
 | 
			
		||||
@ -99,7 +99,7 @@
 | 
			
		||||
         </layout>
 | 
			
		||||
        </widget>
 | 
			
		||||
       </item>
 | 
			
		||||
       <item>
 | 
			
		||||
       <item row="1" column="0" colspan="2">
 | 
			
		||||
        <widget class="QGroupBox" name="groupBox_2">
 | 
			
		||||
         <property name="title">
 | 
			
		||||
          <string>Proxy</string>
 | 
			
		||||
@ -172,21 +172,28 @@
 | 
			
		||||
         </layout>
 | 
			
		||||
        </widget>
 | 
			
		||||
       </item>
 | 
			
		||||
       <item>
 | 
			
		||||
       <item row="2" column="0">
 | 
			
		||||
        <widget class="QCheckBox" name="showOnStart">
 | 
			
		||||
         <property name="text">
 | 
			
		||||
          <string>Show message on program start</string>
 | 
			
		||||
         </property>
 | 
			
		||||
        </widget>
 | 
			
		||||
       </item>
 | 
			
		||||
       <item>
 | 
			
		||||
       <item row="2" column="1">
 | 
			
		||||
        <widget class="QCheckBox" name="runAtSystemStart">
 | 
			
		||||
         <property name="text">
 | 
			
		||||
          <string>Run at system start</string>
 | 
			
		||||
         </property>
 | 
			
		||||
        </widget>
 | 
			
		||||
       </item>
 | 
			
		||||
       <item row="3" column="0">
 | 
			
		||||
        <widget class="QCheckBox" name="portable">
 | 
			
		||||
         <property name="text">
 | 
			
		||||
          <string>Portable (store data in same folder)</string>
 | 
			
		||||
         </property>
 | 
			
		||||
        </widget>
 | 
			
		||||
       </item>
 | 
			
		||||
       <item>
 | 
			
		||||
       <item row="4" column="1">
 | 
			
		||||
        <spacer name="verticalSpacer_4">
 | 
			
		||||
         <property name="orientation">
 | 
			
		||||
          <enum>Qt::Vertical</enum>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user