[XAP] Phone Commander

Search This thread

Martin7Pro

Senior Member
Oct 23, 2011
385
363
htc7pro.howto.cz
I am working on TCMD equivalent for Windows Phone. It may be:
Two-panel filemanager,
SMS and Mail configurator (groups, searching, backup),
Registry editor (editing, export, import),
Taskmanager (working apps dehydrating, resuming, closing, memory increasing),
Tiles configurator (creating, grouping),
MultiMedia manager (searching, playing etc.),
Applications configurator (uninstalling, grouping),
Keyboard Shortcuts configurator (HTC 7 Pro, Gold, Prime),
and another next by plugins system.

It will use direct access for unlocked ROMs, HtcRoot project (http://xdaforums.com/showthread.php?t=1453343) for full access on (dev and) InterOP unlocked devices (where it is possible), ProvXML method for incompatible devices.

There is first screenshot:
PhoneCommanderScreen.jpg


Try it, post experiences. This is designed for HTC7Pro hardware keyboard, but must be usable for touch conntrolling too. For big dirrectories (\Windows etc.) scrollbars are necessary. I want to have as far as possible biggest amount of controls on main screen. It may not be a game, it must be working tool. In long future I want integrate also simple programming IDE to this tool.


Newest version will everytime here.


Actual attached version enables for me:

To manage all files very quickly include multioperations (like TotalCmd).
To copy mp3 files to any phone directory by desktop TotalCmd, create playlist on phone and hear music.
To do the same vith movies, photos etc.
To copy e-books from my desktop and read them in phone (formats: doc, RTF - the best reading, pdf etc).
To edit all files in phone (the same formats, include binaries).
To import .reg files to Registry

From version 2.3 added 3s timeout to JPG files shell showing in built-in Pictures application (you can make simple automatic presentation from pictures, videos and sounds in sh file).
 

Attachments

  • Phonmander.xap
    681.1 KB · Views: 1,881
Last edited:

Martin7Pro

Senior Member
Oct 23, 2011
385
363
htc7pro.howto.cz
Hey man, sounds ambitiously, with the declared functionality it would be a perfect tool :) Good luck!
I will do, what free time allows me. The rest will simple for everyone, when plugin class interface will good designed (readonly properties top, bottom, size of list, manipulation properties/methods for copying, moving, deleting etc). FilePath (read/write) equivalent can be Group (ringtones, apps) or RegPath (registry), some classes will not allow any part of methods (class Task will not implemented copy and move for taskmanager etc). First I must make spotlessly this data model and user interface, becouse those are the most problematical parts of this app (too small screen, too big area of digit touch etc). My keyboard-only inspiration is very nice FileNote app from S80 Symbian (http://tech.groups.yahoo.com/group/FileNote/messages , http://my-symbian.com/s80/software/applications.php?faq=3&fldAuto=865) , but no everybody has hardware keyboard on WP7. Plugins (libraries) for unique quantities and implementing of any special behaviour (searching, comparing, sending) will secondary parts. The biggest problem is unlocking impossibility for new devices now. M.
 
Last edited:

poker100

Senior Member
Jun 27, 2007
83
7
Hi Martin,
first look i like your commander.
I will wait next version, good work :)
 

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
Looks *very* cool! Makes me wish my HD7 had a hardware keyboard though; this will be hard enough to use with touch on a 4.3" screen and will be a lot harder on something like the Surround or Trophy. I must admit that the inspiration (two-panel file managers, which date back to at least Midnight Commander and possibly further) appeals strongly to my nerd side. :)

I'll try my best to make sure that HtcRoot is available for this to use on as many phones as possible (probably all first-gen HTC, second-gen may never be possible without a new exploit).

One suggestion: just make the file lists scrollable using swipes (it's a built-in control that you put the other controls within). The scrollbars take up non-trivial screen space and are actually kind of hard to use with fingers. Also, tapping on "ext" is *way* harder than it looks like it should be; even moving in tiny increments I tend to go from tapping "FileName" to tapping "datetime" directly.
 

Martin7Pro

Senior Member
Oct 23, 2011
385
363
htc7pro.howto.cz
Hi GoodDayToDie. Thanks for your support. My first mind was to use standard WP7 scroll controls. But, there are two reasons to implement own control.

1. amount of files \Windows directory in WP7. I use TouchExplorer every day, but working with \Windows directory is worry in it. Then I need control, which is quicker for big lines ammount (implementable by any part of filenames reading immediatelly and pre-loading some amout to seek in scrolling time).
2. Total commander has very sofisticated file subset signing to select operation set (file can be selected/unselected or to have focus independently). Try select 10 files beginning by diffrent characters in Touchexplorer in \Windows directory and after it try copy one another file. This is operation to 10-15 minutes in TouchExplorer. I do not know, if control behaviour is simply changeable in WP7. I am planning to have one self made control with scrollbars for big directories and one inhereted from WP7 standard with simple changes (if possible) and without scrollbars for small ones. I am low-level C/C++/etc programmer, then I must study Silverlight/C# possibilities first.
 
Last edited:

Magpir

Senior Member
Jul 4, 2011
4,169
416
i am looking for a function that auto on/off 3G had scheduled times, much like what android apps do

is this possible with yr xap??
 

Magpir

Senior Member
Jul 4, 2011
4,169
416
Scheduling is in the future plane. I have a lot of to do with higher priority first. I seen any "Tasks" application on MarketPlace for scheduling. Try it, may be it is able to schedule system changing.

those apps in the marketplace only give u a reminder.

i need the app actually disable/enable things at a given time.
 

Martin7Pro

Senior Member
Oct 23, 2011
385
363
htc7pro.howto.cz
Looks *very* cool! Makes me wish my HD7 had a hardware keyboard though; this will be hard enough to use with touch on a 4.3" screen and will be a lot harder on something like the Surround or Trophy. I must admit that the inspiration (two-panel file managers, which date back to at least Midnight Commander and possibly further) appeals strongly to my nerd side. :)

...

I have a question:

Normally, in C++, I will make basic plugin class, inheritable to 3rd plugins dlls. When interface will changed in future, I will use multiple inheriting of additional behaviour class, in reverse order for "old generation" plugins.

But, what is the best practice in phone C# ? Multiple interfacing? Or dependency injection is implemented here? I must use something very simply for easy plugins creating. M.
 

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
If I understand what you're asking about correctly, multiple interface inheritance is probably your best bet, since .NET doesn't support multiple class inheritance. This usually means you need to have some kind of external factory as well, since interfaces can't have constructors or static methods.

Implementation-wise, one way to do this is to simply wrap the older objects, and pass calls to their interfaces through to them. This isn't ideal and still requires non-trivial coding, but it does provide good encasulation and relatively good code sharing. Dependency injection using Reflection APIs is certainly also possible, but requires some work.
 

Martin7Pro

Senior Member
Oct 23, 2011
385
363
htc7pro.howto.cz
I am "old school" OOP Programmer, then I must study it much. Main problem is: I know interface for files, registry, tasks etc just now. But, application must accept today unknown interfaces in future by little addition only, without recompiling old generation plugins. Then I explain previous question: Are interfaces and namespaces in C# able to solve this problem? To have one interface for today plugins, new interface will added after any months and using one or second automaticly? TotalCommander solves it by different plugins extension (*.wfx , *.wcx etc), but, I mean, it is not right way in 21 century. Second problem is: Every plugin can contain more system access methods (Standard MS WP7 API, ProvXML, your HTCRoot, fiinix's CSharp_DllImport, something new...). Every this method need not be copletely implemented in all plugins, any common base may be stored in one library for each access method and plugins will prepare only parameters for them. When design will the best, old generation plugins can use future access methods too. Access methods can be sorted by priority (probably related to method speed), plugins must use highest method priority, which is allowed on device. If plugin will not know any hi priority access method itself, must automaticly hand over its pursuance to any newer library. What modern method I must study for mentioned behaviour?
 

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
I think that doing this is going to require the use of the Reflection APIs. In essense, these let you load assemblies (collections of classes, typically in namespaces) from .DLL files (by name), and let you load classes from within assemblies, and let you call functions of those classes.

Probably the easiest way to do it is a function pointer table. In .NET, function pointers are called "Delegates" and are technically objects (like everything, including primitive types) but they pretty much work exactly like strongly typed C++ function pointers.

When the app starts up, it looks in a known location (or possibly queries the registry, or something) for DLLs containing extensions. It then loads the assemblies from those DLLs. Each assembly should have a registration function (probably a static method o a static class) that returns a collection of delegates (and their priorities, if needed). Your app then uses those to build a function table that it uses whenever it needs to do a specific type of operation.

For example, you could have one entry in the table for "WriteFile" and might get function pointers for it from one assembly that uses the native APIs with no special permissions (works for some custom ROMs, or after using HtcRoot), one that uses isolated storage APIs (works for any ROM, but only to a specific folder), one that uses HtcFileUtility.dll (the driver that TouchXplorer uses), one that uses ntive APIs but wraps every call in an elevation call to HtcRoot, etc. It would be up to the framework (meaning up to you, if you're designing it) to define some way to indicate which one to use.


All that said, while extensibility is an excellent goal and probably necessary in the long run, you might want to just get a proof-of-concept working that is hard-coded to use a single known approach. Reflection isn't actually that difficult, but it seems like a distraction from getting a first version out the door. Release early, release often, and all that.
 

Martin7Pro

Senior Member
Oct 23, 2011
385
363
htc7pro.howto.cz
I must finish other important work, after any days I will continue here. I will use simpliest way, which coul not be the best, but it will quick and independent. M.
 

TFGBD

Senior Member
Mar 9, 2005
91
23
I am working on TCMD equivalent for Windows Phone. It may be:
Two-panel filemanager,
SMS and Mail configurator (groups, searching, backup),
Registry editor (editing, export, import),
Taskmanager (working apps dehydrating, resuming, closing, memory increasing),
Tiles configurator (creating, grouping),
MultiMedia manager (searching, playing etc.),
Applications configurator (uninstalling, grouping),
Keyboard Shortcuts configurator (HTC 7 Pro, Gold, Prime),
and another next by plugins system.

It will use direct access for unlocked ROMs, HtcRoot project (http://xdaforums.com/showthread.php?t=1453343) for full access on (dev and) InterOP unlocked devices (where it is possible), ProvXML method for incompatible devices.

There is first screenshot:
PhoneCommanderScreen.jpg


There is also Pre-Alpha User Interface demo only xap.

Try it, post experiences. This is designed for HTC7Pro hardware keyboard, but must be usable for touch conntrolling too. For big dirrectories (\Windows etc.) scrollbars are necessary. I want to have as far as possible biggest amount of controls on main screen. It may not be a game, it must be working tool. In long future I want integrate also simple programming IDE to this tool.




Err, why are you using drive letters like C:\? We all know Windows CE doesn't use such things. I think adding artificial drive letter paths will just confuse users in the long run. If they're going to be navigating the filesystem, they might as well learn how to do it right. But if you really must do this, at least make it easily disabled.

Also, are those native Windows CE common controls in the screenshot?
 

GoodDayToDie

Inactive Recognized Developer
Jan 20, 2011
6,066
2,933
Seattle
@Martin7Pro: One suggestion: with the semi-imminent release of WP7 Root Tools 0.9, which will allow elevating arbitrary apps (and will support more devices than the HtcRoot project), I suggest you focus on just using native APIs and don't worry about permissions. It will already work on full-unlocked ROMs, it will work on all devices that are supported by WP7 Root Tools once it releases, and it will be easy to add support for HtcRoot if for some reason that saspect of the project is still relevant.

I've got some exciting other directions I want to go with HtcRoot, like seeing whether I can modify ROM files or do other crazy things like that (it might be possible, what with the ability to tweak driver code directly). The elevation to TCB ("Admin") and policy-engine work was (and still is) a stepping stone to get there, but with WP7 Root Tools 0.9 supporting the most important policy engine changes directly, that's less of a concern now.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 19
    I am working on TCMD equivalent for Windows Phone. It may be:
    Two-panel filemanager,
    SMS and Mail configurator (groups, searching, backup),
    Registry editor (editing, export, import),
    Taskmanager (working apps dehydrating, resuming, closing, memory increasing),
    Tiles configurator (creating, grouping),
    MultiMedia manager (searching, playing etc.),
    Applications configurator (uninstalling, grouping),
    Keyboard Shortcuts configurator (HTC 7 Pro, Gold, Prime),
    and another next by plugins system.

    It will use direct access for unlocked ROMs, HtcRoot project (http://xdaforums.com/showthread.php?t=1453343) for full access on (dev and) InterOP unlocked devices (where it is possible), ProvXML method for incompatible devices.

    There is first screenshot:
    PhoneCommanderScreen.jpg


    Try it, post experiences. This is designed for HTC7Pro hardware keyboard, but must be usable for touch conntrolling too. For big dirrectories (\Windows etc.) scrollbars are necessary. I want to have as far as possible biggest amount of controls on main screen. It may not be a game, it must be working tool. In long future I want integrate also simple programming IDE to this tool.


    Newest version will everytime here.


    Actual attached version enables for me:

    To manage all files very quickly include multioperations (like TotalCmd).
    To copy mp3 files to any phone directory by desktop TotalCmd, create playlist on phone and hear music.
    To do the same vith movies, photos etc.
    To copy e-books from my desktop and read them in phone (formats: doc, RTF - the best reading, pdf etc).
    To edit all files in phone (the same formats, include binaries).
    To import .reg files to Registry

    From version 2.3 added 3s timeout to JPG files shell showing in built-in Pictures application (you can make simple automatic presentation from pictures, videos and sounds in sh file).
    4
    Hi Martin,

    The app looks nice. I will try it. But I saw that you use libraries from Ultrashot, fiinix, W.I.N.C.O and others. So it would be appropriate to give them credits in the opening post.

    Ciao,
    Heathcliff74
    3
    UI and Keyboard optimisation

    There is a new 2.5 version (changed februar 10, 2013 evening, download newest build).
    It has better UI scrollbar management (probably only one WP7 application, able to show and trace quickly full \windows\ directory). Tap and hold 'U' screen button as 'up' and 'D' as 'down' quick navigation.
    This version supports hardware HTC7Pro keyboard fully!
    Use hardware keys:
    '0'..'9' for filesystem commander directions,
    'Q' for second panel activating,
    'W' for panels swapping,
    'Enter' for shell direction starting,
    'Space' for select/unselect item on caret position,
    'keyUp' and 'keyDown' for moving up and down,
    combination 'Fn'+'keyUp' and 'Fn'+'keyDown' for very quick navigation (especially in \windows\ directory),
    combination 'Chr'+'keyUp' and 'Chr'+'keyDown' for moving up and down without caret position change,
    combination 'Chr'+'Fn'+'keyUp' and 'Chr'+'Fn'+'keyDown' for very quick moving up and down without caret position change,

    Next version will have (still in development):

    Opensource plugin system (like desktop TotalCommander). First plugin will support registry keys (as 'directories' ) and values (as 'files'). Second plugin in development is FTP, where one panel will contain normal WP7 filesystem, second panel FTP site filesystem, all commander directions will works in this configuration. Third plugin will support HWND Windows, processes and threads. Another plugins you can code yourself with pre-defined plugin interface (tiles/installed/running apps, Hardware drivers, URL protocols, system services, mailboxes, SMSBox, Calls, Schedulers etc).

    I examined HTC7Pro keyboard driver and it's integration into the system. I'm not sure now if bigger idiots are engineers of HTC or MS WP7 development team. The simplies keyboard functions, usual on 15 years old Nokia communicators 9110/9210/9300/9500 are reachless on HTC7Pro without very hard hacks or full keyboard driver rewriting. We can use only "non Fn modified keys" as quick shortcuts now. All top (numers+Backspace) keyboard line works with long delay.
    3
    Version 2.0

    This is first version, which allowes multiple file operations. All unique operations must be confirmed in this beta version (for example - use *.* selecting, do "6/move" operation, but you must confirm every unique file moving in this multioperation). Multiconfirmation ("rewrite all" etc.) will allowed in prepared full version. Use carefully, WP7 filesystem operations are danger!
    3
    That's too bad - with WP7 Root Tools out, the time is ripe for an app like this - but I definitely understand (having run into the "no time!" problem myself a few times). Good luck on whatever it is, and we look forward to hearing from you again.