/* This file is part of KOrganizer. Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include <tqcombobox.h> #include <tqlabel.h> #include <tqlayout.h> #include <tqlineedit.h> #include <tqspinbox.h> #include <tqstring.h> #include <ktextedit.h> #include <klistview.h> #include <klocale.h> #include <kdebug.h> #include <kurlrequester.h> #include <kmessagebox.h> #include <kconfig.h> #include <kapplication.h> #include <kuser.h> #include "engine.h" #include "entry.h" #include "uploaddialog.h" #include "uploaddialog.moc" using namespace KNS; UploadDialog::UploadDialog( Engine *engine, TQWidget *parent ) : KDialogBase( Plain, i18n("Share Hot New Stuff"), Ok | Cancel, Cancel, parent, 0, false, true ), mEngine( engine ) { mEntryList.setAutoDelete( true ); TQFrame *topPage = plainPage(); TQGridLayout *topLayout = new TQGridLayout( topPage ); topLayout->setSpacing( spacingHint() ); TQLabel *nameLabel = new TQLabel( i18n("Name:"), topPage ); topLayout->addWidget( nameLabel, 0, 0 ); mNameEdit = new TQLineEdit( topPage ); topLayout->addWidget( mNameEdit, 0, 1 ); TQLabel *authorLabel = new TQLabel( i18n("Author:"), topPage ); topLayout->addWidget( authorLabel, 1, 0 ); mAuthorEdit = new TQLineEdit( topPage ); topLayout->addWidget( mAuthorEdit, 1, 1 ); TQLabel *emailLabel = new TQLabel( i18n("Email:"), topPage ); topLayout->addWidget( emailLabel, 2, 0 ); mEmailEdit = new TQLineEdit( topPage ); topLayout->addWidget( mEmailEdit, 2, 1 ); TQLabel *versionLabel = new TQLabel( i18n("Version:"), topPage ); topLayout->addWidget( versionLabel, 3, 0 ); mVersionEdit = new TQLineEdit( topPage ); topLayout->addWidget( mVersionEdit, 3, 1 ); TQLabel *releaseLabel = new TQLabel( i18n("Release:"), topPage ); topLayout->addWidget( releaseLabel, 4, 0 ); mReleaseSpin = new TQSpinBox( topPage ); mReleaseSpin->setMinValue( 1 ); topLayout->addWidget( mReleaseSpin, 4, 1 ); TQLabel *licenceLabel = new TQLabel( i18n("License:"), topPage ); topLayout->addWidget( licenceLabel, 5, 0 ); mLicenceCombo = new TQComboBox( topPage ); mLicenceCombo->setEditable( true ); mLicenceCombo->insertItem( i18n("GPL") ); mLicenceCombo->insertItem( i18n("LGPL") ); mLicenceCombo->insertItem( i18n("BSD") ); topLayout->addWidget( mLicenceCombo, 5, 1 ); TQLabel *languageLabel = new TQLabel( i18n("Language:"), topPage ); topLayout->addWidget( languageLabel, 6, 0 ); mLanguageCombo = new TQComboBox( topPage ); topLayout->addWidget( mLanguageCombo, 6, 1 ); mLanguageCombo->insertStringList( KGlobal::locale()->languageList() ); TQLabel *previewLabel = new TQLabel( i18n("Preview URL:"), topPage ); topLayout->addWidget( previewLabel, 7, 0 ); mPreviewUrl = new KURLRequester( topPage ); topLayout->addWidget( mPreviewUrl, 7, 1 ); TQLabel *summaryLabel = new TQLabel( i18n("Summary:"), topPage ); topLayout->addMultiCellWidget( summaryLabel, 8, 8, 0, 1 ); mSummaryEdit = new KTextEdit( topPage ); topLayout->addMultiCellWidget( mSummaryEdit, 9, 9, 0, 1 ); KUser user; mAuthorEdit->setText(user.fullName()); } UploadDialog::~UploadDialog() { mEntryList.clear(); } void UploadDialog::slotOk() { if ( mNameEdit->text().isEmpty() ) { KMessageBox::error( this, i18n("Please put in a name.") ); return; } Entry *entry = new Entry; mEntryList.append( entry ); entry->setName( mNameEdit->text() ); entry->setAuthor( mAuthorEdit->text() ); entry->setAuthorEmail( mEmailEdit->text() ); entry->setVersion( mVersionEdit->text() ); entry->setRelease( mReleaseSpin->value() ); entry->setLicence( mLicenceCombo->currentText() ); entry->setPreview( KURL( mPreviewUrl->url().section("/", -1) ), mLanguageCombo->currentText() ); entry->setSummary( mSummaryEdit->text(), mLanguageCombo->currentText() ); if ( mPayloadUrl.isValid() ) { KConfig *conf = kapp->config(); conf->setGroup( TQString("KNewStuffUpload:%1").arg(mPayloadUrl.fileName()) ); conf->writeEntry("name", mNameEdit->text()); conf->writeEntry("author", mAuthorEdit->text()); conf->writeEntry("email", mEmailEdit->text()); conf->writeEntry("version", mVersionEdit->text()); conf->writeEntry("release", mReleaseSpin->value()); conf->writeEntry("licence", mLicenceCombo->currentText()); conf->writeEntry("preview", mPreviewUrl->url()); conf->writeEntry("summary", mSummaryEdit->text()); conf->writeEntry("language", mLanguageCombo->currentText()); conf->sync(); } mEngine->upload( entry ); accept(); } void UploadDialog::setPreviewFile( const TQString &previewFile ) { mPreviewUrl->setURL( previewFile ); } void UploadDialog::setPayloadFile( const TQString &payloadFile ) { mPayloadUrl = payloadFile; KConfig *conf = kapp->config(); conf->setGroup( TQString("KNewStuffUpload:%1").arg(mPayloadUrl.fileName()) ); TQString name = conf->readEntry("name"); TQString author = conf->readEntry("author"); TQString email = conf->readEntry("email"); TQString version = conf->readEntry("version"); TQString release = conf->readEntry("release"); TQString preview = conf->readEntry("preview"); TQString summary = conf->readEntry("summary"); TQString lang = conf->readEntry("language"); TQString licence = conf->readEntry("licence"); mNameEdit->clear(); mAuthorEdit->clear(); mEmailEdit->clear(); mVersionEdit->clear(); mReleaseSpin->setValue(1); mPreviewUrl->clear(); mSummaryEdit->clear(); mLanguageCombo->setCurrentItem(0); mLicenceCombo->setCurrentItem(0); if(!name.isNull()) { int prefill = KMessageBox::questionYesNo(this, i18n("Old upload information found, fill out fields?"),TQString::null,i18n("Fill Out"),i18n("Do Not Fill Out")); if(prefill == KMessageBox::Yes) { mNameEdit->setText(name); mAuthorEdit->setText(author); mEmailEdit->setText(email); mVersionEdit->setText(version); mReleaseSpin->setValue(release.toInt()); mPreviewUrl->setURL(preview); mSummaryEdit->setText(summary); if(!lang.isEmpty()) mLanguageCombo->setCurrentText(lang); if(!licence.isEmpty()) mLicenceCombo->setCurrentText(licence); } } }