|
|
|
//=============================================================================
|
|
|
|
//
|
|
|
|
// File : managementdialog.cpp
|
|
|
|
// Created on Sat 30 Dec 2006 14:54:56 by Szymon Stefanek
|
|
|
|
//
|
|
|
|
// This file is part of the KVIrc IRC Client distribution
|
|
|
|
// Copyright (C) 2006 Szymon Stefanek <pragma at kvirc dot net>
|
|
|
|
//
|
|
|
|
// This program is FREE software. You can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU General Public License
|
|
|
|
// as published by the Free Software Foundation; either version 2
|
|
|
|
// of the License, or (at your opinion) any later version.
|
|
|
|
//
|
|
|
|
// This program is distributed in the HOPE that it will be USEFUL,
|
|
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
// See the GNU General Public License for more details.
|
|
|
|
//
|
|
|
|
// You should have received a copy of the GNU General Public License
|
|
|
|
// along with this program. If not, write to the Free Software Foundation,
|
|
|
|
// Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
//
|
|
|
|
//=============================================================================
|
|
|
|
|
|
|
|
#define LVI_ICON_SIZE 32
|
|
|
|
#define LVI_BORDER 4
|
|
|
|
#define LVI_SPACING 8
|
|
|
|
#define LVI_MINIMUM_TEXT_WIDTH 300
|
|
|
|
#define LVI_MINIMUM_CELL_WIDTH (LVI_MINIMUM_TEXT_WIDTH + LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING + LVI_BORDER)
|
|
|
|
|
|
|
|
#include "managementdialog.h"
|
|
|
|
#include "packthemedialog.h"
|
|
|
|
#include "savethemedialog.h"
|
|
|
|
#include "themefunctions.h"
|
|
|
|
|
|
|
|
#include "kvi_iconmanager.h"
|
|
|
|
#include "kvi_msgbox.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include <tqlayout.h>
|
|
|
|
#include <tqpushbutton.h>
|
|
|
|
#include "kvi_tal_listbox.h"
|
|
|
|
#include <tqlineedit.h>
|
|
|
|
#include <kvi_tal_textedit.h>
|
|
|
|
#include <tqregexp.h>
|
|
|
|
#include <tqmessagebox.h>
|
|
|
|
#include <tqdir.h>
|
|
|
|
#include <tqstringlist.h>
|
|
|
|
#include <tqdatetime.h>
|
|
|
|
#include <tqfiledialog.h>
|
|
|
|
#include "kvi_tal_popupmenu.h"
|
|
|
|
#include <tqcombobox.h>
|
|
|
|
#include <tqpainter.h>
|
|
|
|
#include <tqtooltip.h>
|
|
|
|
#include <tqimage.h>
|
|
|
|
#include <kvi_tal_textedit.h>
|
|
|
|
//#include <tqmultilineedit.h>
|
|
|
|
#include <tqbuffer.h>
|
|
|
|
|
|
|
|
#include "kvi_options.h"
|
|
|
|
#include "kvi_locale.h"
|
|
|
|
#include "kvi_config.h"
|
|
|
|
#include "kvi_fileutils.h"
|
|
|
|
#include "kvi_app.h"
|
|
|
|
#include "kvi_frame.h"
|
|
|
|
#include "kvi_iconmanager.h"
|
|
|
|
#include "kvi_internalcmd.h"
|
|
|
|
#include "kvi_styled_controls.h"
|
|
|
|
#include "kvi_doublebuffer.h"
|
|
|
|
#include "kvi_packagefile.h"
|
|
|
|
#include "kvi_fileextensions.h"
|
|
|
|
#include "kvi_filedialog.h"
|
|
|
|
#include "kvi_dynamictooltip.h"
|
|
|
|
|
|
|
|
#include <stdlib.h> // rand & srand
|
|
|
|
|
|
|
|
extern TQRect g_rectManagementDialogGeometry;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
KviThemeListBoxItem::KviThemeListBoxItem(KviTalListBox * box,KviThemeInfo * inf)
|
|
|
|
: KviTalListBoxText(box)
|
|
|
|
{
|
|
|
|
m_pThemeInfo = inf;
|
|
|
|
TQString t;
|
|
|
|
t = "<nobr><b>";
|
|
|
|
t += inf->name();
|
|
|
|
t += "</b>";
|
|
|
|
|
|
|
|
if(!inf->version().isEmpty()) {
|
|
|
|
t += "[";
|
|
|
|
t += inf->version();
|
|
|
|
t += "]";
|
|
|
|
}
|
|
|
|
|
|
|
|
if(!inf->author().isEmpty()) {
|
|
|
|
t += " <font color=\"#a0a0a0\"> ";
|
|
|
|
t += __tr2qs_ctx("by","theme");
|
|
|
|
t += " ";
|
|
|
|
t += inf->author();
|
|
|
|
t += "</font>";
|
|
|
|
}
|
|
|
|
|
|
|
|
t += "</nobr>";
|
|
|
|
t += "<br><nobr><font size=\"-1\">";
|
|
|
|
t += inf->description();
|
|
|
|
t += "</font></nobr>";
|
|
|
|
m_pText = new KviTalSimpleRichText(t,box->font());
|
|
|
|
int iWidth = box->visibleWidth();
|
|
|
|
if(iWidth < LVI_MINIMUM_CELL_WIDTH)iWidth = LVI_MINIMUM_CELL_WIDTH;
|
|
|
|
iWidth -= LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING + LVI_BORDER;
|
|
|
|
m_pText->setWidth(iWidth);
|
|
|
|
}
|
|
|
|
|
|
|
|
KviThemeListBoxItem::~KviThemeListBoxItem()
|
|
|
|
{
|
|
|
|
delete m_pThemeInfo;
|
|
|
|
delete m_pText;
|
|
|
|
}
|
|
|
|
|
|
|
|
void KviThemeListBoxItem::paint(TQPainter * p)
|
|
|
|
{
|
|
|
|
KviTalListBoxText::paint(p);
|
|
|
|
p->drawPixmap(LVI_BORDER,LVI_BORDER, *(g_pIconManager->getBigIcon(TQString(KVI_BIGICON_THEME))) );
|
|
|
|
int afterIcon = LVI_BORDER + LVI_ICON_SIZE + LVI_SPACING;
|
|
|
|
int www = p->window().width() - (afterIcon + LVI_BORDER);
|
|
|
|
m_pText->setWidth(www);
|
|
|
|
m_pText->draw(p,afterIcon,LVI_BORDER,TQRect(afterIcon,LVI_BORDER,www,p->window().height() - (LVI_BORDER * 2)),listBox()->viewport()->colorGroup());
|
|
|
|
}
|
|
|
|
|
|
|
|
int KviThemeListBoxItem::height(const KviTalListBox * lb) const
|
|
|
|
{
|
|
|
|
int iHeight = m_pText->height() + (2 * LVI_BORDER);
|
|
|
|
if(iHeight < (LVI_ICON_SIZE + (2 * LVI_BORDER)))iHeight = LVI_ICON_SIZE + (2 * LVI_BORDER);
|
|
|
|
return iHeight;
|
|
|
|
}
|
|
|
|
|
|
|
|
KviThemeManagementDialog * KviThemeManagementDialog::m_pInstance = 0;
|
|
|
|
|
|
|
|
|
|
|
|
KviThemeManagementDialog::KviThemeManagementDialog(TQWidget * parent)
|
|
|
|
: TQDialog(parent,"theme_options_widget")
|
|
|
|
{
|
|
|
|
setCaption(__tr2qs_ctx("Manage Themes - KVIrc","theme"));
|
|
|
|
setIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_THEME)));
|
|
|
|
|
|
|
|
setModal(true);
|
|
|
|
|
|
|
|
m_pInstance = this;
|
|
|
|
|
|
|
|
TQGridLayout * g = new TQGridLayout(this,3,2,4,4);
|
|
|
|
|
|
|
|
KviTalHBox *hb = new KviTalHBox(this);
|
|
|
|
g->addMultiCellWidget(hb,0,0,0,1);
|
|
|
|
|
|
|
|
KviStyledToolButton * tb;
|
|
|
|
TQFrame * sep;
|
|
|
|
|
|
|
|
tb = new KviStyledToolButton(hb);
|
|
|
|
tb->setIconSet(*(g_pIconManager->getBigIcon(KVI_BIGICON_SAVE)));
|
|
|
|
tb->setUsesBigPixmap(true);
|
|
|
|
TQToolTip::add(tb,__tr2qs_ctx("Save Current Theme...","theme"));
|
|
|
|
connect(tb,TQ_SIGNAL(clicked()),this,TQ_SLOT(saveCurrentTheme()));
|
|
|
|
|
|
|
|
sep = new TQFrame(hb);
|
|
|
|
sep->setFrameStyle(TQFrame::VLine | TQFrame::Sunken);
|
|
|
|
sep->setMinimumWidth(12);
|
|
|
|
|
|
|
|
m_pPackThemeButton = new KviStyledToolButton(hb);
|
|
|
|
m_pPackThemeButton->setIconSet(*(g_pIconManager->getBigIcon(KVI_BIGICON_PACK)));
|
|
|
|
m_pPackThemeButton->setUsesBigPixmap(true);
|
|
|
|
TQToolTip::add(m_pPackThemeButton,__tr2qs_ctx("Export Selected Themes to a Distributable Package","theme"));
|
|
|
|
connect(m_pPackThemeButton,TQ_SIGNAL(clicked()),this,TQ_SLOT(packTheme()));
|
|
|
|
|
|
|
|
m_pDeleteThemeButton = new KviStyledToolButton(hb);
|
|
|
|
m_pDeleteThemeButton->setIconSet(*(g_pIconManager->getBigIcon(KVI_BIGICON_REMOVE)));
|
|
|
|
m_pDeleteThemeButton->setUsesBigPixmap(true);
|
|
|
|
TQToolTip::add(m_pDeleteThemeButton,__tr2qs_ctx("Delete Selected Themes","theme"));
|
|
|
|
connect(m_pDeleteThemeButton,TQ_SIGNAL(clicked()),this,TQ_SLOT(deleteTheme()));
|
|
|
|
|
|
|
|
sep = new TQFrame(hb);
|
|
|
|
sep->setFrameStyle(TQFrame::VLine | TQFrame::Sunken);
|
|
|
|
sep->setMinimumWidth(12);
|
|
|
|
|
|
|
|
tb = new KviStyledToolButton(hb);
|
|
|
|
tb->setIconSet(*(g_pIconManager->getBigIcon(KVI_BIGICON_OPEN)));
|
|
|
|
tb->setUsesBigPixmap(true);
|
|
|
|
TQToolTip::add(tb,__tr2qs_ctx("Install Theme Package From Disk","theme"));
|
|
|
|
connect(tb,TQ_SIGNAL(clicked()),this,TQ_SLOT(installFromFile()));
|
|
|
|
|
|
|
|
tb = new KviStyledToolButton(hb);
|
|
|
|
tb->setIconSet(*(g_pIconManager->getBigIcon(KVI_BIGICON_WWW)));
|
|
|
|
tb->setUsesBigPixmap(true);
|
|
|
|
TQToolTip::add(tb,__tr2qs_ctx("Get More Themes...","theme"));
|
|
|
|
connect(tb,TQ_SIGNAL(clicked()),this,TQ_SLOT(getMoreThemes()));
|
|
|
|
|
|
|
|
TQWidget *w= new TQWidget(hb);
|
|
|
|
w->setSizePolicy(TQSizePolicy::Expanding,TQSizePolicy::Minimum);
|
|
|
|
|
|
|
|
m_pListBox = new KviTalListBox(this);
|
|
|
|
m_pListBox->setMinimumHeight(400);
|
|
|
|
m_pListBox->setMinimumWidth(400);
|
|
|
|
m_pListBox->setSelectionMode(KviTalListBox::Extended);
|
|
|
|
connect(m_pListBox,TQ_SIGNAL(doubleClicked(KviTalListBoxItem *)),this,TQ_SLOT(applyTheme(KviTalListBoxItem *)));
|
|
|
|
connect(m_pListBox,TQ_SIGNAL(contextMenuRequested(KviTalListBoxItem *,const TQPoint &)),
|
|
|
|
this,TQ_SLOT(contextMenuRequested(KviTalListBoxItem *,const TQPoint &)));
|
|
|
|
connect(m_pListBox,TQ_SIGNAL(selectionChanged()),this,TQ_SLOT(enableDisableButtons()));
|
|
|
|
g->addMultiCellWidget(m_pListBox,1,1,0,1);
|
|
|
|
|
|
|
|
KviDynamicToolTip * tip = new KviDynamicToolTip(m_pListBox);
|
|
|
|
connect(tip,TQ_SIGNAL(tipRequest(KviDynamicToolTip *,const TQPoint &)),this,TQ_SLOT(tipRequest(KviDynamicToolTip *,const TQPoint &)));
|
|
|
|
|
|
|
|
TQPushButton * b = new TQPushButton(__tr2qs("Close"),this);
|
|
|
|
connect(b,TQ_SIGNAL(clicked()),this,TQ_SLOT(closeClicked()));
|
|
|
|
g->addWidget(b,2,1);
|
|
|
|
|
|
|
|
g->setRowStretch(1,0);
|
|
|
|
g->setColStretch(0,1);
|
|
|
|
|
|
|
|
fillThemeBox();
|
|
|
|
m_pContextPopup = new KviTalPopupMenu(this);
|
|
|
|
|
|
|
|
if(g_rectManagementDialogGeometry.y() < 5)
|
|
|
|
{
|
|
|
|
g_rectManagementDialogGeometry.setY(5);
|
|
|
|
}
|
|
|
|
resize(g_rectManagementDialogGeometry.width(),
|
|
|
|
g_rectManagementDialogGeometry.height());
|
|
|
|
move(g_rectManagementDialogGeometry.x(),
|
|
|
|
g_rectManagementDialogGeometry.y());
|
|
|
|
}
|
|
|
|
|
|
|
|
KviThemeManagementDialog::~KviThemeManagementDialog()
|
|
|
|
{
|
|
|
|
g_rectManagementDialogGeometry = TQRect(pos().x(),pos().y(),size().width(),size().height());
|
|
|
|
m_pInstance = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
void KviThemeManagementDialog::closeClicked()
|
|
|
|
{
|
|
|
|
delete this;
|
|
|
|
m_pInstance = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void KviThemeManagementDialog::display()
|
|
|
|
{
|
|
|
|
if(!m_pInstance)
|
|
|
|
m_pInstance = new KviThemeManagementDialog(g_pFrame);
|
|
|
|
m_pInstance->show();
|
|
|
|
}
|
|
|
|
|
|
|
|
void KviThemeManagementDialog::cleanup()
|
|
|
|
{
|
|
|
|
if(!m_pInstance)return;
|
|
|
|
delete m_pInstance;
|
|
|
|
m_pInstance = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
void KviThemeManagementDialog::packTheme()
|
|
|
|
{
|
|
|
|
KviPointerList<KviThemeInfo> dl;
|
|
|
|
dl.setAutoDelete(false);
|
|
|
|
for(KviThemeListBoxItem * it = (KviThemeListBoxItem *)m_pListBox->firstItem();it;it = (KviThemeListBoxItem *)it->next())
|
|
|
|
{
|
|
|
|
if(it->isSelected())
|
|
|
|
dl.append(it->themeInfo());
|
|
|
|
}
|
|
|
|
if(dl.isEmpty())return;
|
|
|
|
|
|
|
|
KviPackThemeDialog * pDialog = new KviPackThemeDialog(this,&dl);
|
|
|
|
pDialog->exec();
|
|
|
|
delete pDialog;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void KviThemeManagementDialog::contextMenuRequested(KviTalListBoxItem * it,const TQPoint & pos)
|
|
|
|
{
|
|
|
|
if(it)
|
|
|
|
{
|
|
|
|
m_pListBox->setCurrentItem(it);
|
|
|
|
m_pContextPopup->clear();
|
|
|
|
m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_MINUS)),__tr2qs_ctx("&Remove Theme","theme"),this,TQ_SLOT(deleteTheme()));
|
|
|
|
m_pContextPopup->insertItem(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ACCEPT)),__tr2qs_ctx("&Apply Theme","theme"),this,TQ_SLOT(applyCurrentTheme()));
|
|
|
|
m_pContextPopup->popup(pos);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void KviThemeManagementDialog::applyTheme ( KviTalListBoxItem * it)
|
|
|
|
{
|
|
|
|
if(it)m_pListBox->setCurrentItem(it);
|
|
|
|
applyCurrentTheme();
|
|
|
|
}
|
|
|
|
|
|
|
|
void KviThemeManagementDialog::applyCurrentTheme()
|
|
|
|
{
|
|
|
|
KviThemeListBoxItem * it = (KviThemeListBoxItem *)m_pListBox->item(m_pListBox->currentItem());
|
|
|
|
if(!it)return;
|
|
|
|
|
|
|
|
if(KviMessageBox::yesNo(__tr2qs_ctx("Apply theme - KVIrc","theme"),
|
|
|
|
__tr2qs_ctx("Do you wish to apply theme \"%Q\" (version %Q)?","theme"),
|
|
|
|
&(it->themeInfo()->name()),&(it->themeInfo()->version())))
|
|
|
|
{
|
|
|
|
TQString szPath = it->themeInfo()->absoluteDirectory();
|
|
|
|
if(szPath.isEmpty())return;
|
|
|
|
|
|
|
|
KviThemeInfo out;
|
|
|
|
if(!KviTheme::load(szPath,out))
|
|
|
|
{
|
|
|
|
TQString szErr = out.lastError();
|
|
|
|
TQString szMsg;
|
|
|
|
KviTQString::sprintf(szMsg,__tr2qs_ctx("Failed to apply the specified theme: %Q","theme"),&szErr);
|
|
|
|
TQMessageBox::critical(this,__tr2qs_ctx("Apply theme - KVIrc","theme"),szMsg,
|
|
|
|
TQMessageBox::Ok,TQMessageBox::NoButton,TQMessageBox::NoButton);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void KviThemeManagementDialog::deleteTheme()
|
|
|
|
{
|
|
|
|
for(KviThemeListBoxItem * pItem = (KviThemeListBoxItem *)m_pListBox->firstItem();pItem;pItem = (KviThemeListBoxItem *)pItem->next())
|
|
|
|
{
|
|
|
|
if(pItem->isSelected())
|
|
|
|
{
|
|
|
|
if(!KviMessageBox::yesNo(__tr2qs_ctx("Delete Theme - KVIrc","theme"),
|
|
|
|
__tr2qs_ctx("Do you really wish to delete theme \"%Q\" (version %Q)?","theme"),
|
|
|
|
&(pItem->themeInfo()->name()),&(pItem->themeInfo()->version())))goto jump_out;
|
|
|
|
|
|
|
|
KviFileUtils::deleteDir(pItem->themeInfo()->absoluteDirectory());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
jump_out:
|
|
|
|
fillThemeBox();
|
|
|
|
}
|
|
|
|
|
|
|
|
void KviThemeManagementDialog::installFromFile()
|
|
|
|
{
|
|
|
|
int iThemeCount=0;
|
|
|
|
TQString szFileName;
|
|
|
|
TQString szError;
|
|
|
|
|
|
|
|
if(!KviFileDialog::askForOpenFileName(szFileName,__tr2qs_ctx("Open Theme - KVIrc","theme"),TQString(),"*.kvt"))
|
|
|
|
return;
|
|
|
|
|
|
|
|
if(!KviThemeFunctions::installThemePackage(szFileName,szError,this))
|
|
|
|
{
|
|
|
|
KviMessageBox::information(szError);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
fillThemeBox();
|
|
|
|
}
|
|
|
|
|
|
|
|
void KviThemeManagementDialog::getMoreThemes()
|
|
|
|
{
|
|
|
|
if(!g_pFrame)return;
|
|
|
|
g_pFrame->executeInternalCommand(KVI_INTERNALCOMMAND_OPENURL_KVIRC_THEMES);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KviThemeManagementDialog::saveCurrentTheme()
|
|
|
|
{
|
|
|
|
KviSaveThemeDialog * pSaveThemeDialog = new KviSaveThemeDialog(this);
|
|
|
|
pSaveThemeDialog->exec();
|
|
|
|
delete pSaveThemeDialog;
|
|
|
|
fillThemeBox();
|
|
|
|
}
|
|
|
|
|
|
|
|
void KviThemeManagementDialog::fillThemeBox(const TQString &szDir)
|
|
|
|
{
|
|
|
|
TQDir d(szDir);
|
|
|
|
|
|
|
|
TQStringList sl = d.entryList(TQDir::Dirs);
|
|
|
|
|
|
|
|
for(TQStringList::Iterator it = sl.begin();it != sl.end();++it)
|
|
|
|
{
|
|
|
|
if(*it == ".")continue;
|
|
|
|
if(*it == "..")continue;
|
|
|
|
|
|
|
|
TQString szTest = szDir;
|
|
|
|
szTest += KVI_PATH_SEPARATOR_CHAR;
|
|
|
|
szTest += *it;
|
|
|
|
|
|
|
|
KviThemeInfo * inf = new KviThemeInfo();
|
|
|
|
if(inf->loadFromDirectory(szTest))
|
|
|
|
{
|
|
|
|
inf->setSubdirectory(*it);
|
|
|
|
KviThemeListBoxItem * item = 0;
|
|
|
|
item = new KviThemeListBoxItem(m_pListBox,inf);
|
|
|
|
} else {
|
|
|
|
delete inf;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void KviThemeManagementDialog::fillThemeBox()
|
|
|
|
{
|
|
|
|
m_pListBox->clear();
|
|
|
|
|
|
|
|
TQString szDir;
|
|
|
|
g_pApp->getGlobalKvircDirectory(szDir,KviApp::Themes);
|
|
|
|
fillThemeBox(szDir);
|
|
|
|
g_pApp->getLocalKvircDirectory(szDir,KviApp::Themes);
|
|
|
|
fillThemeBox(szDir);
|
|
|
|
|
|
|
|
enableDisableButtons();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool KviThemeManagementDialog::hasSelectedItems()
|
|
|
|
{
|
|
|
|
for(KviTalListBoxItem * it = m_pListBox->firstItem();it;it = it->next())
|
|
|
|
{
|
|
|
|
if(it->isSelected())return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void KviThemeManagementDialog::enableDisableButtons()
|
|
|
|
{
|
|
|
|
bool b = hasSelectedItems();
|
|
|
|
m_pPackThemeButton->setEnabled(b);
|
|
|
|
m_pDeleteThemeButton->setEnabled(b);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KviThemeManagementDialog::closeEvent(TQCloseEvent * e)
|
|
|
|
{
|
|
|
|
e->ignore();
|
|
|
|
delete this;
|
|
|
|
}
|
|
|
|
|
|
|
|
void KviThemeManagementDialog::tipRequest(KviDynamicToolTip *pTip,const TQPoint &pnt)
|
|
|
|
{
|
|
|
|
KviThemeListBoxItem * it = (KviThemeListBoxItem *)(m_pListBox->itemAt(pnt));
|
|
|
|
|
|
|
|
if(!it)return;
|
|
|
|
|
|
|
|
KviThemeInfo * pThemeInfo = it->themeInfo();
|
|
|
|
|
|
|
|
TQString szThemeDescription;
|
|
|
|
|
|
|
|
KviThemeFunctions::getThemeHtmlDescription(
|
|
|
|
szThemeDescription,
|
|
|
|
pThemeInfo->name(),
|
|
|
|
pThemeInfo->version(),
|
|
|
|
pThemeInfo->description(),
|
|
|
|
pThemeInfo->subdirectory(),
|
|
|
|
pThemeInfo->application(),
|
|
|
|
pThemeInfo->author(),
|
|
|
|
pThemeInfo->date(),
|
|
|
|
pThemeInfo->themeEngineVersion(),
|
|
|
|
pThemeInfo->mediumScreenshot(),
|
|
|
|
0
|
|
|
|
);
|
|
|
|
|
|
|
|
pTip->tip(m_pListBox->itemRect(it),szThemeDescription);
|
|
|
|
}
|