knoteslegacy.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <qfile.h>
00022 #include <qfont.h>
00023 #include <qpoint.h>
00024 #include <qcolor.h>
00025 #include <qstringlist.h>
00026 #include <qtextstream.h>
00027
00028 #include <kdebug.h>
00029 #include <kapplication.h>
00030 #include <kglobal.h>
00031 #include <kurl.h>
00032 #include <kstandarddirs.h>
00033 #include <ksimpleconfig.h>
00034 #include <kio/netaccess.h>
00035
00036 #include <unistd.h>
00037
00038 #include "knoteslegacy.h"
00039 #include "knoteconfig.h"
00040 #include "version.h"
00041
00042 #include "libkcal/calendarlocal.h"
00043 #include "libkcal/journal.h"
00044
00045 #include <netwm.h>
00046
00047 using namespace KCal;
00048
00049
00050 void KNotesLegacy::cleanUp()
00051 {
00052
00053 QString configfile = KGlobal::dirs()->saveLocation( "config" ) + "knotesrc";
00054 KSimpleConfig *test = new KSimpleConfig( configfile );
00055 test->setGroup( "General" );
00056 double version = test->readDoubleNumEntry( "version", 1.0 );
00057 delete test;
00058
00059 if ( version == 1.0 &&
00060 !( checkAccess( configfile, W_OK ) &&
00061 KIO::NetAccess::del( KURL(configfile), 0 ) ) )
00062 {
00063 kdError(5500) << k_funcinfo << "Could not delete old config file!" << endl;
00064 }
00065 }
00066
00067 bool KNotesLegacy::convert( CalendarLocal *calendar )
00068 {
00069 bool converted = false;
00070
00071 QDir noteDir( KGlobal::dirs()->saveLocation( "appdata", "notes/" ) );
00072 QStringList notes = noteDir.entryList( QDir::Files, QDir::Name );
00073 for ( QStringList::Iterator note = notes.begin(); note != notes.end(); note++ )
00074 {
00075 QString file = noteDir.absFilePath( *note );
00076 KSimpleConfig* test = new KSimpleConfig( file );
00077 test->setGroup( "General" );
00078 double version = test->readDoubleNumEntry( "version", 1.0 );
00079
00080 if ( version < 3.0 )
00081 {
00082 delete test;
00083
00084
00085 Journal *journal = new Journal();
00086 bool success;
00087
00088 if ( version < 2.0 )
00089 success = convertKNotes1Config( journal, noteDir, *note );
00090 else
00091 success = convertKNotes2Config( journal, noteDir, *note );
00092
00093
00094 if ( !success )
00095 delete journal;
00096 else
00097 {
00098 calendar->addJournal( journal );
00099 converted = true;
00100 }
00101 }
00102
00103 else if ( version < 3.2 )
00104 {
00105 uint state = test->readUnsignedLongNumEntry( "state", NET::SkipTaskbar );
00106 test->writeEntry( "ShowInTaskbar", (state & NET::SkipTaskbar) ? false : true );
00107 test->writeEntry( "KeepAbove", (state & NET::KeepAbove) ? true : false );
00108 test->deleteEntry( "state" );
00109 delete test;
00110 }
00111 }
00112
00113 return converted;
00114 }
00115
00116 bool KNotesLegacy::convertKNotes1Config( Journal *journal, QDir& noteDir,
00117 const QString& file )
00118 {
00119 QFile infile( noteDir.absFilePath( file ) );
00120 if ( !infile.open( IO_ReadOnly ) )
00121 {
00122 kdError(5500) << k_funcinfo << "Could not open input file: \""
00123 << infile.name() << "\"" << endl;
00124 return false;
00125 }
00126
00127 QTextStream input( &infile );
00128
00129
00130 journal->setSummary( input.readLine() );
00131
00132 QStringList props = QStringList::split( '+', input.readLine() );
00133
00134
00135 if ( props.count() != 13 )
00136 {
00137 kdWarning(5500) << k_funcinfo << "The file \"" << infile.name()
00138 << "\" lacks version information but is not a valid "
00139 << "KNotes 1 config file either!" << endl;
00140 return false;
00141 }
00142
00143
00144 QString configFile = noteDir.absFilePath( journal->uid() );
00145
00146
00147 KIO::NetAccess::copy(
00148 KURL( KGlobal::dirs()->saveLocation( "config" ) + "knotesrc" ),
00149 KURL( configFile ),
00150 0
00151 );
00152
00153 KNoteConfig config( KSharedConfig::openConfig( configFile, false, false ) );
00154 config.readConfig();
00155 config.setVersion( KNOTES_VERSION );
00156
00157
00158 config.setWidth( props[3].toUInt() );
00159 config.setHeight( props[4].toUInt() );
00160
00161
00162 uint red = input.readLine().toUInt();
00163 uint green = input.readLine().toUInt();
00164 uint blue = input.readLine().toUInt();
00165 config.setBgColor( QColor( red, green, blue ) );
00166
00167
00168 red = input.readLine().toUInt();
00169 green = input.readLine().toUInt();
00170 blue = input.readLine().toUInt();
00171 config.setFgColor( QColor( red, green, blue ) );
00172
00173
00174 QString fontfamily = input.readLine();
00175 if ( fontfamily.isEmpty() )
00176 fontfamily = QString( "helvetica" );
00177 uint size = input.readLine().toUInt();
00178 size = QMAX( size, 4 );
00179 uint weight = input.readLine().toUInt();
00180 bool italic = ( input.readLine().toUInt() == 1 );
00181 QFont font( fontfamily, size, weight, italic );
00182
00183 config.setTitleFont( font );
00184 config.setFont( font );
00185
00186
00187 input.readLine();
00188
00189
00190 config.setAutoIndent( input.readLine().toUInt() == 1 );
00191
00192
00193 config.setRichText( false );
00194
00195 int note_desktop = props[0].toUInt();
00196
00197
00198 if ( input.readLine().toUInt() == 1 )
00199 note_desktop = 0;
00200 else if ( props[11].toUInt() == 1 )
00201 note_desktop = NETWinInfo::OnAllDesktops;
00202
00203 config.setDesktop( note_desktop );
00204 config.setPosition( QPoint( props[1].toUInt(), props[2].toUInt() ) );
00205 config.setKeepAbove( props[12].toUInt() & 2048 );
00206
00207 config.writeConfig();
00208
00209
00210 QString text;
00211 while ( !input.atEnd() )
00212 {
00213 text.append( input.readLine() );
00214 if ( !input.atEnd() )
00215 text.append( '\n' );
00216 }
00217
00218 journal->setDescription( text );
00219
00220 if ( !infile.remove() )
00221 kdWarning(5500) << k_funcinfo << "Could not delete input file: \"" << infile.name() << "\"" << endl;
00222
00223 return true;
00224 }
00225
00226 bool KNotesLegacy::convertKNotes2Config( Journal *journal, QDir& noteDir,
00227 const QString& file )
00228 {
00229 QString configFile = noteDir.absFilePath( journal->uid() );
00230
00231
00232 if ( !noteDir.rename( file, journal->uid() ) )
00233 {
00234 kdError(5500) << k_funcinfo << "Could not rename input file: \""
00235 << noteDir.absFilePath( file ) << "\" to \""
00236 << configFile << "\"!" << endl;
00237 return false;
00238 }
00239
00240
00241 KConfig config( configFile );
00242 config.setGroup( "Data" );
00243 journal->setSummary( config.readEntry( "name" ) );
00244 config.deleteGroup( "Data", true );
00245 config.setGroup( "General" );
00246 config.writeEntry( "version", KNOTES_VERSION );
00247 config.setGroup( "WindowDisplay" );
00248 uint state = config.readUnsignedLongNumEntry( "state", NET::SkipTaskbar );
00249 config.writeEntry( "ShowInTaskbar", (state & NET::SkipTaskbar) ? false : true );
00250 config.writeEntry( "KeepAbove", (state & NET::KeepAbove) ? true : false );
00251 config.deleteEntry( "state" );
00252
00253
00254 QFile infile( noteDir.absFilePath( "." + file + "_data" ) );
00255 if ( infile.open( IO_ReadOnly ) )
00256 {
00257 QTextStream input( &infile );
00258 input.setEncoding( QTextStream::UnicodeUTF8 );
00259 journal->setDescription( input.read() );
00260 if ( !infile.remove() )
00261 kdWarning(5500) << k_funcinfo << "Could not delete data file: \"" << infile.name() << "\"" << endl;
00262 }
00263 else
00264 kdWarning(5500) << k_funcinfo << "Could not open data file: \"" << infile.name() << "\"" << endl;
00265
00266 return true;
00267 }
This file is part of the documentation for knotes Library Version 3.2.2.