/*************************************************************************** datetime.cpp - description ------------------- begin : Mon Jan 7 2002 copyright : (C) 2002 by Dominik Seichter email : domseichter@web.de ***************************************************************************/ /*************************************************************************** * * * 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 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "datetime.h" // QT includes #include #include #include #include #include // KDE includes #include #include #include #include #include // OS includes #include #include #include #include #include #include const TQString MyDatePlugin::getName() const { return i18n("Date & Time"); } const TQString MyDatePlugin::getAccelName() const { return i18n("Date && &Time"); } const int MyDatePlugin::type() const { return TYPE_FINAL_FILE; } bool MyDatePlugin::checkError() { return true; } const TQPixmap MyDatePlugin::getIcon() const { return kapp->iconLoader()->loadIcon( "kalarm", KIcon::Small ); } void MyDatePlugin::drawInterface( TQWidget* w, TQVBoxLayout* l ) { m_widget = w; #ifdef BENNY l->addWidget( new TQLabel("Setze Modifiaction Time um eine Stunde zurück", w) ); #else Layout0 = new TQHBoxLayout( 0, 0, 6, "Layout0"); Layout1 = new TQVBoxLayout( 0, 0, 6, "Layout1"); Layout2 = new TQHBoxLayout( 0, 0, 6, "Layout2"); kDate = new KDatePicker( w ); checkAccess = new TQCheckBox( w, "checkAccess" ); checkAccess->setText( i18n( "Change &access date && time" ) ); checkModification = new TQCheckBox( w, "checkModification" ); checkModification->setText( i18n( "Change &modification date && time" ) ); labelTime = new TQLabel( w, "labelTime" ); labelTime->setText( i18n( "Time:" ) ); spinHour = new KIntSpinBox( w, "spinHour" ); spinHour->setSuffix( i18n( "h" ) ); spinHour->setMaxValue( 23 ); spinMinute = new KIntSpinBox( w, "spinMinute" ); spinMinute->setSuffix( i18n( "min" ) ); spinMinute->setMaxValue( 59 ); spinSecond = new KIntSpinBox( w, "spinSecond" ); spinSecond->setSuffix( i18n( "s" ) ); spinSecond->setMaxValue( 59 ); buttonCurrentDT = new TQPushButton( w, "buttonCurrentDT" ); buttonCurrentDT->setText( i18n( "&Get Current Date && Time" ) ); Layout2->addWidget( labelTime ); Layout2->addWidget( spinHour ); Layout2->addWidget( spinMinute ); Layout2->addWidget( spinSecond ); Layout1->addWidget( kDate ); Layout1->addWidget( checkAccess ); Layout1->addWidget( checkModification ); Layout1->addLayout( Layout2 ); Layout1->addWidget( buttonCurrentDT ); Layout0->addLayout( Layout1 ); TQSpacerItem* spacer = new TQSpacerItem( 20, 20, TQSizePolicy::Minimum, TQSizePolicy::Expanding ); Layout0->addItem( spacer ); l->addLayout( Layout0 ); connect( buttonCurrentDT, TQT_SIGNAL(clicked()), this, TQT_SLOT(changeDT())); #endif } void MyDatePlugin::fillStructure() { #ifndef BENNY dvals.date = kDate->getDate(); dvals.changeModification = checkModification->isChecked(); dvals.changeAccess = checkAccess->isChecked(); dvals.hour = spinHour->value(); dvals.minute = spinMinute->value(); dvals.second = spinSecond->value(); #endif } TQString MyDatePlugin::processFile( BatchRenamer* b, int i, TQString, int ) { #ifdef BENNY TQString filename = b->files()[i].dst.name; FILE * f; struct utimbuf * t = new utimbuf(); struct tm tmp; struct stat st; time_t ti; f = fopen((const char *)filename, "r"); if( f == NULL ) return TQString( i18n("Can't change date of file %1.") ).tqarg(filename); fclose( f ); TQFileInfo info( filename ); tmp.tm_mday = info.lastModified().date().day(); tmp.tm_mon = info.lastModified().date().month() - 1; tmp.tm_year = info.lastModified().date().year() - 1900; tmp.tm_hour = info.lastModified().time().hour() - 1; tmp.tm_min = info.lastModified().time().minute(); tmp.tm_sec = info.lastModified().time().second(); tmp.tm_isdst = -1; ti = mktime( &tmp ); if( ti == -1 ) return TQString( i18n("Can't change date of file %1.") ).tqarg(filename); if( stat( (const char *)filename, &st ) == -1 ) return TQString( i18n("Can't change date of file %1.") ).tqarg(filename); t->actime = st.st_atime; t->modtime = ti; if(utime( (const char *)filename, t ) != 0) return TQString( i18n("Can't change date of file %1.") ).tqarg(filename); return TQString(); #else TQString filename = b->files()[i].dst.name; FILE * f; struct utimbuf * t = new utimbuf(); struct tm tmp; struct stat st; time_t ti; f = fopen((const char *)filename, "r"); if( f == NULL ) return TQString( i18n("Can't change date of file %1.") ).tqarg(filename); fclose( f ); tmp.tm_mday = dvals.date.day(); tmp.tm_mon = dvals.date.month() - 1; tmp.tm_year = dvals.date.year() - 1900; tmp.tm_hour = dvals.hour; tmp.tm_min = dvals.minute; tmp.tm_sec = dvals.second; tmp.tm_isdst = -1; ti = mktime( &tmp ); if( ti == -1 ) return TQString( i18n("Can't change date of file %1.") ).tqarg(filename); if( stat( (const char *)filename, &st ) == -1 ) return TQString( i18n("Can't change date of file %1.") ).tqarg(filename); if(dvals.changeAccess) t->actime = ti; else t->actime = st.st_atime; if(dvals.changeModification) t->modtime = ti; else t->modtime = st.st_mtime; if(utime( (const char *)filename, t ) != 0) return TQString( i18n("Can't change date of file %1.") ).tqarg(filename); return TQString(); #endif } void MyDatePlugin::changeDT() { spinHour->setValue( TQTime::currentTime().hour()); spinMinute->setValue( TQTime::currentTime().minute()); spinSecond->setValue( TQTime::currentTime().second()); kDate->setDate( TQDate::tqcurrentDate() ); }