home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / share / YaST2 / clients / timezone.ycp < prev    next >
Text File  |  2006-11-29  |  4KB  |  192 lines

  1. /*
  2.  *
  3.  * Module:             timezone.ycp
  4.  *
  5.  * Author:             Klaus Kaempf (kkaempf@suse.de)
  6.  *
  7.  * Submodules:
  8.  *
  9.  *
  10.  * Purpose:    configure timezone in running system
  11.  *
  12.  * Modify:
  13.  *
  14.  *
  15.  * $Id: timezone.ycp 25808 2005-10-05 15:13:41Z jsuchome $
  16.  */
  17.  
  18. {
  19. textdomain "country";
  20.  
  21. import "CommandLine";
  22. import "Timezone";
  23. import "Wizard";
  24.  
  25. include "timezone/dialogs.ycp";
  26.  
  27.  
  28. /**
  29.  * read timezone settings (store initial values)
  30.  */
  31. define boolean TimezoneRead () {
  32.  
  33.     Timezone::PushVal ();
  34.     return true;
  35. }
  36.  
  37. /**
  38.  * write timezone settings
  39.  */
  40. define boolean TimezoneWrite () {
  41.  
  42.     if (Timezone::Modified ())
  43.     {
  44.     y2milestone ("User selected new timezone/clock setting: <%1> <%2>",
  45.         Timezone::timezone, Timezone::hwclock);
  46.  
  47.     Timezone::Save ();
  48.     WFM::CallFunction( "inst_suseconfig", [ false, false ] );
  49.     }
  50.     else
  51.     {
  52.     y2milestone( "Timezone not changed --> doing nothing" );
  53.     }
  54.     return true;
  55. }
  56.  
  57.  
  58. /**
  59.  * the timezone configuration sequence
  60.  */
  61. define any TimezoneSequence () {
  62.  
  63.     // create the wizard dialog
  64.     Wizard::OpenAcceptDialog();
  65.  
  66.     any result = TimezoneDialog ($[]);
  67.  
  68.     if ( result == `next )
  69.     {
  70.     TimezoneWrite ();
  71.     }
  72.     else    // `cancel or `back
  73.     {
  74.     y2milestone( "User cancelled --> no change" );
  75.     }
  76.     Wizard::CloseDialog ();
  77.     return result;
  78. }
  79.  
  80. /**
  81.  * Handler for timezone summary
  82.  */
  83. define boolean TimezoneSummaryHandler (map options) {
  84.  
  85.     // summary label
  86.     CommandLine::Print(sformat (_("Current Time Zone:\t%1"),Timezone::timezone));
  87.  
  88.     if (!Timezone::utc_only())
  89.     {
  90.     // summary label
  91.     CommandLine::Print (sformat (_("Hardware Clock Set To:\t%1"),
  92.         // summary text (Clock setting)
  93.         Timezone::hwclock == "-u" ? _("UTC") :
  94.         // summary text (Clock setting)
  95.         _("Local time"))
  96.     );
  97.  
  98.     }
  99.     // summary label
  100.     CommandLine::Print (sformat (_("Current Time and Date:\t%1"),
  101.     Timezone::GetDateTime(true, true)));
  102.     return false;
  103. }
  104.  
  105. /**
  106.  * Handler for listing timezone layouts
  107.  */
  108. define boolean TimezoneListHandler (map options) {
  109.  
  110.     foreach (map<string,any> zone, Timezone::get_zonemap (), {
  111.     CommandLine::Print ("");
  112.     // summary label
  113.     CommandLine::Print (sformat ("Region: %1", zone["name"]:""));
  114.     foreach (string code, string name, zone["entries"]:$[], {
  115.         CommandLine::Print (sformat ("%1 (%2)", code, name));
  116.     });
  117.     });
  118.     return false;
  119. }
  120.  
  121.  
  122. /**
  123.  * Handler for changing timezone settings
  124.  */
  125. define boolean TimezoneSetHandler (map options) {
  126.  
  127.     string timezone    = options["timezone"]:"";
  128.     string hwclock    = options["hwclock"]:"";
  129.  
  130.     if (timezone != "")
  131.     {
  132.     Timezone::Set (timezone, true);
  133.     }
  134.     if (hwclock != "" && !Timezone::utc_only ())
  135.     {
  136.     Timezone::hwclock    = hwclock == "utc" ? "-u" : "--localtime";
  137.     }
  138.     return (Timezone::Modified ());
  139. }
  140.  
  141.  
  142. /* -- the command line description map -------------------------------------- */
  143. map cmdline = $[
  144.     "id"        : "timezone",
  145.     // translators: command line help text for timezone module
  146.     "help"        : _("Time zone configuration"),
  147.     "guihandler"    : TimezoneSequence,
  148.     "initialize"    : TimezoneRead,
  149.     "finish"        : TimezoneWrite,
  150.     "actions"        : $[
  151.     "summary" :$[
  152.         "handler"    : TimezoneSummaryHandler,
  153.         // command line help text for 'summary' action
  154.         "help"    : _("Time zone configuration summary"),
  155.     ],
  156.     "set" :$[
  157.         "handler"    : TimezoneSetHandler,
  158.         // command line help text for 'set' action
  159.         "help"    : _("Set new values for time zone configuration"),
  160.     ],
  161.     "list": $[
  162.         "handler"    : TimezoneListHandler,
  163.         // command line help text for 'list' action
  164.         "help"    : _("List all available time zones")
  165.     ],
  166.     ],
  167.     "options"        : $[
  168.     "timezone"        : $[
  169.         // command line help text for 'set timezone' option
  170.         "help"    : _("New time zone"),
  171.         "type"    : "string"
  172.     ],
  173.     "hwclock"        : $[
  174.         // command line help text for 'set hwclock' option
  175.         "help"    : _("New value for hardware clock"),
  176.         "type"    : "enum",
  177.         "typespec"    : [ "local", "utc" ],
  178.     ],
  179.     ],
  180.     "mappings"        : $[
  181.     "summary"    : [],
  182.     "set"        : [ "timezone", "hwclock" ],
  183.     "list"        : [],
  184.     ]
  185. ];
  186.  
  187. CommandLine::Run (cmdline);
  188. return true;
  189.  
  190.  
  191. }
  192.