Import 0.4.3 version in mainstream branch
[keepassx] / src / export / Export_Txt.cpp
1 /***************************************************************************
2  *   Copyright (C) 2005-2007 by Tarek Saidi                                *
3  *   tarek.saidi@arcor.de                                                  *
4  *                                                                         *
5  *   This program is free software; you can redistribute it and/or modify  *
6  *   it under the terms of the GNU General Public License as published by  *
7  *   the Free Software Foundation; version 2 of the License.               *
8
9  *                                                                         *
10  *   This program is distributed in the hope that it will be useful,       *
11  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
12  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
13  *   GNU General Public License for more details.                          *
14  *                                                                         *
15  *   You should have received a copy of the GNU General Public License     *
16  *   along with this program; if not, write to the                         *
17  *   Free Software Foundation, Inc.,                                       *
18  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
19  ***************************************************************************/
20  
21
22 #include "Export_Txt.h"
23
24
25 QString EntryTemplate=QString("\n\
26   Title:    %1\n\
27   Username: %2\n\
28   Url:      %3\n\
29   Password: %4\n\
30   Comment:  %5\n\
31 ");
32
33 QString GroupTemplate=QString("\n\
34 *** Group: %1 ***\n\
35 ");
36
37 bool Export_Txt::exportDatabase(QWidget* GuiParent, IDatabase* db){
38         QFile *file=openFile(GuiParent,identifier(),QStringList()<<tr("All Files (*)") << tr("Text Files (*.txt)"));
39         if(!file)return false;
40         QList<IGroupHandle*> groups=db->sortedGroups();
41         for(int g=0;g<groups.size();g++){
42                 file->write(GroupTemplate.arg(groups[g]->title()).toUtf8());
43                 QList<IEntryHandle*> entries=db->entriesSortedStd(groups[g]);
44                 for(int e=0;e<entries.size();e++){
45                         SecString password=entries[e]->password();
46                         password.unlock();
47                         QString entryText = EntryTemplate.arg(
48                                                 entries[e]->title(),
49                                                 entries[e]->username(),
50                                                 entries[e]->url(),
51                                                 password.string(),
52                                                 entries[e]->comment().replace('\n',"\n            "));
53                                                                         
54                         file->write( entryText.toUtf8() );
55                         password.lock();
56                 }
57         }
58         delete file;
59         return true;
60 }