File indexing completed on 2024-04-28 04:57:32
0001 /* This file is part of the KDE project 0002 0003 Copyright (C) 2008 Manolo Valdes <nolis71cu@gmail.com> 0004 0005 This program is free software; you can redistribute it and/or 0006 modify it under the terms of the GNU General Public 0007 License as published by the Free Software Foundation; either 0008 version 2 of the License, or (at your option) any later version. 0009 */ 0010 0011 #include "dlgmirrorsearch.h" 0012 0013 #include "kget_debug.h" 0014 #include "kget_macro.h" 0015 #include "mirrorsearchsettings.h" 0016 0017 #include <KConfigGroup> 0018 #include <KLocalizedString> 0019 0020 #include <QDebug> 0021 #include <QDialogButtonBox> 0022 #include <QPushButton> 0023 #include <QVBoxLayout> 0024 #include <qobject.h> 0025 0026 DlgEngineEditing::DlgEngineEditing(QWidget *parent) 0027 : QDialog(parent) 0028 { 0029 auto *mainWidget = new QWidget(this); 0030 ui.setupUi(mainWidget); 0031 auto *mainLayout = new QVBoxLayout; 0032 setLayout(mainLayout); 0033 mainLayout->addWidget(mainWidget); 0034 0035 setWindowTitle(i18n("Insert Engine")); 0036 setModal(true); 0037 auto *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); 0038 okButton = buttonBox->button(QDialogButtonBox::Ok); 0039 okButton->setDefault(true); 0040 okButton->setShortcut(Qt::CTRL | Qt::Key_Return); 0041 connect(buttonBox, &QDialogButtonBox::accepted, this, &DlgEngineEditing::accept); 0042 connect(buttonBox, &QDialogButtonBox::rejected, this, &DlgEngineEditing::reject); 0043 mainLayout->addWidget(buttonBox); 0044 0045 ui.engineNameLabel->setText(i18n("Engine name:")); 0046 ui.urlLabel->setText(i18n("URL:")); 0047 connect(ui.urlEdit, &QLineEdit::textChanged, this, &DlgEngineEditing::slotChangeText); 0048 connect(ui.engineNameEdit, &QLineEdit::textChanged, this, &DlgEngineEditing::slotChangeText); 0049 slotChangeText(); 0050 } 0051 0052 DlgEngineEditing::~DlgEngineEditing() 0053 { 0054 } 0055 0056 void DlgEngineEditing::slotChangeText() 0057 { 0058 okButton->setEnabled(!ui.urlEdit->text().isEmpty()); 0059 } 0060 0061 QString DlgEngineEditing::engineName() const 0062 { 0063 return ui.engineNameEdit->text(); 0064 } 0065 0066 QString DlgEngineEditing::engineUrl() const 0067 { 0068 return ui.urlEdit->text(); 0069 } 0070 0071 KGET_EXPORT_PLUGIN_CONFIG(DlgSettingsWidget) 0072 0073 DlgSettingsWidget::DlgSettingsWidget(QObject *parent, const KPluginMetaData &data) 0074 : KCModule(parent, data) 0075 { 0076 ui.setupUi(widget()); 0077 ui.newEngineBt->setIcon(QIcon::fromTheme("list-add")); 0078 ui.removeEngineBt->setIcon(QIcon::fromTheme("list-remove")); 0079 0080 connect(ui.newEngineBt, &QAbstractButton::clicked, this, &DlgSettingsWidget::slotNewEngine); 0081 connect(ui.removeEngineBt, &QAbstractButton::clicked, this, &DlgSettingsWidget::slotRemoveEngine); 0082 } 0083 0084 DlgSettingsWidget::~DlgSettingsWidget() 0085 { 0086 } 0087 0088 void DlgSettingsWidget::slotNewEngine() 0089 { 0090 DlgEngineEditing dialog; 0091 if (dialog.exec()) { 0092 addSearchEngineItem(dialog.engineName(), dialog.engineUrl()); 0093 Q_EMIT markAsChanged(); 0094 } 0095 } 0096 0097 void DlgSettingsWidget::slotRemoveEngine() 0098 { 0099 QList<QTreeWidgetItem *> selectedItems = ui.enginesTreeWidget->selectedItems(); 0100 0101 foreach (QTreeWidgetItem *selectedItem, selectedItems) 0102 delete (selectedItem); 0103 Q_EMIT markAsChanged(); 0104 } 0105 0106 void DlgSettingsWidget::load() 0107 { 0108 loadSearchEnginesSettings(); 0109 } 0110 0111 void DlgSettingsWidget::addSearchEngineItem(const QString &name, const QString &url) 0112 { 0113 ui.enginesTreeWidget->addTopLevelItem(new QTreeWidgetItem(QStringList() << name << url)); 0114 Q_EMIT markAsChanged(); 0115 } 0116 0117 void DlgSettingsWidget::loadSearchEnginesSettings() 0118 { 0119 ui.enginesTreeWidget->clear(); // Cleanup things first 0120 0121 QStringList enginesNames = MirrorSearchSettings::self()->searchEnginesNameList(); 0122 QStringList enginesUrls = MirrorSearchSettings::self()->searchEnginesUrlList(); 0123 0124 for (int i = 0; i < enginesNames.size(); i++) { 0125 addSearchEngineItem(enginesNames[i], enginesUrls[i]); 0126 } 0127 } 0128 0129 void DlgSettingsWidget::saveSearchEnginesSettings() 0130 { 0131 QStringList enginesNames; 0132 QStringList enginesUrls; 0133 0134 for (int i = 0; i < ui.enginesTreeWidget->topLevelItemCount(); i++) { 0135 enginesNames.append(ui.enginesTreeWidget->topLevelItem(i)->text(0)); 0136 enginesUrls.append(ui.enginesTreeWidget->topLevelItem(i)->text(1)); 0137 } 0138 0139 MirrorSearchSettings::self()->setSearchEnginesNameList(enginesNames); 0140 MirrorSearchSettings::self()->setSearchEnginesUrlList(enginesUrls); 0141 0142 MirrorSearchSettings::self()->save(); 0143 } 0144 0145 void DlgSettingsWidget::save() 0146 { 0147 qCDebug(KGET_DEBUG); 0148 saveSearchEnginesSettings(); 0149 0150 MirrorSearchSettings::self()->save(); 0151 } 0152 0153 #include "dlgmirrorsearch.moc" 0154 #include "moc_dlgmirrorsearch.cpp"