00001
#include "distpart_widget.h"
00002
00003
#include <kparts/part.h>
00004
#include <klibloader.h>
00005
#include <kurl.h>
00006
#include <kdebug.h>
00007
#include <kprocess.h>
00008
#include <kfiledialog.h>
00009
#include <kio/netaccess.h>
00010
#include <klocale.h>
00011
#include "kdevproject.h"
00012
#include "domutil.h"
00013
00014
#include <kdevcore.h>
00015
#include <qgroupbox.h>
00016
#include <qlayout.h>
00017
#include <qnetwork.h>
00018
#include <qurloperator.h>
00019
#include <qmessagebox.h>
00020
#include "distpart_part.h"
00021
#include <qdir.h>
00022
#include <qfile.h>
00023
#include <qregexp.h>
00024
#include <qstringlist.h>
00025
#include <qtabwidget.h>
00026
#include "kdevmakefrontend.h"
00027
00028
#include <qerrormessage.h>
00029
00030 DistpartDialog::DistpartDialog(
DistpartPart *part)
00031 :
distpart_ui(0, "distpart widget") {
00032
m_part = part;
00033
00034
plug_box =
new QTabWidget( tab_2,
"plug_box" );
00035 tabLayout_2->addWidget(
plug_box, 9, 2 );
00036
00037 connect(customProjectCheckBox, SIGNAL(toggled(
bool) ),
00038
this, SLOT(
slotcustomProjectCheckBoxChanged()));
00039 connect(uploadCustomCheckBox, SIGNAL(toggled(
bool)),
00040
this, SLOT(
slotuploadCustomCheckBoxChanged()));
00041
00042 connect(okayPushButton, SIGNAL(clicked()),
00043
this, SLOT(
slotokayPushButtonPressed()));
00044 connect(cancelPushButton, SIGNAL(clicked()),
00045
this, SLOT(
slotcancelPushButtonPressed()));
00046
00047
00048 connect(createSrcArchPushButton, SIGNAL(clicked()),
00049
this, SLOT(
slotcreateSrcArchPushButtonPressed()));
00050 connect(resetSrcPushButton, SIGNAL(clicked()),
00051
this, SLOT(
slotresetSrcPushButtonPressed()));
00052
00053 connect(genHTMLPushButton, SIGNAL(clicked()),
00054
this, SLOT(
slotgenHTMLPushButtonPressed()));
00055 connect(resetHTMLPushButton, SIGNAL(clicked()),
00056
this, SLOT(
slotresetHTMLPushButtonPressed()));
00057 connect(uploadSubmitPushButton, SIGNAL(clicked()),
00058
this, SLOT(
slotuploadSubmitPushButtonPressed()));
00059 connect(uploadResetPushButton, SIGNAL(clicked()),
00060
this, SLOT(
slotuploadResetPushButtonPressed()));
00061 connect(uploadAddFileToolButton, SIGNAL(clicked()),
00062
this, SLOT(
slotuploadAddFileToolButtonPressed()));
00063 connect(uploadRemoveToolButton, SIGNAL(clicked()),
00064
this, SLOT(
slotuploadRemoveToolButtonPressed()));
00065
00066
loadSettings();
00067
00068
00069 localOptionsGroupBox->setEnabled(
false);
00070 devPackageCheckBox->setEnabled(
false);
00071 docsPackageCheckBox->setEnabled(
false);
00072 appIconCheckBox->setEnabled(
false);
00073 uploadftpkdeorgCheckBox->setEnabled(
false);
00074 uploadAppsKDEcomCheckBox->setEnabled(
false);
00075 }
00076
00077
00078 DistpartDialog::~DistpartDialog() {
00079
00080 }
00081
00082
00083
00084 void DistpartDialog::slotokayPushButtonPressed() {
00085
storeSettings();
00086 accept();
00087 }
00088
00089
00090 void DistpartDialog::slotcancelPushButtonPressed() {
00091 reject();
00092 }
00093
00094
00095
00096
00097
00098
00099
00100 void DistpartDialog::slotcreateSrcArchPushButtonPressed() {
00101
QString dist = (
getcustomProjectCheckBoxState() &&
getbzipCheckBoxState()) ?
"make dist-bzip2" :
"make dist";
00102
00103
QString filename =
getappNameFormatLineEditText() +
00104
"-" +
00105
getversionLineEditText() +
00106 ((
getcustomProjectCheckBoxState() &&
getbzipCheckBoxState()) ?
".tar.bz2" :
".tar.gz");
00107
QString command =
"cd " +
dir +
" && " + dist;
00108
if (
getcustomProjectCheckBoxState())
00109 command +=
" && mv " + filename +
" " +
getSourceName();
00110
m_part->
makeFrontend()->
queueCommand(
dir,command);
00111 }
00112
00113
00114 void DistpartDialog::slotresetSrcPushButtonPressed() {}
00115
00116
00117
00118
00119 void DistpartDialog::slotgenHTMLPushButtonPressed() {}
00120
00121
00122 void DistpartDialog::slotresetHTMLPushButtonPressed() {}
00123
00124
00125 void DistpartDialog::slotuploadAddFileToolButtonPressed() {
00126 uploadFileListBox->insertStringList(KFileDialog::getOpenFileNames());
00127 }
00128
00129
00130 void DistpartDialog::slotuploadRemoveToolButtonPressed() {
00131
for(
unsigned int i=0; i<uploadFileListBox->count(); i++)
00132
if (uploadFileListBox->isSelected(i)) uploadFileListBox->removeItem(i);
00133 }
00134
00135
00136 void DistpartDialog::slotuploadSubmitPushButtonPressed() {
00137
00138
if(
getuploadftpkdeorgCheckBoxState() ||
getuploadAppsKDEcomCheckBoxState())
00139
kdDebug() <<
"Implement ftp.kde.org & apps.kde.com ftp transfer" <<
endl;
00140
else {
00141
for(
unsigned int i=0; i<uploadFileListBox->count(); i++)
00142
KIO::NetAccess::copy(
"file:"+ uploadFileListBox->text(i),
getuploadURLLineEditText() + uploadFileListBox->text(i).replace(
QRegExp(
"[^/]*/"),
""));
00143 }
00144 }
00145
00146
00147 void DistpartDialog::slotuploadResetPushButtonPressed() {
00148 uploadFileListBox->clear();
00149 }
00150
00151
00152
00153
00154
00155
00156 void DistpartDialog::slotcustomProjectCheckBoxChanged() {
00157
kdDebug () <<
"New State" << customProjectCheckBox->isChecked() <<
endl;
00158 sourceOptionsGroupBox->setEnabled(customProjectCheckBox->isChecked());
00159 }
00160
00161 bool DistpartDialog::getcustomProjectCheckBoxState() {
00162
return customProjectCheckBox->isChecked();
00163 }
00164
00165 void DistpartDialog::setcustomProjectCheckBoxState(
bool state) {
00166 customProjectCheckBox->setChecked(state);
00167 }
00168
00169
00170 void DistpartDialog::slotuploadCustomCheckBoxChanged() {
00171 uploadURLLineEdit->setEnabled(uploadCustomCheckBox->isChecked());
00172 }
00173
00174 bool DistpartDialog::getuploadCustomCheckBoxState() {
00175
return uploadCustomCheckBox->isChecked();
00176 }
00177
00178 void DistpartDialog::setuploadCustomCheckBoxState(
bool state) {
00179 uploadCustomCheckBox->setChecked(state);
00180 }
00181
00182
00183
00184
00185 bool DistpartDialog::getbzipCheckBoxState() {
00186
return bzipCheckBox->isChecked();
00187 }
00188
00189 void DistpartDialog::setbzipCheckBoxState(
bool state) {
00190 bzipCheckBox->setChecked(state);
00191 }
00192
00193
00194 bool DistpartDialog::getappIconCheckBoxState() {
00195
return appIconCheckBox->isChecked();
00196 }
00197
00198 void DistpartDialog::setappIconCheckBoxState(
bool state) {
00199 appIconCheckBox->setChecked(state);
00200 }
00201
00202
00203 bool DistpartDialog::getgenHTMLCheckBoxState() {
00204
return genHTMLCheckBox->isChecked();
00205 }
00206
00207 void DistpartDialog::setgenHTMLCheckBoxState(
bool state) {
00208 genHTMLCheckBox->setChecked(state);
00209 }
00210
00211
00212 bool DistpartDialog::getuseRPMInfoCheckBoxState() {
00213
return useRPMInfoCheckBox->isChecked();
00214 }
00215
00216 void DistpartDialog::setuseRPMInfoCheckBoxState(
bool state) {
00217 useRPMInfoCheckBox->setChecked(state);
00218 }
00219
00220
00221 bool DistpartDialog::getuploadAppsKDEcomCheckBoxState() {
00222
return uploadAppsKDEcomCheckBox->isChecked();
00223 }
00224
00225 void DistpartDialog::setuploadAppsKDEcomCheckBoxState(
bool state) {
00226 uploadAppsKDEcomCheckBox->setChecked(state);
00227 }
00228
00229
00230 bool DistpartDialog::getuploadftpkdeorgCheckBoxState() {
00231
return uploadftpkdeorgCheckBox->isChecked();
00232 }
00233
00234 void DistpartDialog::setuploadftpkdeorgCheckBoxState(
bool state) {
00235 uploadftpkdeorgCheckBox->setChecked(state);
00236 }
00237
00238
00239 bool DistpartDialog::getdevPackageCheckBoxState() {
00240
return devPackageCheckBox->isChecked();
00241 }
00242
00243 void DistpartDialog::setdevPackageCheckBoxState(
bool state) {
00244 devPackageCheckBox->setChecked(state);
00245 }
00246
00247
00248 bool DistpartDialog::getdocsPackageCheckBoxState() {
00249
return docsPackageCheckBox->isChecked();
00250 }
00251
00252 void DistpartDialog::setdocsPackageCheckBoxState(
bool state) {
00253 docsPackageCheckBox->setChecked(state);
00254 }
00255
00256
00257 QString DistpartDialog::getarchNameFormatLineEditText() {
00258
return archNameFormatLineEdit->text();
00259 }
00260
00261 void DistpartDialog::setarchNameFormatLineEditText(
QString text) {
00262 archNameFormatLineEdit->setText(
text);
00263 }
00264
00265
00266 QString DistpartDialog::getappNameFormatLineEditText() {
00267
return appNameLineEdit->text();
00268 }
00269
00270 void DistpartDialog::setappNameFormatLineEditText(
QString text) {
00271 appNameLineEdit->setText(
text);
00272 }
00273
00274
00275 QString DistpartDialog::getsummaryLineEditText() {
00276
return summaryLineEdit->text();
00277 }
00278
00279 void DistpartDialog::setsummaryLineEditText(
QString text) {
00280 summaryLineEdit->setText(
text);
00281 }
00282
00283
00284 QString DistpartDialog::getgroupLineEditText() {
00285
return groupLineEdit->text();
00286 }
00287
00288 void DistpartDialog::setgroupLineEditText(
QString text) {
00289 groupLineEdit->setText(
text);
00290 }
00291
00292
00293 QString DistpartDialog::getreleaseLineEditText() {
00294
return releaseLineEdit->text();
00295 }
00296
00297 void DistpartDialog::setreleaseLineEditText(
QString text) {
00298 releaseLineEdit->setText(
text);
00299 }
00300
00301
00302 QString DistpartDialog::getversionLineEditText() {
00303
return versionLineEdit->text();
00304 }
00305
00306 void DistpartDialog::setversionLineEditText(
QString text) {
00307 versionLineEdit->setText(
text );
00308 }
00309
00310
00311 QString DistpartDialog::getvendorLineEditText() {
00312
return vendorLineEdit->text();
00313 }
00314
00315 void DistpartDialog::setvendorLineEditText(
QString text) {
00316 vendorLineEdit->setText(
text);
00317 }
00318
00319
00320 QString DistpartDialog::getlicenseLineEditText() {
00321
return licenseLineEdit->text();
00322 }
00323
00324 void DistpartDialog::setlicenseLineEditText(
QString text) {
00325 licenseLineEdit->setText(
text);
00326 }
00327
00328
00329 QString DistpartDialog::getuploadURLLineEditText() {
00330
return uploadURLLineEdit->text();
00331 }
00332
00333 void DistpartDialog::setuploadURLLineEditText(
QString text) {
00334 uploadURLLineEdit->setText(
text);
00335 }
00336
00337
00338 QString DistpartDialog::getpackagerLineEditText() {
00339
return packagerLineEdit->text();
00340 }
00341
00342 void DistpartDialog::setpackagerLineEditText(
QString text) {
00343 packagerLineEdit->setText(
text);
00344 }
00345
00346
00347 QString DistpartDialog::getarchComboBoxText() {
00348
return archComboBox->currentText();
00349 }
00350
00351 int DistpartDialog::getarchComboBoxItem() {
00352
return archComboBox->currentItem();
00353 }
00354
00355 void DistpartDialog::setarchComboBoxItem(
int item) {
00356 archComboBox->setCurrentItem( item );
00357 }
00358
00359
00360 QString DistpartDialog::getuploadFileListBoxText() {
00361
return uploadFileListBox->currentText();
00362 }
00363
00364 int DistpartDialog::getuploadFileListBoxItem() {
00365
return uploadFileListBox->currentItem();
00366 }
00367
00368 void DistpartDialog::setuploadFileListBoxItem(
int item) {
00369 uploadFileListBox->setCurrentItem( item);
00370 }
00371
00372
00373 QString DistpartDialog::getsrcDistFileListBoxText() {
00374
return srcDistFileListBox->currentText ();
00375 }
00376
00377 int DistpartDialog::getsrcDistFileListBoxItem() {
00378
return srcDistFileListBox->currentItem ();
00379 }
00380
00381 void DistpartDialog::setsrcDistFileListBoxItem(
int item) {
00382 srcDistFileListBox->setCurrentItem( item );
00383 }
00384
00385
00386 QString DistpartDialog::getprojectDescriptionMultilineEditText() {
00387
return projectDescriptionMultilineEdit->text();
00388 }
00389
00390 void DistpartDialog::setprojectDescriptionMultilineEditText(
QString text) {
00391 projectDescriptionMultilineEdit->setText(
text);
00392 }
00393
00394 QString DistpartDialog::getprojectChangelogMultilineEditText() {
00395
return projectChangelogMultilineEdit->text();
00396 }
00397
00398 void DistpartDialog::setprojectChangelogMultilineEditText(
QString text) {
00399 projectChangelogMultilineEdit->setText(
text);
00400 }
00401
00402 QString DistpartDialog::getSourceName() {
00403
QString name = (
getcustomProjectCheckBoxState()) ?
getarchNameFormatLineEditText() :
QString(
"%n-%v");
00404 name += (
getcustomProjectCheckBoxState() &&
getbzipCheckBoxState()) ?
".tar.bz2" :
".tar.gz";
00405
return name.replace(
QRegExp(
"%n"),
getappNameFormatLineEditText())
00406 .replace(
QRegExp(
"%v"),
getversionLineEditText())
00407 .replace(
QRegExp(
"%d"),QDate::currentDate().toString(
"yyyyMMdd"));
00408 }
00409
00410 void DistpartDialog::loadSettings() {
00411
QDomDocument &dom = *
m_part->
projectDom();
00412
dir =
m_part->
project()->
projectDirectory();
00413
QDir projectdir(
dir);
00414 srcDistFileListBox->insertStringList(projectdir.entryList());
00415
00416
00417
setcustomProjectCheckBoxState(DomUtil::readBoolEntry(dom,
"/dist/custom",
false));
00418
slotcustomProjectCheckBoxChanged();
00419
setbzipCheckBoxState(DomUtil::readBoolEntry(dom,
"/dist/bzip",
false));
00420
setarchNameFormatLineEditText(DomUtil::readEntry(dom,
"/dist/archname"));
00421
00422
00423
00424
setappNameFormatLineEditText(DomUtil::readEntry(dom,
"/dist/appname",DomUtil::readEntry(dom,
"/general/projectname")));
00425
setversionLineEditText(DomUtil::readEntry(dom,
"/dist/version",DomUtil::readEntry(dom,
"/general/version")));
00426
setreleaseLineEditText(DomUtil::readEntry(dom,
"/dist/release"));
00427
setvendorLineEditText(DomUtil::readEntry(dom,
"/dist/vendor"));
00428
setlicenseLineEditText(DomUtil::readEntry(dom,
"/dist/licence"));
00429
setsummaryLineEditText(DomUtil::readEntry(dom,
"/dist/summary"));
00430
setgroupLineEditText(DomUtil::readEntry(dom,
"/dist/group"));
00431
setpackagerLineEditText(DomUtil::readEntry(dom,
"/dist/packager"));
00432
setprojectDescriptionMultilineEditText(DomUtil::readEntry(dom,
"/dist/description",DomUtil::readEntry(dom,
"/general/description")));
00433
setprojectChangelogMultilineEditText(DomUtil::readEntry(dom,
"/dist/changelog"));
00434
setdevPackageCheckBoxState(DomUtil::readBoolEntry(dom,
"/dist/devpackage"));
00435
setdocsPackageCheckBoxState(DomUtil::readBoolEntry(dom,
"/dist/docspackage"));
00436
setappIconCheckBoxState(DomUtil::readBoolEntry(dom,
"/dist/appicon"));
00437
setarchComboBoxItem(DomUtil::readIntEntry(dom,
"/dist/arch"));
00438
00439
00440
setgenHTMLCheckBoxState(DomUtil::readBoolEntry(dom,
"/dist/genHTML"));
00441
setuseRPMInfoCheckBoxState(DomUtil::readBoolEntry(dom,
"/dist/useRPM"));
00442
setuploadftpkdeorgCheckBoxState(DomUtil::readBoolEntry(dom,
"/dist/ftpkde"));
00443
setuploadAppsKDEcomCheckBoxState(DomUtil::readBoolEntry(dom,
"/dist/appskde"));
00444
setuploadCustomCheckBoxState(DomUtil::readBoolEntry(dom,
"/dist/custom"));
00445
slotuploadCustomCheckBoxChanged();
00446
setuploadURLLineEditText(DomUtil::readEntry(dom,
"/dist/url"));
00447 }
00448
00449 void DistpartDialog::storeSettings() {
00450
QDomDocument &dom = *
m_part->
projectDom();
00451
00452
00453 DomUtil::writeBoolEntry(dom,
"/dist/custom",
getcustomProjectCheckBoxState());
00454 DomUtil::writeBoolEntry(dom,
"/dist/bzip",
getbzipCheckBoxState());
00455 DomUtil::writeEntry(dom,
"/dist/archname",
getarchNameFormatLineEditText());
00456
00457
00458 DomUtil::writeEntry(dom,
"/dist/appname",
getappNameFormatLineEditText());
00459 DomUtil::writeEntry(dom,
"/dist/version",
getversionLineEditText());
00460 DomUtil::writeEntry(dom,
"/dist/release",
getreleaseLineEditText());
00461 DomUtil::writeEntry(dom,
"/dist/vendor",
getvendorLineEditText());
00462 DomUtil::writeEntry(dom,
"/dist/licence",
getlicenseLineEditText());
00463 DomUtil::writeEntry(dom,
"/dist/summary",
getsummaryLineEditText());
00464 DomUtil::writeEntry(dom,
"/dist/group",
getgroupLineEditText());
00465 DomUtil::writeEntry(dom,
"/dist/packager",
getpackagerLineEditText());
00466 DomUtil::writeEntry(dom,
"/dist/description",
getprojectDescriptionMultilineEditText());
00467 DomUtil::writeEntry(dom,
"/dist/changelog",
getprojectChangelogMultilineEditText());
00468 DomUtil::writeBoolEntry(dom,
"/dist/devpackage",
getdevPackageCheckBoxState());
00469 DomUtil::writeBoolEntry(dom,
"/dist/docspackage",
getdocsPackageCheckBoxState());
00470 DomUtil::writeBoolEntry(dom,
"/dist/appicon",
getappIconCheckBoxState());
00471 DomUtil::writeIntEntry(dom,
"/dist/arch",
getarchComboBoxItem());
00472
00473
00474 DomUtil::writeBoolEntry(dom,
"/dist/genHTML",
getgenHTMLCheckBoxState());
00475 DomUtil::writeBoolEntry(dom,
"/dist/useRPM",
getuseRPMInfoCheckBoxState());
00476 DomUtil::writeBoolEntry(dom,
"/dist/ftpkde",
getuploadftpkdeorgCheckBoxState());
00477 DomUtil::writeBoolEntry(dom,
"/dist/appskde",
getuploadAppsKDEcomCheckBoxState());
00478 DomUtil::writeBoolEntry(dom,
"/dist/custom",
getuploadCustomCheckBoxState());
00479 DomUtil::writeEntry(dom,
"/dist/url",
getuploadURLLineEditText());
00480 }
00481
00482
00483
#include "distpart_widget.moc"