|
|
|
/* ============================================================
|
|
|
|
*
|
|
|
|
* This file is a part of digiKam project
|
|
|
|
* http://www.digikam.org
|
|
|
|
*
|
|
|
|
* Date : 2003-02-01
|
|
|
|
* Description : dialog displayed at the first digiKam run
|
|
|
|
*
|
|
|
|
* Copyright (C) 2003-2005 by Renchi Raju <renchi@pooh.tam.uiuc.edu>
|
|
|
|
* Copyright (C) 2006-2007 by Gilles Caulier <caulier dot gilles at gmail dot com>
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it
|
|
|
|
* and/or modify it under the terms of the GNU General
|
|
|
|
* Public License as published by the Free Software Foundation;
|
|
|
|
* either version 2, or (at your option)
|
|
|
|
* any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* ============================================================ */
|
|
|
|
|
|
|
|
// C Ansi includes.
|
|
|
|
|
|
|
|
extern "C"
|
|
|
|
{
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/stat.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
}
|
|
|
|
|
|
|
|
// C++ includes.
|
|
|
|
|
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
// TQt includes.
|
|
|
|
|
|
|
|
#include <tqcheckbox.h>
|
|
|
|
#include <tqgroupbox.h>
|
|
|
|
#include <tqlabel.h>
|
|
|
|
#include <tqlineedit.h>
|
|
|
|
#include <tqpushbutton.h>
|
|
|
|
#include <tqlayout.h>
|
|
|
|
#include <tqstring.h>
|
|
|
|
#include <tqdir.h>
|
|
|
|
#include <tqfileinfo.h>
|
|
|
|
|
|
|
|
// KDE includes.
|
|
|
|
|
|
|
|
#include <klocale.h>
|
|
|
|
#include <tdeconfig.h>
|
|
|
|
#include <tdefiledialog.h>
|
|
|
|
#include <tdeapplication.h>
|
|
|
|
#include <kiconloader.h>
|
|
|
|
#include <kstandarddirs.h>
|
|
|
|
#include <kurl.h>
|
|
|
|
#include <kurlrequester.h>
|
|
|
|
#include <kmessagebox.h>
|
|
|
|
|
|
|
|
// Local includes.
|
|
|
|
|
|
|
|
#include "daboutdata.h"
|
|
|
|
#include "ddebug.h"
|
|
|
|
#include "firstrun.h"
|
|
|
|
#include "digikamfirstrun.h"
|
|
|
|
#include "digikamfirstrun.moc"
|
|
|
|
|
|
|
|
namespace Digikam
|
|
|
|
{
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
|
|
DigikamFirstRun::DigikamFirstRun(TDEConfig* config, TQWidget* parent,
|
|
|
|
const char* name, bool modal, WFlags fl)
|
|
|
|
: KDialogBase(parent, name, modal, i18n( "Album Library Path" ),
|
|
|
|
Help|Ok|Cancel, Ok, true )
|
|
|
|
|
|
|
|
{
|
|
|
|
setHelp("firstrundialog.anchor", "digikam");
|
|
|
|
setWFlags(fl);
|
|
|
|
|
|
|
|
m_config = config;
|
|
|
|
m_ui = new FirstRunWidget(this);
|
|
|
|
setMainWidget(m_ui);
|
|
|
|
m_ui->m_path->setURL(TQDir::homeDirPath() +
|
|
|
|
i18n("This is a path name so you should "
|
|
|
|
"include the slash in the translation","/Pictures"));
|
|
|
|
m_ui->m_path->setMode(KFile::Directory | KFile::LocalOnly);
|
|
|
|
|
|
|
|
TDEIconLoader* iconLoader = TDEApplication::kApplication()->iconLoader();
|
|
|
|
m_ui->m_pixLabel->setPixmap(iconLoader->loadIcon("digikam", TDEIcon::NoGroup,
|
|
|
|
128, TDEIcon::DefaultState, 0, true));
|
|
|
|
m_ui->setMinimumSize(450, m_ui->sizeHint().height());
|
|
|
|
}
|
|
|
|
|
|
|
|
DigikamFirstRun::~DigikamFirstRun()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void DigikamFirstRun::slotOk()
|
|
|
|
{
|
|
|
|
TQString albumLibraryFolder = m_ui->m_path->url();
|
|
|
|
|
|
|
|
if (albumLibraryFolder.isEmpty())
|
|
|
|
{
|
|
|
|
KMessageBox::sorry(this, i18n("You must select a folder for digiKam to "
|
|
|
|
"use as the Album Library folder."));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!albumLibraryFolder.startsWith("/"))
|
|
|
|
{
|
|
|
|
albumLibraryFolder.prepend(TQDir::homeDirPath());
|
|
|
|
}
|
|
|
|
|
|
|
|
if (KURL(albumLibraryFolder).equals(KURL(TQDir::homeDirPath()), true))
|
|
|
|
{
|
|
|
|
KMessageBox::sorry(this, i18n("digiKam cannot use your home folder as "
|
|
|
|
"the Album Library folder."));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
TQDir targetPath(albumLibraryFolder);
|
|
|
|
|
|
|
|
if (!targetPath.exists())
|
|
|
|
{
|
|
|
|
int rc = KMessageBox::questionYesNo(this,
|
|
|
|
i18n("<qt>The folder you selected does not exist: "
|
|
|
|
|
|
|
|
"<p><b>%1</b></p>"
|
|
|
|
"Would you like digiKam to create it?</qt>")
|
|
|
|
.arg(albumLibraryFolder),
|
|
|
|
i18n("Create Folder?"));
|
|
|
|
|
|
|
|
if (rc == KMessageBox::No)
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!targetPath.mkdir(albumLibraryFolder))
|
|
|
|
{
|
|
|
|
KMessageBox::sorry(this,
|
|
|
|
i18n("<qt>digiKam could not create the folder shown below. "
|
|
|
|
"Please select a different location."
|
|
|
|
"<p><b>%1</b></p></qt>").arg(albumLibraryFolder),
|
|
|
|
i18n("Create Folder Failed"));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
TQFileInfo path(albumLibraryFolder);
|
|
|
|
|
|
|
|
if (!path.isWritable())
|
|
|
|
{
|
|
|
|
KMessageBox::information(this, i18n("No write access for this path.\n"
|
|
|
|
"Warning: the comment and tag features "
|
|
|
|
"will not work."));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
m_config->setGroup("General Settings");
|
|
|
|
m_config->writeEntry("Version", digikam_version);
|
|
|
|
|
|
|
|
m_config->setGroup("Album Settings");
|
|
|
|
m_config->writePathEntry("Album Path", albumLibraryFolder);
|
|
|
|
m_config->sync();
|
|
|
|
|
|
|
|
KDialogBase::accept();
|
|
|
|
|
|
|
|
TQString ErrorMsg, URL;
|
|
|
|
|
|
|
|
if (kapp->startServiceByDesktopName("digikam", URL , &ErrorMsg) > 0)
|
|
|
|
{
|
|
|
|
DError() << ErrorMsg << endl;
|
|
|
|
KMessageBox::sorry(this, i18n("Cannot restart digiKam automatically.\n"
|
|
|
|
"Please restart digiKam manually."));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
} // namespace Digikam
|
|
|
|
|