diff --git a/source/ChanSort.Api/Model/ChannelInfo.cs b/source/ChanSort.Api/Model/ChannelInfo.cs
index 05bc50f..841e612 100644
--- a/source/ChanSort.Api/Model/ChannelInfo.cs
+++ b/source/ChanSort.Api/Model/ChannelInfo.cs
@@ -5,7 +5,7 @@ namespace ChanSort.Api
{
public class ChannelInfo
{
- private const int MAX_FAV_LISTS = 5;
+ private const int MAX_FAV_LISTS = 16;
private string uid;
private string serviceTypeName;
diff --git a/source/ChanSort.Api/Model/Enums.cs b/source/ChanSort.Api/Model/Enums.cs
index e351cea..d451d5c 100644
--- a/source/ChanSort.Api/Model/Enums.cs
+++ b/source/ChanSort.Api/Model/Enums.cs
@@ -73,7 +73,7 @@ namespace ChanSort.Api
#endregion
[Flags]
- public enum Favorites : byte { A = 0x01, B = 0x02, C = 0x04, D = 0x08, E = 0x10 }
+ public enum Favorites : byte { A = 0x01, B = 0x02, C = 0x04, D = 0x08, E = 0x10, F=0x20, G=0x40, H=0x80 }
public enum UnsortedChannelMode
{
diff --git a/source/ChanSort.Loader.GlobalClone/GcSerializer.cs b/source/ChanSort.Loader.GlobalClone/GcSerializer.cs
index d1beffa..1ae4830 100644
--- a/source/ChanSort.Loader.GlobalClone/GcSerializer.cs
+++ b/source/ChanSort.Loader.GlobalClone/GcSerializer.cs
@@ -211,6 +211,8 @@ namespace ChanSort.Loader.GlobalClone
this.ParseChannelInfoNodes(itemNode, ch);
var list = this.DataRoot.GetChannelList(ch.SignalSource);
+ if (list == null && (ch.SignalSource & SignalSource.MaskTvRadio) == 0) // Data/Option channels are put in the TV list
+ list = this.DataRoot.GetChannelList(ch.SignalSource | SignalSource.Tv);
this.DataRoot.AddChannel(list, ch);
}
}
@@ -315,6 +317,17 @@ namespace ChanSort.Loader.GlobalClone
ch.ShortName = shortName;
hasHexName = true;
break;
+ default:
+ if (info.LocalName.StartsWith("favoriteIdx"))
+ {
+ int n = info.LocalName[11] - 'A';
+ var mask = 1 << n;
+ this.DataRoot.SupportedFavorites |= (Favorites)mask;
+ this.DataRoot.SortedFavorites = true;
+ if (((int)ch.Favorites & mask) != 0) // xml element holds bad index data (250) when fav is not set
+ ch.SetPosition(n + 1, int.Parse(info.InnerText));
+ }
+ break;
}
}
}
@@ -433,6 +446,16 @@ namespace ChanSort.Loader.GlobalClone
if (mapType == "1")
node.InnerText = ((int) ch.Favorites).ToString();
break;
+ default:
+ if (node.LocalName.StartsWith("favoriteIdx"))
+ {
+ int n = node.LocalName[11] - 'A';
+ var idx = ch.GetPosition(n + 1);
+ if (idx <= 0)
+ idx = 250; // this weird value is used by the TV when the fav is not set
+ node.InnerText = idx.ToString();
+ }
+ break;
}
}
}
diff --git a/source/ChanSort/GlobalImageCollection.cs b/source/ChanSort/GlobalImageCollection.cs
index 7aad26b..5430983 100644
--- a/source/ChanSort/GlobalImageCollection.cs
+++ b/source/ChanSort/GlobalImageCollection.cs
@@ -96,7 +96,7 @@ namespace ChanSort.Ui
this.sharedImageCollection1.ImageSource.Images.SetKeyName(40, "0040.png");
this.sharedImageCollection1.ImageSource.Images.SetKeyName(41, "0041.png");
this.sharedImageCollection1.ImageSource.Images.SetKeyName(42, "0042.png");
- this.sharedImageCollection1.ParentControl = null;
+ this.sharedImageCollection1.ImageSource.Images.SetKeyName(43, "0043.png");
((System.ComponentModel.ISupportInitialize)(this.sharedImageCollection1.ImageSource)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.sharedImageCollection1)).EndInit();
diff --git a/source/ChanSort/GlobalImageCollection.resx b/source/ChanSort/GlobalImageCollection.resx
index 3c1676e..8e34927 100644
--- a/source/ChanSort/GlobalImageCollection.resx
+++ b/source/ChanSort/GlobalImageCollection.resx
@@ -123,13 +123,13 @@
- AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLlV0aWxzLnYxNy4xLCBWZXJzaW9uPTE3LjEu
- Ny4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEMAwAAAFFT
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFpEZXZFeHByZXNzLlV0aWxzLnYxOS4xLCBWZXJzaW9uPTE5LjEu
+ NS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI4OGQxNzU0ZDcwMGU0OWEMAwAAAFFT
eXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRv
a2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAAChEZXZFeHByZXNzLlV0aWxzLkltYWdlQ29sbGVjdGlvblN0
cmVhbWVyAgAAAAlJbWFnZVNpemUERGF0YQQHE1N5c3RlbS5EcmF3aW5nLlNpemUDAAAAAgIAAAAF/P//
/xNTeXN0ZW0uRHJhd2luZy5TaXplAgAAAAV3aWR0aAZoZWlnaHQAAAgIAwAAABAAAAAQAAAACQUAAAAP
- BQAAAJV0AAACYgIAAIlQTkcNChoKAAAADUlIRFIAAAAQAAAAEAgCAAAAkJFoNgAAAAFzUkdCAK7OHOkA
+ BQAAAHB2AAACYgIAAIlQTkcNChoKAAAADUlIRFIAAAAQAAAAEAgCAAAAkJFoNgAAAAFzUkdCAK7OHOkA
AAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAAsSAAALEgHS3X78AAAB90lEQVQ4T2P4TyIgXcOkmft2XH1T
Pf1YSjMQHU5sPHDz7tu1yY1rEuqADM/sbR5pO2xjNkQ17pwTmF899yjDkhWn/m9c9e/f/9sPvyzacHv+
+jtA9v8pPf/7WoGMSQsv9869cPLE439dNf/+/pyw6QJDUsvBPSff/V+6/P/BvUAb26ZdBVmcmvk/IRFI
@@ -626,12 +626,20 @@
lHy+shnszEw9Lo4l18IzqyPTOYRCsuxlzE2pk5D9+EePqa1W1NEheTy8Gez4cPlRMTyzMnL9W+DqqiAE
GDvY0rhHKrc0am8XXa6CGcC7Cw/zwamv/ivL3osrtZqX0gOE7MN4ryTtEXkrsliE3buEtjbkdDaDN+ce
cGfmc/G7a7E0h9AJSiOUhggZxnhIqhwS3W7kchkaORxcI3gL8BrgJcAiwKtKBjaXoJoB41J+D/wibAAY
- Dxu0uf/h87XOf5x6/S8BnAaucM19IAAAAABJRU5ErkJgggs=
+ Dxu0uf/h87XOf5x6/S8BnAaucM19IAAAAABJRU5ErkJggtcBAACJUE5HDQoaCgAAAA1JSERSAAAAEAAA
+ ABAIBgAAAB/z/2EAAAAEZ0FNQQAAsY8L/GEFAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABeUlEQVQ4T22T
+ rZaDMBBGeQzsSmRlbWUkMjYSicRGIpFYJBJZ20dYia1EIrNzhw4L7ML5TtqcfHd+MmTdM6Z2alIca1Uz
+ VKkeQqp7n6rOp9CWKUSn8vGRymaTq++qDPP0PaqG717Vv7pd3dSmaxALdAKs8h6fdZWdg5Z1OYksFQAN
+ gJo+EDXxGkDeo/m9vH8zAEDaPNUYdvm+3CP7WJ4EgB49qlvKIAHgsOucZtM8pUaRl/8YqqlS4C2KocrO
+ AGqhWTxAHt1DgbWYwuiTk8774WxG3NAGEBKAvV4Rh9kDgFkPHszze94AoZB9+cFVmVlr/kTk+iiD0jgc
+ +qACwP7df6WMQeGgdRhzPUkTZc2bPMVXo8MEBEM7xgtAJoxZ2COXxUlA6IdlgukEYDy5SsvA6jQR8QoF
+ ULZ3+Z2njLk2AIYjZF5mPfyfNoA0EQCzYKY/5uv6kWtvqXCSAeMIANlXaF8iolYTURFm1h1g4r5t5dpM
+ NMtE3abC5ekHXGu8spQLKHAAAAAASUVORK5CYIIL
- 01/23/2018 21:33:37
+ 08/13/2019 13:15:17
diff --git a/source/ChanSort/MainForm.Designer.cs b/source/ChanSort/MainForm.Designer.cs
index 08ba7af..5abfd86 100644
--- a/source/ChanSort/MainForm.Designer.cs
+++ b/source/ChanSort/MainForm.Designer.cs
@@ -41,15 +41,19 @@
this.colOutName = new DevExpress.XtraGrid.Columns.GridColumn();
this.colOutFav = new DevExpress.XtraGrid.Columns.GridColumn();
this.repositoryItemCheckedComboBoxEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemCheckedComboBoxEdit();
- this.colUid1 = new DevExpress.XtraGrid.Columns.GridColumn();
this.colOutLock = new DevExpress.XtraGrid.Columns.GridColumn();
this.colOutSkip = new DevExpress.XtraGrid.Columns.GridColumn();
this.colOutHide = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.colOutDeleted = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.colUid1 = new DevExpress.XtraGrid.Columns.GridColumn();
this.repositoryItemTextEdit1 = new DevExpress.XtraEditors.Repository.RepositoryItemTextEdit();
this.lblHotkeyLeft = new DevExpress.XtraEditors.LabelControl();
this.pnlEditControls = new DevExpress.XtraEditors.PanelControl();
- this.btnToggleLock = new DevExpress.XtraEditors.SimpleButton();
+ this.btnToggleFavH = new DevExpress.XtraEditors.SimpleButton();
this.globalImageCollection1 = new ChanSort.Ui.GlobalImageCollection(this.components);
+ this.btnToggleFavG = new DevExpress.XtraEditors.SimpleButton();
+ this.btnToggleFavF = new DevExpress.XtraEditors.SimpleButton();
+ this.btnToggleLock = new DevExpress.XtraEditors.SimpleButton();
this.btnToggleFavE = new DevExpress.XtraEditors.SimpleButton();
this.btnToggleFavD = new DevExpress.XtraEditors.SimpleButton();
this.btnToggleFavC = new DevExpress.XtraEditors.SimpleButton();
@@ -75,6 +79,7 @@
this.colLock = new DevExpress.XtraGrid.Columns.GridColumn();
this.colSkip = new DevExpress.XtraGrid.Columns.GridColumn();
this.colHidden = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.colDeleted = new DevExpress.XtraGrid.Columns.GridColumn();
this.colEncrypted = new DevExpress.XtraGrid.Columns.GridColumn();
this.colServiceType = new DevExpress.XtraGrid.Columns.GridColumn();
this.colServiceTypeName = new DevExpress.XtraGrid.Columns.GridColumn();
@@ -126,18 +131,9 @@
this.miSort = new DevExpress.XtraBars.BarButtonItem();
this.miRenum = new DevExpress.XtraBars.BarButtonItem();
this.miRenumFavByPrNr = new DevExpress.XtraBars.BarButtonItem();
+ this.miCopyCsv = new DevExpress.XtraBars.BarButtonItem();
this.mnuFavSet = new DevExpress.XtraBars.BarSubItem();
- this.miFavASet = new DevExpress.XtraBars.BarButtonItem();
- this.miFavBSet = new DevExpress.XtraBars.BarButtonItem();
- this.miFavCSet = new DevExpress.XtraBars.BarButtonItem();
- this.miFavDSet = new DevExpress.XtraBars.BarButtonItem();
- this.miFavESet = new DevExpress.XtraBars.BarButtonItem();
this.mnuFavUnset = new DevExpress.XtraBars.BarSubItem();
- this.miFavAUnset = new DevExpress.XtraBars.BarButtonItem();
- this.miFavBUnset = new DevExpress.XtraBars.BarButtonItem();
- this.miFavCUnset = new DevExpress.XtraBars.BarButtonItem();
- this.miFavDUnset = new DevExpress.XtraBars.BarButtonItem();
- this.miFavEUnset = new DevExpress.XtraBars.BarButtonItem();
this.miLockOn = new DevExpress.XtraBars.BarButtonItem();
this.miLockOff = new DevExpress.XtraBars.BarButtonItem();
this.miSkipOn = new DevExpress.XtraBars.BarButtonItem();
@@ -208,8 +204,6 @@
this.pageProgNr = new DevExpress.XtraTab.XtraTabPage();
this.popupInputSource = new DevExpress.XtraBars.PopupMenu(this.components);
this.popupFavList = new DevExpress.XtraBars.PopupMenu(this.components);
- this.colOutDeleted = new DevExpress.XtraGrid.Columns.GridColumn();
- this.colDeleted = new DevExpress.XtraGrid.Columns.GridColumn();
((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1)).BeginInit();
this.splitContainerControl1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.grpOutputList)).BeginInit();
@@ -395,13 +389,6 @@
this.repositoryItemCheckedComboBoxEdit1.ShowPopupCloseButton = false;
this.repositoryItemCheckedComboBoxEdit1.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;
//
- // colUid1
- //
- resources.ApplyResources(this.colUid1, "colUid1");
- this.colUid1.FieldName = "Uid";
- this.colUid1.Name = "colUid1";
- this.colUid1.OptionsColumn.AllowEdit = false;
- //
// colOutLock
//
resources.ApplyResources(this.colOutLock, "colOutLock");
@@ -420,6 +407,19 @@
this.colOutHide.FieldName = "Hidden";
this.colOutHide.Name = "colOutHide";
//
+ // colOutDeleted
+ //
+ resources.ApplyResources(this.colOutDeleted, "colOutDeleted");
+ this.colOutDeleted.FieldName = "IsDeleted";
+ this.colOutDeleted.Name = "colOutDeleted";
+ //
+ // colUid1
+ //
+ resources.ApplyResources(this.colUid1, "colUid1");
+ this.colUid1.FieldName = "Uid";
+ this.colUid1.Name = "colUid1";
+ this.colUid1.OptionsColumn.AllowEdit = false;
+ //
// repositoryItemTextEdit1
//
resources.ApplyResources(this.repositoryItemTextEdit1, "repositoryItemTextEdit1");
@@ -437,6 +437,9 @@
//
// pnlEditControls
//
+ this.pnlEditControls.Controls.Add(this.btnToggleFavH);
+ this.pnlEditControls.Controls.Add(this.btnToggleFavG);
+ this.pnlEditControls.Controls.Add(this.btnToggleFavF);
this.pnlEditControls.Controls.Add(this.btnToggleLock);
this.pnlEditControls.Controls.Add(this.btnToggleFavE);
this.pnlEditControls.Controls.Add(this.btnToggleFavD);
@@ -451,6 +454,28 @@
resources.ApplyResources(this.pnlEditControls, "pnlEditControls");
this.pnlEditControls.Name = "pnlEditControls";
//
+ // btnToggleFavH
+ //
+ resources.ApplyResources(this.btnToggleFavH, "btnToggleFavH");
+ this.btnToggleFavH.ImageOptions.ImageList = this.globalImageCollection1;
+ this.btnToggleFavH.Name = "btnToggleFavH";
+ this.btnToggleFavH.Tag = "";
+ this.btnToggleFavH.Click += new System.EventHandler(this.btnToggleFav_Click);
+ //
+ // btnToggleFavG
+ //
+ resources.ApplyResources(this.btnToggleFavG, "btnToggleFavG");
+ this.btnToggleFavG.ImageOptions.ImageList = this.globalImageCollection1;
+ this.btnToggleFavG.Name = "btnToggleFavG";
+ this.btnToggleFavG.Click += new System.EventHandler(this.btnToggleFav_Click);
+ //
+ // btnToggleFavF
+ //
+ resources.ApplyResources(this.btnToggleFavF, "btnToggleFavF");
+ this.btnToggleFavF.ImageOptions.ImageList = this.globalImageCollection1;
+ this.btnToggleFavF.Name = "btnToggleFavF";
+ this.btnToggleFavF.Click += new System.EventHandler(this.btnToggleFav_Click);
+ //
// btnToggleLock
//
this.btnToggleLock.ImageOptions.ImageIndex = ((int)(resources.GetObject("btnToggleLock.ImageOptions.ImageIndex")));
@@ -733,6 +758,12 @@
this.colHidden.FieldName = "Hidden";
this.colHidden.Name = "colHidden";
//
+ // colDeleted
+ //
+ resources.ApplyResources(this.colDeleted, "colDeleted");
+ this.colDeleted.FieldName = "IsDeleted";
+ this.colDeleted.Name = "colDeleted";
+ //
// colEncrypted
//
resources.ApplyResources(this.colEncrypted, "colEncrypted");
@@ -1006,16 +1037,6 @@
this.miGotoLeftList,
this.miRightListFilter,
this.miGotoRightList,
- this.miFavASet,
- this.miFavBSet,
- this.miFavCSet,
- this.miFavDSet,
- this.miFavESet,
- this.miFavAUnset,
- this.miFavBUnset,
- this.miFavCUnset,
- this.miFavDUnset,
- this.miFavEUnset,
this.miSelectFavList0,
this.miSelectFavListA,
this.miSelectFavListB,
@@ -1032,9 +1053,10 @@
this.miRomanian,
this.miExplorerIntegration,
this.miCheckUpdates,
- this.miUtf8Charset});
+ this.miUtf8Charset,
+ this.miCopyCsv});
this.barManager1.MainMenu = this.bar1;
- this.barManager1.MaxItemId = 100;
+ this.barManager1.MaxItemId = 101;
this.barManager1.ShowFullMenus = true;
//
// bar1
@@ -1229,17 +1251,18 @@
new DevExpress.XtraBars.LinkPersistInfo(this.miAddChannel),
new DevExpress.XtraBars.LinkPersistInfo(this.miRemove),
new DevExpress.XtraBars.LinkPersistInfo(this.miRenameChannel),
- new DevExpress.XtraBars.LinkPersistInfo(this.miSort),
- new DevExpress.XtraBars.LinkPersistInfo(this.miRenum),
- new DevExpress.XtraBars.LinkPersistInfo(this.miRenumFavByPrNr),
- new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.mnuFavSet, "", true, true, true, 0, null, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph),
+ new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.mnuFavSet, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph),
new DevExpress.XtraBars.LinkPersistInfo(this.mnuFavUnset),
- new DevExpress.XtraBars.LinkPersistInfo(this.miLockOn, true),
+ new DevExpress.XtraBars.LinkPersistInfo(this.miLockOn),
new DevExpress.XtraBars.LinkPersistInfo(this.miLockOff),
- new DevExpress.XtraBars.LinkPersistInfo(this.miSkipOn, true),
+ new DevExpress.XtraBars.LinkPersistInfo(this.miSkipOn),
new DevExpress.XtraBars.LinkPersistInfo(this.miSkipOff),
- new DevExpress.XtraBars.LinkPersistInfo(this.miHideOn, true),
- new DevExpress.XtraBars.LinkPersistInfo(this.miHideOff)});
+ new DevExpress.XtraBars.LinkPersistInfo(this.miHideOn),
+ new DevExpress.XtraBars.LinkPersistInfo(this.miHideOff),
+ new DevExpress.XtraBars.LinkPersistInfo(this.miRenum, true),
+ new DevExpress.XtraBars.LinkPersistInfo(this.miSort),
+ new DevExpress.XtraBars.LinkPersistInfo(this.miRenumFavByPrNr),
+ new DevExpress.XtraBars.LinkPersistInfo(this.miCopyCsv)});
this.miEdit.Name = "miEdit";
//
// miAddChannel
@@ -1297,139 +1320,32 @@
this.miRenumFavByPrNr.Name = "miRenumFavByPrNr";
this.miRenumFavByPrNr.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miRenumFavByPrNr_ItemClick);
//
+ // miCopyCsv
+ //
+ resources.ApplyResources(this.miCopyCsv, "miCopyCsv");
+ this.miCopyCsv.Id = 100;
+ this.miCopyCsv.ImageOptions.ImageIndex = ((int)(resources.GetObject("miCopyCsv.ImageOptions.ImageIndex")));
+ this.miCopyCsv.ItemShortcut = new DevExpress.XtraBars.BarShortcut(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
+ | System.Windows.Forms.Keys.C));
+ this.miCopyCsv.Name = "miCopyCsv";
+ this.miCopyCsv.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miCopyCsv_ItemClick);
+ //
// mnuFavSet
//
resources.ApplyResources(this.mnuFavSet, "mnuFavSet");
this.mnuFavSet.CategoryGuid = new System.Guid("d7eec464-59c9-4f45-88aa-602e64c81cc0");
this.mnuFavSet.Id = 37;
this.mnuFavSet.ImageOptions.ImageIndex = ((int)(resources.GetObject("mnuFavSet.ImageOptions.ImageIndex")));
- this.mnuFavSet.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
- new DevExpress.XtraBars.LinkPersistInfo(this.miFavASet),
- new DevExpress.XtraBars.LinkPersistInfo(this.miFavBSet),
- new DevExpress.XtraBars.LinkPersistInfo(this.miFavCSet),
- new DevExpress.XtraBars.LinkPersistInfo(this.miFavDSet),
- new DevExpress.XtraBars.LinkPersistInfo(this.miFavESet)});
this.mnuFavSet.Name = "mnuFavSet";
this.mnuFavSet.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionInMenu;
//
- // miFavASet
- //
- resources.ApplyResources(this.miFavASet, "miFavASet");
- this.miFavASet.CategoryGuid = new System.Guid("d7eec464-59c9-4f45-88aa-602e64c81cc0");
- this.miFavASet.Id = 73;
- this.miFavASet.ItemShortcut = new DevExpress.XtraBars.BarShortcut((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.D1));
- this.miFavASet.Name = "miFavASet";
- this.miFavASet.Tag = "A";
- this.miFavASet.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miFavSet_ItemClick);
- //
- // miFavBSet
- //
- resources.ApplyResources(this.miFavBSet, "miFavBSet");
- this.miFavBSet.CategoryGuid = new System.Guid("d7eec464-59c9-4f45-88aa-602e64c81cc0");
- this.miFavBSet.Id = 74;
- this.miFavBSet.ItemShortcut = new DevExpress.XtraBars.BarShortcut((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.D2));
- this.miFavBSet.Name = "miFavBSet";
- this.miFavBSet.Tag = "B";
- this.miFavBSet.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miFavSet_ItemClick);
- //
- // miFavCSet
- //
- resources.ApplyResources(this.miFavCSet, "miFavCSet");
- this.miFavCSet.CategoryGuid = new System.Guid("d7eec464-59c9-4f45-88aa-602e64c81cc0");
- this.miFavCSet.Id = 75;
- this.miFavCSet.ItemShortcut = new DevExpress.XtraBars.BarShortcut((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.D3));
- this.miFavCSet.Name = "miFavCSet";
- this.miFavCSet.Tag = "C";
- this.miFavCSet.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miFavSet_ItemClick);
- //
- // miFavDSet
- //
- resources.ApplyResources(this.miFavDSet, "miFavDSet");
- this.miFavDSet.CategoryGuid = new System.Guid("d7eec464-59c9-4f45-88aa-602e64c81cc0");
- this.miFavDSet.Id = 76;
- this.miFavDSet.ItemShortcut = new DevExpress.XtraBars.BarShortcut((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.D4));
- this.miFavDSet.Name = "miFavDSet";
- this.miFavDSet.Tag = "D";
- this.miFavDSet.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miFavSet_ItemClick);
- //
- // miFavESet
- //
- resources.ApplyResources(this.miFavESet, "miFavESet");
- this.miFavESet.CategoryGuid = new System.Guid("d7eec464-59c9-4f45-88aa-602e64c81cc0");
- this.miFavESet.Id = 77;
- this.miFavESet.ItemShortcut = new DevExpress.XtraBars.BarShortcut((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.D5));
- this.miFavESet.Name = "miFavESet";
- this.miFavESet.Tag = "E";
- this.miFavESet.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miFavSet_ItemClick);
- //
// mnuFavUnset
//
resources.ApplyResources(this.mnuFavUnset, "mnuFavUnset");
this.mnuFavUnset.CategoryGuid = new System.Guid("d7eec464-59c9-4f45-88aa-602e64c81cc0");
this.mnuFavUnset.Id = 38;
- this.mnuFavUnset.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
- new DevExpress.XtraBars.LinkPersistInfo(this.miFavAUnset),
- new DevExpress.XtraBars.LinkPersistInfo(this.miFavBUnset),
- new DevExpress.XtraBars.LinkPersistInfo(this.miFavCUnset),
- new DevExpress.XtraBars.LinkPersistInfo(this.miFavDUnset),
- new DevExpress.XtraBars.LinkPersistInfo(this.miFavEUnset)});
this.mnuFavUnset.Name = "mnuFavUnset";
//
- // miFavAUnset
- //
- resources.ApplyResources(this.miFavAUnset, "miFavAUnset");
- this.miFavAUnset.CategoryGuid = new System.Guid("d7eec464-59c9-4f45-88aa-602e64c81cc0");
- this.miFavAUnset.Id = 78;
- this.miFavAUnset.ItemShortcut = new DevExpress.XtraBars.BarShortcut(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
- | System.Windows.Forms.Keys.D1));
- this.miFavAUnset.Name = "miFavAUnset";
- this.miFavAUnset.Tag = "A";
- this.miFavAUnset.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miFavUnset_ItemClick);
- //
- // miFavBUnset
- //
- resources.ApplyResources(this.miFavBUnset, "miFavBUnset");
- this.miFavBUnset.CategoryGuid = new System.Guid("d7eec464-59c9-4f45-88aa-602e64c81cc0");
- this.miFavBUnset.Id = 79;
- this.miFavBUnset.ItemShortcut = new DevExpress.XtraBars.BarShortcut(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
- | System.Windows.Forms.Keys.D2));
- this.miFavBUnset.Name = "miFavBUnset";
- this.miFavBUnset.Tag = "B";
- this.miFavBUnset.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miFavUnset_ItemClick);
- //
- // miFavCUnset
- //
- resources.ApplyResources(this.miFavCUnset, "miFavCUnset");
- this.miFavCUnset.CategoryGuid = new System.Guid("d7eec464-59c9-4f45-88aa-602e64c81cc0");
- this.miFavCUnset.Id = 80;
- this.miFavCUnset.ItemShortcut = new DevExpress.XtraBars.BarShortcut(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
- | System.Windows.Forms.Keys.D3));
- this.miFavCUnset.Name = "miFavCUnset";
- this.miFavCUnset.Tag = "C";
- this.miFavCUnset.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miFavUnset_ItemClick);
- //
- // miFavDUnset
- //
- resources.ApplyResources(this.miFavDUnset, "miFavDUnset");
- this.miFavDUnset.CategoryGuid = new System.Guid("d7eec464-59c9-4f45-88aa-602e64c81cc0");
- this.miFavDUnset.Id = 81;
- this.miFavDUnset.ItemShortcut = new DevExpress.XtraBars.BarShortcut(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
- | System.Windows.Forms.Keys.D4));
- this.miFavDUnset.Name = "miFavDUnset";
- this.miFavDUnset.Tag = "D";
- this.miFavDUnset.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miFavUnset_ItemClick);
- //
- // miFavEUnset
- //
- resources.ApplyResources(this.miFavEUnset, "miFavEUnset");
- this.miFavEUnset.CategoryGuid = new System.Guid("d7eec464-59c9-4f45-88aa-602e64c81cc0");
- this.miFavEUnset.Id = 82;
- this.miFavEUnset.ItemShortcut = new DevExpress.XtraBars.BarShortcut(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
- | System.Windows.Forms.Keys.D5));
- this.miFavEUnset.Name = "miFavEUnset";
- this.miFavEUnset.Tag = "E";
- this.miFavEUnset.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miFavUnset_ItemClick);
- //
// miLockOn
//
resources.ApplyResources(this.miLockOn, "miLockOn");
@@ -2020,16 +1936,17 @@
new DevExpress.XtraBars.LinkPersistInfo(this.miAddChannel),
new DevExpress.XtraBars.LinkPersistInfo(this.miRemove),
new DevExpress.XtraBars.LinkPersistInfo(this.miRenameChannel),
- new DevExpress.XtraBars.LinkPersistInfo(this.miSort),
- new DevExpress.XtraBars.LinkPersistInfo(this.miRenum),
- new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.mnuFavSet, "", true, true, true, 0, null, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph),
+ new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.mnuFavSet, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph),
new DevExpress.XtraBars.LinkPersistInfo(this.mnuFavUnset),
- new DevExpress.XtraBars.LinkPersistInfo(this.miLockOn, true),
+ new DevExpress.XtraBars.LinkPersistInfo(this.miLockOn),
new DevExpress.XtraBars.LinkPersistInfo(this.miLockOff),
- new DevExpress.XtraBars.LinkPersistInfo(this.miSkipOn, true),
+ new DevExpress.XtraBars.LinkPersistInfo(this.miSkipOn),
new DevExpress.XtraBars.LinkPersistInfo(this.miSkipOff),
- new DevExpress.XtraBars.LinkPersistInfo(this.miHideOn, true),
- new DevExpress.XtraBars.LinkPersistInfo(this.miHideOff)});
+ new DevExpress.XtraBars.LinkPersistInfo(this.miHideOn),
+ new DevExpress.XtraBars.LinkPersistInfo(this.miHideOff),
+ new DevExpress.XtraBars.LinkPersistInfo(this.miRenum, true),
+ new DevExpress.XtraBars.LinkPersistInfo(this.miSort),
+ new DevExpress.XtraBars.LinkPersistInfo(this.miCopyCsv)});
this.popupContext.Manager = this.barManager1;
this.popupContext.Name = "popupContext";
//
@@ -2077,18 +1994,6 @@
this.popupFavList.Name = "popupFavList";
this.popupFavList.ShowCaption = true;
//
- // colOutDeleted
- //
- resources.ApplyResources(this.colOutDeleted, "colOutDeleted");
- this.colOutDeleted.FieldName = "IsDeleted";
- this.colOutDeleted.Name = "colOutDeleted";
- //
- // colDeleted
- //
- resources.ApplyResources(this.colDeleted, "colDeleted");
- this.colDeleted.FieldName = "IsDeleted";
- this.colDeleted.Name = "colDeleted";
- //
// MainForm
//
this.AllowDrop = true;
@@ -2297,16 +2202,6 @@
private DevExpress.XtraBars.BarButtonItem miGotoLeftList;
private DevExpress.XtraBars.BarButtonItem miRightListFilter;
private DevExpress.XtraBars.BarButtonItem miGotoRightList;
- private DevExpress.XtraBars.BarButtonItem miFavASet;
- private DevExpress.XtraBars.BarButtonItem miFavBSet;
- private DevExpress.XtraBars.BarButtonItem miFavCSet;
- private DevExpress.XtraBars.BarButtonItem miFavDSet;
- private DevExpress.XtraBars.BarButtonItem miFavESet;
- private DevExpress.XtraBars.BarButtonItem miFavAUnset;
- private DevExpress.XtraBars.BarButtonItem miFavBUnset;
- private DevExpress.XtraBars.BarButtonItem miFavCUnset;
- private DevExpress.XtraBars.BarButtonItem miFavDUnset;
- private DevExpress.XtraBars.BarButtonItem miFavEUnset;
private DevExpress.XtraBars.PopupMenu popupInputSource;
private DevExpress.XtraBars.PopupMenu popupFavList;
private DevExpress.XtraBars.BarButtonItem miSelectFavList0;
@@ -2333,6 +2228,10 @@
private DevExpress.XtraBars.BarButtonItem miUtf8Charset;
private DevExpress.XtraGrid.Columns.GridColumn colOutDeleted;
private DevExpress.XtraGrid.Columns.GridColumn colDeleted;
+ private DevExpress.XtraEditors.SimpleButton btnToggleFavH;
+ private DevExpress.XtraEditors.SimpleButton btnToggleFavG;
+ private DevExpress.XtraEditors.SimpleButton btnToggleFavF;
+ private DevExpress.XtraBars.BarButtonItem miCopyCsv;
}
}
diff --git a/source/ChanSort/MainForm.cs b/source/ChanSort/MainForm.cs
index a1cc0ff..864f14b 100644
--- a/source/ChanSort/MainForm.cs
+++ b/source/ChanSort/MainForm.cs
@@ -21,6 +21,7 @@ using DevExpress.Utils;
using DevExpress.XtraBars;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
+using DevExpress.XtraEditors.Repository;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Views.Base;
@@ -412,31 +413,35 @@ namespace ChanSort.Ui
private void UpdateFavoritesEditor(Favorites favorites)
{
- var miSet = new[] {this.miFavASet, this.miFavBSet, this.miFavCSet, this.miFavDSet, this.miFavESet};
- var miUnset = new[] { this.miFavAUnset, this.miFavBUnset, this.miFavCUnset, this.miFavDUnset, this.miFavEUnset };
+ foreach(var link in this.mnuFavSet.ItemLinks.ToList())
+ link.Item?.Dispose();
+ foreach (var link in this.mnuFavUnset.ItemLinks.ToList())
+ link.Item?.Dispose();
this.repositoryItemCheckedComboBoxEdit1.Items.Clear();
this.repositoryItemCheckedComboBoxEdit2.Items.Clear();
- byte mask = 0x01;
var regex = "[";
var favCount = 0;
- for (var bit = 0; bit < 5; bit++, mask <<= 1)
+ for (var favMask = (uint)favorites; (favMask & 1) != 0; favMask >>= 1)
{
- if (((int) favorites & mask) != 0)
- {
- var c = (char) ('A' + bit);
- this.repositoryItemCheckedComboBoxEdit1.Items.Add(c);
- this.repositoryItemCheckedComboBoxEdit2.Items.Add(c);
- miSet[bit].Visibility = BarItemVisibility.Always;
- miUnset[bit].Visibility = BarItemVisibility.Always;
- regex += c;
- ++favCount;
- }
- else
- {
- miSet[bit].Visibility = BarItemVisibility.Never;
- miUnset[bit].Visibility = BarItemVisibility.Never;
- }
+ var c = (char) ('A' + favCount);
+ ++favCount;
+ this.repositoryItemCheckedComboBoxEdit1.Items.Add(c);
+ this.repositoryItemCheckedComboBoxEdit2.Items.Add(c);
+
+ var miSet = new BarButtonItem(this.barManager1, "&" + c);
+ miSet.Tag = c.ToString();
+ miSet.ItemShortcut = new BarShortcut(Keys.Control | (Keys)((int)Keys.D0 + favCount%10));
+ miSet.ItemClick += this.miFavSet_ItemClick;
+ this.mnuFavSet.AddItem(miSet);
+
+ var miUnset = new BarButtonItem(this.barManager1, "&" + c);
+ miUnset.Tag = c.ToString();
+ miUnset.ItemShortcut = new BarShortcut(Keys.Control | Keys.Shift | (Keys)((int)Keys.D0 + favCount%10));
+ miUnset.ItemClick += this.miFavUnset_ItemClick;
+ this.mnuFavUnset.AddItem(miUnset);
+
+ regex += c;
}
regex += "]*";
this.repositoryItemCheckedComboBoxEdit1.Mask.EditMask = regex;
@@ -1511,14 +1516,14 @@ namespace ChanSort.Ui
private void SetFavorite(string fav, bool set)
{
if (string.IsNullOrEmpty(fav)) return;
- var ch = char.ToUpper(fav[0]);
- if (ch < 'A' || ch > 'E' || this.subListIndex == ch - 'A' + 1) return;
+ int idx = char.ToUpper(fav[0]) - 'A';
+ if (idx < 0 || idx >= this.mnuFavSet.ItemLinks.Count || this.subListIndex == idx + 1) return;
var list = this.GetSelectedChannels(this.lastFocusedGrid);
if (list.Count == 0) return;
this.gviewRight.BeginDataUpdate();
this.gviewLeft.BeginDataUpdate();
- this.Editor.SetFavorites(list, (Favorites) (1 << (ch - 'A')), set);
+ this.Editor.SetFavorites(list, (Favorites) (1 << idx), set);
this.gviewRight.EndDataUpdate();
this.gviewLeft.EndDataUpdate();
}
@@ -1602,6 +1607,9 @@ namespace ChanSort.Ui
this.btnToggleFavC.Enabled = mayEdit && (this.DataRoot.SupportedFavorites & Favorites.C) != 0 && this.subListIndex != 3;
this.btnToggleFavD.Enabled = mayEdit && (this.DataRoot.SupportedFavorites & Favorites.D) != 0 && this.subListIndex != 4;
this.btnToggleFavE.Enabled = mayEdit && (this.DataRoot.SupportedFavorites & Favorites.E) != 0 && this.subListIndex != 5;
+ this.btnToggleFavF.Enabled = mayEdit && (this.DataRoot.SupportedFavorites & Favorites.F) != 0 && this.subListIndex != 6;
+ this.btnToggleFavG.Enabled = mayEdit && (this.DataRoot.SupportedFavorites & Favorites.G) != 0 && this.subListIndex != 7;
+ this.btnToggleFavH.Enabled = mayEdit && (this.DataRoot.SupportedFavorites & Favorites.H) != 0 && this.subListIndex != 8;
this.btnToggleLock.Enabled = mayEdit;
this.miReload.Enabled = fileLoaded;
@@ -1614,7 +1622,7 @@ namespace ChanSort.Ui
this.miExcelExport.Enabled = fileLoaded;
this.miPrint.Enabled = fileLoaded;
- this.miAddChannel.Enabled = isRight;
+ this.miAddChannel.Enabled = fileLoaded && isRight;
var visRight = isRight ? BarItemVisibility.Always : BarItemVisibility.Never;
var visLeft = isRight ? BarItemVisibility.Never : BarItemVisibility.Always;
@@ -1853,6 +1861,24 @@ namespace ChanSort.Ui
#endregion
+ #region GetFavString()
+ private string GetFavString(Favorites fav)
+ {
+ if (fav == 0)
+ return string.Empty;
+
+ var sb = new StringBuilder();
+ int i = 0;
+ for (var mask = (int)fav; mask != 0; mask >>= 1)
+ {
+ if ((mask & 1) != 0)
+ sb.Append((char)('A' + i));
+ ++i;
+ }
+ return sb.ToString();
+ }
+ #endregion
+
// UI events
#region MainForm_Load
@@ -2185,9 +2211,8 @@ namespace ChanSort.Ui
{
if (e.Column == this.colOutFav)
{
- if (!(e.Value is Favorites)) return;
- if ((Favorites) e.Value == 0)
- e.DisplayText = string.Empty;
+ if (e.Value is Favorites fav)
+ e.DisplayText = GetFavString(fav);
}
}
@@ -2337,9 +2362,8 @@ namespace ChanSort.Ui
}
else if (e.Column == this.colFavorites)
{
- if (!(e.Value is Favorites)) return;
- if ((Favorites) e.Value == 0)
- e.DisplayText = string.Empty;
+ if (e.Value is Favorites fav)
+ e.DisplayText = GetFavString(fav);
}
}
@@ -2787,6 +2811,38 @@ namespace ChanSort.Ui
#region Edit menu
+ private void miCopyCsv_ItemClick(object sender, ItemClickEventArgs e)
+ {
+ var gview = this.gridRight.ContainsFocus ? this.gviewRight : this.gviewLeft;
+ var cols = gview.VisibleColumns;
+
+ var sb = new StringBuilder();
+ foreach (GridColumn col in cols)
+ sb.Append(col.Caption).Append('\t');
+ sb[sb.Length - 1] = '\n';
+ for (int i = 0, c = gview.RowCount; i < c; i++)
+ {
+ foreach (GridColumn col in cols)
+ {
+ if (col.ColumnType == typeof(bool))
+ {
+ var val = gview.GetRowCellValue(i, col);
+ if (val is bool b && b)
+ sb.Append('x');
+ sb.Append('\t');
+ }
+ else
+ {
+ var val = gview.GetRowCellDisplayText(i, col);
+ sb.Append(val).Append('\t');
+ }
+ }
+ sb[sb.Length - 1] = '\n';
+ }
+
+ Clipboard.SetText(sb.ToString(), TextDataFormat.Text);
+ }
+
private void miAddChannel_ItemClick(object sender, ItemClickEventArgs e)
{
this.TryExecute(this.AddChannels);
@@ -3210,5 +3266,6 @@ namespace ChanSort.Ui
}
#endregion
+
}
}
\ No newline at end of file
diff --git a/source/ChanSort/MainForm.cs.resx b/source/ChanSort/MainForm.cs.resx
index ee02bb9..065873a 100644
--- a/source/ChanSort/MainForm.cs.resx
+++ b/source/ChanSort/MainForm.cs.resx
@@ -1,4 +1,4 @@
-
+