summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2004-07-14 07:17:17 (UTC)
committer llornkcor <llornkcor>2004-07-14 07:17:17 (UTC)
commitc70dbfde7f9605be295cdc7f789c7e3e8d823d39 (patch) (side-by-side diff)
tree75c5fa13be08c30515685f1a6ef6b237809bbc71
parenta309681894af2632f9db2fcc252a058f218a82b2 (diff)
downloadopie-c70dbfde7f9605be295cdc7f789c7e3e8d823d39.zip
opie-c70dbfde7f9605be295cdc7f789c7e3e8d823d39.tar.gz
opie-c70dbfde7f9605be295cdc7f789c7e3e8d823d39.tar.bz2
allow new user to create new doc on first startup
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/zsafe/zsafe.cpp137
-rw-r--r--noncore/apps/zsafe/zsafe.h1
2 files changed, 54 insertions, 84 deletions
diff --git a/noncore/apps/zsafe/zsafe.cpp b/noncore/apps/zsafe/zsafe.cpp
index f3d57f8..41c572a 100644
--- a/noncore/apps/zsafe/zsafe.cpp
+++ b/noncore/apps/zsafe/zsafe.cpp
@@ -337,65 +337,65 @@ static const char* const general_data[] = {
"QtQt.d.e.f.g.h.i.c.j.dQt.kQt",
".a.l.m.n.o.p.q.r.s.t.u.v.wQt",
".x.y.z.A.B.C.D.p.q.E.F.G.H.I",
".I.J.K.L.M.N.O.P.o.p.Q.R.S.T",
"Qt.U.V.L.W.X.Y.Z.0.P.1.s.2.3",
"Qt.3.X.W.4.X.5.6.7.8.9.s#.##",
"QtQt#a.X#b#c.5.6#d#e#f#g#h#i",
"QtQtQt#j.7#k.6#d#l#m#n#o#p#q",
"QtQtQtQt.k#r#s#m#t.H#u#v#w#x",
"QtQtQtQtQtQt.k#y#z.v#A#B#C#x",
"QtQtQtQtQtQtQtQt.k#D.w#s#E.k",
"QtQtQtQtQtQtQtQtQtQtQt#x#FQt"};
// exit ZSafe and clear the clipboard for security reasons
void ZSafe::exitZs (int ec)
{
QClipboard *cb = QApplication::clipboard();
cb->clear();
exit (ec);
}
// save the configuration into the file
void ZSafe::saveConf ()
{
if (conf)
{
delete conf;
#ifdef DESKTOP
#ifndef Q_WS_WIN
- conf = new QSettings ();
+ conf = new QSettings();
conf->insertSearchPath (QSettings::Unix, QDir::homeDirPath());
#else
conf = new QSettings (cfgFile);
conf->insertSearchPath (QSettings::Unix, cfgFile);
#endif
#else
conf = new Config (cfgFile, Config::File);
conf->setGroup ("zsafe");
#endif
}
}
/*
* Constructs a ZSafe which is a child of 'parent', with the
* name 'name' and widget flags set to 'f'
*
* The dialog will by default be modeless, unless you set 'modal' to
* TRUE to construct a modal dialog.
*/
ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl )
: QDialog( parent, name, modal, fl ),
Edit(0l), Delete(0l), Find(0l), New(0l), ListView(0l)
{
IsCut = false;
IsCopy = false;
modified = false;
showpwd = false;
// set the config file
cfgFile=QDir::homeDirPath();
cfgFile += "/.zsafe.cfg";
@@ -464,117 +464,114 @@ ZSafe::ZSafe( QWidget* parent, const char* name, bool modal, WFlags fl )
setName( "ZSafe" );
#ifdef DESKTOP
#ifdef Q_WS_WIN
setGeometry(100, 150, DeskW, DeskH-30 );
#else
resize( DeskW, DeskH-30 );
#endif
#else
#ifdef JPATCH_HDE
int DeskS;
if(DeskW > DeskH)
{
DeskS = DeskW;
}
else
{
DeskS = DeskH;
}
resize( DeskW, DeskH );
setMinimumSize( QSize( DeskS, DeskS ) );
setMaximumSize( QSize( DeskS, DeskS ) );
#else
resize( DeskW, DeskH-30 );
#endif
#endif
setCaption( tr( "ZSafe" ) );
QString zsafeAppDirPath = QDir::homeDirPath() + "/Documents/application/zsafe";
QString filename = conf->readEntry(APP_KEY+"document");
- if (filename.isEmpty() || filename.isNull())
+ if ( !QFileInfo(filename).exists() || !QDir(zsafeAppDirPath).exists() )
{
-
// check if the directory application exists, if not
// create it
// #ifndef Q_WS_WIN
// QString d1("Documents/application");
// #else
QString d1(QDir::homeDirPath() + "/Documents/application");
// #endif
QDir pd1(d1);
if (!pd1.exists())
{
-
QDir pd2(QDir::homeDirPath() + "/Documents");
if (!pd2.exists()) {
- QDir pd3(QDir::homeDirPath());
+ QDir pd3(QDir::homeDirPath());
if (!pd3.mkdir("Documents", FALSE)) {
}
}
if (!pd2.mkdir("application", FALSE))
{
QMessageBox::critical( 0, tr("ZSafe"),
#ifdef JPATCH_HDE
tr("<P>Can't create directory ..."+d1+"</P><P>ZSafe will now exit.</P>"));
#else
tr("<P>Can't create directory %1</P><P>ZSafe will now exit.</P>").arg(d1));
#endif
exitZs (1);
}
}
// #ifndef Q_WS_WIN
// QString d2("Documents/application/zsafe");
// #else
QString d2(QDir::homeDirPath() + "/Documents/application/zsafe");
// #endif
QDir pd2(d2);
if (!pd2.exists())
{
if (!pd1.mkdir("zsafe", FALSE))
{
QMessageBox::critical( 0, tr("ZSafe"),
#ifdef JPATCH_HDE
tr("<P>Can't create directory ...//Documents/application/zsafe</P><P>ZSafe will now exit.</P"));
#else
tr("<P>Can't create directory %1</P><P>ZSafe will now exit.</P>").arg(d2));
#endif
exitZs (1);
}
}
- // set the default filename
filename = zsafeAppDirPath + "/passwords.zsf";
// save the current filename to the config file
conf->writeEntry(APP_KEY+"document", filename);
saveConf();
}
//if (filename == "INVALIDPWD")
//filename = "";
QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
#ifdef Q_WS_WIN
this->setCaption("Qt ZSafe: " + ti);
#else
this->setCaption("ZSafe: " + ti);
#endif
selectedItem = NULL;
lastSearchedCategory = NULL;
lastSearchedItem = NULL;
lastSearchedName = "";
lastSearchedUsername = "";
lastSearchedComment = "";
infoForm = new InfoForm(this, "show_info", TRUE);
categoryDialog = NULL;
infoForm->setIcon( image0);
// add a menu bar
QMenuBar *menu = new QMenuBar( this );
// add file menu
// QPopupMenu *file = new QPopupMenu( this );
@@ -1310,90 +1307,65 @@ void ZSafe::removeAsciiFile()
this,
"ZSafe File Dialog"
"Choose a text file" );
#endif
if (fn && fn.length() > 0 )
{
QFile f( fn );
if ( !f.remove() )
{
#ifndef NO_OPIE
owarn << "Could not remove file " << fn << oendl;
#else
qWarning( QString("Could not remove file %1").arg(fn),2000 );
#endif
QMessageBox::critical( 0, tr("ZSafe"),
tr("Could not remove text file.") );
return;
}
}
}
void ZSafe::writeAllEntries()
{
if (filename.isEmpty())
{
QMessageBox::critical( 0, tr("ZSafe"),
tr("No document defined.\nYou have to create a new document"));
return;
}
// open the file dialog
-#ifndef DESKTOP
-#ifndef NO_OPIE
- QMap<QString, QStringList> mimeTypes;
- mimeTypes.insert(tr("All"), QStringList() );
- mimeTypes.insert(tr("Text"), "text/*" );
- QString fn = OFileDialog::getSaveFileName( OFileSelector::EXTENDED_ALL,
- QDir::homeDirPath() + "/Documents/application/zsafe",
- QString::null,
- mimeTypes,
- this,
- tr ("Export text file"));
-#else
- QString fn = ScQtFileEdit::getSaveAsFileName(this,
- tr ("Export text file"),
- QDir::homeDirPath() + "/Documents/application/zsafe",
- "*.txt");
-#endif
-#else
- QString fn = QFileDialog::getSaveFileName(
- QDir::homeDirPath() + "/Documents/application/zsafe",
- "ZSafe (*.txt)",
- this,
- "ZSafe File Dialog"
- "Choose a text file" );
-#endif
-
+ QString fn = zsaveDialog();
// open the new document
if (fn && fn.length() > 0 )
{
QFile f( fn );
if ( !f.open( IO_WriteOnly ) ) {
#ifndef NO_OPIE
owarn << "Could not write to file " << fn << oendl;
#else
qWarning( QString("Could not write to file %1").arg(fn),2000 );
#endif
QMessageBox::critical( 0, "ZSafe",
QString("Could not export to text file.") );
return;
}
QTextStream t( &f );
QListViewItem *i;
// step through all categories
for (i = ListView->firstChild();
i != NULL;
i = i->nextSibling())
{
// step through all subitems
QListViewItem *si;
for (si = i->firstChild();
si != NULL;
si = si->nextSibling())
{
QString oneEntry;
oneEntry += "\"";
oneEntry += i->text(0);
oneEntry += "\";";
@@ -1892,114 +1864,130 @@ void ZSafe::resume(int)
m_password = "";
selectedItem = NULL;
// clear the password list
QListViewItem *i;
// step through all categories
for (i = ListView->firstChild();
i != NULL;
i = i->nextSibling())
{
// step through all subitems
QListViewItem *si;
for (si = i->firstChild();
si != NULL; )
{
QListViewItem *_si = si;
si = si->nextSibling();
i->takeItem(_si); // remove from view list
if (_si) delete _si;
}
}
// ask for password and read again
openDocument(filename);
}
}
//---------------------------------------------
bool ZSafe::openDocument(const char* _filename, const char* )
{
+ QString name= _filename;
+ qWarning("openDocument "+name);
int retval;
char* entry[FIELD_SIZE];
// #ifndef Q_WS_WIN
int validationFlag = conf->readNumEntry(APP_KEY+"valzsafe", 1);
// #else
// int validationFlag = 1;
// #endif
int pwdOk = 0;
int numberOfTries = 3;
for (int i=0; i < numberOfTries; i++)
{
QFile f(_filename);
if (f.exists())
{
// ask with a dialog for the password
if (m_password.isEmpty())
getDocPassword(tr("Enter Password"));
if (m_password.isEmpty() && validationFlag == 0)
{
#ifndef NO_OPIE
owarn << "Wrong password" << oendl;
#else
qWarning ("Wrong password");
#endif
QMessageBox::critical( 0, tr("ZSafe"),
tr("Wrong password.\n\nZSafe will now exit.") );
exitZs (1);
}
retval = loadInit(_filename, m_password);
if (retval != PWERR_GOOD)
{
#ifndef NO_OPIE
owarn << "Error loading Document" << oendl;
#else
qWarning ("Error loading Document");
#endif
return false;
}
}
else
{
#ifdef Q_WS_WIN
this->setCaption("Qt ZSafe");
#else
this->setCaption("ZSafe");
#endif
filename = "";
+ switch( QMessageBox::warning( this, tr("ZSafe"),
+ tr("<P>You must create a new document first. Ok to create?</P>"),
+ tr("&Yes"), tr("&No."),
+ 0
+ ) )
+ {
+ case 1: // No
return false;
+ break;
+ case 0: // Yes
+ newDocument();
+ return false;
+ break;
+ }
+
}
// load the validation entry
if (validationFlag == 0)
{
pwdOk = 1;
break;
}
retval = loadEntry(entry);
if (retval == 1 &&
!strcmp (entry[0], "ZSAFECATEGORY") &&
!strcmp (entry[1], "name") &&
!strcmp (entry[2], "username") &&
!strcmp (entry[3], "password") &&
!strcmp (entry[4], "comment") )
{
for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]);
pwdOk = 1;
break;
}
else
// for (int count = 0; count < FIELD_SIZE; count++) free(entry[count]);
fclose (fd);
m_password = "";
if (i < numberOfTries - 1)
{
switch( QMessageBox::warning( this, tr("ZSafe"),
tr("Wrong password.\nEnter again?"),
tr("&Yes"), tr("&No."),
@@ -3418,89 +3406,65 @@ void ZSafe::pasteItem()
selectedItem->setOpen( TRUE );
// remove the cutted item
copiedItem->parent()->takeItem(copiedItem);
selectedItem = NULL;
}
}
else if (IsCopy)
{
if (copiedItem)
{
// add the new item
QListViewItem *i = new ShadedListItem (0, selectedItem);
// i->setOpen (TRUE);
i->setText (0, copiedItem->text(0));
i->setText (1, copiedItem->text(1));
i->setText (2, copiedItem->text(2));
i->setText (3, copiedItem->text(3));
i->setText (4, copiedItem->text(4));
i->setText (5, copiedItem->text(5));
selectedItem->setOpen( TRUE );
}
}
}
IsCut = false;
IsCopy = false;
}
void ZSafe::newDocument()
{
// open the file dialog
-#ifndef DESKTOP
-#ifndef NO_OPIE
- QMap<QString, QStringList> mimeTypes;
- mimeTypes.insert(tr("All"), QStringList() );
- mimeTypes.insert(tr("ZSafe"), "zsafe/*" );
- QString newFile = OFileDialog::getSaveFileName( OFileSelector::EXTENDED_ALL,
- QDir::homeDirPath() + "/Documents/application/zsafe",
- QString::null,
- mimeTypes,
- this,
- tr ("Create new ZSafe document"));
-#else
- QString newFile = ScQtFileEdit::getSaveAsFileName(this,
- tr ("Create new ZSafe document"),
- QDir::homeDirPath() + "/Documents/application/zsafe",
- "*.zsf");
-#endif
-#else
- QString newFile = QFileDialog::getSaveFileName(
- QDir::homeDirPath() + "/Documents/application/zsafe",
- "ZSafe (*.zsf)",
- this,
- "ZSafe File Dialog"
- "Choose a ZSafe file" );
-#endif
+ QString newFile = zsaveDialog();
// open the new document
if (newFile && newFile.length() > 0 )
{
// save the previous opened document
if (!filename.isEmpty())
saveDocument(filename, FALSE);
modified = true;
// clear the password list
QListViewItem *i;
QListViewItem *c = NULL;
// step through all categories
for (i = ListView->firstChild();
i != NULL;
i = i->nextSibling())
{
if (c) delete c; // delete the previous category
c = i;
// step through all subitems
QListViewItem *si;
for (si = i->firstChild();
si != NULL; )
{
QListViewItem *_si = si;
si = si->nextSibling();
i->takeItem(_si); // remove from view list
if (_si) delete _si;
}
}
@@ -3584,91 +3548,65 @@ void ZSafe::loadDocument()
for (si = i->firstChild();
si != NULL; )
{
QListViewItem *_si = si;
si = si->nextSibling();
i->takeItem(_si); // remove from view list
if (_si) delete _si;
}
}
if (c) delete c; // delete the previous category
categories.clear();
m_password = "";
selectedItem = NULL;
filename = newFile;
// save the current filename to the config file
conf->writeEntry(APP_KEY+"document", filename);
saveConf();
QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
#ifdef Q_WS_WIN
this->setCaption("Qt ZSafe: " + ti);
#else
this->setCaption("ZSafe: " + ti);
#endif
openDocument(filename);
}
}
void ZSafe::saveDocumentAs()
{
-#ifndef DESKTOP
-#ifndef NO_OPIE
- QMap<QString, QStringList> mimeTypes;
- mimeTypes.insert(tr("All"), QStringList() );
- mimeTypes.insert(tr("ZSafe"), "zsafe/*" );
- QString newFile = OFileDialog::getSaveFileName( OFileSelector::EXTENDED_ALL,
- QDir::homeDirPath() + "/Documents/application/zsafe",
- QString::null,
- mimeTypes,
- this,
- tr ("Save ZSafe document as.."));
-#else
- QString newFile = ScQtFileEdit::getSaveAsFileName(this,
- tr ("Save ZSafe document as.."),
- QDir::homeDirPath() + "/Documents/application/zsafe",
- "*.zsf");
-#endif
-#else
- // open the file dialog
- QString newFile = QFileDialog::getSaveFileName(
- QDir::homeDirPath() + "/Documents/application/zsafe",
- "ZSafe (*.zsf)",
- this,
- "ZSafe File Dialog"
- "Choose a ZSafe file" );
-#endif
-
+QString newFile = zsaveDialog();
// open the new document
if (newFile && newFile.length() > 0 )
{
// save the previous opened document
if (!filename.isEmpty())
saveDocument(filename, FALSE);
selectedItem = NULL;
filename = newFile;
// save the current filename to the config file
conf->writeEntry(APP_KEY+"document", filename);
saveConf();
QString ti = filename.right (filename.length() - filename.findRev ('/') - 1);
#ifdef Q_WS_WIN
this->setCaption("Qt ZSafe: " + ti);
#else
this->setCaption("ZSafe: " + ti);
#endif
QMessageBox::information( this, tr("ZSafe"),
tr("Now you have to enter\na password twice for your\nnewly created document."), tr("&OK"), 0);
saveDocumentWithPwd();
}
}
void ZSafe::saveDocumentWithoutPwd()
{
saveDocument(filename, FALSE);
}
@@ -3824,83 +3762,114 @@ void ZSafe::setDocument(const QString& fileref)
this->setCaption("ZSafe: " + ti);
#endif
// clear the password list
QListViewItem *i;
QListViewItem *c = NULL;
// step through all categories
for (i = ListView->firstChild();
i != NULL;
i = i->nextSibling())
{
if (c) delete c; // delete the previous category
c = i;
// step through all subitems
QListViewItem *si;
for (si = i->firstChild();
si != NULL; )
{
QListViewItem *_si = si;
si = si->nextSibling();
i->takeItem(_si); // remove from view list
if (_si) delete _si;
}
}
if (c) delete c; // delete the previous category
categories.clear();
m_password = "";
selectedItem = NULL;
openDocument(filename);
+#else
+Q_UNUSED(fileref);
#endif
}
void ZSafe::ListPressed(int mouse, QListViewItem *item, const QPoint&, int column) {
if(item ==0) return;
switch (mouse) {
case 1:
{
#ifdef DESKTOP
QDragObject *d = new QTextDrag( item->text(column) , this );
d->dragCopy();
#endif
}
break;
case 2:
{
QClipboard *cb = QApplication::clipboard();
QIconSet copy_img((const char**) copy_xpm);
QIconSet edit_img((const char**) edit_xpm);
QPixmap folder_open_img((const char**) folder_open_xpm);
QPixmap editdelete_img((const char**) editdelete_xpm);
QPopupMenu *m = new QPopupMenu(this);
int copyItem = m->insertItem( copy_img, tr( "Copy to Clipboard" ));
int editItem = m->insertItem(edit_img, tr( "Edit" ));
int showItem = m->insertItem(folder_open_img, tr( "Show Info" ));
int cancelItem = m->insertItem( editdelete_img, tr( "Cancel" ));
m->setFocus();
int me=m->exec( QPoint( QCursor::pos().x(), QCursor::pos().y() ) ) ;
if(me == copyItem) {
copyClip( item->text(column) ) ;
} else if (me == cancelItem) {
cb->clear();
} else if (me == editItem) {
editPwd();
} else if (me == showItem) {
showInfo(item);
}
}
break;
};
}
void ZSafe::copyClip( const QString &text) {
QClipboard *cb = QApplication::clipboard();
cb->setText( text);
}
+QString ZSafe::zsaveDialog() {
+
+ QString fn;
+#ifndef DESKTOP
+#ifndef NO_OPIE
+ QMap<QString, QStringList> mimeTypes;
+ mimeTypes.insert(tr("All"), QStringList() );
+ mimeTypes.insert(tr("Text"), "text/*" );
+ fn = OFileDialog::getSaveFileName( OFileSelector::EXTENDED_ALL,
+ QDir::homeDirPath() + "/Documents/application/zsafe",
+ QString::null,
+ mimeTypes,
+ this,
+ tr ("Export text file"));
+#else
+ fn = ScQtFileEdit::getSaveAsFileName(this,
+ tr ("Export text file"),
+ QDir::homeDirPath() + "/Documents/application/zsafe",
+ "*.txt");
+#endif
+#else
+ fn = QFileDialog::getSaveFileName(
+ QDir::homeDirPath() + "/Documents/application/zsafe",
+ "ZSafe (*.txt)",
+ this,
+ "ZSafe");
+#endif
+ return fn;
+}
diff --git a/noncore/apps/zsafe/zsafe.h b/noncore/apps/zsafe/zsafe.h
index ca041ff..7419797 100644
--- a/noncore/apps/zsafe/zsafe.h
+++ b/noncore/apps/zsafe/zsafe.h
@@ -124,64 +124,65 @@ public:
// #ifndef WIN32
QSettings *conf;
// #endif
#else
Config *conf;
#endif
bool expandTree;
QPopupMenu *file;
QTimer docuTimer;
bool openDocument(const char* filename, const char* format=0);
int loadInit(const char* filename, const char *password);
int loadEntry(char *entry[4]);
int loadFinalize(void);
bool saveDocument(const char* filename, bool withPwd, const char* format=0);
int saveInit(const char *filename, const char *password);
int saveEntry(char *entry[4]);
int saveFinalize(void);
void saveConf();
QPixmap * getPredefinedIcon(QString category);
QString getFieldLabel (QListViewItem *_item, QString field, QString def);
QString getFieldLabel (QString category, QString field, QString def);
void setCategoryDialogFields(CategoryDialog *dialog);
void setCategoryDialogFields(CategoryDialog *dialog, QString category);
void saveCategoryDialogFields(CategoryDialog *dialog);
void resume(int signum);
void exitZs (int ec);
+ QString zsaveDialog();
public slots:
virtual void deletePwd();
virtual void editPwd();
virtual void newPwd();
virtual void findPwd();
virtual void quitMe();
virtual void listViewSelected( QListViewItem *_item);
virtual void showInfo( QListViewItem *_item);
virtual void writeAllEntries();
virtual void readAllEntries();
virtual void removeAsciiFile();
virtual void setPasswordDialogDone();
virtual void addCategory();
virtual void delCategory();
virtual void editCategory();
virtual void cutItem();
virtual void copyItem();
virtual void pasteItem();
virtual void newDocument();
virtual void loadDocument();
virtual void saveDocumentAs();
virtual void saveDocumentWithoutPwd();
virtual void saveDocumentWithPwd();
virtual void about();
virtual void setExpandFlag();
virtual void categoryFieldActivated( const QString& str);
virtual void ListPressed(int, QListViewItem *, const QPoint&, int);