1 /*
2 
3 Pencil2D - Traditional Animation Software
4 Copyright (C) 2005-2007 Patrick Corrieri & Pascal Naidon
5 Copyright (C) 2012-2020 Matthew Chiawen Chang
6 
7 This program is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public License
9 as published by the Free Software Foundation; version 2 of the License.
10 
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15 
16 */
17 #include "preferencesdialog.h"
18 
19 #include "ui_preferencesdialog.h"
20 
PreferencesDialog(QWidget * parent)21 PreferencesDialog::PreferencesDialog(QWidget* parent) :
22     QDialog(parent),
23     ui(new Ui::PreferencesDialog)
24 {
25     ui->setupUi(this);
26 }
27 
~PreferencesDialog()28 PreferencesDialog::~PreferencesDialog()
29 {
30     delete ui;
31 }
32 
init(PreferenceManager * m)33 void PreferencesDialog::init(PreferenceManager* m)
34 {
35     Q_ASSERT(m != nullptr);
36     mPrefManager = m;
37 
38     ui->general->setManager(mPrefManager);
39     ui->general->updateValues();
40 
41     ui->filesPage->setManager(mPrefManager);
42     ui->filesPage->updateValues();
43 
44     ui->timeline->setManager(mPrefManager);
45     ui->timeline->updateValues();
46 
47     ui->tools->setManager(mPrefManager);
48     ui->tools->updateValues();
49 
50     ui->shortcuts->setManager(mPrefManager);
51 
52     connect(ui->general, &GeneralPage::windowOpacityChange, this, &PreferencesDialog::windowOpacityChange);
53     connect(ui->timeline, &TimelinePage::soundScrubChanged, this, &PreferencesDialog::soundScrubChanged);
54     connect(ui->timeline, &TimelinePage::soundScrubMsecChanged, this, &PreferencesDialog::soundScrubMsecChanged);
55     connect(ui->filesPage, &FilesPage::clearRecentList, this, &PreferencesDialog::clearRecentList);
56     connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &PreferencesDialog::close);
57 
58     auto onCurrentItemChanged = static_cast<void (QListWidget::*)(QListWidgetItem*, QListWidgetItem*)>(&QListWidget::currentItemChanged);
59     connect(ui->contentsWidget, onCurrentItemChanged, this, &PreferencesDialog::changePage);
60 }
61 
closeEvent(QCloseEvent *)62 void PreferencesDialog::closeEvent(QCloseEvent*)
63 {
64     done(QDialog::Accepted);
65 }
66 
changePage(QListWidgetItem * current,QListWidgetItem * previous)67 void PreferencesDialog::changePage(QListWidgetItem* current, QListWidgetItem* previous)
68 {
69     if (!current)
70         current = previous;
71 
72     ui->pagesWidget->setCurrentIndex(ui->contentsWidget->row(current));
73 }
74 
updateRecentListBtn(bool isEmpty)75 void PreferencesDialog::updateRecentListBtn(bool isEmpty)
76 {
77     if (isEmpty)
78     {
79         emit updateRecentFileListBtn();
80     }
81 }
82