summaryrefslogtreecommitdiffstats
path: root/konqueror/sidebar/trees/history_module/kcmhistory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'konqueror/sidebar/trees/history_module/kcmhistory.cpp')
-rw-r--r--konqueror/sidebar/trees/history_module/kcmhistory.cpp272
1 files changed, 272 insertions, 0 deletions
diff --git a/konqueror/sidebar/trees/history_module/kcmhistory.cpp b/konqueror/sidebar/trees/history_module/kcmhistory.cpp
new file mode 100644
index 000000000..e4b31b232
--- /dev/null
+++ b/konqueror/sidebar/trees/history_module/kcmhistory.cpp
@@ -0,0 +1,272 @@
+/*
+ * kcmhistory.cpp
+ * Copyright (c) 2000,2001 Carsten Pfeiffer <pfeiffer@kde.org>
+ * Copyright (c) 2002 Stephan Binner <binner@kde.org>
+ *
+ * based on kcmtaskbar.cpp
+ * Copyright (c) 2000 Kurt Granroth <granroth@kde.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ */
+
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include <qradiobutton.h>
+
+#include <dcopclient.h>
+#include <dcopref.h>
+#include <kapplication.h>
+#include <kconfig.h>
+#include <kdialog.h>
+#include <kfontdialog.h>
+#include <kgenericfactory.h>
+#include <kglobal.h>
+#include <kiconloader.h>
+#include <klocale.h>
+#include <kmessagebox.h>
+#include <knuminput.h>
+#include "history_dlg.h"
+
+#include "konq_historymgr.h"
+
+#include "kcmhistory.h"
+#include "history_settings.h"
+
+typedef KGenericFactory<HistorySidebarConfig, QWidget > KCMHistoryFactory;
+K_EXPORT_COMPONENT_FACTORY (kcm_history, KCMHistoryFactory("kcmhistory") )
+
+HistorySidebarConfig::HistorySidebarConfig( QWidget *parent, const char* name, const QStringList & )
+ : KCModule (KCMHistoryFactory::instance(), parent, name)
+{
+ KGlobal::locale()->insertCatalogue("konqueror");
+
+ m_settings = new KonqSidebarHistorySettings( 0, "history settings" );
+ m_settings->readSettings( false );
+
+ QVBoxLayout *topLayout = new QVBoxLayout(this, 0, KDialog::spacingHint());
+ dialog = new KonqSidebarHistoryDlg(this);
+
+ dialog->spinEntries->setRange( 0, INT_MAX, 1, false );
+ dialog->spinExpire->setRange( 0, INT_MAX, 1, false );
+
+ dialog->spinNewer->setRange( 0, INT_MAX, 1, false );
+ dialog->spinOlder->setRange( 0, INT_MAX, 1, false );
+
+ dialog->comboNewer->insertItem( i18n("Minutes"),
+ KonqSidebarHistorySettings::MINUTES );
+ dialog->comboNewer->insertItem( i18n("Days"),
+ KonqSidebarHistorySettings::DAYS );
+
+ dialog->comboOlder->insertItem( i18n("Minutes"),
+ KonqSidebarHistorySettings::MINUTES );
+ dialog->comboOlder->insertItem( i18n("Days"),
+ KonqSidebarHistorySettings::DAYS );
+
+ connect( dialog->cbExpire, SIGNAL( toggled( bool )),
+ dialog->spinExpire, SLOT( setEnabled( bool )));
+ connect( dialog->spinExpire, SIGNAL( valueChanged( int )),
+ this, SLOT( slotExpireChanged( int )));
+
+ connect( dialog->spinNewer, SIGNAL( valueChanged( int )),
+ SLOT( slotNewerChanged( int )));
+ connect( dialog->spinOlder, SIGNAL( valueChanged( int )),
+ SLOT( slotOlderChanged( int )));
+
+ connect( dialog->btnFontNewer, SIGNAL( clicked() ),
+ SLOT( slotGetFontNewer() ));
+ connect( dialog->btnFontOlder, SIGNAL( clicked() ),
+ SLOT( slotGetFontOlder() ));
+ connect( dialog->btnClearHistory, SIGNAL( clicked() ),
+ SLOT( slotClearHistory() ));
+
+ connect( dialog->cbDetailedTips, SIGNAL( toggled( bool )),
+ SLOT( configChanged() ));
+ connect( dialog->cbExpire, SIGNAL( toggled( bool )),
+ SLOT( configChanged() ));
+ connect( dialog->spinEntries, SIGNAL( valueChanged( int )),
+ SLOT( configChanged() ));
+ connect( dialog->comboNewer, SIGNAL( activated( int )),
+ SLOT( configChanged() ));
+ connect( dialog->comboOlder, SIGNAL( activated( int )),
+ SLOT( configChanged() ));
+
+ dialog->show();
+ topLayout->add(dialog);
+ load();
+}
+
+void HistorySidebarConfig::configChanged()
+{
+ emit changed(true);
+}
+
+void HistorySidebarConfig::load()
+{
+ KConfig config("konquerorrc");
+ config.setGroup("HistorySettings");
+ dialog->spinExpire->setValue( config.readNumEntry( "Maximum age of History entries", 90) );
+ dialog->spinEntries->setValue( config.readNumEntry( "Maximum of History entries", 500 ) );
+ dialog->cbExpire->setChecked( dialog->spinExpire->value() > 0 );
+
+ dialog->spinNewer->setValue( m_settings->m_valueYoungerThan );
+ dialog->spinOlder->setValue( m_settings->m_valueOlderThan );
+
+ dialog->comboNewer->setCurrentItem( m_settings->m_metricYoungerThan );
+ dialog->comboOlder->setCurrentItem( m_settings->m_metricOlderThan );
+
+ dialog->cbDetailedTips->setChecked( m_settings->m_detailedTips );
+
+ m_fontNewer = m_settings->m_fontYoungerThan;
+ m_fontOlder = m_settings->m_fontOlderThan;
+
+ // enable/disable widgets
+ dialog->spinExpire->setEnabled( dialog->cbExpire->isChecked() );
+
+ slotExpireChanged( dialog->spinExpire->value() );
+ slotNewerChanged( dialog->spinNewer->value() );
+ slotOlderChanged( dialog->spinOlder->value() );
+
+ emit changed(false);
+}
+
+void HistorySidebarConfig::save()
+{
+ Q_UINT32 age = dialog->cbExpire->isChecked() ? dialog->spinExpire->value() : 0;
+ Q_UINT32 count = dialog->spinEntries->value();
+
+ KConfig config("konquerorrc");
+ config.setGroup("HistorySettings");
+ config.writeEntry( "Maximum of History entries", count );
+ config.writeEntry( "Maximum age of History entries", age );
+
+ QByteArray dataAge;
+ QDataStream streamAge( dataAge, IO_WriteOnly );
+ streamAge << age << "foo";
+ kapp->dcopClient()->send( "konqueror*", "KonqHistoryManager",
+ "notifyMaxAge(Q_UINT32, QCString)", dataAge );
+
+ QByteArray dataCount;
+ QDataStream streamCount( dataCount, IO_WriteOnly );
+ streamCount << count << "foo";
+ kapp->dcopClient()->send( "konqueror*", "KonqHistoryManager",
+ "notifyMaxCount(Q_UINT32, QCString)", dataCount );
+
+ m_settings->m_valueYoungerThan = dialog->spinNewer->value();
+ m_settings->m_valueOlderThan = dialog->spinOlder->value();
+
+ m_settings->m_metricYoungerThan = dialog->comboNewer->currentItem();
+ m_settings->m_metricOlderThan = dialog->comboOlder->currentItem();
+
+ m_settings->m_detailedTips = dialog->cbDetailedTips->isChecked();
+
+ m_settings->m_fontYoungerThan = m_fontNewer;
+ m_settings->m_fontOlderThan = m_fontOlder;
+
+ m_settings->applySettings();
+
+ emit changed(false);
+}
+
+void HistorySidebarConfig::defaults()
+{
+ dialog->spinEntries->setValue( 500 );
+ dialog->cbExpire->setChecked( true );
+ dialog->spinExpire->setValue( 90 );
+
+ dialog->spinNewer->setValue( 1 );
+ dialog->spinOlder->setValue( 2 );
+
+ dialog->comboNewer->setCurrentItem( KonqSidebarHistorySettings::DAYS );
+ dialog->comboOlder->setCurrentItem( KonqSidebarHistorySettings::DAYS );
+
+ dialog->cbDetailedTips->setChecked( true );
+
+ m_fontNewer = QFont();
+ m_fontNewer.setItalic( true );
+ m_fontOlder = QFont();
+
+ emit changed(true);
+}
+
+QString HistorySidebarConfig::quickHelp() const
+{
+ return i18n("<h1>History Sidebar</h1>"
+ " You can configure the history sidebar here.");
+}
+
+void HistorySidebarConfig::slotExpireChanged( int value )
+{
+ dialog->spinExpire->setSuffix( i18n(" day", " days", value) );
+ configChanged();
+}
+
+// change hour to days, minute to minutes and the other way round,
+// depending on the value of the spinbox, and synchronize the two spinBoxes
+// to enfore newer <= older.
+void HistorySidebarConfig::slotNewerChanged( int value )
+{
+ dialog->comboNewer->changeItem( i18n ( "Day", "Days", value),
+ KonqSidebarHistorySettings::DAYS);
+ dialog->comboNewer->changeItem( i18n ( "Minute", "Minutes", value),
+ KonqSidebarHistorySettings::MINUTES);
+
+ if ( dialog->spinNewer->value() > dialog->spinOlder->value() )
+ dialog->spinOlder->setValue( dialog->spinNewer->value() );
+ configChanged();
+}
+
+void HistorySidebarConfig::slotOlderChanged( int value )
+{
+ dialog->comboOlder->changeItem( i18n ( "Day", "Days", value),
+ KonqSidebarHistorySettings::DAYS);
+ dialog->comboOlder->changeItem( i18n ( "Minute", "Minutes", value),
+ KonqSidebarHistorySettings::MINUTES);
+
+ if ( dialog->spinNewer->value() > dialog->spinOlder->value() )
+ dialog->spinNewer->setValue( dialog->spinOlder->value() );
+
+ configChanged();
+}
+
+void HistorySidebarConfig::slotGetFontNewer()
+{
+ int result = KFontDialog::getFont( m_fontNewer, false, this );
+ if ( result == KFontDialog::Accepted )
+ configChanged();
+}
+
+void HistorySidebarConfig::slotGetFontOlder()
+{
+ int result = KFontDialog::getFont( m_fontOlder, false, this );
+ if ( result == KFontDialog::Accepted )
+ configChanged();
+}
+
+void HistorySidebarConfig::slotClearHistory()
+{
+ KGuiItem guiitem = KStdGuiItem::clear();
+ guiitem.setIconSet( SmallIconSet("history_clear"));
+ if ( KMessageBox::warningContinueCancel( this,
+ i18n("Do you really want to clear "
+ "the entire history?"),
+ i18n("Clear History?"), guiitem )
+ == KMessageBox::Continue ) {
+ DCOPRef dcopHistManager( "konqueror*", "KonqHistoryManager" );
+ dcopHistManager.send( "notifyClear", "KonqHistoryManager" );
+ }
+}
+
+#include "kcmhistory.moc"