[POWERCFG] Implement the power scheme 'Save As' feature
authorEric Kohl <eric.kohl@reactos.org>
Mon, 6 May 2019 21:55:42 +0000 (23:55 +0200)
committerEric Kohl <eric.kohl@reactos.org>
Mon, 6 May 2019 21:55:42 +0000 (23:55 +0200)
CORE-12565

25 files changed:
dll/cpl/powercfg/lang/bg-BG.rc
dll/cpl/powercfg/lang/cs-CZ.rc
dll/cpl/powercfg/lang/de-DE.rc
dll/cpl/powercfg/lang/el-GR.rc
dll/cpl/powercfg/lang/en-US.rc
dll/cpl/powercfg/lang/es-ES.rc
dll/cpl/powercfg/lang/fr-FR.rc
dll/cpl/powercfg/lang/he-IL.rc
dll/cpl/powercfg/lang/id-ID.rc
dll/cpl/powercfg/lang/it-IT.rc
dll/cpl/powercfg/lang/ja-JP.rc
dll/cpl/powercfg/lang/nl-NL.rc
dll/cpl/powercfg/lang/no-NO.rc
dll/cpl/powercfg/lang/pl-PL.rc
dll/cpl/powercfg/lang/ro-RO.rc
dll/cpl/powercfg/lang/ru-RU.rc
dll/cpl/powercfg/lang/sk-SK.rc
dll/cpl/powercfg/lang/sq-AL.rc
dll/cpl/powercfg/lang/th-TH.rc
dll/cpl/powercfg/lang/tr-TR.rc
dll/cpl/powercfg/lang/uk-UA.rc
dll/cpl/powercfg/lang/zh-CN.rc
dll/cpl/powercfg/lang/zh-TW.rc
dll/cpl/powercfg/powershemes.c
dll/cpl/powercfg/resource.h

index 08e2a23..232a3fd 100644 (file)
@@ -101,6 +101,17 @@ BEGIN
     LTEXT "Трябва да освободите дисково пространство, за да може да заспива компютърът ви. ", IDC_TOLESSFREESPACE, 10, 115, 220, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Захранване"
index 693691d..47dfff8 100644 (file)
@@ -101,6 +101,17 @@ BEGIN
     LTEXT "Pro funkci režim spánku musíte uvolnit místo na disku. ", IDC_TOLESSFREESPACE, 15, 135, 224, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Možnosti napájení"
index e39538f..85c789a 100644 (file)
@@ -103,6 +103,18 @@ BEGIN
     LTEXT "Geben Sie Speicherplatz frei, bevor Sie den Computer in den Ruhezustand versetzen.", IDC_TOLESSFREESPACE, 10, 115, 220, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Schema speichern"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Energieschema speichern unter:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Abbrechen", IDCANCEL, 133, 40, 50, 14
+END
+
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Energie"
index 5db1535..a27f5fc 100644 (file)
@@ -103,6 +103,17 @@ BEGIN
     LTEXT "Θα πρέπει να ελευθερώσετε χώρο στο δίσκο σας πριν ο υπολογιστής σας μπορέσει αν τεθεί σε κατάσταση αδρανοποίησης. ", IDC_TOLESSFREESPACE, 15, 135, 224, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Επιλογές Ενέργειας"
index 3de63ad..b37b408 100644 (file)
@@ -101,6 +101,17 @@ BEGIN
     LTEXT "You must free some disk space before your computer can hibernate. ", IDC_TOLESSFREESPACE, 15, 135, 224, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Power Options"
index 1ce2f75..042b4d8 100644 (file)
@@ -103,6 +103,17 @@ BEGIN
     LTEXT "Debe liberar algo de espacio en el disco para que su equipo pueda hibernar. ", IDC_TOLESSFREESPACE, 15, 135, 224, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Opciones de energía"
index cd2b5be..5d86976 100644 (file)
@@ -103,6 +103,17 @@ BEGIN
     LTEXT "Vous devez libérer de l'espace avant que votre ordinateur ne se mette en veille. ", IDC_TOLESSFREESPACE, 10, 115, 220, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Options d'alimentation"
index 6fbce22..595e036 100644 (file)
@@ -103,6 +103,17 @@ BEGIN
     LTEXT "You must free some disk space before your computer can hibernate. ", IDC_TOLESSFREESPACE, 15, 135, 224, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "אפשרויות צריכת חשמל"
index f5f1718..9478d1c 100644 (file)
@@ -103,6 +103,17 @@ BEGIN
     LTEXT "Anda harus membebaskan beberapa ruang disk sebelum komputer anda bisa hibernasi. ", IDC_TOLESSFREESPACE, 10, 115, 220, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Opsi Tenaga"
index be2159e..119f2c8 100644 (file)
@@ -101,6 +101,17 @@ BEGIN
     LTEXT "Deve essere liberato dello spazio su disco prima che il computer possa essere sospeso.", IDC_TOLESSFREESPACE, 10, 129, 220, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Opzioni di risparmio energetico"
index 51fd7a8..2b2d0cd 100644 (file)
@@ -103,6 +103,17 @@ BEGIN
     LTEXT "休止状態をサポートするには、ディスクの空き領域を増やす必要があります。 ", IDC_TOLESSFREESPACE, 15, 135, 224, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "電源オプション"
index 7795ae4..bae8278 100644 (file)
@@ -101,6 +101,17 @@ BEGIN
     LTEXT "U heeft onvoldoende schijfruimte om slaapstand in te schakelen. ", IDC_TOLESSFREESPACE, 10, 115, 220, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Energie opties"
index e2b03d6..891f4e9 100644 (file)
@@ -103,6 +103,17 @@ BEGIN
     LTEXT "Du trenger ledig plass før din datamaskin kan gå i dvalemodus. ", IDC_TOLESSFREESPACE, 15, 135, 224, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Strømvalg"
index 99f7fa8..de7cb29 100644 (file)
@@ -109,6 +109,17 @@ BEGIN
     LTEXT "Musisz zwolnić więcej miejsca na dysku przed przejściem w stan hibernacji. ", IDC_TOLESSFREESPACE, 10, 115, 220, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Opcje zasilania"
index 91d767f..a24f6f0 100644 (file)
@@ -106,6 +106,17 @@ BEGIN
     LTEXT "Este necesar mai mult spațiu liber pe dispozitivul de stocare înainte de a putea activa funcționalitatea de hibernare.", IDC_TOLESSFREESPACE, 15, 135, 224, 30
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Alimentare"
index 2f33e31..4877cf2 100644 (file)
@@ -103,6 +103,17 @@ BEGIN
     LTEXT "Для возможности перехода в спящий режим требуется освободить место на диске.", IDC_TOLESSFREESPACE, 10, 127, 220, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Электропитание"
index 1fad264..f52c6c3 100644 (file)
@@ -109,6 +109,17 @@ BEGIN
     LTEXT "Pred prechodom počítača do režimu dlhodobého spánku, musíte uvoľniť časť miesta na disku.", IDC_TOLESSFREESPACE, 15, 135, 224, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Možnosti napájania"
index 19cd847..2859e71 100644 (file)
@@ -106,6 +106,17 @@ BEGIN
     LTEXT "Ju duhet të lironi një hapësirë ​​në disk para se kompjuteri juaj mund të hibernate. ", IDC_TOLESSFREESPACE, 15, 135, 224, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Opsionet e energjisë"
index 7bed2d3..c5a8979 100644 (file)
@@ -101,6 +101,17 @@ BEGIN
     LTEXT "You must free some disk space before your computer can hibernate. ", IDC_TOLESSFREESPACE, 15, 135, 224, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "ตัวเลือกค่าพลังงาน"
index bd6c818..c1209bd 100644 (file)
@@ -103,6 +103,17 @@ BEGIN
     LTEXT "Bilgisayarınız anıkta bekleyebilmeden önce biraz disk alanı oluşturmalısınız.", IDC_TOLESSFREESPACE, 15, 135, 224, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Güç Seçenekleri"
index 488c42f..91d7eb2 100644 (file)
@@ -109,6 +109,17 @@ BEGIN
     LTEXT "Перед переведенням комп'ютера до сплячого режиму слід звільнити місце на диску. ", IDC_TOLESSFREESPACE, 10, 115, 220, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "Електроживлення"
index 4315528..1257571 100644 (file)
@@ -103,6 +103,17 @@ BEGIN
     LTEXT "在计算机进入休眠之前,您必须释放一些磁盘空间。", IDC_TOLESSFREESPACE, 15, 135, 224, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "电源选项"
index cf8c9e2..34e83fd 100644 (file)
@@ -103,6 +103,17 @@ BEGIN
     LTEXT "在電腦進入休眠之前,您必須釋放一些磁碟空間。", IDC_TOLESSFREESPACE, 15, 135, 224, 20
 END
 
+IDD_SAVEPOWERSCHEME DIALOGEX 0, 0, 190, 62
+STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Save Scheme"
+FONT 8, "MS Shell Dlg"
+BEGIN
+    LTEXT "Save this power scheme as:", -1, 7, 7, 104, 8
+    EDITTEXT IDC_SCHEMENAME, 7, 18, 176, 14, ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP
+    PUSHBUTTON "OK", IDOK, 79, 40, 50, 14
+    DEFPUSHBUTTON "Cancel", IDCANCEL, 133, 40, 50, 14
+END
+
 STRINGTABLE
 BEGIN
     IDS_CPLNAME_1 "電源選項"
index c237a21..56c9ae1 100644 (file)
@@ -26,9 +26,18 @@ typedef struct _POWER_SCHEMES_PAGE_DATA
 {
     LIST_ENTRY PowerSchemesList;
     PPOWER_SCHEME pActivePowerScheme;
+    PPOWER_SCHEME pSelectedPowerScheme;
 } POWER_SCHEMES_PAGE_DATA, *PPOWER_SCHEMES_PAGE_DATA;
 
 
+typedef struct _SAVE_POWER_SCHEME_DATA
+{
+    PPOWER_SCHEMES_PAGE_DATA pPageData;
+    PPOWER_SCHEME pNewScheme;
+    HWND hwndPage;
+} SAVE_POWER_SCHEME_DATA, *PSAVE_POWER_SCHEME_DATA;
+
+
 UINT Sec[]=
 {
     60,
@@ -51,7 +60,7 @@ UINT Sec[]=
 
 
 static
-BOOL
+PPOWER_SCHEME
 AddPowerScheme(
     PPOWER_SCHEMES_PAGE_DATA pPageData,
     UINT uId,
@@ -68,7 +77,7 @@ AddPowerScheme(
                         HEAP_ZERO_MEMORY,
                         sizeof(POWER_SCHEME));
     if (pScheme == NULL)
-        return FALSE;
+        return NULL;
 
     pScheme->uId = uId;
     CopyMemory(&pScheme->PowerPolicy, pp, sizeof(POWER_POLICY));
@@ -108,9 +117,10 @@ done:
             HeapFree(GetProcessHeap(), 0, pScheme->pszDescription);
 
         HeapFree(GetProcessHeap(), 0, pScheme);
+        pScheme = NULL;
     }
 
-    return bResult;
+    return pScheme;
 }
 
 
@@ -187,6 +197,7 @@ DestroySchemesList(
     }
 
     pPageData->pActivePowerScheme = NULL;
+    pPageData->pSelectedPowerScheme = NULL;
 }
 
 
@@ -291,29 +302,34 @@ static
 VOID
 LoadConfig(
     HWND hwndDlg,
-    PPOWER_SCHEMES_PAGE_DATA pPageData)
+    PPOWER_SCHEMES_PAGE_DATA pPageData,
+    PPOWER_SCHEME pScheme)
 {
-    PPOWER_SCHEME pScheme;
     INT i = 0, iCurSel = 0;
     TCHAR szTemp[MAX_PATH];
     TCHAR szConfig[MAX_PATH];
     PPOWER_POLICY pp;
 
-    iCurSel = (INT)SendDlgItemMessage(hwndDlg,
-                                      IDC_ENERGYLIST,
-                                      CB_GETCURSEL,
-                                      0,
-                                      0);
-    if (iCurSel == CB_ERR)
-        return;
+    if (pScheme == NULL)
+    {
+        iCurSel = (INT)SendDlgItemMessage(hwndDlg,
+                                          IDC_ENERGYLIST,
+                                          CB_GETCURSEL,
+                                          0,
+                                          0);
+        if (iCurSel == CB_ERR)
+            return;
+
+        pScheme = (PPOWER_SCHEME)SendDlgItemMessage(hwndDlg,
+                                                    IDC_ENERGYLIST,
+                                                    CB_GETITEMDATA,
+                                                    (WPARAM)iCurSel,
+                                                    0);
+        if (pScheme == (PPOWER_SCHEME)CB_ERR)
+            return;
+    }
 
-    pScheme = (PPOWER_SCHEME)SendDlgItemMessage(hwndDlg,
-                                                IDC_ENERGYLIST,
-                                                CB_GETITEMDATA,
-                                                (WPARAM)iCurSel,
-                                                0);
-    if (pScheme == (PPOWER_SCHEME)CB_ERR)
-        return;
+    pPageData->pSelectedPowerScheme = pScheme;
 
     if (LoadString(hApplet, IDS_CONFIG1, szTemp, MAX_PATH))
     {
@@ -493,23 +509,9 @@ Pos_SaveData(
     PPOWER_SCHEMES_PAGE_DATA pPageData)
 {
     PPOWER_SCHEME pScheme;
-    INT iCurSel, tmp;
+    INT tmp;
 
-    iCurSel = (INT)SendDlgItemMessage(hwndDlg,
-                                      IDC_ENERGYLIST,
-                                      CB_GETCURSEL,
-                                      0,
-                                      0);
-    if (iCurSel == CB_ERR)
-        return;
-
-    pScheme = (PPOWER_SCHEME)SendDlgItemMessage(hwndDlg,
-                                                IDC_ENERGYLIST,
-                                                CB_GETITEMDATA,
-                                                (WPARAM)iCurSel,
-                                                0);
-    if (pScheme == (PPOWER_SCHEME)CB_ERR)
-        return;
+    pScheme = pPageData->pSelectedPowerScheme;
 
     tmp = (INT)SendDlgItemMessage(hwndDlg, IDC_MONITORACLIST,
                    CB_GETCURSEL,
@@ -637,7 +639,7 @@ DelScheme(
         if (iCurSel != CB_ERR)
             SendMessage(hList, CB_SETCURSEL, iCurSel, 0);
 
-        LoadConfig(hwnd, pPageData);
+        LoadConfig(hwnd, pPageData, NULL);
         return TRUE;
     }
 
@@ -645,6 +647,144 @@ DelScheme(
 }
 
 
+static
+BOOL
+SavePowerScheme(
+    HWND hwndDlg,
+    PSAVE_POWER_SCHEME_DATA pSaveSchemeData)
+{
+    PPOWER_SCHEMES_PAGE_DATA pPageData;
+    PPOWER_SCHEME pScheme;
+    TCHAR szSchemeName[512];
+    BOOL bRet = FALSE;
+
+    pPageData = pSaveSchemeData->pPageData;
+
+    GetDlgItemText(hwndDlg, IDC_SCHEMENAME, szSchemeName, ARRAYSIZE(szSchemeName));
+
+    pScheme = AddPowerScheme(pPageData,
+                             -1,
+                             (_tcslen(szSchemeName) + 1) * sizeof(TCHAR),
+                             szSchemeName,
+                             sizeof(TCHAR),
+                             TEXT(""),
+                             &pPageData->pSelectedPowerScheme->PowerPolicy);
+    if (pScheme != NULL)
+    {
+        if (WritePwrScheme(&pScheme->uId,
+                           pScheme->pszName,
+                           pScheme->pszDescription,
+                           &pScheme->PowerPolicy))
+        {
+            pSaveSchemeData->pNewScheme = pScheme;
+            bRet = TRUE;
+        }
+        else
+        {
+            DeletePowerScheme(pScheme);
+        }
+    }
+
+    return bRet;
+}
+
+
+INT_PTR
+CALLBACK
+SaveSchemeDlgProc(
+    HWND hwndDlg,
+    UINT uMsg,
+    WPARAM wParam,
+    LPARAM lParam)
+{
+    PSAVE_POWER_SCHEME_DATA pSaveSchemeData;
+
+    pSaveSchemeData = (PSAVE_POWER_SCHEME_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
+
+    switch (uMsg)
+    {
+        case WM_INITDIALOG:
+            pSaveSchemeData = (PSAVE_POWER_SCHEME_DATA)lParam;
+            SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pSaveSchemeData);
+
+            SetDlgItemText(hwndDlg,
+                           IDC_SCHEMENAME,
+                           pSaveSchemeData->pPageData->pSelectedPowerScheme->pszName);
+            return TRUE;
+
+        case WM_COMMAND:
+            switch(LOWORD(wParam))
+            {
+                case IDOK:
+                    EndDialog(hwndDlg, SavePowerScheme(hwndDlg, pSaveSchemeData));
+                    break;
+
+                case IDCANCEL:
+                    EndDialog(hwndDlg, FALSE);
+                    break;
+            }
+            break;
+    }
+
+    return FALSE;
+}
+
+
+static
+VOID
+SaveScheme(
+    HWND hwndDlg,
+    PPOWER_SCHEMES_PAGE_DATA pPageData)
+{
+    SAVE_POWER_SCHEME_DATA SaveSchemeData;
+    POWER_POLICY BackupPowerPolicy;
+    HWND hwndList;
+    INT index;
+
+    SaveSchemeData.pPageData = pPageData;
+    SaveSchemeData.pNewScheme = NULL;
+    SaveSchemeData.hwndPage = hwndDlg;
+
+    CopyMemory(&BackupPowerPolicy,
+               &pPageData->pSelectedPowerScheme->PowerPolicy,
+               sizeof(POWER_POLICY));
+
+    Pos_SaveData(hwndDlg, pPageData);
+
+    if (DialogBoxParam(hApplet,
+                       MAKEINTRESOURCE(IDD_SAVEPOWERSCHEME),
+                       hwndDlg,
+                       SaveSchemeDlgProc,
+                       (LPARAM)&SaveSchemeData))
+    {
+        if (SaveSchemeData.pNewScheme)
+        {
+            hwndList = GetDlgItem(hwndDlg, IDC_ENERGYLIST);
+
+            index = (INT)SendMessage(hwndList,
+                                     CB_ADDSTRING,
+                                     0,
+                                     (LPARAM)SaveSchemeData.pNewScheme->pszName);
+            if (index != CB_ERR)
+            {
+                SendMessage(hwndList,
+                            CB_SETITEMDATA,
+                            index,
+                            (LPARAM)SaveSchemeData.pNewScheme);
+
+                SendMessage(hwndList, CB_SETCURSEL, (WPARAM)index, 0);
+
+                LoadConfig(hwndDlg, pPageData, SaveSchemeData.pNewScheme);
+            }
+        }
+    }
+
+    CopyMemory(&pPageData->pSelectedPowerScheme->PowerPolicy,
+               &BackupPowerPolicy,
+               sizeof(POWER_POLICY));
+}
+
+
 static BOOL
 CreateEnergyList(
     HWND hwndDlg,
@@ -716,7 +856,7 @@ CreateEnergyList(
                         (LPARAM)pScheme->pszName);
 
             pPageData->pActivePowerScheme = pScheme;
-            LoadConfig(hwndDlg, pPageData);
+            LoadConfig(hwndDlg, pPageData, pScheme);
         }
 
         ListEntry = ListEntry->Flink;
@@ -785,7 +925,7 @@ PowerSchemesDlgProc(
                 case IDC_ENERGYLIST:
                     if (HIWORD(wParam) == CBN_SELCHANGE)
                     {
-                        LoadConfig(hwndDlg, pPageData);
+                        LoadConfig(hwndDlg, pPageData, NULL);
                         PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
                     }
                     break;
@@ -795,6 +935,7 @@ PowerSchemesDlgProc(
                     break;
 
                 case IDC_SAVEAS_BTN:
+                    SaveScheme(hwndDlg, pPageData);
                     break;
 
                 case IDC_MONITORACLIST:
index e6f5d65..7227bd8 100644 (file)
 #define IDC_DELETE_BTN 504
 #define IDC_SAVEAS_BTN 505
 
+#define IDD_SAVEPOWERSCHEME      75
+#define IDC_SCHEMENAME           620
+
 #define IDS_ALPERTLOWENERGY      715
 #define IDS_ALPERTCRITICLEENERGY 716
 #define IDS_CRITCLENERGY         717