diff options
| author | 2008-05-24 10:47:26 +0000 | |
|---|---|---|
| committer | 2008-05-24 10:47:26 +0000 | |
| commit | 62a8bf04c221497f2350a1167228c842fca31831 (patch) | |
| tree | 72de715bb0b085af3f5f6a3301688590d3e1d5e4 /src | |
| parent | fixed .desktop install (diff) | |
| download | KVIrc-62a8bf04c221497f2350a1167228c842fca31831.tar.gz KVIrc-62a8bf04c221497f2350a1167228c842fca31831.tar.bz2 KVIrc-62a8bf04c221497f2350a1167228c842fca31831.zip | |
options module QT4 port (wip) + some QT4 fix
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@1845 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
30 files changed, 614 insertions, 1173 deletions
diff --git a/src/kvilib/tal/kvi_tal_treewidget.cpp b/src/kvilib/tal/kvi_tal_treewidget.cpp index cd9ff43b2..80887a50d 100644 --- a/src/kvilib/tal/kvi_tal_treewidget.cpp +++ b/src/kvilib/tal/kvi_tal_treewidget.cpp @@ -85,712 +85,68 @@ static QStyleOptionQ3ListView getStyleOption(const Q3ListView *lv, const Q3ListV KviTalTreeWidget::KviTalTreeWidget(QWidget * pParent) : QTreeWidget(pParent) { -/* connect(this,SIGNAL(selectionChanged(Q3ListViewItem *)),this,SLOT(redirect_selectionChanged(Q3ListViewItem *))); - connect(this,SIGNAL(currentChanged(Q3ListViewItem *)),this,SLOT(redirect_currentChanged(Q3ListViewItem *))); - connect(this,SIGNAL(clicked(Q3ListViewItem *)),this,SLOT(redirect_clicked(Q3ListViewItem *))); - connect(this,SIGNAL(clicked(Q3ListViewItem *,const QPoint &,int)),this,SLOT(redirect_clicked(Q3ListViewItem *,const QPoint &,int))); - connect(this,SIGNAL(pressed(Q3ListViewItem *)),this,SLOT(redirect_pressed(Q3ListViewItem *))); - connect(this,SIGNAL(pressed(Q3ListViewItem *,const QPoint &,int)),this,SLOT(redirect_pressed(Q3ListViewItem *,const QPoint &,int))); - connect(this,SIGNAL(doubleClicked(Q3ListViewItem *)),this,SLOT(redirect_doubleClicked(Q3ListViewItem *))); - connect(this,SIGNAL(doubleClicked(Q3ListViewItem *,const QPoint &,int)),this,SLOT(redirect_doubleClicked(Q3ListViewItem *,const QPoint &,int))); - connect(this,SIGNAL(returnPressed(Q3ListViewItem *)),this,SLOT(redirect_returnPressed(Q3ListViewItem *))); - connect(this,SIGNAL(spacePressed(Q3ListViewItem *)),this,SLOT(redirect_spacePressed(Q3ListViewItem *))); - connect(this,SIGNAL(rightButtonClicked(Q3ListViewItem *,const QPoint &,int)),this,SLOT(redirect_rightButtonClicked(Q3ListViewItem *,const QPoint &,int))); - connect(this,SIGNAL(rightButtonPressed(Q3ListViewItem *,const QPoint &,int)),this,SLOT(redirect_rightButtonPressed(Q3ListViewItem *,const QPoint &,int))); - connect(this,SIGNAL(mouseButtonClicked(int,Q3ListViewItem *,const QPoint &,int)),this,SLOT(redirect_mouseButtonClicked(int,Q3ListViewItem *,const QPoint &,int))); - connect(this,SIGNAL(mouseButtonPressed(int,Q3ListViewItem *,const QPoint &,int)),this,SLOT(redirect_mouseButtonPressed(int,Q3ListViewItem *,const QPoint &,int))); - connect(this,SIGNAL(contextMenuRequested(Q3ListViewItem *,const QPoint &,int)),this,SLOT(redirect_contextMenuRequested(Q3ListViewItem *,const QPoint &,int))); - connect(this,SIGNAL(onItem(Q3ListViewItem *)),this,SLOT(redirect_onItem(Q3ListViewItem *))); - connect(this,SIGNAL(expanded(Q3ListViewItem *)),this,SLOT(redirect_expanded(Q3ListViewItem *))); - connect(this,SIGNAL(collapsed(Q3ListViewItem *)),this,SLOT(redirect_collapsed(Q3ListViewItem *))); - */ -} -/* -void KviTalTreeWidget::redirect_selectionChanged(Q3ListViewItem * pItem) -{ - emit selectionChanged((KviTalTreeWidgetItem *)pItem); -} - -void KviTalTreeWidget::redirect_currentChanged(Q3ListViewItem * pItem) -{ - emit currentChanged((KviTalTreeWidgetItem *)pItem); -} - -void KviTalTreeWidget::redirect_clicked(Q3ListViewItem * pItem) -{ - emit clicked((KviTalTreeWidgetItem *)pItem); -} - -void KviTalTreeWidget::redirect_clicked(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn) -{ - emit clicked((KviTalTreeWidgetItem *)pItem,pnt,uColumn); -} - -void KviTalTreeWidget::redirect_pressed(Q3ListViewItem * pItem) -{ - emit pressed((KviTalTreeWidgetItem *)pItem); + 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_pressed(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn) -{ - emit pressed((KviTalTreeWidgetItem *)pItem,pnt,uColumn); -} - -void KviTalTreeWidget::redirect_doubleClicked(Q3ListViewItem * pItem) -{ - emit doubleClicked((KviTalTreeWidgetItem *)pItem); -} - -void KviTalTreeWidget::redirect_doubleClicked(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn) -{ - emit doubleClicked((KviTalTreeWidgetItem *)pItem,pnt,uColumn); -} -void KviTalTreeWidget::redirect_returnPressed(Q3ListViewItem * pItem) -{ - emit returnPressed((KviTalTreeWidgetItem *)pItem); -} -void KviTalTreeWidget::redirect_spacePressed(Q3ListViewItem * pItem) +void KviTalTreeWidget::redirect_currentItemChanged(QTreeWidgetItem *pItemCurr,QTreeWidgetItem *pItemPrev) { - emit spacePressed((KviTalTreeWidgetItem *)pItem); + emit currentItemChanged((KviTalTreeWidgetItem *)pItemCurr,(KviTalTreeWidgetItem *)pItemPrev); } -void KviTalTreeWidget::redirect_rightButtonClicked(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn) +void KviTalTreeWidget::redirect_itemActivated(QTreeWidgetItem *pItem,int col) { - emit rightButtonClicked((KviTalTreeWidgetItem *)pItem,pnt,uColumn); + emit itemActivated((KviTalTreeWidgetItem *)pItem,col); } -void KviTalTreeWidget::redirect_rightButtonPressed(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn) +void KviTalTreeWidget::redirect_itemChanged(QTreeWidgetItem *pItem,int col) { - emit rightButtonPressed((KviTalTreeWidgetItem *)pItem,pnt,uColumn); + emit itemChanged((KviTalTreeWidgetItem *)pItem,col); } -void KviTalTreeWidget::redirect_mouseButtonClicked(int iButton,Q3ListViewItem * pItem,const QPoint &pnt,int uColumn) -{ - emit mouseButtonClicked(iButton,(KviTalTreeWidgetItem *)pItem,pnt,uColumn); -} -void KviTalTreeWidget::redirect_mouseButtonPressed(int iButton,Q3ListViewItem * pItem,const QPoint &pnt,int uColumn) +void KviTalTreeWidget::redirect_itemClicked(QTreeWidgetItem *pItem,int col) { - emit mouseButtonPressed(iButton,(KviTalTreeWidgetItem *)pItem,pnt,uColumn); + emit itemClicked((KviTalTreeWidgetItem *)pItem,col); } -void KviTalTreeWidget::redirect_contextMenuRequested(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn) +void KviTalTreeWidget::redirect_itemCollapsed(QTreeWidgetItem *pItem) { - emit contextMenuRequested((KviTalTreeWidgetItem *)pItem,pnt,uColumn); + emit itemCollapsed((KviTalTreeWidgetItem *)pItem); } -void KviTalTreeWidget::redirect_onItem(Q3ListViewItem * pItem) -{ - emit onItem((KviTalTreeWidgetItem *)pItem); -} -void KviTalTreeWidget::redirect_expanded(Q3ListViewItem * pItem) -{ - emit expanded((KviTalTreeWidgetItem *)pItem); -} -void KviTalTreeWidget::redirect_collapsed(Q3ListViewItem * pItem) +void KviTalTreeWidget::redirect_itemExpanded(QTreeWidgetItem *pItem) { - emit collapsed((KviTalTreeWidgetItem *)pItem); + emit itemExpanded((KviTalTreeWidgetItem *)pItem); } -struct KviTalCheckListItemPrivate -{ - KviTalCheckListItemPrivate(): - exclusive(0), - currentState(KviTalCheckListItem::Off), - tristate(false) {} - - KviTalCheckListItem *exclusive; - KviTalCheckListItem::ToggleState currentState; - QHash<KviTalCheckListItem *, KviTalCheckListItem::ToggleState> statesDict; - bool tristate; -}; - -KviTalCheckListItem::KviTalCheckListItem(KviTalCheckListItem *parent, const QString &text,Type tt) -: KviTalTreeWidgetItem(parent, text, QString()) +void KviTalTreeWidget::redirect_itemDoubleClicked(QTreeWidgetItem *pItem,int col) { - myType = tt; - init(); - if (myType == RadioButton) { - if (parent->type() != RadioButtonController) - qWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be " - "child of a controller"); - else - d->exclusive = parent; - } + emit itemDoubleClicked((KviTalTreeWidgetItem *)pItem,col); } -KviTalCheckListItem::KviTalCheckListItem(KviTalCheckListItem *parent, KviTalTreeWidgetItem *after,const QString &text, Type tt) -: KviTalTreeWidgetItem(parent, after, text) +void KviTalTreeWidget::redirect_itemEntered(QTreeWidgetItem *pItem,int col) { - myType = tt; - init(); - if (myType == RadioButton) { - if (parent->type() != RadioButtonController) - qWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be " - "child of a controller"); - else - d->exclusive = parent; - } + emit itemEntered((KviTalTreeWidgetItem *)pItem,col); } - -KviTalCheckListItem::KviTalCheckListItem(KviTalTreeWidgetItem *parent, const QString &text,Type tt) -: KviTalTreeWidgetItem(parent, text, QString()) +void KviTalTreeWidget::redirect_itemPressed(QTreeWidgetItem *pItem,int col) { - myType = tt; - if (myType == RadioButton) { - qWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be " - "child of a KviTalCheckListItem"); - } - init(); + emit itemPressed((KviTalTreeWidgetItem *)pItem,col); } -KviTalCheckListItem::KviTalCheckListItem(KviTalTreeWidgetItem *parent, KviTalTreeWidgetItem *after,const QString &text, Type tt) -: KviTalTreeWidgetItem(parent, after, text) -{ - myType = tt; - if (myType == RadioButton) { - qWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be " - "child of a KviTalCheckListItem"); - } - init(); -} -KviTalCheckListItem::KviTalCheckListItem(KviTalTreeWidget *parent, const QString &text,Type tt) -: KviTalTreeWidgetItem(parent, text) -{ - myType = tt; - if (tt == RadioButton){ - qWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be " - "child of a KviTalCheckListItem"); - } - init(); -} - -KviTalCheckListItem::KviTalCheckListItem(KviTalTreeWidget *parent, KviTalTreeWidgetItem *after,const QString &text, Type tt) -: KviTalTreeWidgetItem(parent, after, text) -{ - myType = tt; - if (tt == RadioButton){ - qWarning("KviTalCheckListItem::KviTalCheckListItem(), radio button must be " - "child of a KviTalCheckListItem"); - } - init(); -} - -int KviTalCheckListItem::rtti() const -{ - return RTTI; -} - -KviTalCheckListItem::KviTalCheckListItem(KviTalTreeWidget *parent, const QString &text,const QPixmap & p) -: KviTalTreeWidgetItem(parent, text) -{ - myType = RadioButtonController; - setPixmap(0, p); - init(); -} - -KviTalCheckListItem::KviTalCheckListItem(KviTalTreeWidgetItem *parent, const QString &text,const QPixmap & p) -: KviTalTreeWidgetItem(parent, text) -{ - myType = RadioButtonController; - setPixmap(0, p); - init(); -} - -void KviTalCheckListItem::init() -{ - d = new KviTalCheckListItemPrivate(); - on = false; // ### remove on ver 4 - // CheckBoxControllers by default have tristate set to true - if (myType == CheckBoxController) - setTristate(true); -} - -KviTalCheckListItem::~KviTalCheckListItem() -{ - if (myType == RadioButton - && d->exclusive && d->exclusive->d - && d->exclusive->d->exclusive == this) - d->exclusive->turnOffChild(); - d->exclusive = 0; // so the children won't try to access us. - delete d; - d = 0; -} - -void KviTalCheckListItem::setTristate(bool b) -{ - if ((myType != CheckBoxController) && (myType != CheckBox)) { - qWarning("KviTalCheckListItem::setTristate(), has no effect on RadioButton " - "or RadioButtonController."); - return; - } - d->tristate = b; -} - -bool KviTalCheckListItem::isTristate() const -{ - return d->tristate; -} - -KviTalCheckListItem::ToggleState KviTalCheckListItem::state() const -{ - if (!isTristate() && internalState() == NoChange) - return Off; - else - return d->currentState; -} - -KviTalCheckListItem::ToggleState KviTalCheckListItem::internalState() const -{ - return d->currentState; -} - -void KviTalCheckListItem::setState(ToggleState s) -{ - if (myType == CheckBoxController && state() == NoChange) - updateStoredState(this); - setState(s, true, true); -} - -void KviTalCheckListItem::setState(ToggleState s, bool update, bool store) -{ - - if (s == internalState()) - return; - - if (myType == CheckBox) { - setCurrentState(s); - stateChange(state()); - if (update && parent() && parent()->rtti() == 1 - && ((KviTalCheckListItem*)parent())->type() == CheckBoxController) - ((KviTalCheckListItem*)parent())->updateController(update, store); - } else if (myType == CheckBoxController) { - if (s == NoChange && childCount()) { - restoreState(this); - } else { - KviTalTreeWidgetItem *item = firstChild(); - int childCount = 0; - while(item) { - if (item->rtti() == 1 && - (((KviTalCheckListItem*)item)->type() == CheckBox || - ((KviTalCheckListItem*)item)->type() == CheckBoxController)) { - KviTalCheckListItem *checkItem = (KviTalCheckListItem*)item; - checkItem->setState(s, false, false); - childCount++; - } - item = item->nextSibling(); - } - if (update) { - if (childCount > 0) { - ToggleState oldState = internalState(); - updateController(false, false); - if (oldState != internalState() && - parent() && parent()->rtti() == 1 && - ((KviTalCheckListItem*)parent())->type() == CheckBoxController) - ((KviTalCheckListItem*)parent())->updateController(update, store); - - updateController(update, store); - } else { - // if there are no children we simply set the CheckBoxController and update its parent - setCurrentState(s); - stateChange(state()); - if (parent() && parent()->rtti() == 1 - && ((KviTalCheckListItem*)parent())->type() == CheckBoxController) - ((KviTalCheckListItem*)parent())->updateController(update, store); - } - } else { - setCurrentState(s); - stateChange(state()); - } - } - } else if (myType == RadioButton) { - if (s == On) { - if (d->exclusive && d->exclusive->d->exclusive != this) - d->exclusive->turnOffChild(); - setCurrentState(s); - if (d->exclusive) - d->exclusive->d->exclusive = this; - } else { - if (d->exclusive && d->exclusive->d->exclusive == this) - d->exclusive->d->exclusive = 0; - setCurrentState(Off); - } - stateChange(state()); - } - repaint(); -} - -void KviTalCheckListItem::setCurrentState(ToggleState s) -{ - ToggleState old = d->currentState; - d->currentState = s; - if (d->currentState == On) - on = true; - else - on = false; - -//#ifndef QT_NO_ACCESSIBILITY -// if (old != d->currentState && listView()) -// QAccessible::updateAccessibility(listView()->viewport(), indexOfItem(this), QAccessible::StateChanged); -//#else -// Q_UNUSED(old); -//#endif -} - -void KviTalCheckListItem::setStoredState(ToggleState newState, KviTalCheckListItem *key) -{ - if (myType == CheckBox || myType == CheckBoxController) - d->statesDict[key] = newState; -} - -KviTalCheckListItem::ToggleState KviTalCheckListItem::storedState(KviTalCheckListItem *key) const -{ - QHash<KviTalCheckListItem *, KviTalCheckListItem::ToggleState>::Iterator it = d->statesDict.find(key); - if (it != d->statesDict.end()) - return it.value(); - else - return Off; -} - -void KviTalCheckListItem::turnOffChild() -{ - if (myType == RadioButtonController && d->exclusive) - d->exclusive->setOn(false); -} - -void KviTalCheckListItem::activate() -{ - KviTalTreeWidget * lv = listView(); - - if (lv && !lv->isEnabled() || !isEnabled()) - return; - - QPoint pos; - int boxsize = lv->style()->pixelMetric(QStyle::PM_CheckListButtonSize, 0, lv); - if (activatedPos(pos)) { - bool parentControl = false; - if (parent() && parent()->rtti() == 1 && - ((KviTalCheckListItem*) parent())->type() == RadioButtonController) - parentControl = true; - - int x = parentControl ? 0 : 3; - int align = lv->columnAlignment(0); - int marg = lv->itemMargin(); - int y = 0; - - if (align & Qt::AlignVCenter) - y = ((height() - boxsize) / 2) + marg; - else - y = (lv->fontMetrics().height() + 2 + marg - boxsize) / 2; - - QRect r(x, y, boxsize-3, boxsize-3); - // columns might have been swapped - r.moveBy(lv->header()->sectionPos(0), 0); - if (!r.contains(pos)) - return; - } - if ((myType == CheckBox) || (myType == CheckBoxController)) { - //lv->d->startEdit = FALSE; - switch (internalState()) { - case On: - setState(Off); - break; - case Off: - if (!isTristate() && myType == CheckBox) { - setState(On); - } else { - setState(NoChange); - if (myType == CheckBoxController && internalState() != NoChange) - setState(On); - } - break; - case NoChange: - setState(On); - break; - } - ignoreDoubleClick(); - } else if (myType == RadioButton) { - setOn(true); - ignoreDoubleClick(); - } -} - -void KviTalCheckListItem::setOn(bool b ) -{ - if (b) - setState(On , true, true); - else - setState(Off , true, true); -} - -void KviTalCheckListItem::stateChange(bool) -{ -} - -void KviTalCheckListItem::stateChange(ToggleState s) -{ - stateChange(s == On); -} - -void KviTalCheckListItem::restoreState(KviTalCheckListItem *key, int depth) -{ - switch (type()) { - case CheckBox: - setCurrentState(storedState(key)); - stateChange(state()); - repaint(); - break; - case CheckBoxController: { - KviTalTreeWidgetItem *item = firstChild(); - int childCount = 0; - while (item) { - // recursively calling restoreState for children of type CheckBox and CheckBoxController - if (item->rtti() == 1 && - (((KviTalCheckListItem*)item)->type() == CheckBox || - ((KviTalCheckListItem*)item)->type() == CheckBoxController)) { - ((KviTalCheckListItem*)item)->restoreState(key , depth+1); - childCount++; - } - item = item->nextSibling(); - } - if (childCount > 0) { - if (depth == 0) - updateController(true); - else - updateController(false); - } else { - // if there are no children we retrieve the CheckBoxController state directly. - setState(storedState(key), true, false); - } - } - break; - default: - break; - } -} - -void KviTalCheckListItem::updateController(bool update , bool store) -{ - if (myType != CheckBoxController) - return; - - KviTalCheckListItem *controller = 0; - // checks if this CheckBoxController has another CheckBoxController as parent - if (parent() && parent()->rtti() == 1 - && ((KviTalCheckListItem*)parent())->type() == CheckBoxController) - controller = (KviTalCheckListItem*)parent(); - - ToggleState theState = Off; - bool first = true; - KviTalTreeWidgetItem *item = firstChild(); - while(item && theState != NoChange) { - if (item->rtti() == 1 && - (((KviTalCheckListItem*)item)->type() == CheckBox || - ((KviTalCheckListItem*)item)->type() == CheckBoxController)) { - KviTalCheckListItem *checkItem = (KviTalCheckListItem*)item; - if (first) { - theState = checkItem->internalState(); - first = false; - } else { - if (checkItem->internalState() == NoChange || - theState != checkItem->internalState()) - theState = NoChange; - else - theState = checkItem->internalState(); - } - } - item = item->nextSibling(); - } - if (internalState() != theState) { - setCurrentState(theState); - if (store && (internalState() == On || internalState() == Off)) - updateStoredState(this); - stateChange(state()); - if (update && controller) { - controller->updateController(update, store); - } - repaint(); - } -} - -void KviTalCheckListItem::updateStoredState(KviTalCheckListItem *key) -{ - if (myType != CheckBoxController) - return; - - KviTalTreeWidgetItem *item = firstChild(); - while(item) { - if (item->rtti() == 1) { - KviTalCheckListItem *checkItem = (KviTalCheckListItem*)item; - if (checkItem->type() == CheckBox) - checkItem->setStoredState(checkItem->internalState(), key); - else if (checkItem->type() == CheckBoxController) - checkItem->updateStoredState(key); - } - item = item->nextSibling(); - } - // this state is only needed if the CheckBoxController has no CheckBox / CheckBoxController children. - setStoredState(internalState() , key); -} - -void KviTalCheckListItem::setup() -{ - KviTalTreeWidgetItem::setup(); - int h = height(); - KviTalTreeWidget *lv = listView(); - if (lv) - h = qMax(lv->style()->pixelMetric(QStyle::PM_CheckListButtonSize, 0, lv), - h); - h = qMax(h, QApplication::globalStrut().height()); - setHeight(h); -} - -int KviTalCheckListItem::width(const QFontMetrics& fm, const KviTalTreeWidget* lv, int column) const -{ - int r = KviTalTreeWidgetItem::width(fm, lv, column); - if (column == 0) { - r += lv->itemMargin(); - if (myType == RadioButtonController && pixmap(0)) { - // r += 0; - } else { - r += lv->style()->pixelMetric(QStyle::PM_CheckListButtonSize, 0, lv) + 4; - } - } - return qMax(r, QApplication::globalStrut().width()); -} - -void KviTalCheckListItem::paintCell(QPainter * p, const QColorGroup & cg, int column, int width, int align) -{ - if (!p) - return; - - KviTalTreeWidget *lv = listView(); - if (!lv) - return; - - const QPalette::ColorRole crole = lv->foregroundRole(); - if (cg.brush(crole) != lv->palette().brush(crole)) - p->fillRect(0, 0, width, height(), cg.brush(crole)); - else - lv->paintEmptyArea(p, QRect(0, 0, width, height())); - - if (column != 0) { - // The rest is text, or for subclasses to change. - KviTalTreeWidgetItem::paintCell(p, cg, column, width, align); - return; - } - - bool parentControl = false; - if (parent() && parent()->rtti() == 1 && - ((KviTalCheckListItem*) parent())->type() == RadioButtonController) - parentControl = true; - - QFontMetrics fm(lv->fontMetrics()); - int boxsize = lv->style()->pixelMetric(myType == RadioButtonController ? QStyle::PM_CheckListControllerSize : - QStyle::PM_CheckListButtonSize, 0, lv); - int marg = lv->itemMargin(); - int r = marg; - - // Draw controller / checkbox / radiobutton --------------------- - QStyle::State styleflags = QStyle::State_None; - if (internalState() == On) { - styleflags |= QStyle::State_On; - } else if (internalState() == NoChange) { - if (myType == CheckBoxController && !isTristate()) - styleflags |= QStyle::State_Off; - else - styleflags |= QStyle::State_NoChange; - } else { - styleflags |= QStyle::State_Off; - } - if (isSelected()) - styleflags |= QStyle::State_Selected; - if (isEnabled() && lv->isEnabled()) - styleflags |= QStyle::State_Enabled; - if (lv->window()->isActiveWindow()) - styleflags |= QStyle::State_Active; - - if (myType == RadioButtonController) { - int x = 0; - if(!parentControl) - x += 3; - if (!pixmap(0)) { - QStyleOptionQ3ListView opt = getStyleOption(lv, this); - opt.rect.setRect(x, 0, boxsize, fm.height() + 2 + marg); - opt.palette = cg; - opt.state = styleflags; - lv->style()->drawPrimitive(QStyle::PE_Q3CheckListController, &opt, p, lv); - r += boxsize + 4; - } - } else { - Q_ASSERT(lv); //### - int x = 0; - int y = 0; - if (!parentControl) - x += 3; - if (align & Qt::AlignVCenter) - y = ((height() - boxsize) / 2) + marg; - else - y = (fm.height() + 2 + marg - boxsize) / 2; - - QStyleOptionQ3ListView opt = getStyleOption(lv, this); - opt.rect.setRect(x, y, boxsize, fm.height() + 2 + marg); - opt.palette = cg; - opt.state = styleflags; - lv->style()->drawPrimitive((myType == CheckBox || myType == CheckBoxController) - ? QStyle::PE_Q3CheckListIndicator - : QStyle::PE_Q3CheckListExclusiveIndicator, &opt, p, lv); - r += boxsize + 4; - } - - // Draw text ---------------------------------------------------- - p->translate(r, 0); - p->setPen(QPen(cg.text())); - KviTalTreeWidgetItem::paintCell(p, cg, column, width - r, align); -} - -void KviTalCheckListItem::paintFocus(QPainter *p, const QColorGroup & cg, -const QRect & r) -{ - bool intersect = true; - KviTalTreeWidget *lv = listView(); - if (lv && lv->header()->mapToActual(0) != 0) { - int xdepth = lv->treeStepSize() * (depth() + (lv->rootIsDecorated() ? 1 : 0)) + lv->itemMargin(); - int p = lv->header()->cellPos(lv->header()->mapToActual(0)); - xdepth += p; - intersect = r.intersects(QRect(p, r.y(), xdepth - p + 1, r.height())); - } - bool parentControl = false; - if (parent() && parent()->rtti() == 1 && - ((KviTalCheckListItem*) parent())->type() == RadioButtonController) - parentControl = true; - if (myType != RadioButtonController && intersect && - (lv->rootIsDecorated() || myType == RadioButton || - (myType == CheckBox && parentControl))) { - QRect rect; - int boxsize = lv->style()->pixelMetric(QStyle::PM_CheckListButtonSize, 0, lv); - if (lv->columnAlignment(0) == Qt::AlignCenter) { - QFontMetrics fm(lv->font()); - int bx = (lv->columnWidth(0) - (boxsize + fm.width(text())))/2 + boxsize; - if (bx < 0) bx = 0; - rect.setRect(r.x() + bx + 5, r.y(), r.width() - bx - 5, - r.height()); - } else - rect.setRect(r.x() + boxsize + 5, r.y(), r.width() - boxsize - 5, - r.height()); - KviTalTreeWidgetItem::paintFocus(p, cg, rect); - } else { - KviTalTreeWidgetItem::paintFocus(p, cg, r); - } -} - -*/ #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_treewidget.h b/src/kvilib/tal/kvi_tal_treewidget.h index 87c8ee975..9641a5c7b 100644 --- a/src/kvilib/tal/kvi_tal_treewidget.h +++ b/src/kvilib/tal/kvi_tal_treewidget.h @@ -51,59 +51,37 @@ class KviTalTreeWidgetItem; class KVILIB_API KviTalTreeWidget : public QTreeWidget { - //friend class KviTalCheckListItem; Q_OBJECT public: KviTalTreeWidget(QWidget * pParent); virtual ~KviTalTreeWidget() {}; public: void addColumn(const QString label){setHeaderLabel(label);}; - // Shadow the internal Qt methods - /*KviTalTreeWidgetItem * firstChild() const { return (KviTalTreeWidgetItem *)Q3ListView::firstChild(); }; - KviTalTreeWidgetItem * lastItem() const { return (KviTalTreeWidgetItem *)Q3ListView::lastItem(); }; - KviTalTreeWidgetItem * selectedItem() const { return (KviTalTreeWidgetItem *)Q3ListView::selectedItem(); }; - KviTalTreeWidgetItem * currentItem() const { return (KviTalTreeWidgetItem *)Q3ListView::currentItem(); }; - KviTalTreeWidgetItem * itemAt(const QPoint &pnt) const { return (KviTalTreeWidgetItem *)Q3ListView::itemAt(pnt); }; - + signals: - void selectionChanged(KviTalTreeWidgetItem * pItem); - void currentChanged(KviTalTreeWidgetItem * pItem); - void clicked(KviTalTreeWidgetItem * pItem); - void clicked(KviTalTreeWidgetItem * pItem,const QPoint &pnt,int uColumn); - void pressed(KviTalTreeWidgetItem * pItem); - void pressed(KviTalTreeWidgetItem * pItem,const QPoint &pnt,int uColumn); - void doubleClicked(KviTalTreeWidgetItem * pItem); - void doubleClicked(KviTalTreeWidgetItem * pItem,const QPoint &pnt,int uColumn); - void returnPressed(KviTalTreeWidgetItem * pItem); - void spacePressed(KviTalTreeWidgetItem * pItem); - void rightButtonClicked(KviTalTreeWidgetItem * pItem,const QPoint &pnt,int uColumn); - void rightButtonPressed(KviTalTreeWidgetItem * pItem,const QPoint &pnt,int uColumn); - void mouseButtonClicked(int iButton,KviTalTreeWidgetItem * pItem,const QPoint &pnt,int uColumn); - void mouseButtonPressed(int iButton,KviTalTreeWidgetItem * pItem,const QPoint &pnt,int uColumn); - void contextMenuRequested(KviTalTreeWidgetItem * pItem,const QPoint &pnt,int uColumn); - void onItem(KviTalTreeWidgetItem * pItem); - void expanded(KviTalTreeWidgetItem * pItem); - void collapsed(KviTalTreeWidgetItem * pItem); + 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_selectionChanged(Q3ListViewItem * pItem); - void redirect_currentChanged(Q3ListViewItem * pItem); - void redirect_clicked(Q3ListViewItem * pItem); - void redirect_clicked(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn); - void redirect_pressed(Q3ListViewItem * pItem); - void redirect_pressed(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn); - void redirect_doubleClicked(Q3ListViewItem * pItem); - void redirect_doubleClicked(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn); - void redirect_returnPressed(Q3ListViewItem * pItem); - void redirect_spacePressed(Q3ListViewItem * pItem); - void redirect_rightButtonClicked(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn); - void redirect_rightButtonPressed(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn); - void redirect_mouseButtonClicked(int iButton,Q3ListViewItem * pItem,const QPoint &pnt,int uColumn); - void redirect_mouseButtonPressed(int iButton,Q3ListViewItem * pItem,const QPoint &pnt,int uColumn); - void redirect_contextMenuRequested(Q3ListViewItem * pItem,const QPoint &pnt,int uColumn); - void redirect_onItem(Q3ListViewItem * pItem); - void redirect_expanded(Q3ListViewItem * pItem); - void redirect_collapsed(Q3ListViewItem * pItem); -*/ + 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); }; @@ -122,7 +100,23 @@ public: : QTreeWidgetItem(pParent) { setText(0,szLabel); }; - int compare ( KviTalTreeWidgetItem * i, int col, bool ascending ) const + 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)); diff --git a/src/kvirc/ui/kvi_maskeditor.cpp b/src/kvirc/ui/kvi_maskeditor.cpp index 471cbb2e2..e4cf558e7 100644 --- a/src/kvirc/ui/kvi_maskeditor.cpp +++ b/src/kvirc/ui/kvi_maskeditor.cpp @@ -198,7 +198,7 @@ KviMaskEditor::KviMaskEditor(QWidget * par,KviWindowToolPageButton* button,KviPo m_pMaskBox->setAllColumnsShowFocus(true); // m_pMaskBox->setShowSortIndicator(true); m_pMaskBox->setSortingEnabled(true); - connect(m_pMaskBox,SIGNAL(doubleClicked ( KviTalTreeWidgetItem * )),this,SLOT(listViewDoubleClicked( KviTalTreeWidgetItem * ))); + connect(m_pMaskBox,SIGNAL(itemDoubleClicked ( KviTalTreeWidgetItem * )),this,SLOT(itemDoubleClicked( KviTalTreeWidgetItem * ))); g->addWidget(m_pMaskBox,3,0,1,2); m_pRemoveMask = new QPushButton(__tr2qs("Re&move"),this); @@ -317,7 +317,7 @@ void KviMaskEditor::removeMask(KviMaskEntry *e) } } -void KviMaskEditor::listViewDoubleClicked( KviTalTreeWidgetItem * pItem) +void KviMaskEditor::itemDoubleClicked( KviTalTreeWidgetItem * pItem) { if(pItem) { diff --git a/src/kvirc/ui/kvi_maskeditor.h b/src/kvirc/ui/kvi_maskeditor.h index d310a694e..2e2b31a75 100644 --- a/src/kvirc/ui/kvi_maskeditor.h +++ b/src/kvirc/ui/kvi_maskeditor.h @@ -95,7 +95,7 @@ public: protected slots: void removeClicked(); void addClicked(); - void listViewDoubleClicked( KviTalTreeWidgetItem * ); + void itemDoubleClicked( KviTalTreeWidgetItem * ); void searchTextChanged ( const QString & ); signals: void removeMasks(KviMaskEditor *,KviPointerList<KviMaskEntry> *); diff --git a/src/kvirc/ui/kvi_selectors.cpp b/src/kvirc/ui/kvi_selectors.cpp index dfa71f78c..22f14430b 100644 --- a/src/kvirc/ui/kvi_selectors.cpp +++ b/src/kvirc/ui/kvi_selectors.cpp @@ -386,7 +386,7 @@ KviStringListSelector::KviStringListSelector(QWidget * par,const QString & txt,Q : KviTalVBox(par), KviSelectorInterface() { m_pLabel = new QLabel(txt,this); - m_pListBox = new KviTalListBox(this); + m_pListWidget = new KviTalListWidget(this); m_pLineEdit = new QLineEdit(this); connect(m_pLineEdit,SIGNAL(textChanged(const QString &)),this,SLOT(textChanged(const QString &))); connect(m_pLineEdit,SIGNAL(returnPressed()),this,SLOT(addClicked())); @@ -396,11 +396,11 @@ KviStringListSelector::KviStringListSelector(QWidget * par,const QString & txt,Q m_pRemoveButton = new QPushButton(__tr2qs("Re&move"),hBox); connect(m_pRemoveButton,SIGNAL(clicked()),this,SLOT(removeClicked())); m_pOption = pOption; - m_pListBox->insertStringList(*pOption); - m_pListBox->setSelectionMode(KviTalListBox::Extended); - connect(m_pListBox,SIGNAL(selectionChanged()),this,SLOT(selectionChanged())); + m_pListWidget->addItems(*pOption); + m_pListWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); + connect(m_pListWidget,SIGNAL(itemSelectionChanged()),this,SLOT(itemSelectionChanged())); setSpacing(4); - setStretchFactor(m_pListBox,1); + setStretchFactor(m_pListWidget,1); setEnabled(bEnabled); } @@ -408,18 +408,22 @@ KviStringListSelector::~KviStringListSelector() { } -void KviStringListSelector::selectionChanged() +void KviStringListSelector::itemSelectionChanged() { - unsigned int uCount = m_pListBox->count(); - bool bSomeSelected = false; - for(unsigned int u=0;u<uCount;u++) + + //unsigned int uCount = m_pListWidget->count(); + bool bSomeSelected ; + if (m_pListWidget->selectedItems().count()) bSomeSelected = true; + else bSomeSelected = false; + /*for(unsigned int u=0;u<uCount;u++) { - if(m_pListBox->isSelected(u)) + if(m_pListWidget->isSelected(u)) { bSomeSelected = true; break; } } + */ m_pRemoveButton->setEnabled(isEnabled() && bSomeSelected); } @@ -437,27 +441,30 @@ void KviStringListSelector::setEnabled(bool bEnabled) QString txt = m_pLineEdit->text(); txt.trimmed(); m_pAddButton->setEnabled(bEnabled && (txt.length() > 0)); - unsigned int uCount = m_pListBox->count(); - bool bSomeSelected = false; - for(unsigned int u=0;u<uCount;u++) + //unsigned int uCount = m_pListWidget->count(); + bool bSomeSelected; + if (m_pListWidget->selectedItems().count()) bSomeSelected = true; + else bSomeSelected = false; + /*for(unsigned int u=0;u<uCount;u++) { - if(m_pListBox->isSelected(u)) + if(m_pListWidget->isSelected(u)) { bSomeSelected = true; break; } - } + }*/ + m_pRemoveButton->setEnabled(bEnabled && bSomeSelected); - m_pListBox->setEnabled(bEnabled); + m_pListWidget->setEnabled(bEnabled); } void KviStringListSelector::commit() { - unsigned int uCount = m_pListBox->count(); + unsigned int uCount = m_pListWidget->count(); m_pOption->clear(); for(unsigned int u=0;u<uCount;u++) { - QString str = m_pListBox->text(u); + QString str = m_pListWidget->item(u)->text(); str.trimmed(); if(str.length() > 0)m_pOption->append(str); } @@ -467,16 +474,18 @@ void KviStringListSelector::addClicked() { QString str = m_pLineEdit->text(); str.trimmed(); - if(str.length() > 0)m_pListBox->insertItem(str); + if(str.length() > 0)m_pListWidget->insertItem(m_pListWidget->count(),str); m_pLineEdit->setText(""); } void KviStringListSelector::removeClicked() { - unsigned int uCount = m_pListBox->count(); + unsigned int uCount = m_pListWidget->count(); for(unsigned int u=0;u<uCount;u++) { - while(m_pListBox->isSelected(u))m_pListBox->removeItem(u); + while(m_pListWidget->item(u)->isSelected()){ + delete (KviTalListWidgetItem*)m_pListWidget->takeItem(u); + } } } @@ -722,10 +731,13 @@ KviCahnnelListSelector::KviCahnnelListSelector(QWidget * par,const QString & txt : KviTalVBox(par), KviSelectorInterface() { m_pLabel = new QLabel(txt,this); - m_pListView = new KviTalTreeWidget(this); - m_pListView->addColumn(__tr2qs("Channel name")); - m_pListView->addColumn(__tr2qs("Channel password")); - + m_pTreeWidget = new KviTalTreeWidget(this); + m_pTreeWidget->setRootIsDecorated(false); + m_pTreeWidget->setColumnCount(2); + QStringList columnLabels; + columnLabels.append(__tr2qs("Channel name")); + columnLabels.append(__tr2qs("Channel password")); + m_pTreeWidget->setHeaderLabels(columnLabels); KviTalHBox* pEditsHBox = new KviTalHBox(this); m_pChanLineEdit = new QLineEdit(pEditsHBox); @@ -746,14 +758,14 @@ KviCahnnelListSelector::KviCahnnelListSelector(QWidget * par,const QString & txt m_pOption = pOption; for ( QStringList::Iterator it = pOption->begin(); it != pOption->end(); ++it ) { - new KviChanTreeViewItem(m_pListView,(*it).section(':',0,0),(*it).section(':',1)); + new KviChanTreeViewItem(m_pTreeWidget,(*it).section(':',0,0),(*it).section(':',1)); } - m_pListView->setSelectionMode(QAbstractItemView::ExtendedSelection); - m_pListView->setAllColumnsShowFocus(TRUE); - connect(m_pListView,SIGNAL(selectionChanged()),this,SLOT(selectionChanged())); + m_pTreeWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); + m_pTreeWidget->setAllColumnsShowFocus(TRUE); + connect(m_pTreeWidget,SIGNAL(selectionChanged()),this,SLOT(selectionChanged())); setSpacing(4); - setStretchFactor(m_pListView,1); + setStretchFactor(m_pTreeWidget,1); setEnabled(bEnabled); } @@ -765,11 +777,11 @@ void KviCahnnelListSelector::commit() { m_pOption->clear(); register KviChanTreeViewItem* pItem; - for (int i=0;i<m_pListView->topLevelItemCount();i++) + for (int i=0;i<m_pTreeWidget->topLevelItemCount();i++) { - pItem=(KviChanTreeViewItem*)m_pListView->topLevelItem(i); + pItem=(KviChanTreeViewItem*)m_pTreeWidget->topLevelItem(i); m_pOption->append(pItem->text(0)+":"+pItem->pass()); - //KviTalTreeWidgetItemIterator it( m_pListView); + //KviTalTreeWidgetItemIterator it( m_pTreeWidget); //while ( it.current() ) { // pItem = (KviChanTreeViewItem*)( it.current() ); // m_pOption->append(pItem->text(0)+":"+pItem->pass()); @@ -780,7 +792,7 @@ void KviCahnnelListSelector::commit() void KviCahnnelListSelector::setEnabled(bool bEnabled) { m_pLabel->setEnabled(bEnabled); - m_pListView->setEnabled(bEnabled); + m_pTreeWidget->setEnabled(bEnabled); m_pChanLineEdit->setEnabled(bEnabled); m_pPassLineEdit->setEnabled(bEnabled); m_pAddButton->setEnabled(bEnabled); @@ -800,7 +812,7 @@ void KviCahnnelListSelector::addClicked() { if(!m_pChanLineEdit->text().isEmpty()) { - new KviChanTreeViewItem(m_pListView,m_pChanLineEdit->text().trimmed(),m_pPassLineEdit->text().trimmed()); + new KviChanTreeViewItem(m_pTreeWidget,m_pChanLineEdit->text().trimmed(),m_pPassLineEdit->text().trimmed()); m_pChanLineEdit->clear(); m_pPassLineEdit->clear(); } @@ -809,8 +821,8 @@ void KviCahnnelListSelector::addClicked() void KviCahnnelListSelector::removeClicked() { KviPointerList<KviTalTreeWidgetItem> lst; - QList<QTreeWidgetItem *> items=m_pListView->selectedItems () ; - //KviTalTreeWidgetItemIterator it( m_pListView, KviTalTreeWidgetItemIterator::Selected ); + QList<QTreeWidgetItem *> items=m_pTreeWidget->selectedItems () ; + //KviTalTreeWidgetItemIterator it( m_pTreeWidget, KviTalTreeWidgetItemIterator::Selected ); //while ( it.current() ) { for (int i=0;i<items.count();i++) { diff --git a/src/kvirc/ui/kvi_selectors.h b/src/kvirc/ui/kvi_selectors.h index bc2d52111..a26f19269 100644 --- a/src/kvirc/ui/kvi_selectors.h +++ b/src/kvirc/ui/kvi_selectors.h @@ -33,7 +33,7 @@ #include "kvi_tal_hbox.h" #include "kvi_tal_vbox.h" #include "kvi_tal_scrollview.h" -#include "kvi_tal_listbox.h" +#include "kvi_tal_listwidget.h" #include "kvi_tal_treewidget.h" #include <QCheckBox> @@ -267,7 +267,7 @@ public: ~KviStringListSelector(); private: QLabel * m_pLabel; - KviTalListBox * m_pListBox; + KviTalListWidget * m_pListWidget; QLineEdit * m_pLineEdit; QPushButton * m_pAddButton; QPushButton * m_pRemoveButton; @@ -277,7 +277,7 @@ public: virtual void setEnabled(bool bEnabled); private slots: void textChanged(const QString &str); - void selectionChanged(); + void itemSelectionChanged(); void addClicked(); void removeClicked(); }; @@ -345,7 +345,7 @@ public: ~KviCahnnelListSelector(); private: QLabel * m_pLabel; - KviTalTreeWidget * m_pListView; + KviTalTreeWidget * m_pTreeWidget; QLineEdit * m_pChanLineEdit; QLineEdit * m_pPassLineEdit; QPushButton * m_pAddButton; diff --git a/src/modules/dcc/send.cpp b/src/modules/dcc/send.cpp index 3888084a7..30190dd12 100644 --- a/src/modules/dcc/send.cpp +++ b/src/modules/dcc/send.cpp @@ -1388,7 +1388,7 @@ KviDccFileTransfer * KviDccFileTransfer::nonFailedTransferWithLocalFileName(cons { #ifdef COMPILE_ON_WINDOWS // on windows the file names are case insensitive - if(t->localFileName().lower() == szLocalFileName.lower()) + if(t->localFileName().toLower() == szLocalFileName.toLower()) #else if(t->localFileName() == szLocalFileName) #endif diff --git a/src/modules/filetransferwindow/filetransferwindow.cpp b/src/modules/filetransferwindow/filetransferwindow.cpp index 9b468d09e..7f786f312 100644 --- a/src/modules/filetransferwindow/filetransferwindow.cpp +++ b/src/modules/filetransferwindow/filetransferwindow.cpp @@ -462,7 +462,7 @@ void KviFileTransferWindow::openLocalFileTerminal() if(!t)return; QString tmp = t->localFileName(); if(tmp.isEmpty())return; - int idx = tmp.findRev("/"); + int idx = tmp.lastIndexOf("/"); if(idx == -1)return; tmp = tmp.left(idx); tmp.append("\""); @@ -477,7 +477,7 @@ void KviFileTransferWindow::openLocalFileTerminal() QString tmp = t->localFileName(); if(tmp.isEmpty())return; - int idx = tmp.findRev("/"); + int idx = tmp.lastIndexOf("/"); if(idx == -1)return; tmp = tmp.left(idx); @@ -603,7 +603,7 @@ void KviFileTransferWindow::openLocalFileFolder() QString tmp = t->localFileName(); if(tmp.isEmpty())return; - int idx = tmp.findRev("/"); + int idx = tmp.lastIndexOf("/"); if(idx == -1)return; tmp = tmp.left(idx); diff --git a/src/modules/options/dialog.cpp b/src/modules/options/dialog.cpp index 6eaf68a66..9feaf0c7c 100644 --- a/src/modules/options/dialog.cpp +++ b/src/modules/options/dialog.cpp @@ -195,12 +195,12 @@ KviOptionsDialog::KviOptionsDialog(QWidget * par,const QString &szGroup) connect(m_pListView,SIGNAL(selectionChanged(KviTalListViewItem *)),this,SLOT(listViewItemSelectionChanged(KviTalListViewItem *))); KviTalHBox * hbox = new KviTalHBox(vbox); - vbox->setSpacing(2); + vbox->setSpacing(0); vbox->setMargin(0); m_pSearchLineEdit = new QLineEdit(hbox); connect(m_pSearchLineEdit,SIGNAL(returnPressed()),this,SLOT(searchClicked())); - m_pSearchButton = new KviStyledToolButton(hbox); + m_pSearchButton = new QToolButton(hbox); m_pSearchButton->setUsesBigPixmap(false); m_pSearchButton->setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SEARCH))); connect(m_pSearchButton,SIGNAL(clicked()),this,SLOT(searchClicked())); diff --git a/src/modules/options/instances.cpp b/src/modules/options/instances.cpp index 51cd273c6..119149290 100644 --- a/src/modules/options/instances.cpp +++ b/src/modules/options/instances.cpp @@ -3503,7 +3503,11 @@ KviOptionsWidget * KviOptionsInstanceManager::getInstance(KviOptionsWidgetInstan if(e->pWidget->parent() != par) { QWidget * oldPar = (QWidget *)e->pWidget->parent(); - e->pWidget->reparent(par,QPoint(0,0)); + //e->pWidget->reparent(par,QPoint(0,0)); + e->pWidget->setParent(par); + e->pWidget->setGeometry(0,0,e->pWidget->width(),e->pWidget->height()); + // + delete oldPar; } if(e->bIsContainer) diff --git a/src/modules/options/instances.h b/src/modules/options/instances.h index 12f10a42c..55aca0422 100644 --- a/src/modules/options/instances.h +++ b/src/modules/options/instances.h @@ -54,7 +54,7 @@ typedef struct _KviOptionsWidgetInstanceEntry bool bIsContainer; bool bIsNotContained; KviPointerList<KviOptionsWidgetInstanceEntry> * pChildList; - bool bDoInsert; // a helper for KviOptionsDialog::fillListView() + bool bDoInsert; // a helper for KviOptionsDialog::fillTreeWidget() } KviOptionsWidgetInstanceEntry; diff --git a/src/modules/options/libkvioptions.cpp b/src/modules/options/libkvioptions.cpp index cd23e31f6..a26b32f4f 100644 --- a/src/modules/options/libkvioptions.cpp +++ b/src/modules/options/libkvioptions.cpp @@ -103,12 +103,20 @@ static bool options_kvs_cmd_dialog(KviKvsModuleCommandCall * c) { if(d->parent()) { - d->reparent(0,QPoint(0,0),true); + // d->reparent(0,QPoint(0,0),true); + d->setParent(0); + d->setGeometry(0,0,d->width(),d->height()); + // inline QT3_SUPPORT void reparent(QWidget *parent, const QPoint &p, bool showIt=false)
+ //{ setParent(parent, windowFlags() & ~Qt::WindowType_Mask); setGeometry(p.x(),p.y(),width(),height()); if (showIt) show(); }
+ } } else { if(d->parent() != c->window()->frame()->splitter()) { - d->reparent(c->window()->frame()->splitter(),QPoint(0,0),true); + // d->reparent(c->window()->frame()->splitter(),QPoint(0,0),true); + d->setParent(c->window()->frame()->splitter()); + d->setGeometry(0,0,d->width(),d->height()); + d->show(); } } } else { @@ -203,7 +211,7 @@ static bool options_kvs_cmd_edit(KviKvsModuleCommandCall * c) { //c->warning(__tr("The editor page is already open","options")); e->pWidget->raise(); - e->pWidget->setActiveWindow(); + e->pWidget->activateWindow(); e->pWidget->setFocus(); return true; } diff --git a/src/modules/options/options_QT4_vc05.vcproj b/src/modules/options/options_QT4_vc05.vcproj index 49876b10c..1e05435d4 100644 --- a/src/modules/options/options_QT4_vc05.vcproj +++ b/src/modules/options/options_QT4_vc05.vcproj @@ -42,7 +42,7 @@ Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""$(ProjectDir)\..\..\kvirc\ui";"$(ProjectDir)\..\..\kvilib\config";"$(QTDIR)\include";"$(ProjectDir)\..\..\kvilib\core";"$(ProjectDir)\..\..\kvilib\system";"$(ProjectDir)\..\..\kvilib\ext";"$(ProjectDir)\..\..\kvirc\kernel";"$(ProjectDir)\..\..\kvilib\irc";"$(ProjectDir)\..\..\kvilib\file";"$(ProjectDir)\..\..\kvilib\tal";"$(ProjectDir)\..\..\kvirc\module";"$(ProjectDir)\..\..\kvirc\uparser";"$(ProjectDir)\..\..\kvirc\kvs";"$(ProjectDir)\..\..\kvilib\net";"$(QTDIR)\include\Qt3Support";"$(QTDIR)\include\QtCore\";"$(QTDIR)\include\QtGui";"$(QTDIR)\include\Qt";"$(QTDIR)\include\QtNetwork";"$(QTDIR)\include\QtXml";"
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OPTIONS_EXPORTS;_CRT_SECURE_NO_DEPRECATE;QT3_SUPPORT;"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;OPTIONS_EXPORTS;_CRT_SECURE_NO_DEPRECATE;"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
diff --git a/src/modules/options/optw_identity.cpp b/src/modules/options/optw_identity.cpp index 27cd424d0..75ac7e5f0 100644 --- a/src/modules/options/optw_identity.cpp +++ b/src/modules/options/optw_identity.cpp @@ -365,7 +365,7 @@ KviIdentityGeneralOptionsWidget::KviIdentityGeneralOptionsWidget(QWidget * paren i = KVI_OPTION_STRING(KviOption_stringCtcpUserInfoAge).toUInt(&bOk); if(!bOk)i = 0; if(i > 120)i = 120; - m_pAgeCombo->setCurrentItem(i); + m_pAgeCombo->setCurrentIndex(i); hb->setStretchFactor(m_pAgeCombo,1); @@ -479,7 +479,7 @@ KviIdentityAvatarOptionsWidget::KviIdentityAvatarOptionsWidget(QWidget * parent) "The image also should be smaller than 800x600 pixels since<br>" \ "it will have to be viewable in everyone's monitor.","options"); - m_pUseAvatarCheck = new KviStyledCheckBox(__tr2qs_ctx("Use avatar","options"),this); + m_pUseAvatarCheck = new QCheckBox(__tr2qs_ctx("Use avatar","options"),this); addWidgetToLayout(m_pUseAvatarCheck,0,0,0,0); m_pUseAvatarCheck->setChecked(bHaveAvatar); mergeTip(m_pUseAvatarCheck,szTip); diff --git a/src/modules/options/optw_interfacefeatures.cpp b/src/modules/options/optw_interfacefeatures.cpp index a5b4da725..0a8f8f1de 100644 --- a/src/modules/options/optw_interfacefeatures.cpp +++ b/src/modules/options/optw_interfacefeatures.cpp @@ -47,7 +47,7 @@ KviInterfaceFeaturesOptionsWidget::KviInterfaceFeaturesOptionsWidget(QWidget * p QString szSplashDisableFile; g_pApp->getLocalKvircDirectory(szSplashDisableFile,KviApp::Pics,"disable-splash." KVI_VERSION); bool bDisableSplash = KviFileUtils::fileExists(szSplashDisableFile); - m_pDisableSplash = new KviStyledCheckBox(__tr2qs_ctx("Disable splash screen","options"),this); + m_pDisableSplash = new QCheckBox(__tr2qs_ctx("Disable splash screen","options"),this); addWidgetToLayout(m_pDisableSplash,0,3,0,3); m_pDisableSplash->setChecked(bDisableSplash); diff --git a/src/modules/options/optw_ircoutput.cpp b/src/modules/options/optw_ircoutput.cpp index 45a43eb97..fcce3671e 100644 --- a/src/modules/options/optw_ircoutput.cpp +++ b/src/modules/options/optw_ircoutput.cpp @@ -40,18 +40,18 @@ KviIrcOutputOptionsWidget::KviIrcOutputOptionsWidget(QWidget * parent) QLabel * l =new QLabel(__tr2qs_ctx("Output verbosity","options"),this); addWidgetToLayout(l,0,0,0,0); - m_pVerbosityCombo = new QComboBox(false,this); + m_pVerbosityCombo = new QComboBox(this); addWidgetToLayout(m_pVerbosityCombo,1,0,1,0); - m_pVerbosityCombo->insertItem(__tr2qs_ctx("Mute","options")); - m_pVerbosityCombo->insertItem(__tr2qs_ctx("Quiet","options")); - m_pVerbosityCombo->insertItem(__tr2qs_ctx("Normal","options")); - m_pVerbosityCombo->insertItem(__tr2qs_ctx("Verbose","options")); - m_pVerbosityCombo->insertItem(__tr2qs_ctx("Paranoic","options")); + m_pVerbosityCombo->addItem(__tr2qs_ctx("Mute","options")); + m_pVerbosityCombo->addItem(__tr2qs_ctx("Quiet","options")); + m_pVerbosityCombo->addItem(__tr2qs_ctx("Normal","options")); + m_pVerbosityCombo->addItem(__tr2qs_ctx("Verbose","options")); + m_pVerbosityCombo->addItem(__tr2qs_ctx("Paranoic","options")); if(KVI_OPTION_UINT(KviOption_uintOutputVerbosityLevel) > KVI_VERBOSITY_LEVEL_PARANOIC) KVI_OPTION_UINT(KviOption_uintOutputVerbosityLevel) = KVI_VERBOSITY_LEVEL_NORMAL; - m_pVerbosityCombo->setCurrentItem(KVI_OPTION_UINT(KviOption_uintOutputVerbosityLevel)); + m_pVerbosityCombo->setCurrentIndex(KVI_OPTION_UINT(KviOption_uintOutputVerbosityLevel)); KviTalGroupBox * g = addGroupBox(0,1,1,1,Qt::Horizontal,__tr2qs_ctx("Show in active window","options")); addBoolSelector(g,__tr2qs_ctx("External messages","options"),KviOption_boolExternalMessagesToActiveWindow); @@ -83,7 +83,7 @@ void KviIrcOutputOptionsWidget::commit() { KviOptionsWidget::commit(); - int i = m_pVerbosityCombo->currentItem(); + int i = m_pVerbosityCombo->currentIndex(); if((i < 0) || (i > KVI_VERBOSITY_LEVEL_PARANOIC))i = KVI_VERBOSITY_LEVEL_NORMAL; KVI_OPTION_UINT(KviOption_uintOutputVerbosityLevel) = i; } diff --git a/src/modules/options/optw_ircoutput.h b/src/modules/options/optw_ircoutput.h index 41575950a..c9f9fe76f 100644 --- a/src/modules/options/optw_ircoutput.h +++ b/src/modules/options/optw_ircoutput.h @@ -24,7 +24,7 @@ // #include "kvi_optionswidget.h" -#include "kvi_tal_listview.h" + class QComboBox; diff --git a/src/modules/options/optw_mediatypes.cpp b/src/modules/options/optw_mediatypes.cpp index 94c4e1da0..d14c4694c 100644 --- a/src/modules/options/optw_mediatypes.cpp +++ b/src/modules/options/optw_mediatypes.cpp @@ -44,17 +44,17 @@ static void copyMediaType(KviMediaType * dst,const KviMediaType * src) dst->szIcon = src->szIcon; } -KviMediaTypeListViewItem::KviMediaTypeListViewItem(KviTalListView * w,KviMediaType * t) -: KviTalListViewItem(w) +KviMediaTypeTreeWidgetItem::KviMediaTypeTreeWidgetItem(KviTalTreeWidget * w,KviMediaType * t) +: KviTalTreeWidgetItem(w) { copyData(t); } -KviMediaTypeListViewItem::~KviMediaTypeListViewItem() +KviMediaTypeTreeWidgetItem::~KviMediaTypeTreeWidgetItem() { } -void KviMediaTypeListViewItem::copyData(KviMediaType * t) +void KviMediaTypeTreeWidgetItem::copyData(KviMediaType * t) { copyMediaType(&m_data,t); setText(0,m_data.szFileMask.ptr()); @@ -67,16 +67,19 @@ KviMediaTypesOptionsWidget::KviMediaTypesOptionsWidget(QWidget * parent) { createLayout(); - m_pListView = new KviTalListView(this); - m_pListView->addColumn(__tr2qs_ctx("Pattern","options")); - m_pListView->addColumn(__tr2qs_ctx("MIME Type","options")); - m_pListView->addColumn(__tr2qs_ctx("Description","options")); - m_pListView->setAllColumnsShowFocus(true); + m_pTreeWidget = new KviTalTreeWidget(this); + m_pTreeWidget->setColumnCount(3); + QStringList columnLabels; + columnLabels.append(__tr2qs_ctx("Pattern","options")); + columnLabels.append(__tr2qs_ctx("MIME Type","options")); + columnLabels.append(__tr2qs_ctx("Description","options")); + m_pTreeWidget->setHeaderLabels(columnLabels); + m_pTreeWidget->setAllColumnsShowFocus(true); + m_pTreeWidget->setRootIsDecorated(false); + connect(m_pTreeWidget,SIGNAL(currentItemChanged(KviTalTreeWidgetItem *,KviTalTreeWidgetItem *)),this,SLOT(currentItemChanged(KviTalTreeWidgetItem *,KviTalTreeWidgetItem *))); - connect(m_pListView,SIGNAL(currentChanged(KviTalListViewItem *)),this,SLOT(currentItemChanged(KviTalListViewItem *))); - - layout()->addWidget(m_pListView,0,0,1,3); -// layout()->addMultiCellWidget(m_pListView,0,0,0,2); + layout()->addWidget(m_pTreeWidget,0,0,1,3); +// layout()->addMultiCellWidget(m_pTreeWidget,0,0,0,2); QLabel * l = new QLabel(__tr2qs_ctx("Description:","options"),this); layout()->addWidget(l,1,0); @@ -149,22 +152,22 @@ KviMediaTypesOptionsWidget::KviMediaTypesOptionsWidget(QWidget * parent) m_pLastItem = 0; - fillListView(); + fillTreeWidget(); } KviMediaTypesOptionsWidget::~KviMediaTypesOptionsWidget() { } -void KviMediaTypesOptionsWidget::fillListView() +void KviMediaTypesOptionsWidget::fillTreeWidget() { - m_pListView->clear(); + m_pTreeWidget->clear(); g_pMediaManager->lock(); KviPointerList<KviMediaType> * l = g_pMediaManager->mediaTypeList(); - KviMediaTypeListViewItem * it; + KviMediaTypeTreeWidgetItem * it; for(KviMediaType * t = l->first();t;t = l->next()) { - it = new KviMediaTypeListViewItem(m_pListView,t); + it = new KviMediaTypeTreeWidgetItem(m_pTreeWidget,t); } g_pMediaManager->unlock(); enableOrDisable(); @@ -215,13 +218,13 @@ void KviMediaTypesOptionsWidget::setLineEdits() m_pIcon->setText(m_pLastItem ? m_pLastItem->data()->szIcon.ptr() : ""); } -void KviMediaTypesOptionsWidget::currentItemChanged(KviTalListViewItem *it) +void KviMediaTypesOptionsWidget::currentItemChanged(KviTalTreeWidgetItem *it,KviTalTreeWidgetItem *prev) { saveLastItem(); - m_pLastItem = (KviMediaTypeListViewItem *)it; + m_pLastItem = (KviMediaTypeTreeWidgetItem *)it; if(it) { - if(!it->isSelected())m_pListView->setSelected(it,true); + if(!it->isSelected())it->setSelected(true); } setLineEdits(); enableOrDisable(); @@ -231,16 +234,16 @@ void KviMediaTypesOptionsWidget::newMediaType() { KviMediaType empty; empty.szDescription = __tr2qs_ctx("New Media Type","options"); - KviMediaTypeListViewItem * it = new KviMediaTypeListViewItem(m_pListView,&empty); - m_pListView->setCurrentItem(it); - m_pListView->setSelected(it,true); + KviMediaTypeTreeWidgetItem * it = new KviMediaTypeTreeWidgetItem(m_pTreeWidget,&empty); + m_pTreeWidget->setCurrentItem(it); + it->setSelected(true); } void KviMediaTypesOptionsWidget::delMediaType() { if(m_pLastItem) { - KviMediaTypeListViewItem * it = m_pLastItem; + KviMediaTypeTreeWidgetItem * it = m_pLastItem; m_pLastItem = 0; delete it; } @@ -249,15 +252,17 @@ void KviMediaTypesOptionsWidget::delMediaType() void KviMediaTypesOptionsWidget::commit() { saveLastItem(); - KviMediaTypeListViewItem * it = (KviMediaTypeListViewItem *)m_pListView->firstChild(); + KviMediaTypeTreeWidgetItem * it;// = (KviMediaTypeTreeWidgetItem *)m_pTreeWidget->firstChild(); g_pMediaManager->lock(); g_pMediaManager->clear(); - while(it) + //while(it) + for(int i=0;i<m_pTreeWidget->topLevelItemCount();i++) { + it=(KviMediaTypeTreeWidgetItem *)m_pTreeWidget->topLevelItem(i); KviMediaType * t = new KviMediaType; copyMediaType(t,it->data()); g_pMediaManager->insertMediaType(t); - it = (KviMediaTypeListViewItem *)it->nextSibling(); + // it = (KviMediaTypeTreeWidgetItem *)it->nextSibling(); } g_pMediaManager->unlock(); } diff --git a/src/modules/options/optw_mediatypes.h b/src/modules/options/optw_mediatypes.h index 3ec91c12f..b4dafe9f2 100644 --- a/src/modules/options/optw_mediatypes.h +++ b/src/modules/options/optw_mediatypes.h @@ -25,17 +25,17 @@ #include "kvi_optionswidget.h" #include "kvi_mediatype.h" -#include "kvi_tal_listview.h" +#include "kvi_tal_treewidget.h" #include <QLineEdit> #include <QPushButton> -class KviMediaTypeListViewItem : public KviTalListViewItem +class KviMediaTypeTreeWidgetItem : public KviTalTreeWidgetItem { public: - KviMediaTypeListViewItem(KviTalListView * w,KviMediaType * t); - ~KviMediaTypeListViewItem(); + KviMediaTypeTreeWidgetItem(KviTalTreeWidget * w,KviMediaType * t); + ~KviMediaTypeTreeWidgetItem(); private: KviMediaType m_data; public: @@ -57,7 +57,7 @@ public: KviMediaTypesOptionsWidget(QWidget * parent); ~KviMediaTypesOptionsWidget(); private: - KviTalListView * m_pListView; + KviTalTreeWidget * m_pTreeWidget; QLineEdit * m_pDescription; QLineEdit * m_pIanaType; QLineEdit * m_pFileMask; @@ -67,14 +67,14 @@ private: QLineEdit * m_pRemoteExecCommandline; QLineEdit * m_pIcon; QPushButton * m_pDelete; - KviMediaTypeListViewItem * m_pLastItem; + KviMediaTypeTreeWidgetItem * m_pLastItem; private: - void fillListView(); + void fillTreeWidget(); void saveLastItem(); void enableOrDisable(); void setLineEdits(); private slots: - void currentItemChanged(KviTalListViewItem *it); + void currentItemChanged(KviTalTreeWidgetItem *it,KviTalTreeWidgetItem *prev); void newMediaType(); void delMediaType(); public: diff --git a/src/modules/options/optw_messages.cpp b/src/modules/options/optw_messages.cpp index 8b2be8f08..aa70d6d2e 100644 --- a/src/modules/options/optw_messages.cpp +++ b/src/modules/options/optw_messages.cpp @@ -413,7 +413,7 @@ KviMessageColorsOptionsWidget::KviMessageColorsOptionsWidget(QWidget * parent) lbt = new KviTalListBoxText(m_pLevelListBox,tmpn); } - m_pIconButton = new KviStyledToolButton(box); + m_pIconButton = new QToolButton(box); connect(m_pIconButton,SIGNAL(clicked()),this,SLOT(iconButtonClicked())); m_pIconPopup = new KviTalPopupMenu(this); @@ -422,7 +422,7 @@ KviMessageColorsOptionsWidget::KviMessageColorsOptionsWidget(QWidget * parent) m_pIconPopup->insertItem(iw); - m_pEnableLogging = new KviStyledCheckBox(__tr2qs_ctx("Log this","options"),box); + m_pEnableLogging = new QCheckBox(__tr2qs_ctx("Log this","options"),box); KviTalHBox * h = new KviTalHBox(this); addWidgetToLayout(h,0,1,3,1); diff --git a/src/modules/options/optw_nickserv.cpp b/src/modules/options/optw_nickserv.cpp index 864038db4..54b16ef3f 100644 --- a/src/modules/options/optw_nickserv.cpp +++ b/src/modules/options/optw_nickserv.cpp @@ -30,7 +30,7 @@ #include "kvi_nickserv.h" #include "kvi_ircmask.h" #include "kvi_tal_tooltip.h" -#include "kvi_tal_listview.h" +#include "kvi_tal_TreeWidget.h" #include <QLayout> #include <QLineEdit> @@ -51,7 +51,7 @@ KviNickServRuleEditor::KviNickServRuleEditor(QWidget * par,bool bUseServerMaskFi QString html_center_begin = "<center>"; QString html_center_end = "</center>"; - QGridLayout * gl = new QGridLayout(this,bUseServerMaskField ? 7 : 6,4,10,5); + QGridLayout * gl = new QGridLayout(this);//,bUseServerMaskField ? 7 : 6,4,10,5); QLabel * l = new QLabel(__tr2qs_ctx("Registered NickName","options"),this); gl->addWidget(l,0,0); @@ -229,26 +229,28 @@ KviNickServOptionsWidget::KviNickServOptionsWidget(QWidget * parent) KviNickServRuleSet * rs = g_pNickServRuleSet; bool bNickServEnabled = rs ? (rs->isEnabled() && !rs->isEmpty()) : false; - m_pNickServCheck = new KviStyledCheckBox(__tr2qs_ctx("Enable NickServ Identification","options"),this); + m_pNickServCheck = new QCheckBox(__tr2qs_ctx("Enable NickServ Identification","options"),this); gl->addWidget(m_pNickServCheck,0,0,1,3); // gl->addMultiCellWidget(m_pNickServCheck,0,0,0,2); - KviTalToolTip::add(m_pNickServCheck, - __tr2qs_ctx("This check enables the automatic identification with NickServ","options")); + KviTalToolTip::add(m_pNickServCheck,__tr2qs_ctx("This check enables the automatic identification with NickServ","options")); m_pNickServCheck->setChecked(bNickServEnabled); - m_pNickServListView = new KviTalListView(this); - m_pNickServListView->setSelectionMode(KviTalListView::Single); - m_pNickServListView->setAllColumnsShowFocus(true); - m_pNickServListView->addColumn(__tr2qs_ctx("Nickname","options")); - m_pNickServListView->addColumn(__tr2qs_ctx("Server mask","options")); - m_pNickServListView->addColumn(__tr2qs_ctx("NickServ Mask","options")); - m_pNickServListView->addColumn(__tr2qs_ctx("NickServ Request Mask","options")); - m_pNickServListView->addColumn(__tr2qs_ctx("Identify Command","options")); - connect(m_pNickServListView,SIGNAL(selectionChanged()),this,SLOT(enableDisableNickServControls())); + m_pNickServTreeWidget = new KviTalTreeWidget(this); + m_pNickServTreeWidget->setSelectionMode(QAbstractItemView::SingleSelection); + m_pNickServTreeWidget->setAllColumnsShowFocus(true); + QStringList columnLabels; + + columnLabels.append(__tr2qs_ctx("Nickname","options")); + columnLabels.append(__tr2qs_ctx("Server mask","options")); + columnLabels.append(__tr2qs_ctx("NickServ Mask","options")); + columnLabels.append(__tr2qs_ctx("NickServ Request Mask","options")); + columnLabels.append(__tr2qs_ctx("Identify Command","options")); + m_pNickServTreeWidget->setHeaderLabels(columnLabels); + connect(m_pNickServTreeWidget,SIGNAL(itemSelectionChanged()),this,SLOT(enableDisableNickServControls())); - gl->addWidget(m_pNickServListView,1,0,1,3); -// gl->addMultiCellWidget(m_pNickServListView,1,1,0,2); - KviTalToolTip::add(m_pNickServListView, + gl->addWidget(m_pNickServTreeWidget,1,0,1,3); +// gl->addMultiCellWidget(m_pNickServTreeWidget,1,1,0,2); + KviTalToolTip::add(m_pNickServTreeWidget,\ __tr2qs_ctx("<center>This is a list of NickServ identification rules. " \ "KVIrc will use them to model its automatic interaction with NickServ on all the networks.<br>" \ "Please be aware that this feature can cause your NickServ passwords to be stolen " \ @@ -278,7 +280,7 @@ KviNickServOptionsWidget::KviNickServOptionsWidget(QWidget * parent) KviPointerList<KviNickServRule> * ll = rs->rules(); for(KviNickServRule * rule = ll->first();rule;rule = ll->next()) { - (void)new KviTalListViewItem(m_pNickServListView,rule->registeredNick(),rule->serverMask(),rule->nickServMask(),rule->messageRegexp(),rule->identifyCommand()); + (void)new KviTalTreeWidgetItem(m_pNickServTreeWidget,rule->registeredNick(),rule->serverMask(),rule->nickServMask(),rule->messageRegexp(),rule->identifyCommand()); } } @@ -293,7 +295,7 @@ KviNickServOptionsWidget::~KviNickServOptionsWidget() void KviNickServOptionsWidget::editNickServRule() { - KviTalListViewItem * it = m_pNickServListView->currentItem(); + KviTalTreeWidgetItem * it = (KviTalTreeWidgetItem *)m_pNickServTreeWidget->currentItem(); if(!it)return; KviNickServRule r(it->text(0),it->text(2),it->text(3),it->text(4),it->text(1)); KviNickServRuleEditor ed(this,true); @@ -312,12 +314,12 @@ void KviNickServOptionsWidget::addNickServRule() KviNickServRule r; KviNickServRuleEditor ed(this,true); if(ed.editRule(&r)) - (void)new KviTalListViewItem(m_pNickServListView,r.registeredNick(),r.serverMask(),r.nickServMask(),r.messageRegexp(),r.identifyCommand()); + (void)new KviTalTreeWidgetItem(m_pNickServTreeWidget,r.registeredNick(),r.serverMask(),r.nickServMask(),r.messageRegexp(),r.identifyCommand()); } void KviNickServOptionsWidget::delNickServRule() { - KviTalListViewItem * it = m_pNickServListView->currentItem(); + KviTalTreeWidgetItem * it = (KviTalTreeWidgetItem *)m_pNickServTreeWidget->currentItem(); if(!it)return; delete it; enableDisableNickServControls(); @@ -326,9 +328,9 @@ void KviNickServOptionsWidget::delNickServRule() void KviNickServOptionsWidget::enableDisableNickServControls() { bool bEnabled = m_pNickServCheck->isChecked(); - m_pNickServListView->setEnabled(bEnabled); + m_pNickServTreeWidget->setEnabled(bEnabled); m_pAddRuleButton->setEnabled(bEnabled); - bEnabled = bEnabled && (m_pNickServListView->childCount() > 0) && m_pNickServListView->currentItem(); + bEnabled = bEnabled && (m_pNickServTreeWidget->topLevelItemCount()) && m_pNickServTreeWidget->currentItem(); m_pDelRuleButton->setEnabled(bEnabled); m_pEditRuleButton->setEnabled(bEnabled); } @@ -336,14 +338,16 @@ void KviNickServOptionsWidget::enableDisableNickServControls() void KviNickServOptionsWidget::commit() { g_pNickServRuleSet->clear(); - if(m_pNickServListView->childCount() > 0) + if(m_pNickServTreeWidget->topLevelItemCount()) { g_pNickServRuleSet->setEnabled(m_pNickServCheck->isChecked()); - KviTalListViewItem * it = m_pNickServListView->firstChild(); - while(it) + KviTalTreeWidgetItem * it;// = m_pNickServTreeWidget->firstChild(); + for (int i=0;i<m_pNickServTreeWidget->topLevelItemCount();i++) +// while(it) { + it=(KviTalTreeWidgetItem *)m_pNickServTreeWidget->topLevelItem(i); g_pNickServRuleSet->addRule(KviNickServRule::createInstance(it->text(0),it->text(2),it->text(3),it->text(4),it->text(1))); - it = it->nextSibling(); + //it = it->nextSibling(); } } KviOptionsWidget::commit(); diff --git a/src/modules/options/optw_nickserv.h b/src/modules/options/optw_nickserv.h index aa3f43010..8afec3843 100644 --- a/src/modules/options/optw_nickserv.h +++ b/src/modules/options/optw_nickserv.h @@ -35,7 +35,7 @@ class QLineEdit; class QPushButton; class QCheckBox; class KviNickServRule; -class KviTalListView; +class KviTalTreeWidget; #define KVI_OPTIONS_WIDGET_ICON_KviNickServOptionsWidget KVI_SMALLICON_NICKSERV #define KVI_OPTIONS_WIDGET_NAME_KviNickServOptionsWidget __tr2qs_no_lookup("NickServ") @@ -72,7 +72,7 @@ public: KviNickServOptionsWidget(QWidget * parent); ~KviNickServOptionsWidget(); protected: - KviTalListView * m_pNickServListView; + KviTalTreeWidget * m_pNickServTreeWidget; QCheckBox * m_pNickServCheck; QPushButton * m_pAddRuleButton; QPushButton * m_pDelRuleButton; diff --git a/src/modules/options/optw_proxy.cpp b/src/modules/options/optw_proxy.cpp index 67ad78039..5f83ed9b2 100644 --- a/src/modules/options/optw_proxy.cpp +++ b/src/modules/options/optw_proxy.cpp @@ -29,7 +29,7 @@ #include "kvi_netutils.h" #include "kvi_settings.h" #include "kvi_options.h" -#include "kvi_styled_controls.h" +//#include "kvi_styled_controls.h" #include <kvi_tal_groupbox.h> #include "kvi_tal_popupmenu.h" #include "kvi_tal_tooltip.h" @@ -40,16 +40,17 @@ #include <QCheckBox> #include <QCursor> #include <QToolButton> +#include <QIcon> -KviProxyOptionsListViewItem::KviProxyOptionsListViewItem(KviTalListView *parent,const QPixmap &pm,KviProxy * prx) -: KviTalListViewItem(parent,prx->m_szHostname.ptr()) +KviProxyOptionsTreeWidgetItem::KviProxyOptionsTreeWidgetItem(KviTalTreeWidget *parent,const QPixmap &pm,KviProxy * prx) +: KviTalTreeWidgetItem(parent,prx->m_szHostname.ptr()) { - setPixmap(0,pm); + setIcon(0,QIcon(pm)); m_pProxyData = new KviProxy(*prx); } -KviProxyOptionsListViewItem::~KviProxyOptionsListViewItem() +KviProxyOptionsTreeWidgetItem::~KviProxyOptionsTreeWidgetItem() { delete m_pProxyData; } @@ -61,34 +62,35 @@ KviProxyOptionsWidget::KviProxyOptionsWidget(QWidget * parent) addBoolSelector(0,0,1,0,__tr2qs_ctx("Use proxy","options"),KviOption_boolUseProxyHost); - m_pListView = new KviTalListView(this); - addWidgetToLayout(m_pListView,0,1,0,1); - m_pListView->addColumn(__tr2qs_ctx("Proxy","options")); - m_pListView->setRootIsDecorated(true); - m_pListView->setAllColumnsShowFocus(true); - m_pListView->setSelectionMode(KviTalListView::Single); + m_pTreeWidget = new KviTalTreeWidget(this); + addWidgetToLayout(m_pTreeWidget,0,1,0,1); + m_pTreeWidget->addColumn(__tr2qs_ctx("Proxy","options")); + m_pTreeWidget->setRootIsDecorated(true); + m_pTreeWidget->setAllColumnsShowFocus(true); + m_pTreeWidget->setSelectionMode(QAbstractItemView::SingleSelection); - connect(m_pListView,SIGNAL(selectionChanged(KviTalListViewItem *)), - this,SLOT(listViewItemSelectionChanged(KviTalListViewItem *))); - connect(m_pListView,SIGNAL(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)), - this,SLOT(listViewRightButtonPressed(KviTalListViewItem *,const QPoint &,int))); + connect(m_pTreeWidget,SIGNAL(currentItemChanged(KviTalTreeWidgetItem *,KviTalTreeWidgetItem *)), + this,SLOT(currentItemChanged(KviTalTreeWidgetItem *,KviTalTreeWidgetItem *))); + m_pTreeWidget->setContextMenuPolicy(Qt::CustomContextMenu); + connect(m_pTreeWidget,SIGNAL(customContextMenuRequested(const QPoint &)), + this,SLOT(customContextMenuRequested(const QPoint &))); QString tiptxt = __tr2qs_ctx("<center>This is the list of available proxy servers.<br>" \ "Right-click on the list to add or remove proxies.</center>","options"); - mergeTip(m_pListView,tiptxt); - mergeTip(m_pListView->viewport(),tiptxt); + mergeTip(m_pTreeWidget,tiptxt); + mergeTip(m_pTreeWidget->viewport(),tiptxt); KviTalVBox * vbox = new KviTalVBox(this); addWidgetToLayout(vbox,1,1,1,1); - QToolButton * tb = new KviStyledToolButton(vbox); - tb->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PROXY))); + QToolButton * tb = new QToolButton(vbox); + tb->setIcon(QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PROXY)))); tb->setAutoRaise(true); connect(tb,SIGNAL(clicked()),this,SLOT(newProxy())); mergeTip(tb,__tr2qs_ctx("New Proxy","options")); - tb = new KviStyledToolButton(vbox); - tb->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CUT))); + tb = new QToolButton(vbox); + tb->setIcon(QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CUT)))); //tb->setEnabled(false); tb->setAutoRaise(true); connect(tb,SIGNAL(clicked()),this,SLOT(removeCurrent())); @@ -114,14 +116,14 @@ KviProxyOptionsWidget::KviProxyOptionsWidget(QWidget * parent) m_pPassLabel = new QLabel(__tr2qs_ctx("Password:","options"),gbox); m_pPassEdit = new QLineEdit(gbox); m_pProtocolLabel = new QLabel(__tr2qs_ctx("Protocol:","options"),gbox); - m_pProtocolBox = new QComboBox(false,gbox); + m_pProtocolBox = new QComboBox(gbox); QStringList l; KviProxy::getSupportedProtocolNames(l); - m_pProtocolBox->insertStringList(l); + m_pProtocolBox->addItems(l); - m_pIpV6Check = new KviStyledCheckBox(__tr2qs_ctx("Use IPv6 protocol","options"),gbox); + m_pIpV6Check = new QCheckBox(__tr2qs_ctx("Use IPv6 protocol","options"),gbox); connect(m_pIpV6Check,SIGNAL(toggled(bool)),this,SLOT(ipV6CheckToggled(bool))); #ifndef COMPILE_IPV6_SUPPORT m_pIpV6Check->setEnabled(false); @@ -148,26 +150,26 @@ void KviProxyOptionsWidget::ipV6CheckToggled(bool bEnabled) void KviProxyOptionsWidget::fillProxyList() { - KviProxyOptionsListViewItem * prx; + KviProxyOptionsTreeWidgetItem * prx; KviPointerList<KviProxy> * l = g_pProxyDataBase->proxyList(); for(KviProxy * p = l->first();p;p = l->next()) { - prx = new KviProxyOptionsListViewItem(m_pListView,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PROXY)),p); + prx = new KviProxyOptionsTreeWidgetItem(m_pTreeWidget,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PROXY)),p); if(p == g_pProxyDataBase->currentProxy()) { - m_pListView->setSelected(prx,true); - m_pListView->ensureItemVisible(prx); + prx->setSelected(true); + m_pTreeWidget->scrollToItem(prx); } } - if(!(g_pProxyDataBase->currentProxy()))listViewItemSelectionChanged(0); + if(!(g_pProxyDataBase->currentProxy()))currentItemChanged(0,0); } -void KviProxyOptionsWidget::listViewItemSelectionChanged(KviTalListViewItem *it) +void KviProxyOptionsWidget::currentItemChanged(KviTalTreeWidgetItem *it,KviTalTreeWidgetItem *prev) { if(m_pLastEditedItem)saveLastItem(); - m_pLastEditedItem = (KviProxyOptionsListViewItem *)it; + m_pLastEditedItem = (KviProxyOptionsTreeWidgetItem *)it; m_pProxyLabel->setEnabled(m_pLastEditedItem); m_pProxyEdit->setEnabled(m_pLastEditedItem); @@ -193,10 +195,10 @@ void KviProxyOptionsWidget::listViewItemSelectionChanged(KviTalListViewItem *it) for(int i=0;i<m_pProtocolBox->count();i++) { - KviStr txt = m_pProtocolBox->text(i); + KviStr txt = m_pProtocolBox->itemText(i); if(kvi_strEqualCI(m_pLastEditedItem->m_pProxyData->protocolName(),txt.ptr())) { - m_pProtocolBox->setCurrentItem(i); + m_pProtocolBox->setCurrentIndex(i); break; } } @@ -288,18 +290,21 @@ void KviProxyOptionsWidget::commit() { saveLastItem(); g_pProxyDataBase->clear(); - KviProxyOptionsListViewItem * it = (KviProxyOptionsListViewItem *)m_pListView->firstChild(); - while(it) + KviProxyOptionsTreeWidgetItem * it;// = (KviProxyOptionsTreeWidgetItem *)m_pTreeWidget->topLevelItemCount(); + + //while(it) + for(int i=0;i<m_pTreeWidget->topLevelItemCount();i++) { - KviStr tmp = it->text(0); - if(tmp.hasData()) + it=(KviProxyOptionsTreeWidgetItem *)m_pTreeWidget->topLevelItem(i); + QString tmp = it->text(0); + if(!tmp.isEmpty()) { - KviProxy * prx = new KviProxy(*(((KviProxyOptionsListViewItem *)it)->m_pProxyData)); + KviProxy * prx = new KviProxy(*(((KviProxyOptionsTreeWidgetItem *)it)->m_pProxyData)); g_pProxyDataBase->insertProxy(prx); if(it == m_pLastEditedItem)g_pProxyDataBase->setCurrentProxy(prx); } - it = (KviProxyOptionsListViewItem *)it->nextSibling(); + //it = (KviProxyOptionsTreeWidgetItem *)it->nextSibling(); } if(g_pProxyDataBase->currentProxy() == 0) @@ -310,8 +315,9 @@ void KviProxyOptionsWidget::commit() KviOptionsWidget::commit(); } -void KviProxyOptionsWidget::listViewRightButtonPressed(KviTalListViewItem *it,const QPoint &pnt,int col) +void KviProxyOptionsWidget::customContextMenuRequested(const QPoint &pos) { + KviTalTreeWidgetItem *it=(KviTalTreeWidgetItem *)m_pTreeWidget->itemAt(pos); m_pContextPopup->clear(); m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PROXY)),__tr2qs_ctx("&New Proxy","options"),this,SLOT(newProxy())); m_pContextPopup->setItemEnabled(m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CUT)),__tr2qs_ctx("Re&move Proxy","options"),this,SLOT(removeCurrent())),it); @@ -321,9 +327,9 @@ void KviProxyOptionsWidget::listViewRightButtonPressed(KviTalListViewItem *it,co void KviProxyOptionsWidget::newProxy() { KviProxy prx; - KviProxyOptionsListViewItem * it = new KviProxyOptionsListViewItem(m_pListView,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PROXY)),&prx); - m_pListView->setSelected(it,true); - m_pListView->ensureItemVisible(it); + KviProxyOptionsTreeWidgetItem * it = new KviProxyOptionsTreeWidgetItem(m_pTreeWidget,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PROXY)),&prx); + it->setSelected(true); + m_pTreeWidget->scrollToItem(it); } void KviProxyOptionsWidget::removeCurrent() @@ -332,13 +338,13 @@ void KviProxyOptionsWidget::removeCurrent() { delete m_pLastEditedItem; m_pLastEditedItem = 0; - KviTalListViewItem * it = m_pListView->firstChild(); + KviTalTreeWidgetItem * it = (KviTalTreeWidgetItem *)m_pTreeWidget->topLevelItem(0); if(it) { - m_pListView->setSelected(it,true); - m_pListView->ensureItemVisible(it); + it->setSelected(true); + //m_pTreeWidget->ensureItemVisible(it); } else { - listViewItemSelectionChanged(0); + currentItemChanged(0,0); } } } diff --git a/src/modules/options/optw_proxy.h b/src/modules/options/optw_proxy.h index 143957973..9f6ced14f 100644 --- a/src/modules/options/optw_proxy.h +++ b/src/modules/options/optw_proxy.h @@ -24,7 +24,7 @@ // #include "kvi_optionswidget.h" -#include "kvi_tal_listview.h" +#include "kvi_tal_treewidget.h" class QLabel; class QLineEdit; @@ -37,11 +37,11 @@ class KviProxyDataBase; extern KVIRC_API KviProxyDataBase * g_pProxyDataBase; -class KviProxyOptionsListViewItem : public KviTalListViewItem +class KviProxyOptionsTreeWidgetItem : public KviTalTreeWidgetItem { public: - KviProxyOptionsListViewItem(KviTalListView *parent,const QPixmap &pm,KviProxy * prx); - ~KviProxyOptionsListViewItem(); + KviProxyOptionsTreeWidgetItem(KviTalTreeWidget *parent,const QPixmap &pm,KviProxy * prx); + ~KviProxyOptionsTreeWidgetItem(); public: KviProxy * m_pProxyData; }; @@ -60,7 +60,7 @@ public: KviProxyOptionsWidget(QWidget * parent); ~KviProxyOptionsWidget(); protected: - KviTalListView * m_pListView; + KviTalTreeWidget * m_pTreeWidget; QLabel * m_pProxyLabel; QLineEdit * m_pProxyEdit; QLabel * m_pIpLabel; @@ -75,14 +75,14 @@ protected: QComboBox * m_pProtocolBox; KviTalPopupMenu * m_pContextPopup; QCheckBox * m_pIpV6Check; - KviProxyOptionsListViewItem * m_pLastEditedItem; + KviProxyOptionsTreeWidgetItem * m_pLastEditedItem; private: void fillProxyList(); void saveLastItem(); protected slots: - void listViewItemSelectionChanged(KviTalListViewItem *it); - void listViewRightButtonPressed(KviTalListViewItem *it,const QPoint &pnt,int col); + void currentItemChanged(KviTalTreeWidgetItem *it,KviTalTreeWidgetItem *prev); + void customContextMenuRequested(const QPoint &pnt); void newProxy(); void removeCurrent(); void ipV6CheckToggled(bool bEnabled); diff --git a/src/modules/options/optw_servers.cpp b/src/modules/options/optw_servers.cpp index 61175c157..972df5712 100644 --- a/src/modules/options/optw_servers.cpp +++ b/src/modules/options/optw_servers.cpp @@ -63,11 +63,14 @@ #include <QComboBox> #include <QButtonGroup> #include <QInputDialog> +#include <QIcon> KviNetworkDetailsWidget::KviNetworkDetailsWidget(QWidget * par,KviIrcNetwork * n) - : QDialog(par,"network_details",true) + : QDialog(par) { + setModal(true); + setObjectName("network_details"); m_pOnConnectEditor=0; m_pOnLoginEditor=0; @@ -81,7 +84,7 @@ KviNetworkDetailsWidget::KviNetworkDetailsWidget(QWidget * par,KviIrcNetwork * n m_pAutoConnectCheck=0; - m_pNickServListView=0; + m_pNickServTreeWidget=0; m_pNickServCheck=0; m_pAddRuleButton=0; m_pDelRuleButton=0; @@ -92,7 +95,7 @@ KviNetworkDetailsWidget::KviNetworkDetailsWidget(QWidget * par,KviIrcNetwork * n QGridLayout * g = new QGridLayout(this); setWindowTitle(__tr2qs_ctx("Network Details","options")); - setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD))); + setWindowIcon(QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD)))); QString szTmp = "<font size=\"+1\"><b>"; szTmp += n->name(); @@ -138,7 +141,7 @@ KviNetworkDetailsWidget::KviNetworkDetailsWidget(QWidget * par,KviIrcNetwork * n l = new QLabel(__tr2qs_ctx("Nickname:","options"),gbox); m_pNickEditor = new QLineEdit(gbox); - QValidator * v = new QRegExpValidator(QRegExp("[^-0-9 ][^ ]*","options"),gbox); + QValidator * v = new QRegExpValidator(QRegExp("[^-0-9 ][^ ]*",Qt::CaseSensitive),gbox); m_pNickEditor->setValidator(v); m_pNickEditor->setText(n->nickName()); KviTalToolTip::add(m_pNickEditor,__tr2qs_ctx("<center>You can specify a \"special\" <b>nickname</b> that will be used to log in to the servers on this network.<br>" \ @@ -152,7 +155,7 @@ KviNetworkDetailsWidget::KviNetworkDetailsWidget(QWidget * par,KviIrcNetwork * n l = new QLabel(__tr2qs_ctx("Encoding:","options"),tab); gl->addWidget(l,1,0); - m_pEncodingEditor = new QComboBox(false,tab); + m_pEncodingEditor = new QComboBox(tab); m_pEncodingEditor->setDuplicatesEnabled(false); gl->addWidget(m_pEncodingEditor,1,1); KviTalToolTip::add(m_pEncodingEditor,__tr2qs_ctx("<center>This box allows you to choose the preferred encoding for the servers in this network. " \ @@ -163,19 +166,19 @@ KviNetworkDetailsWidget::KviNetworkDetailsWidget(QWidget * par,KviIrcNetwork * n int current = 0; KviLocale::EncodingDescription * d = KviLocale::encodingDescription(i); QString tmp; - m_pEncodingEditor->insertItem(__tr2qs_ctx("Use System Encoding","options")); + m_pEncodingEditor->addItem(__tr2qs_ctx("Use System Encoding","options")); while(d->szName) { KviQString::sprintf(tmp,"%s (%s)",d->szName,d->szDescription); - m_pEncodingEditor->insertItem(tmp); + m_pEncodingEditor->insertItem(m_pEncodingEditor->count(),tmp); if(KviQString::equalCI(d->szName,n->encoding()))current = i + 1; i = i + 1; d = KviLocale::encodingDescription(i); } - m_pEncodingEditor->setCurrentItem(current); + m_pEncodingEditor->setCurrentIndex(current); - m_pAutoConnectCheck = new KviStyledCheckBox(__tr2qs_ctx("Connect to this network at startup","options"),tab); + m_pAutoConnectCheck = new QCheckBox(__tr2qs_ctx("Connect to this network at startup","options"),tab); m_pAutoConnectCheck->setChecked(n->autoConnect()); gl->addWidget(m_pAutoConnectCheck,2,0,1,2); // gl->addMultiCellWidget(m_pAutoConnectCheck,2,2,0,1); @@ -250,24 +253,27 @@ KviNetworkDetailsWidget::KviNetworkDetailsWidget(QWidget * par,KviIrcNetwork * n KviNickServRuleSet * rs = n->nickServRuleSet(); bool bNickServEnabled = rs ? (rs->isEnabled() && !rs->isEmpty()) : false; - m_pNickServCheck = new KviStyledCheckBox(__tr2qs_ctx("Enable NickServ Identification","options"),tab); + m_pNickServCheck = new QCheckBox(__tr2qs_ctx("Enable NickServ Identification","options"),tab); gl->addWidget(m_pNickServCheck,0,0,1,3); // gl->addMultiCellWidget(m_pNickServCheck,0,0,0,2); KviTalToolTip::add(m_pNickServCheck, __tr2qs_ctx("This check enables the automatic identification with NickServ","options")); m_pNickServCheck->setChecked(bNickServEnabled); - m_pNickServListView = new KviTalListView(tab); - m_pNickServListView->setSelectionMode(KviTalListView::Single); - m_pNickServListView->setAllColumnsShowFocus(true); - m_pNickServListView->addColumn(__tr2qs_ctx("Nickname","options")); - m_pNickServListView->addColumn(__tr2qs_ctx("NickServ Mask","options")); - m_pNickServListView->addColumn(__tr2qs_ctx("NickServ Request Mask","options")); - m_pNickServListView->addColumn(__tr2qs_ctx("Identify Command","options")); - connect(m_pNickServListView,SIGNAL(selectionChanged()),this,SLOT(enableDisableNickServControls())); - gl->addWidget(m_pNickServListView,1,0,1,3); -//// gl->addMultiCellWidget(m_pNickServListView,1,1,0,2); - KviTalToolTip::add(m_pNickServListView, + m_pNickServTreeWidget = new KviTalTreeWidget(tab); + m_pNickServTreeWidget->setSelectionMode(QAbstractItemView::SingleSelection); + m_pNickServTreeWidget->setAllColumnsShowFocus(true); + m_pNickServTreeWidget->setColumnCount(4); + QStringList columnLabels; + columnLabels.append(__tr2qs_ctx("Nickname","options")); + columnLabels.append(__tr2qs_ctx("NickServ Mask","options")); + columnLabels.append(__tr2qs_ctx("NickServ Request Mask","options")); + columnLabels.append(__tr2qs_ctx("Identify Command","options")); + m_pNickServTreeWidget->setHeaderLabels(columnLabels); + connect(m_pNickServTreeWidget,SIGNAL(itemSelectionChanged()),this,SLOT(enableDisableNickServControls())); + gl->addWidget(m_pNickServTreeWidget,1,0,1,3); +//// gl->addMultiCellWidget(m_pNickServTreeWidget,1,1,0,2); + KviTalToolTip::add(m_pNickServTreeWidget, __tr2qs_ctx("<center>This is a list of NickServ identification rules. " \ "KVIrc will use them to model its automatic interaction with NickServ on this network.<br>" \ "Please be aware that this feature can cause your NickServ passwords to be stolen " \ @@ -295,7 +301,7 @@ KviNetworkDetailsWidget::KviNetworkDetailsWidget(QWidget * par,KviIrcNetwork * n KviPointerList<KviNickServRule> * ll = rs->rules(); for(KviNickServRule * rule = ll->first();rule;rule = ll->next()) { - (void)new KviTalListViewItem(m_pNickServListView,rule->registeredNick(),rule->nickServMask(),rule->messageRegexp(),rule->identifyCommand()); + (void)new KviTalTreeWidgetItem(m_pNickServTreeWidget,rule->registeredNick(),rule->nickServMask(),rule->messageRegexp(),rule->identifyCommand()); } } @@ -331,7 +337,7 @@ KviNetworkDetailsWidget::~KviNetworkDetailsWidget() void KviNetworkDetailsWidget::editNickServRule() { - KviTalListViewItem * it = m_pNickServListView->currentItem(); + KviTalTreeWidgetItem * it = (KviTalTreeWidgetItem *) m_pNickServTreeWidget->currentItem(); if(!it)return; KviNickServRule r(it->text(0),it->text(1),it->text(2),it->text(3)); KviNickServRuleEditor ed(this,false); @@ -349,12 +355,12 @@ void KviNetworkDetailsWidget::addNickServRule() KviNickServRule r; KviNickServRuleEditor ed(this,false); if(ed.editRule(&r)) - (void)new KviTalListViewItem(m_pNickServListView,r.registeredNick(),r.nickServMask(),r.messageRegexp(),r.identifyCommand()); + (void)new KviTalTreeWidgetItem(m_pNickServTreeWidget,r.registeredNick(),r.nickServMask(),r.messageRegexp(),r.identifyCommand()); } void KviNetworkDetailsWidget::delNickServRule() { - KviTalListViewItem * it = m_pNickServListView->currentItem(); + KviTalTreeWidgetItem * it = (KviTalTreeWidgetItem *)m_pNickServTreeWidget->currentItem(); if(!it)return; delete it; enableDisableNickServControls(); @@ -363,9 +369,9 @@ void KviNetworkDetailsWidget::delNickServRule() void KviNetworkDetailsWidget::enableDisableNickServControls() { bool bEnabled = m_pNickServCheck->isChecked(); - m_pNickServListView->setEnabled(bEnabled); + m_pNickServTreeWidget->setEnabled(bEnabled); m_pAddRuleButton->setEnabled(bEnabled); - bEnabled = bEnabled && (m_pNickServListView->childCount() > 0) && m_pNickServListView->currentItem(); + bEnabled = bEnabled && (m_pNickServTreeWidget->topLevelItemCount()) && m_pNickServTreeWidget->currentItem(); m_pDelRuleButton->setEnabled(bEnabled); m_pEditRuleButton->setEnabled(bEnabled); } @@ -379,26 +385,28 @@ void KviNetworkDetailsWidget::fillData(KviIrcNetwork * n) if(m_pAutoConnectCheck) n->setAutoConnect(m_pAutoConnectCheck->isChecked()); if(m_pEncodingEditor) - if(m_pEncodingEditor->currentItem() <= 0)n->setEncoding(QString::null); + if(m_pEncodingEditor->currentIndex() <= 0)n->setEncoding(QString::null); else { - KviLocale::EncodingDescription * d = KviLocale::encodingDescription(m_pEncodingEditor->currentItem() - 1); + KviLocale::EncodingDescription * d = KviLocale::encodingDescription(m_pEncodingEditor->currentIndex() - 1); n->setEncoding(d->szName); } if(m_pChannelListSelector) m_pChannelListSelector->commit(); if(m_lstChannels.isEmpty())n->setAutoJoinChannelList(0); else n->setAutoJoinChannelList(new QStringList(m_lstChannels)); - if(m_pNickServListView) + if(m_pNickServTreeWidget) { - if(m_pNickServListView->childCount() > 0) + if(m_pNickServTreeWidget->topLevelItemCount() > 0) { KviNickServRuleSet * rs = KviNickServRuleSet::createInstance(); rs->setEnabled(m_pNickServCheck->isChecked()); - KviTalListViewItem * it = m_pNickServListView->firstChild(); - while(it) + KviTalTreeWidgetItem * it;// = (KviTalTreeWidgetItem *)m_pNickServTreeWidget->firstChild(); + for (int i=0;i<m_pNickServTreeWidget->topLevelItemCount();i++) + //while(it) { + it=(KviTalTreeWidgetItem *) m_pNickServTreeWidget->topLevelItem(i); rs->addRule(KviNickServRule::createInstance(it->text(0),it->text(1),it->text(2),it->text(3))); - it = it->nextSibling(); + // it = it->nextSibling(); } n->setNickServRuleSet(rs); } else n->setNickServRuleSet(0); @@ -419,13 +427,15 @@ void KviNetworkDetailsWidget::fillData(KviIrcNetwork * n) KviServerDetailsWidget::KviServerDetailsWidget(QWidget * par,KviIrcServer * s) - : QDialog(par,"server_details",true) + : QDialog(par)//,"server_details",true) { + setModal(true); + setObjectName("server_details"); m_szHostname = s->hostName(); QGridLayout * g = new QGridLayout(this); setWindowTitle(__tr2qs_ctx("Server Details","options")); - setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER))); + setWindowIcon(QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)))); m_pHeaderLabel = new QLabel("",this); // the text will be set later m_pHeaderLabel->setFrameStyle(QFrame::Raised | QFrame::StyledPanel); @@ -488,7 +498,7 @@ KviServerDetailsWidget::KviServerDetailsWidget(QWidget * par,KviIrcServer * s) gbox = new KviTalGroupBox(Qt::Horizontal,__tr2qs_ctx("User Mode","options"),tab); gl->addWidget(gbox,1,0); - m_pUseDefaultInitUMode = new KviStyledCheckBox(__tr2qs_ctx("Use default user mode","options"),gbox); + m_pUseDefaultInitUMode = new QCheckBox(__tr2qs_ctx("Use default user mode","options"),gbox); KviTalToolTip::add(m_pUseDefaultInitUMode,__tr2qs_ctx("<center>If this is enabled, the global initial <b>user mode</b> (configured from"\ " the identity dialog) will be used. If disabled, you can configure an initial user mode for this server","options")); bool bHasUmode = !(s->initUMode().isEmpty()); @@ -496,17 +506,17 @@ KviServerDetailsWidget::KviServerDetailsWidget(QWidget * par,KviIrcServer * s) m_pUseDefaultInitUMode->setChecked(!bHasUmode); connect(m_pUseDefaultInitUMode,SIGNAL(toggled(bool)),this,SLOT(useDefaultInitUModeToggled(bool))); - m_pIMode = new KviStyledCheckBox(__tr2qs_ctx("Invisible (+i)","options"),gbox); + m_pIMode = new QCheckBox(__tr2qs_ctx("Invisible (+i)","options"),gbox); m_pIMode->setEnabled(bHasUmode); - m_pIMode->setChecked(bHasUmode ? s->initUMode().contains('i',false) : szDefUMode.contains('i',false)); + m_pIMode->setChecked(bHasUmode ? s->initUMode().contains('i',Qt::CaseInsensitive) : szDefUMode.contains('i',Qt::CaseInsensitive)); - m_pSMode = new KviStyledCheckBox(__tr2qs_ctx("Server notices (+s)","options"),gbox); + m_pSMode = new QCheckBox(__tr2qs_ctx("Server notices (+s)","options"),gbox); m_pSMode->setEnabled(bHasUmode); - m_pSMode->setChecked(bHasUmode ? s->initUMode().contains('s',false) : szDefUMode.contains('s',false)); + m_pSMode->setChecked(bHasUmode ? s->initUMode().contains('s',Qt::CaseInsensitive) : szDefUMode.contains('s',Qt::CaseInsensitive)); - m_pWMode = new KviStyledCheckBox(__tr2qs_ctx("Wallops (+w)","options"),gbox); + m_pWMode = new QCheckBox(__tr2qs_ctx("Wallops (+w)","options"),gbox); m_pWMode->setEnabled(bHasUmode); - m_pWMode->setChecked(bHasUmode ? s->initUMode().contains('w',false) : szDefUMode.contains('w',false)); + m_pWMode->setChecked(bHasUmode ? s->initUMode().contains('w',Qt::CaseInsensitive) : szDefUMode.contains('w',Qt::CaseInsensitive)); l = new QLabel("",tab); gl->addWidget(l,2,0); @@ -558,7 +568,7 @@ KviServerDetailsWidget::KviServerDetailsWidget(QWidget * par,KviIrcServer * s) #endif } - m_pCacheIpCheck = new KviStyledCheckBox(__tr2qs_ctx("Cache IP address","options"),tab); + m_pCacheIpCheck = new QCheckBox(__tr2qs_ctx("Cache IP address","options"),tab); gl->addWidget(m_pCacheIpCheck,2,0,1,2); // gl->addMultiCellWidget(m_pCacheIpCheck,2,2,0,1); KviTalToolTip::add(m_pCacheIpCheck,__tr2qs_ctx("<center>This check will enable <b>IP address caching</b> for this server:<br>" \ @@ -570,7 +580,7 @@ KviServerDetailsWidget::KviServerDetailsWidget(QWidget * par,KviIrcServer * s) m_pCacheIpCheck->setChecked(s->cacheIp()); - m_pUseIPV6Check = new KviStyledCheckBox(__tr2qs_ctx("Use IPv6 protocol","options"),tab); + m_pUseIPV6Check = new QCheckBox(__tr2qs_ctx("Use IPv6 protocol","options"),tab); gl->addWidget(m_pUseIPV6Check,3,0,1,2); // gl->addMultiCellWidget(m_pUseIPV6Check,3,3,0,1); #ifdef COMPILE_IPV6_SUPPORT @@ -583,7 +593,7 @@ KviServerDetailsWidget::KviServerDetailsWidget(QWidget * par,KviIrcServer * s) KviTalToolTip::add(m_pUseIPV6Check,__tr2qs_ctx("<center>This check identifies IPv6 servers.<br>If enabled, KVIrc will attempt to use the IPv6 protocol " \ "(thus your OS <b>must</b> have a working IPv6 stack and you <b>must</b> have an IPv6 connection).</center>","options")); - m_pUseSSLCheck = new KviStyledCheckBox(__tr2qs_ctx("Use SSL protocol","options"),tab); + m_pUseSSLCheck = new QCheckBox(__tr2qs_ctx("Use SSL protocol","options"),tab); gl->addWidget(m_pUseSSLCheck,4,0,1,2); // gl->addMultiCellWidget(m_pUseSSLCheck,4,4,0,1); KviTalToolTip::add(m_pUseSSLCheck,__tr2qs_ctx("<center>This check will cause the connection to use the <b>Secure Socket Layer</b> " \ @@ -594,7 +604,7 @@ KviServerDetailsWidget::KviServerDetailsWidget(QWidget * par,KviIrcServer * s) m_pUseSSLCheck->setChecked(s->useSSL()); - m_pUseAutoConnect = new KviStyledCheckBox(__tr2qs_ctx("Connect to this server at startup","options"),tab); + m_pUseAutoConnect = new QCheckBox(__tr2qs_ctx("Connect to this server at startup","options"),tab); m_pUseAutoConnect->setChecked(s->autoConnect()); gl->addWidget(m_pUseAutoConnect,5,0,1,2); @@ -603,7 +613,7 @@ KviServerDetailsWidget::KviServerDetailsWidget(QWidget * par,KviIrcServer * s) l = new QLabel(__tr2qs_ctx("Encoding:","options"),tab); gl->addWidget(l,6,0); - m_pEncodingEditor = new QComboBox(false,tab); + m_pEncodingEditor = new QComboBox(tab); m_pEncodingEditor->setDuplicatesEnabled(false); gl->addWidget(m_pEncodingEditor,6,1); KviTalToolTip::add(m_pEncodingEditor,__tr2qs_ctx("<center>This box allows you to choose the preferred encoding for this sever. " \ @@ -614,26 +624,27 @@ KviServerDetailsWidget::KviServerDetailsWidget(QWidget * par,KviIrcServer * s) int current = 0; KviLocale::EncodingDescription * d = KviLocale::encodingDescription(i); QString tmp; - m_pEncodingEditor->insertItem(__tr2qs_ctx("Use Network Encoding","options")); + m_pEncodingEditor->addItem(__tr2qs_ctx("Use Network Encoding","options")); while(d->szName) { KviQString::sprintf(tmp,"%s (%s)",d->szName,d->szDescription); - m_pEncodingEditor->insertItem(tmp); + m_pEncodingEditor->insertItem(m_pEncodingEditor->count(),tmp); if(KviQString::equalCI(d->szName,s->encoding()))current = i + 1; i = i + 1; d = KviLocale::encodingDescription(i); } - m_pEncodingEditor->setCurrentItem(current); + m_pEncodingEditor->setCurrentIndex(current); l = new QLabel(__tr2qs_ctx("Link filter:","options"),tab); gl->addWidget(l,7,0); - m_pLinkFilterEditor = new QComboBox(true,tab); + m_pLinkFilterEditor = new QComboBox(tab); + m_pLinkFilterEditor->setEditable(true); m_pLinkFilterEditor->setDuplicatesEnabled(false); gl->addWidget(m_pLinkFilterEditor,7,1); - m_pLinkFilterEditor->insertItem(""); + m_pLinkFilterEditor->addItem(""); g_pModuleManager->loadModulesByCaps("linkfilter"); KviModuleExtensionDescriptorList * mexl = KviModuleExtensionManager::instance()->getExtensionList("linkfilter"); @@ -643,16 +654,23 @@ KviServerDetailsWidget::KviServerDetailsWidget(QWidget * par,KviIrcServer * s) if(mexl) { for(KviModuleExtensionDescriptor * d = mexl->first();d;d = mexl->next()) - m_pLinkFilterEditor->insertItem(d->name().ptr()); + m_pLinkFilterEditor->addItem(d->name().ptr()); } else { if(!s->linkFilter().isEmpty()) - m_pLinkFilterEditor->insertItem(s->linkFilter()); + m_pLinkFilterEditor->addItem(s->linkFilter()); } if(!s->linkFilter().isEmpty()) - m_pLinkFilterEditor->setCurrentText(s->linkFilter()); + { + //m_pLinkFilterEditor->setCurrentText(s->linkFilter()); + int i = m_pLinkFilterEditor->findText(s->linkFilter());
+ if (i != -1)
+ m_pLinkFilterEditor->setCurrentIndex(i);
+ else
+ m_pLinkFilterEditor->setEditText(s->linkFilter());
+ } else - m_pLinkFilterEditor->setCurrentText(""); + m_pLinkFilterEditor->setCurrentIndex(0); KviTalToolTip::add(m_pLinkFilterEditor,__tr2qs_ctx("<center>This field specifies the name of a module that exports a link filter for this type of server.<br>" \ @@ -678,16 +696,16 @@ KviServerDetailsWidget::KviServerDetailsWidget(QWidget * par,KviIrcServer * s) "If this field is set in \"Default\" KVirc will use global proxy settings, if it is set in \"Direct connection\" " \ "KVirc will connect to this server without proxy. You can define new proxy server in global options' \"Proxy servers\" menu.</center>","options")); - m_pProxyEditor->insertItem(__tr2qs_ctx("Default","options")); - m_pProxyEditor->insertItem(__tr2qs_ctx("Direct connection","options")); + m_pProxyEditor->addItem(__tr2qs_ctx("Default","options")); + m_pProxyEditor->addItem(__tr2qs_ctx("Direct connection","options")); KviPointerList<KviProxy> * proxylist = g_pProxyDataBase->proxyList(); for(KviProxy * p = proxylist->first();p;p = proxylist->next()) { - m_pProxyEditor->insertItem(QString("%1:%2").arg(p->hostname()).arg(p->port())); + m_pProxyEditor->insertItem(m_pProxyEditor->count(),QString("%1:%2").arg(p->hostname()).arg(p->port())); } if(m_pProxyEditor->count() > (s->proxy()+2)) - m_pProxyEditor->setCurrentItem(s->proxy()+2); + m_pProxyEditor->setCurrentIndex(s->proxy()+2); l = new QLabel("",tab); @@ -819,9 +837,9 @@ void KviServerDetailsWidget::fillData(KviIrcServer * s) if(m_pLinkFilterEditor) s->setLinkFilter(m_pLinkFilterEditor->lineEdit()->text()); if(m_pEncodingEditor) - if(m_pEncodingEditor->currentItem() <= 0)s->m_szEncoding = ""; + if(m_pEncodingEditor->currentIndex() <= 0)s->m_szEncoding = ""; else { - KviLocale::EncodingDescription * d = KviLocale::encodingDescription(m_pEncodingEditor->currentItem() - 1); + KviLocale::EncodingDescription * d = KviLocale::encodingDescription(m_pEncodingEditor->currentIndex() - 1); s->m_szEncoding = d->szName; } s->setIpAddress(""); @@ -908,7 +926,7 @@ void KviServerDetailsWidget::fillData(KviIrcServer * s) if(m_pUseAutoConnect) s->setAutoConnect(m_pUseAutoConnect->isChecked()); if(m_pProxyEditor) - s->setProxy(m_pProxyEditor->currentItem()-2); + s->setProxy(m_pProxyEditor->currentIndex()-2); } void KviServerDetailsWidget::useDefaultInitUModeToggled(bool b) @@ -921,33 +939,33 @@ void KviServerDetailsWidget::useDefaultInitUModeToggled(bool b) // kvi_app.cpp extern KVIRC_API KviIrcServerDataBase * g_pIrcServerDataBase; -KviServerOptionsListViewItem::KviServerOptionsListViewItem(KviTalListView *parent,const QPixmap &pm,const KviIrcNetwork *n) - : KviTalListViewItem(parent) +KviServerOptionsTreeWidgetItem::KviServerOptionsTreeWidgetItem(KviTalTreeWidget *parent,const QPixmap &pm,const KviIrcNetwork *n) + : KviTalTreeWidgetItem(parent) { - setPixmap(0,pm); + setIcon(0,QIcon(pm)); m_pServerData = 0; m_pNetworkData = new KviIrcNetwork(*n); setText(0,n->name()); setText(1,n->description()); } -KviServerOptionsListViewItem::KviServerOptionsListViewItem(KviTalListViewItem *parent,const QPixmap &pm,const KviIrcServer *s) - : KviTalListViewItem(parent) +KviServerOptionsTreeWidgetItem::KviServerOptionsTreeWidgetItem(KviTalTreeWidgetItem *parent,const QPixmap &pm,const KviIrcServer *s) + : KviTalTreeWidgetItem(parent) { - setPixmap(0,pm); + setIcon(0,QIcon(pm)); m_pServerData = new KviIrcServer(*s); setText(0,s->hostName()); setText(1,s->description()); m_pNetworkData = 0; } -KviServerOptionsListViewItem::~KviServerOptionsListViewItem() +KviServerOptionsTreeWidgetItem::~KviServerOptionsTreeWidgetItem() { if(m_pServerData)delete m_pServerData; if(m_pNetworkData)delete m_pNetworkData; } -void KviServerOptionsListViewItem::updateVisibleStrings() +void KviServerOptionsTreeWidgetItem::updateVisibleStrings() { if(m_pNetworkData) { @@ -978,43 +996,53 @@ KviServerOptionsWidget::KviServerOptionsWidget(QWidget * parent) m_pNetworkDetailsDialog = 0; m_pImportFilter = 0; - m_pListView = new KviTalListView(this); - addWidgetToLayout(m_pListView,0,0,0,0); - m_pListView->addColumn(__tr2qs_ctx("Server","options")); - m_pListView->addColumn(__tr2qs_ctx("Description","options")); - m_pListView->setRootIsDecorated(true); - m_pListView->setAllColumnsShowFocus(true); - m_pListView->setSelectionMode(KviTalListView::Single); - connect(m_pListView,SIGNAL(selectionChanged(KviTalListViewItem *)), - this,SLOT(listViewItemSelectionChanged(KviTalListViewItem *))); - connect(m_pListView,SIGNAL(rightButtonPressed(KviTalListViewItem *,const QPoint &,int)), - this,SLOT(listViewRightButtonPressed(KviTalListViewItem *,const QPoint &,int))); - connect(m_pListView,SIGNAL(doubleClicked(KviTalListViewItem*, const QPoint&, int )), - this,SLOT(detailsClicked())); + m_pTreeWidget = new KviTalTreeWidget(this); + addWidgetToLayout(m_pTreeWidget,0,0,0,0); + m_pTreeWidget->setColumnCount(2); + m_pTreeWidget->setMinimumWidth(500); + QStringList columLabels; + columLabels.append(__tr2qs_ctx("Server","options")); + columLabels.append(__tr2qs_ctx("Description","options")); + m_pTreeWidget->setColumnWidth(0,150); + m_pTreeWidget->setColumnWidth(1,150); + + m_pTreeWidget->setHeaderLabels(columLabels); + m_pTreeWidget->setRootIsDecorated(true); + m_pTreeWidget->setAllColumnsShowFocus(true); + m_pTreeWidget->setSelectionMode(QAbstractItemView::SingleSelection); + m_pTreeWidget->setContextMenuPolicy(Qt::CustomContextMenu); + connect(m_pTreeWidget,SIGNAL(customContextMenuRequested(const QPoint &)), + this,SLOT(customContextMenuRequested(const QPoint &))); + connect(m_pTreeWidget,SIGNAL(currentItemChanged(KviTalTreeWidgetItem *,KviTalTreeWidgetItem *)), + this,SLOT(currentItemChanged(KviTalTreeWidgetItem *,KviTalTreeWidgetItem *))); + + connect(m_pTreeWidget,SIGNAL(itemDoubleClicked(KviTalTreeWidgetItem*, int )), + this,SLOT(itemDoubleClicked(KviTalTreeWidgetItem*, int ))); QString tiptxt = __tr2qs_ctx("<center>This is the list of available IRC servers.<br>" \ "Right-click on the list to add or remove servers and perform other actions.<br>"\ "Double-click on a item for advanced options.</center>","options"); - KviTalToolTip::add(m_pListView,tiptxt); - KviTalToolTip::add(m_pListView->viewport(),tiptxt); + KviTalToolTip::add(m_pTreeWidget,tiptxt); + KviTalToolTip::add(m_pTreeWidget->viewport(),tiptxt); KviTalVBox * vbox = new KviTalVBox(this); + vbox->setSpacing(0); addWidgetToLayout(vbox,1,0,1,0); - m_pNewNetworkButton = new KviStyledToolButton(vbox); - m_pNewNetworkButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD))); + m_pNewNetworkButton = new QToolButton(vbox); + m_pNewNetworkButton->setIcon(QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD)))); m_pNewNetworkButton->setAutoRaise(true); connect(m_pNewNetworkButton,SIGNAL(clicked()),this,SLOT(newNetwork())); KviTalToolTip::add(m_pNewNetworkButton,__tr2qs_ctx("New Network","options")); - m_pNewServerButton = new KviStyledToolButton(vbox); - m_pNewServerButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER))); + m_pNewServerButton = new QToolButton(vbox); + m_pNewServerButton->setIcon(QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)))); m_pNewServerButton->setAutoRaise(true); connect(m_pNewServerButton,SIGNAL(clicked()),this,SLOT(newServer())); KviTalToolTip::add(m_pNewServerButton,__tr2qs_ctx("New Server","options")); - m_pRemoveButton = new KviStyledToolButton(vbox); - m_pRemoveButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CUT))); + m_pRemoveButton = new QToolButton(vbox); + m_pRemoveButton->setIcon(QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CUT)))); m_pRemoveButton->setEnabled(false); m_pRemoveButton->setAutoRaise(true); connect(m_pRemoveButton,SIGNAL(clicked()),this,SLOT(removeCurrent())); @@ -1023,15 +1051,15 @@ KviServerOptionsWidget::KviServerOptionsWidget(QWidget * parent) QFrame * f = new QFrame(vbox); f->setFrameStyle(QFrame::Sunken | QFrame::HLine); - m_pCopyServerButton = new KviStyledToolButton(vbox); - m_pCopyServerButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_COPY))); + m_pCopyServerButton = new QToolButton(vbox); + m_pCopyServerButton->setIcon(QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_COPY)))); m_pCopyServerButton->setEnabled(false); m_pCopyServerButton->setAutoRaise(true); connect(m_pCopyServerButton,SIGNAL(clicked()),this,SLOT(copyServer())); KviTalToolTip::add(m_pCopyServerButton,__tr2qs_ctx("Copy Server","options")); - m_pPasteServerButton = new KviStyledToolButton(vbox); - m_pPasteServerButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PASTE))); + m_pPasteServerButton = new QToolButton(vbox); + m_pPasteServerButton->setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_PASTE))); m_pPasteServerButton->setEnabled(false); m_pPasteServerButton->setAutoRaise(true); connect(m_pPasteServerButton,SIGNAL(clicked()),this,SLOT(pasteServer())); @@ -1040,11 +1068,11 @@ KviServerOptionsWidget::KviServerOptionsWidget(QWidget * parent) f = new QFrame(vbox); f->setFrameStyle(QFrame::Sunken | QFrame::HLine); - m_pImportButton = new KviStyledToolButton(vbox); - m_pImportButton->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_FOLDER))); + m_pImportButton = new QToolButton(vbox); + m_pImportButton->setIcon(QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_FOLDER)))); m_pImportButton->setAutoRaise(true); - m_pImportButton->setPopup(m_pImportPopup); - m_pImportButton->setPopupDelay(1); + m_pImportButton->setMenu(m_pImportPopup); +// m_pImportButton->setPopupDelay(1); KviTalToolTip::add(m_pImportButton,__tr2qs_ctx("Import List","options")); QFrame * lll = new QFrame(vbox); @@ -1057,7 +1085,7 @@ KviServerOptionsWidget::KviServerOptionsWidget(QWidget * parent) KviTalToolTip::add(m_pSrvNetEdit,__tr2qs_ctx("<center>This is the name of the currently selected server or network</center>","options")); /* - m_pIpV6Check = new KviStyledCheckBox(__tr2qs_ctx("Use IPv6 protocol","options"),gbox); + m_pIpV6Check = new QCheckBox(__tr2qs_ctx("Use IPv6 protocol","options"),gbox); #ifndef COMPILE_IPV6_SUPPORT m_pIpV6Check->setEnabled(false); @@ -1086,11 +1114,11 @@ KviServerOptionsWidget::KviServerOptionsWidget(QWidget * parent) connect(m_pRecentPopup,SIGNAL(aboutToShow()),this,SLOT(recentServersPopupAboutToShow())); connect(m_pRecentPopup,SIGNAL(activated(int)),this,SLOT(recentServersPopupClicked(int))); - QToolButton * tb = new KviStyledToolButton(this); + QToolButton * tb = new QToolButton(this); addWidgetToLayout(tb,1,2,1,2); - tb->setPixmap(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TIME))); - tb->setPopup(m_pRecentPopup); - tb->setPopupDelay(1); + tb->setIcon(QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_TIME)))); + tb->setMenu(m_pRecentPopup); +// tb->setPopupDelay(1); KviTalToolTip::add(tb,__tr2qs_ctx("<center>This button shows a list of recently used servers. It allows you to quickly find them in the list.</center>","options")); KviBoolSelector * b = addBoolSelector(0,3,1,3,__tr2qs_ctx("Show this dialog at startup","options"),KviOption_boolShowServersConnectDialogOnStart); @@ -1146,21 +1174,27 @@ void KviServerOptionsWidget::recentServersPopupClicked(int id) kvi_u32_t uPort = port.toUInt(&bOk); // we have the port too - KviTalListViewItem * pFoundNet = 0; - KviTalListViewItem * pFoundSrv = 0; + KviTalTreeWidgetItem * pFoundNet = 0; + KviTalTreeWidgetItem * pFoundSrv = 0; - for(KviTalListViewItem * net = m_pListView->firstChild();net;net = net->nextSibling()) + //for(KviTalTreeWidgetItem * net = m_pTreeWidget->firstChild();net;net = net->nextSibling() + KviTalTreeWidgetItem * net; + for(int i=0;i<m_pTreeWidget->topLevelItemCount();i++) { - for(KviTalListViewItem * srv = net->firstChild();srv;srv = srv->nextSibling()) + net=(KviTalTreeWidgetItem *) m_pTreeWidget->topLevelItem(i); + //for(KviTalTreeWidgetItem * srv = net->firstChild();srv;srv = srv->nextSibling()) + KviTalTreeWidgetItem * srv; + for (int j=0;j<net->childCount();j++) { - KviStr tmp = ((KviServerOptionsListViewItem *)srv)->m_pServerData->hostName(); + srv=(KviTalTreeWidgetItem *)net->child(i); + KviStr tmp = ((KviServerOptionsTreeWidgetItem *)srv)->m_pServerData->hostName(); if(kvi_strEqualCI(tmp.ptr(),data.ptr())) { - if(((KviServerOptionsListViewItem *)srv)->m_pServerData->port() == uPort) + if(((KviServerOptionsTreeWidgetItem *)srv)->m_pServerData->port() == uPort) { - net->setOpen(true); - m_pListView->setCurrentItem(srv); - m_pListView->ensureItemVisible(srv); + net->setExpanded(true); + m_pTreeWidget->setCurrentItem(srv); + m_pTreeWidget->scrollToItem(srv); return; } else { if(!pFoundNet) @@ -1179,9 +1213,9 @@ void KviServerOptionsWidget::recentServersPopupClicked(int id) // fallback to the server with the wrong port if(pFoundNet) { - pFoundNet->setOpen(true); - m_pListView->setCurrentItem(pFoundSrv); - m_pListView->ensureItemVisible(pFoundSrv); + pFoundNet->setExpanded(true); + m_pTreeWidget->setCurrentItem(pFoundSrv); + m_pTreeWidget->scrollToItem(pFoundSrv); } } @@ -1196,37 +1230,40 @@ void KviServerOptionsWidget::connectCurrentClicked() void KviServerOptionsWidget::fillServerList() { - KviServerOptionsListViewItem * net; - KviServerOptionsListViewItem * srv; - KviServerOptionsListViewItem * cur = 0; + KviServerOptionsTreeWidgetItem * net; + KviServerOptionsTreeWidgetItem * srv; + KviServerOptionsTreeWidgetItem * cur = 0; KviPointerHashTableIterator<QString,KviIrcServerDataBaseRecord> it(*(g_pIrcServerDataBase->recordDict())); while(KviIrcServerDataBaseRecord * r = it.current()) { - net = new KviServerOptionsListViewItem(m_pListView,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD)),r->network()); + net = new KviServerOptionsTreeWidgetItem(m_pTreeWidget,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD)),r->network()); KviPointerList<KviIrcServer> * sl = r->serverList(); bool bCurrent = r->network()->name() == g_pIrcServerDataBase->currentNetworkName().toUtf8().data(); - net->setOpen(bCurrent); + net->setExpanded(bCurrent); for(KviIrcServer * s = sl->first();s;s = sl->next()) { - srv = new KviServerOptionsListViewItem(net,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)),s); + srv = new KviServerOptionsTreeWidgetItem(net,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)),s); if((s == r->currentServer()) && bCurrent) { - m_pListView->setSelected(srv,true); + srv->setSelected(true); cur = srv; } } ++it; } - if(cur)m_pListView->ensureItemVisible(cur); + if(cur)m_pTreeWidget->scrollToItem(cur); } - -void KviServerOptionsWidget::listViewItemSelectionChanged(KviTalListViewItem *it) +void KviServerOptionsWidget::itemDoubleClicked(KviTalTreeWidgetItem*, int ) +{ + detailsClicked(); +} +void KviServerOptionsWidget::currentItemChanged(KviTalTreeWidgetItem *it,KviTalTreeWidgetItem *prev) { saveLastItem(); - m_pLastEditedItem = (KviServerOptionsListViewItem *)it; + m_pLastEditedItem = (KviServerOptionsTreeWidgetItem *)it; if(m_pLastEditedItem) { @@ -1280,61 +1317,67 @@ void KviServerOptionsWidget::commit() { saveLastItem(); g_pIrcServerDataBase->clear(); - KviServerOptionsListViewItem * it = (KviServerOptionsListViewItem *)m_pListView->firstChild(); - while(it) +// KviServerOptionsTreeWidgetItem * it = (KviServerOptionsTreeWidgetItem *)m_pTreeWidget->firstChild(); + KviServerOptionsTreeWidgetItem * network; + for (int i=0;i<m_pTreeWidget->topLevelItemCount();i++) + //while(it) { - QString tmp = it->m_pNetworkData ? it->m_pNetworkData->name() : QString::null; - if(!tmp.isEmpty()) + network=(KviServerOptionsTreeWidgetItem *) m_pTreeWidget->topLevelItem(i); + QString tmp = network->m_pNetworkData->name(); + KviIrcNetwork * net = 0; + KviIrcServerDataBaseRecord * r = g_pIrcServerDataBase->findRecord(tmp); + if(r) { - KviIrcNetwork * net = 0; - KviIrcServerDataBaseRecord * r = g_pIrcServerDataBase->findRecord(tmp); - if(r) - { - net = r->network(); - net->copyFrom(*(it->m_pNetworkData)); - } else { - net = new KviIrcNetwork(tmp); - net->copyFrom(*(it->m_pNetworkData)); - r = g_pIrcServerDataBase->insertNetwork(net); - } - if(it == m_pLastEditedItem)g_pIrcServerDataBase->setCurrentNetwork(net->name()); - - KviServerOptionsListViewItem * ch = (KviServerOptionsListViewItem *)it->firstChild(); + net = r->network(); + net->copyFrom(*(network->m_pNetworkData)); + } else { + net = new KviIrcNetwork(tmp); + net->copyFrom(*(network->m_pNetworkData)); + r = g_pIrcServerDataBase->insertNetwork(net); + } + if(network == m_pLastEditedItem)g_pIrcServerDataBase->setCurrentNetwork(net->name()); + + KviServerOptionsTreeWidgetItem * ch; + for (int j=0;j<network->childCount();i++) + { + //KviServerOptionsTreeWidgetItem * ch;// = (KviServerOptionsTreeWidgetItem *)it->firstChild(); KviIrcServer *srv; - - while(ch) + ch=(KviServerOptionsTreeWidgetItem *)network->child(i); + // while(ch) + // { + if(ch->m_pServerData) { - if(ch->m_pServerData) + if(!ch->m_pServerData->m_szHostname.isEmpty()) { - if(!ch->m_pServerData->m_szHostname.isEmpty()) + srv = r->findServer(ch->m_pServerData); + if(!srv) + { + srv = new KviIrcServer(*(ch->m_pServerData)); + r->insertServer(srv); + } else *srv = *(ch->m_pServerData); + if(srv->id().isEmpty())srv->generateUniqueId(); + if(ch == m_pLastEditedItem) { - srv = r->findServer(ch->m_pServerData); - if(!srv) - { - srv = new KviIrcServer(*(ch->m_pServerData)); - r->insertServer(srv); - } else *srv = *(ch->m_pServerData); - if(srv->id().isEmpty())srv->generateUniqueId(); - if(ch == m_pLastEditedItem) - { - g_pIrcServerDataBase->setCurrentNetwork(net->name()); - r->setCurrentServer(srv); - } + g_pIrcServerDataBase->setCurrentNetwork(net->name()); + r->setCurrentServer(srv); } } - ch = (KviServerOptionsListViewItem *)ch->nextSibling(); } + //ch = (KviServerOptionsTreeWidgetItem *)ch->nextSibling(); } - it = (KviServerOptionsListViewItem *)it->nextSibling(); + } + // it = (KviServerOptionsTreeWidgetItem *)it->nextSibling(); +//} KviOptionsWidget::commit(); } -void KviServerOptionsWidget::listViewRightButtonPressed(KviTalListViewItem *it,const QPoint &pnt,int col) +void KviServerOptionsWidget::customContextMenuRequested(const QPoint &pnt) { int id; - bool bServer = (it && ((KviServerOptionsListViewItem *)it)->m_pServerData); + KviTalTreeWidgetItem *it=(KviTalTreeWidgetItem *) m_pTreeWidget->itemAt(pnt); + bool bServer = (it && ((KviServerOptionsTreeWidgetItem *)it)->m_pServerData); m_pContextPopup->clear(); m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD)),__tr2qs_ctx("New Network","options"),this,SLOT(newNetwork())); id = m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_CUT)),__tr2qs_ctx("Remove Network","options"),this,SLOT(removeCurrent())); @@ -1423,16 +1466,19 @@ void KviServerOptionsWidget::importerDead() void KviServerOptionsWidget::importServer(const KviIrcServer &s,const QString &network) { - KviServerOptionsListViewItem * net = findNetItem(network); + KviServerOptionsTreeWidgetItem * net = findNetItem(network); if(!net) { KviIrcNetwork d(network); - net = new KviServerOptionsListViewItem(m_pListView,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD)),&d); - net->setOpen(true); + net = new KviServerOptionsTreeWidgetItem(m_pTreeWidget,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD)),&d); + net->setExpanded(true); } - for(KviServerOptionsListViewItem * srv = (KviServerOptionsListViewItem *)net->firstChild();srv;srv = (KviServerOptionsListViewItem *)srv->nextSibling()) + //for(KviServerOptionsTreeWidgetItem * srv = (KviServerOptionsTreeWidgetItem *)net->firstChild();srv;srv = (KviServerOptionsTreeWidgetItem *)srv->nextSibling()) + KviServerOptionsTreeWidgetItem * srv ; + for(int i=0;i<net->childCount();i++) { + srv=(KviServerOptionsTreeWidgetItem *) net->child(i); if((srv)->m_pServerData->useSSL() == s.useSSL()) { if(srv->m_pServerData->isIpV6() == s.isIpV6()) @@ -1444,8 +1490,8 @@ void KviServerOptionsWidget::importServer(const KviIrcServer &s,const QString &n if(!s.ipAddress().isEmpty())srv->m_pServerData->setIpAddress(s.ipAddress()); if(!s.password().isEmpty())srv->m_pServerData->setPassword(s.password()); if(!s.nickName().isEmpty())srv->m_pServerData->setNickName(s.nickName()); - m_pListView->setCurrentItem(srv); - m_pListView->ensureItemVisible(srv); + m_pTreeWidget->setCurrentItem(srv); + m_pTreeWidget->scrollToItem(srv); return; } } @@ -1453,28 +1499,28 @@ void KviServerOptionsWidget::importServer(const KviIrcServer &s,const QString &n } // not found : add it! - KviServerOptionsListViewItem * newServer = new KviServerOptionsListViewItem(net,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)),&s); - m_pListView->setCurrentItem(newServer); - m_pListView->ensureItemVisible(newServer); + KviServerOptionsTreeWidgetItem * newServer = new KviServerOptionsTreeWidgetItem(net,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)),&s); + m_pTreeWidget->setCurrentItem(newServer); + m_pTreeWidget->scrollToItem(newServer); } void KviServerOptionsWidget::newNetwork() { KviIrcNetwork d(__tr2qs_ctx("New Network","options")); - KviServerOptionsListViewItem * it = new KviServerOptionsListViewItem(m_pListView,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD)),&d); - it->setOpen(true); - m_pListView->setSelected(it,true); - m_pListView->ensureItemVisible(it); + KviServerOptionsTreeWidgetItem * it = new KviServerOptionsTreeWidgetItem(m_pTreeWidget,*(g_pIconManager->getSmallIcon(KVI_SMALLICON_WORLD)),&d); + it->setExpanded(true); + it->setSelected(true); + m_pTreeWidget->scrollToItem(it); } void KviServerOptionsWidget::newServer() { if(m_pLastEditedItem) { - KviServerOptionsListViewItem * net; + KviServerOptionsTreeWidgetItem * net; if(m_pLastEditedItem->m_pServerData) { - net = (KviServerOptionsListViewItem *)m_pLastEditedItem->parent(); + net = (KviServerOptionsTreeWidgetItem *)m_pLastEditedItem->parent(); if(!net)return; } else net = m_pLastEditedItem; @@ -1484,13 +1530,13 @@ void KviServerOptionsWidget::newServer() tmp.setCacheIp(false); tmp.generateUniqueId(); - KviServerOptionsListViewItem * it = new KviServerOptionsListViewItem(net, + KviServerOptionsTreeWidgetItem * it = new KviServerOptionsTreeWidgetItem(net, *(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)),&tmp); - net->setOpen(true); + net->setExpanded(true); - m_pListView->setSelected(it,true); - m_pListView->ensureItemVisible(it); + it->setSelected(true); + m_pTreeWidget->scrollToItem(it); } } @@ -1513,58 +1559,63 @@ void KviServerOptionsWidget::pasteServer() { if(m_pLastEditedItem) { - KviServerOptionsListViewItem * net; + KviServerOptionsTreeWidgetItem * net; if(m_pLastEditedItem->m_pServerData) { - net = (KviServerOptionsListViewItem *)m_pLastEditedItem->parent(); + net = (KviServerOptionsTreeWidgetItem *)m_pLastEditedItem->parent(); if(!net)return; } else net = m_pLastEditedItem; - KviServerOptionsListViewItem * it = new KviServerOptionsListViewItem(net, + KviServerOptionsTreeWidgetItem * it = new KviServerOptionsTreeWidgetItem(net, *(g_pIconManager->getSmallIcon(KVI_SMALLICON_SERVER)),m_pClipboard); - net->setOpen(true); + net->setExpanded(true); - m_pListView->setSelected(it,true); - m_pListView->ensureItemVisible(it); + it->setSelected(true); + m_pTreeWidget->scrollToItem(it); } } } void KviServerOptionsWidget::removeCurrent() { + /* if(m_pLastEditedItem) { - KviTalListViewItem * it = m_pLastEditedItem->itemAbove(); + KviTalTreeWidgetItem * it = m_pLastEditedItem->itemAbove(); if(!it)it = m_pLastEditedItem->firstChild() ? m_pLastEditedItem->nextSibling() : m_pLastEditedItem->itemBelow(); delete m_pLastEditedItem; m_pLastEditedItem = 0; - if(!it)it = m_pListView->firstChild(); + if(!it)it = m_pTreeWidget->firstChild(); if(it) { - m_pListView->setSelected(it,true); - m_pListView->ensureItemVisible(it); + it->setSelected(true); + m_pTreeWidget->scrollToItem(it); } } + */ } -KviServerOptionsListViewItem * KviServerOptionsWidget::findNetItem(const QString &netname) +KviServerOptionsTreeWidgetItem * KviServerOptionsWidget::findNetItem(const QString &netname) { - KviServerOptionsListViewItem * it = (KviServerOptionsListViewItem *)m_pListView->firstChild(); - while(it) + + KviServerOptionsTreeWidgetItem * it;// = (KviServerOptionsTreeWidgetItem *)m_pTreeWidget->firstChild(); + //while(it) + for(int i=0;i<m_pTreeWidget->topLevelItemCount();i++) { + it=(KviServerOptionsTreeWidgetItem *)m_pTreeWidget->topLevelItem(i); if(KviQString::equalCI(it->text(0),netname))return it; - it = (KviServerOptionsListViewItem *)it->nextSibling(); + // it = (KviServerOptionsTreeWidgetItem *)it->nextSibling(); } return 0; } void KviServerOptionsWidget::clearList() { - m_pListView->clear(); + m_pTreeWidget->clear(); m_pLastEditedItem = 0; - listViewItemSelectionChanged(0); + currentItemChanged(0,0); } void KviServerOptionsWidget::detailsClicked() diff --git a/src/modules/options/optw_servers.h b/src/modules/options/optw_servers.h index 97a773f9e..efaf51308 100644 --- a/src/modules/options/optw_servers.h +++ b/src/modules/options/optw_servers.h @@ -26,7 +26,7 @@ //============================================================================= #include "kvi_optionswidget.h" -#include "kvi_tal_listview.h" +#include "kvi_tal_TreeWidget.h" #include <QDialog> #include <QButtonGroup> @@ -50,12 +50,12 @@ class KviIrcNetworkData; class KviMexServerImport; -class KviServerOptionsListViewItem : public KviTalListViewItem +class KviServerOptionsTreeWidgetItem : public KviTalTreeWidgetItem { public: - KviServerOptionsListViewItem(KviTalListView *parent,const QPixmap &pm,const KviIrcNetwork *n); - KviServerOptionsListViewItem(KviTalListViewItem *parent,const QPixmap &pm,const KviIrcServer *s); - ~KviServerOptionsListViewItem(); + KviServerOptionsTreeWidgetItem(KviTalTreeWidget *parent,const QPixmap &pm,const KviIrcNetwork *n); + KviServerOptionsTreeWidgetItem(KviTalTreeWidgetItem *parent,const QPixmap &pm,const KviIrcServer *s); + ~KviServerOptionsTreeWidgetItem(); public: KviIrcServer * m_pServerData; KviIrcNetwork * m_pNetworkData; @@ -84,7 +84,7 @@ protected: QCheckBox * m_pAutoConnectCheck; - KviTalListView * m_pNickServListView; + KviTalTreeWidget * m_pNickServTreeWidget; QCheckBox * m_pNickServCheck; QPushButton * m_pAddRuleButton; QPushButton * m_pDelRuleButton; @@ -157,7 +157,7 @@ public: KviServerOptionsWidget(QWidget * parent); ~KviServerOptionsWidget(); protected: - KviTalListView * m_pListView; + KviTalTreeWidget * m_pTreeWidget; QLabel * m_pSrvNetLabel; QLineEdit * m_pSrvNetEdit; //QLabel * m_pPortLabel; @@ -170,7 +170,7 @@ protected: //QCheckBox * m_pIpV6Check; QPushButton * m_pConnectCurrent; QPushButton * m_pConnectNew; - KviServerOptionsListViewItem * m_pLastEditedItem; + KviServerOptionsTreeWidgetItem * m_pLastEditedItem; KviServerDetailsWidget * m_pServerDetailsDialog; KviNetworkDetailsWidget * m_pNetworkDetailsDialog; KviMexServerImport * m_pImportFilter; @@ -184,19 +184,20 @@ protected: private: void fillServerList(); void saveLastItem(); - KviServerOptionsListViewItem * findNetItem(const QString &netname); + KviServerOptionsTreeWidgetItem * findNetItem(const QString &netname); protected slots: void importerDead(); void importServer(const KviIrcServer & s,const QString &network); void importPopupAboutToShow(); - void listViewItemSelectionChanged(KviTalListViewItem *it); - void listViewRightButtonPressed(KviTalListViewItem *it,const QPoint &pnt,int col); + void currentItemChanged(KviTalTreeWidgetItem *cur,KviTalTreeWidgetItem *prev); + void customContextMenuRequested(const QPoint &pnt); void newNetwork(); void removeCurrent(); void newServer(); void copyServer(); void pasteServer(); void clearList(); + void itemDoubleClicked(KviTalTreeWidgetItem*, int ); void detailsClicked(); void connectCurrentClicked(); void recentServersPopupAboutToShow(); diff --git a/src/modules/options/optw_sound.cpp b/src/modules/options/optw_sound.cpp index 42dbe1e86..0a2ec002c 100644 --- a/src/modules/options/optw_sound.cpp +++ b/src/modules/options/optw_sound.cpp @@ -124,7 +124,7 @@ KviSoundGeneralOptionsWidget::KviSoundGeneralOptionsWidget(QWidget * parent) m_pWinampEncodingCombo = new QComboBox(h); - m_pWinampEncodingCombo->insertItem(__tr2qs_ctx("Use Language Encoding","options")); + m_pWinampEncodingCombo->addItem(__tr2qs_ctx("Use Language Encoding","options")); i = 0; iMatch = 0; @@ -229,7 +229,7 @@ void KviSoundGeneralOptionsWidget::mediaFillBox() for(i=0;i<cnt;i++) { - QString t = m_pMediaPlayerBox->text(i); + QString t = m_pMediaPlayerBox->itemText(i); if(KviQString::equalCI(t,KVI_OPTION_STRING(KviOption_stringPreferredMediaPlayer))) { m_pMediaPlayerBox->setCurrentIndex(i); diff --git a/src/modules/options/optw_taskbar.cpp b/src/modules/options/optw_taskbar.cpp index 46a31a6e9..2ebb42e57 100644 --- a/src/modules/options/optw_taskbar.cpp +++ b/src/modules/options/optw_taskbar.cpp @@ -171,7 +171,7 @@ void KviTreeTaskBarBackgroundOptionsWidget::commit() KviOptionsWidget::commit(); int iFlags=0; - switch(m_pHorizontalAlign->currentItem()) + switch(m_pHorizontalAlign->currentIndex()) { case 1: iFlags|=Qt::AlignLeft; @@ -183,7 +183,7 @@ void KviTreeTaskBarBackgroundOptionsWidget::commit() iFlags|=Qt::AlignHCenter; break; } - switch(m_pVerticalAlign->currentItem()) + switch(m_pVerticalAlign->currentIndex()) { case 1: iFlags|=Qt::AlignTop; diff --git a/src/modules/options/optw_urlhandlers.cpp b/src/modules/options/optw_urlhandlers.cpp index 12787c604..72e9d3cc2 100644 --- a/src/modules/options/optw_urlhandlers.cpp +++ b/src/modules/options/optw_urlhandlers.cpp @@ -85,37 +85,37 @@ void KviUrlHandlersOptionsWidget::commit() KviOptionsWidget::commit(); #ifdef COMPILE_ON_WINDOWS - KVI_OPTION_STRING(KviOption_stringUrlHttpCommand).replace("\\\\","@MAGIC@","options"); - KVI_OPTION_STRING(KviOption_stringUrlHttpCommand).replace("\\","\\\\","options"); - KVI_OPTION_STRING(KviOption_stringUrlHttpCommand).replace("@MAGIC@","\\\\","options"); + KVI_OPTION_STRING(KviOption_stringUrlHttpCommand).replace("\\\\","@MAGIC@"); + KVI_OPTION_STRING(KviOption_stringUrlHttpCommand).replace("\\","\\\\"); + KVI_OPTION_STRING(KviOption_stringUrlHttpCommand).replace("@MAGIC@","\\\\"); - KVI_OPTION_STRING(KviOption_stringUrlHttpsCommand).replace("\\\\","@MAGIC@","options"); - KVI_OPTION_STRING(KviOption_stringUrlHttpsCommand).replace("\\","\\\\","options"); - KVI_OPTION_STRING(KviOption_stringUrlHttpsCommand).replace("@MAGIC@","\\\\","options"); + KVI_OPTION_STRING(KviOption_stringUrlHttpsCommand).replace("\\\\","@MAGIC@"); + KVI_OPTION_STRING(KviOption_stringUrlHttpsCommand).replace("\\","\\\\"); + KVI_OPTION_STRING(KviOption_stringUrlHttpsCommand).replace("@MAGIC@","\\\\"); - KVI_OPTION_STRING(KviOption_stringUrlFtpCommand).replace("\\\\","@MAGIC@","options"); - KVI_OPTION_STRING(KviOption_stringUrlFtpCommand).replace("\\","\\\\","options"); - KVI_OPTION_STRING(KviOption_stringUrlFtpCommand).replace("@MAGIC@","\\\\","options"); + KVI_OPTION_STRING(KviOption_stringUrlFtpCommand).replace("\\\\","@MAGIC@"); + KVI_OPTION_STRING(KviOption_stringUrlFtpCommand).replace("\\","\\\\"); + KVI_OPTION_STRING(KviOption_stringUrlFtpCommand).replace("@MAGIC@","\\\\"); - KVI_OPTION_STRING(KviOption_stringUrlMailtoCommand).replace("\\\\","@MAGIC@","options"); - KVI_OPTION_STRING(KviOption_stringUrlMailtoCommand).replace("\\","\\\\","options"); - KVI_OPTION_STRING(KviOption_stringUrlMailtoCommand).replace("@MAGIC@","\\\\","options"); + KVI_OPTION_STRING(KviOption_stringUrlMailtoCommand).replace("\\\\","@MAGIC@"); + KVI_OPTION_STRING(KviOption_stringUrlMailtoCommand).replace("\\","\\\\"); + KVI_OPTION_STRING(KviOption_stringUrlMailtoCommand).replace("@MAGIC@","\\\\"); - KVI_OPTION_STRING(KviOption_stringUrlFileCommand).replace("\\\\","@MAGIC@","options"); - KVI_OPTION_STRING(KviOption_stringUrlFileCommand).replace("\\","\\\\","options"); - KVI_OPTION_STRING(KviOption_stringUrlFileCommand).replace("@MAGIC@","\\\\","options"); + KVI_OPTION_STRING(KviOption_stringUrlFileCommand).replace("\\\\","@MAGIC@"); + KVI_OPTION_STRING(KviOption_stringUrlFileCommand).replace("\\","\\\\"); + KVI_OPTION_STRING(KviOption_stringUrlFileCommand).replace("@MAGIC@","\\\\"); - KVI_OPTION_STRING(KviOption_stringUrlUnknownCommand).replace("\\\\","@MAGIC@","options"); - KVI_OPTION_STRING(KviOption_stringUrlUnknownCommand).replace("\\","\\\\","options"); - KVI_OPTION_STRING(KviOption_stringUrlUnknownCommand).replace("@MAGIC@","\\\\","options"); + KVI_OPTION_STRING(KviOption_stringUrlUnknownCommand).replace("\\\\","@MAGIC@"); + KVI_OPTION_STRING(KviOption_stringUrlUnknownCommand).replace("\\","\\\\"); + KVI_OPTION_STRING(KviOption_stringUrlUnknownCommand).replace("@MAGIC@","\\\\"); //Check for escaped " in url handler ( \" ) - KVI_OPTION_STRING(KviOption_stringUrlHttpCommand).replace("\\\\\"","\\\"","options"); - KVI_OPTION_STRING(KviOption_stringUrlHttpsCommand).replace("\\\\\"","\\\"","options"); - KVI_OPTION_STRING(KviOption_stringUrlFtpCommand).replace("\\\\\"","\\\"","options"); - KVI_OPTION_STRING(KviOption_stringUrlMailtoCommand).replace("\\\\\"","\\\"","options"); - KVI_OPTION_STRING(KviOption_stringUrlFileCommand).replace("\\\\\"","\\\"","options"); - KVI_OPTION_STRING(KviOption_stringUrlUnknownCommand).replace("\\\\\"","\\\"","options"); + KVI_OPTION_STRING(KviOption_stringUrlHttpCommand).replace("\\\\\"","\\\""); + KVI_OPTION_STRING(KviOption_stringUrlHttpsCommand).replace("\\\\\"","\\\""); + KVI_OPTION_STRING(KviOption_stringUrlFtpCommand).replace("\\\\\"","\\\""); + KVI_OPTION_STRING(KviOption_stringUrlMailtoCommand).replace("\\\\\"","\\\""); + KVI_OPTION_STRING(KviOption_stringUrlFileCommand).replace("\\\\\"","\\\""); + KVI_OPTION_STRING(KviOption_stringUrlUnknownCommand).replace("\\\\\"","\\\""); #endif } diff --git a/src/modules/options/optw_userlist.cpp b/src/modules/options/optw_userlist.cpp index 1eb77c4a8..0200fed84 100644 --- a/src/modules/options/optw_userlist.cpp +++ b/src/modules/options/optw_userlist.cpp @@ -88,12 +88,12 @@ KviUserListGridOptionsWidget::KviUserListGridOptionsWidget(QWidget * parent) QLabel * l = new QLabel(__tr2qs_ctx("Grid type:","options"),hb); l->setEnabled(KVI_OPTION_BOOL(KviOption_boolUserListViewDrawGrid)); connect(b,SIGNAL(toggled(bool)),l,SLOT(setEnabled(bool))); - m_pGridTypeCombo = new QComboBox(false,hb); - m_pGridTypeCombo->insertItem(__tr2qs_ctx("3D Grid","options")); - m_pGridTypeCombo->insertItem(__tr2qs_ctx("3D Buttons","options")); - m_pGridTypeCombo->insertItem(__tr2qs_ctx("Plain Grid","options")); - m_pGridTypeCombo->insertItem(__tr2qs_ctx("Dotted Grid","options")); - m_pGridTypeCombo->setCurrentItem(KVI_OPTION_UINT(KviOption_uintUserListViewGridType)); + m_pGridTypeCombo = new QComboBox(hb); + m_pGridTypeCombo->addItem(__tr2qs_ctx("3D Grid","options")); + m_pGridTypeCombo->addItem(__tr2qs_ctx("3D Buttons","options")); + m_pGridTypeCombo->addItem(__tr2qs_ctx("Plain Grid","options")); + m_pGridTypeCombo->addItem(__tr2qs_ctx("Dotted Grid","options")); + m_pGridTypeCombo->setCurrentIndex(KVI_OPTION_UINT(KviOption_uintUserListViewGridType)); m_pGridTypeCombo->setEnabled(KVI_OPTION_BOOL(KviOption_boolUserListViewDrawGrid)); connect(b,SIGNAL(toggled(bool)),m_pGridTypeCombo,SLOT(setEnabled(bool))); addRowSpacer(0,3,0,3); @@ -106,7 +106,7 @@ KviUserListGridOptionsWidget::~KviUserListGridOptionsWidget() void KviUserListGridOptionsWidget::commit() { KviOptionsWidget::commit(); - KVI_OPTION_UINT(KviOption_uintUserListViewGridType) = m_pGridTypeCombo->currentItem(); + KVI_OPTION_UINT(KviOption_uintUserListViewGridType) = m_pGridTypeCombo->currentIndex(); if(KVI_OPTION_UINT(KviOption_uintUserListViewGridType) > KVI_USERLISTVIEW_GRIDTYPE_MAXIMUM) KVI_OPTION_UINT(KviOption_uintUserListViewGridType) = KVI_USERLISTVIEW_GRIDTYPE_DEFAULT; @@ -134,44 +134,44 @@ KviUserListLookBackgroundOptionsWidget::KviUserListLookBackgroundOptionsWidget(Q m_pVerticalAlign=new QComboBox(this); addWidgetToLayout(m_pVerticalAlign,1,3,1,3); - m_pHorizontalAlign->insertItem(__tr2qs_ctx("Tile","options")); - m_pHorizontalAlign->insertItem(__tr2qs_ctx("Left","options")); - m_pHorizontalAlign->insertItem(__tr2qs_ctx("Right","options")); - m_pHorizontalAlign->insertItem(__tr2qs_ctx("Center","options")); + m_pHorizontalAlign->addItem(__tr2qs_ctx("Tile","options")); + m_pHorizontalAlign->addItem(__tr2qs_ctx("Left","options")); + m_pHorizontalAlign->addItem(__tr2qs_ctx("Right","options")); + m_pHorizontalAlign->addItem(__tr2qs_ctx("Center","options")); - m_pVerticalAlign->insertItem(__tr2qs_ctx("Tile","options")); - m_pVerticalAlign->insertItem(__tr2qs_ctx("Top","options")); - m_pVerticalAlign->insertItem(__tr2qs_ctx("Bottom","options")); - m_pVerticalAlign->insertItem(__tr2qs_ctx("Center","options")); + m_pVerticalAlign->addItem(__tr2qs_ctx("Tile","options")); + m_pVerticalAlign->addItem(__tr2qs_ctx("Top","options")); + m_pVerticalAlign->addItem(__tr2qs_ctx("Bottom","options")); + m_pVerticalAlign->addItem(__tr2qs_ctx("Center","options")); switch( KVI_OPTION_UINT(KviOption_uintUserListPixmapAlign) & Qt::AlignHorizontal_Mask) { case Qt::AlignLeft: - m_pHorizontalAlign->setCurrentItem(1); + m_pHorizontalAlign->setCurrentIndex(1); break; case Qt::AlignRight: - m_pHorizontalAlign->setCurrentItem(2); + m_pHorizontalAlign->setCurrentIndex(2); break; case Qt::AlignHCenter: - m_pHorizontalAlign->setCurrentItem(3); + m_pHorizontalAlign->setCurrentIndex(3); break; default: - m_pHorizontalAlign->setCurrentItem(0); + m_pHorizontalAlign->setCurrentIndex(0); } switch( KVI_OPTION_UINT(KviOption_uintUserListPixmapAlign) & Qt::AlignVertical_Mask) { case Qt::AlignTop: - m_pVerticalAlign->setCurrentItem(1); + m_pVerticalAlign->setCurrentIndex(1); break; case Qt::AlignBottom: - m_pVerticalAlign->setCurrentItem(2); + m_pVerticalAlign->setCurrentIndex(2); break; case Qt::AlignVCenter: - m_pVerticalAlign->setCurrentItem(3); + m_pVerticalAlign->setCurrentIndex(3); break; default: - m_pVerticalAlign->setCurrentItem(0); + m_pVerticalAlign->setCurrentIndex(0); } @@ -189,7 +189,7 @@ void KviUserListLookBackgroundOptionsWidget::commit() KviOptionsWidget::commit(); int iFlags=0; - switch(m_pHorizontalAlign->currentItem()) + switch(m_pHorizontalAlign->currentIndex()) { case 1: iFlags|=Qt::AlignLeft; @@ -201,7 +201,7 @@ void KviUserListLookBackgroundOptionsWidget::commit() iFlags|=Qt::AlignHCenter; break; } - switch(m_pVerticalAlign->currentItem()) + switch(m_pVerticalAlign->currentIndex()) { case 1: iFlags|=Qt::AlignTop; |
