aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/options/OptionsWidget_textIcons.cpp
diff options
context:
space:
mode:
authorGravatar Fabio Bas2011-03-02 22:13:00 +0000
committerGravatar Fabio Bas2011-03-02 22:13:00 +0000
commit03e011bf335157e38a2aac75dbed4377c71bfb75 (patch)
tree6369b163a66aca49ac8f8a3be8d2831cd281e51a /src/modules/options/OptionsWidget_textIcons.cpp
parentI'm a bit fussy (diff)
downloadKVIrc-03e011bf335157e38a2aac75dbed4377c71bfb75.tar.gz
KVIrc-03e011bf335157e38a2aac75dbed4377c71bfb75.tar.bz2
KVIrc-03e011bf335157e38a2aac75dbed4377c71bfb75.zip
fix for a crahs in the texticons option widget
disabled the "load external file" option, since it was not working anyway git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@5531 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules/options/OptionsWidget_textIcons.cpp')
-rw-r--r--src/modules/options/OptionsWidget_textIcons.cpp130
1 files changed, 59 insertions, 71 deletions
diff --git a/src/modules/options/OptionsWidget_textIcons.cpp b/src/modules/options/OptionsWidget_textIcons.cpp
index e0015f3ed..0017b294b 100644
--- a/src/modules/options/OptionsWidget_textIcons.cpp
+++ b/src/modules/options/OptionsWidget_textIcons.cpp
@@ -29,8 +29,10 @@
#include "KviLocale.h"
#include "KviFileDialog.h"
#include "kvi_fileextensions.h"
+#include "KviTalPopupMenu.h"
#include "KviTalHBox.h"
+#include <QToolButton>
#include <QLayout>
#include <QCursor>
#include <QHeaderView>
@@ -63,9 +65,6 @@ void TextIconTableItem::setId(int id)
OptionsWidget_textIcons::OptionsWidget_textIcons(QWidget * parent)
: KviOptionsWidget(parent)
{
- m_pBox=0;
- m_pIconButton=0;
- m_pBrowseButton=0;
m_pPopup=0;
m_iLastEditedRow=-1;
@@ -101,19 +100,13 @@ OptionsWidget_textIcons::OptionsWidget_textIcons(QWidget * parent)
connect(m_pRestore,SIGNAL(clicked()),this,SLOT(restoreClicked()));
connect(m_pTable,SIGNAL(itemSelectionChanged()),this,SLOT(itemSelectionChanged()));
- connect(m_pTable,SIGNAL(itemClicked(QTableWidgetItem *)),this,SLOT(itemClicked(QTableWidgetItem *)));
+ connect(m_pTable,SIGNAL(currentItemChanged(QTableWidgetItem *, QTableWidgetItem *)),this,SLOT(currentItemChanged(QTableWidgetItem *, QTableWidgetItem *)));
fillTable();
}
OptionsWidget_textIcons::~OptionsWidget_textIcons()
{
- if(m_pIconButton)
- delete m_pIconButton;
- if(m_pBrowseButton)
- delete m_pBrowseButton;
- if(m_pBox)
- delete m_pBox;
}
void OptionsWidget_textIcons::fillTable()
@@ -167,66 +160,76 @@ void OptionsWidget_textIcons::iconSelected(KviIconManager::SmallIcon eIcon)
{
m_pItem->icon()->setId(eIcon);
m_pItem->setIcon(QIcon(*m_pItem->icon()->pixmap()));
- m_pIconButton->setIcon(QIcon(*m_pItem->icon()->pixmap()));
-}
-void OptionsWidget_textIcons::chooseFromFile()
-{
- QString szFile;
- KviFileDialog::askForOpenFileName(szFile,"Choose icon filename",QString(),KVI_FILTER_IMAGE,"options");
- if(!szFile.isEmpty())
- {
- if(g_pIconManager->getPixmap(szFile))
- {
- m_pItem->icon()->setFilename(szFile);
- m_pItem->setIcon(QIcon(*m_pItem->icon()->pixmap()));
- m_pIconButton->setIcon(QIcon(*m_pItem->icon()->pixmap()));
- }
- }
+ KviTalHBox * pBox=new KviTalHBox(0);
+ pBox->setSpacing(0);
+ pBox->setMargin(0);
+
+ QToolButton * pIconButton=new QToolButton(pBox);
+ pIconButton->setMinimumWidth(150);
+ pIconButton->setIcon(QIcon(*m_pItem->icon()->pixmap()));
+ connect(pIconButton,SIGNAL(clicked()),this,SLOT(doPopup()));
+
+// FIXME: this does not work currently!
+// QToolButton * pBrowseButton=new QToolButton(pBox);
+// pBrowseButton->setText("...");
+// connect(pBrowseButton,SIGNAL(clicked()),this,SLOT(chooseFromFile()));
+
+ m_pTable->setCellWidget(m_pItem->row(),1,pBox);
}
+
+// FIXME: this does not work currently!
+// void OptionsWidget_textIcons::chooseFromFile()
+// {
+// QString szFile;
+// KviFileDialog::askForOpenFileName(szFile,"Choose icon filename",QString(),KVI_FILTER_IMAGE,"options");
+// if(!szFile.isEmpty())
+// {
+// if(g_pIconManager->getPixmap(szFile))
+// {
+// m_pItem->icon()->setFilename(szFile);
+// m_pItem->setIcon(QIcon(*m_pItem->icon()->pixmap()));
+// m_pIconButton->setIcon(QIcon(*m_pItem->icon()->pixmap()));
+// }
+// }
+// }
void OptionsWidget_textIcons::itemSelectionChanged()
{
int i = m_pTable->currentRow();
m_pDel->setEnabled(i >= 0 && i < m_pTable->rowCount());
}
-void OptionsWidget_textIcons::itemClicked(QTableWidgetItem *i)
-{
- if (i->column()!=1) return;
- if (m_iLastEditedRow==i->row()) return;
-
- m_pItem=(TextIconTableItem *)i;
- if(m_pIconButton)
- {
- delete m_pIconButton;
- m_pIconButton = NULL;
- }
- if(m_pBrowseButton)
- {
- delete m_pBrowseButton;
- m_pBrowseButton = NULL;
- }
- if (m_pBox)
+void OptionsWidget_textIcons::currentItemChanged(QTableWidgetItem *cur, QTableWidgetItem *prev)
+{
+ if(prev)
{
- delete m_pBox;
- m_pBox = NULL;
+ QWidget * pOldWidget = m_pTable->cellWidget(prev->row(),1);
+ if(pOldWidget)
+ m_pTable->setCellWidget(prev->row(),1,NULL);
}
- m_pBox=new KviTalHBox(0);
- m_pBox->setSpacing(0);
- m_pBox->setMargin(0);
+ if(!cur) return;
+ if(cur->column()!=1) return;
+ if(m_iLastEditedRow==cur->row() || cur == prev) return;
+
+ m_pItem=(TextIconTableItem *)cur;
+
+ KviTalHBox * pBox=new KviTalHBox(0);
+ pBox->setSpacing(0);
+ pBox->setMargin(0);
- m_pIconButton=new QToolButton(m_pBox);
- m_pIconButton->setMinimumWidth(150);
- m_pIconButton->setIcon(QIcon(i->icon()));
- connect(m_pIconButton,SIGNAL(clicked()),this,SLOT(doPopup()));
+ QToolButton * pIconButton=new QToolButton(pBox);
+ pIconButton->setMinimumWidth(150);
+ pIconButton->setIcon(QIcon(cur->icon()));
+ connect(pIconButton,SIGNAL(clicked()),this,SLOT(doPopup()));
- m_pBrowseButton=new QToolButton(m_pBox);
- m_pBrowseButton->setText("...");
- connect(m_pBrowseButton,SIGNAL(clicked()),this,SLOT(chooseFromFile()));
+// FIXME: this does not work currently!
+// QToolButton * pBrowseButton=new QToolButton(pBox);
+// pBrowseButton->setText("...");
+// connect(pBrowseButton,SIGNAL(clicked()),this,SLOT(chooseFromFile()));
- m_pTable->setCellWidget(i->row(),1,m_pBox);
- m_iLastEditedRow=i->row();
+ m_pTable->setCellWidget(cur->row(),1,pBox);
+ m_iLastEditedRow=cur->row();
}
void OptionsWidget_textIcons::addClicked()
@@ -250,21 +253,6 @@ void OptionsWidget_textIcons::delClicked()
if((i > -1) && (i < m_pTable->rowCount()))
{
- if(m_pIconButton)
- {
- delete m_pIconButton;
- m_pIconButton=NULL;
- }
- if(m_pBrowseButton)
- {
- delete m_pBrowseButton;
- m_pBrowseButton=NULL;
- }
- if (m_pBox)
- {
- delete m_pBox;
- m_pBox=NULL;
- }
m_pTable->removeRow(i);
if(m_pTable->rowCount() == 0) m_pDel->setEnabled(false);
}