summaryrefslogtreecommitdiffstats
path: root/plugins/infowidget/fileview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/infowidget/fileview.cpp')
-rw-r--r--plugins/infowidget/fileview.cpp447
1 files changed, 0 insertions, 447 deletions
diff --git a/plugins/infowidget/fileview.cpp b/plugins/infowidget/fileview.cpp
deleted file mode 100644
index c7bd470..0000000
--- a/plugins/infowidget/fileview.cpp
+++ /dev/null
@@ -1,447 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2005 by Joris Guisson *
- * joris.guisson@gmail.com *
- * *
- * 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 Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
- ***************************************************************************/
-#include <tdelocale.h>
-#include <kiconloader.h>
-#include <tdeglobal.h>
-#include <tdepopupmenu.h>
-#include <krun.h>
-#include <tdemessagebox.h>
-#include <kmimetype.h>
-#include <util/bitset.h>
-#include <util/functions.h>
-#include <interfaces/functions.h>
-#include <interfaces/torrentinterface.h>
-#include <interfaces/torrentfileinterface.h>
-#include <tqfileinfo.h>
-#include "functions.h"
-#include "iwfiletreeitem.h"
-#include "iwfiletreediritem.h"
-#include "fileview.h"
-
-using namespace bt;
-
-namespace kt
-{
-
- FileView::FileView(TQWidget *parent, const char *name)
- : TDEListView(parent, name),curr_tc(0),multi_root(0),pending_fill(0),next_fill_item(0)
- {
- setFrameShape(TQFrame::NoFrame);
- addColumn( i18n( "File" ) );
- addColumn( i18n( "Size" ) );
- addColumn( i18n( "Download" ) );
- addColumn( i18n( "Preview" ) );
- addColumn( i18n( "% Complete" ) );
- setShowSortIndicator(true);
-
- context_menu = new TDEPopupMenu(this);
- preview_id = context_menu->insertItem(SmallIcon("document-open"),i18n("Open"));
- context_menu->insertSeparator();
- first_id = context_menu->insertItem(i18n("Download First"));
- normal_id = context_menu->insertItem(i18n("Download Normally"));
- last_id = context_menu->insertItem(i18n("Download Last"));
- context_menu->insertSeparator();
- dnd_keep_id = context_menu->insertItem(i18n("Do Not Download"));
- dnd_throw_away_id = context_menu->insertItem(i18n("Delete File(s)"));
-
-
- context_menu->setItemEnabled(preview_id, false);
- context_menu->setItemEnabled(first_id, false);
- context_menu->setItemEnabled(normal_id, false);
- context_menu->setItemEnabled(last_id, false);
- context_menu->setItemEnabled(dnd_keep_id, false);
- context_menu->setItemEnabled(dnd_throw_away_id, false);
-
- connect(this,TQT_SIGNAL(contextMenu(TDEListView*, TQListViewItem*, const TQPoint& )),
- this,TQT_SLOT(showContextMenu(TDEListView*, TQListViewItem*, const TQPoint& )));
- connect(context_menu, TQT_SIGNAL ( activated ( int ) ), this, TQT_SLOT ( contextItem ( int ) ) );
- connect(this,TQT_SIGNAL(doubleClicked( TQListViewItem*, const TQPoint&, int )),
- this,TQT_SLOT(onDoubleClicked(TQListViewItem*, const TQPoint&, int)));
-
- connect(&fill_timer, TQT_SIGNAL(timeout()), this, TQT_SLOT( fillTreePartial() ) );
-
- setEnabled(false);
-
- setSelectionMode(TQListView::Extended);
- }
-
-
- FileView::~FileView()
- {}
-
-#define ITEMS_PER_TICK 100
-
- void FileView::fillTreePartial()
- {
- int cnt = 0;
- while (next_fill_item < curr_tc->getNumFiles() && cnt < ITEMS_PER_TICK)
- {
- TorrentFileInterface & file = curr_tc->getTorrentFile(next_fill_item);
- multi_root->insert(file.getPath(),file);
- cnt++;
- next_fill_item++;
- }
-
- if (next_fill_item >= curr_tc->getNumFiles())
- {
- multi_root->setOpen(true);
- setRootIsDecorated(true);
- setEnabled(true);
- multi_root->updatePriorityInformation(curr_tc);
- multi_root->updatePercentageInformation();
- multi_root->updatePreviewInformation(curr_tc);
- fill_timer.stop();
- connect(curr_tc,TQT_SIGNAL(missingFilesMarkedDND( kt::TorrentInterface* )),
- this,TQT_SLOT(refreshFileTree( kt::TorrentInterface* )));
- }
- else
- fill_timer.start(0,true);
- }
-
- void FileView::fillFileTree()
- {
- multi_root = 0;
- clear();
-
- if (!curr_tc)
- return;
-
- if (curr_tc->getStats().multi_file_torrent)
- {
- setEnabled(false);
- multi_root = new IWFileTreeDirItem(this,curr_tc->getStats().torrent_name);
- next_fill_item = 0;
- fillTreePartial();
- }
- else
- {
- const TorrentStats & s = curr_tc->getStats();
- this->setRootIsDecorated(false);
- TDEListViewItem* item = new TDEListViewItem(
- this,
- s.torrent_name,
- BytesToString(s.total_bytes));
-
- item->setPixmap(0,KMimeType::findByPath(s.torrent_name)->pixmap(TDEIcon::Small));
- setEnabled(true);
- connect(curr_tc,TQT_SIGNAL(missingFilesMarkedDND( kt::TorrentInterface* )),
- this,TQT_SLOT(refreshFileTree( kt::TorrentInterface* )));
- }
- }
-
- void FileView::changeTC(kt::TorrentInterface* tc)
- {
- if (tc == curr_tc)
- return;
-
- curr_tc = tc;
- pending_fill = true;
- fill_timer.stop();
- fillFileTree();
- }
-
- void FileView::update()
- {
- if (!curr_tc)
- return;
-
- if (isVisible() && !pending_fill)
- {
- readyPreview();
- readyPercentage();
- }
- }
-
- void FileView::readyPercentage()
- {
- if (curr_tc && !curr_tc->getStats().multi_file_torrent)
- {
- TQListViewItemIterator it(this);
- if (!it.current())
- return;
-
- const BitSet & bs = curr_tc->downloadedChunksBitSet();
- Uint32 total = bs.getNumBits();
- Uint32 on = bs.numOnBits();
- double percent = 100.0 * ((double)on/(double)total);
- if (percent < 0.0)
- percent = 0.0;
- else if (percent > 100.0)
- percent = 100.0;
- TDELocale* loc = TDEGlobal::locale();
- it.current()->setText(4,i18n("%1 %").arg(loc->formatNumber(percent,2)));
- }
- }
-
- void FileView::readyPreview()
- {
- if (curr_tc && !curr_tc->getStats().multi_file_torrent)
- {
- TQListViewItemIterator it(this);
- if (!it.current())
- return;
-
- if (IsMultimediaFile(curr_tc->getStats().output_path))
- {
- if ( curr_tc->readyForPreview() )
- it.current()->setText(3, i18n("Available"));
- else
- it.current()->setText(3, i18n("Pending"));
- }
- else
- it.current()->setText(3, i18n("No"));
-
- }
- }
-
- void FileView::showContextMenu(TDEListView* ,TQListViewItem*,const TQPoint & p)
- {
- const TorrentStats & s = curr_tc->getStats();
- // don't show a menu if item is 0 or if it is a directory
-
-
-
- TQPtrList<TQListViewItem> sel = selectedItems();
- switch(sel.count())
- {
- case 0:
- return;
- break;
- case 1:
- break;
- default:
- context_menu->setItemEnabled(first_id, true);
- context_menu->setItemEnabled(normal_id, true);
- context_menu->setItemEnabled(last_id, true);
- context_menu->setItemEnabled(preview_id, false);
- context_menu->setItemEnabled(dnd_keep_id,true);
- context_menu->setItemEnabled(dnd_throw_away_id,true);
- context_menu->popup(p);
- return;
- break;
- }
- TQListViewItem* item = sel.getFirst();
-
- context_menu->setItemEnabled(first_id, false);
- context_menu->setItemEnabled(normal_id, false);
- context_menu->setItemEnabled(last_id, false);
- if (s.multi_file_torrent && item->childCount() == 0)
- {
- kt::TorrentFileInterface & file = ((FileTreeItem*)item)->getTorrentFile();
- if (!file.isNull())
- {
- context_menu->setItemEnabled(preview_id, true);
- this->preview_path = "cache" + bt::DirSeparator() + file.getPath();
-
- switch(file.getPriority())
- {
- case FIRST_PRIORITY:
- context_menu->setItemEnabled(normal_id, true);
- context_menu->setItemEnabled(last_id, true);
- context_menu->setItemEnabled(dnd_keep_id,true);
- context_menu->setItemEnabled(dnd_keep_id,true);
- context_menu->setItemEnabled(dnd_throw_away_id,true);
- break;
- case LAST_PRIORITY:
- context_menu->setItemEnabled(first_id, true);
- context_menu->setItemEnabled(normal_id, true);
- context_menu->setItemEnabled(dnd_keep_id,true);
- context_menu->setItemEnabled(dnd_keep_id,true);
- context_menu->setItemEnabled(dnd_throw_away_id,true);
- break;
- case EXCLUDED:
- context_menu->setItemEnabled(first_id,true);
- context_menu->setItemEnabled(normal_id,true);
- context_menu->setItemEnabled(last_id, true);
- context_menu->setItemEnabled(dnd_keep_id,true);
- context_menu->setItemEnabled(dnd_throw_away_id,false);
- break;
- case ONLY_SEED_PRIORITY:
- context_menu->setItemEnabled(first_id,true);
- context_menu->setItemEnabled(normal_id,true);
- context_menu->setItemEnabled(last_id, true);
- context_menu->setItemEnabled(dnd_keep_id,false);
- context_menu->setItemEnabled(dnd_throw_away_id,true);
- break;
- case PREVIEW_PRIORITY:
- default:
- context_menu->setItemEnabled(first_id, true);
- context_menu->setItemEnabled(normal_id,false);
- context_menu->setItemEnabled(last_id, true);
- context_menu->setItemEnabled(dnd_keep_id,true);
- context_menu->setItemEnabled(dnd_throw_away_id,true);
- break;
- }
- }
- else
- {
- context_menu->setItemEnabled(preview_id, false);
- }
- }
- else
- {
- bool val = item->childCount() != 0;
- context_menu->setItemEnabled(first_id, val);
- context_menu->setItemEnabled(normal_id, val);
- context_menu->setItemEnabled(last_id, val);
- context_menu->setItemEnabled(dnd_keep_id,val);
- context_menu->setItemEnabled(dnd_throw_away_id,val);
-
- context_menu->setItemEnabled(preview_id, true);
- if (s.multi_file_torrent)
- {
- FileTreeDirItem* dir = ((FileTreeDirItem*)item);
- preview_path = "cache" + dir->getPath();
- }
- else
- {
- preview_path = "cache";
- }
- }
-
- context_menu->popup(p);
- }
-
- void FileView::contextItem(int id)
- {
- TQPtrList<TQListViewItem> sel = selectedItems();
-
- Priority newpriority = NORMAL_PRIORITY;
- if(id == this->preview_id)
- {
- new KRun(KURL::fromPathOrURL(this->curr_tc->getTorDir()+preview_path), 0, true, true);
- return;
- }
- else if (id == dnd_throw_away_id)
- {
- Uint32 n = sel.count();
- if (n == 1) // single item can be a directory
- {
- // the number of the beast > 1
- n = (*sel.begin())->childCount() == 0 ? 1 : 666;
- }
-
- TQString msg = i18n(
- "You will lose all data in this file, are you sure you want to do this ?",
- "You will lose all data in these files, are you sure you want to do this ?",n);
-
- if (KMessageBox::warningYesNo(0,msg) == KMessageBox::No)
- return;
- newpriority = EXCLUDED;
- }
- else if(id == this->first_id)
- {
- newpriority = FIRST_PRIORITY;
- }
- else if(id == this->last_id)
- {
- newpriority = LAST_PRIORITY;
- }
- else if(id == this->normal_id)
- {
- newpriority = NORMAL_PRIORITY;
- }
- else if (id == dnd_keep_id)
- {
- newpriority = ONLY_SEED_PRIORITY;
- }
-
-
-
- TQPtrList<TQListViewItem>::Iterator i = sel.begin();
- while(i != sel.end())
- {
- TQListViewItem* item = *i;
- changePriority(item, newpriority);
- multi_root->updatePriorityInformation(curr_tc);
- i++;
- }
- }
-
- void FileView::changePriority(TQListViewItem* item, Priority newpriority)
- {
- if(item->childCount() == 0)
- {
- FileTreeItem* fti = (FileTreeItem*)item;
- if (newpriority == EXCLUDED)
- {
- fti->setChecked(false,false);
- }
- else if (newpriority == ONLY_SEED_PRIORITY)
- {
- fti->setChecked(false,true);
- }
- else
- {
- if (!fti->isOn())
- fti->setChecked(true,true);
- fti->getTorrentFile().setPriority(newpriority);
- }
- return;
- }
- TQListViewItem* myChild = item->firstChild();
- while( myChild )
- {
- changePriority(myChild, newpriority);
- myChild = myChild->nextSibling();
- }
- }
-
- void FileView::refreshFileTree(kt::TorrentInterface* tc)
- {
- if (!tc || curr_tc != tc)
- return;
-
- if (multi_root)
- multi_root->updateDNDInformation();
- }
-
- void FileView::onDoubleClicked(TQListViewItem* item,const TQPoint & ,int )
- {
- if (!curr_tc)
- return;
-
- const TorrentStats & s = curr_tc->getStats();
-
- if (s.multi_file_torrent)
- {
- if (item->childCount() == 0)
- {
- // file
- FileTreeItem* file = (FileTreeItem*)item;
- TQString path = "cache" + bt::DirSeparator() + file->getTorrentFile().getPath();
- new KRun(KURL::fromPathOrURL(curr_tc->getTorDir() + path), 0, true, true);
- }
- else
- {
- // directory
- FileTreeDirItem* dir = ((FileTreeDirItem*)item);
- new KRun(KURL::fromPathOrURL(curr_tc->getTorDir() + "cache" + dir->getPath()), 0, true, true);
- }
- }
- else
- {
- TQFileInfo fi(curr_tc->getTorDir()+"cache");
- new KRun(KURL::fromPathOrURL(fi.readLink()), 0, true, true);
- }
- }
-}
-
-#include "fileview.moc"