2014-02-26 07:41:40 +01:00
// This file is part of RSS Guard.
//
2015-01-04 14:12:14 +01:00
// Copyright (C) 2011-2015 by Martin Rotter <rotter.martinos@gmail.com>
2014-02-26 07:41:40 +01:00
//
// RSS Guard is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// RSS Guard is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with RSS Guard. If not, see <http://www.gnu.org/licenses/>.
2013-06-14 22:15:37 +02:00
# include "gui/formsettings.h"
2013-12-21 21:08:52 +01:00
2014-03-27 08:40:23 +01:00
# include "definitions/definitions.h"
2013-12-23 11:39:24 +01:00
# include "core/feeddownloader.h"
2014-03-26 20:20:13 +01:00
# include "core/feedsmodel.h"
2014-10-20 18:38:24 +02:00
# include "core/messagesmodel.h"
2014-08-22 09:27:01 +02:00
# include "miscellaneous/application.h"
2014-03-27 08:40:23 +01:00
# include "miscellaneous/settings.h"
# include "miscellaneous/databasefactory.h"
# include "miscellaneous/localization.h"
# include "miscellaneous/systemfactory.h"
2014-03-28 09:04:36 +01:00
# include "miscellaneous/iconfactory.h"
2014-03-27 08:40:23 +01:00
# include "miscellaneous/skinfactory.h"
2014-03-26 12:23:27 +01:00
# include "network-web/webfactory.h"
# include "network-web/webbrowsernetworkaccessmanager.h"
# include "network-web/silentnetworkaccessmanager.h"
2014-03-26 13:30:18 +01:00
# include "network-web/webbrowser.h"
2013-12-21 21:08:52 +01:00
# include "gui/systemtrayicon.h"
2014-01-13 21:43:35 +01:00
# include "gui/feedmessageviewer.h"
# include "gui/feedsview.h"
2014-04-07 08:21:55 +02:00
# include "gui/feedstoolbar.h"
2013-12-21 21:08:52 +01:00
# include "gui/formmain.h"
2014-01-22 20:29:05 +01:00
# include "gui/messagebox.h"
2014-04-03 08:18:29 +02:00
# include "gui/basetoolbar.h"
# include "gui/messagestoolbar.h"
2014-10-20 18:38:24 +02:00
# include "gui/messagesview.h"
2014-03-27 08:40:23 +01:00
# include "dynamic-shortcuts/dynamicshortcuts.h"
2013-12-21 21:08:52 +01:00
# include <QProcess>
# include <QNetworkProxy>
# include <QColorDialog>
# include <QFileDialog>
2014-09-19 08:31:25 +02:00
# include <QKeyEvent>
2015-05-07 08:01:12 +02:00
# include <QDir>
2013-06-14 22:15:37 +02:00
FormSettings : : FormSettings ( QWidget * parent ) : QDialog ( parent ) , m_ui ( new Ui : : FormSettings ) {
m_ui - > setupUi ( this ) ;
2013-06-15 19:48:56 +02:00
2013-06-26 19:04:38 +02:00
// Set flags and attributes.
2014-08-20 09:05:19 +02:00
setWindowFlags ( Qt : : MSWindowsFixedSizeDialogHint | Qt : : Dialog | Qt : : WindowSystemMenuHint | Qt : : WindowTitleHint ) ;
2014-08-27 14:57:51 +02:00
setWindowIcon ( qApp - > icons ( ) - > fromTheme ( " application-settings " ) ) ;
2013-06-15 19:48:56 +02:00
2014-09-19 08:31:25 +02:00
m_ui - > m_editorMessagesToolbar - > activeItemsWidget ( ) - > viewport ( ) - > installEventFilter ( this ) ;
m_ui - > m_editorFeedsToolbar - > activeItemsWidget ( ) - > viewport ( ) - > installEventFilter ( this ) ;
m_ui - > m_editorMessagesToolbar - > availableItemsWidget ( ) - > viewport ( ) - > installEventFilter ( this ) ;
m_ui - > m_editorFeedsToolbar - > availableItemsWidget ( ) - > viewport ( ) - > installEventFilter ( this ) ;
2014-11-09 10:22:15 +01:00
# if defined(Q_OS_OS2)
2014-01-29 12:26:50 +01:00
MessageBox : : iconify ( m_ui - > m_buttonBox ) ;
# endif
2013-06-27 19:57:23 +02:00
// Setup behavior.
2014-02-27 18:15:16 +01:00
m_ui - > m_listSettings - > setCurrentRow ( 0 ) ;
2013-06-27 19:57:23 +02:00
m_ui - > m_treeLanguages - > setColumnCount ( 5 ) ;
m_ui - > m_treeLanguages - > setHeaderHidden ( false ) ;
2013-09-25 20:21:32 +02:00
m_ui - > m_treeLanguages - > setHeaderLabels ( QStringList ( )
2014-02-26 21:41:13 +01:00
< < /*: Language column of language list. */ tr ( " Language " )
< < /*: Lang. code column of language list. */ tr ( " Code " )
2013-09-25 20:21:32 +02:00
< < tr ( " Version " )
2015-05-29 08:56:44 +02:00
< < tr ( " Author " ) ) ;
2013-09-25 20:21:32 +02:00
m_ui - > m_treeSkins - > setColumnCount ( 4 ) ;
m_ui - > m_treeSkins - > setHeaderHidden ( false ) ;
m_ui - > m_treeSkins - > setHeaderLabels ( QStringList ( )
2014-02-27 18:15:16 +01:00
< < /*: Skin list name column. */ tr ( " Name " )
< < /*: Version column of skin list. */ tr ( " Version " )
2013-09-25 20:21:32 +02:00
< < tr ( " Author " )
< < tr ( " Email " ) ) ;
2013-08-30 17:40:17 +02:00
# if QT_VERSION >= 0x050000
2013-09-20 18:18:49 +02:00
// Setup languages.
2013-06-27 19:57:23 +02:00
m_ui - > m_treeLanguages - > header ( ) - > setSectionResizeMode ( 0 , QHeaderView : : ResizeToContents ) ;
m_ui - > m_treeLanguages - > header ( ) - > setSectionResizeMode ( 1 , QHeaderView : : ResizeToContents ) ;
m_ui - > m_treeLanguages - > header ( ) - > setSectionResizeMode ( 2 , QHeaderView : : ResizeToContents ) ;
m_ui - > m_treeLanguages - > header ( ) - > setSectionResizeMode ( 3 , QHeaderView : : ResizeToContents ) ;
m_ui - > m_treeLanguages - > header ( ) - > setSectionResizeMode ( 4 , QHeaderView : : ResizeToContents ) ;
2013-09-20 18:18:49 +02:00
// Setup skins.
m_ui - > m_treeSkins - > header ( ) - > setSectionResizeMode ( 0 , QHeaderView : : ResizeToContents ) ;
m_ui - > m_treeSkins - > header ( ) - > setSectionResizeMode ( 1 , QHeaderView : : ResizeToContents ) ;
m_ui - > m_treeSkins - > header ( ) - > setSectionResizeMode ( 2 , QHeaderView : : ResizeToContents ) ;
m_ui - > m_treeSkins - > header ( ) - > setSectionResizeMode ( 3 , QHeaderView : : ResizeToContents ) ;
2013-08-30 17:40:17 +02:00
# else
2013-09-20 18:18:49 +02:00
// Setup languages.
2013-08-30 17:40:17 +02:00
m_ui - > m_treeLanguages - > header ( ) - > setResizeMode ( 0 , QHeaderView : : ResizeToContents ) ;
m_ui - > m_treeLanguages - > header ( ) - > setResizeMode ( 1 , QHeaderView : : ResizeToContents ) ;
m_ui - > m_treeLanguages - > header ( ) - > setResizeMode ( 2 , QHeaderView : : ResizeToContents ) ;
m_ui - > m_treeLanguages - > header ( ) - > setResizeMode ( 3 , QHeaderView : : ResizeToContents ) ;
m_ui - > m_treeLanguages - > header ( ) - > setResizeMode ( 4 , QHeaderView : : ResizeToContents ) ;
2013-09-20 18:18:49 +02:00
// Setup skins.
m_ui - > m_treeSkins - > header ( ) - > setResizeMode ( 0 , QHeaderView : : ResizeToContents ) ;
m_ui - > m_treeSkins - > header ( ) - > setResizeMode ( 1 , QHeaderView : : ResizeToContents ) ;
m_ui - > m_treeSkins - > header ( ) - > setResizeMode ( 2 , QHeaderView : : ResizeToContents ) ;
m_ui - > m_treeSkins - > header ( ) - > setResizeMode ( 3 , QHeaderView : : ResizeToContents ) ;
2013-08-30 17:40:17 +02:00
# endif
2013-06-15 19:48:56 +02:00
// Establish needed connections.
2014-09-08 17:30:15 +02:00
connect ( m_ui - > m_buttonBox , SIGNAL ( accepted ( ) ) , this , SLOT ( saveSettings ( ) ) ) ;
connect ( m_ui - > m_cmbProxyType , SIGNAL ( currentIndexChanged ( int ) ) , this , SLOT ( onProxyTypeChanged ( int ) ) ) ;
connect ( m_ui - > m_checkShowPassword , SIGNAL ( stateChanged ( int ) ) , this , SLOT ( displayProxyPassword ( int ) ) ) ;
connect ( m_ui - > m_treeSkins , SIGNAL ( currentItemChanged ( QTreeWidgetItem * , QTreeWidgetItem * ) ) , this , SLOT ( onSkinSelected ( QTreeWidgetItem * , QTreeWidgetItem * ) ) ) ;
connect ( m_ui - > m_cmbExternalBrowserPreset , SIGNAL ( currentIndexChanged ( int ) ) , this , SLOT ( changeDefaultBrowserArguments ( int ) ) ) ;
connect ( m_ui - > m_btnExternalBrowserExecutable , SIGNAL ( clicked ( ) ) , this , SLOT ( selectBrowserExecutable ( ) ) ) ;
2015-05-12 09:48:22 +02:00
connect ( m_ui - > m_cmbExternalEmailPreset , SIGNAL ( currentIndexChanged ( int ) ) , this , SLOT ( changeDefaultEmailArguments ( int ) ) ) ;
connect ( m_ui - > m_btnExternalEmailExecutable , SIGNAL ( clicked ( ) ) , this , SLOT ( selectEmailExecutable ( ) ) ) ;
2014-09-08 17:30:15 +02:00
connect ( m_ui - > m_txtMysqlUsername - > lineEdit ( ) , SIGNAL ( textChanged ( QString ) ) , this , SLOT ( onMysqlUsernameChanged ( QString ) ) ) ;
connect ( m_ui - > m_txtMysqlHostname - > lineEdit ( ) , SIGNAL ( textChanged ( QString ) ) , this , SLOT ( onMysqlHostnameChanged ( QString ) ) ) ;
connect ( m_ui - > m_txtMysqlPassword - > lineEdit ( ) , SIGNAL ( textChanged ( QString ) ) , this , SLOT ( onMysqlPasswordChanged ( QString ) ) ) ;
2015-04-28 20:01:59 +02:00
connect ( m_ui - > m_txtMysqlDatabase - > lineEdit ( ) , SIGNAL ( textChanged ( QString ) ) , this , SLOT ( onMysqlDatabaseChanged ( QString ) ) ) ;
2014-09-08 17:30:15 +02:00
connect ( m_ui - > m_btnMysqlTestSetup , SIGNAL ( clicked ( ) ) , this , SLOT ( mysqlTestConnection ( ) ) ) ;
connect ( m_ui - > m_spinMysqlPort , SIGNAL ( editingFinished ( ) ) , this , SLOT ( onMysqlDataStorageEdited ( ) ) ) ;
connect ( m_ui - > m_txtMysqlHostname - > lineEdit ( ) , SIGNAL ( textEdited ( QString ) ) , this , SLOT ( onMysqlDataStorageEdited ( ) ) ) ;
connect ( m_ui - > m_txtMysqlPassword - > lineEdit ( ) , SIGNAL ( textEdited ( QString ) ) , this , SLOT ( onMysqlDataStorageEdited ( ) ) ) ;
connect ( m_ui - > m_txtMysqlUsername - > lineEdit ( ) , SIGNAL ( textEdited ( QString ) ) , this , SLOT ( onMysqlDataStorageEdited ( ) ) ) ;
connect ( m_ui - > m_cmbSelectToolBar , SIGNAL ( currentIndexChanged ( int ) ) , m_ui - > m_stackedToolbars , SLOT ( setCurrentIndex ( int ) ) ) ;
connect ( m_ui - > m_cmbDatabaseDriver , SIGNAL ( currentIndexChanged ( int ) ) , this , SLOT ( selectSqlBackend ( int ) ) ) ;
2015-01-24 09:32:54 +01:00
connect ( m_ui - > m_btnDownloadsTargetDirectory , SIGNAL ( clicked ( ) ) , this , SLOT ( selectDownloadsDirectory ( ) ) ) ;
2015-04-06 18:55:40 +02:00
connect ( m_ui - > m_checkMysqlShowPassword , SIGNAL ( toggled ( bool ) ) , this , SLOT ( switchMysqlPasswordVisiblity ( bool ) ) ) ;
2013-06-15 19:48:56 +02:00
// Load all settings.
2013-06-24 16:18:13 +02:00
loadGeneral ( ) ;
2014-02-07 21:39:59 +01:00
loadDataStorage ( ) ;
2013-06-30 15:22:44 +02:00
loadShortcuts ( ) ;
2013-06-15 19:48:56 +02:00
loadInterface ( ) ;
2013-07-02 18:57:04 +02:00
loadProxy ( ) ;
2013-07-24 19:06:09 +02:00
loadBrowser ( ) ;
2013-06-27 19:57:23 +02:00
loadLanguage ( ) ;
2013-12-09 16:05:16 +01:00
loadFeedsMessages ( ) ;
2015-01-24 09:32:54 +01:00
loadDownloads ( ) ;
2013-06-14 22:15:37 +02:00
}
FormSettings : : ~ FormSettings ( ) {
2013-12-21 21:08:52 +01:00
qDebug ( " Destroying FormSettings distance. " ) ;
2013-06-14 22:15:37 +02:00
delete m_ui ;
}
2013-06-15 19:48:56 +02:00
2013-12-09 16:05:16 +01:00
void FormSettings : : changeDefaultBrowserArguments ( int index ) {
if ( index ! = 0 ) {
m_ui - > m_txtExternalBrowserArguments - > setText ( m_ui - > m_cmbExternalBrowserPreset - > itemData ( index ) . toString ( ) ) ;
}
}
2013-09-22 07:38:42 +02:00
void FormSettings : : onSkinSelected ( QTreeWidgetItem * current ,
QTreeWidgetItem * previous ) {
2013-12-12 10:10:17 +01:00
Q_UNUSED ( previous )
2013-09-22 07:38:42 +02:00
if ( current ! = NULL ) {
Skin skin = current - > data ( 0 , Qt : : UserRole ) . value < Skin > ( ) ;
m_ui - > m_lblSelectedContents - > setText ( skin . m_visibleName ) ;
}
}
2015-01-24 09:32:54 +01:00
void FormSettings : : loadDownloads ( ) {
2015-05-07 08:01:12 +02:00
m_ui - > m_txtDownloadsTargetDirectory - > setText ( QDir : : toNativeSeparators ( qApp - > settings ( ) - > value ( GROUP ( Downloads ) ,
SETTING ( Downloads : : TargetDirectory ) ) . toString ( ) ) ) ;
2015-01-24 09:32:54 +01:00
m_ui - > m_rbDownloadsAskEachFile - > setChecked ( qApp - > settings ( ) - > value ( GROUP ( Downloads ) ,
SETTING ( Downloads : : AlwaysPromptForFilename ) ) . toBool ( ) ) ;
}
void FormSettings : : saveDownloads ( ) {
qApp - > settings ( ) - > setValue ( GROUP ( Downloads ) , Downloads : : TargetDirectory , m_ui - > m_txtDownloadsTargetDirectory - > text ( ) ) ;
2015-05-07 08:01:12 +02:00
qApp - > settings ( ) - > setValue ( GROUP ( Downloads ) , Downloads : : AlwaysPromptForFilename , m_ui - > m_rbDownloadsAskEachFile - > isChecked ( ) ) ;
qApp - > downloadManager ( ) - > setDownloadDirectory ( m_ui - > m_txtDownloadsTargetDirectory - > text ( ) ) ;
2015-01-24 09:32:54 +01:00
}
void FormSettings : : selectDownloadsDirectory ( ) {
QString target_directory = QFileDialog : : getExistingDirectory ( this ,
tr ( " Select downloads target directory " ) ,
m_ui - > m_txtDownloadsTargetDirectory - > text ( )
) ;
if ( ! target_directory . isEmpty ( ) ) {
m_ui - > m_txtDownloadsTargetDirectory - > setText ( QDir : : toNativeSeparators ( target_directory ) ) ;
}
}
2013-12-11 15:00:15 +01:00
void FormSettings : : selectBrowserExecutable ( ) {
QString executable_file = QFileDialog : : getOpenFileName ( this ,
tr ( " Select web browser executable " ) ,
2014-10-09 18:20:54 +02:00
qApp - > homeFolderPath ( ) ,
2014-02-27 18:15:16 +01:00
//: File filter for external browser selection dialog.
2014-11-09 10:22:15 +01:00
# if defined(Q_OS_LINUX)
tr ( " Executables (*) " )
# else
tr ( " Executables (*.*) " )
# endif
) ;
2013-12-11 15:00:15 +01:00
if ( ! executable_file . isEmpty ( ) ) {
2015-05-12 09:48:22 +02:00
m_ui - > m_txtExternalBrowserExecutable - > setText ( QDir : : toNativeSeparators ( executable_file ) ) ;
}
}
void FormSettings : : changeDefaultEmailArguments ( int index ) {
if ( index ! = 0 ) {
m_ui - > m_txtExternalEmailArguments - > setText ( m_ui - > m_cmbExternalEmailPreset - > itemData ( index ) . toString ( ) ) ;
}
}
void FormSettings : : selectEmailExecutable ( ) {
QString executable_file = QFileDialog : : getOpenFileName ( this ,
tr ( " Select e-mail executable " ) ,
qApp - > homeFolderPath ( ) ,
//: File filter for external e-mail selection dialog.
# if defined(Q_OS_LINUX)
tr ( " Executables (*) " )
# else
tr ( " Executables (*.*) " )
# endif
) ;
if ( ! executable_file . isEmpty ( ) ) {
m_ui - > m_txtExternalEmailExecutable - > setText ( QDir : : toNativeSeparators ( executable_file ) ) ;
2013-12-11 15:00:15 +01:00
}
}
2013-12-09 16:05:16 +01:00
void FormSettings : : loadFeedsMessages ( ) {
2014-07-26 14:44:03 +02:00
Settings * settings = qApp - > settings ( ) ;
2014-11-10 18:11:45 +01:00
m_ui - > m_checkKeppMessagesInTheMiddle - > setChecked ( settings - > value ( GROUP ( Messages ) , SETTING ( Messages : : KeepCursorInCenter ) ) . toBool ( ) ) ;
m_ui - > m_checkRemoveReadMessagesOnExit - > setChecked ( settings - > value ( GROUP ( Messages ) , SETTING ( Messages : : ClearReadOnExit ) ) . toBool ( ) ) ;
m_ui - > m_checkAutoUpdate - > setChecked ( settings - > value ( GROUP ( Feeds ) , SETTING ( Feeds : : AutoUpdateEnabled ) ) . toBool ( ) ) ;
m_ui - > m_spinAutoUpdateInterval - > setValue ( settings - > value ( GROUP ( Feeds ) , SETTING ( Feeds : : AutoUpdateInterval ) ) . toInt ( ) ) ;
2014-11-08 17:44:00 +01:00
m_ui - > m_spinFeedUpdateTimeout - > setValue ( settings - > value ( GROUP ( Feeds ) , SETTING ( Feeds : : UpdateTimeout ) ) . toInt ( ) ) ;
2014-11-10 18:11:45 +01:00
m_ui - > m_checkUpdateAllFeedsOnStartup - > setChecked ( settings - > value ( GROUP ( Feeds ) , SETTING ( Feeds : : FeedsUpdateOnStartup ) ) . toBool ( ) ) ;
2014-03-03 13:25:30 +01:00
m_ui - > m_cmbCountsFeedList - > addItems ( QStringList ( ) < < " (%unread) " < < " [%unread] " < < " %unread/%all " < < " %unread-%all " < < " [%unread|%all] " ) ;
2014-11-10 18:11:45 +01:00
m_ui - > m_cmbCountsFeedList - > setEditText ( settings - > value ( GROUP ( Feeds ) , SETTING ( Feeds : : CountFormat ) ) . toString ( ) ) ;
2015-01-04 14:12:14 +01:00
m_ui - > m_checkRemoveDuplicateMessages - > setChecked ( settings - > value ( GROUP ( Messages ) , SETTING ( Messages : : RemoveDuplicates ) ) . toBool ( ) ) ;
2014-10-20 18:38:24 +02:00
initializeMessageDateFormats ( ) ;
2014-11-10 18:11:45 +01:00
m_ui - > m_checkMessagesDateTimeFormat - > setChecked ( settings - > value ( GROUP ( Messages ) , SETTING ( Messages : : UseCustomDate ) ) . toBool ( ) ) ;
int index_format = m_ui - > m_cmbMessagesDateTimeFormat - > findData ( settings - > value ( GROUP ( Messages ) , SETTING ( Messages : : CustomDateFormat ) ) . toString ( ) ) ;
2014-10-20 18:38:24 +02:00
if ( index_format > = 0 ) {
m_ui - > m_cmbMessagesDateTimeFormat - > setCurrentIndex ( index_format ) ;
}
}
void FormSettings : : initializeMessageDateFormats ( ) {
QStringList best_formats ; best_formats < < " d/M/yyyy hh:mm:ss " < < " ddd, d. M. yy hh:mm:ss " < <
" yyyy-MM-dd HH:mm:ss.z " < < " yyyy-MM-ddThh:mm:ss " < <
" MMM d yyyy hh:mm:ss " ; ;
QLocale current_locale = qApp - > localization ( ) - > loadedLocale ( ) ;
QDateTime current_dt = QDateTime : : currentDateTime ( ) ;
foreach ( const QString & format , best_formats ) {
m_ui - > m_cmbMessagesDateTimeFormat - > addItem ( current_locale . toString ( current_dt , format ) , format ) ;
}
2013-12-09 16:05:16 +01:00
}
void FormSettings : : saveFeedsMessages ( ) {
2014-07-26 14:44:03 +02:00
Settings * settings = qApp - > settings ( ) ;
2014-11-10 18:11:45 +01:00
settings - > setValue ( GROUP ( Messages ) , Messages : : KeepCursorInCenter , m_ui - > m_checkKeppMessagesInTheMiddle - > isChecked ( ) ) ;
settings - > setValue ( GROUP ( Messages ) , Messages : : ClearReadOnExit , m_ui - > m_checkRemoveReadMessagesOnExit - > isChecked ( ) ) ;
settings - > setValue ( GROUP ( Feeds ) , Feeds : : AutoUpdateEnabled , m_ui - > m_checkAutoUpdate - > isChecked ( ) ) ;
settings - > setValue ( GROUP ( Feeds ) , Feeds : : AutoUpdateInterval , m_ui - > m_spinAutoUpdateInterval - > value ( ) ) ;
2014-11-08 17:44:00 +01:00
settings - > setValue ( GROUP ( Feeds ) , Feeds : : UpdateTimeout , m_ui - > m_spinFeedUpdateTimeout - > value ( ) ) ;
2014-11-10 18:11:45 +01:00
settings - > setValue ( GROUP ( Feeds ) , Feeds : : FeedsUpdateOnStartup , m_ui - > m_checkUpdateAllFeedsOnStartup - > isChecked ( ) ) ;
settings - > setValue ( GROUP ( Feeds ) , Feeds : : CountFormat , m_ui - > m_cmbCountsFeedList - > currentText ( ) ) ;
settings - > setValue ( GROUP ( Messages ) , Messages : : UseCustomDate , m_ui - > m_checkMessagesDateTimeFormat - > isChecked ( ) ) ;
settings - > setValue ( GROUP ( Messages ) , Messages : : CustomDateFormat ,
2014-10-20 18:38:24 +02:00
m_ui - > m_cmbMessagesDateTimeFormat - > itemData ( m_ui - > m_cmbMessagesDateTimeFormat - > currentIndex ( ) ) . toString ( ) ) ;
2015-01-04 14:12:14 +01:00
settings - > setValue ( GROUP ( Messages ) , Messages : : RemoveDuplicates , m_ui - > m_checkRemoveDuplicateMessages - > isChecked ( ) ) ;
2014-02-03 18:16:48 +01:00
2014-08-22 09:27:01 +02:00
qApp - > mainForm ( ) - > tabWidget ( ) - > feedMessageViewer ( ) - > feedsView ( ) - > updateAutoUpdateStatus ( ) ;
qApp - > mainForm ( ) - > tabWidget ( ) - > feedMessageViewer ( ) - > feedsView ( ) - > sourceModel ( ) - > reloadWholeLayout ( ) ;
2014-10-20 18:38:24 +02:00
qApp - > mainForm ( ) - > tabWidget ( ) - > feedMessageViewer ( ) - > messagesView ( ) - > sourceModel ( ) - > updateDateFormat ( ) ;
qApp - > mainForm ( ) - > tabWidget ( ) - > feedMessageViewer ( ) - > messagesView ( ) - > sourceModel ( ) - > reloadWholeLayout ( ) ;
2013-12-09 16:05:16 +01:00
}
2013-07-17 20:42:42 +02:00
void FormSettings : : displayProxyPassword ( int state ) {
if ( state = = Qt : : Checked ) {
m_ui - > m_txtProxyPassword - > setEchoMode ( QLineEdit : : Normal ) ;
}
else {
m_ui - > m_txtProxyPassword - > setEchoMode ( QLineEdit : : PasswordEchoOnEdit ) ;
}
}
2013-09-20 18:18:49 +02:00
bool FormSettings : : doSaveCheck ( ) {
bool everything_ok = true ;
2013-12-07 20:33:41 +01:00
QStringList resulting_information ;
2013-09-20 18:18:49 +02:00
2013-12-07 20:33:41 +01:00
// Setup indication of settings consistence.
2013-09-20 18:18:49 +02:00
if ( ! m_ui - > m_shortcuts - > areShortcutsUnique ( ) ) {
2013-12-10 22:06:45 +01:00
everything_ok = false ;
2013-12-20 16:30:39 +01:00
resulting_information . append ( tr ( " some keyboard shortcuts are not unique " ) ) ;
2013-09-20 18:18:49 +02:00
}
2014-03-02 18:35:17 +01:00
// User selected custom external browser but did not set its
// properties.
if ( m_ui - > m_grpCustomExternalBrowser - > isChecked ( ) & &
( m_ui - > m_txtExternalBrowserExecutable - > text ( ) . simplified ( ) . isEmpty ( ) | |
! m_ui - > m_txtExternalBrowserArguments - > text ( ) . simplified ( ) . contains ( " %1 " ) ) ) {
everything_ok = false ;
resulting_information . append ( tr ( " custom external browser is not set correctly " ) ) ;
}
2013-09-20 18:18:49 +02:00
if ( ! everything_ok ) {
2014-11-10 18:11:45 +01:00
resulting_information . replaceInStrings ( QRegExp ( " ^ " ) , QString : : fromUtf8 ( " • " ) ) ;
2013-12-20 16:30:39 +01:00
2014-01-22 20:29:05 +01:00
MessageBox : : show ( this ,
QMessageBox : : Critical ,
tr ( " Cannot save settings " ) ,
tr ( " Some critical settings are not set. You must fix these settings in order confirm new settings. " ) ,
QString ( ) ,
tr ( " List of errors: \n %1. " ) . arg ( resulting_information . join ( " , \n " ) ) ) ;
2013-09-20 18:18:49 +02:00
}
return everything_ok ;
}
2013-11-30 22:23:01 +01:00
void FormSettings : : promptForRestart ( ) {
2014-08-28 08:15:33 +02:00
if ( ! m_changedDataTexts . isEmpty ( ) ) {
2014-08-19 17:21:32 +02:00
QStringList changed_settings_description = m_changedDataTexts . replaceInStrings ( QRegExp ( " ^ " ) , QString : : fromUtf8 ( " • " ) ) ;
2014-10-05 17:33:46 +02:00
QMessageBox : : StandardButton clicked_button = MessageBox : : show ( this ,
QMessageBox : : Question ,
tr ( " Critical settings were changed " ) ,
tr ( " Some critical settings were changed and will be applied after the application gets restarted. "
" \n \n You have to restart manually. " ) ,
tr ( " Do you want to restart now? " ) ,
tr ( " List of changes: \n %1. " ) . arg ( changed_settings_description . join ( " , \n " ) ) ,
QMessageBox : : Yes | QMessageBox : : No , QMessageBox : : Yes ) ;
if ( clicked_button = = QMessageBox : : Yes ) {
qApp - > restart ( ) ;
}
2013-11-30 22:23:01 +01:00
}
}
2013-06-15 19:48:56 +02:00
void FormSettings : : saveSettings ( ) {
2013-09-20 18:18:49 +02:00
// Make sure everything is saveable.
if ( ! doSaveCheck ( ) ) {
return ;
}
2013-06-24 16:18:13 +02:00
// Save all settings.
saveGeneral ( ) ;
2014-02-07 21:39:59 +01:00
saveDataStorage ( ) ;
2013-06-30 15:22:44 +02:00
saveShortcuts ( ) ;
2013-06-15 19:48:56 +02:00
saveInterface ( ) ;
2013-07-02 18:57:04 +02:00
saveProxy ( ) ;
2013-07-24 19:06:09 +02:00
saveBrowser ( ) ;
2013-06-27 19:57:23 +02:00
saveLanguage ( ) ;
2013-12-09 16:05:16 +01:00
saveFeedsMessages ( ) ;
2015-01-24 09:32:54 +01:00
saveDownloads ( ) ;
2013-06-30 19:02:24 +02:00
2014-07-26 14:44:03 +02:00
qApp - > settings ( ) - > checkSettings ( ) ;
2013-11-30 22:23:01 +01:00
promptForRestart ( ) ;
2013-09-20 18:18:49 +02:00
accept ( ) ;
2013-06-27 19:57:23 +02:00
}
2013-07-02 18:57:04 +02:00
void FormSettings : : onProxyTypeChanged ( int index ) {
QNetworkProxy : : ProxyType selected_type = static_cast < QNetworkProxy : : ProxyType > ( m_ui - > m_cmbProxyType - > itemData ( index ) . toInt ( ) ) ;
2014-02-14 17:22:20 +01:00
bool is_proxy_selected = selected_type ! = QNetworkProxy : : NoProxy & & selected_type ! = QNetworkProxy : : DefaultProxy ;
2013-07-02 18:57:04 +02:00
2013-07-07 15:17:25 +02:00
m_ui - > m_txtProxyHost - > setEnabled ( is_proxy_selected ) ;
m_ui - > m_txtProxyPassword - > setEnabled ( is_proxy_selected ) ;
m_ui - > m_txtProxyUsername - > setEnabled ( is_proxy_selected ) ;
m_ui - > m_spinProxyPort - > setEnabled ( is_proxy_selected ) ;
m_ui - > m_checkShowPassword - > setEnabled ( is_proxy_selected ) ;
2013-07-23 20:42:06 +02:00
m_ui - > m_lblProxyHost - > setEnabled ( is_proxy_selected ) ;
m_ui - > m_lblProxyInfo - > setEnabled ( is_proxy_selected ) ;
m_ui - > m_lblProxyPassword - > setEnabled ( is_proxy_selected ) ;
m_ui - > m_lblProxyPort - > setEnabled ( is_proxy_selected ) ;
m_ui - > m_lblProxyUsername - > setEnabled ( is_proxy_selected ) ;
2013-07-02 18:57:04 +02:00
}
2013-07-24 19:06:09 +02:00
void FormSettings : : loadBrowser ( ) {
2014-07-26 14:44:03 +02:00
Settings * settings = qApp - > settings ( ) ;
2013-08-30 17:40:17 +02:00
2013-07-24 19:06:09 +02:00
// Load settings of web browser GUI.
2014-11-10 18:11:45 +01:00
m_ui - > m_checkMouseGestures - > setChecked ( settings - > value ( GROUP ( Browser ) , SETTING ( Browser : : GesturesEnabled ) ) . toBool ( ) ) ;
m_ui - > m_checkQueueTabs - > setChecked ( settings - > value ( GROUP ( Browser ) , SETTING ( Browser : : QueueTabs ) ) . toBool ( ) ) ;
2014-02-01 17:32:31 +01:00
m_ui - > m_cmbExternalBrowserPreset - > addItem ( tr ( " Opera 12 or older " ) , " -nosession %1 " ) ;
2014-11-10 18:11:45 +01:00
m_ui - > m_txtExternalBrowserExecutable - > setText ( settings - > value ( GROUP ( Browser ) , SETTING ( Browser : : CustomExternalBrowserExecutable ) ) . toString ( ) ) ;
m_ui - > m_txtExternalBrowserArguments - > setText ( settings - > value ( GROUP ( Browser ) , SETTING ( Browser : : CustomExternalBrowserArguments ) ) . toString ( ) ) ;
m_ui - > m_grpCustomExternalBrowser - > setChecked ( settings - > value ( GROUP ( Browser ) , SETTING ( Browser : : CustomExternalBrowserEnabled ) ) . toBool ( ) ) ;
2014-03-09 11:45:36 +01:00
m_ui - > m_checkAutoLoadImages - > setChecked ( WebFactory : : instance ( ) - > autoloadImages ( ) ) ;
m_ui - > m_checkEnableJavascript - > setChecked ( WebFactory : : instance ( ) - > javascriptEnabled ( ) ) ;
m_ui - > m_checkEnablePlugins - > setChecked ( WebFactory : : instance ( ) - > pluginsEnabled ( ) ) ;
2015-05-12 09:48:22 +02:00
// Load settings of e-mail.
m_ui - > m_cmbExternalEmailPreset - > addItem ( tr ( " Mozilla Thunderbird " ) , " -compose \" subject='%1',body='%2' \" " ) ;
m_ui - > m_txtExternalEmailExecutable - > setText ( settings - > value ( GROUP ( Browser ) , SETTING ( Browser : : CustomExternalEmailExecutable ) ) . toString ( ) ) ;
m_ui - > m_txtExternalEmailArguments - > setText ( settings - > value ( GROUP ( Browser ) , SETTING ( Browser : : CustomExternalEmailArguments ) ) . toString ( ) ) ;
m_ui - > m_grpCustomExternalEmail - > setChecked ( settings - > value ( GROUP ( Browser ) , SETTING ( Browser : : CustomExternalEmailEnabled ) ) . toBool ( ) ) ;
2013-07-24 19:06:09 +02:00
}
void FormSettings : : saveBrowser ( ) {
2014-07-26 14:44:03 +02:00
Settings * settings = qApp - > settings ( ) ;
2013-08-30 17:40:17 +02:00
2013-07-24 19:06:09 +02:00
// Save settings of GUI of web browser.
2014-11-10 18:11:45 +01:00
settings - > setValue ( GROUP ( Browser ) , Browser : : CustomExternalBrowserEnabled , m_ui - > m_grpCustomExternalBrowser - > isChecked ( ) ) ;
settings - > setValue ( GROUP ( Browser ) , Browser : : GesturesEnabled , m_ui - > m_checkMouseGestures - > isChecked ( ) ) ;
settings - > setValue ( GROUP ( Browser ) , Browser : : QueueTabs , m_ui - > m_checkQueueTabs - > isChecked ( ) ) ;
settings - > setValue ( GROUP ( Browser ) , Browser : : CustomExternalBrowserExecutable , m_ui - > m_txtExternalBrowserExecutable - > text ( ) ) ;
settings - > setValue ( GROUP ( Browser ) , Browser : : CustomExternalBrowserArguments , m_ui - > m_txtExternalBrowserArguments - > text ( ) ) ;
2014-02-01 17:32:31 +01:00
2015-05-12 09:48:22 +02:00
// Save settings of e-mail.
settings - > setValue ( GROUP ( Browser ) , Browser : : CustomExternalEmailExecutable , m_ui - > m_txtExternalEmailExecutable - > text ( ) ) ;
settings - > setValue ( GROUP ( Browser ) , Browser : : CustomExternalEmailArguments , m_ui - > m_txtExternalEmailArguments - > text ( ) ) ;
settings - > setValue ( GROUP ( Browser ) , Browser : : CustomExternalEmailEnabled , m_ui - > m_grpCustomExternalEmail - > isChecked ( ) ) ;
2014-03-09 11:45:36 +01:00
WebFactory : : instance ( ) - > switchImages ( m_ui - > m_checkAutoLoadImages - > isChecked ( ) ) ;
WebFactory : : instance ( ) - > switchJavascript ( m_ui - > m_checkEnableJavascript - > isChecked ( ) ) ;
WebFactory : : instance ( ) - > switchPlugins ( m_ui - > m_checkEnablePlugins - > isChecked ( ) ) ;
2013-07-24 19:06:09 +02:00
}
2013-07-02 18:57:04 +02:00
void FormSettings : : loadProxy ( ) {
2014-02-16 08:24:27 +01:00
m_ui - > m_cmbProxyType - > addItem ( tr ( " No proxy " ) , QNetworkProxy : : NoProxy ) ;
m_ui - > m_cmbProxyType - > addItem ( tr ( " System proxy " ) , QNetworkProxy : : DefaultProxy ) ;
2013-07-02 18:57:04 +02:00
m_ui - > m_cmbProxyType - > addItem ( tr ( " Socks5 " ) , QNetworkProxy : : Socks5Proxy ) ;
m_ui - > m_cmbProxyType - > addItem ( tr ( " Http " ) , QNetworkProxy : : HttpProxy ) ;
2013-07-17 20:42:42 +02:00
// Load the settings.
2014-07-26 14:44:03 +02:00
Settings * settings = qApp - > settings ( ) ;
2014-11-10 18:11:45 +01:00
QNetworkProxy : : ProxyType selected_proxy_type = static_cast < QNetworkProxy : : ProxyType > ( settings - > value ( GROUP ( Proxy ) , SETTING ( Proxy : : Type ) ) . toInt ( ) ) ;
2013-08-30 17:40:17 +02:00
2013-07-17 20:42:42 +02:00
m_ui - > m_cmbProxyType - > setCurrentIndex ( m_ui - > m_cmbProxyType - > findData ( selected_proxy_type ) ) ;
2014-11-10 18:11:45 +01:00
m_ui - > m_txtProxyHost - > setText ( settings - > value ( GROUP ( Proxy ) , SETTING ( Proxy : : Host ) ) . toString ( ) ) ;
m_ui - > m_txtProxyUsername - > setText ( settings - > value ( GROUP ( Proxy ) , SETTING ( Proxy : : Username ) ) . toString ( ) ) ;
m_ui - > m_txtProxyPassword - > setText ( settings - > value ( GROUP ( Proxy ) , SETTING ( Proxy : : Password ) ) . toString ( ) ) ;
m_ui - > m_spinProxyPort - > setValue ( settings - > value ( GROUP ( Proxy ) , SETTING ( Proxy : : Port ) ) . toInt ( ) ) ;
2013-07-02 18:57:04 +02:00
}
void FormSettings : : saveProxy ( ) {
2014-07-26 14:44:03 +02:00
Settings * settings = qApp - > settings ( ) ;
2013-08-30 17:40:17 +02:00
2014-11-10 18:11:45 +01:00
settings - > setValue ( GROUP ( Proxy ) , Proxy : : Type , m_ui - > m_cmbProxyType - > itemData ( m_ui - > m_cmbProxyType - > currentIndex ( ) ) ) ;
settings - > setValue ( GROUP ( Proxy ) , Proxy : : Host , m_ui - > m_txtProxyHost - > text ( ) ) ;
settings - > setValue ( GROUP ( Proxy ) , Proxy : : Username , m_ui - > m_txtProxyUsername - > text ( ) ) ;
settings - > setValue ( GROUP ( Proxy ) , Proxy : : Password , m_ui - > m_txtProxyPassword - > text ( ) ) ;
settings - > setValue ( GROUP ( Proxy ) , Proxy : : Port , m_ui - > m_spinProxyPort - > value ( ) ) ;
2013-07-18 17:44:23 +02:00
// Reload settings for all network access managers.
2014-02-24 10:32:14 +01:00
WebBrowserNetworkAccessManager : : instance ( ) - > loadSettings ( ) ;
2013-07-02 18:57:04 +02:00
}
2013-06-27 19:57:23 +02:00
void FormSettings : : loadLanguage ( ) {
2014-08-27 08:05:30 +02:00
foreach ( const Language & language , qApp - > localization ( ) - > installedLanguages ( ) ) {
2013-06-27 19:57:23 +02:00
QTreeWidgetItem * item = new QTreeWidgetItem ( m_ui - > m_treeLanguages ) ;
2013-12-03 18:38:43 +01:00
item - > setText ( 0 , language . m_name ) ;
item - > setText ( 1 , language . m_code ) ;
item - > setText ( 2 , language . m_version ) ;
item - > setText ( 3 , language . m_author ) ;
2014-11-10 18:11:45 +01:00
item - > setIcon ( 0 , qApp - > icons ( ) - > fromTheme ( QString ( FLAG_ICON_SUBFOLDER ) + QDir : : separator ( ) + language . m_code ) ) ;
2013-06-27 19:57:23 +02:00
}
2014-11-10 18:11:45 +01:00
QList < QTreeWidgetItem * > matching_items = m_ui - > m_treeLanguages - > findItems ( qApp - > localization ( ) - > loadedLanguage ( ) , Qt : : MatchContains , 1 ) ;
2013-06-27 19:57:23 +02:00
if ( ! matching_items . isEmpty ( ) ) {
m_ui - > m_treeLanguages - > setCurrentItem ( matching_items [ 0 ] ) ;
}
}
void FormSettings : : saveLanguage ( ) {
2013-08-30 17:40:17 +02:00
if ( m_ui - > m_treeLanguages - > currentItem ( ) = = NULL ) {
2013-06-29 15:48:15 +02:00
qDebug ( " No localizations loaded in settings dialog, so no saving for them. " ) ;
return ;
}
2014-07-26 14:44:03 +02:00
Settings * settings = qApp - > settings ( ) ;
2014-08-27 08:05:30 +02:00
QString actual_lang = qApp - > localization ( ) - > loadedLanguage ( ) ;
2013-06-27 19:57:23 +02:00
QString new_lang = m_ui - > m_treeLanguages - > currentItem ( ) - > text ( 1 ) ;
2013-12-06 15:12:30 +01:00
// Save prompt for restart if language has changed.
2013-06-27 19:57:23 +02:00
if ( new_lang ! = actual_lang ) {
2013-12-20 16:30:39 +01:00
m_changedDataTexts . append ( tr ( " language changed " ) ) ;
2014-11-12 17:56:05 +01:00
settings - > setValue ( GROUP ( General ) , General : : Language , new_lang ) ;
2013-06-27 19:57:23 +02:00
}
2013-06-15 19:48:56 +02:00
}
2013-06-30 15:22:44 +02:00
void FormSettings : : loadShortcuts ( ) {
2014-08-22 09:27:01 +02:00
m_ui - > m_shortcuts - > populate ( qApp - > mainForm ( ) - > allActions ( ) ) ;
2013-06-30 15:22:44 +02:00
}
void FormSettings : : saveShortcuts ( ) {
// Update the actual shortcuts of some actions.
m_ui - > m_shortcuts - > updateShortcuts ( ) ;
// Save new shortcuts to the settings.
2014-08-22 09:27:01 +02:00
DynamicShortcuts : : save ( qApp - > mainForm ( ) - > allActions ( ) ) ;
2013-06-30 15:22:44 +02:00
}
2014-02-07 21:39:59 +01:00
void FormSettings : : loadDataStorage ( ) {
2014-11-10 18:11:45 +01:00
m_ui - > m_lblMysqlTestResult - > setStatus ( WidgetWithStatus : : Information , tr ( " No connection test triggered so far. " ) , tr ( " You did not executed any connection test yet. " ) ) ;
2014-02-11 17:23:40 +01:00
2014-02-07 21:39:59 +01:00
// Load SQLite.
2015-06-05 09:24:50 +02:00
m_ui - > m_cmbDatabaseDriver - > addItem ( qApp - > database ( ) - > humanDriverName ( DatabaseFactory : : SQLITE ) , APP_DB_SQLITE_DRIVER ) ;
2014-02-07 11:49:24 +01:00
2014-01-21 07:55:10 +01:00
// Load in-memory database status.
2014-07-26 14:44:03 +02:00
Settings * settings = qApp - > settings ( ) ;
2014-11-10 18:11:45 +01:00
m_ui - > m_checkSqliteUseInMemoryDatabase - > setChecked ( settings - > value ( GROUP ( Database ) , SETTING ( Database : : UseInMemory ) ) . toBool ( ) ) ;
2014-02-07 11:49:24 +01:00
2014-04-15 19:48:29 +02:00
if ( QSqlDatabase : : isDriverAvailable ( APP_DB_MYSQL_DRIVER ) ) {
2014-09-08 17:30:15 +02:00
onMysqlHostnameChanged ( QString ( ) ) ;
onMysqlUsernameChanged ( QString ( ) ) ;
onMysqlPasswordChanged ( QString ( ) ) ;
2015-04-28 20:01:59 +02:00
onMysqlDatabaseChanged ( QString ( ) ) ;
2014-09-08 17:30:15 +02:00
2014-02-07 11:49:24 +01:00
// Load MySQL.
2015-06-05 09:24:50 +02:00
m_ui - > m_cmbDatabaseDriver - > addItem ( qApp - > database ( ) - > humanDriverName ( DatabaseFactory : : MYSQL ) , APP_DB_MYSQL_DRIVER ) ;
2014-02-08 09:12:00 +01:00
// Setup placeholders.
m_ui - > m_txtMysqlHostname - > lineEdit ( ) - > setPlaceholderText ( tr ( " Hostname of your MySQL server " ) ) ;
m_ui - > m_txtMysqlUsername - > lineEdit ( ) - > setPlaceholderText ( tr ( " Username to login with " ) ) ;
m_ui - > m_txtMysqlPassword - > lineEdit ( ) - > setPlaceholderText ( tr ( " Password for your username " ) ) ;
2015-04-28 20:01:59 +02:00
m_ui - > m_txtMysqlDatabase - > lineEdit ( ) - > setPlaceholderText ( tr ( " Working database which you have full access to. " ) ) ;
2014-02-07 11:49:24 +01:00
2014-11-10 21:19:09 +01:00
m_ui - > m_txtMysqlHostname - > lineEdit ( ) - > setText ( settings - > value ( GROUP ( Database ) , SETTING ( Database : : MySQLHostname ) ) . toString ( ) ) ;
m_ui - > m_txtMysqlUsername - > lineEdit ( ) - > setText ( settings - > value ( GROUP ( Database ) , SETTING ( Database : : MySQLUsername ) ) . toString ( ) ) ;
2015-04-06 18:55:40 +02:00
m_ui - > m_txtMysqlPassword - > lineEdit ( ) - > setText ( settings - > value ( GROUP ( Database ) , SETTING ( Database : : MySQLPassword ) ) . toString ( ) ) ;
2015-04-28 20:01:59 +02:00
m_ui - > m_txtMysqlDatabase - > lineEdit ( ) - > setText ( settings - > value ( GROUP ( Database ) , SETTING ( Database : : MySQLDatabase ) ) . toString ( ) ) ;
2014-11-10 21:19:09 +01:00
m_ui - > m_spinMysqlPort - > setValue ( settings - > value ( GROUP ( Database ) , SETTING ( Database : : MySQLPort ) ) . toInt ( ) ) ;
2015-04-06 18:55:40 +02:00
m_ui - > m_checkMysqlShowPassword - > setChecked ( false ) ;
2014-02-07 11:49:24 +01:00
}
2014-11-10 21:19:09 +01:00
int index_current_backend = m_ui - > m_cmbDatabaseDriver - > findData ( settings - > value ( GROUP ( Database ) , SETTING ( Database : : ActiveDriver ) ) . toString ( ) ) ;
2014-02-09 17:12:05 +01:00
if ( index_current_backend > = 0 ) {
m_ui - > m_cmbDatabaseDriver - > setCurrentIndex ( index_current_backend ) ;
}
2013-06-24 16:18:13 +02:00
}
2014-02-07 21:39:59 +01:00
void FormSettings : : saveDataStorage ( ) {
2014-01-21 07:55:10 +01:00
// Setup in-memory database status.
2014-07-26 14:44:03 +02:00
Settings * settings = qApp - > settings ( ) ;
2014-11-10 21:19:09 +01:00
bool original_inmemory = settings - > value ( GROUP ( Database ) , SETTING ( Database : : UseInMemory ) ) . toBool ( ) ;
2014-02-07 16:57:16 +01:00
bool new_inmemory = m_ui - > m_checkSqliteUseInMemoryDatabase - > isChecked ( ) ;
2014-01-21 07:55:10 +01:00
if ( original_inmemory ! = new_inmemory ) {
m_changedDataTexts . append ( tr ( " in-memory database switched " ) ) ;
}
2014-02-07 11:49:24 +01:00
// Save data storage settings.
2014-11-10 21:19:09 +01:00
QString original_db_driver = settings - > value ( GROUP ( Database ) , SETTING ( Database : : ActiveDriver ) ) . toString ( ) ;
2014-02-07 11:49:24 +01:00
QString selected_db_driver = m_ui - > m_cmbDatabaseDriver - > itemData ( m_ui - > m_cmbDatabaseDriver - > currentIndex ( ) ) . toString ( ) ;
// Save SQLite.
2014-11-10 21:19:09 +01:00
settings - > setValue ( GROUP ( Database ) , Database : : UseInMemory , new_inmemory ) ;
2014-02-07 11:49:24 +01:00
2014-04-15 19:48:29 +02:00
if ( QSqlDatabase : : isDriverAvailable ( APP_DB_MYSQL_DRIVER ) ) {
2014-02-07 11:49:24 +01:00
// Save MySQL.
2014-11-10 21:19:09 +01:00
settings - > setValue ( GROUP ( Database ) , Database : : MySQLHostname , m_ui - > m_txtMysqlHostname - > lineEdit ( ) - > text ( ) ) ;
settings - > setValue ( GROUP ( Database ) , Database : : MySQLUsername , m_ui - > m_txtMysqlUsername - > lineEdit ( ) - > text ( ) ) ;
settings - > setValue ( GROUP ( Database ) , Database : : MySQLPassword , m_ui - > m_txtMysqlPassword - > lineEdit ( ) - > text ( ) ) ;
2015-04-28 20:01:59 +02:00
settings - > setValue ( GROUP ( Database ) , Database : : MySQLDatabase , m_ui - > m_txtMysqlDatabase - > lineEdit ( ) - > text ( ) ) ;
2014-11-10 21:19:09 +01:00
settings - > setValue ( GROUP ( Database ) , Database : : MySQLPort , m_ui - > m_spinMysqlPort - > value ( ) ) ;
2014-02-07 11:49:24 +01:00
}
2014-11-10 21:19:09 +01:00
settings - > setValue ( GROUP ( Database ) , Database : : ActiveDriver , selected_db_driver ) ;
2014-02-07 11:49:24 +01:00
2014-02-08 22:13:58 +01:00
if ( original_db_driver ! = selected_db_driver | |
2014-09-08 17:30:15 +02:00
m_initialSettings . m_dataStorageDataChanged ) {
2014-02-07 11:49:24 +01:00
m_changedDataTexts . append ( tr ( " data storage backend changed " ) ) ;
}
2013-06-24 16:18:13 +02:00
}
2014-02-08 09:12:00 +01:00
void FormSettings : : mysqlTestConnection ( ) {
2014-08-27 14:57:51 +02:00
DatabaseFactory : : MySQLError error_code = qApp - > database ( ) - > mysqlTestConnection ( m_ui - > m_txtMysqlHostname - > lineEdit ( ) - > text ( ) ,
2014-09-03 06:54:28 +02:00
m_ui - > m_spinMysqlPort - > value ( ) ,
2015-04-28 20:01:59 +02:00
m_ui - > m_txtMysqlDatabase - > lineEdit ( ) - > text ( ) ,
2014-09-03 06:54:28 +02:00
m_ui - > m_txtMysqlUsername - > lineEdit ( ) - > text ( ) ,
m_ui - > m_txtMysqlPassword - > lineEdit ( ) - > text ( ) ) ;
2014-08-27 14:57:51 +02:00
QString interpretation = qApp - > database ( ) - > mysqlInterpretErrorCode ( error_code ) ;
2014-02-11 17:23:40 +01:00
2015-04-28 20:01:59 +02:00
2014-02-11 17:23:40 +01:00
switch ( error_code ) {
case DatabaseFactory : : MySQLOk :
2014-11-10 21:19:09 +01:00
m_ui - > m_lblMysqlTestResult - > setStatus ( WidgetWithStatus : : Ok , interpretation , interpretation ) ;
2014-02-11 17:23:40 +01:00
break ;
default :
2014-11-10 21:19:09 +01:00
m_ui - > m_lblMysqlTestResult - > setStatus ( WidgetWithStatus : : Error , interpretation , interpretation ) ;
2014-02-11 17:23:40 +01:00
break ;
}
2014-02-08 09:12:00 +01:00
}
void FormSettings : : onMysqlHostnameChanged ( const QString & new_hostname ) {
if ( new_hostname . isEmpty ( ) ) {
2014-11-10 18:11:45 +01:00
m_ui - > m_txtMysqlHostname - > setStatus ( LineEditWithStatus : : Warning , tr ( " Hostname is empty. " ) ) ;
2014-02-08 09:12:00 +01:00
}
else {
2014-11-10 18:11:45 +01:00
m_ui - > m_txtMysqlHostname - > setStatus ( LineEditWithStatus : : Ok , tr ( " Hostname looks ok. " ) ) ;
2014-02-08 09:12:00 +01:00
}
}
void FormSettings : : onMysqlUsernameChanged ( const QString & new_username ) {
if ( new_username . isEmpty ( ) ) {
2014-11-10 18:11:45 +01:00
m_ui - > m_txtMysqlUsername - > setStatus ( LineEditWithStatus : : Warning , tr ( " Username is empty. " ) ) ;
2014-02-08 09:12:00 +01:00
}
else {
2014-11-10 18:11:45 +01:00
m_ui - > m_txtMysqlUsername - > setStatus ( LineEditWithStatus : : Ok , tr ( " Username looks ok. " ) ) ;
2014-02-08 09:12:00 +01:00
}
}
void FormSettings : : onMysqlPasswordChanged ( const QString & new_password ) {
if ( new_password . isEmpty ( ) ) {
2014-11-10 18:11:45 +01:00
m_ui - > m_txtMysqlPassword - > setStatus ( LineEditWithStatus : : Warning , tr ( " Password is empty. " ) ) ;
2014-02-08 09:12:00 +01:00
}
else {
2014-11-10 18:11:45 +01:00
m_ui - > m_txtMysqlPassword - > setStatus ( LineEditWithStatus : : Ok , tr ( " Password looks ok. " ) ) ;
2014-02-08 09:12:00 +01:00
}
}
2015-04-28 20:01:59 +02:00
void FormSettings : : onMysqlDatabaseChanged ( const QString & new_database ) {
if ( new_database . isEmpty ( ) ) {
m_ui - > m_txtMysqlDatabase - > setStatus ( LineEditWithStatus : : Warning , tr ( " Working database is empty. " ) ) ;
}
else {
m_ui - > m_txtMysqlDatabase - > setStatus ( LineEditWithStatus : : Ok , tr ( " Working database is ok. " ) ) ;
}
}
2014-02-08 22:13:58 +01:00
void FormSettings : : onMysqlDataStorageEdited ( ) {
2014-09-08 17:30:15 +02:00
m_initialSettings . m_dataStorageDataChanged = true ;
}
void FormSettings : : selectSqlBackend ( int index ) {
QString selected_db_driver = m_ui - > m_cmbDatabaseDriver - > itemData ( index ) . toString ( ) ;
if ( selected_db_driver = = APP_DB_SQLITE_DRIVER ) {
m_ui - > m_stackedDatabaseDriver - > setCurrentIndex ( 0 ) ;
}
else if ( selected_db_driver = = APP_DB_MYSQL_DRIVER ) {
m_ui - > m_stackedDatabaseDriver - > setCurrentIndex ( 1 ) ;
}
else {
qWarning ( " GUI for given database driver '%s' is not available. " , qPrintable ( selected_db_driver ) ) ;
}
2014-02-08 22:13:58 +01:00
}
2015-04-06 18:55:40 +02:00
void FormSettings : : switchMysqlPasswordVisiblity ( bool visible ) {
2015-04-15 17:09:48 +02:00
m_ui - > m_txtMysqlPassword - > lineEdit ( ) - > setEchoMode ( visible ? QLineEdit : : Normal : QLineEdit : : Password ) ;
2015-04-06 18:55:40 +02:00
}
2014-02-07 21:39:59 +01:00
void FormSettings : : loadGeneral ( ) {
2014-02-26 21:41:13 +01:00
m_ui - > m_checkAutostart - > setText ( m_ui - > m_checkAutostart - > text ( ) . arg ( APP_NAME ) ) ;
2014-11-10 21:19:09 +01:00
m_ui - > m_checkForUpdatesOnStart - > setChecked ( qApp - > settings ( ) - > value ( GROUP ( General ) , SETTING ( General : : UpdateOnStartup ) ) . toBool ( ) ) ;
2014-02-26 21:41:13 +01:00
2014-02-07 21:39:59 +01:00
// Load auto-start status.
2014-08-19 17:21:32 +02:00
SystemFactory : : AutoStartStatus autostart_status = qApp - > system ( ) - > getAutoStartStatus ( ) ;
2014-02-07 21:39:59 +01:00
switch ( autostart_status ) {
case SystemFactory : : Enabled :
m_ui - > m_checkAutostart - > setChecked ( true ) ;
break ;
case SystemFactory : : Disabled :
m_ui - > m_checkAutostart - > setChecked ( false ) ;
break ;
default :
m_ui - > m_checkAutostart - > setEnabled ( false ) ;
2014-11-10 18:11:45 +01:00
m_ui - > m_checkAutostart - > setText ( m_ui - > m_checkAutostart - > text ( ) + tr ( " (not supported on this platform) " ) ) ;
2014-02-07 21:39:59 +01:00
break ;
}
2014-10-07 16:37:44 +02:00
# if defined(Q_OS_WIN)
2014-12-31 17:34:16 +01:00
m_ui - > m_checkRemoveTrolltechJunk - > setVisible ( true ) ;
2014-11-10 21:19:09 +01:00
m_ui - > m_checkRemoveTrolltechJunk - > setChecked ( qApp - > settings ( ) - > value ( GROUP ( General ) , SETTING ( General : : RemoveTrolltechJunk ) ) . toBool ( ) ) ;
2014-12-31 17:34:16 +01:00
# else
m_ui - > m_checkRemoveTrolltechJunk - > setVisible ( false ) ;
2014-10-07 16:37:44 +02:00
# endif
2014-02-07 21:39:59 +01:00
}
void FormSettings : : saveGeneral ( ) {
2014-10-06 18:35:34 +02:00
// If auto-start feature is available and user wants to turn it on, then turn it on.
2014-02-07 21:39:59 +01:00
if ( m_ui - > m_checkAutostart - > isChecked ( ) ) {
2014-08-19 17:21:32 +02:00
qApp - > system ( ) - > setAutoStartStatus ( SystemFactory : : Enabled ) ;
2014-02-07 21:39:59 +01:00
}
else {
2014-08-19 17:21:32 +02:00
qApp - > system ( ) - > setAutoStartStatus ( SystemFactory : : Disabled ) ;
2014-02-07 21:39:59 +01:00
}
2014-10-06 18:35:34 +02:00
2014-11-10 21:19:09 +01:00
qApp - > settings ( ) - > setValue ( GROUP ( General ) , General : : UpdateOnStartup , m_ui - > m_checkForUpdatesOnStart - > isChecked ( ) ) ;
qApp - > settings ( ) - > setValue ( GROUP ( General ) , General : : RemoveTrolltechJunk , m_ui - > m_checkRemoveTrolltechJunk - > isChecked ( ) ) ;
2014-02-07 21:39:59 +01:00
}
2013-06-15 19:48:56 +02:00
void FormSettings : : loadInterface ( ) {
2014-07-26 14:44:03 +02:00
Settings * settings = qApp - > settings ( ) ;
2013-08-30 17:40:17 +02:00
2013-06-17 20:17:13 +02:00
// Load settings of tray icon.
if ( SystemTrayIcon : : isSystemTrayAvailable ( ) ) {
2014-11-10 21:19:09 +01:00
m_ui - > m_radioTrayOff - > setChecked ( ! settings - > value ( GROUP ( GUI ) , SETTING ( GUI : : UseTrayIcon ) ) . toBool ( ) ) ;
2013-06-17 20:17:13 +02:00
}
2013-06-19 21:28:26 +02:00
// Tray icon is not supported on this machine.
2013-06-17 20:17:13 +02:00
else {
2013-07-30 18:54:36 +02:00
m_ui - > m_radioTrayOff - > setText ( tr ( " Disable (Tray icon is not available.) " ) ) ;
2013-06-17 20:17:13 +02:00
m_ui - > m_radioTrayOff - > setChecked ( true ) ;
m_ui - > m_grpTray - > setDisabled ( true ) ;
}
2014-11-10 21:19:09 +01:00
m_ui - > m_checkHidden - > setChecked ( settings - > value ( GROUP ( GUI ) , SETTING ( GUI : : MainWindowStartsHidden ) ) . toBool ( ) ) ;
m_ui - > m_checkHideWhenMinimized - > setChecked ( settings - > value ( GROUP ( GUI ) , SETTING ( GUI : : HideMainWindowWhenMinimized ) ) . toBool ( ) ) ;
2014-02-13 19:25:57 +01:00
2013-06-17 20:17:13 +02:00
// Load settings of icon theme.
2014-08-27 14:57:51 +02:00
QString current_theme = qApp - > icons ( ) - > currentIconTheme ( ) ;
2013-06-15 19:48:56 +02:00
2014-08-27 14:57:51 +02:00
foreach ( const QString & icon_theme_name , qApp - > icons ( ) - > installedIconThemes ( ) ) {
2013-12-10 08:03:30 +01:00
if ( icon_theme_name = = APP_NO_THEME ) {
2013-12-08 14:02:28 +01:00
// Add just "no theme" on other systems.
2014-02-26 21:41:13 +01:00
//: Label for disabling icon theme.
2014-11-10 18:11:45 +01:00
m_ui - > m_cmbIconTheme - > addItem ( tr ( " no icon theme " ) , APP_NO_THEME ) ;
2013-06-15 19:48:56 +02:00
}
else {
2014-11-10 18:11:45 +01:00
m_ui - > m_cmbIconTheme - > addItem ( icon_theme_name , icon_theme_name ) ;
2013-06-15 19:48:56 +02:00
}
2013-08-03 07:34:41 +02:00
}
// Mark active theme.
2013-12-10 08:03:30 +01:00
if ( current_theme = = APP_NO_THEME ) {
// Because "no icon theme" lies at the index 0.
2013-08-03 07:34:41 +02:00
m_ui - > m_cmbIconTheme - > setCurrentIndex ( 0 ) ;
}
else {
2013-08-30 17:40:17 +02:00
# if QT_VERSION >= 0x050000
2013-08-03 07:34:41 +02:00
m_ui - > m_cmbIconTheme - > setCurrentText ( current_theme ) ;
2013-08-30 17:40:17 +02:00
# else
int theme_index = m_ui - > m_cmbIconTheme - > findText ( current_theme ) ;
if ( theme_index > = 0 ) {
m_ui - > m_cmbIconTheme - > setCurrentIndex ( theme_index ) ;
}
# endif
2013-09-22 07:38:42 +02:00
}
2013-09-20 18:18:49 +02:00
2013-09-22 07:38:42 +02:00
// Load skin.
2014-08-27 08:05:30 +02:00
QString selected_skin = qApp - > skins ( ) - > selectedSkinName ( ) ;
2013-09-20 18:18:49 +02:00
2014-08-27 08:05:30 +02:00
foreach ( const Skin & skin , qApp - > skins ( ) - > installedSkins ( ) ) {
2013-09-22 07:38:42 +02:00
QTreeWidgetItem * new_item = new QTreeWidgetItem ( QStringList ( ) < <
skin . m_visibleName < <
skin . m_version < <
skin . m_author < <
skin . m_email ) ;
new_item - > setData ( 0 , Qt : : UserRole , QVariant : : fromValue ( skin ) ) ;
2013-09-20 18:18:49 +02:00
2013-09-22 07:38:42 +02:00
// Add this skin and mark it as active if its active now.
m_ui - > m_treeSkins - > addTopLevelItem ( new_item ) ;
2013-09-20 18:18:49 +02:00
2013-09-22 07:38:42 +02:00
if ( skin . m_baseName = = selected_skin ) {
m_ui - > m_treeSkins - > setCurrentItem ( new_item ) ;
2013-11-15 11:03:12 +01:00
m_ui - > m_lblActiveContents - > setText ( skin . m_visibleName ) ;
2013-09-20 18:18:49 +02:00
}
2013-06-15 19:48:56 +02:00
}
2013-07-30 18:54:36 +02:00
2013-11-15 11:03:12 +01:00
if ( m_ui - > m_treeSkins - > currentItem ( ) = = NULL & &
m_ui - > m_treeSkins - > topLevelItemCount ( ) > 0 ) {
// Currently active skin is NOT available, select another one as selected
// if possible.
2013-09-22 07:38:42 +02:00
m_ui - > m_treeSkins - > setCurrentItem ( m_ui - > m_treeSkins - > topLevelItem ( 0 ) ) ;
}
2013-07-30 18:54:36 +02:00
// Load tab settings.
2014-11-10 21:19:09 +01:00
m_ui - > m_checkCloseTabsMiddleClick - > setChecked ( settings - > value ( GROUP ( GUI ) , SETTING ( GUI : : TabCloseMiddleClick ) ) . toBool ( ) ) ;
m_ui - > m_checkCloseTabsDoubleClick - > setChecked ( settings - > value ( GROUP ( GUI ) , SETTING ( GUI : : TabCloseDoubleClick ) ) . toBool ( ) ) ;
m_ui - > m_checkNewTabDoubleClick - > setChecked ( settings - > value ( GROUP ( GUI ) , SETTING ( GUI : : TabNewDoubleClick ) ) . toBool ( ) ) ;
m_ui - > m_hideTabBarIfOneTabVisible - > setChecked ( settings - > value ( GROUP ( GUI ) , SETTING ( GUI : : HideTabBarIfOnlyOneTab ) ) . toBool ( ) ) ;
2014-02-10 17:19:43 +01:00
// Load toolbar button style.
2014-02-16 08:24:27 +01:00
m_ui - > m_cmbToolbarButtonStyle - > addItem ( tr ( " Icon only " ) , Qt : : ToolButtonIconOnly ) ;
m_ui - > m_cmbToolbarButtonStyle - > addItem ( tr ( " Text only " ) , Qt : : ToolButtonTextOnly ) ;
m_ui - > m_cmbToolbarButtonStyle - > addItem ( tr ( " Text beside icon " ) , Qt : : ToolButtonTextBesideIcon ) ;
m_ui - > m_cmbToolbarButtonStyle - > addItem ( tr ( " Text under icon " ) , Qt : : ToolButtonTextUnderIcon ) ;
m_ui - > m_cmbToolbarButtonStyle - > addItem ( tr ( " Follow OS style " ) , Qt : : ToolButtonFollowStyle ) ;
2014-02-10 17:19:43 +01:00
2014-11-08 17:44:00 +01:00
m_ui - > m_cmbToolbarButtonStyle - > setCurrentIndex ( m_ui - > m_cmbToolbarButtonStyle - > findData ( qApp - > settings ( ) - > value ( GROUP ( GUI ) ,
2014-11-10 21:19:09 +01:00
SETTING ( GUI : : ToolbarStyle ) ) . toInt ( ) ) ) ;
2014-02-10 17:19:43 +01:00
2014-04-03 08:18:29 +02:00
// Load toolbars.
2014-08-22 09:27:01 +02:00
m_ui - > m_editorFeedsToolbar - > loadFromToolBar ( qApp - > mainForm ( ) - > tabWidget ( ) - > feedMessageViewer ( ) - > feedsToolBar ( ) ) ;
m_ui - > m_editorMessagesToolbar - > loadFromToolBar ( qApp - > mainForm ( ) - > tabWidget ( ) - > feedMessageViewer ( ) - > messagesToolBar ( ) ) ;
2013-06-15 19:48:56 +02:00
}
void FormSettings : : saveInterface ( ) {
2014-07-26 14:44:03 +02:00
Settings * settings = qApp - > settings ( ) ;
2013-08-30 17:40:17 +02:00
2014-02-10 17:19:43 +01:00
// Save toolbar.
2014-11-10 21:19:09 +01:00
settings - > setValue ( GROUP ( GUI ) , GUI : : ToolbarStyle , m_ui - > m_cmbToolbarButtonStyle - > itemData ( m_ui - > m_cmbToolbarButtonStyle - > currentIndex ( ) ) ) ;
2014-02-10 17:19:43 +01:00
2013-06-17 20:17:13 +02:00
// Save tray icon.
if ( SystemTrayIcon : : isSystemTrayAvailable ( ) ) {
2014-11-10 21:19:09 +01:00
settings - > setValue ( GROUP ( GUI ) , GUI : : UseTrayIcon , m_ui - > m_radioTrayOn - > isChecked ( ) ) ;
2014-07-26 14:44:03 +02:00
2014-11-10 21:19:09 +01:00
if ( m_ui - > m_radioTrayOn - > isChecked ( ) ) {
2014-07-26 18:48:41 +02:00
qApp - > showTrayIcon ( ) ;
2013-06-19 15:48:33 +02:00
}
else {
2014-07-26 18:48:41 +02:00
qApp - > deleteTrayIcon ( ) ;
2013-06-19 15:48:33 +02:00
}
2013-06-17 20:17:13 +02:00
}
2014-11-10 21:19:09 +01:00
settings - > setValue ( GROUP ( GUI ) , GUI : : MainWindowStartsHidden , m_ui - > m_checkHidden - > isChecked ( ) ) ;
settings - > setValue ( GROUP ( GUI ) , GUI : : HideMainWindowWhenMinimized , m_ui - > m_checkHideWhenMinimized - > isChecked ( ) ) ;
2014-02-13 19:25:57 +01:00
2013-06-15 19:48:56 +02:00
// Save selected icon theme.
2013-07-30 18:54:36 +02:00
QString selected_icon_theme = m_ui - > m_cmbIconTheme - > itemData ( m_ui - > m_cmbIconTheme - > currentIndex ( ) ) . toString ( ) ;
2014-08-27 14:57:51 +02:00
QString original_icon_theme = qApp - > icons ( ) - > currentIconTheme ( ) ;
qApp - > icons ( ) - > setCurrentIconTheme ( selected_icon_theme ) ;
2013-07-30 18:54:36 +02:00
2013-12-07 20:33:41 +01:00
// Check if icon theme was changed.
2013-12-06 15:12:30 +01:00
if ( selected_icon_theme ! = original_icon_theme ) {
2013-12-20 16:30:39 +01:00
m_changedDataTexts . append ( tr ( " icon theme changed " ) ) ;
2013-12-06 15:12:30 +01:00
}
2013-09-20 18:18:49 +02:00
// Save and activate new skin.
2013-11-15 22:09:38 +01:00
if ( m_ui - > m_treeSkins - > selectedItems ( ) . size ( ) > 0 ) {
Skin active_skin = m_ui - > m_treeSkins - > currentItem ( ) - > data ( 0 , Qt : : UserRole ) . value < Skin > ( ) ;
2013-12-03 18:38:43 +01:00
2014-08-27 08:05:30 +02:00
if ( qApp - > skins ( ) - > selectedSkinName ( ) ! = active_skin . m_baseName ) {
qApp - > skins ( ) - > setCurrentSkinName ( active_skin . m_baseName ) ;
2013-12-20 16:30:39 +01:00
m_changedDataTexts . append ( tr ( " skin changed " ) ) ;
2013-12-03 18:38:43 +01:00
}
2013-11-15 22:09:38 +01:00
}
2013-09-20 18:18:49 +02:00
2013-07-30 18:54:36 +02:00
// Save tab settings.
2014-11-12 17:56:05 +01:00
settings - > setValue ( GROUP ( GUI ) , GUI : : TabCloseMiddleClick , m_ui - > m_checkCloseTabsMiddleClick - > isChecked ( ) ) ;
settings - > setValue ( GROUP ( GUI ) , GUI : : TabCloseDoubleClick , m_ui - > m_checkCloseTabsDoubleClick - > isChecked ( ) ) ;
settings - > setValue ( GROUP ( GUI ) , GUI : : TabNewDoubleClick , m_ui - > m_checkNewTabDoubleClick - > isChecked ( ) ) ;
settings - > setValue ( GROUP ( GUI ) , GUI : : HideTabBarIfOnlyOneTab , m_ui - > m_hideTabBarIfOneTabVisible - > isChecked ( ) ) ;
2014-01-13 21:43:35 +01:00
2014-04-07 08:21:55 +02:00
m_ui - > m_editorFeedsToolbar - > saveToolBar ( ) ;
m_ui - > m_editorMessagesToolbar - > saveToolBar ( ) ;
2014-04-05 13:48:26 +02:00
2014-08-22 09:27:01 +02:00
qApp - > mainForm ( ) - > tabWidget ( ) - > checkTabBarVisibility ( ) ;
qApp - > mainForm ( ) - > tabWidget ( ) - > feedMessageViewer ( ) - > refreshVisualProperties ( ) ;
2013-06-15 19:48:56 +02:00
}
2014-09-19 08:31:25 +02:00
bool FormSettings : : eventFilter ( QObject * obj , QEvent * e ) {
Q_UNUSED ( obj )
if ( e - > type ( ) = = QEvent : : Drop ) {
QDropEvent * drop_event = static_cast < QDropEvent * > ( e ) ;
if ( drop_event - > keyboardModifiers ( ) ! = Qt : : NoModifier ) {
drop_event - > setDropAction ( Qt : : MoveAction ) ;
}
}
return false ;
}