Revision 025046f1

b/trunk/Pithos.Client.WPF/FileProperties/FilePropertiesView.xaml
36 36
                        <TextBlock Text="Container: " />
37 37
                        <TextBlock x:Name="Container" Text="Container" />
38 38
                    </StackPanel>
39
                    <StackPanel Orientation="Horizontal" Grid.Row="1">
40
                        <TextBlock Text="Synch Status: " />
41
                        <TextBlock x:Name="SynchStatus" Text="Normal" />
42
                    </StackPanel>
43

  
39 44
                </StackPanel>
40 45
                <TextBlock x:Name="ShortSize" Text="345 KB" FontWeight="Bold" FontSize="14" Grid.Column="2" HorizontalAlignment="Left" Margin="5"/>
41 46
            </Grid>
b/trunk/Pithos.Client.WPF/FileProperties/FilePropertiesViewModel.cs
52 52
using Caliburn.Micro;
53 53
using Pithos.Client.WPF.FileProperties;
54 54
using Pithos.Client.WPF.Properties;
55
using Pithos.Core;
55 56
using Pithos.Interfaces;
56 57
using Pithos.Network;
57 58

  
......
257 258
            }
258 259
        }
259 260

  
261
        private string _synchStatus;
262
        public string SynchStatus
263
        {
264
            get { return _synchStatus; }
265
            set
266
            {
267
                _synchStatus = value;
268
                NotifyOfPropertyChange(()=>SynchStatus);
269
            }
270
        }
271

  
260 272
        public bool TagsChanged { get; private set; }
261 273
        public bool PermissionsChanged { get; private set; }
262 274

  
......
301 313
                }
302 314
                else
303 315
                    Execute.OnUIThread(() => PithosFile = t.Result);
304
            });                        
316
            });       
317
                 
305 318
        }
306 319

  
307 320
        private void ShowError(AggregateException exception)
......
368 381
                                                                       BitmapSizeOptions.FromEmptyOptions());
369 382
                    }
370 383
                }
384

  
385
                var status=Shell.GetFileStatus(LocalFileName);
386
                SynchStatus = Enum.GetName(typeof (FileStatus), status);
387

  
388

  
371 389
                NotifyOfPropertyChange(()=>PithosFile);
372 390
                IsBusy = false;
373 391
            }
b/trunk/Pithos.Client.WPF/Pithos.Client.WPF.csproj
400 400
      <Generator>ResXFileCodeGenerator</Generator>
401 401
      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
402 402
    </EmbeddedResource>
403
    <None Include="app.config" />
403
    <None Include="app.config">
404
      <SubType>Designer</SubType>
405
    </None>
404 406
    <None Include="packages.config" />
405 407
    <None Include="pithos.snk" />
406 408
    <None Include="Properties\Settings.settings">
......
472 474
    <Resource Include="Images\SmallLogo.png" />
473 475
  </ItemGroup>
474 476
  <ItemGroup>
475
    <Resource Include="Images\logo.png" />
477
    <SplashScreen Include="Images\logo.png" />
476 478
  </ItemGroup>
477 479
  <ItemGroup>
478 480
    <Resource Include="Images\Folder.ico" />
b/trunk/Pithos.Client.WPF/Preferences/ProxyAccountView.xaml
1 1
<Window x:Class="Pithos.Client.WPF.Preferences.ProxyAccountView"
2 2
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 3
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
        xmlns:Converters="clr-namespace:Pithos.Client.WPF.Converters" Title="ProxyAccountView" Height="300" Width="400">
4
        xmlns:Converters="clr-namespace:Pithos.Client.WPF.Converters" Title="ProxyAccountView" Height="300" Width="400" Topmost="True">
5 5
    <Window.Resources>
6 6
        <ResourceDictionary>
7 7
            <ResourceDictionary.MergedDictionaries>
b/trunk/Pithos.Client.WPF/Shell/ShellView.xaml
4 4
        xmlns:tb="clr-namespace:Hardcodet.Wpf.TaskbarNotification;assembly=Hardcodet.Wpf.TaskbarNotification" 
5 5
        xmlns:cal="http://www.caliburnproject.org"
6 6
        x:Name="TheView" WindowStartupLocation="CenterScreen" WindowStyle="None"
7
        Width="700" Height="200" SizeToContent="Width">
7
        Visibility="Collapsed"
8
        Width="700" Height="200" SizeToContent="Width" WindowState="Minimized">
8 9

  
10
<!--
9 11
    <Window.Background>
10 12
        <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
11 13
            <GradientStop Color="#4085A5" Offset="0"/>
12 14
            <GradientStop Color="#D7E8F0" Offset="1"/>
13 15
        </LinearGradientBrush>
14 16
    </Window.Background>    
17
-->
15 18
    <Window.Resources>
16 19
        <ResourceDictionary>
17 20
            <ResourceDictionary.MergedDictionaries>
......
111 114
                </ContextMenu>
112 115
            </tb:TaskbarIcon.ContextMenu>
113 116
        </tb:TaskbarIcon>
117
<!--
114 118
        <Image Margin="0,0,10,5" Source="/Pithos.Client.WPF;component/Images/logo.png" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Stretch="None"/>
119
-->
115 120
    </Grid>
116 121
</Window>
b/trunk/Pithos.Client.WPF/Shell/ShellViewModel.cs
743 743
		}
744 744

  
745 745

  
746
        //SMELL: Doing so much work for notifications in the shell is wrong
747
        //The notifications should be moved to their own view/viewmodel pair
748
        //and different templates should be used for different message types
749
        //This will also allow the addition of extra functionality, eg. actions
750
        //to perform when clicking on a balloon
746 751
		public void Handle(Notification notification)
747 752
		{
748 753
			if (!Settings.ShowDesktopNotifications)
......
806 811
	        return matchingFolders.Any();
807 812
	    }
808 813

  
814
	    public FileStatus GetFileStatus(string localFileName)
815
	    {
816
            if (String.IsNullOrWhiteSpace(localFileName))
817
                throw new ArgumentNullException("localFileName");
818
            Contract.EndContractBlock();
819
            
820
	        var statusKeeper = IoC.Get<IStatusKeeper>();
821
	        var status=statusKeeper.GetFileStatus(localFileName);
822
	        return status;
823
	    }
809 824
	}
810 825
}
b/trunk/Pithos.Client.WPF/app.config
126 126
        <acceptOnMatch value="false" />
127 127
      </filter>
128 128
      <filter type="log4net.Filter.LoggerMatchFilter">
129
        <loggerToMatch value="NHibernate.SQL" />
130
        <acceptOnMatch value="true" />
131
      </filter>
132
      <filter type="log4net.Filter.LoggerMatchFilter">
129 133
        <loggerToMatch value="NHibernate" />
130 134
        <acceptOnMatch value="false" />
131 135
      </filter>
b/trunk/Pithos.Core/Agents/NetworkAgent.cs
448 448
        public async Task PollRemoteFiles(DateTime? since = null,bool repeat=true)
449 449
        {
450 450

  
451
            _tcs = new TaskCompletionSource<bool>();
452
            var wait = TaskEx.Delay(TimeSpan.FromSeconds(Settings.PollingInterval), _agent.CancellationToken);
453
            var signaledTask=await TaskEx.WhenAny(_tcs.Task,wait);
454
            //If polling is signalled by SynchNow, ignore the since tag
455
            if (signaledTask is Task<bool>)
456
                since = null;
457 451

  
458 452
            using (log4net.ThreadContext.Stacks["Retrieve Remote"].Push("All accounts"))
459 453
            {
460

  
454
                //If this poll fails, we will retry with the same since value
455
                var nextSince = since;
461 456
                try
462 457
                {
463 458
                    //Next time we will check for all changes since the current check minus 1 second
464 459
                    //This is done to ensure there are no discrepancies due to clock differences
465
                    DateTime nextSince = DateTime.Now.AddSeconds(-1);
460
                    DateTime current = DateTime.Now.AddSeconds(-1);
466 461

  
467 462
                    var tasks = from accountInfo in _accounts
468 463
                                select ProcessAccountFiles(accountInfo, since);
469 464

  
470 465
                    await TaskEx.WhenAll(tasks.ToList());
471

  
466
                                        
472 467
                    _firstPoll = false;
468
                    //Reschedule the poll with the current timestamp as a "since" value
473 469
                    if (repeat)
474
                        PollRemoteFiles(nextSince);
470
                        nextSince = current;
471
                    else
472
                        return;
475 473
                }
476 474
                catch (Exception ex)
477 475
                {
478 476
                    Log.ErrorFormat("Error while processing accounts\r\n{0}",ex);
479
                    //In case of failure retry with the same parameter
480
                    PollRemoteFiles(since);
477
                    //In case of failure retry with the same "since" value
481 478
                }
482
                
479

  
480
                //Wait for the polling interval to pass or the Manual flat to be toggled
481
                nextSince = await WaitForScheduledOrManualPoll(nextSince);
482

  
483
                PollRemoteFiles(nextSince);
483 484

  
484 485
            }
485 486
        }
486 487

  
488
        private async Task<DateTime?> WaitForScheduledOrManualPoll(DateTime? since)
489
        {            
490
            _tcs = new TaskCompletionSource<bool>();
491
            var wait = TaskEx.Delay(TimeSpan.FromSeconds(Settings.PollingInterval), _agent.CancellationToken);
492
            var signaledTask = await TaskEx.WhenAny(_tcs.Task, wait);
493
            //If polling is signalled by SynchNow, ignore the since tag
494
            if (signaledTask is Task<bool>)
495
                return null;
496
            return since;
497
        }
498

  
487 499
        public async Task ProcessAccountFiles(AccountInfo accountInfo,DateTime? since=null)
488 500
        {   
489 501
            if (accountInfo==null)
......
632 644
            //in two steps
633 645
            //NOTE: DON'T return files that are already in conflict. The first poll would mark them as 
634 646
            //"In Conflict" but subsequent polls would delete them
647
/*            var t=FileState.Find(new Guid("{cd664c9a-5f17-47c9-b27f-3bcbcb0595ff}"));
648

  
649
            var d0 = FileState.Queryable
650
                .Where(state => 
651
                            state.FilePath.StartsWith(accountInfo.AccountPath)).ToList();
652
            
653
            var d1 = FileState.Queryable
654
                .Where(state => state.Modified <= pollTime).ToList();
655
            var d2= FileState.Queryable
656
                .Where(state => state.Modified <= pollTime
657
                            &&
658
                            state.FilePath.StartsWith(accountInfo.AccountPath)).ToList();*/
659

  
660
            var deleteCandidates = FileState.Queryable
661
                .Where(state => state.Modified <= pollTime
662
                            &&
663
                            state.FilePath.StartsWith(accountInfo.AccountPath)
664
                            && state.FileStatus != FileStatus.Conflict).ToList();
665
/*
635 666
            var deleteCandidates = (from state in FileState.Queryable
636 667
                                   where 
637 668
                                        state.Modified <= pollTime 
638 669
                                        && state.FilePath.StartsWith(accountInfo.AccountPath)
639 670
                                        && state.FileStatus != FileStatus.Conflict
640 671
                                   select state).ToList();
672
*/
641 673

  
642 674
            var filesToDelete = (from deleteCandidate in deleteCandidates 
643 675
                         let localFile = FileInfoExtensions.FromPath(deleteCandidate.FilePath) 
b/trunk/Pithos.Core/Agents/StatusAgent.cs
43 43
                ActiveRecordStarter.CreateSchema();
44 44

  
45 45
            CreateTrigger();
46
            
46 47
        }
47 48

  
48 49
        private void CreateTrigger()
......
614 615
                var command = new SQLiteCommand("select FileStatus from FileState where FilePath=:path  COLLATE NOCASE", connection);
615 616
                command.Parameters.AddWithValue("path", path);
616 617
                
617
                var s = command.ExecuteScalar();
618
                return (FileStatus)Convert.ToInt32(s);
618
                var statusValue = command.ExecuteScalar();
619
                if (statusValue==null)
620
                    return FileStatus.Missing;
621
                return (FileStatus)Convert.ToInt32(statusValue);
619 622
            }
620 623
        }
621 624

  
b/trunk/Pithos.Setup.x64/Pithos.Setup.x64.vdproj
1911 1911
                                            }
1912 1912
                                        }
1913 1913
                                    }
1914
                                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_5004716641E24919B137F1EBC3425C49"
1915
                                    {
1916
                                    "Name" = "8:Deleted"
1917
                                    "Condition" = "8:"
1918
                                    "AlwaysCreate" = "11:FALSE"
1919
                                    "DeleteAtUninstall" = "11:FALSE"
1920
                                    "Transitive" = "11:FALSE"
1921
                                        "Keys"
1922
                                        {
1923
                                        }
1924
                                        "Values"
1925
                                        {
1926
                                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_6EA88C3929B240A5940D0651BAA1F2B8"
1927
                                            {
1928
                                            "Name" = "8:Pithos"
1929
                                            "Condition" = "8:"
1930
                                            "Transitive" = "11:FALSE"
1931
                                            "ValueTypes" = "3:1"
1932
                                            "Value" = "8:{11051AB4-D786-4248-BC6E-369F25EC74E4}"
1933
                                            }
1934
                                        }
1935
                                    }
1914 1936
                                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_5F1A26A61A6941F48D1A7500DAC510CA"
1915 1937
                                    {
1916 1938
                                    "Name" = "8:Unversioned"
......
2387 2409
                            }
2388 2410
                        }
2389 2411
                    }
2412
                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_93AA85194A7C4BC993A3F802F8698C10"
2413
                    {
2414
                    "Name" = "8:Pithos.ShellExtensions.Overlays.DeletedIconOverlay"
2415
                    "Condition" = "8:"
2416
                    "AlwaysCreate" = "11:FALSE"
2417
                    "DeleteAtUninstall" = "11:FALSE"
2418
                    "Transitive" = "11:FALSE"
2419
                        "Keys"
2420
                        {
2421
                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_D7EBDBE444D6447080D0E4548FB1594A"
2422
                            {
2423
                            "Name" = "8:CLSID"
2424
                            "Condition" = "8:"
2425
                            "AlwaysCreate" = "11:FALSE"
2426
                            "DeleteAtUninstall" = "11:FALSE"
2427
                            "Transitive" = "11:FALSE"
2428
                                "Keys"
2429
                                {
2430
                                }
2431
                                "Values"
2432
                                {
2433
                                    "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_644D37D72EC548A68375806875898F76"
2434
                                    {
2435
                                    "Name" = "8:"
2436
                                    "Condition" = "8:"
2437
                                    "Transitive" = "11:FALSE"
2438
                                    "ValueTypes" = "3:1"
2439
                                    "Value" = "8:{11051AB4-D786-4248-BC6E-369F25EC74E4}"
2440
                                    }
2441
                                }
2442
                            }
2443
                        }
2444
                        "Values"
2445
                        {
2446
                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_E1D994BA8DDF4F2398C79D10547A0F4B"
2447
                            {
2448
                            "Name" = "8:"
2449
                            "Condition" = "8:"
2450
                            "Transitive" = "11:FALSE"
2451
                            "ValueTypes" = "3:1"
2452
                            "Value" = "8:Pithos.ShellExtensions.Overlays.DeletedIconOverlay"
2453
                            }
2454
                        }
2455
                    }
2390 2456
                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_9704B86B3D7945719532C09F94835F03"
2391 2457
                    {
2392 2458
                    "Name" = "8:Pithos.ShellExtensions.Overlays.UnversionedIconOverlay"
......
3204 3270
                                    }
3205 3271
                                }
3206 3272
                            }
3273
                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_7BDD6C3DBD78419DA3C16F6DBC551F1C"
3274
                            {
3275
                            "Name" = "8:{11051AB4-D786-4248-BC6E-369F25EC74E4}"
3276
                            "Condition" = "8:"
3277
                            "AlwaysCreate" = "11:FALSE"
3278
                            "DeleteAtUninstall" = "11:FALSE"
3279
                            "Transitive" = "11:FALSE"
3280
                                "Keys"
3281
                                {
3282
                                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_056BA5B3933148D88E11459D5B0C83EE"
3283
                                    {
3284
                                    "Name" = "8:Implemented Categories"
3285
                                    "Condition" = "8:"
3286
                                    "AlwaysCreate" = "11:FALSE"
3287
                                    "DeleteAtUninstall" = "11:FALSE"
3288
                                    "Transitive" = "11:FALSE"
3289
                                        "Keys"
3290
                                        {
3291
                                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_CBAA1F96E33D4C3E883132C87C710B52"
3292
                                            {
3293
                                            "Name" = "8:{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}"
3294
                                            "Condition" = "8:"
3295
                                            "AlwaysCreate" = "11:FALSE"
3296
                                            "DeleteAtUninstall" = "11:FALSE"
3297
                                            "Transitive" = "11:FALSE"
3298
                                                "Keys"
3299
                                                {
3300
                                                }
3301
                                                "Values"
3302
                                                {
3303
                                                }
3304
                                            }
3305
                                        }
3306
                                        "Values"
3307
                                        {
3308
                                        }
3309
                                    }
3310
                                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_05C71F10F2E645F8B8448EC90CF7F540"
3311
                                    {
3312
                                    "Name" = "8:ProgId"
3313
                                    "Condition" = "8:"
3314
                                    "AlwaysCreate" = "11:FALSE"
3315
                                    "DeleteAtUninstall" = "11:FALSE"
3316
                                    "Transitive" = "11:FALSE"
3317
                                        "Keys"
3318
                                        {
3319
                                        }
3320
                                        "Values"
3321
                                        {
3322
                                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_7EEFD9EE0F2D4B688C5FBC98C5253524"
3323
                                            {
3324
                                            "Name" = "8:"
3325
                                            "Condition" = "8:"
3326
                                            "Transitive" = "11:FALSE"
3327
                                            "ValueTypes" = "3:1"
3328
                                            "Value" = "8:Pithos.ShellExtensions.Overlays.DeletedIconOverlay"
3329
                                            }
3330
                                        }
3331
                                    }
3332
                                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_97922C7E8A46448994C5855C4AF2BC35"
3333
                                    {
3334
                                    "Name" = "8:InprocServer32"
3335
                                    "Condition" = "8:"
3336
                                    "AlwaysCreate" = "11:FALSE"
3337
                                    "DeleteAtUninstall" = "11:FALSE"
3338
                                    "Transitive" = "11:FALSE"
3339
                                        "Keys"
3340
                                        {
3341
                                        }
3342
                                        "Values"
3343
                                        {
3344
                                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_004ACDE8A99B4AF0B0CE3E7B1B6EF3E6"
3345
                                            {
3346
                                            "Name" = "8:CodeBase"
3347
                                            "Condition" = "8:"
3348
                                            "Transitive" = "11:FALSE"
3349
                                            "ValueTypes" = "3:1"
3350
                                            "Value" = "8:[TARGETDIR]\\Pithos.ShellExtensions.dll"
3351
                                            }
3352
                                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_CC7C253FCA0A4DB4817983C966609C97"
3353
                                            {
3354
                                            "Name" = "8:Assembly"
3355
                                            "Condition" = "8:"
3356
                                            "Transitive" = "11:FALSE"
3357
                                            "ValueTypes" = "3:1"
3358
                                            "Value" = "8:Pithos.ShellExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2cc55badaa91f4de"
3359
                                            }
3360
                                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_D89C8DF5F19D4CC5AB6734B9CB3B7D76"
3361
                                            {
3362
                                            "Name" = "8:Class"
3363
                                            "Condition" = "8:"
3364
                                            "Transitive" = "11:FALSE"
3365
                                            "ValueTypes" = "3:1"
3366
                                            "Value" = "8:Pithos.ShellExtensions.Overlays.DeletedIconOverlay"
3367
                                            }
3368
                                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_E132EA37A841421BACAE854339C512CD"
3369
                                            {
3370
                                            "Name" = "8:"
3371
                                            "Condition" = "8:"
3372
                                            "Transitive" = "11:FALSE"
3373
                                            "ValueTypes" = "3:1"
3374
                                            "Value" = "8:mscoree.dll"
3375
                                            }
3376
                                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_E409F83FAB574BC6AC3730DAC0E12F63"
3377
                                            {
3378
                                            "Name" = "8:RuntimeVersion"
3379
                                            "Condition" = "8:"
3380
                                            "Transitive" = "11:FALSE"
3381
                                            "ValueTypes" = "3:1"
3382
                                            "Value" = "8:v4.0.30319"
3383
                                            }
3384
                                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_ED712CA1A5FF4C33850858CA22E23731"
3385
                                            {
3386
                                            "Name" = "8:ThreadingModel"
3387
                                            "Condition" = "8:"
3388
                                            "Transitive" = "11:FALSE"
3389
                                            "ValueTypes" = "3:1"
3390
                                            "Value" = "8:Both"
3391
                                            }
3392
                                        }
3393
                                    }
3394
                                }
3395
                                "Values"
3396
                                {
3397
                                    "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_DDE72707F46047BA8983005622638C43"
3398
                                    {
3399
                                    "Name" = "8:"
3400
                                    "Condition" = "8:"
3401
                                    "Transitive" = "11:FALSE"
3402
                                    "ValueTypes" = "3:1"
3403
                                    "Value" = "8:Pithos.ShellExtensions.Overlays.DeletedIconOverlay"
3404
                                    }
3405
                                }
3406
                            }
3207 3407
                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_9A1D2A7CF4D44D2A92F49560D1B5BCF2"
3208 3408
                            {
3209 3409
                            "Name" = "8:{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}"
b/trunk/Pithos.Setup.x86/Pithos.Setup.x86.vdproj
537 537
        }
538 538
        "Entry"
539 539
        {
540
        "MsmKey" = "8:_F693ED58D49B3EC1892CE4184575B87B"
541
        "OwnerKey" = "8:_11BDAAF760654D3792A432B5EB874364"
542
        "MsmSig" = "8:_UNDEFINED"
543
        }
544
        "Entry"
545
        {
546
        "MsmKey" = "8:_F693ED58D49B3EC1892CE4184575B87B"
547
        "OwnerKey" = "8:_EBAF62F0335F4918AB23EDA708507D1F"
548
        "MsmSig" = "8:_UNDEFINED"
549
        }
550
        "Entry"
551
        {
552
        "MsmKey" = "8:_F693ED58D49B3EC1892CE4184575B87B"
553
        "OwnerKey" = "8:_A611766CD2793378FFAB2F3063F81496"
554
        "MsmSig" = "8:_UNDEFINED"
555
        }
556
        "Entry"
557
        {
558 540
        "MsmKey" = "8:_FA76529F78D7D6108EDBA33F19836A6B"
559 541
        "OwnerKey" = "8:_11BDAAF760654D3792A432B5EB874364"
560 542
        "MsmSig" = "8:_UNDEFINED"
......
676 658
        "Entry"
677 659
        {
678 660
        "MsmKey" = "8:_UNDEFINED"
679
        "OwnerKey" = "8:_F693ED58D49B3EC1892CE4184575B87B"
680
        "MsmSig" = "8:_UNDEFINED"
681
        }
682
        "Entry"
683
        {
684
        "MsmKey" = "8:_UNDEFINED"
685 661
        "OwnerKey" = "8:_4C5B93BC82FE5E63E01458A8DA46B4D6"
686 662
        "MsmSig" = "8:_UNDEFINED"
687 663
        }
......
1540 1516
            "IsDependency" = "11:TRUE"
1541 1517
            "IsolateTo" = "8:"
1542 1518
            }
1543
            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_F693ED58D49B3EC1892CE4184575B87B"
1544
            {
1545
            "AssemblyRegister" = "3:1"
1546
            "AssemblyIsInGAC" = "11:FALSE"
1547
            "AssemblyAsmDisplayName" = "8:Microsoft.WindowsAPICodePack, Version=1.1.0.0, Culture=neutral, PublicKeyToken=2cc55badaa91f4de, processorArchitecture=MSIL"
1548
                "ScatterAssemblies"
1549
                {
1550
                    "_F693ED58D49B3EC1892CE4184575B87B"
1551
                    {
1552
                    "Name" = "8:Microsoft.WindowsAPICodePack.dll"
1553
                    "Attributes" = "3:512"
1554
                    }
1555
                }
1556
            "SourcePath" = "8:Microsoft.WindowsAPICodePack.dll"
1557
            "TargetName" = "8:"
1558
            "Tag" = "8:"
1559
            "Folder" = "8:_FA3E4362540D4C76A5914763C178A3BD"
1560
            "Condition" = "8:"
1561
            "Transitive" = "11:FALSE"
1562
            "Vital" = "11:TRUE"
1563
            "ReadOnly" = "11:FALSE"
1564
            "Hidden" = "11:FALSE"
1565
            "System" = "11:FALSE"
1566
            "Permanent" = "11:FALSE"
1567
            "SharedLegacy" = "11:FALSE"
1568
            "PackageAs" = "3:1"
1569
            "Register" = "3:1"
1570
            "Exclude" = "11:FALSE"
1571
            "IsDependency" = "11:TRUE"
1572
            "IsolateTo" = "8:"
1573
            }
1574 1519
            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_FA76529F78D7D6108EDBA33F19836A6B"
1575 1520
            {
1576 1521
            "AssemblyRegister" = "3:1"
......
1773 1718
                                            }
1774 1719
                                        }
1775 1720
                                    }
1721
                                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_5004716641E24919B137F1EBC3425C49"
1722
                                    {
1723
                                    "Name" = "8:Deleted"
1724
                                    "Condition" = "8:"
1725
                                    "AlwaysCreate" = "11:FALSE"
1726
                                    "DeleteAtUninstall" = "11:FALSE"
1727
                                    "Transitive" = "11:FALSE"
1728
                                        "Keys"
1729
                                        {
1730
                                        }
1731
                                        "Values"
1732
                                        {
1733
                                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_6EA88C3929B240A5940D0651BAA1F2B8"
1734
                                            {
1735
                                            "Name" = "8:Pithos"
1736
                                            "Condition" = "8:"
1737
                                            "Transitive" = "11:FALSE"
1738
                                            "ValueTypes" = "3:1"
1739
                                            "Value" = "8:{11051AB4-D786-4248-BC6E-369F25EC74E4}"
1740
                                            }
1741
                                        }
1742
                                    }
1776 1743
                                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_5F1A26A61A6941F48D1A7500DAC510CA"
1777 1744
                                    {
1778 1745
                                    "Name" = "8:Unversioned"
......
2249 2216
                            }
2250 2217
                        }
2251 2218
                    }
2219
                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_93AA85194A7C4BC993A3F802F8698C10"
2220
                    {
2221
                    "Name" = "8:Pithos.ShellExtensions.Overlays.DeletedIconOverlay"
2222
                    "Condition" = "8:"
2223
                    "AlwaysCreate" = "11:FALSE"
2224
                    "DeleteAtUninstall" = "11:FALSE"
2225
                    "Transitive" = "11:FALSE"
2226
                        "Keys"
2227
                        {
2228
                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_D7EBDBE444D6447080D0E4548FB1594A"
2229
                            {
2230
                            "Name" = "8:CLSID"
2231
                            "Condition" = "8:"
2232
                            "AlwaysCreate" = "11:FALSE"
2233
                            "DeleteAtUninstall" = "11:FALSE"
2234
                            "Transitive" = "11:FALSE"
2235
                                "Keys"
2236
                                {
2237
                                }
2238
                                "Values"
2239
                                {
2240
                                    "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_644D37D72EC548A68375806875898F76"
2241
                                    {
2242
                                    "Name" = "8:"
2243
                                    "Condition" = "8:"
2244
                                    "Transitive" = "11:FALSE"
2245
                                    "ValueTypes" = "3:1"
2246
                                    "Value" = "8:{11051AB4-D786-4248-BC6E-369F25EC74E4}"
2247
                                    }
2248
                                }
2249
                            }
2250
                        }
2251
                        "Values"
2252
                        {
2253
                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_E1D994BA8DDF4F2398C79D10547A0F4B"
2254
                            {
2255
                            "Name" = "8:"
2256
                            "Condition" = "8:"
2257
                            "Transitive" = "11:FALSE"
2258
                            "ValueTypes" = "3:1"
2259
                            "Value" = "8:Pithos.ShellExtensions.Overlays.DeletedIconOverlay"
2260
                            }
2261
                        }
2262
                    }
2252 2263
                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_9704B86B3D7945719532C09F94835F03"
2253 2264
                    {
2254 2265
                    "Name" = "8:Pithos.ShellExtensions.Overlays.UnversionedIconOverlay"
......
3066 3077
                                    }
3067 3078
                                }
3068 3079
                            }
3080
                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_7BDD6C3DBD78419DA3C16F6DBC551F1C"
3081
                            {
3082
                            "Name" = "8:{11051AB4-D786-4248-BC6E-369F25EC74E4}"
3083
                            "Condition" = "8:"
3084
                            "AlwaysCreate" = "11:FALSE"
3085
                            "DeleteAtUninstall" = "11:FALSE"
3086
                            "Transitive" = "11:FALSE"
3087
                                "Keys"
3088
                                {
3089
                                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_056BA5B3933148D88E11459D5B0C83EE"
3090
                                    {
3091
                                    "Name" = "8:Implemented Categories"
3092
                                    "Condition" = "8:"
3093
                                    "AlwaysCreate" = "11:FALSE"
3094
                                    "DeleteAtUninstall" = "11:FALSE"
3095
                                    "Transitive" = "11:FALSE"
3096
                                        "Keys"
3097
                                        {
3098
                                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_CBAA1F96E33D4C3E883132C87C710B52"
3099
                                            {
3100
                                            "Name" = "8:{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}"
3101
                                            "Condition" = "8:"
3102
                                            "AlwaysCreate" = "11:FALSE"
3103
                                            "DeleteAtUninstall" = "11:FALSE"
3104
                                            "Transitive" = "11:FALSE"
3105
                                                "Keys"
3106
                                                {
3107
                                                }
3108
                                                "Values"
3109
                                                {
3110
                                                }
3111
                                            }
3112
                                        }
3113
                                        "Values"
3114
                                        {
3115
                                        }
3116
                                    }
3117
                                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_05C71F10F2E645F8B8448EC90CF7F540"
3118
                                    {
3119
                                    "Name" = "8:ProgId"
3120
                                    "Condition" = "8:"
3121
                                    "AlwaysCreate" = "11:FALSE"
3122
                                    "DeleteAtUninstall" = "11:FALSE"
3123
                                    "Transitive" = "11:FALSE"
3124
                                        "Keys"
3125
                                        {
3126
                                        }
3127
                                        "Values"
3128
                                        {
3129
                                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_7EEFD9EE0F2D4B688C5FBC98C5253524"
3130
                                            {
3131
                                            "Name" = "8:"
3132
                                            "Condition" = "8:"
3133
                                            "Transitive" = "11:FALSE"
3134
                                            "ValueTypes" = "3:1"
3135
                                            "Value" = "8:Pithos.ShellExtensions.Overlays.DeletedIconOverlay"
3136
                                            }
3137
                                        }
3138
                                    }
3139
                                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_97922C7E8A46448994C5855C4AF2BC35"
3140
                                    {
3141
                                    "Name" = "8:InprocServer32"
3142
                                    "Condition" = "8:"
3143
                                    "AlwaysCreate" = "11:FALSE"
3144
                                    "DeleteAtUninstall" = "11:FALSE"
3145
                                    "Transitive" = "11:FALSE"
3146
                                        "Keys"
3147
                                        {
3148
                                        }
3149
                                        "Values"
3150
                                        {
3151
                                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_004ACDE8A99B4AF0B0CE3E7B1B6EF3E6"
3152
                                            {
3153
                                            "Name" = "8:CodeBase"
3154
                                            "Condition" = "8:"
3155
                                            "Transitive" = "11:FALSE"
3156
                                            "ValueTypes" = "3:1"
3157
                                            "Value" = "8:[TARGETDIR]\\Pithos.ShellExtensions.dll"
3158
                                            }
3159
                                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_CC7C253FCA0A4DB4817983C966609C97"
3160
                                            {
3161
                                            "Name" = "8:Assembly"
3162
                                            "Condition" = "8:"
3163
                                            "Transitive" = "11:FALSE"
3164
                                            "ValueTypes" = "3:1"
3165
                                            "Value" = "8:Pithos.ShellExtensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2cc55badaa91f4de"
3166
                                            }
3167
                                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_D89C8DF5F19D4CC5AB6734B9CB3B7D76"
3168
                                            {
3169
                                            "Name" = "8:Class"
3170
                                            "Condition" = "8:"
3171
                                            "Transitive" = "11:FALSE"
3172
                                            "ValueTypes" = "3:1"
3173
                                            "Value" = "8:Pithos.ShellExtensions.Overlays.DeletedIconOverlay"
3174
                                            }
3175
                                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_E132EA37A841421BACAE854339C512CD"
3176
                                            {
3177
                                            "Name" = "8:"
3178
                                            "Condition" = "8:"
3179
                                            "Transitive" = "11:FALSE"
3180
                                            "ValueTypes" = "3:1"
3181
                                            "Value" = "8:mscoree.dll"
3182
                                            }
3183
                                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_E409F83FAB574BC6AC3730DAC0E12F63"
3184
                                            {
3185
                                            "Name" = "8:RuntimeVersion"
3186
                                            "Condition" = "8:"
3187
                                            "Transitive" = "11:FALSE"
3188
                                            "ValueTypes" = "3:1"
3189
                                            "Value" = "8:v4.0.30319"
3190
                                            }
3191
                                            "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_ED712CA1A5FF4C33850858CA22E23731"
3192
                                            {
3193
                                            "Name" = "8:ThreadingModel"
3194
                                            "Condition" = "8:"
3195
                                            "Transitive" = "11:FALSE"
3196
                                            "ValueTypes" = "3:1"
3197
                                            "Value" = "8:Both"
3198
                                            }
3199
                                        }
3200
                                    }
3201
                                }
3202
                                "Values"
3203
                                {
3204
                                    "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_DDE72707F46047BA8983005622638C43"
3205
                                    {
3206
                                    "Name" = "8:"
3207
                                    "Condition" = "8:"
3208
                                    "Transitive" = "11:FALSE"
3209
                                    "ValueTypes" = "3:1"
3210
                                    "Value" = "8:Pithos.ShellExtensions.Overlays.DeletedIconOverlay"
3211
                                    }
3212
                                }
3213
                            }
3069 3214
                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_9A1D2A7CF4D44D2A92F49560D1B5BCF2"
3070 3215
                            {
3071 3216
                            "Name" = "8:{10CF08FE-1252-4AAB-BE78-971B0C5E8AE0}"
b/trunk/Pithos.ShellExtensions/Overlays/DeletedIconOverlay.cs
1
using System;
2
using System.Runtime.InteropServices;
3

  
4
namespace Pithos.ShellExtensions.Overlays
5
{
6
    [ClassInterface(ClassInterfaceType.None), ComVisible(true)]
7
    [Guid("11051AB4-D786-4248-BC6E-369F25EC74E4")]
8
    public class DeletedIconOverlay: IconOverlayBase
9
    {
10

  
11
        private static string _iconName = "Deleted";
12

  
13
        public DeletedIconOverlay()
14
            : base(_iconName)
15
        {
16
            
17
        }
18

  
19
        #region Shell Extension Registration
20
        [ComRegisterFunction()]
21
        public static void Register(Type t)
22
        {
23
            RegisterOverlay(t,_iconName);
24
        }
25

  
26
        [ComUnregisterFunction]
27
        public static void Unregister(Type t)
28
        {
29
            UnregisterOverlay(t,_iconName);
30
        }
31

  
32
        #endregion
33

  
34

  
35
    }
36
}
b/trunk/Pithos.ShellExtensions/Pithos.ShellExtensions.csproj
148 148
    <Compile Include="Menus\MenuItem.cs" />
149 149
    <Compile Include="Overlays\AddedIcodOverlay.cs" />
150 150
    <Compile Include="Overlays\ConflictIconOverlay.cs" />
151
    <Compile Include="Overlays\DeletedIconOverlay.cs" />
151 152
    <Compile Include="Overlays\IconOverlayBase.cs" />
152 153
    <Compile Include="Overlays\ModifiedIconOverlay.cs" />
153 154
    <Compile Include="Overlays\NormalIconOverlay.cs" />

Also available in: Unified diff