瀏覽代碼

Displaying thanks and transitioning help toolbar message after Store installation over classic installation

Source commit: a93872eb3d38bbb6ad20ec1445ba25ae468fc9a3
Martin Prikryl 3 年之前
父節點
當前提交
ab8a4f3afd

+ 78 - 1
source/forms/CustomScpExplorer.cpp

@@ -286,6 +286,7 @@ __fastcall TCustomScpExplorerForm::TCustomScpExplorerForm(TComponent* Owner):
   AddFixedSessionImages();
   SessionsPageControl->Images = FSessionColors;
   UpdateQueueLabel();
+  CheckStoreTransition();
 
   CreateHiddenWindow();
   StartUpdates();
@@ -980,6 +981,70 @@ void __fastcall TCustomScpExplorerForm::UpdateQueueLabel()
   QueueLabel->Caption = Caption;
 }
 //---------------------------------------------------------------------------
+void TCustomScpExplorerForm::CheckStoreTransition()
+{
+  if (WinConfiguration->StoreTransition == stInit)
+  {
+    if (IsUWP())
+    {
+      WinConfiguration->StoreTransition = stStoreFresh;
+      AppLog(L"Fresh UWP/store installation");
+    }
+    else
+    {
+      WinConfiguration->StoreTransition = stStandard;
+      AppLog(L"Fresh standard installation");
+    }
+  }
+  else if ((WinConfiguration->StoreTransition == stStandard) && IsUWP())
+  {
+    WinConfiguration->StoreTransition = stStoreMigrated;
+    AppLog(L"Standard installation migrated to store installation");
+  }
+
+  if (WinConfiguration->StoreTransition == stStoreMigrated)
+  {
+    TTBXToolbar * Toolbar = new TTBXToolbar(MessageDock);
+    Toolbar->Parent = MessageDock;
+    Toolbar->FullSize = true;
+    Toolbar->Color = Application->HintColor;
+
+    TTBXLabelItem * LabelItem;
+    LabelItem = new TTBXLabelItem(Toolbar);
+    LabelItem->Margin = ScaleByTextHeight(MessageDock, 2); // Is this automatically rescaled?
+    LabelItem->Caption = LoadStr(STORE_MIGRATION_THANKS);
+    Toolbar->Items->Add(LabelItem);
+
+    TTBXCustomItem * LinkItem = new TTBXItem(Toolbar);
+    LinkItem->FontSettings->Color = LinkColor;
+    LinkItem->Caption = LoadStr(STORE_MIGRATION_LEARN);
+    LinkItem->OnClick = StoreTransitionLinkClick;
+    Toolbar->Items->Add(LinkItem);
+
+    AddMenuSeparator(Toolbar->Items);
+
+    TTBCustomItem * CloseItem = new TTBXItem(Toolbar);
+    CloseItem->Caption = LoadStr(MESSAGE_DISMISS);
+    CloseItem->OnClick = StoreTransitionCloseClick;
+    Toolbar->Items->Add(CloseItem);
+    GiveTBItemPriority(CloseItem);
+  }
+}
+//---------------------------------------------------------------------------
+void __fastcall TCustomScpExplorerForm::StoreTransitionLinkClick(TObject *)
+{
+  ShowHelp(HELP_STORE_TRANSITION);
+}
+//---------------------------------------------------------------------------
+void __fastcall TCustomScpExplorerForm::StoreTransitionCloseClick(TObject * Sender)
+{
+  TTBCustomItem * Item = DebugNotNull(dynamic_cast<TTBCustomItem *>(Sender));
+  TTBXToolbar * Toolbar = DebugNotNull(dynamic_cast<TTBXToolbar *>(DebugNotNull(DebugNotNull(Item->Parent)->ParentComponent)));
+  delete Toolbar;
+  WinConfiguration->StoreTransition = stStoreAcknowledged;
+  UpdateControls();
+}
+//---------------------------------------------------------------------------
 void __fastcall TCustomScpExplorerForm::UpdateTransferList()
 {
   TTBXStringList * TransferList = dynamic_cast<TTBXStringList*>(
@@ -5504,6 +5569,10 @@ void __fastcall TCustomScpExplorerForm::FixControlsPlacement()
   QueueFileListSplitter->Visible = QueueFileList->Visible;
   RemotePanelSplitter->Visible = RemoteDrivePanel->Visible;
 
+  TControl * TopControlsOrder[] =
+    { TopDock, MessageDock, SessionsPageControl };
+  SetVerticalControlsOrder(TopControlsOrder, LENOF(TopControlsOrder));
+
   TControl * QueueControlsOrder[] =
     { QueueDock, QueueView3, QueueFileListSplitter, QueueFileList };
   SetVerticalControlsOrder(QueueControlsOrder, LENOF(QueueControlsOrder));
@@ -8319,7 +8388,7 @@ void __fastcall TCustomScpExplorerForm::QueueView3ContextPopup(
 //---------------------------------------------------------------------------
 /*virtual*/ int __fastcall TCustomScpExplorerForm::GetStaticComponentsHeight()
 {
-  return TopDock->Height + QueueSplitter->Height;
+  return TopDock->Height + (MessageDock->Visible ? MessageDock->Height : 0) + QueueSplitter->Height;
 }
 //---------------------------------------------------------------------------
 int __fastcall TCustomScpExplorerForm::GetStaticQueuePanelComponentsHeight()
@@ -9054,6 +9123,8 @@ void __fastcall TCustomScpExplorerForm::UpdateControls()
     }
 
     reinterpret_cast<TTBCustomItem *>(GetComponent(fcRemotePathComboBox))->Enabled = HasTerminal || IsLocalBrowserMode();
+
+    MessageDock->Visible = (MessageDock->ToolbarCount > 0);
   }
 }
 //---------------------------------------------------------------------------
@@ -11621,3 +11692,9 @@ void __fastcall TCustomScpExplorerForm::DirectorySizeCalculated(TOperationSide S
     ADirView->SetItemCalculatedSize(Item, Size);
   }
 }
+//---------------------------------------------------------------------------
+void __fastcall TCustomScpExplorerForm::MessageDockRequestDock(TObject *, TTBCustomDockableWindow *, bool & Accept)
+{
+  Accept = false;
+}
+//---------------------------------------------------------------------------

+ 20 - 9
source/forms/CustomScpExplorer.dfm

@@ -36,9 +36,9 @@ object CustomScpExplorerForm: TCustomScpExplorerForm
   end
   object RemotePanel: TPanel
     Left = 0
-    Top = 30
+    Top = 39
     Width = 620
-    Height = 259
+    Height = 250
     Align = alClient
     BevelOuter = bvNone
     Color = clWindow
@@ -47,7 +47,7 @@ object CustomScpExplorerForm: TCustomScpExplorerForm
     object RemotePanelSplitter: TSplitter
       Left = 169
       Top = 0
-      Height = 240
+      Height = 231
       Cursor = crSizeWE
       AutoSnap = False
       MinSize = 70
@@ -55,7 +55,7 @@ object CustomScpExplorerForm: TCustomScpExplorerForm
     end
     object RemoteStatusBar: TTBXStatusBar
       Left = 0
-      Top = 240
+      Top = 231
       Width = 620
       Height = 19
       Panels = <>
@@ -69,7 +69,7 @@ object CustomScpExplorerForm: TCustomScpExplorerForm
       Left = 172
       Top = 0
       Width = 448
-      Height = 240
+      Height = 231
       Align = alClient
       BevelOuter = bvNone
       TabOrder = 1
@@ -77,7 +77,7 @@ object CustomScpExplorerForm: TCustomScpExplorerForm
         Left = 0
         Top = 0
         Width = 448
-        Height = 240
+        Height = 231
         Align = alClient
         DoubleBuffered = True
         FullDrag = True
@@ -139,7 +139,7 @@ object CustomScpExplorerForm: TCustomScpExplorerForm
       Left = 0
       Top = 0
       Width = 169
-      Height = 240
+      Height = 231
       Align = alLeft
       BevelOuter = bvNone
       TabOrder = 2
@@ -147,7 +147,7 @@ object CustomScpExplorerForm: TCustomScpExplorerForm
         Left = 0
         Top = 0
         Width = 169
-        Height = 240
+        Height = 231
         DirView = RemoteDirView
         OnDDDragFileName = RemoteFileControlDDDragFileName
         OnDDEnd = RemoteFileControlDDEnd
@@ -376,7 +376,7 @@ object CustomScpExplorerForm: TCustomScpExplorerForm
   end
   object SessionsPageControl: TThemePageControl
     Left = 0
-    Top = 9
+    Top = 18
     Width = 620
     Height = 21
     ActivePage = TabSheet1
@@ -399,6 +399,17 @@ object CustomScpExplorerForm: TCustomScpExplorerForm
       Caption = 'TabSheet1'
     end
   end
+  object MessageDock: TTBXDock
+    Tag = 1
+    Left = 0
+    Top = 9
+    Width = 620
+    Height = 9
+    AllowDrag = False
+    FixAlign = True
+    Visible = False
+    OnRequestDock = MessageDockRequestDock
+  end
   object ApplicationEvents: TApplicationEvents
     OnDeactivate = ApplicationEventsDeactivate
     OnMinimize = ApplicationMinimize

+ 5 - 0
source/forms/CustomScpExplorer.h

@@ -109,6 +109,7 @@ __published:
   TTBXItem *TBXItem254;
   TSplitter *QueueFileListSplitter;
   TListView *QueueFileList;
+  TTBXDock *MessageDock;
   void __fastcall ApplicationMinimize(TObject * Sender);
   void __fastcall ApplicationRestore(TObject * Sender);
   void __fastcall RemoteDirViewContextPopup(TObject *Sender,
@@ -219,6 +220,7 @@ __published:
   void __fastcall QueueFileListResize(TObject *Sender);
   void __fastcall SessionsPageControlResize(TObject *Sender);
   void __fastcall SessionsPageControlTabHint(TPageControl *Sender, int Index, UnicodeString &Hint);
+  void __fastcall MessageDockRequestDock(TObject *Sender, TTBCustomDockableWindow *Bar, bool &Accept);
 
 private:
   TManagedTerminal * FManagedSession;
@@ -364,6 +366,8 @@ private:
   void __fastcall UpdateQueueFileList();
   void __fastcall QueueFileListColumnAutoSize();
   void __fastcall AdjustQueueLayout();
+  void __fastcall StoreTransitionCloseClick(TObject * Sender);
+  void __fastcall StoreTransitionLinkClick(TObject * Sender);
 
 protected:
   TOperationSide FCurrentSide;
@@ -661,6 +665,7 @@ protected:
   bool __fastcall CanCommandLineFromAnotherInstance();
   void __fastcall SetQueueProgress();
   void __fastcall UpdateQueueLabel();
+  void CheckStoreTransition();
   void __fastcall SetTaskbarListProgressState(TBPFLAG Flags);
   void __fastcall SetTaskbarListProgressValue(int Progress);
   void __fastcall SetTaskbarListProgressValue(TFileOperationProgressType * ProgressData);

+ 4 - 17
source/forms/NonVisual.cpp

@@ -1145,19 +1145,6 @@ void __fastcall TNonVisualDataModule::CustomCommandsCustomize(TObject *)
   PreferencesDialog(pmCustomCommands);
 }
 //---------------------------------------------------------------------------
-static void GiveItemPriority(TTBCustomItem * Item)
-{
-  DebugAssert(Item->GetTopComponent() != NULL);
-  TTBCustomToolbar * ToolbarComponent = dynamic_cast<TTBCustomToolbar *>(Item->GetTopComponent());
-  if ((ToolbarComponent != NULL) &&
-      // Only for top-level buttons on custom command toolbar, not for submenus of the custom commands menu in the main menu
-      (Item->Parent == ToolbarComponent->Items))
-  {
-    TTBItemViewer * Viewer = ToolbarComponent->View->Find(Item);
-    ToolbarComponent->View->GivePriority(Viewer);
-  }
-}
-//---------------------------------------------------------------------------
 void __fastcall TNonVisualDataModule::CreateCustomCommandsMenu(
   TTBCustomItem * Menu, bool OnFocused, bool Toolbar, TCustomCommandListType ListType, TStrings * HiddenCommands)
 {
@@ -1170,7 +1157,7 @@ void __fastcall TNonVisualDataModule::CreateCustomCommandsMenu(
     Item = new TTBXItem(Menu);
     Item->Action = OnFocused ? CustomCommandsEnterFocusedAction : CustomCommandsEnterAction;
     Menu->Add(Item);
-    GiveItemPriority(Item);
+    GiveTBItemPriority(Item);
 
     Item = new TTBXItem(Menu);
     Item->Action = OnFocused ? CustomCommandsLastFocusedAction : CustomCommandsLastAction;
@@ -1179,7 +1166,7 @@ void __fastcall TNonVisualDataModule::CreateCustomCommandsMenu(
       Item->Caption = EscapeHotkey(StripHotkey(LoadStr(CUSTOM_COMMAND_LAST_SHORT)));
     }
     Menu->Add(Item);
-    GiveItemPriority(Item);
+    GiveTBItemPriority(Item);
   }
 
   TTBXSeparatorItem * Separator = AddMenuSeparator(Menu);
@@ -1210,7 +1197,7 @@ void __fastcall TNonVisualDataModule::CreateCustomCommandsMenu(
     Item = new TTBXItem(Menu);
     Item->Action = CustomCommandsBandAction;
     Menu->Add(Item);
-    GiveItemPriority(Item);
+    GiveTBItemPriority(Item);
   }
 
   Item = new TTBXItem(Menu);
@@ -1221,7 +1208,7 @@ void __fastcall TNonVisualDataModule::CreateCustomCommandsMenu(
     Item->OnClick = CustomCommandsCustomize;
   }
   Menu->Add(Item);
-  GiveItemPriority(Item);
+  GiveTBItemPriority(Item);
 }
 //---------------------------------------------------------------------------
 void __fastcall TNonVisualDataModule::CreateCustomCommandsMenu(

+ 19 - 15
source/forms/ScpCommander.dfm

@@ -11,9 +11,9 @@ inherited ScpCommanderForm: TScpCommanderForm
   TextHeight = 13
   object Splitter: TSplitter [0]
     Left = 435
-    Top = 177
+    Top = 186
     Width = 5
-    Height = 298
+    Height = 289
     Cursor = crSizeWE
     Hint = 
       '|Drag to change ratio of file panels. Double click to make width' +
@@ -1069,9 +1069,9 @@ inherited ScpCommanderForm: TScpCommanderForm
   end
   inherited RemotePanel: TPanel
     Left = 440
-    Top = 177
+    Top = 186
     Width = 458
-    Height = 298
+    Height = 289
     Constraints.MinHeight = 220
     Constraints.MinWidth = 185
     ParentColor = True
@@ -1104,7 +1104,7 @@ inherited ScpCommanderForm: TScpCommanderForm
       Align = alTop
     end
     inherited RemoteStatusBar: TTBXStatusBar
-      Top = 279
+      Top = 270
       Width = 458
       Panels = <
         item
@@ -1140,11 +1140,11 @@ inherited ScpCommanderForm: TScpCommanderForm
       Left = 0
       Top = 146
       Width = 458
-      Height = 124
+      Height = 115
       Constraints.MinHeight = 70
       inherited RemoteDirView: TUnixDirView
         Width = 280
-        Height = 124
+        Height = 115
         NortonLike = nlOn
         OnUpdateStatusBar = RemoteDirViewUpdateStatusBar
         PathLabel = RemotePathLabel
@@ -1160,7 +1160,7 @@ inherited ScpCommanderForm: TScpCommanderForm
         Left = 280
         Top = 0
         Width = 178
-        Height = 124
+        Height = 115
         Align = alRight
         Constraints.MinHeight = 70
         DoubleBuffered = True
@@ -1431,7 +1431,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     end
     object RemoteBottomDock: TTBXDock
       Left = 0
-      Top = 270
+      Top = 261
       Width = 458
       Height = 9
       FixAlign = True
@@ -1465,14 +1465,14 @@ inherited ScpCommanderForm: TScpCommanderForm
     end
   end
   inherited SessionsPageControl: TThemePageControl
-    Top = 156
+    Top = 165
     Width = 898
   end
   object LocalPanel: TPanel [6]
     Left = 0
-    Top = 177
+    Top = 186
     Width = 435
-    Height = 298
+    Height = 289
     Align = alLeft
     BevelOuter = bvNone
     Constraints.MinHeight = 220
@@ -1512,7 +1512,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     end
     object LocalStatusBar: TTBXStatusBar
       Left = 0
-      Top = 279
+      Top = 270
       Width = 435
       Height = 19
       Panels = <
@@ -1553,7 +1553,7 @@ inherited ScpCommanderForm: TScpCommanderForm
       Left = 0
       Top = 146
       Width = 435
-      Height = 124
+      Height = 115
       Align = alClient
       Constraints.MinHeight = 70
       DoubleBuffered = True
@@ -1804,7 +1804,7 @@ inherited ScpCommanderForm: TScpCommanderForm
     end
     object LocalBottomDock: TTBXDock
       Left = 0
-      Top = 270
+      Top = 261
       Width = 435
       Height = 9
       FixAlign = True
@@ -1945,6 +1945,10 @@ inherited ScpCommanderForm: TScpCommanderForm
     BevelKind = bkFlat
     TabOrder = 7
   end
+  inherited MessageDock: TTBXDock
+    Top = 156
+    Width = 898
+  end
   inherited ApplicationEvents: TApplicationEvents
     Left = 72
     Top = 352

+ 19 - 15
source/forms/ScpExplorer.dfm

@@ -1040,19 +1040,19 @@ inherited ScpExplorerForm: TScpExplorerForm
   end
   inherited RemotePanel: TPanel
     Left = 9
-    Top = 230
+    Top = 239
     Width = 614
-    Height = 102
-    Constraints.MinHeight = 100
+    Height = 93
+    Constraints.MinHeight = 93
     Constraints.MinWidth = 210
     inherited RemotePanelSplitter: TSplitter
-      Height = 71
+      Height = 62
       Hint = 
         'Drag to resize directory tree. Double click to hide directory tr' +
         'ee.'
     end
     inherited RemoteStatusBar: TTBXStatusBar
-      Top = 80
+      Top = 71
       Width = 614
       Height = 22
       Images = GlyphsModule.SessionImages
@@ -1105,24 +1105,24 @@ inherited ScpExplorerForm: TScpExplorerForm
     end
     inherited RemoteDirPanel: TPanel
       Width = 442
-      Height = 71
+      Height = 62
       inherited RemoteDirView: TUnixDirView
         Width = 442
-        Height = 71
+        Height = 62
         OnUpdateStatusBar = RemoteDirViewUpdateStatusBar
         OnPathChange = RemoteDirViewPathChange
       end
     end
     inherited RemoteDrivePanel: TPanel
-      Height = 71
+      Height = 62
       Constraints.MinWidth = 40
       inherited RemoteDriveView: TUnixDriveView
-        Height = 71
+        Height = 62
       end
     end
     object BottomDock: TTBXDock
       Left = 0
-      Top = 71
+      Top = 62
       Width = 614
       Height = 9
       Color = clBtnFace
@@ -1150,21 +1150,25 @@ inherited ScpExplorerForm: TScpExplorerForm
     end
   end
   inherited SessionsPageControl: TThemePageControl
-    Top = 209
+    Top = 218
     Width = 632
   end
   object LeftDock: TTBXDock [5]
     Left = 0
-    Top = 230
+    Top = 239
     Width = 9
-    Height = 102
+    Height = 93
     Position = dpLeft
   end
   object RightDock: TTBXDock [6]
     Left = 623
-    Top = 230
+    Top = 239
     Width = 9
-    Height = 102
+    Height = 93
     Position = dpRight
   end
+  inherited MessageDock: TTBXDock
+    Top = 209
+    Width = 632
+  end
 end

+ 1 - 0
source/resource/HelpWin.h

@@ -70,5 +70,6 @@
 #define HELP_CLOSE_SESSION_WORKSPACE "workspace"
 #define HELP_ADD_EXTENSION           "ui_pref_commands#extensions"
 #define HELP_TOO_MANY_SESSIONS       "ui_sessiontabs"
+#define HELP_STORE_TRANSITION        "microsoft_store#transitioning"
 
 #endif // TextsWin

+ 3 - 0
source/resource/TextsWin.h

@@ -306,6 +306,9 @@
 #define USAGE_STDOUT            1592
 #define USAGE_STDIN             1593
 #define QUEUE_DELETING          1594
+#define STORE_MIGRATION_THANKS  1595
+#define STORE_MIGRATION_LEARN   1596
+#define MESSAGE_DISMISS         1597
 
 #define WIN_FORMS_STRINGS       1600
 #define COPY_FILE               1605

+ 3 - 0
source/resource/TextsWin1.rc

@@ -311,6 +311,9 @@ BEGIN
         USAGE_STDOUT, "Allows streaming files to stdout (and redirects status output to stderr)"
         USAGE_STDIN, "Allows streaming files from stdin"
         QUEUE_DELETING, "Deleting..."
+        STORE_MIGRATION_THANKS, "Thanks for buying WinSCP."
+        STORE_MIGRATION_LEARN, "Learn about transitioning from classic installation."
+        MESSAGE_DISMISS, "Dismiss"
 
         WIN_FORMS_STRINGS, "WIN_FORMS_STRINGS"
         COPY_FILE, "%s file '%s' to %s:"

+ 13 - 0
source/windows/VCLCommon.cpp

@@ -2908,3 +2908,16 @@ void AutoSizeButton(TButton * Button)
     Button->Width = MinWidth;
   }
 }
+//---------------------------------------------------------------------------
+void GiveTBItemPriority(TTBCustomItem * Item)
+{
+  DebugAssert(Item->GetTopComponent() != NULL);
+  TTBCustomToolbar * ToolbarComponent = dynamic_cast<TTBCustomToolbar *>(Item->GetTopComponent());
+  if ((ToolbarComponent != NULL) &&
+      // Only for top-level buttons on custom command toolbar, not for submenus of the custom commands menu in the main menu
+      (Item->Parent == ToolbarComponent->Items))
+  {
+    TTBItemViewer * Viewer = ToolbarComponent->View->Find(Item);
+    ToolbarComponent->View->GivePriority(Viewer);
+  }
+}

+ 2 - 0
source/windows/VCLCommon.h

@@ -93,5 +93,7 @@ bool IsButtonBeingClicked(TButtonControl * Button);
 bool IsCancelButtonBeingClicked(TControl * Control);
 TCanvas * CreateControlCanvas(TControl * Control);
 void AutoSizeButton(TButton * Button);
+namespace Tb2item { class TTBCustomItem; }
+void GiveTBItemPriority(Tb2item::TTBCustomItem * Item);
 //---------------------------------------------------------------------------
 #endif  // VCLCommonH

+ 7 - 0
source/windows/WinConfiguration.cpp

@@ -624,6 +624,7 @@ void __fastcall TWinConfiguration::Default()
   TimeoutShellIconRetrieval = false;
   UseIconUpdateThread = true;
   AllowWindowPrint = false;
+  StoreTransition = stInit;
 
   FEditor.Font.FontName = DefaultFixedWidthFontName;
   FEditor.Font.FontSize = DefaultFixedWidthFontSize;
@@ -1076,6 +1077,7 @@ THierarchicalStorage * TWinConfiguration::CreateScpStorage(bool & SessionList)
     KEY(Bool,     TimeoutShellIconRetrieval); \
     KEY(Bool,     UseIconUpdateThread); \
     KEY(Bool,     AllowWindowPrint); \
+    KEY(Integer,  StoreTransition); \
   ); \
   BLOCK(L"Interface\\Editor", CANCREATE, \
     KEYEX(String,   Editor.Font.FontName, L"FontName2"); \
@@ -2756,6 +2758,11 @@ void __fastcall TWinConfiguration::SetAllowWindowPrint(bool value)
   SET_CONFIG_PROPERTY(AllowWindowPrint);
 }
 //---------------------------------------------------------------------------
+void TWinConfiguration::SetStoreTransition(TStoreTransition value)
+{
+  SET_CONFIG_PROPERTY(StoreTransition);
+}
+//---------------------------------------------------------------------------
 TStringList * __fastcall TWinConfiguration::LoadJumpList(
   THierarchicalStorage * Storage, UnicodeString Name)
 {

+ 4 - 0
source/windows/WinConfiguration.h

@@ -351,6 +351,7 @@ enum TSessionTabNameFormat { stnfNone, stnfShortPath, stnfShortPathTrunc };
 // constants must be compatible with legacy CopyOnDoubleClick
 enum TDoubleClickAction { dcaOpen = 0, dcaCopy = 1, dcaEdit = 2 };
 enum TResolvedDoubleClickAction { rdcaNone, rdcaChangeDir, rdcaOpen, rdcaCopy, rdcaEdit };
+enum TStoreTransition { stInit, stStandard, stStoreFresh, stStoreMigrated, stStoreAcknowledged };
 //---------------------------------------------------------------------------
 typedef void __fastcall (__closure *TMasterPasswordPromptEvent)();
 //---------------------------------------------------------------------------
@@ -470,6 +471,7 @@ private:
   bool FTimeoutShellIconRetrieval;
   bool FUseIconUpdateThread;
   bool FAllowWindowPrint;
+  TStoreTransition FStoreTransition;
   int FDontDecryptPasswords;
   int FMasterPasswordSession;
   bool FMasterPasswordSessionAsked;
@@ -586,6 +588,7 @@ private:
   void __fastcall SetTimeoutShellIconRetrieval(bool value);
   void __fastcall SetUseIconUpdateThread(bool value);
   void __fastcall SetAllowWindowPrint(bool value);
+  void SetStoreTransition(TStoreTransition value);
   int __fastcall GetLocaleCompletenessTreshold();
 
   bool __fastcall GetDDExtInstalled();
@@ -784,6 +787,7 @@ public:
   __property bool TimeoutShellIconRetrieval = { read = FTimeoutShellIconRetrieval, write = SetTimeoutShellIconRetrieval };
   __property bool UseIconUpdateThread = { read = FUseIconUpdateThread, write = SetUseIconUpdateThread };
   __property bool AllowWindowPrint = { read = FAllowWindowPrint, write = SetAllowWindowPrint };
+  __property TStoreTransition StoreTransition = { read = FStoreTransition, write = SetStoreTransition };
   __property LCID DefaultLocale = { read = FDefaultLocale };
   __property int LocaleCompletenessTreshold = { read = GetLocaleCompletenessTreshold };
 };