Subversion Repositories Scribus

Rev

Rev 12570 | Rev 12574 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
12529 cbradney 1
/*
4430 cbradney 2
For general Scribus (>=1.3.2) copyright and licensing information please refer
3
to the COPYING file provided with the program. Following this notice may exist
4
a copyright and/or license notice that predates the release of Scribus 1.3.2
5
for which a new license (GPL+exception) is in place.
6
*/
1641 cbradney 7
/***************************************************************************
12531 cbradney 8
*                                                                         *
9
*   This program is free software; you can redistribute it and/or modify  *
10
*   it under the terms of the GNU General Public License as published by  *
11
*   the Free Software Foundation; either version 2 of the License, or     *
12
*   (at your option) any later version.                                   *
13
*                                                                         *
14
***************************************************************************/
15
#include <iostream> // only for debugging
16
#include <signal.h>
17
#include <QString>
18
 
11800 cbradney 19
#include <QFile>
9338 fschmid 20
#include <QPixmap>
21
#include <QToolTip>
22
#include <QLabel>
23
#include <QTabWidget>
11800 cbradney 24
#include <QTextStream>
9338 fschmid 25
#include <QWidget>
26
#include <QPushButton>
10913 jghali 27
#include <QShowEvent>
1641 cbradney 28
 
12570 cbradney 29
#include "about.h"
5364 cbradney 30
#include "commonstrings.h"
2688 craig 31
#include "scconfig.h"
11800 cbradney 32
#include "scpaths.h"
10108 cbradney 33
#include "sctextbrowser.h"
9898 avox 34
 
35
#ifdef HAVE_CAIRO
36
#include <cairo.h>
37
#endif
38
 
10212 cbradney 39
#include "util_ghostscript.h"
10200 cbradney 40
#include "util_icon.h"
5923 cbradney 41
#include "upgradechecker.h"
2011 cbradney 42
#include "langmgr.h"
43
 
12531 cbradney 44
 
45
/*
46
* The content for the About dialog is mostly built from the files in
47
* // SCRIBUS_INSTALL_DIRECTORY/share/doc/scribus-1.3.5svn/
48
*
49
* The format of the files should follow this pattern:
50
* - AUTHOR
51
*   Tr(Title)
52
*   first_name name email_address
53
*   first_name name email_address
54
*  
55
*   Tr(Title)
56
*   ...
57
*
58
* - TRANSLATION
59
*   Tr(Title)
60
*  
61
*   Language(language_code)
62
*   first_name name (email_address)
63
*
64
*   Language(language_code)
65
*   first_name name (email_address)
66
*
67
*
68
*   Tr(Title)
69
*   ...
70
* - LINKS
71
*   Tr(Title)
72
*   url
73
*
74
*
75
*   Tr(Title)
76
*   ...
77
*
78
*
79
*  Text which has to be translated has to be added to the local tr...Title()
80
*  methods, otherwise in won't be added to the list of translatable strings
81
*
82
*  a.l.e
83
*/
84
 
1641 cbradney 85
/*!
12531 cbradney 86
\fn About::About( QWidget* parent, AboutMode diaMode )
87
\author Franz Schmid
88
\date
89
\brief Constructor for About dialog box
90
\param parent QWidget pointer to parent window
91
\param diaMode a dialog mode. See AboutMode.
92
\retval About dialog
93
*/
10913 jghali 94
About::About( QWidget* parent, AboutMode diaMode ) : QDialog( parent )
1641 cbradney 95
{
10913 jghali 96
        m_mode = diaMode;
97
        m_firstShow = true;
10493 fschmid 98
        setWindowTitle( tr("About Scribus %1").arg(VERSION) );
99
        setWindowIcon(loadIcon("AppIcon.png", true));
9338 fschmid 100
        setModal(true);
101
        aboutLayout = new QVBoxLayout( this );
1641 cbradney 102
        aboutLayout->setSpacing( 6 );
103
        aboutLayout->setMargin( 10 );
10493 fschmid 104
        tabWidget2 = new QTabWidget( this );
10040 fschmid 105
//      tabWidget2->setMinimumSize( QSize( 438, 258 ) );
10493 fschmid 106
        tab = new QWidget( tabWidget2 );
9338 fschmid 107
        tabLayout1 = new QVBoxLayout( tab );
1641 cbradney 108
        tabLayout1->setSpacing( 6 );
109
        tabLayout1->setMargin( 15 );
10493 fschmid 110
        pixmapLabel1 = new QLabel( tab );
10200 cbradney 111
        pixmapLabel1->setPixmap(loadIcon("scribus_logo.png", true));
10040 fschmid 112
        pixmapLabel1->setFixedSize(QSize(pixmapLabel1->pixmap()->width(), pixmapLabel1->pixmap()->height()));
1641 cbradney 113
        pixmapLabel1->setAlignment(Qt::AlignCenter);
114
        tabLayout1->addWidget( pixmapLabel1 );
10493 fschmid 115
        buildID = new QLabel( tab );
1641 cbradney 116
        buildID->setAlignment(Qt::AlignCenter);
12573 cbradney 117
        QString BUILD_DAY = "21";
12527 cbradney 118
        QString BUILD_MONTH = CommonStrings::september;
11417 mrdocs 119
        QString BUILD_YEAR = "2008";
9697 craig 120
        QString BUILD_TIME = "";
121
        QString BUILD_TZ = "";
122
        QString BUILD_NAME = "";
3587 avox 123
 
9697 craig 124
// This is the old way:
125
        QString built = tr("%1 %2 %3").arg(BUILD_DAY).arg(BUILD_MONTH).arg(BUILD_YEAR);
3587 avox 126
 
9697 craig 127
// This is my way, only activated when envvar BUILD_NAME is set :-)  AV
128
//#include "about_builddate.inc"
129
        QString version = VERSION;
130
        if (BUILD_NAME != "")
131
                version += " \"" + BUILD_NAME + "\"";
132
        if (BUILD_NAME == "BleedingEdge")
12531 cbradney 133
                built = tr("%3-%2-%1 %4 %5").arg(BUILD_DAY).arg(BUILD_MONTH).arg(BUILD_YEAR).arg(BUILD_TIME).arg(BUILD_TZ);
9697 craig 134
 
3579 avox 135
        QString bu;
1641 cbradney 136
        bu += "C";
137
        bu += "-";
138
#ifdef HAVE_CUPS
139
        bu += "C";
140
#else
141
        bu += "*";
142
#endif
143
        bu += "-";
144
        bu += "T";
145
        bu += "-";
146
#ifdef HAVE_FONTCONFIG
147
        bu += "F";
148
#else
149
        bu += "*";
150
#endif
3113 fschmid 151
        bu += "-";
152
#ifdef HAVE_CAIRO
153
        bu += "C";
9898 avox 154
        bu += cairo_version_string();
3113 fschmid 155
#else
9319 fschmid 156
        bu += "Q";
3113 fschmid 157
#endif
1641 cbradney 158
 
3587 avox 159
// Some more information if we are not on a 32bit little endian Unix machine
160
#if defined(Q_OS_WIN)
161
        bu += "-Windows";
162
#elif defined(Q_OS_MAC)
163
        bu += "-Mac/";
164
#  if defined(Q_WS_MACX)
165
        bu += "Aqua";
166
#  elif define(Q_WS_X11)
167
        bu += "X11";
168
#  else
169
        bu += "?";
170
#  endif
9898 avox 171
#elif defined(Q_OS_DARWIN)
172
        // dunno if anyone uses this...
173
        bu += "-Darwin";
174
#endif
10501 cbradney 175
        if (QSysInfo::WordSize != 32)
10493 fschmid 176
                bu += QString("-%1bit").arg(QSysInfo::WordSize);
177
#if Q_BYTE_ORDER == Q_BIG_ENDIAN
10501 cbradney 178
        if (QSysInfo::ByteOrder==QSysInfo::BigEndian)
3587 avox 179
                bu += "-Big";
10493 fschmid 180
#endif
2840 craig 181
        QString gsver(getGSVersion());
182
        if (!gsver.isNull())
3583 cbradney 183
                gsver = tr("Using Ghostscript version %1").arg(gsver);
2840 craig 184
        else
3583 cbradney 185
                gsver = tr("No Ghostscript version available");
9770 fschmid 186
        buildID->setText( tr("<p align=\"center\"><b>%1 %2</b></p><p align=\"center\">%3<br>%4 %5<br>%6</p>").arg( tr("Scribus Version")).arg(version).arg(built).arg( tr("Build ID:")).arg(bu).arg(gsver));
9755 fschmid 187
        tabLayout1->addWidget( buildID, 0, Qt::AlignHCenter );
9338 fschmid 188
        tabWidget2->addTab( tab, tr( "&About" ) );
10493 fschmid 189
        tab_2 = new QWidget( tabWidget2 );
9338 fschmid 190
        tabLayout = new QHBoxLayout( tab_2 );
1641 cbradney 191
        tabLayout->setSpacing( 6 );
192
        tabLayout->setMargin( 10 );
4363 mrdocs 193
 
2618 cbradney 194
 
12531 cbradney 195
  /*! AUTHORS tab */
196
  // /usr/local/scribus14/share/doc/scribus-1.3.5svn/AUTHORS
197
        textView1 = new ScTextBrowser( tab_2 );
198
  textView1->setText(About::parseAuthorFile(ScPaths::instance().docDir() + "AUTHORS"));
2916 mrdocs 199
 
1641 cbradney 200
        tabLayout->addWidget( textView1 );
9338 fschmid 201
        tabWidget2->addTab( tab_2, tr( "A&uthors" ) );
10493 fschmid 202
        tab_3 = new QWidget( tabWidget2 );
9338 fschmid 203
        tabLayout_2 = new QHBoxLayout( tab_3 );
1641 cbradney 204
        tabLayout_2->setSpacing( 6 );
205
        tabLayout_2->setMargin( 10 );
10108 cbradney 206
        textView2 = new ScTextBrowser( tab_3);
2011 cbradney 207
        LanguageManager langmgr;
208
        langmgr.init(false);
12531 cbradney 209
 
210
  /*! TRANSLATION tab */
211
  // /usr/local/scribus14/share/doc/scribus-1.3.5svn/TRANSLATION
212
  textView2->setText(About::parseTranslationFile(ScPaths::instance().docDir() + "TRANSLATION"));
213
 
214
  tabLayout_2->addWidget( textView2 );
9338 fschmid 215
        tabWidget2->addTab( tab_3, tr( "&Translations" ) );
1641 cbradney 216
 
12531 cbradney 217
        /*! ONLINE tab (03/04/2004 petr vanek) */
218
  // /usr/local/scribus14/share/doc/scribus-1.3.5svn/LINKS
10493 fschmid 219
        tab_4 = new QWidget( tabWidget2 );
10108 cbradney 220
        textView4 = new ScTextBrowser( tab_4 );
12531 cbradney 221
  textView4->setText(About::parseLinksFile(ScPaths::instance().docDir() + "LINKS"));
9338 fschmid 222
        tabLayout_4 = new QHBoxLayout( tab_4 );
1641 cbradney 223
        tabLayout_4->setSpacing( 6 );
224
        tabLayout_4->setMargin( 10 );
225
        tabLayout_4->addWidget( textView4 );
9338 fschmid 226
        tabWidget2->addTab( tab_4, tr( "&Online" ) );
12531 cbradney 227
        /*! UPDATE tab */
10493 fschmid 228
        tab_5 = new QWidget( tabWidget2 );
229
        tabWidget2->addTab( tab_5, tr( "&Updates" ) );
9338 fschmid 230
        updateLayout = new QVBoxLayout( tab_5 );
5923 cbradney 231
        updateLayout->setSpacing( 6 );
232
        updateLayout->setMargin( 10 );
10926 cbradney 233
        checkForUpdateButton = new QPushButton( tr( "Check for Updates" ), tab_5 );
10108 cbradney 234
        textView5 = new ScTextBrowser( tab_5);
5923 cbradney 235
        updateLayout->addWidget( checkForUpdateButton );
236
        updateLayout->addWidget( textView5 );
11800 cbradney 237
 
12531 cbradney 238
        /*! LICENCE tab */
11800 cbradney 239
        tab_Licence = new QWidget( tabWidget2 );
240
        tabWidget2->addTab( tab_Licence, tr( "&Licence" ) );
241
        licenceLayout = new QVBoxLayout( tab_Licence );
242
        licenceLayout->setSpacing( 6 );
243
        licenceLayout->setMargin( 10 );
244
        textViewLicence = new ScTextBrowser( tab_Licence);
245
        licenceLayout->addWidget( textViewLicence );
246
 
247
        QFile licenceFile(ScPaths::instance().docDir() + "/COPYING");
12531 cbradney 248
        if (!licenceFile.open(QIODevice::ReadOnly | QIODevice::Text))
249
                textViewLicence->setText( tr("Unable to open licence file. Please check your install directory or the Scribus website for licencing information.") );
250
        else
11800 cbradney 251
        {
252
                QTextStream inTS(&licenceFile);
253
                QString licenceText = inTS.readAll();
254
                textViewLicence->setText(licenceText);
12531 cbradney 255
        }
11800 cbradney 256
 
257
        //Add tab widget to about window
1641 cbradney 258
        aboutLayout->addWidget( tabWidget2 );
7368 subik 259
 
9338 fschmid 260
        layout2 = new QHBoxLayout;
1641 cbradney 261
        layout2->setSpacing( 6 );
262
        layout2->setMargin( 0 );
263
        QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
264
        layout2->addItem( spacer );
10493 fschmid 265
        okButton = new QPushButton( tr( "&Close" ), this );
1641 cbradney 266
        okButton->setDefault( true );
267
        layout2->addWidget( okButton );
268
        aboutLayout->addLayout( layout2 );
269
        setMaximumSize(sizeHint());
270
 
4363 mrdocs 271
 
1641 cbradney 272
//tooltips
5220 mrdocs 273
 
10397 cbradney 274
        buildID->setToolTip( "<qt>" + tr( "This panel shows the version, build date and compiled in library support in Scribus.")+"<br>"
12531 cbradney 275
        + tr("The C-C-T-F equates to C=littlecms C=CUPS T=TIFF support F=Fontconfig support.Last Letter is the renderer C=cairo or Q=Qt")+"<br>"
276
        + tr("Missing library support is indicated by a *. This also indicates the version of Ghostscript which Scribus has detected.")+"<br>"
277
        + tr("The Windows version does not use fontconfig or CUPS libraries." ) + "</qt>" );
10397 cbradney 278
        checkForUpdateButton->setToolTip( "<qt>" + tr( "Check for updates to Scribus. No data from your machine will be transferred off it." ) + "</qt>" );
5220 mrdocs 279
        // signals and slots connections
280
        connect( okButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
5923 cbradney 281
        connect( checkForUpdateButton, SIGNAL( clicked() ), this, SLOT( runUpdateCheck() ) );
5273 mrdocs 282
}
5923 cbradney 283
 
12531 cbradney 284
 
10913 jghali 285
void About::showEvent (QShowEvent * event)
286
{
287
        if (m_mode == About::CheckUpdates && m_firstShow)
288
                tabWidget2->setCurrentIndex(4);
289
        QDialog::showEvent(event);
290
}
291
 
12531 cbradney 292
 
293
 
294
QString About::trAuthorTitle(QString title)
295
{
296
        QString result;
297
        if ( title == "Development Team:" )
298
                result = tr("Development Team:");
299
        else if ( title == "Mac OS&#174; X Aqua Port:" )
300
                result = tr("Mac OS&#174; X Aqua Port:");
301
        else if ( title == "OS/2&#174;/eComStation&#8482; Port:" )
302
                result = tr("OS/2&#174;/eComStation&#8482; Port:");
303
        else if ( title == "Windows&#174; Port:" )
304
                result = tr("Windows&#174; Port:");
305
        else if ( title == "Contributions from:" )
306
                result = tr("Contributions from:");
307
        else if ( title == "Official Documentation:" )
308
                result = tr("Official Documentation:");
309
        else if ( title == "Doc Translators:" )
310
                result = tr("Doc Translators:");
311
        else if ( title == "Other Documentation:" )
312
                result = tr("Other Documentation:");
313
        else if ( title == "Webmasters:" )
314
                result = tr("Webmasters:");
315
        else if ( title == "Splash Screen:" )
316
                result = tr("Splash Screen:");
317
        else if ( title == "Tango Project Icons:" )
318
                result = tr("Tango Project Icons:");
319
        else
320
                std::cout << "please add the untranslated title \"" << qPrintable(title) << "\" to About::trAuthorTitle()" << std::endl;
321
                result = title;
322
        return result;
323
}
324
QString About::trTranslationTitle(QString title)
325
{
326
        QString result;
327
        if ( title == "Official Translations and Translators:" )
328
                result = tr("Official Translations and Translators:");
329
        else if ( title == "Previous Translation Contributors:" )
330
                result = tr("Previous Translation Contributors:");
331
        else
332
                std::cout << "please add the untranslated title \"" << qPrintable(title) << "\" to About::trAuthorTitle()" << std::endl;
333
                result = title;
334
        return result;
335
}
336
 
337
 
338
QString About::trLinksTitle(QString title)
339
{
340
        QString result;
341
        if ( title == "Homepage" )
342
                result = tr("Homepage");
343
        else if ( title == "Online Reference" )
344
                result = tr("Online Reference");
345
        else if ( title == "Wiki" )
346
                result = tr("Wiki");
347
        else if ( title == "Bugs and Feature Requests" )
348
                result = tr("Bugs and Feature Requests");
349
        else if ( title == "Developer Blog" )
350
                result = tr("Developer Blog");
351
        else if ( title == "Mailing List" )
352
                result = tr("Mailing List");
353
        else
354
                std::cout << "please add the untranslated title \"" << qPrintable(title) << "\" to About::trLinksTitle()" << std::endl;
355
                result = title;
356
        return result;
357
}
358
 
359
 
360
/*!
361
* parse a text file and return an author list in an html table:
362
* left the names and right the contact address
363
* the html table can be "split" in sections
364
* @param QString fileName the file to be parsed
365
* @return QString the html table
366
*/
367
QString About::parseAuthorFile(QString fileName)
368
{
369
        QString result;
370
        QString file;
371
        QFile authorsFile(fileName);
372
        if (authorsFile.open(QIODevice::ReadOnly | QIODevice::Text))
373
        {
374
                QTextStream inTS(&authorsFile);
375
                inTS.setCodec("UTF-8");
376
                QString lineTS;
377
                QStringList fieldTS;
378
                QString name;
379
                QString contact;
380
                bool isTitle = true;
381
                bool startText = false;
382
                bool startTitle = false;
383
                result = "<table>";
384
                while (!inTS.atEnd())
385
                {
386
                        lineTS = inTS.readLine();
387
                        // convert (r) "�" to &#174, "�" to &#8482
388
                        // lineTS = QString::fromUtf8(lineTS);
389
                        lineTS.replace("<", "&lt;");
390
                        lineTS.replace(">", "&gt;");
391
                        lineTS.replace("�", "&#174;");
392
                        lineTS.replace("�", "&#8482;");
393
                        name = "";
394
                        contact = "";
395
                        if (!lineTS.isEmpty())
396
                        {
397
                                if (isTitle)
398
                                {
399
                                        startTitle = false;
400
                                        result += "<tr><td><b>"+About::trAuthorTitle(lineTS)+"</b></td><td></td></tr>";
401
 
402
                                } // if is title
403
                                else
404
                                {
405
                                        startText = false;
406
                                        fieldTS = lineTS.split(" ");
407
                                        contact = (fieldTS.isEmpty() ? "" : fieldTS.takeLast());
408
                                        name = (fieldTS.isEmpty() ? "" : fieldTS.join(" "));
409
                                        result += "<tr><td>"+name+"</td><td>"+(contact == "@" ? "" : contact)+"</td></tr>";
410
                                } // else is title
411
                        } // if is empty line
412
                        else
413
                        {
414
                                // empty lines switch between title and text
415
                                if (!startText && !startTitle)
416
                                {
417
                                        isTitle = !isTitle;
418
                                        if (isTitle)
419
                                        {
420
                                                result += "<tr><td></td><td></td></tr>";
421
                                                startTitle = true;
422
                                        }
423
                                        else
424
                                        {
425
                                                startText = true;
426
                                        }
427
                                }
428
                        } // else is empty line
429
                } // while ! atEnd
430
                result += "<table>";
431
        } // if file found
432
        else
433
        {
434
                if (!fileName.isEmpty())
435
                {
436
                        QStringList field = fileName.split("/");
437
                        if (!field.isEmpty())
438
                        {
439
                                file = field.takeLast();
440
                        }
441
                }
442
                result = tr("Unable to open %1 file. Please check your install directory or the Scribus website for %1 information.").arg(file);
443
                result = "";
444
        } // else file found
445
        return result;
446
} // parseTextFile()
447
 
448
/*!
449
* parse a text file and return an author list in an html table:
450
* left the names and right the contact address
451
* the html table can be "split" in sections
452
* @param QString fileName the file to be parsed
453
* @return QString the html table
454
*/
455
QString About::parseTranslationFile(QString fileName)
456
{
457
        QString result;
458
        QString file;
459
        QFile translationFile(fileName);
460
        if (translationFile.open(QIODevice::ReadOnly | QIODevice::Text))
461
        {
462
                QTextStream inTS(&translationFile);
463
                inTS.setCodec("UTF-8");
464
                QString lineTS;
465
                QStringList fieldTS;
466
                QString code;
467
                QString name;
468
                QString contact;
469
                LanguageManager langmgr;
470
                langmgr.init(false);
471
                bool isSectionTitle = true;
472
                bool isTitle = false;
473
                bool startText = false;
474
                bool startTitle = false;
475
                result = "<table>";
476
                while (!inTS.atEnd())
477
                {
478
                        lineTS = inTS.readLine();
479
                        lineTS.replace("<", "&lt;");
480
                        lineTS.replace(">", "&gt;");
481
                        name = "";
482
                        contact = "";
483
                        if (!lineTS.isEmpty())
484
                        {
485
                                if  (isSectionTitle)
486
                                {
487
                                        result += "<tr><td><b><i>"+About::trTranslationTitle(lineTS)+"</i></b></td><td></td></tr>";
488
                                        isSectionTitle = false;
489
                                        isTitle = false;
490
                                        startTitle = false;
491
                                }
492
                                else if (isTitle)
493
                                {
494
                                        startTitle = false;
495
                                        fieldTS = lineTS.split(" ");
496
                                        code = (fieldTS.isEmpty() ? "" : fieldTS.takeLast());
497
                                        if (!code.isEmpty())
498
                                        {
499
                                                code.replace("(", "");
500
                                                code.replace(")", "");
501
                                                code = langmgr.getLangFromAbbrev(code).toLocal8Bit();
502
                                        }
503
                                        result += "<tr><td><b>"+code+"</b></td><td></td></tr>";
504
                                        isTitle = false;
505
 
506
                                } // if is title
507
                                else
508
                                {
509
                                        startText = false;
510
                                        fieldTS = lineTS.split(" ");
511
                                        contact = (fieldTS.isEmpty() ? "" : fieldTS.takeLast());
512
                                        contact.replace("(", "");
513
                                        contact.replace(")", "");
514
                                        name = (fieldTS.isEmpty() ? "" : fieldTS.join(" "));
515
                                        result += "<tr><td>"+name+"</td><td>"+(contact == "@" ? "" : contact)+"</td></tr>";
516
                                } // else is title
517
                        } // if is empty line
518
                        else
519
                        {
520
                                // empty lines switch between title and text
521
                                if (!startText && !startTitle)
522
                                {
523
                                        isTitle = !isTitle;
524
                                        if (isTitle)
525
                                        {
526
                                                result += "<tr><td></td><td></td></tr>";
527
                                                startTitle = true;
528
                                        }
529
                                        else
530
                                        {
531
                                                startText = true;
532
                                        }
533
                                //
534
                                // multiple empty lines start a section instead of marking a title
535
                                }
536
                                else if (startTitle)
537
                                {
538
                                        isTitle = false;
539
                                        isSectionTitle = true;
540
                                }
541
                        } // else is empty line
542
                } // while ! atEnd
543
                result += "<table>";
544
        } // if file found
545
        else
546
        {
547
                if (!fileName.isEmpty())
548
                {
549
                        QStringList field = fileName.split("/");
550
                        if (!field.isEmpty())
551
                        {
552
                                file = field.takeLast();
553
                        }
554
                }
555
                result = tr("Unable to open %1 file. Please check your install directory or the Scribus website for %1 information.").arg(file);
556
                result = "";
557
        } // else file found
558
        return result;
559
} // parseTranslationFile()
560
 
561
/*!
562
* parse a text file and return a links list in html format:
563
* left the names and right the contact address
564
* the html table can be "split" in sections
565
* @param QString fileName the file to be parsed
566
* @return QString the html table
567
*/
568
QString About::parseLinksFile(QString fileName)
569
{
570
        QString result;
571
        QString file;
572
        QFile linksFile(fileName);
573
        if (linksFile.open(QIODevice::ReadOnly | QIODevice::Text))
574
        {
575
                QTextStream inTS(&linksFile);
576
                inTS.setCodec("UTF-8");
577
                QString lineTS;
578
                bool isTitle = true;
579
                result = "<table>";
580
                while (!inTS.atEnd())
581
                {
582
                        lineTS = inTS.readLine();
583
                        // convert (r) "�" to &#174, "�" to &#8482
584
                        // lineTS = QString::fromUtf8(lineTS);
585
                        lineTS.replace("<", "&lt;");
586
                        lineTS.replace(">", "&gt;");
587
                        lineTS.replace("�", "&#174;");
588
                        lineTS.replace("�", "&#8482;");
589
                        if (!lineTS.isEmpty())
590
                        {
591
                                if (isTitle)
592
                                {
593
                                        isTitle = false;
594
                                        result += "<tr><td><b>"+About::trLinksTitle(lineTS)+"</b></td></tr>";
595
 
596
                                } // if is title
597
                                else
598
                                {
599
                                        result += "<tr><td><a href=\""+lineTS+"\">"+lineTS+"</a></td></tr>";
600
                                } // else is title
601
                        } // if is empty line
602
                        else
603
                        {
604
                                // empty lines switch to title (one line)
605
                          result += "<tr><td></td></tr>";
606
                          isTitle = true;
607
                        } // else is empty line
608
                } // while ! atEnd
609
                result += "<table>";
610
        } // if file found
611
        else
612
        {
613
                if (!fileName.isEmpty())
614
                {
615
                        QStringList field = fileName.split("/");
616
                        if (!field.isEmpty())
617
                        {
618
                                file = field.takeLast();
619
                        }
620
                }
621
                result = tr("Unable to open %1 file. Please check your install directory or the Scribus website for %1 information.").arg(file);
622
                result = "";
623
        } // else file found
624
        return result;
625
} // parseLinksFile()
626
 
10913 jghali 627
void About::setVisible (bool visible)
628
{
629
        QDialog::setVisible(visible);
630
        if (m_firstShow  && (m_mode == About::CheckUpdates) && visible)
631
        {
632
                m_firstShow = false;
633
                runUpdateCheck();
634
        }
635
}
636
 
5923 cbradney 637
void About::runUpdateCheck()
638
{
10926 cbradney 639
        textView5->clear();
5924 cbradney 640
        UpgradeCheckerGUI uc(textView5);
10926 cbradney 641
        disconnect( checkForUpdateButton, SIGNAL( clicked() ), this, SLOT( runUpdateCheck() ) );
642
        connect(checkForUpdateButton, SIGNAL( clicked() ), &uc, SLOT( abort() ));
643
        checkForUpdateButton->setText( tr("Abort Update Check") );
644
        uc.fetch();
645
        checkForUpdateButton->setText( tr("Check for Updates") );
646
        connect( checkForUpdateButton, SIGNAL( clicked() ), this, SLOT( runUpdateCheck() ) );
5923 cbradney 647
}