Here i show u how to use the Logging.Logger class
// Top of ur .cs file
using AndroidCtrl.Logging;
// Activate the logger
Logger.Instance.Active = true;
// Here u can tell the log writer that it has to write each new log directly to the log-file
Logger.Instance.WriteParts = true;
// Log-file path (by default the file will be generated beside the dll)
Logger.Instance.Path = "C:\\myLogFile.txt";
// Here are the events u can subscribe to, to get the logs in ur progam-code
Logger.Instance.CallbackDebug += CallbackLogger;
Logger.Instance.CallbackError += CallbackLogger;
Logger.Instance.CallbackInfo += CallbackLogger;
Logger.Instance.CallbackOutput += CallbackLogger;
Logger.Instance.CallbackWarning += CallbackLogger;
// This is the callback for all events
public void CallbackLogger(object sender, LoggerArgs e)
{
App.Current.Dispatcher.Invoke((Action)delegate
{
// Do what u want with the log-data "e.Log"
});
}
// Define the log-level (that is a bit tricky but i'll explain)
Logger.Instance.SetLogLevel(IDLog.DEBUG);
// In the above example we "only" define the level "Debug", this will log all events!
// U can also define the log levels like the following examples...
// All events and all outputs
Logger.Instance.SetLogLevel(IDLog.DEBUG, IDLog.OUTPUT);
// This will do the same as the above example
Logger.Instance.SetLogLevel(IDLog.ERROR, IDLog.INFO, IDLog.OUTPUT, IDLog.WARNING);
Simply, u can define a "special" part u want to log, with-/out output or everything that happens. Here is a short explain about the log-levels.
- DEBUG = Logs everything that happens
- ERROR = Log all errors and *hopefully* all exceptions (caused by my dll)
- INFO = Log all calls and sub-call (currently "only" the ProcessModels namespace got he log-writer)
- OUTPUT = Log all outputs
- WARNING = Log all warnings
Here i'll show you how to implement the Drag & Drop in your program code.
// Top us ur .cs file
...
using AndroidCtrl;
using AndroidCtrlUI.Explorer;
using AndroidCtrlUI.Explorer.Actions.Windows;
...
// OnDrop handler
public void OnDrop(object sender, DragEventArgs e)
{
// Drop destination path
string dest = "C:\\";
// Here we check if the drop element includes a DataObject
if (e.Data is DataObject d && d.ContainsFileDropList())
{
// Extract the sender
string s = d.GetText(TextDataFormat.Text);
// Check if the sender is the android viewmodel.
if (s == "android" && d.GetDataPresent(typeof(DeviceInfo)))
{
// Now init the copy process
Copy copy = new Copy(this, (DeviceInfo)d.GetData(typeof(DeviceInfo)), s, "local", dest, d.GetFileDropList(), e.Effects == DragDropEffects.Move);
// (optional) Here you can define a callback which is raised if the copy window is closed.
copy.Closed += DropCallback;
// Show the copy window
copy.Show();
}
// If the sender isn't the android viewmodel, your OnDrop code will be executed.
else
{
// Your OnDrop code goes here.
}
}
e.Handled = true;
}
// (optional) Callback after the window is closed.
private void DropCallback(object sender, EventArgs e)
{
// Do a refresh or something.
}
Here i show you how you can implement the Explorer Part of this dll in your Project. This example is based on an xaml Page.
Remote-Explorer
(U need also to add the ViewModel to ur .cs as described in Getting Started.)
That's all for the moment.
Remote-Explorer
<Page x:Class="MyApp.MyPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:view="clr-namespace:AndroidCtrlUI.Explorer;assembly=AndroidCtrlUI"
xmlns:viewPart="clr-namespace:AndroidCtrlUI.Explorer.Views;assembly=AndroidCtrlUI"
xmlns:sharedPart="clr-namespace:SharedUI.Explorer.Shares.Views;assembly=SharedUI">
<!-- Now u can use the following ready-to-go models: -->
...
<view:MultiExplorerView DataContext="{Binding ExplorerMR}"/>
...
<sharedPart:AddressBar DataContext="{Binding ExplorerR.AddressBar}"/>
<sharedPart:AddressBarCompact DataContext="{Binding ExplorerR.AddressBar}"/>
<sharedPart:AddressBarExtended DataContext="{Binding ExplorerR.AddressBar}"/>
<viewPart:ExplorerView DataContext="{Binding ExplorerR}"/>
<sharedPart:InfoBar DataContext="{Binding ExplorerR.InfoBar}"/>
<viewPart:ListView DataContext="{Binding ExplorerR.ListView}"/>
<viewPart:TreeView DataContext="{Binding ExplorerR.TreeView}"/>
...
</Page>
Local-Explorer
<Page x:Class="MyApp.MyPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:view="clr-namespace:SharedUI.Explorer.Local;assembly=SharedUI"
xmlns:viewPart="clr-namespace:SharedUI.Explorer.Local.Views;assembly=SharedUI"
xmlns:sharedPart="clr-namespace:SharedUI.Explorer.Shares.Views;assembly=SharedUI">
<!-- Now u can use the following ready-to-go models: -->
...
<sharedPart:AddressBar DataContext="{Binding ExplorerL.AddressBar}"/>
<sharedPart:AddressBarCompact DataContext="{Binding ExplorerL.AddressBar}"/>
<sharedPart:AddressBarExtended DataContext="{Binding ExplorerL.AddressBar}"/>
<view:ExplorerView DataContext="{Binding ExplorerL}"/>
<sharedPart:InfoBar DataContext="{Binding ExplorerL.InfoBar}"/>
<viewPart:ListView DataContext="{Binding ExplorerL.ListView}"/>
<viewPart:TreeView DataContext="{Binding ExplorerL.TreeView}"/>
...
</Page>
After u have placed these elements u can compile ur project and test it.
(U need also to add the ViewModel to ur .cs as described in Getting Started.)
That's all for the moment.
If u want to include AndroidCtrlUI.dll in ur current or new .NET project, you have to do the following steps.
And in your code you have to assign the namespaces like:
That's all for the moment.
- Open for example VisualStudio and ur project
- Go to References
- Add the AndroidCtrlUI.dll
- Add the SharedUI.dll
- (Optional) place the AndroidCtrlUI.xml and SharedUI.xml beside both dlls.(This will give you the markup in VisualStudio)
And in your code you have to assign the namespaces like:
// Top of ur .cs file ... using UIREM=AndroidCtrlUI.Explorer; using UILOC=SharedUI.Explorer.Local; using AndroidCtrlUI.Tools; ...To access the ExplorerModel you must act like the following example.
// Here we load the needed language strings // This is the AutoLoad() method, it will check the current UI language and try // to load the given language if it exists. If not, it will load the english language. Language.AutoLoad(); // This is the Set() method, it will load the given language as default if it exists. // If not, it will load the english language. // Currently, you can use the following keys "en-EN" and "de-DE". // This method check only the 1st and 2cnd char, so if your key look for example like "en-GB" // or "de-AT" it will load the english (en-EN) or german (de-DE) language file. Language.Set(string langkey); // Here we create a Remote-Explorer view (for single element placement) UIREM.Models.ExplorerModel ExplorerR = new UIREM.Models.ExplorerModel(); //or UIREM.Models.ExplorerModel ExplorerR = new UIREM.Models.ExplorerModel(IDeviceInfo device); //or UIREM.Models.ExplorerModel ExplorerR = new UIREM.Models.ExplorerModel(bool actOnDllSelection, IDeviceInfo device = null); //or UIREM.Models.ExplorerModel ExplorerR = new UIREM.Models.ExplorerModel(bool actOnDllSelection, bool useMediaScanner, IDeviceInfo device = null); // Here we create the Remote-Multi-Explorer view UIREM.MultiExplorerModel ExplorerMR = new UIREM.MultiExplorerModel(); //or UIREM.MultiExplorerModel ExplorerMR = new UIREM.MultiExplorerModel(bool useDllSelection, bool useMediaScanner); // Here we create the Local-Explorer view UILOC.ExplorerModel ExplorerL = new UILOC.ExplorerModel();Now pls have a look on the navigation on the left side and choose ur XAML implementation way.
That's all for the moment.