Page MenuHomePhabricator (Chris)

SettingsDialog.cpp
No OneTemporary

Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None

SettingsDialog.cpp

#include "SettingsDialog.h"
#include "ui_SettingsDialog.h"
#include "MySettings.h"
#include <QFileDialog>
#include "misc.h"
static int page_number = 0;
SettingsDialog::SettingsDialog(MainWindow *parent) :
QDialog(parent),
ui(new Ui::SettingsDialog)
{
ui->setupUi(this);
Qt::WindowFlags flags = windowFlags();
flags &= ~Qt::WindowContextHelpButtonHint;
setWindowFlags(flags);
mainwindow_ = parent;
loadSettings();
QTreeWidgetItem *item;
auto AddPage = [&](QString const &name, QWidget *page){
item = new QTreeWidgetItem();
item->setText(0, name);
item->setData(0, Qt::UserRole, QVariant::fromValue((uintptr_t)(QWidget *)page));
ui->treeWidget->addTopLevelItem(item);
};
AddPage(tr("Directories"), ui->page_directories);
AddPage(tr("Network"), ui->page_network);
AddPage(tr("Example"), ui->page_example);
ui->treeWidget->setCurrentItem(ui->treeWidget->topLevelItem(page_number));
}
SettingsDialog::~SettingsDialog()
{
delete ui;
}
void SettingsDialog::loadSettings(ApplicationSettings *as)
{
MySettings s;
s.beginGroup("Global");
as->default_working_dir = s.value("DefaultWorkingDirectory").toString();
as->git_command = s.value("GitCommand").toString();
as->file_command = s.value("FileCommand").toString();
s.endGroup();
s.beginGroup("Network");
as->proxy_type = s.value("ProxyType").toString();
as->proxy_server = misc::makeProxyServerURL(s.value("ProxyServer").toString());
as->get_committer_icon = s.value("GetCommitterIcon").toBool();
s.endGroup();
}
void SettingsDialog::saveSettings()
{
MySettings s;
s.beginGroup("Global");
s.setValue("DefaultWorkingDirectory", set.default_working_dir);
s.setValue("GitCommand", set.git_command);
s.setValue("FileCommand", set.file_command);
s.endGroup();
s.beginGroup("Network");
s.setValue("ProxyType", set.proxy_type);
s.setValue("ProxyServer", misc::makeProxyServerURL(set.proxy_server));
s.setValue("GetCommitterIcon", set.get_committer_icon);
s.endGroup();
}
void SettingsDialog::exchange(bool save)
{
QList<AbstractSettingForm *> forms = ui->stackedWidget->findChildren<AbstractSettingForm *>();
for (AbstractSettingForm *form : forms) {
form->exchange(save);
}
}
void SettingsDialog::loadSettings()
{
loadSettings(&set);
exchange(false);
}
void SettingsDialog::done(int r)
{
page_number = ui->stackedWidget->currentIndex();
QDialog::done(r);
}
void SettingsDialog::accept()
{
exchange(true);
saveSettings();
done(QDialog::Accepted);
}
void SettingsDialog::on_treeWidget_currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
{
(void)previous;
if (current) {
uintptr_t p = current->data(0, Qt::UserRole).value<uintptr_t>();
QWidget *w = reinterpret_cast<QWidget *>(p);
Q_ASSERT(w);
ui->stackedWidget->setCurrentWidget(w);
}
}

File Metadata

Mime Type
text/x-c
Expires
Sat, Nov 14, 7:28 PM (20 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
151959
Default Alt Text
SettingsDialog.cpp (2 KB)

Event Timeline