12
12
#include < QDateTime>
13
13
#include < QDebug>
14
14
#include < QBuffer>
15
+ #include < QCompleter>
15
16
#include < QFile>
16
17
#include < QAudioOutput>
17
18
#include < QSystemTrayIcon>
@@ -112,8 +113,12 @@ MainWindow::MainWindow(QWidget *parent)
112
113
}
113
114
ui->sFAc ->setCurrentIndex (saved_settings.value (" fajr_azan" ).toInt ());
114
115
ui->sNAc ->setCurrentIndex (saved_settings.value (" normal_azan" ).toInt ());
115
- ui->sMadhabc ->setCurrentIndex (saved_settings.value (" madhab" ).toInt ());
116
116
ui->sCMc ->setCurrentIndex (saved_settings.value (" calc_method" ).toInt ());
117
+ ui->sMadhabc ->setCurrentIndex (saved_settings.value (" madhab" ).toInt ());
118
+ ui->sCc ->setEditable (true );
119
+ ui->sCc ->setInsertPolicy (QComboBox::NoInsert);
120
+ ui->sCc ->completer ()->setFilterMode (Qt::MatchContains);
121
+ ui->sCc ->completer ()->setCompletionMode (QCompleter::PopupCompletion);
117
122
if (saved_settings.contains (" time_zone" )) {
118
123
ui->sTZd ->setValue (saved_settings.value (" time_zone" ).toDouble ());
119
124
} else {
@@ -305,10 +310,23 @@ void MainWindow::get_prayer() {
305
310
longitude = 0.000000 ;
306
311
307
312
QString selected_country = " " ;
308
- selected_country = ui->sCc ->currentText ().split (" /" )[0 ];
309
-
310
313
QString selected_city = " " ;
311
- selected_city = ui->sCc ->currentText ().split (" /" )[1 ];
314
+ QString selected_location = " " ;
315
+ QString selected_state = " " ;
316
+ QString selected_state_location = " " ;
317
+ QString selected_state_city = " " ;
318
+
319
+ if (ui->sCc ->currentText ().split (" |" ).size () == 2 )
320
+ {
321
+ selected_country = ui->sCc ->currentText ().split (" |" )[0 ];
322
+ selected_city = ui->sCc ->currentText ().split (" |" )[1 ];
323
+ selected_location = ui->sCc ->currentText ().split (" |" )[1 ];
324
+ } else if (ui->sCc ->currentText ().split (" |" ).size () == 3 ) {
325
+ selected_country = ui->sCc ->currentText ().split (" |" )[0 ];
326
+ selected_state = ui->sCc ->currentText ().split (" |" )[1 ];
327
+ selected_state_location = ui->sCc ->currentText ().split (" |" )[2 ];
328
+ selected_state_city = ui->sCc ->currentText ().split (" |" )[2 ];
329
+ }
312
330
313
331
QFile inFile (" :/data/Locations" );
314
332
if (!inFile.open (QIODevice::ReadOnly | QIODevice::Text))
@@ -334,17 +352,72 @@ void MainWindow::get_prayer() {
334
352
for (int i2 = 0 ; i2 < elements2.size (); i2++)
335
353
{
336
354
QDomElement country_name = elements2.at (i2).toElement ().firstChildElement (" name" );
337
- QDomNodeList elements3 = elements2.at (i2).toElement ().elementsByTagName (" city" );
338
- for (int i3 = 0 ; i3 < elements3.size (); i3++)
355
+ if (ui->sCc ->currentText ().split (" |" ).size () == 2 )
339
356
{
340
- QDomElement city_name = elements3.at (i3).toElement ().firstChildElement (" name" );
341
- if (country_name.text () == selected_country) {
342
- if (city_name.text () == selected_city) {
343
- QDomElement coordinates_val = elements3.at (i3).toElement ().firstChildElement (" coordinates" );
344
- latitude = stod (coordinates_val.text ().split (" " )[0 ].toStdString ());
345
- longitude = stod (coordinates_val.text ().split (" " )[1 ].toStdString ());
346
- ui->sLatituded ->setValue (latitude);
347
- ui->sLongituded ->setValue (longitude);
357
+ QDomNodeList elements3 = elements2.at (i2).toElement ().elementsByTagName (" city" );
358
+ for (int i3 = 0 ; i3 < elements3.size (); i3++)
359
+ {
360
+ QDomElement city_name = elements3.at (i3).toElement ().firstChildElement (" name" );
361
+ if (country_name.text () == selected_country) {
362
+ if (city_name.text () == selected_city) {
363
+ QDomElement coordinates_val = elements3.at (i3).toElement ().firstChildElement (" coordinates" );
364
+ latitude = stod (coordinates_val.text ().split (" " )[0 ].toStdString ());
365
+ longitude = stod (coordinates_val.text ().split (" " )[1 ].toStdString ());
366
+ ui->sLatituded ->setValue (latitude);
367
+ ui->sLongituded ->setValue (longitude);
368
+ }
369
+ }
370
+ }
371
+ QDomNodeList elements4 = elements2.at (i2).toElement ().elementsByTagName (" location" );
372
+ for (int i4 = 0 ; i4 < elements4.size (); i4++)
373
+ {
374
+ QDomElement location_name = elements4.at (i4).toElement ().firstChildElement (" name" );
375
+ if (country_name.text () == selected_country) {
376
+ if (location_name.text () == selected_location) {
377
+ QDomElement coordinates_val = elements4.at (i4).toElement ().firstChildElement (" coordinates" );
378
+ latitude = stod (coordinates_val.text ().split (" " )[0 ].toStdString ());
379
+ longitude = stod (coordinates_val.text ().split (" " )[1 ].toStdString ());
380
+ ui->sLatituded ->setValue (latitude);
381
+ ui->sLongituded ->setValue (longitude);
382
+ }
383
+ }
384
+ }
385
+ } else if (ui->sCc ->currentText ().split (" |" ).size () == 3 ) {
386
+ QDomNodeList elements5 = elements2.at (i2).toElement ().elementsByTagName (" state" );
387
+ for (int i5 = 0 ; i5 < elements5.size (); i5++)
388
+ {
389
+ QDomElement state_name = elements5.at (i5).toElement ().firstChildElement (" name" );
390
+ QDomNodeList elements6 = elements5.at (i5).toElement ().elementsByTagName (" location" );
391
+ for (int i6 = 0 ; i6 < elements6.size (); i6++)
392
+ {
393
+ QDomElement state_location_name = elements6.at (i6).toElement ().firstChildElement (" name" );
394
+ if (country_name.text () == selected_country) {
395
+ if (state_name.text () == selected_state) {
396
+ if (state_location_name.text () == selected_state_location) {
397
+ QDomElement coordinates_val = elements6.at (i6).toElement ().firstChildElement (" coordinates" );
398
+ latitude = stod (coordinates_val.text ().split (" " )[0 ].toStdString ());
399
+ longitude = stod (coordinates_val.text ().split (" " )[1 ].toStdString ());
400
+ ui->sLatituded ->setValue (latitude);
401
+ ui->sLongituded ->setValue (longitude);
402
+ }
403
+ }
404
+ }
405
+ }
406
+ QDomNodeList elements7 = elements5.at (i5).toElement ().elementsByTagName (" city" );
407
+ for (int i7 = 0 ; i7 < elements7.size (); i7++)
408
+ {
409
+ QDomElement state_city_name = elements7.at (i7).toElement ().firstChildElement (" name" );
410
+ if (country_name.text () == selected_country) {
411
+ if (state_name.text () == selected_state) {
412
+ if (state_city_name.text () == selected_state_city) {
413
+ QDomElement coordinates_val = elements7.at (i7).toElement ().firstChildElement (" coordinates" );
414
+ latitude = stod (coordinates_val.text ().split (" " )[0 ].toStdString ());
415
+ longitude = stod (coordinates_val.text ().split (" " )[1 ].toStdString ());
416
+ ui->sLatituded ->setValue (latitude);
417
+ ui->sLongituded ->setValue (longitude);
418
+ }
419
+ }
420
+ }
348
421
}
349
422
}
350
423
}
@@ -478,7 +551,11 @@ void MainWindow::get_hours_and_minutes() {
478
551
asr_tr->setText (ui->hAsrL ->text () + " :- " + ui->hAsrT ->text ());
479
552
maghrib_tr->setText (" " +ui->hMaghribL ->text () + " :- " + ui->hMaghribT ->text ());
480
553
isha_tr->setText (ui->hIshaL ->text () + " :- " + ui->hIshaT ->text ());
481
- location_tr->setText (JsonDoc.object ().value (" sLocation" ).toString ()+" : " + ui->sCc ->currentText ().split (" /" )[1 ]);
554
+ if (ui->sCc ->currentText ().split (" |" ).size () == 2 ) {
555
+ location_tr->setText (JsonDoc.object ().value (" sLocation" ).toString ()+" : " + ui->sCc ->currentText ().split (" |" )[1 ]);
556
+ } else if (ui->sCc ->currentText ().split (" |" ).size () == 3 ) {
557
+ location_tr->setText (JsonDoc.object ().value (" sLocation" ).toString ()+" : " + ui->sCc ->currentText ().split (" |" )[2 ]);
558
+ }
482
559
home_tr->setText (ui->cDate ->text ());
483
560
tray->setToolTip (time_left_tray->text ());
484
561
// highlight next prayer
@@ -555,24 +632,50 @@ void MainWindow::get_locations() {
555
632
qDebug ( " Failed to parse the file into a DOM tree." );
556
633
inFile.close ();
557
634
}
558
-
559
635
inFile.close ();
560
- QDomElement documentElement = document.documentElement ();
561
- QDomNodeList elements = documentElement.elementsByTagName (" region" );
562
636
563
- for (int i = 0 ; i < elements.size ()+1 ; i++)
637
+ QDomElement documentElement = document.documentElement ();
638
+ QDomNodeList region_elements = documentElement.elementsByTagName (" region" );
639
+ for (int i = 0 ; i < region_elements.size ()+1 ; i++)
564
640
{
565
- if (i < elements .size ()) {
566
- QDomElement region_name = elements .at (i).toElement ().firstChildElement (" name" );
567
- QDomNodeList elements2 = elements .at (i).toElement ().elementsByTagName (" country" );
568
- for (int i2 = 0 ; i2 < elements2 .size (); i2++)
641
+ if (i < region_elements .size ()) {
642
+ QDomElement region_name = region_elements .at (i).toElement ().firstChildElement (" name" );
643
+ QDomNodeList country_elements = region_elements .at (i).toElement ().elementsByTagName (" country" );
644
+ for (int i2 = 0 ; i2 < country_elements .size ()+ 1 ; i2++)
569
645
{
570
- QDomElement country_name = elements2 .at (i2).toElement ().firstChildElement (" name" );
571
- QDomNodeList elements3 = elements2 .at (i2).toElement ().elementsByTagName (" city " );
572
- for (int i3 = 0 ; i3 < elements3 .size (); i3++)
646
+ QDomElement country_name = country_elements .at (i2).toElement ().firstChildElement (" name" );
647
+ QDomNodeList location_elements = country_elements .at (i2).toElement ().elementsByTagName (" location " );
648
+ for (int i3 = 0 ; i3 < location_elements .size (); i3++)
573
649
{
574
- QDomElement city_name = elements3.at (i3).toElement ().firstChildElement (" name" );
575
- ui->sCc ->addItem (country_name.text ()+" /" +city_name.text ());
650
+ QDomElement location_name = location_elements.at (i3).toElement ().firstChildElement (" name" );
651
+ if (location_elements.at (i3).parentNode ().toElement ().tagName () == " country" ) {
652
+ ui->sCc ->addItem (country_name.text ()+" |" +location_name.text ());
653
+ }
654
+ }
655
+ QDomNodeList city_elements = country_elements.at (i2).toElement ().elementsByTagName (" city" );
656
+ for (int i4 = 0 ; i4 < city_elements.size (); i4++)
657
+ {
658
+ QDomElement city_name = city_elements.at (i4).toElement ().firstChildElement (" name" );
659
+ if (city_elements.at (i4).parentNode ().toElement ().tagName () == " country" ) {
660
+ ui->sCc ->addItem (country_name.text ()+" |" +city_name.text ());
661
+ }
662
+ }
663
+ QDomNodeList state_elements = country_elements.at (i2).toElement ().elementsByTagName (" state" );
664
+ for (int i5 = 0 ; i5 < state_elements.size (); i5++)
665
+ {
666
+ QDomElement state_name = state_elements.at (i5).toElement ().firstChildElement (" name" );
667
+ QDomNodeList state_location_elements = state_elements.at (i5).toElement ().elementsByTagName (" location" );
668
+ for (int i6 = 0 ; i6 < state_location_elements.size (); i6++)
669
+ {
670
+ QDomElement state_location_name = state_location_elements.at (i6).toElement ().firstChildElement (" name" );
671
+ ui->sCc ->addItem (country_name.text ()+" |" +state_name.text ()+" |" +state_location_name.text ());
672
+ }
673
+ QDomNodeList state_city_elements = state_elements.at (i5).toElement ().elementsByTagName (" city" );
674
+ for (int i7 = 0 ; i7 < state_city_elements.size (); i7++)
675
+ {
676
+ QDomElement state_city_name = state_city_elements.at (i7).toElement ().firstChildElement (" name" );
677
+ ui->sCc ->addItem (country_name.text ()+" |" +state_name.text ()+" |" +state_city_name.text ());
678
+ }
576
679
}
577
680
}
578
681
} else {
0 commit comments