2 #include "optiondialog.h"
4 OptionDialog::OptionDialog(QWidget *parent, QSettings& set) :
5 QDialog(parent), settings (set)
7 availableHeaders = settings.value("headerOrder", QStringList()).toStringList();
8 if (!availableHeaders.size())
9 availableHeaders << "Artist" << "Title" << "Album" << "Controls";
13 OptionDialog::~OptionDialog ()
16 settings.setValue("orientation", orient->currentText());
18 settings.setValue("headerOrder", availableHeaders);
20 foreach (QObject* child, children())
22 QCheckBox* cb = qobject_cast<QCheckBox*>(child);
23 if (cb && cb->isChecked ())
28 settings.setValue("headers", h);
32 void OptionDialog::setupUi()
34 QVBoxLayout *mainLayout = new QVBoxLayout;
36 QString ori = settings.value("orientation", "Automatic").toString();
37 orient = new QComboBox();
38 orient->addItem(tr ("Automatic"));
39 orient->addItem(tr ("Landscape"));
40 orient->addItem(tr ("Portrait"));
41 if (ori == "Landscape")
42 orient->setCurrentIndex(1);
43 if (ori == "Portrait")
44 orient->setCurrentIndex(2);
45 QLabel *label = new QLabel (tr ("Orientation"));
46 QHBoxLayout *subLayout = new QHBoxLayout;
47 subLayout->addWidget(label);
48 subLayout->addWidget(orient);
49 mainLayout->addLayout(subLayout);
51 QLabel* lab = new QLabel (tr ("Enabled columns: "));
52 QHBoxLayout *sub = new QHBoxLayout;
54 headerLayout = new QVBoxLayout;
55 QStringList headers = settings.value ("headers", QStringList ()).toStringList();
56 qDebug () << "Available headers: " << availableHeaders;
57 foreach (QString str, availableHeaders)
59 QHBoxLayout *cont = new QHBoxLayout;
60 QCheckBox* box = new QCheckBox (str);
61 if (headers.indexOf(str) >= 0)
62 box->setChecked(true);
63 QLabel* label = new QLabel;
64 label->setText(QString::fromUtf8("<b><a style='text-decoration:none' href='up'>▲</a> <a style='text-decoration:none' href='down'>▼</a></b>"));
65 label->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
66 label->setProperty("row", str);
68 cont->addWidget(label);
69 headerLayout->addLayout(cont);
70 connect (label, SIGNAL(linkActivated(QString)), this, SLOT (orderControl(QString)));
72 sub->addLayout(headerLayout);
73 mainLayout->addLayout(sub);
74 QCheckBox *cb = new QCheckBox (tr ("Flip UI controls"));
75 cb->setChecked(settings.value("uiflipped", false).toBool());
76 connect (cb, SIGNAL(toggled(bool)), this, SLOT(toggleFlip(bool)));
77 mainLayout->addWidget(cb);
78 setLayout(mainLayout);
79 setWindowTitle("Settings");
82 void OptionDialog::toggleFlip (bool val)
84 settings.setValue("uiflipped", val);
88 void OptionDialog::orderControl (QString link)
90 QString str = sender ()->property("row").toString();
91 qDebug () << "Col action " << link << " on " << str;
92 int i = availableHeaders.indexOf(str);
93 if (link == "up" && i > 0)
95 QString tmp = availableHeaders[i];
96 availableHeaders[i] = availableHeaders[i - 1];
97 availableHeaders[i - 1] = tmp;
99 else if (link == "down" && i < availableHeaders.size() - 1)
101 QString tmp = availableHeaders[i];
102 availableHeaders[i] = availableHeaders[i + 1];
103 availableHeaders[i + 1] = tmp;
106 foreach (QObject* child, children())
108 QCheckBox* cb = qobject_cast<QCheckBox*>(child);
109 if (cb && cb->isChecked ())
114 settings.setValue("headers", h);
116 foreach (QObject* child, children ())