summaryrefslogtreecommitdiffstats
path: root/src/app/Konfigurator/konfiguratorpage.cpp
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2025-08-28 22:44:34 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2025-08-31 23:30:34 +0900
commitf9abd9d505434c9244c03eac708e29a0ca042f6b (patch)
tree30a197ab4c413849188bc131ff859212e636c821 /src/app/Konfigurator/konfiguratorpage.cpp
parent14d42d284de233f9937becf3fc9ee0dabede3b21 (diff)
downloadkrusader-r14.1.x.tar.gz
krusader-r14.1.x.zip
Restructure source foldersr14.1.x
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it> (cherry picked from commit 086012dcad8a976a0dabbb7cbc20c9cb612cdfa9)
Diffstat (limited to 'src/app/Konfigurator/konfiguratorpage.cpp')
-rw-r--r--src/app/Konfigurator/konfiguratorpage.cpp334
1 files changed, 334 insertions, 0 deletions
diff --git a/src/app/Konfigurator/konfiguratorpage.cpp b/src/app/Konfigurator/konfiguratorpage.cpp
new file mode 100644
index 0000000..2f33029
--- /dev/null
+++ b/src/app/Konfigurator/konfiguratorpage.cpp
@@ -0,0 +1,334 @@
+/* **************************************************************************
+ konfiguratorpage.cpp - description
+ -------------------
+ copyright : (C) 2003 by Csaba Karai
+ e-mail : krusader@users.sourceforge.net
+ web site : http://krusader.sourceforge.net
+ ---------------------------------------------------------------------------
+ Description
+ ***************************************************************************
+
+ A
+
+ db dD d8888b. db db .d8888. .d8b. d8888b. d88888b d8888b.
+ 88 ,8P' 88 `8D 88 88 88' YP d8' `8b 88 `8D 88' 88 `8D
+ 88,8P 88oobY' 88 88 `8bo. 88ooo88 88 88 88ooooo 88oobY'
+ 88`8b 88`8b 88 88 `Y8b. 88~~~88 88 88 88~~~~~ 88`8b
+ 88 `88. 88 `88. 88b d88 db 8D 88 88 88 .8D 88. 88 `88.
+ YP YD 88 YD ~Y8888P' `8888Y' YP YP Y8888D' Y88888P 88 YD
+
+ S o u r c e F i l e
+
+ ***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+
+#include "konfiguratorpage.h"
+#include <tqlayout.h>
+#include "../krusader.h"
+#include <tqwhatsthis.h>
+
+KonfiguratorPage::KonfiguratorPage( bool firstTime, TQWidget* parent, const char* name ) :
+ TQFrame( parent, name ), firstCall( firstTime )
+{
+}
+
+bool KonfiguratorPage::apply()
+{
+ bool restartNeeded = false;
+
+ KonfiguratorExtension *item = itemList.first();
+
+ while( item )
+ {
+ restartNeeded = item->apply() || restartNeeded;
+ item = itemList.next();
+ }
+
+ krConfig->sync();
+ return restartNeeded;
+}
+
+void KonfiguratorPage::setDefaults()
+{
+ KonfiguratorExtension *item = itemList.first();
+ int activePage = activeSubPage();
+
+ while( item )
+ {
+ if( item->subPage() == activePage )
+ item->setDefaults();
+ item = itemList.next();
+ }
+}
+
+void KonfiguratorPage::loadInitialValues()
+{
+ KonfiguratorExtension *item = itemList.first();
+
+ while( item )
+ {
+ item->loadInitialValue();
+ item = itemList.next();
+ }
+}
+
+bool KonfiguratorPage::isChanged()
+{
+ KonfiguratorExtension *currentItem = itemList.current(); /* save the current pointer */
+ bool isChanged = false;
+
+ KonfiguratorExtension *item = itemList.first();
+
+ while( item )
+ {
+ isChanged = isChanged || item->isChanged();
+ item = itemList.next();
+ }
+
+ itemList.find( currentItem ); /* restore the current pointer */
+ return isChanged;
+}
+
+KonfiguratorCheckBox* KonfiguratorPage::createCheckBox( TQString cls, TQString name,
+ bool dflt, TQString text, TQWidget *parent, bool rst, TQString toolTip, int pg )
+{
+ KonfiguratorCheckBox *checkBox = new KonfiguratorCheckBox( cls, name, dflt, text,
+ parent, TQString(cls + "/" + name).ascii(), rst, pg );
+ if( !toolTip.isEmpty() )
+ TQWhatsThis::add( checkBox, toolTip );
+
+ registerObject( checkBox->extension() );
+ return checkBox;
+}
+
+KonfiguratorSpinBox* KonfiguratorPage::createSpinBox( TQString cls, TQString name,
+ int dflt, int min, int max, TQWidget *parent, bool rst, int pg )
+{
+ KonfiguratorSpinBox *spinBox = new KonfiguratorSpinBox( cls, name, dflt, min, max,
+ parent, TQString(cls + "/" + name).ascii(), rst, pg );
+
+ registerObject( spinBox->extension() );
+ return spinBox;
+}
+
+KonfiguratorEditBox* KonfiguratorPage::createEditBox( TQString cls, TQString name,
+ TQString dflt, TQWidget *parent, bool rst, int pg )
+{
+ KonfiguratorEditBox *editBox = new KonfiguratorEditBox( cls, name, dflt, parent,
+ TQString(cls + "/" + name).ascii(), rst, pg );
+
+ registerObject( editBox->extension() );
+ return editBox;
+}
+
+KonfiguratorListBox* KonfiguratorPage::createListBox( TQString cls, TQString name,
+ TQStringList dflt, TQWidget *parent, bool rst, int pg )
+{
+ KonfiguratorListBox *listBox = new KonfiguratorListBox( cls, name, dflt, parent,
+ TQString(cls + "/" + name).ascii(), rst, pg );
+
+ registerObject( listBox->extension() );
+ return listBox;
+}
+
+KonfiguratorURLRequester* KonfiguratorPage::createURLRequester( TQString cls, TQString name,
+ TQString dflt, TQWidget *parent, bool rst, int pg )
+{
+ KonfiguratorURLRequester *urlRequester = new KonfiguratorURLRequester( cls, name, dflt,
+ parent, TQString(cls + "/" + name).ascii(), rst, pg );
+
+ registerObject( urlRequester->extension() );
+ return urlRequester;
+}
+
+TQGroupBox* KonfiguratorPage::createFrame( TQString text, TQWidget *parent,
+ const char *widgetName )
+{
+ TQGroupBox *groupBox = new TQGroupBox( parent, widgetName );
+ groupBox->setFrameShape( TQGroupBox::Box );
+ groupBox->setFrameShadow( TQGroupBox::Sunken );
+ if( !text.isNull() )
+ groupBox->setTitle( text );
+ groupBox->setColumnLayout(0, TQt::Vertical );
+ groupBox->layout()->setSpacing( 0 );
+ groupBox->layout()->setMargin( 0 );
+ return groupBox;
+}
+
+TQGridLayout* KonfiguratorPage::createGridLayout( TQLayout *parent )
+{
+ TQGridLayout *gridLayout = new TQGridLayout( parent );
+ gridLayout->setAlignment( TQt::AlignTop );
+ gridLayout->setSpacing( 6 );
+ gridLayout->setMargin( 11 );
+ return gridLayout;
+}
+
+TQLabel* KonfiguratorPage::addLabel( TQGridLayout *layout, int x, int y, TQString label,
+ TQWidget *parent, const char *widgetName )
+{
+ TQLabel *lbl = new TQLabel( label, parent, widgetName );
+ layout->addWidget( lbl, x, y );
+ return lbl;
+}
+
+TQWidget* KonfiguratorPage::createSpacer( TQWidget *parent, const char *widgetName )
+{
+ TQWidget *widget = new TQWidget( parent, widgetName );
+ TQHBoxLayout *hboxlayout = new TQHBoxLayout( widget );
+ TQSpacerItem* spacer = new TQSpacerItem( 40, 20, TQSizePolicy::Expanding, TQSizePolicy::Minimum );
+ hboxlayout->addItem( spacer );
+ return widget;
+}
+
+KonfiguratorCheckBoxGroup* KonfiguratorPage::createCheckBoxGroup( int sizex, int sizey,
+ KONFIGURATOR_CHECKBOX_PARAM *params, int paramNum, TQWidget *parent,
+ const char *widgetName, int pg )
+{
+ KonfiguratorCheckBoxGroup *groupWidget = new KonfiguratorCheckBoxGroup( parent, widgetName );
+ TQGridLayout *layout = new TQGridLayout( groupWidget );
+ layout->setSpacing( 6 );
+ layout->setMargin( 0 );
+
+ int x = 0, y = 0;
+
+ for( int i=0; i != paramNum; i++ )
+ {
+ KonfiguratorCheckBox *checkBox = createCheckBox( params[i].configClass,
+ params[i].configName, params[i].defaultValue, params[i].text, groupWidget,
+ params[i].restart, params[i].toolTip, pg );
+
+ groupWidget->add( checkBox );
+ layout->addWidget( checkBox, y, x );
+
+ if( sizex )
+ {
+ if( ++x == sizex )
+ x = 0, y++;
+ }
+ else
+ {
+ if( ++y == sizey )
+ y = 0, x++;
+ }
+ }
+
+ return groupWidget;
+}
+
+KonfiguratorRadioButtons* KonfiguratorPage::createRadioButtonGroup( TQString cls,
+ TQString name, TQString dflt, int sizex, int sizey, KONFIGURATOR_NAME_VALUE_TIP *params,
+ int paramNum, TQWidget *parent, const char *widgetName, bool rst, int pg )
+{
+ KonfiguratorRadioButtons *radioWidget = new KonfiguratorRadioButtons( cls, name, dflt, parent, widgetName, rst, pg );
+ radioWidget->setFrameShape( TQButtonGroup::NoFrame );
+ radioWidget->setFrameShadow( TQButtonGroup::Sunken );
+ radioWidget->setTitle( "" );
+ radioWidget->setExclusive( true );
+ radioWidget->setRadioButtonExclusive( true );
+ radioWidget->setColumnLayout(0, TQt::Vertical );
+
+ TQGridLayout *layout = new TQGridLayout( radioWidget->layout() );
+ layout->setAlignment( TQt::AlignTop );
+ layout->setSpacing( 6 );
+ layout->setMargin( 0 );
+
+ int x = 0, y = 0;
+
+ for( int i=0; i != paramNum; i++ )
+ {
+ TQRadioButton *radBtn = new TQRadioButton( params[i].text, radioWidget,
+ TQString( cls + "/" + name + "/" + params[i].value ).ascii() );
+
+ if( !params[i].tooltip.isEmpty() )
+ TQWhatsThis::add( radBtn, params[i].tooltip );
+
+ layout->addWidget( radBtn, y, x );
+
+ radioWidget->addRadioButton( radBtn, params[i].text, params[i].value );
+
+ if( sizex )
+ {
+ if( ++x == sizex )
+ x = 0, y++;
+ }
+ else
+ {
+ if( ++y == sizey )
+ y = 0, x++;
+ }
+ }
+
+ radioWidget->loadInitialValue();
+ registerObject( radioWidget->extension() );
+ return radioWidget;
+}
+
+KonfiguratorFontChooser *KonfiguratorPage::createFontChooser( TQString cls, TQString name,
+ TQFont *dflt, TQWidget *parent, bool rst, int pg )
+{
+ KonfiguratorFontChooser *fontChooser = new KonfiguratorFontChooser( cls, name, dflt, parent,
+ TQString(cls + "/" + name).ascii(), rst, pg );
+
+ registerObject( fontChooser->extension() );
+ return fontChooser;
+}
+
+KonfiguratorComboBox *KonfiguratorPage::createComboBox( TQString cls, TQString name, TQString dflt,
+ KONFIGURATOR_NAME_VALUE_PAIR *params, int paramNum, TQWidget *parent, bool rst, bool editable, int pg )
+{
+ KonfiguratorComboBox *comboBox = new KonfiguratorComboBox( cls, name, dflt, params,
+ paramNum, parent, TQString(cls + "/" + name).ascii(),
+ rst, editable, pg );
+
+ registerObject( comboBox->extension() );
+ return comboBox;
+}
+
+TQFrame* KonfiguratorPage::createLine( TQWidget *parent, const char *widgetName, bool vertical )
+{
+ TQFrame *line = new TQFrame( parent, widgetName );
+ line->setFrameStyle( ( vertical ? TQFrame::VLine : TQFrame::HLine ) | TQFrame::Sunken );
+ return line;
+}
+
+void KonfiguratorPage::registerObject( KonfiguratorExtension *item )
+{
+ KonfiguratorExtension *currentItem = itemList.current();
+
+ itemList.append( item );
+ connect( item, TQ_SIGNAL( sigChanged( bool ) ), this, TQ_SIGNAL ( sigChanged( ) ) );
+
+ itemList.find( currentItem );
+}
+
+void KonfiguratorPage::removeObject( KonfiguratorExtension *item )
+{
+ if( item == itemList.current() )
+ {
+ itemList.remove();
+ if( itemList.current() != itemList.getFirst() )
+ itemList.prev();
+ }
+ else
+ itemList.removeRef( item );
+}
+
+KonfiguratorColorChooser *KonfiguratorPage::createColorChooser( TQString cls, TQString name, TQColor dflt,
+ TQWidget *parent, bool rst,
+ ADDITIONAL_COLOR *addColPtr, int addColNum, int pg )
+{
+ KonfiguratorColorChooser *colorChooser = new KonfiguratorColorChooser( cls, name, dflt, parent,
+ TQString(cls + "/" + name).ascii(), rst, addColPtr, addColNum, pg );
+
+ registerObject( colorChooser->extension() );
+ return colorChooser;
+}
+
+#include "konfiguratorpage.moc"