diff --git a/SCrawler/Content/Pictures/CutPic_48.png b/SCrawler/Content/Pictures/CutPic_48.png
new file mode 100644
index 0000000..3b3a6c3
Binary files /dev/null and b/SCrawler/Content/Pictures/CutPic_48.png differ
diff --git a/SCrawler/Download/Feed/DownloadFeedForm.Designer.vb b/SCrawler/Download/Feed/DownloadFeedForm.Designer.vb
index b7fb234..938cae7 100644
--- a/SCrawler/Download/Feed/DownloadFeedForm.Designer.vb
+++ b/SCrawler/Download/Feed/DownloadFeedForm.Designer.vb
@@ -33,6 +33,7 @@ Namespace DownloadObjects
Dim MENU_LOAD_SEP_5 As System.Windows.Forms.ToolStripSeparator
Dim MENU_LOAD_SEP_6 As System.Windows.Forms.ToolStripSeparator
Dim MENU_LOAD_SEP_7 As System.Windows.Forms.ToolStripSeparator
+ Dim MENU_LOAD_SEP_0 As System.Windows.Forms.ToolStripSeparator
Me.OPT_DEFAULT = New System.Windows.Forms.ToolStripMenuItem()
Me.OPT_SUBSCRIPTIONS = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolbarTOP = New System.Windows.Forms.ToolStrip()
@@ -40,6 +41,8 @@ Namespace DownloadObjects
Me.BTT_LOAD_SESSION_CURRENT = New System.Windows.Forms.ToolStripMenuItem()
Me.BTT_LOAD_SESSION_LAST = New System.Windows.Forms.ToolStripMenuItem()
Me.BTT_LOAD_SESSION_CHOOSE = New System.Windows.Forms.ToolStripMenuItem()
+ Me.BTT_COPY_TO = New System.Windows.Forms.ToolStripMenuItem()
+ Me.BTT_MOVE_TO = New System.Windows.Forms.ToolStripMenuItem()
Me.BTT_LOAD_FAV = New System.Windows.Forms.ToolStripMenuItem()
Me.BTT_LOAD_SPEC = New System.Windows.Forms.ToolStripMenuItem()
Me.BTT_FEED_ADD_FAV = New System.Windows.Forms.ToolStripMenuItem()
@@ -74,6 +77,7 @@ Namespace DownloadObjects
MENU_LOAD_SEP_5 = New System.Windows.Forms.ToolStripSeparator()
MENU_LOAD_SEP_6 = New System.Windows.Forms.ToolStripSeparator()
MENU_LOAD_SEP_7 = New System.Windows.Forms.ToolStripSeparator()
+ MENU_LOAD_SEP_0 = New System.Windows.Forms.ToolStripSeparator()
Me.ToolbarTOP.SuspendLayout()
Me.SuspendLayout()
'
@@ -144,6 +148,11 @@ Namespace DownloadObjects
MENU_LOAD_SEP_7.Name = "MENU_LOAD_SEP_7"
MENU_LOAD_SEP_7.Size = New System.Drawing.Size(349, 6)
'
+ 'MENU_LOAD_SEP_0
+ '
+ MENU_LOAD_SEP_0.Name = "MENU_LOAD_SEP_0"
+ MENU_LOAD_SEP_0.Size = New System.Drawing.Size(349, 6)
+ '
'ToolbarTOP
'
Me.ToolbarTOP.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden
@@ -157,7 +166,7 @@ Namespace DownloadObjects
'
Me.MENU_LOAD_SESSION.AutoToolTip = False
Me.MENU_LOAD_SESSION.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image
- Me.MENU_LOAD_SESSION.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_LOAD_SESSION_CURRENT, Me.BTT_LOAD_SESSION_LAST, Me.BTT_LOAD_SESSION_CHOOSE, MENU_LOAD_SEP_1, Me.BTT_LOAD_FAV, Me.BTT_LOAD_SPEC, MENU_LOAD_SEP_2, Me.BTT_FEED_ADD_FAV, Me.BTT_FEED_ADD_FAV_REMOVE, Me.BTT_FEED_REMOVE_FAV, MENU_LOAD_SEP_3, Me.BTT_FEED_ADD_SPEC, Me.BTT_FEED_ADD_SPEC_REMOVE, Me.BTT_FEED_REMOVE_SPEC, MENU_LOAD_SEP_4, Me.BTT_FEED_CLEAR_FAV, Me.BTT_FEED_CLEAR_SPEC, Me.BTT_FEED_DELETE_SPEC, Me.BTT_FEED_DELETE_DAILY_LIST, Me.BTT_FEED_DELETE_DAILY_DATE, MENU_LOAD_SEP_5, Me.BTT_MERGE_SESSIONS, Me.BTT_CLEAR_DAILY, MENU_LOAD_SEP_6, Me.BTT_MERGE_FEEDS, MENU_LOAD_SEP_7, Me.BTT_CHECK_ALL, Me.BTT_CHECK_NONE})
+ Me.MENU_LOAD_SESSION.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_LOAD_SESSION_CURRENT, Me.BTT_LOAD_SESSION_LAST, Me.BTT_LOAD_SESSION_CHOOSE, MENU_LOAD_SEP_0, Me.BTT_COPY_TO, Me.BTT_MOVE_TO, MENU_LOAD_SEP_1, Me.BTT_LOAD_FAV, Me.BTT_LOAD_SPEC, MENU_LOAD_SEP_2, Me.BTT_FEED_ADD_FAV, Me.BTT_FEED_ADD_FAV_REMOVE, Me.BTT_FEED_REMOVE_FAV, MENU_LOAD_SEP_3, Me.BTT_FEED_ADD_SPEC, Me.BTT_FEED_ADD_SPEC_REMOVE, Me.BTT_FEED_REMOVE_SPEC, MENU_LOAD_SEP_4, Me.BTT_FEED_CLEAR_FAV, Me.BTT_FEED_CLEAR_SPEC, Me.BTT_FEED_DELETE_SPEC, Me.BTT_FEED_DELETE_DAILY_LIST, Me.BTT_FEED_DELETE_DAILY_DATE, MENU_LOAD_SEP_5, Me.BTT_MERGE_SESSIONS, Me.BTT_CLEAR_DAILY, MENU_LOAD_SEP_6, Me.BTT_MERGE_FEEDS, MENU_LOAD_SEP_7, Me.BTT_CHECK_ALL, Me.BTT_CHECK_NONE})
Me.MENU_LOAD_SESSION.Image = Global.SCrawler.My.Resources.Resources.ArrowDownPic_Blue_24
Me.MENU_LOAD_SESSION.ImageTransparentColor = System.Drawing.Color.Magenta
Me.MENU_LOAD_SESSION.Name = "MENU_LOAD_SESSION"
@@ -185,6 +194,20 @@ Namespace DownloadObjects
Me.BTT_LOAD_SESSION_CHOOSE.Size = New System.Drawing.Size(352, 22)
Me.BTT_LOAD_SESSION_CHOOSE.Text = "Select loading session"
'
+ 'BTT_COPY_TO
+ '
+ Me.BTT_COPY_TO.Image = Global.SCrawler.My.Resources.Resources.PastePic_32
+ Me.BTT_COPY_TO.Name = "BTT_COPY_TO"
+ Me.BTT_COPY_TO.Size = New System.Drawing.Size(352, 22)
+ Me.BTT_COPY_TO.Text = "Copy checked to..."
+ '
+ 'BTT_MOVE_TO
+ '
+ Me.BTT_MOVE_TO.Image = Global.SCrawler.My.Resources.Resources.CutPic_48
+ Me.BTT_MOVE_TO.Name = "BTT_MOVE_TO"
+ Me.BTT_MOVE_TO.Size = New System.Drawing.Size(352, 22)
+ Me.BTT_MOVE_TO.Text = "Move checked to..."
+ '
'BTT_LOAD_FAV
'
Me.BTT_LOAD_FAV.Image = Global.SCrawler.My.Resources.Resources.HeartPic_32
@@ -433,5 +456,7 @@ Namespace DownloadObjects
Private WithEvents BTT_FEED_ADD_SPEC_REMOVE As ToolStripMenuItem
Private WithEvents BTT_CHECK_ALL As ToolStripMenuItem
Private WithEvents BTT_CHECK_NONE As ToolStripMenuItem
+ Private WithEvents BTT_COPY_TO As ToolStripMenuItem
+ Private WithEvents BTT_MOVE_TO As ToolStripMenuItem
End Class
End Namespace
\ No newline at end of file
diff --git a/SCrawler/Download/Feed/DownloadFeedForm.resx b/SCrawler/Download/Feed/DownloadFeedForm.resx
index 6b14342..55a4543 100644
--- a/SCrawler/Download/Feed/DownloadFeedForm.resx
+++ b/SCrawler/Download/Feed/DownloadFeedForm.resx
@@ -156,6 +156,9 @@
False
+
+ False
+
17, 17
diff --git a/SCrawler/Download/Feed/DownloadFeedForm.vb b/SCrawler/Download/Feed/DownloadFeedForm.vb
index 203e503..7bc18b5 100644
--- a/SCrawler/Download/Feed/DownloadFeedForm.vb
+++ b/SCrawler/Download/Feed/DownloadFeedForm.vb
@@ -492,6 +492,40 @@ Namespace DownloadObjects
End Try
End Sub
#End Region
+ Private Sub BTT_COPY_MOVE_TO_Click(sender As Object, e As EventArgs) Handles BTT_COPY_TO.Click, BTT_MOVE_TO.Click
+ Const MsgTitle$ = "Copy/Move checked files"
+ Try
+ Dim isCopy As Boolean = sender Is BTT_COPY_TO
+ Dim dest As SFile = Nothing
+ Dim ff As SFile, df As SFile
+ Dim files As IEnumerable(Of SFile) = Nothing
+
+ With GetCheckedMedia()
+ If .ListExists Then files = .Select(Function(m) m.Data.File)
+ End With
+ If files.ListExists Then
+ Using f As New FeedCopyToForm(files, isCopy)
+ f.ShowDialog()
+ If f.DialogResult = DialogResult.OK Then dest = f.Destination
+ End Using
+ If Not dest.IsEmptyString Then
+ For Each ff In files
+ If Not ff.IsEmptyString Then
+ df = ff
+ df.Path = dest.Path
+ If isCopy Then ff.Copy(df) Else SFile.Move(ff, df)
+ End If
+ Next
+ If Not isCopy Then RefillList0()
+ MsgBoxE({$"The following files were copied to{vbCr}{dest}{vbCr}{vbCr}{files.ListToString(vbCr)}", MsgTitle})
+ End If
+ Else
+ MsgBoxE({"No files selected", MsgTitle}, vbExclamation)
+ End If
+ Catch ex As Exception
+ ErrorsDescriber.Execute(EDP.LogMessageValue, ex, MsgTitle)
+ End Try
+ End Sub
#Region "Load fav, spec"
Private Sub BTT_LOAD_FAV_Click(sender As Object, e As EventArgs) Handles BTT_LOAD_FAV.Click
FeedChangeMode(FeedModes.Special, {FeedSpecial.FavoriteName})
diff --git a/SCrawler/Download/Feed/FeedCopyToForm.Designer.vb b/SCrawler/Download/Feed/FeedCopyToForm.Designer.vb
new file mode 100644
index 0000000..786ed5e
--- /dev/null
+++ b/SCrawler/Download/Feed/FeedCopyToForm.Designer.vb
@@ -0,0 +1,153 @@
+' Copyright (C) Andy https://github.com/AAndyProgram
+' 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 3 of the License, or
+' (at your option) any later version.
+'
+' This program is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY
+Namespace DownloadObjects
+
+ Partial Friend Class FeedCopyToForm : Inherits System.Windows.Forms.Form
+
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+ Private components As System.ComponentModel.IContainer
+
+ Private Sub InitializeComponent()
+ Dim CONTAINER_MAIN As System.Windows.Forms.ToolStripContainer
+ Dim ActionButton1 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
+ Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(FeedCopyToForm))
+ Dim ActionButton2 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
+ Dim ActionButton3 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
+ Dim ActionButton4 As PersonalUtilities.Forms.Controls.Base.ActionButton = New PersonalUtilities.Forms.Controls.Base.ActionButton()
+ Dim TP_MAIN As System.Windows.Forms.TableLayoutPanel
+ Dim FRM_FILES As System.Windows.Forms.GroupBox
+ Me.CMB_DEST = New PersonalUtilities.Forms.Controls.ComboBoxExtended()
+ Me.TXT_FILES = New System.Windows.Forms.RichTextBox()
+ CONTAINER_MAIN = New System.Windows.Forms.ToolStripContainer()
+ TP_MAIN = New System.Windows.Forms.TableLayoutPanel()
+ FRM_FILES = New System.Windows.Forms.GroupBox()
+ CONTAINER_MAIN.ContentPanel.SuspendLayout()
+ CONTAINER_MAIN.SuspendLayout()
+ CType(Me.CMB_DEST, System.ComponentModel.ISupportInitialize).BeginInit()
+ TP_MAIN.SuspendLayout()
+ FRM_FILES.SuspendLayout()
+ Me.SuspendLayout()
+ '
+ 'CONTAINER_MAIN
+ '
+ '
+ 'CONTAINER_MAIN.ContentPanel
+ '
+ CONTAINER_MAIN.ContentPanel.Controls.Add(TP_MAIN)
+ CONTAINER_MAIN.ContentPanel.Size = New System.Drawing.Size(534, 116)
+ CONTAINER_MAIN.Dock = System.Windows.Forms.DockStyle.Fill
+ CONTAINER_MAIN.LeftToolStripPanelVisible = False
+ CONTAINER_MAIN.Location = New System.Drawing.Point(0, 0)
+ CONTAINER_MAIN.Name = "CONTAINER_MAIN"
+ CONTAINER_MAIN.RightToolStripPanelVisible = False
+ CONTAINER_MAIN.Size = New System.Drawing.Size(534, 141)
+ CONTAINER_MAIN.TabIndex = 0
+ CONTAINER_MAIN.TopToolStripPanelVisible = False
+ '
+ 'CMB_DEST
+ '
+ ActionButton1.BackgroundImage = CType(resources.GetObject("ActionButton1.BackgroundImage"), System.Drawing.Image)
+ ActionButton1.Name = "Open"
+ ActionButton1.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Open
+ ActionButton1.ToolTipText = "Choose a new location (Ctrl+O)"
+ ActionButton2.BackgroundImage = CType(resources.GetObject("ActionButton2.BackgroundImage"), System.Drawing.Image)
+ ActionButton2.Name = "Add"
+ ActionButton2.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Add
+ ActionButton2.ToolTipText = "Choose a new location and add it to the list (Alt+O)"
+ ActionButton3.BackgroundImage = CType(resources.GetObject("ActionButton3.BackgroundImage"), System.Drawing.Image)
+ ActionButton3.Name = "Clear"
+ ActionButton3.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.Clear
+ ActionButton4.BackgroundImage = CType(resources.GetObject("ActionButton4.BackgroundImage"), System.Drawing.Image)
+ ActionButton4.Name = "ArrowDown"
+ ActionButton4.Tag = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons.ArrowDown
+ Me.CMB_DEST.Buttons.Add(ActionButton1)
+ Me.CMB_DEST.Buttons.Add(ActionButton2)
+ Me.CMB_DEST.Buttons.Add(ActionButton3)
+ Me.CMB_DEST.Buttons.Add(ActionButton4)
+ Me.CMB_DEST.CaptionMode = PersonalUtilities.Forms.Controls.Base.ICaptionControl.Modes.Label
+ Me.CMB_DEST.CaptionText = "Destination:"
+ Me.CMB_DEST.CaptionVisible = True
+ Me.CMB_DEST.CaptionWidth = 70.0R
+ Me.CMB_DEST.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.CMB_DEST.Location = New System.Drawing.Point(3, 3)
+ Me.CMB_DEST.Name = "CMB_DEST"
+ Me.CMB_DEST.Size = New System.Drawing.Size(528, 22)
+ Me.CMB_DEST.TabIndex = 0
+ Me.CMB_DEST.TextBoxBorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
+ '
+ 'TP_MAIN
+ '
+ TP_MAIN.ColumnCount = 1
+ TP_MAIN.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
+ TP_MAIN.Controls.Add(Me.CMB_DEST, 0, 0)
+ TP_MAIN.Controls.Add(FRM_FILES, 0, 1)
+ TP_MAIN.Dock = System.Windows.Forms.DockStyle.Fill
+ TP_MAIN.Location = New System.Drawing.Point(0, 0)
+ TP_MAIN.Name = "TP_MAIN"
+ TP_MAIN.RowCount = 2
+ TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28.0!))
+ TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100.0!))
+ TP_MAIN.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20.0!))
+ TP_MAIN.Size = New System.Drawing.Size(534, 116)
+ TP_MAIN.TabIndex = 0
+ '
+ 'FRM_FILES
+ '
+ FRM_FILES.Controls.Add(Me.TXT_FILES)
+ FRM_FILES.Dock = System.Windows.Forms.DockStyle.Fill
+ FRM_FILES.Location = New System.Drawing.Point(3, 31)
+ FRM_FILES.Name = "FRM_FILES"
+ FRM_FILES.Size = New System.Drawing.Size(528, 82)
+ FRM_FILES.TabIndex = 1
+ FRM_FILES.TabStop = False
+ FRM_FILES.Text = "Files:"
+ '
+ 'TXT_FILES
+ '
+ Me.TXT_FILES.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.TXT_FILES.Location = New System.Drawing.Point(3, 16)
+ Me.TXT_FILES.Name = "TXT_FILES"
+ Me.TXT_FILES.ReadOnly = True
+ Me.TXT_FILES.Size = New System.Drawing.Size(522, 63)
+ Me.TXT_FILES.TabIndex = 0
+ Me.TXT_FILES.Text = ""
+ '
+ 'FeedCopyToForm
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.ClientSize = New System.Drawing.Size(534, 141)
+ Me.Controls.Add(CONTAINER_MAIN)
+ Me.KeyPreview = True
+ Me.MinimizeBox = False
+ Me.MinimumSize = New System.Drawing.Size(550, 150)
+ Me.Name = "FeedCopyToForm"
+ Me.ShowInTaskbar = False
+ Me.Text = "Copy to..."
+ CONTAINER_MAIN.ContentPanel.ResumeLayout(False)
+ CONTAINER_MAIN.ResumeLayout(False)
+ CONTAINER_MAIN.PerformLayout()
+ CType(Me.CMB_DEST, System.ComponentModel.ISupportInitialize).EndInit()
+ TP_MAIN.ResumeLayout(False)
+ FRM_FILES.ResumeLayout(False)
+ Me.ResumeLayout(False)
+
+ End Sub
+ Private WithEvents CMB_DEST As PersonalUtilities.Forms.Controls.ComboBoxExtended
+ Private WithEvents TXT_FILES As RichTextBox
+ End Class
+End Namespace
\ No newline at end of file
diff --git a/SCrawler/Download/Feed/FeedCopyToForm.resx b/SCrawler/Download/Feed/FeedCopyToForm.resx
new file mode 100644
index 0000000..0266693
--- /dev/null
+++ b/SCrawler/Download/Feed/FeedCopyToForm.resx
@@ -0,0 +1,261 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ False
+
+
+ False
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ wwAADsMBx2+oZAAAAR5JREFUOE+VkjFqwzAUhn2D9iShRyi+QhYbGujg3ZATZPKYdC6FQhPwlAMkg3dP
+ WQwhyWIyJIUW5NqyPb7oCVtIlhVTwYf8nv7/t2zJagel9KmqKsIACYL9RjI8UHz5zshougZr/AEvbxEP
+ aZCDBY3VslixaJvX3wzkkDiOwbZtDRGA5vdNAg+TL27qgmt5XkBG/gTdAG7Gt+3PP9oOaEGFCVEC6rp+
+ 5g9MfM/c5e4OsEZMZkQEtGL5H2DdZ5JRArDwPA+iKII0TfkC9vroC9j5vq8JTWw3WzWgLMtZGIaa0MR8
+ vlAD8PYlSaIJTTiOowY0p0Bc19XEJo6HE59FAPuMzyAINKGJ1XLFZxHALtMrnkBXOIQIIIQ8YvF/KrgB
+ cMaRN0UdBBkAAAAASUVORK5CYII=
+
+
+
+
+ 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
+ AAAASUVORK5CYII=
+
+
+
+ False
+
+
\ No newline at end of file
diff --git a/SCrawler/Download/Feed/FeedCopyToForm.vb b/SCrawler/Download/Feed/FeedCopyToForm.vb
new file mode 100644
index 0000000..2d14f43
--- /dev/null
+++ b/SCrawler/Download/Feed/FeedCopyToForm.vb
@@ -0,0 +1,79 @@
+' Copyright (C) Andy https://github.com/AAndyProgram
+' 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 3 of the License, or
+' (at your option) any later version.
+'
+' This program is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY
+Imports PersonalUtilities.Tools
+Imports PersonalUtilities.Forms
+Imports PersonalUtilities.Forms.Controls.Base
+Imports ADB = PersonalUtilities.Forms.Controls.Base.ActionButton.DefaultButtons
+Namespace DownloadObjects
+ Friend Class FeedCopyToForm
+ Private WithEvents MyDefs As DefaultFormOptions
+ Private _Destination As SFile = Nothing
+ Friend ReadOnly Property Destination As SFile
+ Get
+ Return _Destination
+ End Get
+ End Property
+ Friend Sub New(ByVal Files As IEnumerable(Of SFile), ByVal IsCopy As Boolean)
+ InitializeComponent()
+ MyDefs = New DefaultFormOptions(Me, Settings.Design)
+ If Files.ListExists Then TXT_FILES.Text = Files.ListToString(vbNewLine)
+ Text = $"{IIf(IsCopy, "Copy", "Move")} files to..."
+ Try
+ If IsCopy Then
+ Icon = ImageRenderer.GetIcon(My.Resources.PastePic_32, EDP.ThrowException)
+ Else
+ Icon = ImageRenderer.GetIcon(My.Resources.CutPic_48, EDP.ThrowException)
+ End If
+ Catch
+ ShowIcon = False
+ End Try
+ End Sub
+ Private Sub FeedCopyToForm_Load(sender As Object, e As EventArgs) Handles Me.Load
+ Try
+ With MyDefs
+ .MyViewInitialize(True)
+ .AddOkCancelToolbar()
+ .MyFieldsCheckerE = New FieldsChecker
+ With .MyFieldsCheckerE
+ .AddControl(Of String)(CMB_DEST, "Destination")
+ .EndLoaderOperations()
+ End With
+ Settings.DownloadLocations.PopulateComboBox(CMB_DEST)
+ CMB_DEST.Text = Settings.FeedLastCopyMoveLocation.Value
+ .EndLoaderOperations()
+ .MyOkCancel.EnableOK = True
+ End With
+ Catch ex As Exception
+ MyDefs.InvokeLoaderError(ex)
+ End Try
+ End Sub
+ Private Sub FeedCopyToForm_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
+ Dim b As Boolean = True
+ If e.KeyCode = Keys.O And e.Control Then
+ Settings.DownloadLocations.ChooseNewLocation(CMB_DEST, False, False)
+ ElseIf e.KeyCode = Keys.O And e.Alt Then
+ Settings.DownloadLocations.ChooseNewLocation(CMB_DEST, True, True)
+ Else
+ b = False
+ End If
+ If b Then e.Handled = True
+ End Sub
+ Private Sub MyDefs_ButtonOkClick(ByVal Sender As Object, ByVal e As KeyHandleEventArgs) Handles MyDefs.ButtonOkClick
+ If MyDefs.MyFieldsChecker.AllParamsOK Then
+ _Destination = CMB_DEST.Text
+ Settings.FeedLastCopyMoveLocation.Value = _Destination
+ MyDefs.CloseForm()
+ End If
+ End Sub
+ Private Sub CMB_DEST_ActionOnButtonClick(ByVal Sender As Object, ByVal e As ActionButtonEventArgs) Handles CMB_DEST.ActionOnButtonClick
+ If Sender.DefaultButton = ADB.Open Or Sender.DefaultButton = ADB.Add Then _
+ Settings.DownloadLocations.ChooseNewLocation(CMB_DEST, Sender.DefaultButton = ADB.Add, Sender.DefaultButton = ADB.Add)
+ End Sub
+ End Class
+End Namespace
\ No newline at end of file
diff --git a/SCrawler/Download/Feed/FeedMedia.Designer.vb b/SCrawler/Download/Feed/FeedMedia.Designer.vb
index 200bf40..7a191c8 100644
--- a/SCrawler/Download/Feed/FeedMedia.Designer.vb
+++ b/SCrawler/Download/Feed/FeedMedia.Designer.vb
@@ -24,8 +24,10 @@ Namespace DownloadObjects
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim CONTEXT_SEP_1 As System.Windows.Forms.ToolStripSeparator
- Dim CONTEXT_SEP_2 As System.Windows.Forms.ToolStripSeparator
Dim TP_LBL As System.Windows.Forms.TableLayoutPanel
+ Dim CONTEXT_SEP_3 As System.Windows.Forms.ToolStripSeparator
+ Dim CONTEXT_SEP_4 As System.Windows.Forms.ToolStripSeparator
+ Me.CONTEXT_SEP_2 = New System.Windows.Forms.ToolStripSeparator()
Me.CH_CHECKED = New System.Windows.Forms.CheckBox()
Me.LBL_INFO = New System.Windows.Forms.Label()
Me.CONTEXT_DATA = New System.Windows.Forms.ContextMenuStrip(Me.components)
@@ -35,23 +37,25 @@ Namespace DownloadObjects
Me.BTT_CONTEXT_OPEN_USER = New System.Windows.Forms.ToolStripMenuItem()
Me.BTT_CONTEXT_OPEN_USER_URL = New System.Windows.Forms.ToolStripMenuItem()
Me.BTT_CONTEXT_OPEN_USER_POST = New System.Windows.Forms.ToolStripMenuItem()
+ Me.BTT_COPY_TO = New System.Windows.Forms.ToolStripMenuItem()
+ Me.BTT_MOVE_TO = New System.Windows.Forms.ToolStripMenuItem()
Me.BTT_FEED_ADD_FAV = New System.Windows.Forms.ToolStripMenuItem()
+ Me.BTT_FEED_ADD_FAV_REMOVE = New System.Windows.Forms.ToolStripMenuItem()
Me.BTT_FEED_ADD_SPEC = New System.Windows.Forms.ToolStripMenuItem()
+ Me.BTT_FEED_ADD_SPEC_REMOVE = New System.Windows.Forms.ToolStripMenuItem()
Me.BTT_FEED_REMOVE_FAV = New System.Windows.Forms.ToolStripMenuItem()
Me.BTT_FEED_REMOVE_SPEC = New System.Windows.Forms.ToolStripMenuItem()
- Me.CONTEXT_SEP_3 = New System.Windows.Forms.ToolStripSeparator()
Me.BTT_CONTEXT_FIND_USER = New System.Windows.Forms.ToolStripMenuItem()
Me.BTT_CONTEXT_INFO = New System.Windows.Forms.ToolStripMenuItem()
- Me.CONTEXT_SEP_4 = New System.Windows.Forms.ToolStripSeparator()
+ Me.CONTEXT_SEP_5 = New System.Windows.Forms.ToolStripSeparator()
Me.BTT_CONTEXT_DELETE = New System.Windows.Forms.ToolStripMenuItem()
Me.ICON_SITE = New System.Windows.Forms.PictureBox()
Me.TP_MAIN = New System.Windows.Forms.TableLayoutPanel()
Me.LBL_TITLE = New System.Windows.Forms.Label()
- Me.BTT_FEED_ADD_FAV_REMOVE = New System.Windows.Forms.ToolStripMenuItem()
- Me.BTT_FEED_ADD_SPEC_REMOVE = New System.Windows.Forms.ToolStripMenuItem()
CONTEXT_SEP_1 = New System.Windows.Forms.ToolStripSeparator()
- CONTEXT_SEP_2 = New System.Windows.Forms.ToolStripSeparator()
TP_LBL = New System.Windows.Forms.TableLayoutPanel()
+ CONTEXT_SEP_3 = New System.Windows.Forms.ToolStripSeparator()
+ CONTEXT_SEP_4 = New System.Windows.Forms.ToolStripSeparator()
TP_LBL.SuspendLayout()
Me.CONTEXT_DATA.SuspendLayout()
CType(Me.ICON_SITE, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -65,8 +69,8 @@ Namespace DownloadObjects
'
'CONTEXT_SEP_2
'
- CONTEXT_SEP_2.Name = "CONTEXT_SEP_2"
- CONTEXT_SEP_2.Size = New System.Drawing.Size(302, 6)
+ Me.CONTEXT_SEP_2.Name = "CONTEXT_SEP_2"
+ Me.CONTEXT_SEP_2.Size = New System.Drawing.Size(302, 6)
'
'TP_LBL
'
@@ -110,9 +114,9 @@ Namespace DownloadObjects
'
'CONTEXT_DATA
'
- Me.CONTEXT_DATA.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_CONTEXT_DOWN, Me.CONTEXT_SEP_0, Me.BTT_CONTEXT_OPEN_MEDIA, Me.BTT_CONTEXT_OPEN_USER, CONTEXT_SEP_1, Me.BTT_CONTEXT_OPEN_USER_URL, Me.BTT_CONTEXT_OPEN_USER_POST, CONTEXT_SEP_2, Me.BTT_FEED_ADD_FAV, Me.BTT_FEED_ADD_FAV_REMOVE, Me.BTT_FEED_ADD_SPEC, Me.BTT_FEED_ADD_SPEC_REMOVE, Me.BTT_FEED_REMOVE_FAV, Me.BTT_FEED_REMOVE_SPEC, Me.CONTEXT_SEP_3, Me.BTT_CONTEXT_FIND_USER, Me.BTT_CONTEXT_INFO, Me.CONTEXT_SEP_4, Me.BTT_CONTEXT_DELETE})
+ Me.CONTEXT_DATA.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.BTT_CONTEXT_DOWN, Me.CONTEXT_SEP_0, Me.BTT_CONTEXT_OPEN_MEDIA, Me.BTT_CONTEXT_OPEN_USER, CONTEXT_SEP_1, Me.BTT_CONTEXT_OPEN_USER_URL, Me.BTT_CONTEXT_OPEN_USER_POST, Me.CONTEXT_SEP_2, Me.BTT_COPY_TO, Me.BTT_MOVE_TO, CONTEXT_SEP_3, Me.BTT_FEED_ADD_FAV, Me.BTT_FEED_ADD_FAV_REMOVE, Me.BTT_FEED_ADD_SPEC, Me.BTT_FEED_ADD_SPEC_REMOVE, Me.BTT_FEED_REMOVE_FAV, Me.BTT_FEED_REMOVE_SPEC, CONTEXT_SEP_4, Me.BTT_CONTEXT_FIND_USER, Me.BTT_CONTEXT_INFO, Me.CONTEXT_SEP_5, Me.BTT_CONTEXT_DELETE})
Me.CONTEXT_DATA.Name = "CONTEXT_PIC"
- Me.CONTEXT_DATA.Size = New System.Drawing.Size(306, 364)
+ Me.CONTEXT_DATA.Size = New System.Drawing.Size(306, 414)
'
'BTT_CONTEXT_DOWN
'
@@ -156,6 +160,25 @@ Namespace DownloadObjects
Me.BTT_CONTEXT_OPEN_USER_POST.Size = New System.Drawing.Size(305, 22)
Me.BTT_CONTEXT_OPEN_USER_POST.Text = "Open post"
'
+ 'BTT_COPY_TO
+ '
+ Me.BTT_COPY_TO.Image = Global.SCrawler.My.Resources.Resources.PastePic_32
+ Me.BTT_COPY_TO.Name = "BTT_COPY_TO"
+ Me.BTT_COPY_TO.Size = New System.Drawing.Size(305, 22)
+ Me.BTT_COPY_TO.Text = "Copy to..."
+ '
+ 'BTT_MOVE_TO
+ '
+ Me.BTT_MOVE_TO.Image = Global.SCrawler.My.Resources.Resources.CutPic_48
+ Me.BTT_MOVE_TO.Name = "BTT_MOVE_TO"
+ Me.BTT_MOVE_TO.Size = New System.Drawing.Size(305, 22)
+ Me.BTT_MOVE_TO.Text = "Move to..."
+ '
+ 'CONTEXT_SEP_3
+ '
+ CONTEXT_SEP_3.Name = "CONTEXT_SEP_3"
+ CONTEXT_SEP_3.Size = New System.Drawing.Size(302, 6)
+ '
'BTT_FEED_ADD_FAV
'
Me.BTT_FEED_ADD_FAV.Image = Global.SCrawler.My.Resources.Resources.HeartPic_32
@@ -163,6 +186,13 @@ Namespace DownloadObjects
Me.BTT_FEED_ADD_FAV.Size = New System.Drawing.Size(305, 22)
Me.BTT_FEED_ADD_FAV.Text = "Add to Favorite"
'
+ 'BTT_FEED_ADD_FAV_REMOVE
+ '
+ Me.BTT_FEED_ADD_FAV_REMOVE.Image = Global.SCrawler.My.Resources.Resources.HeartPic_32
+ Me.BTT_FEED_ADD_FAV_REMOVE.Name = "BTT_FEED_ADD_FAV_REMOVE"
+ Me.BTT_FEED_ADD_FAV_REMOVE.Size = New System.Drawing.Size(305, 22)
+ Me.BTT_FEED_ADD_FAV_REMOVE.Text = "Add to Favorite (remove from current)"
+ '
'BTT_FEED_ADD_SPEC
'
Me.BTT_FEED_ADD_SPEC.Image = Global.SCrawler.My.Resources.Resources.RSSPic_512
@@ -170,6 +200,13 @@ Namespace DownloadObjects
Me.BTT_FEED_ADD_SPEC.Size = New System.Drawing.Size(305, 22)
Me.BTT_FEED_ADD_SPEC.Text = "Add to special feed..."
'
+ 'BTT_FEED_ADD_SPEC_REMOVE
+ '
+ Me.BTT_FEED_ADD_SPEC_REMOVE.Image = Global.SCrawler.My.Resources.Resources.RSSPic_512
+ Me.BTT_FEED_ADD_SPEC_REMOVE.Name = "BTT_FEED_ADD_SPEC_REMOVE"
+ Me.BTT_FEED_ADD_SPEC_REMOVE.Size = New System.Drawing.Size(305, 22)
+ Me.BTT_FEED_ADD_SPEC_REMOVE.Text = "Add to special feed (remove from current)..."
+ '
'BTT_FEED_REMOVE_FAV
'
Me.BTT_FEED_REMOVE_FAV.Image = Global.SCrawler.My.Resources.Resources.DeletePic_24
@@ -184,10 +221,10 @@ Namespace DownloadObjects
Me.BTT_FEED_REMOVE_SPEC.Size = New System.Drawing.Size(305, 22)
Me.BTT_FEED_REMOVE_SPEC.Text = "Remove from special feed..."
'
- 'CONTEXT_SEP_3
+ 'CONTEXT_SEP_4
'
- Me.CONTEXT_SEP_3.Name = "CONTEXT_SEP_3"
- Me.CONTEXT_SEP_3.Size = New System.Drawing.Size(302, 6)
+ CONTEXT_SEP_4.Name = "CONTEXT_SEP_4"
+ CONTEXT_SEP_4.Size = New System.Drawing.Size(302, 6)
'
'BTT_CONTEXT_FIND_USER
'
@@ -203,10 +240,10 @@ Namespace DownloadObjects
Me.BTT_CONTEXT_INFO.Size = New System.Drawing.Size(305, 22)
Me.BTT_CONTEXT_INFO.Text = "Information"
'
- 'CONTEXT_SEP_4
+ 'CONTEXT_SEP_5
'
- Me.CONTEXT_SEP_4.Name = "CONTEXT_SEP_4"
- Me.CONTEXT_SEP_4.Size = New System.Drawing.Size(302, 6)
+ Me.CONTEXT_SEP_5.Name = "CONTEXT_SEP_5"
+ Me.CONTEXT_SEP_5.Size = New System.Drawing.Size(302, 6)
'
'BTT_CONTEXT_DELETE
'
@@ -252,20 +289,6 @@ Namespace DownloadObjects
Me.LBL_TITLE.Size = New System.Drawing.Size(140, 25)
Me.LBL_TITLE.TabIndex = 1
'
- 'BTT_FEED_ADD_FAV_REMOVE
- '
- Me.BTT_FEED_ADD_FAV_REMOVE.Image = Global.SCrawler.My.Resources.Resources.HeartPic_32
- Me.BTT_FEED_ADD_FAV_REMOVE.Name = "BTT_FEED_ADD_FAV_REMOVE"
- Me.BTT_FEED_ADD_FAV_REMOVE.Size = New System.Drawing.Size(305, 22)
- Me.BTT_FEED_ADD_FAV_REMOVE.Text = "Add to Favorite (remove from current)"
- '
- 'BTT_FEED_ADD_SPEC_REMOVE
- '
- Me.BTT_FEED_ADD_SPEC_REMOVE.Image = Global.SCrawler.My.Resources.Resources.RSSPic_512
- Me.BTT_FEED_ADD_SPEC_REMOVE.Name = "BTT_FEED_ADD_SPEC_REMOVE"
- Me.BTT_FEED_ADD_SPEC_REMOVE.Size = New System.Drawing.Size(305, 22)
- Me.BTT_FEED_ADD_SPEC_REMOVE.Text = "Add to special feed (remove from current)..."
- '
'FeedMedia
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -299,7 +322,6 @@ Namespace DownloadObjects
Private WithEvents LBL_INFO As Label
Private WithEvents BTT_CONTEXT_INFO As ToolStripMenuItem
Private WithEvents ICON_SITE As PictureBox
- Private WithEvents CONTEXT_SEP_3 As ToolStripSeparator
Private WithEvents BTT_CONTEXT_DOWN As ToolStripMenuItem
Private WithEvents CONTEXT_SEP_0 As ToolStripSeparator
Private WithEvents LBL_TITLE As Label
@@ -307,8 +329,11 @@ Namespace DownloadObjects
Private WithEvents BTT_FEED_ADD_SPEC As ToolStripMenuItem
Private WithEvents BTT_FEED_REMOVE_FAV As ToolStripMenuItem
Private WithEvents BTT_FEED_REMOVE_SPEC As ToolStripMenuItem
- Private WithEvents CONTEXT_SEP_4 As ToolStripSeparator
Private WithEvents BTT_FEED_ADD_FAV_REMOVE As ToolStripMenuItem
Private WithEvents BTT_FEED_ADD_SPEC_REMOVE As ToolStripMenuItem
+ Private WithEvents BTT_COPY_TO As ToolStripMenuItem
+ Private WithEvents BTT_MOVE_TO As ToolStripMenuItem
+ Private WithEvents CONTEXT_SEP_5 As ToolStripSeparator
+ Private WithEvents CONTEXT_SEP_2 As ToolStripSeparator
End Class
End Namespace
\ No newline at end of file
diff --git a/SCrawler/Download/Feed/FeedMedia.resx b/SCrawler/Download/Feed/FeedMedia.resx
index d0a3aa8..eb410b0 100644
--- a/SCrawler/Download/Feed/FeedMedia.resx
+++ b/SCrawler/Download/Feed/FeedMedia.resx
@@ -120,13 +120,16 @@
False
-
- False
-
False
17, 17
+
+ False
+
+
+ False
+
\ No newline at end of file
diff --git a/SCrawler/Download/Feed/FeedMedia.vb b/SCrawler/Download/Feed/FeedMedia.vb
index f1665a6..e402f86 100644
--- a/SCrawler/Download/Feed/FeedMedia.vb
+++ b/SCrawler/Download/Feed/FeedMedia.vb
@@ -177,9 +177,13 @@ Namespace DownloadObjects
BTT_CONTEXT_DOWN.Visible = True
CONTEXT_SEP_0.Visible = True
BTT_CONTEXT_OPEN_USER.Visible = False
- CONTEXT_SEP_4.Visible = False
+ CONTEXT_SEP_5.Visible = False
BTT_CONTEXT_DELETE.Visible = False
+ CONTEXT_SEP_2.Visible = False
+ BTT_COPY_TO.Visible = False
+ BTT_MOVE_TO.Visible = False
+
If Not Media.Data.URL.IsEmptyString Then
Dim ext$ = Media.Data.URL.CSFile.Extension
Dim imgFile As New SFile With {.Path = Settings.Cache.RootDirectory.Path}
@@ -478,6 +482,33 @@ Namespace DownloadObjects
End Try
End Sub
#End Region
+#Region "Copy, Move"
+ Private Sub BTT_COPY_MOVE_TO_Click(sender As Object, e As EventArgs) Handles BTT_COPY_TO.Click, BTT_MOVE_TO.Click
+ Const MsgTitle$ = "Copy/Move checked files"
+ Try
+ If Not File.IsEmptyString Then
+ Dim isCopy As Boolean = sender Is BTT_COPY_TO
+ Dim dest As SFile = Nothing
+ Dim ff As SFile = File
+ Using f As New FeedCopyToForm({File}, isCopy)
+ f.ShowDialog()
+ If f.DialogResult = DialogResult.OK Then dest = f.Destination
+ End Using
+ If Not dest.IsEmptyString Then
+ ff.Path = dest
+ If isCopy Then
+ File.Copy(ff)
+ Else
+ If SFile.Move(File, ff) Then RaiseEvent MediaDeleted(Me)
+ End If
+ MsgBoxE({$"File {IIf(isCopy, "copied", "moved")}{vbCr}Source: '{File}'{vbCr}Destination: '{ff}'", MsgTitle})
+ End If
+ End If
+ Catch ex As Exception
+ ErrorsDescriber.Execute(EDP.LogMessageValue, ex, MsgTitle)
+ End Try
+ End Sub
+#End Region
#Region "Feed"
Private Sub BTT_FEED_ADD_FAV_Click(sender As Object, e As EventArgs) Handles BTT_FEED_ADD_FAV.Click, BTT_FEED_ADD_FAV_REMOVE.Click
With Settings.Feeds.Favorite
diff --git a/SCrawler/My Project/Resources.Designer.vb b/SCrawler/My Project/Resources.Designer.vb
index 60a588e..5eeb9d7 100644
--- a/SCrawler/My Project/Resources.Designer.vb
+++ b/SCrawler/My Project/Resources.Designer.vb
@@ -120,6 +120,16 @@ Namespace My.Resources
End Get
End Property
+ '''
+ ''' Looks up a localized resource of type System.Drawing.Bitmap.
+ '''
+ Friend ReadOnly Property CutPic_48() As System.Drawing.Bitmap
+ Get
+ Dim obj As Object = ResourceManager.GetObject("CutPic_48", resourceCulture)
+ Return CType(obj,System.Drawing.Bitmap)
+ End Get
+ End Property
+
'''
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''
diff --git a/SCrawler/My Project/Resources.resx b/SCrawler/My Project/Resources.resx
index a3b77c7..9f63ed8 100644
--- a/SCrawler/My Project/Resources.resx
+++ b/SCrawler/My Project/Resources.resx
@@ -220,4 +220,7 @@
..\Content\Pictures\BrushToolPic_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Content\Pictures\CutPic_48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
\ No newline at end of file
diff --git a/SCrawler/SCrawler.vbproj b/SCrawler/SCrawler.vbproj
index 78d5314..237c423 100644
--- a/SCrawler/SCrawler.vbproj
+++ b/SCrawler/SCrawler.vbproj
@@ -267,6 +267,12 @@
Form
+
+ FeedCopyToForm.vb
+
+
+ Form
+
FeedMedia.vb
@@ -524,6 +530,9 @@
DownloadSavedPostsForm.vb
+
+ FeedCopyToForm.vb
+
FeedMedia.vb
@@ -732,6 +741,9 @@
+
+
+
diff --git a/SCrawler/SettingsCLS.vb b/SCrawler/SettingsCLS.vb
index 842c2e2..440f22d 100644
--- a/SCrawler/SettingsCLS.vb
+++ b/SCrawler/SettingsCLS.vb
@@ -320,6 +320,7 @@ Friend Class SettingsCLS : Implements IDownloaderSettings, IDisposable
FeedLastModeSubscriptions = New XMLValue(Of Boolean)("LastModeSubscriptions", False, MyXML, n)
FeedShowFriendlyNames = New XMLValue(Of Boolean)("ShowFriendlyNames", True, MyXML, n)
FeedShowSpecialFeedsMediaItem = New XMLValue(Of Boolean)("ShowSpecialFeedsMediaItem", False, MyXML, n)
+ FeedLastCopyMoveLocation = New XMLValue(Of SFile)("LastCopyMoveLocation",, MyXML, n)
n = {"Users"}
FromChannelDownloadTop = New XMLValue(Of Integer)("FromChannelDownloadTop", 10, MyXML, n)
@@ -954,6 +955,7 @@ Friend Class SettingsCLS : Implements IDownloaderSettings, IDisposable
Friend ReadOnly Property FeedLastModeSubscriptions As XMLValue(Of Boolean)
Friend ReadOnly Property FeedShowFriendlyNames As XMLValue(Of Boolean)
Friend ReadOnly Property FeedShowSpecialFeedsMediaItem As XMLValue(Of Boolean)
+ Friend ReadOnly Property FeedLastCopyMoveLocation As XMLValue(Of SFile)
#End Region
#Region "New version properties"
Friend ReadOnly Property CheckUpdatesAtStart As XMLValue(Of Boolean)