summaryrefslogtreecommitdiffstats
path: root/src/app/Synchronizer/feedtolistboxdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/Synchronizer/feedtolistboxdialog.cpp')
-rw-r--r--src/app/Synchronizer/feedtolistboxdialog.cpp200
1 files changed, 200 insertions, 0 deletions
diff --git a/src/app/Synchronizer/feedtolistboxdialog.cpp b/src/app/Synchronizer/feedtolistboxdialog.cpp
new file mode 100644
index 0000000..b69503f
--- /dev/null
+++ b/src/app/Synchronizer/feedtolistboxdialog.cpp
@@ -0,0 +1,200 @@
+/***************************************************************************
+ feedtolistboxdialog.cpp - description
+ -------------------
+ copyright : (C) 2006 + 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 "feedtolistboxdialog.h"
+#include "synchronizer.h"
+#include "synchronizergui.h"
+#include "../VFS/vfs.h"
+#include "../VFS/virt_vfs.h"
+#include "../krusader.h"
+#include "../krusaderview.h"
+#include "../panelmanager.h"
+#include <tdelocale.h>
+#include <tdemessagebox.h>
+#include <tqcheckbox.h>
+#include <tqlayout.h>
+#include <tqlineedit.h>
+#include <tqlabel.h>
+#include <tqhbox.h>
+#include <tqcombobox.h>
+#include <tqframe.h>
+
+#define S_LEFT 0
+#define S_RIGHT 1
+#define S_BOTH 2
+
+FeedToListBoxDialog::FeedToListBoxDialog(TQWidget *parent, const char *name, Synchronizer *sync,
+ TQListView *syncL, bool equOK) : KDialogBase( parent, name, true, i18n( "Krusader::Feed to listbox" ),
+ KDialogBase::Ok | KDialogBase::Cancel | KDialogBase::User1, Ok, true, KStdGuiItem::clear() ),
+ synchronizer( sync ), syncList( syncL ), equalAllowed( equOK ), accepted( false ) {
+
+ // autodetecting the parameters
+
+ int selectedNum = 0;
+ int itemNum = 0;
+ int leftExistingNum = 0;
+ int rightExistingNum = 0;
+
+ TQListViewItemIterator it( syncList );
+ while( it.current() ) {
+ SynchronizerGUI::SyncViewItem *item = (SynchronizerGUI::SyncViewItem *) it.current();
+ SynchronizerFileItem *syncItem = item->synchronizerItemRef();
+
+ if( syncItem && syncItem->isMarked() ) {
+ if( item->isSelected() || syncItem->task() != TT_EQUALS || equalAllowed ) {
+ itemNum++;
+ if( item->isSelected() )
+ selectedNum++;
+
+ if( syncItem->existsInLeft() )
+ leftExistingNum++;
+ if( syncItem->existsInRight() )
+ rightExistingNum++;
+ }
+ }
+ it++;
+ }
+
+ if( itemNum == 0 ) {
+ hide();
+ KMessageBox::error( parent, i18n( "No elements to feed!" ) );
+ return;
+ }
+
+ // guessing the collection name
+
+ virt_vfs v(0,true);
+ if( !v.vfs_refresh( KURL( "virt:/" ) ) )
+ return;
+
+ krConfig->setGroup( "Synchronize" );
+ int listBoxNum = krConfig->readNumEntry( "Feed To Listbox Counter", 1 );
+ TQString queryName;
+ do {
+ queryName = i18n("Synchronize results")+TQString( " %1" ).arg( listBoxNum++ );
+ }while( v.vfs_search( queryName ) != 0 );
+ krConfig->writeEntry( "Feed To Listbox Counter", listBoxNum );
+
+ // creating the widget
+
+ TQWidget *widget=new TQWidget(this, "feedToListBoxMainWidget");
+ TQVBoxLayout *layout = new TQVBoxLayout( widget, 0, 10, "FeedToListBoxDialogLayout" );
+
+ TQLabel *label = new TQLabel( i18n("Here you can name the file collection"), widget, "fbLabel" );
+ layout->addWidget( label );
+
+ lineEdit = new TQLineEdit( widget, "fbLineEdit" );
+ lineEdit->setText( queryName );
+ lineEdit->selectAll();
+ layout->addWidget( lineEdit );
+
+ TQHBox *hbox = new TQHBox( widget, "fbHBox" );
+
+ TQLabel *label2 = new TQLabel( i18n( "Side to feed:" ), hbox, "fbSideLabel" );
+ label2->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+
+ sideCombo = new TQComboBox( hbox, "fbSideCombo" );
+ sideCombo->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ sideCombo->insertItem( i18n( "Left" ) );
+ sideCombo->insertItem( i18n( "Right" ) );
+ sideCombo->insertItem( i18n( "Both" ) );
+ if( leftExistingNum == 0 ) {
+ sideCombo->setCurrentItem( 1 );
+ sideCombo->setEnabled( false );
+ } else if( rightExistingNum == 0 ) {
+ sideCombo->setCurrentItem( 0 );
+ sideCombo->setEnabled( false );
+ } else
+ sideCombo->setCurrentItem( 2 );
+
+ TQFrame *line = new TQFrame( hbox, "fbVLine" );
+ line->setFrameStyle( TQFrame::VLine | TQFrame::Sunken );
+ line->setSizePolicy( TQSizePolicy::Expanding, TQSizePolicy::Expanding );
+
+ cbSelected = new TQCheckBox( i18n( "Selected files only" ), hbox, "cbSelected" );
+ cbSelected->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
+ cbSelected->setEnabled( selectedNum != 0 );
+ cbSelected->setChecked( selectedNum != 0 );
+
+ layout->addWidget( hbox );
+
+ setMainWidget(widget);
+
+ exec();
+}
+
+void FeedToListBoxDialog::slotUser1() {
+ lineEdit->clear();
+}
+
+void FeedToListBoxDialog::slotOk() {
+ int side = sideCombo->currentItem();
+ bool selected = cbSelected->isChecked();
+ TQString name = lineEdit->text();
+ KURL::List urlList;
+
+ TQListViewItemIterator it( syncList );
+ for( ;it.current(); it++ ) {
+ SynchronizerGUI::SyncViewItem *item = (SynchronizerGUI::SyncViewItem *) it.current();
+ SynchronizerFileItem *syncItem = item->synchronizerItemRef();
+
+ if( !syncItem || !syncItem->isMarked() )
+ continue;
+ if( selected && !item->isSelected() )
+ continue;
+ if( !equalAllowed && syncItem->task() == TT_EQUALS && (!selected || !item->isSelected() ) )
+ continue;
+
+ if( ( side == S_BOTH || side == S_LEFT ) && syncItem->existsInLeft() ) {
+ TQString leftDirName = syncItem->leftDirectory().isEmpty() ? "" : syncItem->leftDirectory() + "/";
+ KURL leftURL = vfs::fromPathOrURL( synchronizer->leftBaseDirectory() + leftDirName + syncItem->leftName() );
+ urlList.push_back( leftURL );
+ }
+
+ if( ( side == S_BOTH || side == S_RIGHT ) && syncItem->existsInRight() ) {
+ TQString rightDirName = syncItem->rightDirectory().isEmpty() ? "" : syncItem->rightDirectory() + "/";
+ KURL leftURL = vfs::fromPathOrURL( synchronizer->rightBaseDirectory() + rightDirName + syncItem->rightName() );
+ urlList.push_back( leftURL );
+ }
+ }
+
+ KURL url = KURL::fromPathOrURL(TQString("virt:/")+ name);
+ virt_vfs v(0,true);
+ if( !v.vfs_refresh( url ) ) {
+ KMessageBox::error( parentWidget(), i18n( "Cannot open %1!" ).arg( url.prettyURL() ) );
+ return;
+ }
+ v.vfs_addFiles( &urlList, TDEIO::CopyJob::Copy, 0 );
+ ACTIVE_MNG->slotNewTab(url.prettyURL());
+ accepted = true;
+ accept();
+}
+
+#include "feedtolistboxdialog.moc"