#include "optionwidget.h" #include "mabitimer.h" #include "sequence.h" #include "weatherwidget.h" #include "inline.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include OptionWidget::OptionWidget(QWidget *parent) : QDialog(parent) { setObjectName("OptionWidget"); setWindowIcon(QIcon(":/icons/gear.png")); setWindowTitle(QString::fromWCharArray(L"ȯ°æ¼³Á¤")); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint | Qt::MSWindowsFixedSizeDialogHint); setMinimumWidth(300); tabWidget = new QTabWidget; createPage1(); createPage2(); /* dialog buttons */ dialogButtonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); /* main layout */ mainLayout = new QVBoxLayout; mainLayout->addWidget(tabWidget); mainLayout->addWidget(dialogButtonBox); setLayout(mainLayout); setWeatherAlignment(Qt::AlignRight); //connect(arbeitAlertTable, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(doubleClickedArbeit(QModelIndex))); connect(dialogButtonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(dialogButtonBox, SIGNAL(rejected()), this, SLOT(reject())); } OptionWidget::~OptionWidget() { qDebug() << "destroyed: " << objectName(); } void OptionWidget::createPage1() { /* weather align */ weatherAlignGroup = new QGroupBox; weatherAlignLayout = new QHBoxLayout; weatherAlignLeft = new QRadioButton(QString::fromWCharArray(L"¿ÞÂÊ")); weatherAlignRight = new QRadioButton(QString::fromWCharArray(L"¿À¸¥ÂÊ")); weatherAlignLayout->addWidget(weatherAlignLeft); weatherAlignLayout->addWidget(weatherAlignRight); weatherAlignGroup->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Maximum); weatherAlignGroup->setLayout(weatherAlignLayout); weatherAlignGroup->setTitle(QString::fromWCharArray(L"³¯¾¾ À§Ä¡")); /* arbeit alert */ const int itemHeight = fontMetrics().height() + 6; arbeitAlertGroup = new QGroupBox; arbeitAlertTable = new QTreeWidget; arbeitAlertLayout = new QVBoxLayout; arbeitAlertTable->setColumnCount(2); QStringList arbeitAlertHeader; arbeitAlertHeader.append(QString::fromWCharArray(L"¾Æ¸£¹ÙÀÌÆ®")); arbeitAlertHeader.append(QString::fromWCharArray(L"½ÃÀÛ ½Ã°£")); arbeitAlertTable->setHeaderLabels(arbeitAlertHeader); arbeitAlertTable->setRootIsDecorated(false); arbeitAlertTable->header()->setResizeMode(QHeaderView::Stretch); arbeitAlertTable->headerItem()->setTextAlignment(0, Qt::AlignCenter); arbeitAlertTable->headerItem()->setTextAlignment(1, Qt::AlignCenter); foreach(const Arbeit arbeit, *MabiTimer::sequence()->arbeitSequence()) { QTreeWidgetItem *item = new QTreeWidgetItem; item->setText(0, arbeit.name); item->setText(1, sec2MinSec(arbeit.begin * 2 / 3)); item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable); item->setData(0, Qt::CheckStateRole, Qt::Unchecked); item->setSizeHint(0, QSize(-1, itemHeight)); item->setTextAlignment(1, Qt::AlignCenter); arbeitAlertTable->addTopLevelItem(item); } arbeitAlertLayout->addWidget(arbeitAlertTable); arbeitAlertGroup->setLayout(arbeitAlertLayout); arbeitAlertGroup->setTitle(QString::fromWCharArray(L"¾Æ¸£¹ÙÀÌÆ® ¾Ë¸² ¼±ÅÃ")); page1 = new QVBoxLayout; page1->addWidget(arbeitAlertGroup); page1->addWidget(weatherAlignGroup); QFrame *frame = new QFrame; frame->setLayout(page1); tabWidget->addTab(frame, QString::fromWCharArray(L"ÀϹÝ")); connect(weatherAlignLeft, SIGNAL(clicked()), this, SLOT(changeWeatherAlign())); connect(weatherAlignRight, SIGNAL(clicked()), this, SLOT(changeWeatherAlign())); } void OptionWidget::createPage2() { QFontDatabase database; const int itemHeight = fontMetrics().height() + 6; const QString defaultFamily = QApplication::font().family(); fontList = new QListWidget; fontList->setSelectionMode(QListWidget::SingleSelection); foreach(QString family, database.families(QFontDatabase::Korean)) { const QFont itemFont = QFont(family, 9); if(database.styles(family).isEmpty()) { continue; } QListWidgetItem *item = new QListWidgetItem(family, fontList); item->setSizeHint(QSize(-1, itemHeight)); item->setFont(itemFont); if(family == defaultFamily) { item->setSelected(true); } } fontSize = new QSpinBox; fontSize->setValue(12); fontSize->setMinimum(6); fontSize->setMaximum(16); page2 = new QVBoxLayout; page2->addWidget(fontList); page2->addWidget(fontSize); QFrame *frame = new QFrame; frame->setLayout(page2); tabWidget->addTab(frame, QString::fromWCharArray(L"±Û²Ã")); connect(fontSize, SIGNAL(valueChanged(int)), this, SLOT(changeFontSize(int))); connect(fontList, SIGNAL(itemSelectionChanged()), this, SLOT(changeFontList())); } void OptionWidget::setArbeitSelected(QList &arbeitSelected) { const int itemCount = arbeitAlertTable->topLevelItemCount(); pArbeitSelected = arbeitSelected; foreach(int i, arbeitSelected) { if(i < itemCount) { arbeitAlertTable->topLevelItem(i)->setCheckState(0, Qt::Checked); } } } QList OptionWidget::arbeitSelected() const { QList result; const int itemCount = arbeitAlertTable->topLevelItemCount(); for(int i = 0; i < itemCount; i++) { QTreeWidgetItem *item = arbeitAlertTable->topLevelItem(i); if(item->checkState(0) == Qt::Checked) { result.append(i); } } return result; } void OptionWidget::setWeatherAlignment(Qt::AlignmentFlag weatherAlignment) { pWeatherAlignment = weatherAlignment; if(pWeatherAlignment != Qt::AlignRight) { pWeatherAlignment = Qt::AlignLeft; } if(pWeatherAlignment == Qt::AlignLeft) { weatherAlignLeft->setChecked(true); } else { weatherAlignRight->setChecked(true); } } Qt::AlignmentFlag OptionWidget::weatherAlignment() { if(weatherAlignLeft->isChecked()) { return Qt::AlignLeft; } return Qt::AlignRight; } void OptionWidget::changeWeatherAlign() { if(sender()->inherits(QRadioButton::staticMetaObject.className())) { QRadioButton *button = (QRadioButton*)sender(); WeatherWidget *weather = (WeatherWidget*)MabiTimer::manageObject(WeatherWidget::staticMetaObject.className()); if(button == weatherAlignLeft && button->isChecked()) { if(weather) { weather->setWeatherAlignment(Qt::AlignLeft); } } else if(button == weatherAlignRight && button->isChecked()) { if(weather) { weather->setWeatherAlignment(Qt::AlignRight); } } } } void OptionWidget::doubleClickedArbeit(const QModelIndex &index) { if(arbeitAlertTable->topLevelItemCount() > index.row()) { QTreeWidgetItem *item = arbeitAlertTable->topLevelItem(index.row()); Qt::CheckState state = item->checkState(0); if(state == Qt::Checked) { item->setCheckState(0, Qt::Unchecked); } else { item->setCheckState(0, Qt::Checked); } } } void OptionWidget::changeFontSize(int value) { Q_UNUSED(value); changeFontList(); } void OptionWidget::changeFontList() { const QList selected = fontList->selectedItems(); if(selected.size() == 1) { QFont font = QFont(selected[0]->text()); font.setPixelSize(fontSize->value()); font.setStyleHint(QFont::SansSerif, QFont::PreferAntialias); QApplication::setFont(font); } }