settings: add general settings tab

Refs #75332
Refs #75239

Change-Id: Ib36fc74e8f41f6c9cbe204a89e644ff5427a1773
diff --git a/configurationwidget.cpp b/configurationwidget.cpp
index c1a5a9b..bc659e6 100644
--- a/configurationwidget.cpp
+++ b/configurationwidget.cpp
@@ -19,6 +19,8 @@
 #include "configurationwidget.h"
 #include "ui_configurationwidget.h"
 
+#include <QMessageBox>
+
 #include "video/devicemodel.h"
 #include "video/channel.h"
 #include "video/resolution.h"
@@ -32,6 +34,8 @@
 #include "protocolmodel.h"
 #include "accountdetails.h"
 #include "callmodel.h"
+#include "ringtonemodel.h"
+#include "categorizedhistorymodel.h"
 
 #include "utils.h"
 
@@ -60,6 +64,9 @@
     ui->accountDetailLayout->addWidget(accountDetails_);
     ui->accountTypeBox->setModel(accountModel_->protocolModel());
     ui->startupBox->setChecked(Utils::CheckStartupLink());
+
+    ui->ringtonesBox->setModel(RingtoneModel::instance());
+    ui->historyDaySettingsSpinBox->setValue(CategorizedHistoryModel::instance()->historyLimit());
 }
 
 void ConfigurationWidget::atExit() {
@@ -185,3 +192,23 @@
         Video::PreviewManager::instance()->startPreview();
     }
 }
+
+void
+ConfigurationWidget::on_clearHistoryButton_clicked()
+{
+    QMessageBox confirmationDialog;
+
+    confirmationDialog.setText("Are you sure you want to clear all your history?");
+    confirmationDialog.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
+    auto ret = confirmationDialog.exec();
+
+    if (ret == QMessageBox::Ok)
+        CategorizedHistoryModel::instance()->clearAllCollections();
+}
+
+void
+ConfigurationWidget::on_historyDaySettingsSpinBox_valueChanged(int limit)
+{
+    if (CategorizedHistoryModel::instance()->historyLimit() != limit)
+        CategorizedHistoryModel::instance()->setHistoryLimit(limit);
+}