@@ -212,7 +212,21 @@ void MiniatureEditDialog::addRow(QWidget *widget)
212212
213213void MiniatureEditDialog::addRow (QLayout *layout)
214214{
215- this ->layout ->addLayout (layout,this ->layout ->rowCount (),0 ,1 ,2 );
215+ this ->layout ->addLayout (layout,this ->layout ->rowCount (),0 ,1 ,2 );
216+ }
217+
218+ void MiniatureEditDialog::addRow (const QString &label, QLayout *layout)
219+ {
220+ this ->layout ->addLayout (layout,this ->layout ->rowCount (),0 ,1 ,2 );
221+
222+ int row = this ->layout ->rowCount ();
223+ if (!label.isEmpty ())
224+ {
225+ QLabel* labelWidget = new QLabel (label);
226+ labelMap.insert ((QWidget*)layout,labelWidget);
227+ this ->layout ->addWidget (labelWidget,row,0 ,1 ,1 );
228+ }
229+ this ->layout ->addLayout (layout,row,1 ,1 ,1 );
216230}
217231
218232void MiniatureEditDialog::setWidgetHidden (QWidget *widget, bool value)
@@ -262,15 +276,41 @@ void MiniatureEditDialog::setDirection(qreal deg)
262276 directionBox->setCurrentIndex (directionBox->count ()-1 );
263277}
264278
279+ void MiniatureEditDialog::graphicsSliderChanged (int value) {
280+ this ->graphicStateSliderLabel ->setText (QString::fromStdString (std::to_string (value+1 )));
281+ setUrl (urls[value]);
282+ }
283+
284+ void MiniatureEditDialog::urlLineEditChanged (const QString& value) {
285+ this ->urls [this ->graphicStateSlider ->value ()] = value;
286+ }
287+
288+ void MiniatureEditDialog::colorChanged (QColor value) {
289+ this ->urls [this ->graphicStateSlider ->value ()] = value.name ();
290+ }
291+
265292MiniatureEditDialog::MiniatureEditDialog (QWidget* parent) : NightModeDialog(parent)
266293{
294+ urls = QVector<QString>(8 );
267295 layout = new QGridLayout (getCentralWidget ());
268296 nameEdit = new QLineEdit ();
269297 urlEdit = new ImageUrlSelection (Global::imgurClientID ());
270298 sizeBox = new MiniatureSizeSpinBox ();
271299 sizeBox->setMinimum (1.0 /4.0 );
272300 sizeBox->setMaximum (1000 );
273301 sizeBox->setSuffix (" Grid Cells" );
302+ graphicStateSlider = new QSlider (this );
303+ quint32 selectedState = 0 ;
304+ graphicStateSlider->setValue (selectedState);
305+ graphicStateSlider->setMinimum (0 );
306+ graphicStateSlider->setMaximum (7 );
307+ graphicStateSlider->setOrientation (Qt::Horizontal);
308+ graphicStateSliderLabel = new QLabel (QString::fromStdString (std::to_string (selectedState+1 )), this );
309+ QHBoxLayout* graphicStateLayout = new QHBoxLayout (this );
310+ QWidget* fuckoff = new QWidget (this );
311+ fuckoff->setLayout (graphicStateLayout);
312+ graphicStateLayout->addWidget (graphicStateSliderLabel);
313+ graphicStateLayout->addWidget (graphicStateSlider);
274314 imageSourceBox = new QComboBox (this );
275315 imageSourceBox->addItem (" URL" );
276316 imageSourceBox->addItem (" Color" );
@@ -331,6 +371,7 @@ MiniatureEditDialog::MiniatureEditDialog(QWidget* parent) : NightModeDialog(pare
331371 buttonLayout->addWidget (cancelButton);
332372
333373 addRow (" Name:" ,nameEdit);
374+ addRow (" State:" ,fuckoff);
334375 addRow (" Image Source:" ,imageSourceBox);
335376 addRow (" URL:" ,urlEdit);
336377 addRow (" Color:" ,colorButton);
@@ -355,12 +396,22 @@ MiniatureEditDialog::MiniatureEditDialog(QWidget* parent) : NightModeDialog(pare
355396 connect (imageSourceBox,qOverload<int >(&QComboBox::currentIndexChanged), this , &MiniatureEditDialog::sourceChanged);
356397 connect (rotationBox,qOverload<int >(&QComboBox::currentIndexChanged),this ,&MiniatureEditDialog::rotationBoxChanged);
357398 connect (directionBox,qOverload<int >(&QComboBox::currentIndexChanged),this ,&MiniatureEditDialog::directionBoxChanged);
399+ connect (graphicStateSlider, qOverload<int >(&QSlider::valueChanged), this , &MiniatureEditDialog::graphicsSliderChanged);
400+ connect (this ->urlEdit ->lineEdit (), qOverload<const QString&>(&QLineEdit::textChanged), this , &MiniatureEditDialog::urlLineEditChanged);
401+ connect (this ->colorButton , qOverload<QColor>(&ColorSelectButton::finalColorChanged), this , &MiniatureEditDialog::colorChanged);
358402}
359403
360404MapMiniatureResource MiniatureEditDialog::getMiniature ()
361405{
362406 miniature.setName (nameEdit->text ());
363- miniature.setGraphic (getUrl ());
407+ QVector<QString> urls;
408+ for (int i = 0 ; i<this ->urls .size (); ++i) {
409+ if (this ->urls [i].size ()>0 ) {
410+ urls.push_back (this ->urls [i]);
411+ }
412+ }
413+ miniature.setSelectedGraphicsIndex (this ->graphicStateSlider ->value ());
414+ miniature.setGraphic (urls);
364415 miniature.setSize (getSize ());
365416 miniature.setLayer (getLayer ());
366417 miniature.setVisibility (getVisibility ());
@@ -374,11 +425,23 @@ void MiniatureEditDialog::setMiniature(const MapMiniatureResource &mini)
374425{
375426 miniature = mini;
376427 setName (mini.getName ());
377- setUrl (mini.getGraphic ());
428+ auto graphics = mini.getGraphic ();
429+ for (int i=0 ; i<std::min (this ->urls .size (),graphics.size ()); ++i) {
430+ this ->urls [i] = graphics[i];
431+ }
432+ // setUrl(mini.getGraphic()[0]);
378433 setSize (mini.getSize ());
379434 setLayer (mini.getLayer ());
380435 setVisibility (mini.getVisibility ());
381436 setDisplay (mini.getDisplay ());
382437 setRotation (mini.getRotation ());
383438 setDirection (mini.getDirection ());
439+ auto selectedIndex = mini.getSelectedGraphicsIndex ();
440+ if (selectedIndex > 0 && selectedIndex < 8 ) {
441+ graphicsSliderChanged (mini.getSelectedGraphicsIndex ());
442+ setUrl (this ->urls [mini.getSelectedGraphicsIndex ()]);
443+ } else {
444+ graphicsSliderChanged (0 );
445+ setUrl (this ->urls [0 ]);
446+ }
384447}
0 commit comments