diff -ru --strip-trailing-cr BitcasaDLL-20140107/bitcasaViewer/Form1.cs BitcasaDLL-20140109/bitcasaViewer/Form1.cs
--- BitcasaDLL-20140107/bitcasaViewer/Form1.cs	2014-01-07 05:48:40.000000000 +0900
+++ BitcasaDLL-20140109/bitcasaViewer/Form1.cs	2014-01-09 02:45:04.000000000 +0900
@@ -38,9 +38,9 @@
             listView1.Items.Clear();
             if (dotfiles)
             {
-                string[] selfitem = { ".", "", "", "", "", "" };
+                string[] selfitem = { ".", "", "", "", "", "", "" };
                 listView1.Items.Add(new ListViewItem(selfitem));
-                string[] upitem = { "..", "", "", "", "", "" };
+                string[] upitem = { "..", "", "", "", "", "", "" };
                 listView1.Items.Add(new ListViewItem(upitem));
             }
             foreach (BitcasaFileInfo item in items)
@@ -51,7 +51,8 @@
                                        (item.category == "folders")? "<dir>": item.size.ToString(),
                                        item.fullpath,
                                        item.path,
-                                       item.id
+                                       item.id,
+                                       ""
                                    };
                 listView1.Items.Add(new ListViewItem(itemstr));
             }
@@ -398,7 +399,8 @@
             listView1.Enabled = true;
             treeView1.Enabled = true;
             scanAllToolStripMenuItem.Text = "Find...";
-            overlyToolStripMenuItem.Enabled = true;
+            biToolStripMenuItem.Enabled = true;
+            otherToolStripMenuItem.Enabled = true;
             Update();
             loadall_flag = true;
             reloadview();
@@ -562,6 +564,60 @@
             }
         }
 
+        private void listViewToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            if (ongoing)
+            {
+                MessageBox.Show("now processing...");
+                return;
+            }
+            string left;
+            using (var localtree = new FolderBrowserDialog())
+            {
+                localtree.Description = "Select local root folder";
+                if (localtree.ShowDialog() != DialogResult.OK) return;
+                left = localtree.SelectedPath+"\\";
+            }
+
+            SortedDictionary<string, ListViewItem> list = new SortedDictionary<string, ListViewItem>();
+            foreach (ListViewItem item in listView1.Items)
+            {
+                if ((item.SubItems[0].Text == ".") || (item.SubItems[0].Text == "..")) continue;
+                list[item.SubItems[0].Text] = item;
+            }
+
+            //left(local)
+            foreach (ListLocalBitcasa akey in ListLocalBitcasa.ListDir(left))
+            {
+                string key = akey.name;
+                if (key.IndexOf(left) == 0)
+                {
+                    key = key.Substring(left.Length);
+                }
+                var ind = key.LastIndexOf('\\');
+                key = (ind < 0)? key: key.Substring(ind+1);
+
+                ListViewItem item;
+                if (list.TryGetValue(key, out item))
+                {
+                    item.SubItems[6].Text = "*";
+                }
+                else
+                {
+                    string[] itemstr ={
+                                       key,
+                                       "",
+                                       "",
+                                       "",
+                                       "",
+                                       "",
+                                       "!"+akey.name
+                                   };
+                    listView1.Items.Add(new ListViewItem(itemstr));
+                }
+            }
+        }
+
         private void profileToolStripMenuItem_Click(object sender, EventArgs e)
         {
             if (ongoing)
@@ -586,5 +642,138 @@
             }
         }
 
+        private void listView1_KeyDown(object sender, KeyEventArgs e)
+        {
+            if ((e.KeyCode == Keys.A) && e.Control)
+            {
+                foreach (ListViewItem item in listView1.Items)
+                {
+                    if ((item.SubItems[0].Text == ".") || (item.SubItems[0].Text == "..")) continue;
+                    item.Selected = true;
+                }
+            }
+            if ((e.KeyCode == Keys.C) && e.Control)
+            {
+                string str = "";
+                foreach (ListViewItem item in listView1.SelectedItems)
+                {
+                    str += item.SubItems[0].Text + "\n";
+                }
+                Clipboard.SetDataObject(str, true);
+            }
+        }
+
+        private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
+        {
+        }
+
+        private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
+        {
+            // 選択されているアイテムの描画
+            if ((e.ItemState & ListViewItemStates.Selected)
+                            == ListViewItemStates.Selected)
+            {
+                e.Graphics.FillRectangle(
+                                SystemBrushes.Highlight,
+                                e.Bounds);
+                e.Graphics.DrawString(
+                                e.SubItem.Text,
+                                e.Item.Font,
+                                SystemBrushes.HighlightText,
+                                e.Bounds.X + 4,
+                                e.Bounds.Y + 2
+                                );
+                return;
+            }
+
+            // mark line
+            if ((e.Item.SubItems.Count > 6) && (e.Item.SubItems[6].Text == "*"))
+            {
+                e.Graphics.FillRectangle(
+                                Brushes.LightYellow,
+                                e.Bounds);
+                e.Graphics.DrawString(
+                                e.SubItem.Text,
+                                e.Item.Font,
+                                SystemBrushes.WindowText,
+                                e.Bounds.X + 4,
+                                e.Bounds.Y + 2
+                                );
+                return;
+            }
+            // mark line
+            if ((e.Item.SubItems.Count > 6) && (e.Item.SubItems[6].Text.StartsWith("!")))
+            {
+                e.Graphics.FillRectangle(
+                                Brushes.Salmon,
+                                e.Bounds);
+                e.Graphics.DrawString(
+                                e.SubItem.Text,
+                                e.Item.Font,
+                                SystemBrushes.WindowText,
+                                e.Bounds.X + 4,
+                                e.Bounds.Y + 2
+                                );
+                return;
+            }
+
+            // default
+            {
+                e.Graphics.FillRectangle(
+                                SystemBrushes.Window,
+                                e.Bounds);
+                e.Graphics.DrawString(
+                                e.SubItem.Text,
+                                e.Item.Font,
+                                SystemBrushes.WindowText,
+                                e.Bounds.X + 4,
+                                e.Bounds.Y + 2
+                                );
+                return;
+            }            
+        }
+
+        private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
+        {
+            e.DrawDefault = true;
+        }
+
+        // http://dobon.net/vb/dotnet/control/lvitemsort.html
+        public class ListViewItemComparer : IComparer
+        {
+            private int _column;
+
+            /// <summary>
+            /// ListViewItemComparerクラスのコンストラクタ
+            /// </summary>
+            /// <param name="col">並び替える列番号</param>
+            public ListViewItemComparer(int col)
+            {
+                _column = col;
+            }
+
+            //xがyより小さいときはマイナスの数、大きいときはプラスの数、
+            //同じときは0を返す
+            public int Compare(object x, object y)
+            {
+                //ListViewItemの取得
+                ListViewItem itemx = (ListViewItem)x;
+                ListViewItem itemy = (ListViewItem)y;
+
+                //xとyを文字列として比較する
+                return string.Compare(itemx.SubItems[_column].Text,
+                    itemy.SubItems[_column].Text);
+            }
+        }
+
+        private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
+        {
+            //ListViewItemSorterを指定する
+            listView1.ListViewItemSorter =
+                new ListViewItemComparer(e.Column);
+
+        }
+
+
     }
 }
diff -ru --strip-trailing-cr BitcasaDLL-20140107/bitcasaViewer/Form1.Designer.cs BitcasaDLL-20140109/bitcasaViewer/Form1.Designer.cs
--- BitcasaDLL-20140107/bitcasaViewer/Form1.Designer.cs	2014-01-05 23:42:28.000000000 +0900
+++ BitcasaDLL-20140109/bitcasaViewer/Form1.Designer.cs	2014-01-09 02:32:40.000000000 +0900
@@ -36,6 +36,8 @@
             this.overlyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.biToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.otherToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.listViewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.profileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
             this.downloadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.uploadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -63,11 +65,11 @@
             this.fullpath = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
             this.path = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
             this.id = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+            this.mark = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
             this.statusStrip2 = new System.Windows.Forms.StatusStrip();
             this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
             this.listBox1 = new System.Windows.Forms.ListBox();
             this.checkBox_reload = new System.Windows.Forms.CheckBox();
-            this.profileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.menuStrip1.SuspendLayout();
             this.contextMenuStrip1.SuspendLayout();
             this.panel1.SuspendLayout();
@@ -124,26 +126,43 @@
             // 
             this.overlyToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
             this.biToolStripMenuItem,
-            this.otherToolStripMenuItem});
-            this.overlyToolStripMenuItem.Enabled = false;
+            this.otherToolStripMenuItem,
+            this.listViewToolStripMenuItem});
             this.overlyToolStripMenuItem.Name = "overlyToolStripMenuItem";
             this.overlyToolStripMenuItem.Size = new System.Drawing.Size(58, 22);
             this.overlyToolStripMenuItem.Text = "Overly";
             // 
             // biToolStripMenuItem
             // 
+            this.biToolStripMenuItem.Enabled = false;
             this.biToolStripMenuItem.Name = "biToolStripMenuItem";
-            this.biToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+            this.biToolStripMenuItem.Size = new System.Drawing.Size(141, 22);
             this.biToolStripMenuItem.Text = "Bitcasa";
             this.biToolStripMenuItem.Click += new System.EventHandler(this.biToolStripMenuItem_Click);
             // 
             // otherToolStripMenuItem
             // 
+            this.otherToolStripMenuItem.Enabled = false;
             this.otherToolStripMenuItem.Name = "otherToolStripMenuItem";
-            this.otherToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+            this.otherToolStripMenuItem.Size = new System.Drawing.Size(141, 22);
             this.otherToolStripMenuItem.Text = "Other ...";
             this.otherToolStripMenuItem.Click += new System.EventHandler(this.otherToolStripMenuItem_Click);
             // 
+            // listViewToolStripMenuItem
+            // 
+            this.listViewToolStripMenuItem.Name = "listViewToolStripMenuItem";
+            this.listViewToolStripMenuItem.Size = new System.Drawing.Size(141, 22);
+            this.listViewToolStripMenuItem.Text = "ListView ...";
+            this.listViewToolStripMenuItem.Click += new System.EventHandler(this.listViewToolStripMenuItem_Click);
+            // 
+            // profileToolStripMenuItem
+            // 
+            this.profileToolStripMenuItem.Enabled = false;
+            this.profileToolStripMenuItem.Name = "profileToolStripMenuItem";
+            this.profileToolStripMenuItem.Size = new System.Drawing.Size(56, 22);
+            this.profileToolStripMenuItem.Text = "Profile";
+            this.profileToolStripMenuItem.Click += new System.EventHandler(this.profileToolStripMenuItem_Click);
+            // 
             // contextMenuStrip1
             // 
             this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -313,18 +332,25 @@
             this.size,
             this.fullpath,
             this.path,
-            this.id});
+            this.id,
+            this.mark});
             this.listView1.ContextMenuStrip = this.contextMenuStrip1;
             this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
             this.listView1.FullRowSelect = true;
             this.listView1.Location = new System.Drawing.Point(0, 0);
             this.listView1.Name = "listView1";
+            this.listView1.OwnerDraw = true;
             this.listView1.Size = new System.Drawing.Size(626, 341);
             this.listView1.TabIndex = 4;
             this.listView1.UseCompatibleStateImageBehavior = false;
             this.listView1.View = System.Windows.Forms.View.Details;
+            this.listView1.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView1_ColumnClick);
+            this.listView1.DrawColumnHeader += new System.Windows.Forms.DrawListViewColumnHeaderEventHandler(this.listView1_DrawColumnHeader);
+            this.listView1.DrawItem += new System.Windows.Forms.DrawListViewItemEventHandler(this.listView1_DrawItem);
+            this.listView1.DrawSubItem += new System.Windows.Forms.DrawListViewSubItemEventHandler(this.listView1_DrawSubItem);
             this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged);
             this.listView1.DoubleClick += new System.EventHandler(this.listView1_DoubleClick);
+            this.listView1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listView1_KeyDown);
             // 
             // name
             // 
@@ -356,6 +382,10 @@
             this.id.Text = "file id(encoded)";
             this.id.Width = 87;
             // 
+            // mark
+            // 
+            this.mark.Text = "mark";
+            // 
             // statusStrip2
             // 
             this.statusStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -394,14 +424,6 @@
             this.checkBox_reload.Text = "AutoReload";
             this.checkBox_reload.UseVisualStyleBackColor = true;
             // 
-            // profileToolStripMenuItem
-            // 
-            this.profileToolStripMenuItem.Enabled = false;
-            this.profileToolStripMenuItem.Name = "profileToolStripMenuItem";
-            this.profileToolStripMenuItem.Size = new System.Drawing.Size(56, 22);
-            this.profileToolStripMenuItem.Text = "Profile";
-            this.profileToolStripMenuItem.Click += new System.EventHandler(this.profileToolStripMenuItem_Click);
-            // 
             // Form1
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@@ -477,6 +499,8 @@
         private System.Windows.Forms.ToolStripMenuItem biToolStripMenuItem;
         private System.Windows.Forms.ToolStripMenuItem otherToolStripMenuItem;
         private System.Windows.Forms.ToolStripMenuItem profileToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem listViewToolStripMenuItem;
+        private System.Windows.Forms.ColumnHeader mark;
     }
 }
 
