Android port using PhoneGap
20
Android/config.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<widget id='com.mdibaiee.sketchy' version='1.2.1'>
|
||||
|
||||
<name>Sketchy</name>
|
||||
<description>
|
||||
Free full-featured Sketch app
|
||||
</description>
|
||||
<author email='mdibaiee@aol.com' href='http://dibaiee.ir'>
|
||||
Mahdi Dibaiee
|
||||
</author>
|
||||
<content src='index.html'/>
|
||||
<access origin='*'/>
|
||||
|
||||
<preference name='KeepRunning' value='false'/>
|
||||
<preference name='SplashScreen' value='sketchy'/>
|
||||
<preference name='SetFullScreen' value='true'/>
|
||||
<preference name='FullScreen' value='true'/>
|
||||
<preference name='DisallowOverscroll' value='true'/>
|
||||
</widget>
|
||||
|
||||
|
275
Android/index.html
Normal file
@ -0,0 +1,275 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Sketchy</title>
|
||||
<meta charset='UTF-8'>
|
||||
<link rel='stylesheet' href='css/main.css'>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<header>
|
||||
<button class='menu'></button>
|
||||
<span class='separator long left menu'></span>
|
||||
<p id='title'>Sketchy</p>
|
||||
<button class='save'></button>
|
||||
<span class='separator small right'></span>
|
||||
<button class='load'></button>
|
||||
</header>
|
||||
|
||||
<div id='container'>
|
||||
<canvas></canvas>
|
||||
<canvas></canvas>
|
||||
</div>
|
||||
|
||||
<div id='menu'>
|
||||
<div class='options'>
|
||||
<p class='icon-settings'>Settings</p>
|
||||
<div class='general'>
|
||||
<button id='settype'>Brush Type<span>Sketch</span></button>
|
||||
<button id='setcolor'>Color<span>#000000</span></button>
|
||||
<button id='setbg'>Background<span>#ffffff</span></button>
|
||||
<p id='lineWidth'>Line Width <span>2</span></p>
|
||||
<div role="slider" class='lineWidth'>
|
||||
<div>
|
||||
<progress value="2" min="1" max="100"></progress>
|
||||
<button style='left: 2%'>handler</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<hr>
|
||||
<div class='sketch'>
|
||||
<p class='icon-settings'>Sketch</p>
|
||||
<p id='connectTelorance'>Telorance<span>40</span></p>
|
||||
<div role="slider" class='connectTelorance'>
|
||||
<div>
|
||||
<progress value="40" min="1" max="100"></progress>
|
||||
<button style='left: 40%'>handler</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='fur hidden'>
|
||||
<p class='icon-settings'>Fur</p>
|
||||
<p id='connectTelorance'>Telorance<span>40</span></p>
|
||||
<div role="slider" class='connectTelorance'>
|
||||
<div>
|
||||
<progress value="40" min="10" max="100"></progress>
|
||||
<button style='left: 40%'>handler</button>
|
||||
</div>
|
||||
</div>
|
||||
<p id='furLength'>Fur Length<span>50</span></p>
|
||||
<div role="slider" class='furLength'>
|
||||
<div>
|
||||
<progress value="50" min="1" max="100"></progress>
|
||||
<button style='left: 50%'>handler</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='line hidden'>
|
||||
<button id='setlineJoin'>Line Join<span>Round</span></button>
|
||||
<button id='setlineCap'>Line Cap<span>Round</span></button>
|
||||
|
||||
<p class='fill'>Fill<span>No</span></p>
|
||||
<p class='stroke'>Stroke<span>Yes</span></p>
|
||||
</div>
|
||||
|
||||
<div class='shape hidden'>
|
||||
<p class='icon-settings'>Shape</p>
|
||||
<button id='setshape'>Type<span>Circle</span></button>
|
||||
<p class='fill'>Fill<span>No</span></p>
|
||||
<p class='stroke'>Stroke<span>Yes</span></p>
|
||||
<div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='bottom'>
|
||||
<button id='clear' class='icon-clear'>Clear</button>
|
||||
<button id='undo' class='icon-undo'>Undo</button>
|
||||
<button id='redo' class='icon-redo'>Redo</button>
|
||||
<hr>
|
||||
<button id='about'>About</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<form role='dialog' data-type='value-selector' id='type' class='hidden single'>
|
||||
<section class='scrollable'>
|
||||
<h1>Brush Type</h1>
|
||||
<ol role='listbox'>
|
||||
<li aria-selected='true' data-target='sketch'><label><span>Sketch</span></label></li>
|
||||
<li data-target='fur'><label><span>Fur</span></label></li>
|
||||
<li data-target='pencil'><label><span>Pencil</span></label></li>
|
||||
<li data-target='line'><label><span>Line</span></label></li>
|
||||
<li data-target='shape'><label><span>Shape</span></label></li>
|
||||
<!--<li><label><span>Eraser</span></label></li>-->
|
||||
</ol>
|
||||
</section>
|
||||
<menu>
|
||||
<button class='affirmative full'>Cancel</button>
|
||||
</menu>
|
||||
</form>
|
||||
|
||||
<form role='dialog' data-type='value-selector' id='lineJoin' class='hidden single'>
|
||||
<section class='scrollable'>
|
||||
<h1>Line Join</h1>
|
||||
<ol role='listbox'>
|
||||
<li aria-selected='true'><label><span>Round</span></label></li>
|
||||
<li><label><span>Bevel</span></label></li>
|
||||
<li><label><span>Miter</span></label></li>
|
||||
</ol>
|
||||
</section>
|
||||
<menu>
|
||||
<button class='affirmative full'>Cancel</button>
|
||||
</menu>
|
||||
</form>
|
||||
|
||||
<form role='dialog' data-type='value-selector' id='shape' class='hidden single'>
|
||||
<section class='scrollable'>
|
||||
<h1>Shape Type</h1>
|
||||
<ol role='listbox'>
|
||||
<li aria-selected='true' data-target='shape'><label><span>Circle</span></label></li>
|
||||
<li data-target='shape'><label><span>Rectangle</span></label></li>
|
||||
<li data-target='shape'><label><span>Square</span></label></li>
|
||||
<li data-target='shape'><label><span>Triangle</span></label></li>
|
||||
</ol>
|
||||
<menu>
|
||||
<button class='affirmative full'>Cancel</button>
|
||||
</menu>
|
||||
</section>
|
||||
</form>
|
||||
|
||||
|
||||
<form role='dialog' data-type='value-selector' id='lineCap' class='hidden single'>
|
||||
<section class='scrollable'>
|
||||
<h1>Line Cap</h1>
|
||||
<ol role='listbox'>
|
||||
<li aria-selected='true'><label><span>Round</span></label></li>
|
||||
<li><label><span>Square</span></label></li>
|
||||
<li><label><span>Butt</span></label></li>
|
||||
</ol>
|
||||
</section>
|
||||
<menu>
|
||||
<button class='affirmative full'>Cancel</button>
|
||||
</menu>
|
||||
</form>
|
||||
|
||||
<form role='dialog' data-type='value-selector' id='save' class='hidden confirm'>
|
||||
<section class='scrollable'>
|
||||
<h1>Save</h1>
|
||||
<h1>Type</h1>
|
||||
<ol role='listbox'>
|
||||
<li id='exp' aria-selected='true'><label><span>Export to Image</span></label></li>
|
||||
<li id='pro'><label><span>Sketchy Project</span></label></li>
|
||||
</ol>
|
||||
<h1>Background</h1>
|
||||
<ol role='listbox'>
|
||||
<li aria-selected='true'><label><span>White</span></label></li>
|
||||
<li><label><span>Current Color</span></label></li>
|
||||
<li><label><span>Transparent</span></label></li>
|
||||
</ol>
|
||||
<h1>File Name</h1>
|
||||
<ol role='listbox'>
|
||||
<li aria-selected='true' data-input><label><span contenteditable>My Sketch</span></label></li>
|
||||
</ol>
|
||||
<br>
|
||||
<span class='special'>Note: You must disable pop-up blocker to save your sketch.</span>
|
||||
</section>
|
||||
<menu>
|
||||
<button class='affirmative' type='button'>Cancel</button>
|
||||
<button class='affirmative' type='button'>Save</button>
|
||||
</menu>
|
||||
</form>
|
||||
|
||||
<form role='dialog' data-type='value-selector' id='load' class='hidden confirm'>
|
||||
<section class='scrollable'>
|
||||
<h1>Load</h1>
|
||||
<h1 class='hidden'>file</h1>
|
||||
<ol role='listbox'>
|
||||
</ol>
|
||||
</section>
|
||||
<menu>
|
||||
<button class='affirmative' type='button'>Cancel</button>
|
||||
<button class='affirmative' type='button'>Load</button>
|
||||
</menu>
|
||||
</form>
|
||||
|
||||
|
||||
<!-- COLOR PICKER -->
|
||||
<div class='picker overlay hidden'>
|
||||
<div class='color-picker'>
|
||||
<input value='Hex' class='format' type='hidden' selected>
|
||||
<input class='color' val='#000000'>
|
||||
<div class="spectrum">
|
||||
<div>
|
||||
<div class="pin"></div>
|
||||
</div>
|
||||
</div>
|
||||
<input class="luminosity" type="range" min="0" max="100" />
|
||||
</div>
|
||||
<button class='close'>x</button>
|
||||
</div>
|
||||
|
||||
<div class='about overlay hidden'>
|
||||
<p>Sketchy</p>
|
||||
<span>Sketchy is a free sketch / paint application for Firefox.<br />Current version: 1.2</span>
|
||||
<p>Developer</p>
|
||||
<span>Sketchy was found by Mahdi Dibaiee. More info: <a href='http://about.me/mdibaiee'>About.me</a>
|
||||
<br><br>
|
||||
Contact: <br>
|
||||
<a href='https://twitter.com/mdibaiee'>Twitter</a> •
|
||||
<a href='mailto:mdibaiee@aol.com'>Email</a>
|
||||
<br><br>
|
||||
<a href='http://mdibaiee.github.io/Sketchy/changelog.html'>Changelog</a>
|
||||
</span>
|
||||
<button class='close'>x</button>
|
||||
</div>
|
||||
|
||||
<div class='tour overlay hidden'>
|
||||
<p>Tips</p>
|
||||
<span>Hey! Let me give you some tips to help you along the way,</span><br /><br />
|
||||
<span>To finish a line, hold your finger for 1 second on mobile, or double click on desktop.</span><br />
|
||||
<span>Line join, fill / stroke are applied when the line is finished.</span><br /><br />
|
||||
<span>If you found something missing, please get in touch with us.</span>
|
||||
<button class='button'>Gotcha!</button>
|
||||
<button class='close'>x</button>
|
||||
</div>
|
||||
|
||||
<div class='vote overlay hidden'>
|
||||
<p>King of Firefox OS Apps</p>
|
||||
<span>Hey! FirefoxOSGuide.com has started a competition, judging the best Firefox OS application by users' vote.</span><br /><span>Would you consider taking a few minutes to vote for us, please?</span><br /><br />
|
||||
<span>We're working to add new features to Sketchy like sharing and maybe some 'hosted' addons.</span><br /><br />
|
||||
<span>If you would like to see something in Sketchy's new version, please get in touch with us.</span>
|
||||
<br /><br />
|
||||
<a href='http://bit.ly/1irTueS'>What's your Favorite Firefox OS application?</a>
|
||||
<br />
|
||||
<a href='http://bit.ly/1hosWbM'>Original post on Firefox OS Guide</a>
|
||||
<button class='button'>OK!</button>
|
||||
<button class='close'>x</button>
|
||||
</div>
|
||||
|
||||
<!-- PRELOADER -->
|
||||
<div class='hidden'>
|
||||
<img src='css/value_selector/images/ui/pattern.png'>
|
||||
<img src='css/value_selector/images/ui/gradient.png'>
|
||||
<img src='css/value_selector/images/ui/shadow.png'>
|
||||
<img src='css/value_selector/images/ui/shadow-invert.png'>
|
||||
<img src='css/value_selector/images/icons/checked.png'>
|
||||
<img src='css/value_selector/images/ui/default.png'>
|
||||
<img src='css/value_selector/images/ui/affirmative.png'>
|
||||
</div>
|
||||
|
||||
<script src='js/libs/zepto.min.js'></script>
|
||||
<script src='js/libs/touch.js'></script>
|
||||
<script src='js/libs/color-picker-touch.js'></script>
|
||||
<script src='js/functions.js'></script>
|
||||
<script src='js/shared.js'></script>
|
||||
<script src='js/events.js'></script>
|
||||
<script src='js/diff.js'></script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
123
Android/js/diff.js
Normal file
@ -0,0 +1,123 @@
|
||||
$(document).ready(function() {
|
||||
|
||||
$('*').off('click mousemove mousedown mouseup mouseleave').on('click mousemove mousedown mouseup mouseleave', function(e) {
|
||||
e.preventDefault;
|
||||
})
|
||||
|
||||
/*$('a[href^="http"]').tap(function(e) {
|
||||
e.preventDefault();
|
||||
var href = $(this).attr('href');
|
||||
var view = new MozActivity({
|
||||
name: 'view',
|
||||
data: {
|
||||
type: 'url',
|
||||
url: href
|
||||
}
|
||||
})
|
||||
return false;
|
||||
}).click(function(e) {
|
||||
e.preventDefault();
|
||||
return false;
|
||||
})*/
|
||||
|
||||
/*$('a[href^="mailto"]').tap(function(e) {
|
||||
e.preventDefault();
|
||||
var mail = new MozActivity({
|
||||
name: 'new',
|
||||
data: {
|
||||
type: 'mail',
|
||||
url: $(this).attr('href')
|
||||
}
|
||||
})
|
||||
return false;
|
||||
}).click(function(e) {
|
||||
e.preventDefault();
|
||||
return false;
|
||||
})*/
|
||||
|
||||
window.save = function() {
|
||||
var f = c.getImageData(0, 0, width(), height());
|
||||
switch(save.background) {
|
||||
case 'white': {
|
||||
c.fillStyle = 'white';
|
||||
c.globalCompositeOperation = 'destination-over';
|
||||
c.fillRect(0, 0, width(), height());
|
||||
c.fillStyle = settings.color;
|
||||
c.globalCompositeOperation = settings.composite;
|
||||
break;
|
||||
}
|
||||
case 'current color': {
|
||||
c.fillStyle = settings.bg;
|
||||
c.globalCompositeOperation = 'destination-over';
|
||||
c.fillRect(0, 0, width(), height());
|
||||
c.globalCompositeOperation = settings.composite;
|
||||
break;
|
||||
}
|
||||
}
|
||||
var data = $c[0].toDataURL();
|
||||
if( save.type == 'sketchy project' ) {
|
||||
var list = JSON.parse(localStorage.getItem('projects'));
|
||||
var index;
|
||||
if( list && list.some(function(a, i) { if( a.name == save['file name'] ) {index = i; return true} return false }) ) {
|
||||
if( confirm('A sketch with this name already exists. Do you want to overwrite ' + save['file name'] + '?') ) {
|
||||
console.log(index);
|
||||
list[index] = {
|
||||
name: save['file name'],
|
||||
data: data,
|
||||
points: window.points,
|
||||
settings: settings
|
||||
}
|
||||
localStorage.setItem('projects', JSON.stringify(list));
|
||||
}
|
||||
}
|
||||
else {
|
||||
list ? list.push({
|
||||
name: save['file name'],
|
||||
data: data,
|
||||
points: window.points,
|
||||
settings: settings
|
||||
}) : list = [{
|
||||
name: save['file name'],
|
||||
data: data,
|
||||
points: window.points,
|
||||
settings: settings
|
||||
}];
|
||||
localStorage.setItem('projects', JSON.stringify(list));
|
||||
}
|
||||
} else {
|
||||
var sd = window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) {
|
||||
var fdata = dataToBlob(data);
|
||||
var req = fs.root.getFile(save['file name'] + '.png', {create: true}, function(file) {
|
||||
file.createWriter(function(writer) {
|
||||
writer.write(fdata);
|
||||
alert('Your Sketch was saved successfuly: ' + this.result);
|
||||
}, function() {
|
||||
alert('Something bad happened trying to save your sketch ' + save['file name'] + '\n Possible reasons:\n Duplicate Name \n Not enough permission')
|
||||
})
|
||||
})
|
||||
}, function(error) {
|
||||
alert('Couldn\'t access filesystem\n' + error.message);
|
||||
});
|
||||
}
|
||||
c.putImageData(f, 0, 0);
|
||||
}
|
||||
window.load = function() {
|
||||
var file = JSON.parse(localStorage.getItem('projects')).filter(function(a) { return a.name == load.file })[0];
|
||||
var img = document.createElement('img');
|
||||
img.src = file.data;
|
||||
img.onload = function() {
|
||||
c.clearRect(0, 0, width(), height());
|
||||
c.drawImage(img, 0, 0);
|
||||
window.points = file.points;
|
||||
window.points.history = [{ data: c.createImageData($c.width(), $c.height()), points: []}, { data: c.getImageData(0, 0, width(), height()), points: file.points}];
|
||||
$c.first().css('background', file.settings.bg);
|
||||
window.settings.bg = file.settings.bg;
|
||||
}
|
||||
}
|
||||
|
||||
if( !localStorage.getItem('sawVote') ) {
|
||||
$('.vote').removeClass('hidden');
|
||||
localStorage.setItem('sawVote', true);
|
||||
}
|
||||
|
||||
})
|
BIN
Android/res/drawable/sketchy.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
20
Gruntfile.js
@ -28,6 +28,13 @@ module.exports = function(grunt) {
|
||||
dest: 'build/mobile/js',
|
||||
filter: 'isFile'
|
||||
},
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'Android/js/',
|
||||
src: '*',
|
||||
dest: 'build/android/js',
|
||||
filter: 'isFile'
|
||||
},
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'Web/js/',
|
||||
@ -42,6 +49,7 @@ module.exports = function(grunt) {
|
||||
production: {
|
||||
files: {
|
||||
'build/mobile/css/main.css': 'Shared/css/main.less',
|
||||
'build/android/css/main.css': 'Shared/css/main.less',
|
||||
'build/web/css/main.css': 'Shared/css/main.less'
|
||||
},
|
||||
compress: true
|
||||
@ -68,6 +76,12 @@ module.exports = function(grunt) {
|
||||
src: ['index.html', 'manifest.webapp'],
|
||||
dest: 'build/mobile'
|
||||
},
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'Android',
|
||||
src: ['index.html', 'config.xml', 'res'],
|
||||
dest: 'build/android'
|
||||
},
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'Web',
|
||||
@ -84,6 +98,12 @@ module.exports = function(grunt) {
|
||||
src: '*/**',
|
||||
dest: 'build/mobile/css'
|
||||
},
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'Shared/css',
|
||||
src: '*/**',
|
||||
dest: 'build/android/css'
|
||||
},
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'Shared/css',
|
||||
|
13
Mobile/index.html
Executable file → Normal file
@ -238,6 +238,19 @@
|
||||
<button class='close'>x</button>
|
||||
</div>
|
||||
|
||||
<div class='vote overlay hidden'>
|
||||
<p>King of Firefox OS Apps</p>
|
||||
<span>Hey! FirefoxOSGuide.com has started a competition, judging the best Firefox OS application by users' vote.</span><br /><span>Would you consider taking a few minutes to vote for us, please?</span><br /><br />
|
||||
<span>We're working to add new features to Sketchy like sharing and maybe some 'hosted' addons.</span><br /><br />
|
||||
<span>If you would like to see something in Sketchy's new version, please get in touch with us.</span>
|
||||
<br /><br />
|
||||
<a href='http://bit.ly/1irTueS'>What's your Favorite Firefox OS application?</a>
|
||||
<br />
|
||||
<a href='http://bit.ly/1hosWbM'>Original post on Firefox OS Guide</a>
|
||||
<button class='button'>OK!</button>
|
||||
<button class='close'>x</button>
|
||||
</div>
|
||||
|
||||
<!-- PRELOADER -->
|
||||
<div class='hidden'>
|
||||
<img src='css/value_selector/images/ui/pattern.png'>
|
||||
|
@ -111,9 +111,9 @@ $(document).ready(function() {
|
||||
}
|
||||
}
|
||||
|
||||
if( localStorage.getItem('sawTips') != settings.version ) {
|
||||
$('.tour').removeClass('hidden');
|
||||
localStorage.setItem('sawTips', settings.version);
|
||||
if( !localStorage.getItem('sawVote') ) {
|
||||
$('.vote').removeClass('hidden');
|
||||
localStorage.setItem('sawVote', true);
|
||||
}
|
||||
|
||||
})
|
||||
|
6
Mobile/manifest.webapp
Executable file → Normal file
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "Sketchy",
|
||||
"description": "Free Sketch/Paint app",
|
||||
"version": "1.2",
|
||||
"description": "Free full-featured Sketch app",
|
||||
"version": "1.2.1",
|
||||
"fullscreen": "true",
|
||||
"type": "privileged",
|
||||
"launch_path": "/index.html",
|
||||
@ -18,7 +18,7 @@
|
||||
},
|
||||
"developer": {
|
||||
"name": "Mahdi Dibaiee",
|
||||
"url": "https://twitter.com/mdibaiee"
|
||||
"url": "http://dibaiee.ir/"
|
||||
},
|
||||
"locales": {
|
||||
"en": {
|
||||
|
0
Shared/css/color-picker.less
Executable file → Normal file
0
Shared/css/fonts.less
Executable file → Normal file
0
Shared/css/fonts/MozTT-Bold.ttf
Executable file → Normal file
0
Shared/css/fonts/MozTT-Light.ttf
Executable file → Normal file
0
Shared/css/fonts/MozTT-Medium.ttf
Executable file → Normal file
0
Shared/css/fonts/MozTT-Regular.ttf
Executable file → Normal file
0
Shared/css/imgs/bg_overlay_pressed_1.png
Executable file → Normal file
Before Width: | Height: | Size: 93 B After Width: | Height: | Size: 93 B |
0
Shared/css/imgs/bg_overlay_pressed_2.png
Executable file → Normal file
Before Width: | Height: | Size: 94 B After Width: | Height: | Size: 94 B |
0
Shared/css/imgs/clear.png
Executable file → Normal file
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
0
Shared/css/imgs/div_line_lg_black.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
Shared/css/imgs/div_line_sm_black.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
Shared/css/imgs/download.png
Executable file → Normal file
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
0
Shared/css/imgs/header_bg_black.png
Executable file → Normal file
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
0
Shared/css/imgs/load.png
Executable file → Normal file
Before Width: | Height: | Size: 413 B After Width: | Height: | Size: 413 B |
0
Shared/css/imgs/menu.png
Executable file → Normal file
Before Width: | Height: | Size: 182 B After Width: | Height: | Size: 182 B |
0
Shared/css/imgs/redo.png
Executable file → Normal file
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
0
Shared/css/imgs/settings.png
Executable file → Normal file
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
0
Shared/css/imgs/undo.png
Executable file → Normal file
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
0
Shared/css/main.css
Executable file → Normal file
10
Shared/css/main.less
Executable file → Normal file
@ -87,7 +87,7 @@ button {
|
||||
left: 97%;
|
||||
}
|
||||
|
||||
.picker, .about, .tour {
|
||||
.picker, .about, .tour, .vote {
|
||||
font-family: 'MozTT-Light';
|
||||
width: 30rem;
|
||||
height: 24.6rem;
|
||||
@ -102,7 +102,7 @@ button {
|
||||
}
|
||||
}
|
||||
|
||||
.about, .tour {
|
||||
.about, .tour, .vote {
|
||||
background: #262626;
|
||||
padding: 1rem 2rem;;
|
||||
height: 23rem;
|
||||
@ -130,7 +130,7 @@ button {
|
||||
}
|
||||
}
|
||||
|
||||
.tour {
|
||||
.tour, .vote {
|
||||
.button {
|
||||
width: 30rem;
|
||||
position: absolute;
|
||||
@ -139,6 +139,10 @@ button {
|
||||
}
|
||||
}
|
||||
|
||||
.vote {
|
||||
height: 30rem;
|
||||
}
|
||||
|
||||
header {
|
||||
width: 100%;
|
||||
height: 5.3rem;
|
||||
|
0
Shared/css/seekbars.less
Executable file → Normal file
0
Shared/css/seekbars/images/ui/handler.png
Executable file → Normal file
Before Width: | Height: | Size: 636 B After Width: | Height: | Size: 636 B |
0
Shared/css/seekbars/images/ui/handler@1.5x.png
Executable file → Normal file
Before Width: | Height: | Size: 960 B After Width: | Height: | Size: 960 B |
0
Shared/css/seekbars/images/ui/handler@2x.png
Executable file → Normal file
Before Width: | Height: | Size: 938 B After Width: | Height: | Size: 938 B |
0
Shared/css/seekbars/seekbars.css
Executable file → Normal file
0
Shared/css/switches.less
Executable file → Normal file
0
Shared/css/switches/images/check/danger.png
Executable file → Normal file
Before Width: | Height: | Size: 583 B After Width: | Height: | Size: 583 B |
0
Shared/css/switches/images/check/danger@1.5x.png
Executable file → Normal file
Before Width: | Height: | Size: 946 B After Width: | Height: | Size: 946 B |
0
Shared/css/switches/images/check/danger@2x.png
Executable file → Normal file
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
0
Shared/css/switches/images/check/default.png
Executable file → Normal file
Before Width: | Height: | Size: 583 B After Width: | Height: | Size: 583 B |
0
Shared/css/switches/images/check/default@1.5x.png
Executable file → Normal file
Before Width: | Height: | Size: 946 B After Width: | Height: | Size: 946 B |
0
Shared/css/switches/images/check/default@2x.png
Executable file → Normal file
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
0
Shared/css/switches/images/radio/danger.png
Executable file → Normal file
Before Width: | Height: | Size: 578 B After Width: | Height: | Size: 578 B |
0
Shared/css/switches/images/radio/danger@1.5x.png
Executable file → Normal file
Before Width: | Height: | Size: 893 B After Width: | Height: | Size: 893 B |
0
Shared/css/switches/images/radio/danger@2x.png
Executable file → Normal file
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
0
Shared/css/switches/images/radio/default.png
Executable file → Normal file
Before Width: | Height: | Size: 575 B After Width: | Height: | Size: 575 B |
0
Shared/css/switches/images/radio/default@1.5x.png
Executable file → Normal file
Before Width: | Height: | Size: 889 B After Width: | Height: | Size: 889 B |
0
Shared/css/switches/images/radio/default@2x.png
Executable file → Normal file
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
0
Shared/css/switches/images/switch/background.png
Executable file → Normal file
Before Width: | Height: | Size: 755 B After Width: | Height: | Size: 755 B |
0
Shared/css/switches/images/switch/background@1.5x.png
Executable file → Normal file
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
0
Shared/css/switches/images/switch/background_off.png
Executable file → Normal file
Before Width: | Height: | Size: 475 B After Width: | Height: | Size: 475 B |
0
Shared/css/switches/images/switch/background_off@1.5x.png
Executable file → Normal file
Before Width: | Height: | Size: 616 B After Width: | Height: | Size: 616 B |
0
Shared/css/value_selector.less
Executable file → Normal file
0
Shared/css/value_selector/images/icons/checked.png
Executable file → Normal file
Before Width: | Height: | Size: 177 B After Width: | Height: | Size: 177 B |
0
Shared/css/value_selector/images/icons/checked@1.5x.png
Executable file → Normal file
Before Width: | Height: | Size: 392 B After Width: | Height: | Size: 392 B |
0
Shared/css/value_selector/images/icons/checked@2x.png
Executable file → Normal file
Before Width: | Height: | Size: 601 B After Width: | Height: | Size: 601 B |
0
Shared/css/value_selector/images/ui/affirmative.png
Executable file → Normal file
Before Width: | Height: | Size: 101 B After Width: | Height: | Size: 101 B |
0
Shared/css/value_selector/images/ui/default.png
Executable file → Normal file
Before Width: | Height: | Size: 82 B After Width: | Height: | Size: 82 B |
0
Shared/css/value_selector/images/ui/gradient.png
Executable file → Normal file
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
0
Shared/css/value_selector/images/ui/gradient@1.5x.png
Executable file → Normal file
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 7.7 KiB |
0
Shared/css/value_selector/images/ui/pattern.png
Executable file → Normal file
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.7 KiB |
0
Shared/css/value_selector/images/ui/shadow-invert.png
Executable file → Normal file
Before Width: | Height: | Size: 83 B After Width: | Height: | Size: 83 B |
0
Shared/css/value_selector/images/ui/shadow-invert@1.5x.png
Executable file → Normal file
Before Width: | Height: | Size: 154 B After Width: | Height: | Size: 154 B |
0
Shared/css/value_selector/images/ui/shadow-invert@2x.png
Executable file → Normal file
Before Width: | Height: | Size: 86 B After Width: | Height: | Size: 86 B |
0
Shared/css/value_selector/images/ui/shadow.png
Executable file → Normal file
Before Width: | Height: | Size: 82 B After Width: | Height: | Size: 82 B |
0
Shared/css/value_selector/images/ui/shadow@1.5x.png
Executable file → Normal file
Before Width: | Height: | Size: 154 B After Width: | Height: | Size: 154 B |
0
Shared/css/value_selector/images/ui/shadow@2x.png
Executable file → Normal file
Before Width: | Height: | Size: 87 B After Width: | Height: | Size: 87 B |
0
Shared/img/icons/MozillaFXOSIconTemplate1_overlay.png
Executable file → Normal file
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
0
Shared/img/icons/icon120.png
Executable file → Normal file
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 8.0 KiB |
0
Shared/img/icons/icon128.png
Executable file → Normal file
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8.9 KiB |
0
Shared/img/icons/icon16.png
Executable file → Normal file
Before Width: | Height: | Size: 738 B After Width: | Height: | Size: 738 B |
0
Shared/img/icons/icon2.png
Executable file → Normal file
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 7.2 KiB |
0
Shared/img/icons/icon2.svg
Executable file → Normal file
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
0
Shared/img/icons/icon32.png
Executable file → Normal file
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
0
Shared/img/icons/icon48.png
Executable file → Normal file
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
0
Shared/img/icons/icon60.png
Executable file → Normal file
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
0
Shared/img/icons/icon64.png
Executable file → Normal file
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
0
Shared/img/icons/icon90.png
Executable file → Normal file
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
2
Shared/js/events.js
Executable file → Normal file
@ -240,7 +240,7 @@ $(document).ready(function() {
|
||||
}
|
||||
})
|
||||
|
||||
$('.close, .tour button').on('click tap', function() {
|
||||
$('.close, .tour button, .vote button').on('click tap', function() {
|
||||
$(this).parent().addClass('hidden');
|
||||
$('body').off('click tap');
|
||||
})
|
||||
|
0
Shared/js/functions.js
Executable file → Normal file
0
Shared/js/libs/color-picker-touch.js
Executable file → Normal file
0
Shared/js/libs/color-picker.js
Executable file → Normal file
0
Shared/js/libs/mobilebrowsers.js
Executable file → Normal file
0
Shared/js/libs/stack.js
Executable file → Normal file
0
Shared/js/libs/touch.js
Executable file → Normal file
0
Shared/js/libs/yepnope.min.js
vendored
Executable file → Normal file
0
Shared/js/libs/zepto.min.js
vendored
Executable file → Normal file
0
Web/cache.appcache
Executable file → Normal file
0
Web/index.html
Executable file → Normal file
0
Web/js/main.js
Executable file → Normal file
0
Web/manifest.webapp
Executable file → Normal file
9
build/android/.cordova/config.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"lib": {
|
||||
"www": {
|
||||
"id": "com.mdibaiee.sketchy",
|
||||
"version": "1.2.0",
|
||||
"uri": "https://mdibaiee.github.io/Sketchy/build/web/"
|
||||
}
|
||||
}
|
||||
}
|
BIN
build/android/android.zip
Normal file
20
build/android/config.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<widget id='com.mdibaiee.sketchy' version='1.2.1'>
|
||||
|
||||
<name>Sketchy</name>
|
||||
<description>
|
||||
Free full-featured Sketch app
|
||||
</description>
|
||||
<author email='mdibaiee@aol.com' href='http://dibaiee.ir'>
|
||||
Mahdi Dibaiee
|
||||
</author>
|
||||
<content src='index.html'/>
|
||||
<access origin='*'/>
|
||||
|
||||
<preference name='KeepRunning' value='false'/>
|
||||
<preference name='SplashScreen' value='sketchy'/>
|
||||
<preference name='SetFullScreen' value='true'/>
|
||||
<preference name='FullScreen' value='true'/>
|
||||
<preference name='DisallowOverscroll' value='true'/>
|
||||
</widget>
|
||||
|
||||
|
BIN
build/android/css/fonts/MozTT-Bold.ttf
Normal file
BIN
build/android/css/fonts/MozTT-Light.ttf
Normal file
BIN
build/android/css/fonts/MozTT-Medium.ttf
Normal file
BIN
build/android/css/fonts/MozTT-Regular.ttf
Normal file
BIN
build/android/css/imgs/bg_overlay_pressed_1.png
Normal file
After Width: | Height: | Size: 93 B |