aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/kvilib/CMakeLists.txt2
-rw-r--r--src/kvilib/tal/kvi_tal_tablewidget.cpp102
-rw-r--r--src/kvilib/tal/kvi_tal_tablewidget.h129
-rw-r--r--src/kvilib/tal/kvi_tal_treewidget.cpp48
-rw-r--r--src/kvilib/tal/kvi_tal_treewidget.h120
-rw-r--r--src/kvirc/kernel/kvi_filetransfer.h8
-rw-r--r--src/kvirc/ui/kvi_taskbar.cpp8
-rw-r--r--src/modules/dcc/send.cpp42
-rw-r--r--src/modules/dcc/send.h2
-rw-r--r--src/modules/filetransferwindow/filetransferwindow.cpp217
-rw-r--r--src/modules/filetransferwindow/filetransferwindow.h52
-rw-r--r--src/modules/http/httpfiletransfer.cpp39
-rw-r--r--src/modules/http/httpfiletransfer.h2
13 files changed, 455 insertions, 316 deletions
diff --git a/src/kvilib/CMakeLists.txt b/src/kvilib/CMakeLists.txt
index d69b3f11a..f9955e9d8 100644
--- a/src/kvilib/CMakeLists.txt
+++ b/src/kvilib/CMakeLists.txt
@@ -92,6 +92,7 @@ SET(kvilib_MOC_HDRS
tal/kvi_tal_menubar.h
tal/kvi_tal_scrollview.h
tal/kvi_tal_tabdialog.h
+ tal/kvi_tal_tablewidget.h
tal/kvi_tal_toolbardocktype.h
tal/kvi_tal_tooltip.h
tal/kvi_tal_textedit.h
@@ -184,6 +185,7 @@ SET(kvilib_SRCS
tal/kvi_tal_popupmenu.cpp
tal/kvi_tal_scrollview.cpp
tal/kvi_tal_tabdialog.cpp
+ tal/kvi_tal_tablewidget.cpp
tal/kvi_tal_textedit.cpp
tal/kvi_tal_toolbar.cpp
tal/kvi_tal_tooltip.cpp
diff --git a/src/kvilib/tal/kvi_tal_tablewidget.cpp b/src/kvilib/tal/kvi_tal_tablewidget.cpp
new file mode 100644
index 000000000..80fe4d59e
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_tablewidget.cpp
@@ -0,0 +1,102 @@
+//=============================================================================
+//
+// File : kvi_tal_tablewidget.cpp
+// Creation date : Fri Jun 27 2008 10:00:08 by Fabio Bas
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2008 Szymon Stefanek (pragma at kvirc dot net)
+//
+// 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 opinion) 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. ,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+//
+//=============================================================================
+
+#define __KVILIB__
+
+#include "kvi_tal_tablewidget.h"
+/*
+#include "kvi_pointerhashtable.h"
+
+#include <QPainter>
+#include <QStyle>
+#include <QHeaderView>
+#include <QApplication>
+#include <QHash>
+#include <QStyleOption>
+#include <QAccessible>
+*/
+KviTalTableWidget::KviTalTableWidget(QWidget * pParent)
+: QTableWidget(pParent)
+{
+/*
+ connect(this,SIGNAL(currentItemChanged(QTreeWidgetItem *,QTreeWidgetItem *)),this,SLOT(redirect_currentItemChanged(QTreeWidgetItem *,QTreeWidgetItem *)));
+ connect(this,SIGNAL(itemActivated(QTreeWidgetItem *,int)),this,SLOT(redirect_itemActivated(QTreeWidgetItem *,int)));
+ connect(this,SIGNAL(itemChanged(QTreeWidgetItem *,int)),this,SLOT(redirect_itemChanged(QTreeWidgetItem *,int)));
+ connect(this,SIGNAL(itemClicked(QTreeWidgetItem *,int)),this,SLOT(redirect_itemClicked(QTreeWidgetItem *,int)));
+ connect(this,SIGNAL(itemCollapsed(QTreeWidgetItem *)),this,SLOT(redirect_itemCollapsed(QTreeWidgetItem *)));
+ connect(this,SIGNAL(itemExpanded(QTreeWidgetItem *)),this,SLOT(redirect_itemExpanded(QTreeWidgetItem *)));
+ connect(this,SIGNAL(itemDoubleClicked(QTreeWidgetItem *,int)),this,SLOT(redirect_itemDoubleClicked(QTreeWidgetItem *,int)));
+ connect(this,SIGNAL(itemEntered(QTreeWidgetItem *,int)),this,SLOT(redirect_itemEntered(QTreeWidgetItem *,int)));
+ connect(this,SIGNAL(itemPressed(QTreeWidgetItem *,int)),this,SLOT(redirect_itemPressed(QTreeWidgetItem *,int)));
+*/
+}
+/*
+void KviTalTreeWidget::redirect_currentItemChanged(QTreeWidgetItem *pItemCurr,QTreeWidgetItem *pItemPrev)
+{
+ emit currentItemChanged((KviTalTreeWidgetItem *)pItemCurr,(KviTalTreeWidgetItem *)pItemPrev);
+}
+
+void KviTalTreeWidget::redirect_itemActivated(QTreeWidgetItem *pItem,int col)
+{
+ emit itemActivated((KviTalTreeWidgetItem *)pItem,col);
+}
+
+void KviTalTreeWidget::redirect_itemChanged(QTreeWidgetItem *pItem,int col)
+{
+ emit itemChanged((KviTalTreeWidgetItem *)pItem,col);
+}
+
+
+void KviTalTreeWidget::redirect_itemClicked(QTreeWidgetItem *pItem,int col)
+{
+ emit itemClicked((KviTalTreeWidgetItem *)pItem,col);
+}
+
+void KviTalTreeWidget::redirect_itemCollapsed(QTreeWidgetItem *pItem)
+{
+ emit itemCollapsed((KviTalTreeWidgetItem *)pItem);
+}
+
+void KviTalTreeWidget::redirect_itemExpanded(QTreeWidgetItem *pItem)
+{
+ emit itemExpanded((KviTalTreeWidgetItem *)pItem);
+}
+
+void KviTalTreeWidget::redirect_itemDoubleClicked(QTreeWidgetItem *pItem,int col)
+{
+ emit itemDoubleClicked((KviTalTreeWidgetItem *)pItem,col);
+}
+
+void KviTalTreeWidget::redirect_itemEntered(QTreeWidgetItem *pItem,int col)
+{
+ emit itemEntered((KviTalTreeWidgetItem *)pItem,col);
+}
+void KviTalTreeWidget::redirect_itemPressed(QTreeWidgetItem *pItem,int col)
+{
+ emit itemPressed((KviTalTreeWidgetItem *)pItem,col);
+}
+*/
+#ifndef COMPILE_USE_STANDALONE_MOC_SOURCES
+ #include "kvi_tal_treewidget.moc"
+#endif //!COMPILE_USE_STANDALONE_MOC_SOURCES
diff --git a/src/kvilib/tal/kvi_tal_tablewidget.h b/src/kvilib/tal/kvi_tal_tablewidget.h
new file mode 100644
index 000000000..0c28d85fe
--- /dev/null
+++ b/src/kvilib/tal/kvi_tal_tablewidget.h
@@ -0,0 +1,129 @@
+#ifndef _KVI_TAL_TABLEWIDGET_H_
+#define _KVI_TAL_TABLEWIDGET_H_
+
+//=============================================================================
+//
+// File : kvi_tal_tablewidget.h
+// Creation date : Fri Jun 27 2008 10:00:08 by Fabio Bas
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2008 Szymon Stefanek (pragma at kvirc dot net)
+//
+// 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 opinion) 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. ,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+//
+//=============================================================================
+
+#include "kvi_settings.h"
+#include "kvi_qstring.h"
+
+#include <QTableWidget>
+#include <QHeaderView>
+
+class KviTalTableWidgetItem;
+
+class KVILIB_API KviTalTableWidget : public QTableWidget
+{
+ friend class KviTalTableWidgetItem;
+ Q_OBJECT
+public:
+ KviTalTableWidget(QWidget * pParent);
+ virtual ~KviTalTableWidget() {};
+public:
+/*
+signals:
+ void currentItemChanged(KviTalTreeWidgetItem *,KviTalTreeWidgetItem *);
+ void itemActivated(KviTalTreeWidgetItem *,int);
+ void itemChanged(KviTalTreeWidgetItem *,int);
+ void itemClicked(KviTalTreeWidgetItem *,int);
+
+ void itemCollapsed(KviTalTreeWidgetItem *);
+ void itemExpanded(KviTalTreeWidgetItem *);
+ void itemDoubleClicked(KviTalTreeWidgetItem *,int);
+ void itemEntered(KviTalTreeWidgetItem *,int);
+ void itemPressed(KviTalTreeWidgetItem *,int);
+
+protected slots:
+ void redirect_currentItemChanged(QTreeWidgetItem *pItemCurr,QTreeWidgetItem *pItemPrev);
+ void redirect_itemActivated(QTreeWidgetItem *pItem,int col);
+ void redirect_itemChanged(QTreeWidgetItem *pItem,int col);
+ void redirect_itemClicked(QTreeWidgetItem *pItem,int col);
+ void redirect_itemCollapsed(QTreeWidgetItem *pItem);
+ void redirect_itemExpanded(QTreeWidgetItem *pItem);
+ void redirect_itemDoubleClicked(QTreeWidgetItem *pItem,int col);
+ void redirect_itemEntered(QTreeWidgetItem *pItem,int col);
+ void redirect_itemPressed(QTreeWidgetItem *pItem,int col);
+*/
+};
+
+
+class KVILIB_API KviTalTableWidgetItem : public QTableWidgetItem
+{
+public:
+ KviTalTableWidgetItem(KviTalTableWidget * pParent)
+ : QTableWidgetItem()
+ {
+ pParent->insertRow(pParent->rowCount());
+ pParent->setItem(pParent->rowCount()-1, 0, this);
+ };
+
+ KviTalTableWidgetItem(KviTalTableWidget * pParent, int row, int column)
+ : QTableWidgetItem()
+ {
+ pParent->setItem(row, column, this);
+ };
+
+ KviTalTableWidgetItem(const KviTalTableWidgetItem & other)
+ : QTableWidgetItem(other) {};
+ void repaint()
+ {
+ if(tableWidget())
+ tableWidget()->viewport()->repaint(tableWidget()->visualItemRect(this));
+ };
+/*
+ KviTalTableWidgetItem(KviTalTableWidgetItem * pParent,const QString &szLabel)
+ : QTableWidgetItem(pParent) {
+ setText(0,szLabel);
+ };
+ KviTalTableWidgetItem(KviTalTableWidget * pParent,const QString &szLabel)
+ : QTableWidgetItem(pParent) {
+ setText(0,szLabel);
+ };
+
+ KviTalTreeWidgetItem(KviTalTreeWidget * pParent,const QString &szLabel, const QString &szLabel1, const QString &szLabel2, const QString &szLabel3 )
+ : QTreeWidgetItem(pParent) {
+ setText(0,szLabel);
+ setText(1,szLabel1);
+ setText(2,szLabel2);
+ setText(3,szLabel3);
+
+ };
+ KviTalTreeWidgetItem(KviTalTreeWidget * pParent,const QString &szLabel, const QString &szLabel1, const QString &szLabel2, const QString &szLabel3, const QString &szLabel4 )
+ : QTreeWidgetItem(pParent) {
+ setText(0,szLabel);
+ setText(1,szLabel1);
+ setText(2,szLabel2);
+ setText(3,szLabel3);
+ setText(4,szLabel4);
+ };
+ int compare ( KviTalTreeWidgetItem * i, int col, bool ascending ) const
+ {
+ QString key=text(col);
+ return key.localeAwareCompare(i->text(col));
+ };
+ KviTalTreeWidget* treeWidget() { return (KviTalTreeWidget*) QTreeWidgetItem::treeWidget(); };
+*/
+};
+
+#endif // _KVI_TAL_TABLEWIDGET_H_
diff --git a/src/kvilib/tal/kvi_tal_treewidget.cpp b/src/kvilib/tal/kvi_tal_treewidget.cpp
index 79ccfebeb..4c1a69a5c 100644
--- a/src/kvilib/tal/kvi_tal_treewidget.cpp
+++ b/src/kvilib/tal/kvi_tal_treewidget.cpp
@@ -34,53 +34,7 @@
#include <QHash>
#include <QStyleOption>
#include <QAccessible>
-/*
-static QStyleOptionQ3ListView getStyleOption(const Q3ListView *lv, const Q3ListViewItem *item)
-{
- QStyleOptionQ3ListView opt;
- opt.init(lv);
- opt.subControls = QStyle::SC_None;
- opt.activeSubControls = QStyle::SC_None;
- QWidget *vp = lv->viewport();
- opt.viewportPalette = vp->palette();
- opt.viewportBGRole = vp->backgroundRole();
- opt.itemMargin = lv->itemMargin();
- opt.sortColumn = 0;
- opt.treeStepSize = lv->treeStepSize();
- opt.rootIsDecorated = lv->rootIsDecorated();
- bool firstItem = true;
- while (item) {
- QStyleOptionQ3ListViewItem lvi;
- lvi.height = item->height();
- lvi.totalHeight = item->totalHeight();
- lvi.itemY = item->itemPos();
- lvi.childCount = item->childCount();
- lvi.features = QStyleOptionQ3ListViewItem::None;
- lvi.state = QStyle::State_None;
- if (item->isEnabled())
- lvi.state |= QStyle::State_Enabled;
- if (item->isOpen())
- lvi.state |= QStyle::State_Open;
- if (item->isExpandable())
- lvi.features |= QStyleOptionQ3ListViewItem::Expandable;
- if (item->multiLinesEnabled())
- lvi.features |= QStyleOptionQ3ListViewItem::MultiLine;
- if (item->isVisible())
- lvi.features |= QStyleOptionQ3ListViewItem::Visible;
- if (item->parent() && item->parent()->rtti() == 1
- && static_cast<Q3CheckListItem *>(item->parent())->type() == Q3CheckListItem::Controller)
- lvi.features |= QStyleOptionQ3ListViewItem::ParentControl;
- opt.items.append(lvi);
- if (!firstItem) {
- item = item->nextSibling();
- } else {
- firstItem = false;
- item = item->firstChild();
- }
- }
- return opt;
-}
-*/
+
KviTalTreeWidget::KviTalTreeWidget(QWidget * pParent)
: QTreeWidget(pParent)
{
diff --git a/src/kvilib/tal/kvi_tal_treewidget.h b/src/kvilib/tal/kvi_tal_treewidget.h
index ddb6ca2a8..df755a6e2 100644
--- a/src/kvilib/tal/kvi_tal_treewidget.h
+++ b/src/kvilib/tal/kvi_tal_treewidget.h
@@ -3,7 +3,7 @@
//=============================================================================
//
-// File : kvi_tal_listview.h
+// File : kvi_tal_treewidget.h
// Creation date : Mon Jan 22 2007 11:25:08 by Szymon Stefanek
//
// This file is part of the KVirc irc client distribution
@@ -25,21 +25,6 @@
//
//=============================================================================
-
-//
-// This is the only reasonable CROSS-QT3-QT4-COMPATIBLE implementation
-// of QListView I've been able to find.
-// Note that using macros for the items will NOT work since moc
-// doesn't expand them. Note also that KviTalCheckListItem must
-// be fully reimplemented and not be inherited from QCheckListItem
-// to build up a consistent item object hierarchy. To complete
-// the obscenity, we need TWO COMPLETE implementations: one for Qt3
-// and one for Qt4... bleah :D
-//
-// The code for KviTalCheckListItem is adapted from qlistview.h/cpp
-// present in qt 3.3.6 AND in qt 4.1.2.
-//
-
#include "kvi_settings.h"
#include "kvi_qstring.h"
@@ -70,8 +55,6 @@ signals:
void itemDoubleClicked(KviTalTreeWidgetItem *,int);
void itemEntered(KviTalTreeWidgetItem *,int);
void itemPressed(KviTalTreeWidgetItem *,int);
-
-
protected slots:
void redirect_currentItemChanged(QTreeWidgetItem *pItemCurr,QTreeWidgetItem *pItemPrev);
@@ -123,107 +106,6 @@ public:
return key.localeAwareCompare(i->text(col));
};
KviTalTreeWidget* treeWidget() { return (KviTalTreeWidget*) QTreeWidgetItem::treeWidget(); };
-
- /*
- KviTalTreeWidgetItem(KviTalTreeWidget * pParent,KviTalTreeWidgetItem * pAfter)
- : Q3ListViewItem(pParent,pAfter) {};
- KviTalTreeWidgetItem(KviTalTreeWidgetItem * pParent,KviTalTreeWidgetItem * pAfter)
- : Q3ListViewItem(pParent,pAfter) {};
- const QString &szLabel2 = KviQString::empty,const QString &szLabel3 = KviQString::empty,const QString &szLabel4 = KviQString::empty,const QString &szLabel5 = KviQString::empty)
- : Q3ListViewItem(pParent,szLabel1,szLabel2,szLabel3,szLabel4,szLabel5) {};
- KviTalTreeWidgetItem(KviTalTreeWidget * pParent,KviTalTreeWidgetItem * pAfter,const QString &szLabel1,const QString &szLabel2 = KviQString::empty,const QString &szLabel3 = KviQString::empty,const QString &szLabel4 = KviQString::empty,const QString &szLabel5 = KviQString::empty)
- : Q3ListViewItem(pParent,pAfter,szLabel1,szLabel2,szLabel3,szLabel4,szLabel5) {};
- KviTalTreeWidgetItem(KviTalTreeWidgetItem * pParent,const QString &szLabel1,const QString &szLabel2 = KviQString::empty,const QString &szLabel3 = KviQString::empty,const QString &szLabel4 = KviQString::empty)
- : Q3ListViewItem(pParent,szLabel1,szLabel2,szLabel3,szLabel4) {};
- KviTalTreeWidgetItem(KviTalTreeWidgetItem * pParent,KviTalTreeWidgetItem * pAfter,const QString &szLabel1,const QString &szLabel2 = KviQString::empty,const QString &szLabel3 = KviQString::empty,const QString &szLabel4 = KviQString::empty)
- : Q3ListViewItem(pParent,pAfter,szLabel1,szLabel2,szLabel3,szLabel4) {};
-public:
- // Shadow the internal Qt methods
- KviTalTreeWidgetItem * firstChild() const { return (KviTalTreeWidgetItem *)Q3ListViewItem::firstChild(); };
- KviTalTreeWidgetItem * nextSibling() const { return (KviTalTreeWidgetItem *)Q3ListViewItem::nextSibling(); };
- KviTalTreeWidgetItem * parent() const { return (KviTalTreeWidgetItem *)Q3ListViewItem::parent(); };
- KviTalTreeWidget * listView() const { return (KviTalTreeWidget *)Q3ListViewItem::listView(); };
- KviTalTreeWidgetItem * itemAbove() { return (KviTalTreeWidgetItem *)Q3ListViewItem::itemAbove(); };
- KviTalTreeWidgetItem * itemBelow() { return (KviTalTreeWidgetItem *)Q3ListViewItem::itemBelow(); };
- */
-};
-/*
-struct KviTalCheckListItemPrivate;
-
-class KVILIB_API KviTalCheckListItem : public KviTalTreeWidgetItem
-{
-public:
- enum Type {
- RadioButton,
- CheckBox,
- Controller,
- RadioButtonController=Controller,
- CheckBoxController
- };
-
- enum ToggleState { Off, NoChange, On };
-
- KviTalCheckListItem(KviTalCheckListItem *parent, const QString &text,
- Type = RadioButtonController);
- KviTalCheckListItem(KviTalCheckListItem *parent, KviTalTreeWidgetItem *after,
- const QString &text, Type = RadioButtonController);
- KviTalCheckListItem(KviTalTreeWidgetItem *parent, const QString &text,
- Type = RadioButtonController);
- KviTalCheckListItem(KviTalTreeWidgetItem *parent, KviTalTreeWidgetItem *after,
- const QString &text, Type = RadioButtonController);
- KviTalCheckListItem(KviTalTreeWidget *parent, const QString &text,
- Type = RadioButtonController);
- KviTalCheckListItem(KviTalTreeWidget *parent, KviTalTreeWidgetItem *after,
- const QString &text, Type = RadioButtonController);
- KviTalCheckListItem(KviTalTreeWidgetItem *parent, const QString &text,
- const QPixmap &);
- KviTalCheckListItem(KviTalTreeWidget *parent, const QString &text,
- const QPixmap &);
- ~KviTalCheckListItem();
-
- void paintCell(QPainter *, const QColorGroup & cg,
- int column, int width, int alignment);
- virtual void paintFocus(QPainter *, const QColorGroup &cg,
- const QRect & r);
- int width(const QFontMetrics&, const KviTalTreeWidget*, int column) const;
- void setup();
-
- virtual void setOn(bool);
- bool isOn() const { return on; }
- Type type() const { return myType; }
- QString text() const { return KviTalTreeWidgetItem::text(0); }
- QString text(int n) const { return KviTalTreeWidgetItem::text(n); }
-
- void setTristate(bool);
- bool isTristate() const;
- ToggleState state() const;
- void setState(ToggleState s);
-
- int rtti() const;
- enum { RTTI = 1 };
-
-protected:
- void activate();
- void turnOffChild();
- virtual void stateChange(bool);
-
-private:
- void init();
- ToggleState internalState() const;
- void setStoredState(ToggleState newState, KviTalCheckListItem *key);
- ToggleState storedState(KviTalCheckListItem *key) const;
- void stateChange(ToggleState s);
- void restoreState(KviTalCheckListItem *key, int depth = 0);
- void updateController(bool update = true , bool store = false);
- void updateStoredState(KviTalCheckListItem *key);
- void setState(ToggleState s, bool update, bool store);
- void setCurrentState(ToggleState s);
-
- Type myType;
- bool on;
- KviTalCheckListItemPrivate *d;
};
-#define KviTalTreeWidgetItemIterator Q3ListViewItemIterator
-*/
#endif // _KVI_TAL_TREEWIDGETW_H_
diff --git a/src/kvirc/kernel/kvi_filetransfer.h b/src/kvirc/kernel/kvi_filetransfer.h
index 85c70a472..6cf489366 100644
--- a/src/kvirc/kernel/kvi_filetransfer.h
+++ b/src/kvirc/kernel/kvi_filetransfer.h
@@ -27,7 +27,7 @@
#include "kvi_settings.h"
#include "kvi_pointerlist.h"
-#include "kvi_tal_listview.h"
+#include "kvi_tal_tablewidget.h"
#include <QObject>
@@ -83,10 +83,10 @@ public:
~KviFileTransfer();
protected:
int m_iId;
- KviTalListViewItem * m_pDisplayItem;
+ KviTalTableWidgetItem * m_pDisplayItem;
public:
// This is called by KviFileTransferItem at any time
- void setDisplayItem(KviTalListViewItem * i){ m_pDisplayItem = i; };
+ void setDisplayItem(KviTalTableWidgetItem * i){ m_pDisplayItem = i; };
int id(){ return m_iId; };
// this is just a convenience function : it's equivalent to !active()
bool terminated();
@@ -103,7 +103,7 @@ public:
// this must be implemented by the transfer
virtual bool active() = 0;
- virtual void displayPaint(QPainter * p,int column,int width,int height) = 0;
+ virtual void displayPaint(QPainter * p,int column, QRect rect) = 0;
virtual QString tipText();
virtual QString localFileName();
virtual QString retryCommand();
diff --git a/src/kvirc/ui/kvi_taskbar.cpp b/src/kvirc/ui/kvi_taskbar.cpp
index 4ec847984..0af24a365 100644
--- a/src/kvirc/ui/kvi_taskbar.cpp
+++ b/src/kvirc/ui/kvi_taskbar.cpp
@@ -44,7 +44,6 @@
#include "kvi_settings.h"
#include "kvi_channel.h"
#include "kvi_ircconnection.h"
-#include "kvi_doublebuffer.h"
#include "kvi_tal_popupmenu.h"
// FIXME: #warning "The tree taskbar min width should be configurable"
@@ -732,6 +731,7 @@ KviTreeTaskBarItem::KviTreeTaskBarItem(KviTalTreeWidget * par,KviWindow * wnd)
QObject::connect( m_pAnimTimer, SIGNAL(timeout()), m_pInternal, SLOT(timerShot()));
applyOptions();
//sort the widget
+ //TODO should we implement an operator< to fine tune our sorting?
treeWidget()->sortItems(0,Qt::AscendingOrder);
}
@@ -978,9 +978,7 @@ void KviTreeTaskBarTreeWidget::paintEvent(QPaintEvent * event)
QPainter *p = new QPainter(viewport());
QStyleOptionViewItem option = viewOptions();
QRect rect = event->rect();
- int i;
- SET_ANTI_ALIASING(*p);
#ifdef COMPILE_PSEUDO_TRANSPARENCY
if(g_pShadedChildGlobalDesktopBackground)
{
@@ -1293,9 +1291,6 @@ void KviTreeTaskBarItemDelegate::paint(QPainter * p, const QStyleOptionViewItem
//tree branches
treeWidget->drawBranches(p, branchRect, index);
- //set anti aliasing (this comment is useless)
- SET_ANTI_ALIASING(*p);
-
//draw window icon, irc context indicator (a colored square), set font properties for text
int im = rect.left();
int yPixmap = (rect.top() + rect.height() - 16);
@@ -1400,6 +1395,7 @@ void KviTreeTaskBarItemDelegate::paint(QPainter * p, const QStyleOptionViewItem
QSize KviTreeTaskBarItemDelegate::sizeHint( const QStyleOptionViewItem & option, const QModelIndex & index ) const
{
QString text=index.data(Qt::DisplayRole).toString();
+ // FIXME fixed width: 20; compute from font size
return QSize(((KviTreeTaskBarTreeWidget*)parent())->viewport()->size().width(), 20);
}
#ifndef COMPILE_USE_STANDALONE_MOC_SOURCES
diff --git a/src/modules/dcc/send.cpp b/src/modules/dcc/send.cpp
index 3d425fd76..04f0469ba 100644
--- a/src/modules/dcc/send.cpp
+++ b/src/modules/dcc/send.cpp
@@ -1102,9 +1102,9 @@ unsigned int KviDccFileTransfer::transferredBytes()
return uTransferred;
}
-void KviDccFileTransfer::displayPaint(QPainter * p,int column,int width,int height)
+void KviDccFileTransfer::displayPaint(QPainter * p,int column, QRect rect)
{
-
+ int width = rect.width(), height = rect.height();
QString txt;
bool bIsTerminated = ((m_eGeneralStatus == Success) || (m_eGeneralStatus == Failure));
@@ -1123,7 +1123,7 @@ void KviDccFileTransfer::displayPaint(QPainter * p,int column,int width,int heig
case Success: xoffset = 96; break;
case Failure: xoffset = 144; break;
}
- p->drawPixmap(3,3,*g_pDccFileTransferIcon,xoffset,yoffset,48,64);
+ p->drawPixmap(rect.left() + 3,rect.top() + 3,*g_pDccFileTransferIcon,xoffset,yoffset,48,64);
}
break;
case COLUMN_FILEINFO:
@@ -1146,31 +1146,31 @@ void KviDccFileTransfer::displayPaint(QPainter * p,int column,int width,int heig
KviStr szRemote(KviStr::Format,"dcc://%s@%s:%s/%s",m_pDescriptor->szNick.toUtf8().data(),m_pDescriptor->szIp.toUtf8().data(),m_pDescriptor->szPort.toUtf8().data(),
m_pDescriptor->szFileName.toUtf8().data());
- p->drawText(4 + daW1,iY,width - (8 + daW1),height - 8,Qt::AlignTop | Qt::AlignLeft,
+ p->drawText(rect.left() + 4 + daW1,iY,width - (8 + daW1),height - 8,Qt::AlignTop | Qt::AlignLeft,
m_pDescriptor->bRecvFile ? szRemote.ptr() : m_pDescriptor->szLocalFileName.toUtf8().data());
iY += iLineSpacing;
- p->drawText(4 + daW1,iY,width - (8 + daW1),height - 8,Qt::AlignTop | Qt::AlignLeft,
+ p->drawText(rect.left() + 4 + daW1,iY,width - (8 + daW1),height - 8,Qt::AlignTop | Qt::AlignLeft,
m_pDescriptor->bRecvFile ? m_pDescriptor->szLocalFileName.toUtf8().data() : szRemote.ptr());
iY += iLineSpacing;
p->setPen(Qt::darkGray);
- p->drawText(4,4,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,szFrom);
- p->drawText(4,4 + iLineSpacing,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,szTo);
+ p->drawText(rect.left() + 4,4,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,szFrom);
+ p->drawText(rect.left() + 4,4 + iLineSpacing,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,szTo);
p->setPen(QColor(180,180,200));
iLineSpacing += 2;
- p->drawRect(4,height - (iLineSpacing + 4),width - 8,iLineSpacing);
- p->fillRect(5,height - (iLineSpacing + 3),width - 10,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
+ p->drawRect(rect.left() + 4,height - (iLineSpacing + 4),width - 8,iLineSpacing);
+ p->fillRect(rect.left() + 5,height - (iLineSpacing + 3),width - 10,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
p->setPen(Qt::black);
- p->drawText(7,height - (iLineSpacing + 4),width - 14,iLineSpacing,Qt::AlignVCenter | Qt::AlignLeft,m_szStatusString);
+ p->drawText(rect.left() + 7,height - (iLineSpacing + 4),width - 14,iLineSpacing,Qt::AlignVCenter | Qt::AlignLeft,m_szStatusString);
}
break;
@@ -1211,7 +1211,7 @@ void KviDccFileTransfer::displayPaint(QPainter * p,int column,int width,int heig
}
p->setPen(bIsTerminated ? Qt::lightGray : QColor(210,210,240));
- p->drawRect(4,4,iW,12);
+ p->drawRect(rect.left() + 4, rect.top() + 4,iW,12);
iW -= 2;
@@ -1232,15 +1232,15 @@ void KviDccFileTransfer::displayPaint(QPainter * p,int column,int width,int heig
double dPerc2 = (double)(((double)iAckedBytes) * 100.0) / (double)m_uTotalFileSize;
int iL2 = (int) ((((double)iW) * dPerc2) / 100.0);
int iW2 = iL1 - iL2;
- if(iW2 > 0)p->fillRect(5 + iL2,5,iW2,10,bIsTerminated ? QColor(150,130,110) : QColor(220,170,100));
- p->fillRect(5,5,iL2,10,bIsTerminated ? QColor(140,110,110) : QColor(200,100,100));
+ if(iW2 > 0)p->fillRect(rect.left() + 5 + iL2,rect.top() + 5,iW2,10,bIsTerminated ? QColor(150,130,110) : QColor(220,170,100));
+ p->fillRect(rect.left() + 5,rect.top() + 5,iL2,10,bIsTerminated ? QColor(140,110,110) : QColor(200,100,100));
txt = QString(__tr2qs_ctx("%1 of %2 (%3%)","dcc")).arg(KviQString::makeSizeReadable(iAckedBytes)).arg(KviQString::makeSizeReadable(m_uTotalFileSize)).arg(dPerc2,0,'f',2);
} else {
// we are receiving a file or not sending acks
double dPerc = (double)(((double)uTransferred) * 100.0) / (double)m_uTotalFileSize;
int iL = (int) ((((double)iW) * dPerc) / 100.0);
- p->fillRect(5,5,iL,10,bIsTerminated ? QColor(140,110,110) : QColor(200,100,100));
+ p->fillRect(rect.left() + 5,rect.top() + 5,iL,10,bIsTerminated ? QColor(140,110,110) : QColor(200,100,100));
txt = QString(__tr2qs_ctx("%1 of %2 (%3%)","dcc")).arg(KviQString::makeSizeReadable(uTransferred)).arg(KviQString::makeSizeReadable(m_uTotalFileSize)).arg(dPerc,0,'f',2);
}
@@ -1251,7 +1251,7 @@ void KviDccFileTransfer::displayPaint(QPainter * p,int column,int width,int heig
p->setPen(Qt::black);
- p->drawText(4,19,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,txt);
+ p->drawText(rect.left() + 4,rect.top() + 19,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,txt);
int iLeftHalf = (iW - 2) / 2;
int iRightHalf = iW - (iLeftHalf + 1);
@@ -1293,10 +1293,10 @@ void KviDccFileTransfer::displayPaint(QPainter * p,int column,int width,int heig
int iDaH = height - (iLineSpacing + 4);
p->setPen(QColor(180,180,200));
- p->drawRect(4,iDaH,iLeftHalf,iLineSpacing);
- p->fillRect(5,iDaH + 1,iLeftHalf - 2,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
+ p->drawRect(rect.left() + 4,rect.top() + iDaH,iLeftHalf,iLineSpacing);
+ p->fillRect(rect.left() + 5,rect.top() + iDaH + 1,iLeftHalf - 2,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
p->setPen(bIsTerminated ? Qt::darkGray : Qt::black);
- p->drawText(6,iDaH,iLeftHalf - 4,iLineSpacing,Qt::AlignLeft | Qt::AlignVCenter,txt);
+ p->drawText(rect.left() + 6,rect.top() + iDaH,iLeftHalf - 4,iLineSpacing,Qt::AlignLeft | Qt::AlignVCenter,txt);
if(bIsTerminated)
{
@@ -1320,10 +1320,10 @@ void KviDccFileTransfer::displayPaint(QPainter * p,int column,int width,int heig
}
p->setPen(QColor(180,180,200));
- p->drawRect(width - (4 + iRightHalf),iDaH,iRightHalf,iLineSpacing);
- p->fillRect(width - (3 + iRightHalf),iDaH + 1,iRightHalf - 2,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
+ p->drawRect(rect.left() + width - (4 + iRightHalf),rect.top() + iDaH,iRightHalf,iLineSpacing);
+ p->fillRect(rect.left() + width - (3 + iRightHalf),rect.top() + iDaH + 1,iRightHalf - 2,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
p->setPen(bIsTerminated ? Qt::darkGray : Qt::black);
- p->drawText(width - (2 + iRightHalf),iDaH,iRightHalf - 4,iLineSpacing,Qt::AlignLeft | Qt::AlignVCenter,txt);
+ p->drawText(rect.left() + width - (2 + iRightHalf),rect.top() + iDaH,iRightHalf - 4,iLineSpacing,Qt::AlignLeft | Qt::AlignVCenter,txt);
}
break;
diff --git a/src/modules/dcc/send.h b/src/modules/dcc/send.h
index 4a4d7cc3d..b783c8512 100644
--- a/src/modules/dcc/send.h
+++ b/src/modules/dcc/send.h
@@ -214,7 +214,7 @@ public:
virtual KviWindow * dccMarshalOutputWindow();
virtual const char * dccMarshalOutputContextString();
- virtual void displayPaint(QPainter * p,int column,int width,int height);
+ virtual void displayPaint(QPainter * p,int column, QRect rect);
virtual int displayHeight(int iLineSpacing);
virtual void fillContextPopup(KviTalPopupMenu * m,int column);
virtual void fillStatusString(QString &szBuffer);
diff --git a/src/modules/filetransferwindow/filetransferwindow.cpp b/src/modules/filetransferwindow/filetransferwindow.cpp
index a9f0f3a61..a026e2d38 100644
--- a/src/modules/filetransferwindow/filetransferwindow.cpp
+++ b/src/modules/filetransferwindow/filetransferwindow.cpp
@@ -50,8 +50,7 @@
#include <QEvent>
#include <QKeyEvent>
-// FIXME: Qt4 #include <QHeaderView>
-#include <q3header.h>
+#include <QHeaderView>
#ifdef COMPILE_KDE_SUPPORT
#include <kurl.h>
@@ -61,19 +60,31 @@
#include <kiconloader.h>
#endif //COMPILE_KDE_SUPPORT
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ extern QPixmap * g_pShadedChildGlobalDesktopBackground;
+#endif
+
extern KviFileTransferWindow * g_pFileTransferWindow;
-KviFileTransferItem::KviFileTransferItem(KviTalListView * v,KviFileTransfer * t)
-: KviTalListViewItem(v)
+KviFileTransferItem::KviFileTransferItem(KviFileTransferWidget * v,KviFileTransfer * t)
+: KviTalTableWidgetItem(v)
{
m_pTransfer = t;
m_pTransfer->setDisplayItem(this);
+
+ //create items for the second and the third column
+ col1Item = new KviTalTableWidgetItem(v, row(), 1);
+ col2Item = new KviTalTableWidgetItem(v, row(), 2);
+ //FIXME fixed row height
+ tableWidget()->setRowHeight( row(), 68 );
}
KviFileTransferItem::~KviFileTransferItem()
{
m_pTransfer->setDisplayItem(0);
+ delete col1Item;
+ delete col2Item;
}
QString KviFileTransferItem::key(int column,bool bAcending) const
@@ -90,55 +101,62 @@ QString KviFileTransferItem::key(int column,bool bAcending) const
return ret;
}
-void KviFileTransferItem::paintCell(QPainter * p,const QColorGroup &cg,int column,int width,int align)
+void KviFileTransferWidget::paintEvent(QPaintEvent * event)
{
- QPainter * newP;
- QPixmap * pix = 0;
- if(p->device() == listView()->viewport())
+ QPainter *p = new QPainter(viewport());
+ QStyleOptionViewItem option = viewOptions();
+ QRect rect = event->rect();
+ KviFileTransferItem* item;
+ int r, c;
+
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
+ if(g_pShadedChildGlobalDesktopBackground)
{
- // ops.. there is no double buffering active ?
- // we'll do it then
- pix = g_pFileTransferWindow->memPixmap();
- if((pix->width() < width) || (pix->height() < height()))
- {
- pix->resize(width,height());
- } else {
- if((pix->width() > 500) || (pix->height() > 110))
- {
- if((pix->width() * pix->height()) > (width * height() * 4))
- {
- // this is getting too big
- pix->resize(width,height());
- }
- }
- }
- newP = new QPainter(pix);
+ QPoint pnt = viewport()->mapToGlobal(rect.topLeft());
+ p->drawTiledPixmap(rect,*g_pShadedChildGlobalDesktopBackground,pnt);
} else {
- newP = p;
+#endif
+ p->fillRect(rect,KVI_OPTION_COLOR(KviOption_colorTreeTaskBarBackground));
+#ifdef COMPILE_PSEUDO_TRANSPARENCY
}
+#endif
+ delete p;
+
+ //call paint on all childrens
+ KviTalTableWidget::paintEvent(event);
+}
- p->setFont(listView()->font());
+void KviFileTransferItemDelegate::paint(QPainter * p, const QStyleOptionViewItem & option, const QModelIndex & index) const
+{
+ //FIXME not exactly model/view coding style.. but we need to access data on the item by now
+ KviFileTransferWidget* tableWidget = (KviFileTransferWidget*)parent();
+ KviFileTransferItem* item = (KviFileTransferItem*) tableWidget->itemFromIndex(index);
+ KviFileTransfer* transfer = ((KviFileTransferItem*)tableWidget->item(item->row(), 0))->transfer();
- newP->setPen(isSelected() ? cg.highlight() : cg.base());
- newP->drawRect(0,0,width,height());
- newP->setPen(m_pTransfer->active() ? QColor(180,180,180) : QColor(200,200,200));
- newP->drawRect(1,1,width - 2,height() - 2);
- newP->fillRect(2,2,width - 4,height() - 4,m_pTransfer->active() ? QColor(240,240,240) : QColor(225,225,225));
+ p->setFont(option.font);
- m_pTransfer->displayPaint(newP,column,width,height());
+ p->setPen(option.state & QStyle::State_Selected ? option.palette.highlight() : option.palette.base());
- if(newP != p)
- {
- p->drawPixmap(0,0,*pix,0,0,width,height());
- delete newP;
- }
+ p->drawRect(option.rect);
+ p->setPen(transfer->active() ? QColor(180,180,180) : QColor(200,200,200));
+
+ p->drawRect(option.rect.left() + 1, option.rect.top() + 1, option.rect.width() - 2,option.rect.height() - 2);
+ p->fillRect(option.rect.left() + 2, option.rect.top() + 2, option.rect.width() - 4, option.rect.height() - 4,transfer->active() ? QColor(240,240,240) : QColor(225,225,225));
+
+ transfer->displayPaint(p, index.column(), option.rect);
}
+QSize KviFileTransferItemDelegate::sizeHint( const QStyleOptionViewItem & option, const QModelIndex & index ) const
+{
+ // FIXME fixed width
+ return QSize(((KviFileTransferWidget*)parent())->viewport()->size().width(), 68);
+}
+/*
void KviFileTransferItem::setHeight(int h)
{
- KviTalListViewItem::setHeight(m_pTransfer->displayHeight(g_pFileTransferWindow->lineSpacing()));
+ KviTalTableWidgetItem::setHeight(m_pTransfer->displayHeight(g_pFileTransferWindow->lineSpacing()));
}
-
+*/
KviFileTransferWindow::KviFileTransferWindow(KviModuleExtensionDescriptor * d,KviFrame * lpFrm)
: KviWindow(KVI_WINDOW_TYPE_TOOL,lpFrm,"file transfer window",0) , KviModuleExtension(d)
@@ -159,30 +177,52 @@ KviFileTransferWindow::KviFileTransferWindow(KviModuleExtensionDescriptor * d,Kv
m_pSplitter = new QSplitter(Qt::Horizontal,this,"splitter");
m_pVertSplitter = new QSplitter(Qt::Vertical,m_pSplitter,"vsplitter");
- m_pListView = new KviTalListView(m_pVertSplitter);
- //m_pListView->header()->hide();
- m_pListView->setAllColumnsShowFocus(true);
- m_pListView->addColumn(__tr2qs_ctx("Type","filetransferwindow"),56);
- m_pListView->addColumn(__tr2qs_ctx("Information","filetransferwindow"),350);
- m_pListView->addColumn(__tr2qs_ctx("Progress","filetransferwindow"),350);
+ m_pTableWidget = new KviFileTransferWidget(m_pVertSplitter);
+
+ //ad-hoc itemdelegate for this view
+ m_pItemDelegate = new KviFileTransferItemDelegate(m_pTableWidget);
+ m_pTableWidget->setItemDelegate(m_pItemDelegate);
+
+ m_pTableWidget->verticalHeader()->hide();
+ m_pTableWidget->setShowGrid(false);
+
+ m_pTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
+ m_pTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
+
+ m_pTableWidget->setColumnCount(3);
- KviDynamicToolTip * tp = new KviDynamicToolTip(m_pListView->viewport());
- connect(tp,SIGNAL(tipRequest(KviDynamicToolTip *,const QPoint &)),this,SLOT(tipRequest(KviDynamicToolTip *,const QPoint &)));
+ QStringList colHeaders;
+ colHeaders.append(__tr2qs_ctx("Type","filetransferwindow"));
+ colHeaders.append(__tr2qs_ctx("Information","filetransferwindow"));
+ colHeaders.append(__tr2qs_ctx("Progress","filetransferwindow"));
+ m_pTableWidget->setHorizontalHeaderLabels(colHeaders);
+ m_pTableWidget->horizontalHeader()->setResizeMode(QHeaderView::Interactive);
+ m_pTableWidget->horizontalHeader()->setMinimumSectionSize(50);
- //m_pListView->setFocusPolicy(NoFocus);
- //m_pListView->viewport()->setFocusPolicy(NoFocus);
+ //default column widths
+ m_pTableWidget->setColumnWidth(0, 68);
+ m_pTableWidget->horizontalHeader()->setResizeMode(0, QHeaderView::Fixed);
+ m_pTableWidget->horizontalHeader()->setResizeMode(1, QHeaderView::Stretch);
+ m_pTableWidget->horizontalHeader()->setResizeMode(2, QHeaderView::Stretch);
- //connect(m_pListView,SIGNAL(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)),
- // this,SLOT(showHostPopup(KviTalListViewItem *,const QPoint &,int)));
+ KviDynamicToolTip * tp = new KviDynamicToolTip(m_pTableWidget->viewport());
+ //TODO
+ //connect(tp,SIGNAL(tipRequest(KviDynamicToolTip *,const QPoint &)),this,SLOT(tipRequest(KviDynamicToolTip *,const QPoint &)));
+
+ //m_pTableWidget->setFocusPolicy(NoFocus);
+ //m_pTableWidget->viewport()->setFocusPolicy(NoFocus);
+
+ //connect(m_pTableWidget,SIGNAL(rightButtonPressed(KviTalTableWidgetItem *,const QPoint &,int)),
+ // this,SLOT(showHostPopup(KviTalTableWidgetItem *,const QPoint &,int)));
QFontMetrics fm(font());
m_iLineSpacing = fm.lineSpacing();
m_pIrcView = new KviIrcView(m_pVertSplitter,lpFrm,this);
- m_pListView->installEventFilter(this);
- connect(m_pListView,SIGNAL(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)),this,SLOT(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)));
- connect(m_pListView,SIGNAL(doubleClicked(KviTalListViewItem *,const QPoint &,int)),this,SLOT(doubleClicked(KviTalListViewItem *,const QPoint &,int)));
+ m_pTableWidget->installEventFilter(this);
+ connect(m_pTableWidget,SIGNAL(rightButtonPressed(KviTalTableWidgetItem *,const QPoint &,int)),this,SLOT(rightButtonPressed(KviTalTableWidgetItem *,const QPoint &,int)));
+ connect(m_pTableWidget,SIGNAL(doubleClicked(KviTalTableWidgetItem *,const QPoint &,int)),this,SLOT(doubleClicked(KviTalTableWidgetItem *,const QPoint &,int)));
fillTransferView();
connect(KviFileTransferManager::instance(),SIGNAL(transferRegistered(KviFileTransfer *)),this,SLOT(transferRegistered(KviFileTransfer *)));
@@ -204,15 +244,15 @@ KviFileTransferWindow::~KviFileTransferWindow()
bool KviFileTransferWindow::eventFilter( QObject *obj, QEvent *ev )
{
- if( (obj==m_pListView) && ( ev->type() == QEvent::KeyPress ) )
+ if( (obj==m_pTableWidget) && ( ev->type() == QEvent::KeyPress ) )
{
QKeyEvent *keyEvent = (QKeyEvent*)ev;
switch(keyEvent->key())
{
case Qt::Key_Delete:
- if(m_pListView->currentItem())
+ if(m_pTableWidget->currentItem())
{
- delete m_pListView->currentItem();
+ delete m_pTableWidget->currentItem();
return TRUE;
}
break;
@@ -230,10 +270,10 @@ void KviFileTransferWindow::fontChange(const QFont &oldFont)
void KviFileTransferWindow::tipRequest(KviDynamicToolTip * tip,const QPoint &pnt)
{
- KviFileTransferItem * it = (KviFileTransferItem *)m_pListView->itemAt(pnt);
+ KviFileTransferItem * it = (KviFileTransferItem *)m_pTableWidget->itemAt(pnt);
if(!it)return;
QString txt = it->transfer()->tipText();
- tip->tip(m_pListView->itemRect(it),txt);
+ tip->tip(m_pTableWidget->visualItemRect(it),txt);
}
void KviFileTransferWindow::fillTransferView()
@@ -243,25 +283,27 @@ void KviFileTransferWindow::fillTransferView()
KviFileTransferItem * it;
for(KviFileTransfer * t = l->first();t;t = l->next())
{
- it = new KviFileTransferItem(m_pListView,t);
+ it = new KviFileTransferItem(m_pTableWidget,t);
t->setDisplayItem(it);
}
}
KviFileTransferItem * KviFileTransferWindow::findItem(KviFileTransfer * t)
{
- KviFileTransferItem * it = (KviFileTransferItem *)m_pListView->firstChild();
- while(it)
+ int i;
+ KviFileTransferItem * it;
+
+ for(i=0;i<m_pTableWidget->rowCount();i++)
{
+ it = (KviFileTransferItem *)m_pTableWidget->item(i,0);
if(it->transfer() == t)return it;
- it = (KviFileTransferItem *)(it->nextSibling());
}
return 0;
}
void KviFileTransferWindow::transferRegistered(KviFileTransfer * t)
{
- KviFileTransferItem * it = new KviFileTransferItem(m_pListView,t);
+ KviFileTransferItem * it = new KviFileTransferItem(m_pTableWidget,t);
//t->setDisplayItem(it);
}
@@ -273,12 +315,12 @@ void KviFileTransferWindow::transferUnregistering(KviFileTransfer * t)
it = 0;
}
-void KviFileTransferWindow::doubleClicked(KviTalListViewItem *it,const QPoint &pnt,int col)
+void KviFileTransferWindow::doubleClicked(KviFileTransferItem *it,const QPoint &pnt,int col)
{
if(it) openLocalFile();
}
-void KviFileTransferWindow::rightButtonPressed(KviTalListViewItem *it,const QPoint &pnt,int col)
+void KviFileTransferWindow::rightButtonPressed(KviFileTransferItem *it,const QPoint &pnt,int col)
{
if(!m_pContextPopup)m_pContextPopup = new KviTalPopupMenu(this);
if(!m_pLocalFilePopup)m_pLocalFilePopup = new KviTalPopupMenu(this);
@@ -360,7 +402,7 @@ void KviFileTransferWindow::rightButtonPressed(KviTalListViewItem *it,const QPoi
m_pLocalFilePopup->insertSeparator();
#endif //COMPILE_KDE_SUPPORT
-//-| Grifisx & Noldor |-
+//-| Grifisx & Noldor |-
#if defined(COMPILE_ON_WINDOWS) || defined(COMPILE_ON_MINGW)
id = m_pLocalFilePopup->insertItem(__tr2qs_ctx("&Open","filetransferwindow"),this,SLOT(openLocalFile()));
m_pLocalFilePopup->setItemParameter(id,-1);
@@ -389,22 +431,24 @@ void KviFileTransferWindow::rightButtonPressed(KviTalListViewItem *it,const QPoi
bool bHaveTerminated = false;
- KviFileTransferItem * item = (KviFileTransferItem *)m_pListView->firstChild();
- while(item)
+ int i;
+ KviFileTransferItem * item;
+
+ for(i=0;i<m_pTableWidget->rowCount();i++)
{
+ item = (KviFileTransferItem *)m_pTableWidget->item(i,0);
if(item->transfer()->terminated())
{
bHaveTerminated = true;
break;
}
- item = (KviFileTransferItem *)item->nextSibling();
}
id = m_pContextPopup->insertItem(__tr2qs_ctx("&Clear Terminated","filetransferwindow"),this,SLOT(clearTerminated()));
m_pContextPopup->setItemEnabled(id,bHaveTerminated);
bool bAreTransfersActive = false;
- if(m_pListView->childCount() >= 1)
+ if(m_pTableWidget->rowCount() >= 1)
bAreTransfersActive = true;
id = m_pContextPopup->insertItem(__tr2qs_ctx("Clear &All","filetransferwindow"),this,SLOT(clearAll()));
@@ -416,7 +460,8 @@ void KviFileTransferWindow::rightButtonPressed(KviTalListViewItem *it,const QPoi
KviFileTransfer * KviFileTransferWindow::selectedTransfer()
{
- KviTalListViewItem * it = m_pListView->selectedItem();
+ if(m_pTableWidget->selectedItems().count() == 0) return 0;
+ KviFileTransferItem * it = (KviFileTransferItem *)m_pTableWidget->selectedItems().first();
if(!it)return 0;
KviFileTransferItem * i = (KviFileTransferItem *)it;
return i->transfer();
@@ -622,28 +667,32 @@ void KviFileTransferWindow::openLocalFileFolder()
void KviFileTransferWindow::heartbeat()
{
- if(m_pListView->childCount() < 1)return;
+/*
+notice to the author: thank you for not have commented this code
- KviTalListViewItem * i1;
- KviTalListViewItem * i2;
+ if(m_pTableWidget->rowCount() < 1)return;
- i1 = m_pListView->itemAt(QPoint(1,1));
+ KviFileTransferItem * i1;
+ KviFileTransferItem * i2;
+
+ i1 = (KviFileTransferItem *) m_pTableWidget->itemAt(QPoint(1,1));
if(!i1)
{
- m_pListView->viewport()->update();
+ m_pTableWidget->viewport()->update();
return;
}
- i2 = m_pListView->itemAt(QPoint(1,m_pListView->viewport()->height() - 2));
+ i2 = (KviFileTransferItem *) m_pTableWidget->itemAt(QPoint(1,m_pTableWidget->viewport()->height() - 2));
if(i2)i2 = i2->nextSibling();
while(i1 && (i1 != i2))
{
if(((KviFileTransferItem *)i1)->transfer()->active())
{
- m_pListView->repaintItem(i1);
+ m_pTableWidget->repaintItem(i1);
}
i1 = i1->nextSibling();
}
+*/
}
void KviFileTransferWindow::clearAll()
@@ -651,15 +700,17 @@ void KviFileTransferWindow::clearAll()
QString tmp;
bool bHaveAllTerminated = true;
- KviFileTransferItem * item = (KviFileTransferItem *)m_pListView->firstChild();
- while(item)
+ int i;
+ KviFileTransferItem * item;
+
+ for(i=0;i<m_pTableWidget->rowCount();i++)
{
+ item = (KviFileTransferItem *)m_pTableWidget->item(i,0);
if(!item->transfer()->terminated())
{
bHaveAllTerminated = false;
break;
}
- item = (KviFileTransferItem *)item->nextSibling();
}
KviQString::sprintf(tmp,__tr2qs_ctx("Clear all transfers, including any in progress?","filetransferwindow"));
diff --git a/src/modules/filetransferwindow/filetransferwindow.h b/src/modules/filetransferwindow/filetransferwindow.h
index 39469912c..8a0ee5264 100644
--- a/src/modules/filetransferwindow/filetransferwindow.h
+++ b/src/modules/filetransferwindow/filetransferwindow.h
@@ -32,45 +32,67 @@
#include "kvi_moduleextension.h"
#include "kvi_filetransfer.h"
#include "kvi_dynamictooltip.h"
-#include "kvi_tal_listview.h"
+#include "kvi_tal_tablewidget.h"
#include "kvi_tal_popupmenu.h"
+#include "kvi_tal_itemdelegates.h"
#include "kvi_styled_controls.h"
#include <QTimer>
#include <QPixmap>
+class KviFileTransferWidget : public KviTalTableWidget
+{
+ friend class KviFileTransferItemDelegate;
+ Q_OBJECT
+public:
+ KviFileTransferWidget(QWidget * pParent) : KviTalTableWidget(pParent) {};
+ ~KviFileTransferWidget() {};
+ void paintEvent(QPaintEvent * event);
+};
-class KviFileTransferItem : public KviTalListViewItem
+class KviFileTransferItem : public KviTalTableWidgetItem
{
public:
- KviFileTransferItem(KviTalListView * v,KviFileTransfer * t);
+ KviFileTransferItem(KviFileTransferWidget * v,KviFileTransfer * t);
~KviFileTransferItem();
protected:
KviFileTransfer * m_pTransfer;
+ KviTalTableWidgetItem * col1Item; //item on the second column
+ KviTalTableWidgetItem * col2Item; //item on the third column
public:
KviFileTransfer * transfer(){ return m_pTransfer; };
- virtual void paintCell(QPainter * p,const QColorGroup &cg,int column,int width,int align);
- virtual void setHeight(int h);
virtual QString key(int column,bool bAcending) const;
};
+class KviFileTransferItemDelegate : public KviTalIconAndRichTextItemDelegate
+{
+ Q_OBJECT
+public:
+ KviFileTransferItemDelegate(QAbstractItemView * pWidget=0)
+ : KviTalIconAndRichTextItemDelegate(pWidget) {};
+ ~KviFileTransferItemDelegate(){};
+ QSize sizeHint(const QStyleOptionViewItem &option,const QModelIndex &index) const;
+ void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const;
+};
class KviFileTransferWindow : public KviWindow , public KviModuleExtension
{
friend class KviFileTransferItem;
+ friend class KviFileTransferItemDelegate;
Q_OBJECT
public:
KviFileTransferWindow(KviModuleExtensionDescriptor * d,KviFrame * lpFrm);
~KviFileTransferWindow();
protected:
- QSplitter * m_pVertSplitter;
- KviTalListView * m_pListView;
- KviTalPopupMenu * m_pContextPopup;
- KviTalPopupMenu * m_pLocalFilePopup;
- KviTalPopupMenu * m_pOpenFilePopup;
- QTimer * m_pTimer;
- QPixmap * m_pMemPixmap;
- int m_iLineSpacing; // cached fm value
+ QSplitter * m_pVertSplitter;
+ KviFileTransferWidget * m_pTableWidget;
+ QAbstractItemDelegate * m_pItemDelegate;
+ KviTalPopupMenu * m_pContextPopup;
+ KviTalPopupMenu * m_pLocalFilePopup;
+ KviTalPopupMenu * m_pOpenFilePopup;
+ QTimer * m_pTimer;
+ QPixmap * m_pMemPixmap;
+ int m_iLineSpacing; // cached fm value
public: // Methods
virtual void die();
protected:
@@ -91,8 +113,8 @@ public:
protected slots:
void transferRegistered(KviFileTransfer *t);
void transferUnregistering(KviFileTransfer *t);
- void rightButtonPressed(KviTalListViewItem *it,const QPoint &pnt,int col);
- void doubleClicked(KviTalListViewItem *it,const QPoint &pnt,int col);
+ void rightButtonPressed(KviFileTransferItem *it,const QPoint &pnt,int col);
+ void doubleClicked(KviFileTransferItem *it,const QPoint &pnt,int col);
void heartbeat();
void clearTerminated();
void clearAll();
diff --git a/src/modules/http/httpfiletransfer.cpp b/src/modules/http/httpfiletransfer.cpp
index b28b39954..23697d426 100644
--- a/src/modules/http/httpfiletransfer.cpp
+++ b/src/modules/http/httpfiletransfer.cpp
@@ -113,8 +113,9 @@ bool KviHttpFileTransfer::active()
return ((m_eGeneralStatus == Connecting) || (m_eGeneralStatus == Downloading));
}
-void KviHttpFileTransfer::displayPaint(QPainter * p,int column,int width,int height)
+void KviHttpFileTransfer::displayPaint(QPainter * p,int column, QRect rect)
{
+ int width = rect.width(), height = rect.height();
QString txt;
bool bIsTerminated = ((m_eGeneralStatus == Success) || (m_eGeneralStatus == Failure));
@@ -131,7 +132,7 @@ void KviHttpFileTransfer::displayPaint(QPainter * p,int column,int width,int hei
case Success: offset = 96; break;
case Failure: offset = 144; break;
}
- p->drawPixmap(3,3,*g_pHttpIcon,offset,0,48,64);
+ p->drawPixmap(rect.left() + 3, rect.top() + 3,*g_pHttpIcon,offset,0,48,64);
}
break;
case COLUMN_FILEINFO:
@@ -148,30 +149,30 @@ void KviHttpFileTransfer::displayPaint(QPainter * p,int column,int width,int hei
p->setPen(Qt::black);
- int iY = 4;
+ int iY = rect.top() + 4;
- p->drawText(4 + daW1,iY,width - (8 + daW1),height - 8,Qt::AlignTop | Qt::AlignLeft,m_pHttpRequest->url().url().ptr());
+ p->drawText(rect.left() + 4 + daW1,iY,width - (8 + daW1),height - 8,Qt::AlignTop | Qt::AlignLeft,m_pHttpRequest->url().url().ptr());
iY += iLineSpacing;
if(!(m_pHttpRequest->fileName().isEmpty()))
{
- p->drawText(4 + daW1,iY,width - (8 + daW1),height - 8,Qt::AlignTop | Qt::AlignLeft,m_pHttpRequest->fileName());
+ p->drawText(rect.left() + 4 + daW1,iY,width - (8 + daW1),height - 8,Qt::AlignTop | Qt::AlignLeft,m_pHttpRequest->fileName());
}
iY += iLineSpacing;
p->setPen(Qt::darkGray);
- p->drawText(4,4,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,szFrom);
- p->drawText(4,4 + iLineSpacing,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,szTo);
+ p->drawText(rect.left() + 4, rect.top() + 4,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,szFrom);
+ p->drawText(rect.left() + 4, rect.top() + 4 + iLineSpacing,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,szTo);
p->setPen(QColor(180,180,200));
iLineSpacing += 2;
- p->drawRect(4,height - (iLineSpacing + 4),width - 8,iLineSpacing);
- p->fillRect(5,height - (iLineSpacing + 3),width - 10,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
+ p->drawRect(rect.left() + 4, rect.top() + height - (iLineSpacing + 4),width - 8,iLineSpacing);
+ p->fillRect(rect.left() + 5, rect.top() + height - (iLineSpacing + 3),width - 10,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
p->setPen(Qt::black);
- p->drawText(7,height - (iLineSpacing + 4),width - 14,iLineSpacing,Qt::AlignVCenter | Qt::AlignLeft,m_szStatusString);
+ p->drawText(rect.left() + 7, rect.top() + height - (iLineSpacing + 4),width - 14,iLineSpacing,Qt::AlignVCenter | Qt::AlignLeft,m_szStatusString);
}
break;
case COLUMN_PROGRESS:
@@ -183,7 +184,7 @@ void KviHttpFileTransfer::displayPaint(QPainter * p,int column,int width,int hei
int iW = width - 8;
p->setPen(bIsTerminated ? Qt::lightGray : QColor(210,210,240));
- p->drawRect(4,4,iW,12);
+ p->drawRect(rect.left() + 4, rect.top() + 4,iW,12);
int iAvgSpeed = -1;
int iEta = -1;
@@ -209,7 +210,7 @@ void KviHttpFileTransfer::displayPaint(QPainter * p,int column,int width,int hei
iW -= 2;
int iL = (int) ((((double)iW) * dPerc) / 100.0);
//iR = iW - iL;
- p->fillRect(5,5,iL,10,bIsTerminated ? QColor(140,110,110) : QColor(200,100,100));
+ p->fillRect(rect.left() + 5, rect.top() + 5,iL,10,bIsTerminated ? QColor(140,110,110) : QColor(200,100,100));
txt = QString(__tr2qs_ctx("%1 of %2 (%3 %)","http")).arg(KviQString::makeSizeReadable(uRecvd))
.arg(KviQString::makeSizeReadable(uTotal)).arg(dPerc,0,'f',2);
@@ -219,7 +220,7 @@ void KviHttpFileTransfer::displayPaint(QPainter * p,int column,int width,int hei
p->setPen(Qt::black);
- p->drawText(4,19,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,txt);
+ p->drawText(rect.left() + 4, rect.top() + 19,width - 8,height - 8,Qt::AlignTop | Qt::AlignLeft,txt);
int iLeftHalf = (iW - 2) / 2;
int iRightHalf = iW - (iLeftHalf + 1);
@@ -254,10 +255,10 @@ void KviHttpFileTransfer::displayPaint(QPainter * p,int column,int width,int hei
int iDaH = height - (iLineSpacing + 4);
p->setPen(QColor(180,180,200));
- p->drawRect(4,iDaH,iLeftHalf,iLineSpacing);
- p->fillRect(5,iDaH + 1,iLeftHalf - 2,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
+ p->drawRect(rect.left() + 4, rect.top() + iDaH,iLeftHalf,iLineSpacing);
+ p->fillRect(rect.left() + 5, rect.top() + iDaH + 1,iLeftHalf - 2,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
p->setPen(bIsTerminated ? Qt::darkGray : Qt::black);
- p->drawText(6,iDaH,iLeftHalf - 4,iLineSpacing,Qt::AlignLeft | Qt::AlignVCenter,txt);
+ p->drawText(rect.left() + 6, rect.top() + iDaH,iLeftHalf - 4,iLineSpacing,Qt::AlignLeft | Qt::AlignVCenter,txt);
unsigned int uD,uH,uM,uS;
@@ -282,10 +283,10 @@ void KviHttpFileTransfer::displayPaint(QPainter * p,int column,int width,int hei
}
p->setPen(QColor(180,180,200));
- p->drawRect(width - (4 + iRightHalf),iDaH,iRightHalf,iLineSpacing);
- p->fillRect(width - (3 + iRightHalf),iDaH + 1,iRightHalf - 2,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
+ p->drawRect(rect.left() + width - (4 + iRightHalf), rect.top() + iDaH,iRightHalf,iLineSpacing);
+ p->fillRect(rect.left() + width - (3 + iRightHalf), rect.top() + iDaH + 1,iRightHalf - 2,iLineSpacing - 2,bIsTerminated ? QColor(210,210,210) : QColor(190,190,240));
p->setPen(bIsTerminated ? Qt::darkGray : Qt::black);
- p->drawText(width - (2 + iRightHalf),iDaH,iRightHalf - 4,iLineSpacing,Qt::AlignLeft | Qt::AlignVCenter,txt);
+ p->drawText(rect.left() + width - (2 + iRightHalf), rect.top() + iDaH,iRightHalf - 4,iLineSpacing,Qt::AlignLeft | Qt::AlignVCenter,txt);
}
break;
diff --git a/src/modules/http/httpfiletransfer.h b/src/modules/http/httpfiletransfer.h
index 3800538cb..5216df6fb 100644
--- a/src/modules/http/httpfiletransfer.h
+++ b/src/modules/http/httpfiletransfer.h
@@ -76,7 +76,7 @@ public:
void setAutoClean(bool bAutoClean){ m_bAutoClean = bAutoClean; };
void setNoOutput(bool bNoOutput){ m_bNoOutput = bNoOutput; };
- virtual void displayPaint(QPainter * p,int column,int width,int height);
+ virtual void displayPaint(QPainter * p,int column, QRect rect);
virtual int displayHeight(int iLineSpacing);
virtual void fillContextPopup(KviTalPopupMenu * m,int column);
virtual bool active();