You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
289 lines
8.1 KiB
289 lines
8.1 KiB
14 years ago
|
Index: kcontrol/clock/tzone.cpp
|
||
|
===================================================================
|
||
|
--- kcontrol/clock/tzone.cpp.orig
|
||
|
+++ kcontrol/clock/tzone.cpp
|
||
|
@@ -27,12 +27,16 @@
|
||
|
|
||
|
#include <qlabel.h>
|
||
|
#include <qfile.h>
|
||
|
+#include <qregexp.h>
|
||
|
|
||
|
#include <kdebug.h>
|
||
|
#include <klocale.h>
|
||
|
#include <kmessagebox.h>
|
||
|
#include <kdialog.h>
|
||
|
#include <kio/netaccess.h>
|
||
|
+#include <kprocess.h>
|
||
|
+#include <ksavefile.h>
|
||
|
+#include <kstandarddirs.h>
|
||
|
|
||
|
//#include "xpm/world.xpm"
|
||
|
#include "tzone.h"
|
||
|
@@ -55,6 +59,8 @@ Tzone::Tzone(QWidget * parent, const cha
|
||
|
connect( tzonelist, SIGNAL(selectionChanged()), SLOT(handleZoneChange()) );
|
||
|
|
||
|
m_local = new QLabel(this);
|
||
|
+
|
||
|
+ setupSuseTimezone();
|
||
|
|
||
|
load();
|
||
|
|
||
|
@@ -158,28 +164,38 @@ void Tzone::save()
|
||
|
|
||
|
QString val = selectedzone;
|
||
|
#else
|
||
|
- QFile fTimezoneFile("/etc/timezone");
|
||
|
+ QString tz = "/usr/share/zoneinfo/" + selectedzone;
|
||
|
|
||
|
- if (fTimezoneFile.open(IO_WriteOnly | IO_Truncate) )
|
||
|
+ kdDebug() << "Set time zone " << tz << endl;
|
||
|
+
|
||
|
+ writeSuseTimezone( selectedzone );
|
||
|
+
|
||
|
+ if( !KStandardDirs::findExe( "zic" ).isEmpty())
|
||
|
{
|
||
|
- QTextStream t(&fTimezoneFile);
|
||
|
- t << selectedzone;
|
||
|
- fTimezoneFile.close();
|
||
|
+ KProcess proc;
|
||
|
+ proc << "zic" << "-l" << selectedzone;
|
||
|
+ proc.start( KProcess::Block );
|
||
|
}
|
||
|
+ else
|
||
|
+ {
|
||
|
+ QFile fTimezoneFile("/etc/timezone");
|
||
|
|
||
|
- QString tz = "/usr/share/zoneinfo/" + selectedzone;
|
||
|
-
|
||
|
- kdDebug() << "Set time zone " << tz << endl;
|
||
|
+ if (fTimezoneFile.open(IO_WriteOnly | IO_Truncate) )
|
||
|
+ {
|
||
|
+ QTextStream t(&fTimezoneFile);
|
||
|
+ t << selectedzone;
|
||
|
+ fTimezoneFile.close();
|
||
|
+ }
|
||
|
|
||
|
- if (!QFile::remove("/etc/localtime"))
|
||
|
- {
|
||
|
+ if (!QFile::remove("/etc/localtime"))
|
||
|
+ {
|
||
|
//After the KDE 3.2 release, need to add an error message
|
||
|
- }
|
||
|
- else
|
||
|
+ }
|
||
|
+ else
|
||
|
if (!KIO::NetAccess::file_copy(KURL(tz),KURL("/etc/localtime")))
|
||
|
KMessageBox::error( 0, i18n("Error setting new timezone."),
|
||
|
i18n("Timezone Error"));
|
||
|
-
|
||
|
+ }
|
||
|
QString val = ":" + tz;
|
||
|
#endif // !USE_SOLARIS
|
||
|
|
||
|
@@ -198,3 +214,58 @@ void Tzone::save()
|
||
|
|
||
|
currentZone();
|
||
|
}
|
||
|
+
|
||
|
+// read the configured timezone from /etc/sysconfig/clock
|
||
|
+// and simply set it as $TZ, KDE code then will take it as the timezone
|
||
|
+void Tzone::setupSuseTimezone()
|
||
|
+{
|
||
|
+ QFile f( "/etc/sysconfig/clock" );
|
||
|
+ if( !f.open( IO_ReadOnly ))
|
||
|
+ return;
|
||
|
+ QTextStream str( &f );
|
||
|
+ while( !str.atEnd())
|
||
|
+ {
|
||
|
+ QString line = str.readLine();
|
||
|
+ if( line.startsWith( "TIMEZONE=" ))
|
||
|
+ {
|
||
|
+ QRegExp r( "\\s*TIMEZONE=\"(.*)\"\\s*" );
|
||
|
+ if( r.exactMatch( line ))
|
||
|
+ {
|
||
|
+ QString tz = r.cap( 1 );
|
||
|
+ setenv( "TZ", tz.ascii(), 1 );
|
||
|
+ }
|
||
|
+ }
|
||
|
+ }
|
||
|
+}
|
||
|
+
|
||
|
+void Tzone::writeSuseTimezone( QString zone )
|
||
|
+{
|
||
|
+ QFile f( "/etc/sysconfig/clock" );
|
||
|
+ if( !f.open( IO_ReadOnly ))
|
||
|
+ return;
|
||
|
+ KSaveFile out( "/etc/sysconfig/clock", 0644 );
|
||
|
+ QFile* fout = out.file();
|
||
|
+ if( fout == NULL )
|
||
|
+ return;
|
||
|
+ QTextStream str( &f );
|
||
|
+ QTextStream strout( fout );
|
||
|
+ while( !str.atEnd())
|
||
|
+ {
|
||
|
+ QString line = str.readLine();
|
||
|
+ if( line.startsWith( "TIMEZONE=" ))
|
||
|
+ {
|
||
|
+ QRegExp r( "\\s*TIMEZONE=\"(.*)\"\\s*" );
|
||
|
+ if( r.exactMatch( line ))
|
||
|
+ {
|
||
|
+ QString tz = r.cap( 1 );
|
||
|
+ if( tz == zone ) // not changed, abort
|
||
|
+ {
|
||
|
+ out.abort();
|
||
|
+ return;
|
||
|
+ }
|
||
|
+ line = "TIMEZONE=\"" + zone + "\"";
|
||
|
+ }
|
||
|
+ }
|
||
|
+ strout << line << '\n';
|
||
|
+ }
|
||
|
+}
|
||
|
Index: kcontrol/clock/tzone.h
|
||
|
===================================================================
|
||
|
--- kcontrol/clock/tzone.h.orig
|
||
|
+++ kcontrol/clock/tzone.h
|
||
|
@@ -47,6 +47,8 @@ protected slots:
|
||
|
|
||
|
private:
|
||
|
void currentZone();
|
||
|
+ void setupSuseTimezone();
|
||
|
+ void writeSuseTimezone( QString timezone );
|
||
|
KTimezones m_zoneDb;
|
||
|
QLabel *m_local;
|
||
|
KTimezoneWidget *tzonelist;
|
||
|
Index: kcontrol/clock/dtime.h
|
||
|
===================================================================
|
||
|
--- kcontrol/clock/dtime.h.orig
|
||
|
+++ kcontrol/clock/dtime.h
|
||
|
@@ -65,6 +65,9 @@ signals:
|
||
|
void timeout();
|
||
|
void set_time();
|
||
|
void changeDate(QDate);
|
||
|
+#if 1
|
||
|
+ void configureTimeServer();
|
||
|
+#endif
|
||
|
|
||
|
private:
|
||
|
void findNTPutility();
|
||
|
@@ -72,7 +75,11 @@ private:
|
||
|
|
||
|
QWidget* privateLayoutWidget;
|
||
|
QCheckBox *setDateTimeAuto;
|
||
|
+#if 1
|
||
|
+ QPushButton *timeServerConfigure;
|
||
|
+#else
|
||
|
QComboBox *timeServerList;
|
||
|
+#endif
|
||
|
|
||
|
KDatePicker *cal;
|
||
|
QComboBox *month;
|
||
|
Index: kcontrol/clock/dtime.cpp
|
||
|
===================================================================
|
||
|
--- kcontrol/clock/dtime.cpp.orig
|
||
|
+++ kcontrol/clock/dtime.cpp
|
||
|
@@ -38,6 +38,7 @@
|
||
|
#include <kmessagebox.h>
|
||
|
#include <kdialog.h>
|
||
|
#include <kconfig.h>
|
||
|
+#include <kstandarddirs.h>
|
||
|
|
||
|
#include "dtime.h"
|
||
|
#include "dtime.moc"
|
||
|
@@ -74,6 +75,18 @@ Dtime::Dtime(QWidget * parent, const cha
|
||
|
connect(setDateTimeAuto, SIGNAL(toggled(bool)), SLOT(configChanged()));
|
||
|
layout1->addWidget( setDateTimeAuto );
|
||
|
|
||
|
+#if 1
|
||
|
+ // simply add a pushbutton that'll invoke the yast module
|
||
|
+ ntpUtility = KStandardDirs::findExe( "rcntp");
|
||
|
+ timeServerConfigure = new QPushButton( i18n( "Configure" ), privateLayoutWidget, "timeServerConfigure" );
|
||
|
+ connect(timeServerConfigure, SIGNAL(clicked()), SLOT(configChanged()));
|
||
|
+ connect(timeServerConfigure, SIGNAL(clicked()), SLOT(configureTimeServer()));
|
||
|
+ connect(setDateTimeAuto, SIGNAL(toggled(bool)), timeServerConfigure, SLOT(setEnabled(bool)));
|
||
|
+ timeServerConfigure->setEnabled(false);
|
||
|
+ layout1->addWidget( timeServerConfigure );
|
||
|
+ if( ntpUtility.isEmpty())
|
||
|
+ privateLayoutWidget->hide();
|
||
|
+#else
|
||
|
timeServerList = new QComboBox( false, privateLayoutWidget, "timeServerList" );
|
||
|
connect(timeServerList, SIGNAL(activated(int)), SLOT(configChanged()));
|
||
|
connect(timeServerList, SIGNAL(textChanged(const QString &)), SLOT(configChanged()));
|
||
|
@@ -82,6 +95,7 @@ Dtime::Dtime(QWidget * parent, const cha
|
||
|
timeServerList->setEditable(true);
|
||
|
layout1->addWidget( timeServerList );
|
||
|
findNTPutility();
|
||
|
+#endif
|
||
|
|
||
|
// Date box
|
||
|
QGroupBox* dateBox = new QGroupBox( this, "dateBox" );
|
||
|
@@ -179,7 +193,11 @@ Dtime::Dtime(QWidget * parent, const cha
|
||
|
hour->setEnabled(false);
|
||
|
minute->setEnabled(false);
|
||
|
second->setEnabled(false);
|
||
|
+#if 1
|
||
|
+ timeServerConfigure->setEnabled(false);
|
||
|
+#else
|
||
|
timeServerList->setEnabled(false);
|
||
|
+#endif
|
||
|
setDateTimeAuto->setEnabled(false);
|
||
|
}
|
||
|
kclock->setEnabled(false);
|
||
|
@@ -241,6 +259,15 @@ void Dtime::configChanged(){
|
||
|
void Dtime::load()
|
||
|
{
|
||
|
KConfig config("kcmclockrc", true, false);
|
||
|
+#if 1
|
||
|
+ if( !ntpUtility.isEmpty())
|
||
|
+ {
|
||
|
+ KProcess proc;
|
||
|
+ proc << ntpUtility << "status";
|
||
|
+ proc.start( KProcess::Block );
|
||
|
+ setDateTimeAuto->setChecked( proc.exitStatus() == 0 );
|
||
|
+ }
|
||
|
+#else
|
||
|
config.setGroup("NTP");
|
||
|
timeServerList->insertStringList(QStringList::split(',', config.readEntry("servers",
|
||
|
i18n("Public Time Server (pool.ntp.org),\
|
||
|
@@ -249,6 +276,7 @@ europe.pool.ntp.org,\
|
||
|
north-america.pool.ntp.org,\
|
||
|
oceania.pool.ntp.org"))));
|
||
|
setDateTimeAuto->setChecked(config.readBoolEntry("enabled", false));
|
||
|
+#endif
|
||
|
|
||
|
// Reset to the current date and time
|
||
|
time = QTime::currentTime();
|
||
|
@@ -264,6 +292,7 @@ oceania.pool.ntp.org"))));
|
||
|
void Dtime::save()
|
||
|
{
|
||
|
KConfig config("kcmclockrc", false, false);
|
||
|
+#if 0
|
||
|
config.setGroup("NTP");
|
||
|
|
||
|
// Save the order, but don't duplicate!
|
||
|
@@ -301,7 +330,9 @@ void Dtime::save()
|
||
|
kdDebug() << "Set date from time server " << timeServer.latin1() << " success!" << endl;
|
||
|
}
|
||
|
}
|
||
|
- else {
|
||
|
+ else
|
||
|
+#endif
|
||
|
+ {
|
||
|
// User time setting
|
||
|
KProcess c_proc;
|
||
|
|
||
|
@@ -356,6 +387,13 @@ void Dtime::timeout()
|
||
|
kclock->setTime( time );
|
||
|
}
|
||
|
|
||
|
+void Dtime::configureTimeServer()
|
||
|
+{
|
||
|
+ KProcess proc;
|
||
|
+ proc << "/sbin/yast2" << "ntp-client";
|
||
|
+ proc.start( KProcess::DontCare );
|
||
|
+}
|
||
|
+
|
||
|
QString Dtime::quickHelp() const
|
||
|
{
|
||
|
return i18n("<h1>Date & Time</h1> This control module can be used to set the system date and"
|