work on custom icons feature

git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@67 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
tariq
2006-04-02 02:16:47 +00:00
parent df8a6969af
commit baac763ff0
8 changed files with 154 additions and 98 deletions

View File

@@ -67,5 +67,12 @@ done(0);
void CEditGroupDialog::OnIconDlg(){
CSelectIconDlg dlg(db,this);
dlg.exec();
int r=dlg.exec();
if(r!=-1){
ComboIconPicker->clear();
for(int i=0;i<db->numIcons();i++)
ComboIconPicker->insertItem(db->icon(i),"",i);
IconID=r;
ComboIconPicker->setCurrentItem(IconID);
}
}

View File

@@ -31,14 +31,24 @@
CSelectIconDlg::CSelectIconDlg(Database* database,QWidget* parent,const char* name, bool modal, Qt::WFlags fl):QDialog(parent,name,modal,fl){
setupUi(this);
db=database;
connect(Button_AddIcon, SIGNAL(clicked()), this, SLOT(OnAddIcon()));
connect(Button_PickIcon, SIGNAL(clicked()), this, SLOT(OnPickIcon()));
connect(Button_Cancel, SIGNAL(clicked()), this, SLOT(OnCancel()));
CtxMenu=new QMenu(this);
DeleteAction=CtxMenu->addAction(*Icon_EditDelete,tr("Delete"));
CustomIconsModified=false;
updateView();
}
void CSelectIconDlg::updateView(){
List->clear();
for(int i=0; i<db->numIcons(); i++){
QListWidgetItem* item;
if(i<BUILTIN_ICONS)
List->addItem(new QListWidgetItem(QIcon(db->icon(i)),QString::number(i)));
List->addItem(item=new QListWidgetItem(QIcon(db->icon(i)),QString::number(i)));
else
List->addItem(new QListWidgetItem(QIcon(db->icon(i)),"["+QString::number(i)+"]"));
List->addItem(item=new QListWidgetItem(QIcon(db->icon(i)),"["+QString::number(i)+"]"));
item->setData(32,i);
}
}
@@ -55,4 +65,27 @@ for(int i=0;i<filenames.size();i++){
}
if(errors.size())
QMessageBox::warning(this,tr("Error"),tr("An error occured while loading the icon(s):\n"));
CustomIconsModified=true;
updateView();
}
void CSelectIconDlg::contextMenuEvent(QContextMenuEvent *event){
QListWidgetItem* item=List->itemAt(List->mapFromParent(event->pos()));
if(!item)return;
if(item->data(32).toInt()<BUILTIN_ICONS)
DeleteAction->setDisabled(true);
else
DeleteAction->setDisabled(false);
event->accept();
CtxMenu->popup(event->globalPos());
}
void CSelectIconDlg::OnPickIcon(){
done(List->currentItem()->data(32).toInt());
}
void CSelectIconDlg::OnCancel(){
done(-1);
}

View File

@@ -21,6 +21,9 @@
#ifndef _SELECT_ICON_DLG_
#define _SELECT_ICON_DLG_
#include <QContextMenuEvent>
#include <QMenu>
#include <QAction>
#include "main.h"
#include "Database.h"
#include "ui_SelectIconDlg.h"
@@ -29,13 +32,22 @@ class CSelectIconDlg:public QDialog, public Ui_SelectIconDlg{
Q_OBJECT
public:
CSelectIconDlg(Database* db,QWidget* parent = 0, const char* name = 0, bool modal = false, Qt::WFlags fl = 0);
bool CustomIconsModified;
public slots:
void OnAddIcon();
void OnPickIcon();
void OnCancel();
private:
Database* db;
void updateView();
QMenu* CtxMenu;
QAction* DeleteAction;
protected:
virtual void contextMenuEvent(QContextMenuEvent *event);
};