Скрипты для foo_uie_wsh_panel_mod

Список разделов foobar2000 Секреты foobar2000

Описание: Кнопочки, конфиги, секреты, советы.

Сообщение #201 AHAPXICT » 24.01.2015, 01:12

kgena_ua, Спасибо. Вы мне правильно подсказали по поводу градиента. Когда увлекаешься эфектами уже трудно остановится, в общем убрал с текста, и всё лишнее покосил косой))). В сотый раз переделал, надеюсь не испортил вашу концепцию бегущей строки. С массивом разберусь позже, пока это сложно для меня, хотелось сократить длинные строки с блоками. А расстояние между строками достаточное, это у меня уже "бзихи" начались на почве улучшений))))
Вот пока финальная версия для v3.1 которую уже включил в свою модификацию. Подписал как v2.0
Код: Выделить всё
// Scroll Text
// author kgena_ua
// modifed AHAPXICT for DarkOne v3.1 by tedGo
// version 2.0
// WSH Panel Mod component by Tianpeng Wang

function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }
function RGBA(r, g, b, a) { return ((a << 24) | (r << 16) | (g << 8) | (b)); }
MF_SEPARATOR = 0x00000800;
MF_STRING = 0x00000000;
var font = gdi.Font("DarkOne",57,0);  //FONT
var ww,wh;

var txt_row = 4;
var s = 10, step, step1 = window.Width, step2 = window.Width;
var text1, text2, t_width, t_width1, t_width2, dir, mode, sw = 1;
var t1 = "", t2 = "", t3 = "", ti = "";
var show1, show2, show3, showi, showr;

function on_paint(gr) {

    if (window.GetProperty("|6| Color") == 1) var font_rgb = RGB(191,228,255), block_rgb = RGB(133,159,178);   //Default   
    if (window.GetProperty("|6| Color") == 2) var font_rgb = RGB(128,192,255), block_rgb = RGB(91,136,178);   //Blue   
    if (window.GetProperty("|6| Color") == 3) var font_rgb = RGB(0,255,0), block_rgb = RGB(0,178,0);       //Green   
    if (window.GetProperty("|6| Color") == 4) var font_rgb = RGB(255,0,0), block_rgb = RGB(255,0,0);       //Red   
    if (window.GetProperty("|6| Color") == 5) var font_rgb = RGB(255,255,255), block_rgb = RGB(178,178,178);   //White   
    if (window.GetProperty("|6| Color") == 6) var font_rgb = RGB(255,255,0), block_rgb = RGB(178,178,0);     //Yellow

    show1 = window.GetProperty("|1| Title",1);
    show2 = window.GetProperty("|2| Artist",1);
    show3 = window.GetProperty("|3| Album",1);
    mode = window.GetProperty("|5| Mode",1);
    showi = window.GetProperty("|4| Info",1);
   
    if (show1 == 1) {t1 = fb.TitleFormat("$upper([%title%])").Eval();
    } else {t1 = "";}

    if (show2 == 1) {t2 = fb.TitleFormat("$upper([%artist%])").Eval();
    } else {t2 = "";}

    if (show3 == 1) {t3 = fb.TitleFormat("$upper([%album%])[ - %date%]").Eval();
    } else {t3 = "";}
   
    if (showi == 1) {ti = fb.TitleFormat("[$info(encoding)][ | $info(codec)][ $info(codec_profile)][ | $info(bitrate) kbps][ | $info(samplerate) Hz][ | $info(bitspersample) bps][ | $channels()]$if($stricmp($ext(%filename_ext%),cue), | '['cue']',[ | %filesize_natural%])$if($strcmp($info(cue_embedded),yes), | '['embedded cue']',)").Eval();
    } else {ti = "";}
 
    text1 = t1 + (show1 > 0 && t2 != "" ? " - " : "") + t2 + ((show1 > 0 || show2 > 0) && t3 != "" ? " - " : "") + t3;
    text2 = showi == 1 ? ti : text1;
    text1 = showi == 1 && text1 == "" ? text2 : text1;
    t_width2 = gr.CalcTextWidth(text2, font);
    t_width1 = gr.CalcTextWidth(text1, font);
   
    if (mode == 1) {
        step = sw == 1 ? step1 : step2;
        t_width = sw == 1 ? t_width1 : t_width2;
        if (sw == 1) {step2 = ww};
        if (sw == 2) {step1 = ww};
        if (t_width < ww - s * 2) {
            if (step >= ww) {dir = "left"; step = ww };
            if (step + t_width >= ww - s) {dir = "left"};
            if (step <= 0 + s) {dir = "right"};
        } else {
            if (step + t_width <= ww - s) {dir = "right"};
            if (step >= 0 + s) {dir = "left"};
        }
    }
    if (mode == 0) { dir = "left";
        if (sw == 1) {
            if (step1 + t_width1 > ww/2) {step2 = ww};
            if (step1 + t_width1 <= 0) {step1 = ww; sw = 2};

        } else {
            if (step2 + t_width2 > ww/2) {step1 = ww};
            if (step2 + t_width2 <= 0) {step2 = ww; sw = 1};
        }
    }
   
// ========BLOCKS======== //
    gr.GdiDrawText( "\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598", font, block_rgb, 0, txt_row, ww, wh);
// ========GRADIENT======== // 
    var alpha = 235;
    if (window.GetProperty("|7| Matrix") == 7) var alpha = 235;
    if (window.GetProperty("|7| Matrix") == 8) var alpha = 255;
    gr.FillGradRect(0, -4, ww, 84, 90, RGBA(80,100,114,alpha), RGBA(19,30,38,alpha));   
// ========TEXT======== //
    gr.GdiDrawText( text1, font, font_rgb, step1, txt_row, t_width1, wh);
    gr.GdiDrawText( text2, font, font_rgb, step2, txt_row, t_width2, wh);

}

function on_size(){   
    ww = window.Width;   
    wh = window.Height;   
}   

var seek_timer;
var speed = window.GetProperty("|8| Speed Scroll", 50);
function on_playback_new_track(info) {
    seek_timer && window.ClearInterval(seek_timer);
    seek_timer = window.SetInterval(function() {
        if (dir == "right") {step1 = step1 + 1};
        if (dir == "right") {step2 = step2 + 1};
        if (dir == "left") {step1 = step1 - 1};
        if (dir == "left") {step2 = step2 - 1};
    window.Repaint();
    }, speed );
}

function on_playback_stop() {
    window.ClearInterval(seek_timer);
    window.Repaint();
}

function on_playback_time(){
    if(!seek_timer) on_playback_new_track();
}

function on_mouse_lbtn_up (x, y){     
    var _menu = window.CreatePopupMenu();
    var i = 1;
   
    _menu.AppendMenuItem(0x00000000, i++, "title");
    _menu.CheckMenuItem(i-1, show1);   
    _menu.AppendMenuItem(0x00000000, i++, "artist");
    _menu.CheckMenuItem(i-1, show2);   
    _menu.AppendMenuItem(0x00000000, i++, "album");
    _menu.CheckMenuItem(i-1, show3);
    _menu.AppendMenuItem(0x00000000, i++, "info");
    _menu.CheckMenuItem(i-1, showi);
    _menu.AppendMenuItem(0x00000000, i++, "scrolling mode: " + (mode == 0 ? "L-R" : "L"));

    ret = _menu.TrackPopupMenu(x, y);
    if (ret == 0) return;

    switch (ret) {
    case 1:
        window.SetProperty("|1| Title", show1 == 0 ? 1 : 0);
        break;
    case 2:
        window.SetProperty("|2| Artist", show2 == 0 ? 1 : 0);
        break;
    case 3:
        window.SetProperty("|3| Album", show3 == 0 ? 1 : 0);
        break;
    case 4:
        window.SetProperty("|4| Info", showi == 0 ? 1 : 0);
        break;
    case 5:
        window.SetProperty("|5| Mode", mode == 0 ? 1 : 0);
        break;
    }
    _menu.Dispose();
    return true;
}
// ========Menu======== //
function on_mouse_rbtn_up(x, y) {

    var _menu = window.CreatePopupMenu();
   
    _menu.AppendMenuItem(MF_STRING, 1, "Default");
    _menu.AppendMenuItem(MF_STRING, 2, "Blue");
    _menu.AppendMenuItem(MF_STRING, 3, "Green");
    _menu.AppendMenuItem(MF_STRING, 4, "Red");
    _menu.AppendMenuItem(MF_STRING, 5, "White");
    _menu.AppendMenuItem(MF_STRING, 6, "Yellow")
    _menu.CheckMenuRadioItem(1, 6, window.GetProperty("|6| Color", 1));   
    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0)
    _menu.AppendMenuItem(MF_STRING, 7, "Matrix ON")
    _menu.AppendMenuItem(MF_STRING, 8, "Matrix OFF")
    _menu.CheckMenuRadioItem(7, 8, window.GetProperty("|7| Matrix", 7));
    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0)
    _menu.AppendMenuItem(MF_STRING, 9, "Properties...");
    _menu.AppendMenuItem(MF_STRING, 10, "Configure...");

    idx = _menu.TrackPopupMenu(x, y);
    switch (idx) {

    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
        window.SetProperty("|6| Color", idx);   
        window.Repaint();   
        break;   
    case 7:
    case 8:   
        window.SetProperty("|7| Matrix", idx);   
        window.Repaint();   
        break;     
   
    case 9:
        window.ShowProperties();
        break;
    case 10:
        window.ShowConfigure();
        break;
}
    _menu.Dispose();
return true
}
Ещё раз спасибо :beer:
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 11 лет

Сообщение #202 iprad » 24.01.2015, 11:40

foo_uie_wsh_panel_mod_plus.dll - кто пробовал использовать этого "зверя"?
Судя по функционалу(проверил) - может заменить UI Hacks в части размеров, позиции окна, эффекта AERO(причем не только родительского)... Жаль что обсуждение на китайском...
Немного поковырял его - доступ к Windows API (не ко всем функциям конечно :twisted: ). Кто не знает, что это такое - поясню. Windows API-это основа Windows. UI Hacks - это яркий пример доступа к функциям Windows API. Когда с окнами "винды" можно делать всё что хочешь :smile: По этому его и банят...(UI Hacks). Недавно сам видел на немецком форуме -"Не используйте сборки из России - там "ВЕЗДЕ ВИРУСЫ!!! и нарушение авторских прав" :wink: И они ВЕРЯТ!!! :eek:
iprad M
Аватара
Репутация: 89
С нами: 11 лет 8 месяцев

Сообщение #203 vladj » 26.01.2015, 23:45

Спасибо конечно за бегущую строку...только почему не совместить с сикбаром её ? Не...я конечно попробую, но
вряд-ли получится. Я удалил несколько строчек правда ...
Код: Выделить всё
// ========BLOCKS======== //
    gr.GdiDrawText( "\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598\u2598", font, block_rgb, 0, txt_row, ww, wh);
// ========GRADIENT======== //
    var alpha = 235;
    if (window.GetProperty("|7| Matrix") == 7) var alpha = 235;
    if (window.GetProperty("|7| Matrix") == 8) var alpha = 255;
    gr.FillGradRect(0, -4, ww, 84, 90, RGBA(80,100,114,alpha), RGBA(19,30,38,alpha));
и прозрачность включил (у меня почти везде так сикбар заделан). Получилось, что инфа просто по бэкграунду идёт...
Изображение
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 9 месяцев

Сообщение #204 kgena_ua » 27.01.2015, 00:20

vladj:...только почему не совместить с сикбаром
vladj, да я под сикбар и делал.
Безымянный.png


А скрипт выложил отдельно - можно встроить в сикбар, можно отдельной панелькой, по усмотрению пользователя.
И дополнительно для сикбара function on_playback_new_track(info) { ... с таймером перерисовки делает движение ползунка более плавным (без скачка через секунду).
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #205 kgena_ua » 29.01.2015, 17:19

На любителя...
Обновлен скрипт поиска - добавлена возможность выбора тэгов, по которым можно производить поиск.
Безымянный.png



macarych,
1. В предыдущем скрипте ошибка. Т.к. fb.PlaylistCount возвращает значения начиная с 0, исправил: for (var i = 0; i < remove_idx; i++) {
2. Действия при не "нахождении":
- на пустой плейлист - все заремить (стр. 126 - 128);
- или варианты - оставить одну из строк.
3. Размеры:
- размер шрифта var font = gdi.Font("arial",11,1);, стр.3.
- высота строки t_height = gr.CalcTextheight("abc", font) + 2;, стр.28. (выравнивание по центру по вертикали и горизонтали)
Код: Выделить всё
function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }

var font = gdi.Font("arial",11,1);
var ww = window.Width;   
var wh = window.Height; 

DT_CENTER = 0x00000001;
DT_RIGHT = 0x00000002;
DT_SINGLELINE = 0x00000020;
DT_VCENTER = 0x00000004;

var t_row = 1, t_row1, t_row2, t_height;
var string = "", search_query;
var tag_search = window.GetProperty("tag_search", 1);
var previous_pll = plman.ActivePlaylist;

var sort = "%album artist%|%date%|%album%|%discnumber%|%tracknumber%|%title%";
var on_mouse = false;
var ab, ab1, ab2;
var ab_I, ab_C, ab_F;
var it, it1, it2;
var line1, line2;
var lang = 1;

function on_paint(gr) {
    gr.FillSolidRect (0, 0, ww, wh, RGB(30,30,30));
   
    t_height = gr.CalcTextheight("abc", font) + 2;
    t_row1 = t_row + t_height + 0;
    t_row2 = t_row1 + t_height + 0;

    ab_I = Array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","<","...")
    ab_F = Array("1","2","3","4","5","6","7","8","9","0",".",",","-",":"," ","<","...")
    ab_C = Array("А","Б","В","Г","Д","Е","Ё","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю","Я"," ","<","...")   

    if (lang == 1) ab = ab_I.concat("ая","09");
    if (lang == 2) ab = ab_C.concat("az","09");
    if (lang == 3) ab = ab_F.concat("az","ая");
       
    it = ab.length;

    it1 = Math.round(it/2);
    it2 = it - it1;
    ab1 = ab.splice(0,it1);
    ab2 = ab.splice(0,it2);

    if(on_mouse && line1) gr.FillSolidRect (x_col1, t_row1, ww / it1, t_height, RGB(100,100,100));
    if(on_mouse && line2) gr.FillSolidRect (x_col2, t_row2, ww / it2, t_height, RGB(100,100,100));

    gr.GdiDrawText(string, font, search ? RGB(0,157,255) : RGB(140,164,179), 10, t_row, ww , t_height, DT_SINGLELINE | DT_VCENTER);

    for (var i = 0; i < it1; i = i + 1) {
        color = x_color > ww / it1 * i && x_color < ww / it1 * (i + 1) && on_mouse && line1 ? RGB(0,157,255) : RGB(140,164,179);
        gr.GdiDrawText(ab1[i] == " " ? "_" : ab1[i], font, color, ww / it1 * i, t_row1, ww / it1 , t_height, DT_CENTER |DT_SINGLELINE | DT_VCENTER);   
    }
   
    for (var i = 0; i < it2; i = i + 1) {
        color = x_color > ww / it2 * i && x_color < ww / it2 * (i + 1) && on_mouse && line2 ? RGB(0,157,255) : RGB(140,164,179);
        gr.GdiDrawText(ab2[i] == " " ? "_" : ab2[i], font, color, ww / it2 * i, t_row2, ww / it2 , t_height, DT_CENTER |DT_SINGLELINE | DT_VCENTER);   
    }

//    gr.GdiDrawText(search, font, RGB(200,200,200), 20, 48, ww  , t_height);
}

var ch;

function on_mouse_lbtn_up (x, y){
    if (!line1 && !line2) return; // ???
    if (!search) previous_pll = plman.ActivePlaylist;
    library_view_idx();
   
    for (var i = 0; i <= it1; i = i + 1) {
        if (x > ww / it1 * i && x < ww / it1 * (i + 1) && line1) {ch = ab1[i]}
    }
    for (var i = 0; i <= it2; i = i + 1) {
        if (x > ww / it2 * i && x < ww / it2 * (i + 1) && line2) {ch = ab2[i]}
    }

    if (ch == "az") {ch = ""; lang = 1; return};
    if (ch == "ая") {ch = ""; lang = 2; return};
    if (ch == "09") {ch = ""; lang = 3; return};
    if (ch == "<")  {ch = ""; string = string.substring(0,string.length - 1)};   
    if (ch == "..."){ch = ""; string = ""};

    string = string + ch;   
    string = string.charAt(0) == " " ? "" : string;
    string = string.replace("  "," ");
    if (string.length > 0 || search) pll_search();
}

var search = false;
var count;

function pll_search() {
   
    remove_pll("search");
   
    switch(tag_search) {
        case 1:
            search_query = "%artist% HAS " + string + " OR " + "%album% HAS " + string + " OR " + "%title% HAS " + string + " OR " + "%genre% HAS " + string + " OR " + "%date% HAS " + string;
            break;
        case 2:
            search_query = "%artist% HAS " + string;
            break;
        case 3:
            search_query = "%album% HAS " + string;
            break;
        case 4:
            search_query = "%title% HAS " + string;
            break;
        case 5:
            search_query = "%genre% HAS " + string;
            break;
        case 6:
            search_query = "%date% HAS " + string;
            break;
    }
   
    idx = plman.PlaylistCount;
    fb.CreateAutoPlaylist(idx, "search", search_query, sort, 0);
    count = fb.PlaylistItemCount(idx)
   
    if (count > 0) {
        fb.ActivePlaylist = idx; search = true
    } else {
        fb.ActivePlaylist = previous_pll;   // ???
//        fb.ActivePlaylist = 0;            // ???
//        fb.ActivePlaylist = lib_v_idx;    // ???
        remove_pll("search");
        search = false;
    }
}

function remove_pll(pll_name){
    search = false;
    remove_idx = fb.PlaylistCount;
    for (var i = 0; i < remove_idx; i++) {
       if (fb.GetPlaylistName(i) == pll_name) {fb.RemovePlaylist(i)}
    }
}

var lib_v_idx;
function library_view_idx(){
    idx = fb.PlaylistCount;
    for (var i = 0; i < idx; i++) {
       if (fb.GetPlaylistName(i) == "Library view") {lib_v_idx = i}
    }
}

function on_playback_starting(cmd, is_paused) {
    string = "";
    search = false;
    if (fb.GetPlaylistName(fb.ActivePlaylist) != "search") {remove_pll("search");}
}

var x_col1, x_col2;
var y_row;
var x_color;

function on_mouse_move(x,y) {
    window.SetCursor(32649);
    on_mouse = true;
    line1 = y_row < t_row1 + t_height ? true : false;
//    line1 = y_row > t_row1 && y_row < t_row1 + t_height ? true : false;
    line2 = y_row > t_row2 ? true : false;
    y_row = y;
    x_color = x;

    for (var i = 0; i < it1; i = i + 1) {
        if (x > ww / it1 * i) {x_col1 = ww / it1 * i}             
    }
    for (var i = 0; i < it2; i = i + 1) {
        if (x > ww / it2 * i) {x_col2 = ww / it2 * i}             
    }
    window.Repaint();
}

function on_size(){   
    ww = window.Width;   
    wh = window.Height;   
}   

function on_mouse_leave() {
    window.SetCursor(32512);
    on_mouse = false;
    window.Repaint();
}

function on_mouse_rbtn_up (x, y){ 
    var _menu = window.CreatePopupMenu();
    var i = 1;

    _menu.AppendMenuItem(0x00000000, i++, "all");
    _menu.AppendMenuItem(0x00000000, i++, "artist");
    _menu.AppendMenuItem(0x00000000, i++, "album");
    _menu.AppendMenuItem(0x00000000, i++, "title");
    _menu.AppendMenuItem(0x00000000, i++, "genre");
    _menu.AppendMenuItem(0x00000000, i++, "date");

    _menu.CheckMenuRadioItem(1, 6, tag_search);
    _menu.EnableMenuItem(tag_search, 1);   
   
    _menu.AppendMenuItem(0x00000800, 0, 0);   
    _menu.AppendMenuItem(0x00000000, 10, "Configure ...");

    ret = _menu.TrackPopupMenu(x, y);
    if (ret == 0) return;

    switch (ret) {
    case 1:
        tag_search = 1;
        window.SetProperty("tag_search", 1);
        if (string.length > 0) pll_search();
        break;
    case 2:
        tag_search = 2;
        window.SetProperty("tag_search", 2);
        if (string.length > 0) pll_search();
        break;
    case 3:
        tag_search = 3;
        window.SetProperty("tag_search", 3);
        if (string.length > 0) pll_search();
        break;
    case 4:
        tag_search = 4;
        window.SetProperty("tag_search", 4);
        if (string.length > 0) pll_search();
        break;
    case 5:
        tag_search = 5;
        window.SetProperty("tag_search", 5);
        if (string.length > 0) pll_search();
        break;
    case 6:
        tag_search = 6;
        window.SetProperty("tag_search", 6);
        if (string.length > 0) pll_search();
        break;
    case 10:   
        window.ShowConfigure();   
        break;   
    }
    _menu.Dispose();
    return true;
}
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #206 macarych » 29.01.2015, 19:17

kgena_ua, спасибо.
Подпишите скрипт, он того стоит.
macarych M
Аватара
Репутация: 417
С нами: 15 лет 10 месяцев

Сообщение #207 kgena_ua » 29.01.2015, 23:33

macarych, да это Вам спасибо. Давно хотел сделать поиск. А Вы подкинули задачу, решением которой стал поиск более оригинальный чем просто ввод символов с клавиатуры. :beer:
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #208 AHAPXICT » 31.01.2015, 01:32

kgena_ua, поддерживаю macarych, подписываейте ваши скрипты они того стоят :beer:
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 11 лет

Сообщение #209 macarych » 31.01.2015, 10:46

kgena_ua:добавлена возможность выбора тэгов, по которым можно производить поиск.
kgena_ua, если не трудно, можете трансформировать эту менюшку в 4-ю, нижнюю строчку, в виде текстовых кнопок, с таким же механизмом действия, я имею в виду визуальное отображение нажатия, как у букв алфавита? Это было бы логично для управления пальцем.

Ваш скрипт в действии.

phpBB [media]
macarych M
Аватара
Репутация: 417
С нами: 15 лет 10 месяцев

Сообщение #210 vladj » 31.01.2015, 11:59

По кнопочкам и эффектам нажатия на них...на домашнем компе всё смотрится здорово, курсор подвёл и кнопочка поменялась
на нажатую. Для мониторов с тачем эта фишка совсем бесполезна, ибо просто не успеет показатся вторая, нажатая. Переключение
при легчайшем прикосновении пальцем происходит практически мгновенно. Поэтому для мониторов с тачем нажатую кнопку делать
бессмысленно, мы её никогда не увидим. ps. (или я опять не о том ?)
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 9 месяцев

Сообщение #211 macarych » 31.01.2015, 12:38

Да нет, само-собой тебе в машине виднее чем мне за столом. Но должна же быть какая-нибудь индикация действия? Буковки алфавита подсвечиваются при нажатии, вот примерно так же...
macarych M
Аватара
Репутация: 417
С нами: 15 лет 10 месяцев

Сообщение #212 vladj » 31.01.2015, 17:01

macarych:Но должна же быть какая-нибудь индикация действия?
Согласен, но индикация нажатой справедлива только для той кнопки, которая нажата и остаётся нажатой. И индикация на кнопке должна
быть "кричащая". Этот замечательный эффект по кромкам нажата-не нажата на ходу в машине вообще не заметить. А вот когда надпись (цвет)
в кнопке меняется, то это конечно заметней. Но в принципе в твоей последней концепции для авто мало или почти нет кнопок, где нам индикация
нажатой нужна. Там ведь или по кольцу или при тычке в кнопку мы видим уже другие.
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 9 месяцев

Сообщение #213 kgena_ua » 01.02.2015, 20:37

macarych, Будет добавлено меню третьей строкой. Как, пока не знаю. Только будет сделано. В данный момент немного .... я думаю Вы поймете.
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #214 kgena_ua » 02.02.2015, 16:17

Добавлено меню в нижней строке. Выбранный пункт остается "подсвеченным".
Вывел отдельно настройки цветов:

var t_color = RGB(160,160,160); - основной цвет текста;
var m_color = RGB(100,100,100); - основной цвет текста меню;
var sel_color = RGB(250,250,250); - цвет текста при выборе;
var sel_bg_color = RGB(100,100,100); - цвет фона при выборе.

шрифт для текста меню: var font2.

Безымянный.png
Безымянный.png (5.4 КБ) Просмотров: 3706


Код: Выделить всё
function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }
function RGBA(r, g, b, a) { return ((a << 24) | (r << 16) | (g << 8) | (b)); }

var font = gdi.Font("arial",12,1);
var font2 = gdi.Font("arial",10,0);
var ww = window.Width;   
var wh = window.Height; 

DT_CENTER = 0x00000001;
DT_RIGHT = 0x00000002;
DT_SINGLELINE = 0x00000020;
DT_VCENTER = 0x00000004;

var t_color = RGB(160,160,160);
var m_color = RGB(100,100,100);
var sel_color = RGB(250,250,250);
var sel_bg_color = RGB(100,100,100);

var t_row = 1, t_row1, t_row2, t_row3, t_height;
var string = "", search_query;
var tag_search = window.GetProperty("tag_search", 1);
var previous_pll = plman.ActivePlaylist;

var sort = "%album artist%|%date%|%album%|%discnumber%|%tracknumber%|%title%";
var on_mouse = false;
var ab, ab1, ab2;
var ab_I, ab_C, ab_F, ab_M;
var it, it1, it2, itM;
var line1, line2;
var lang = 1;

function on_paint(gr) {
    gr.FillSolidRect (0, 0, ww, wh, RGB(30,30,30));
   
    t_height = gr.CalcTextheight("abc", font) + 3;
    t_row1 = t_row + t_height + 0;
    t_row2 = t_row1 + t_height + 0;
    t_row3 = t_row2 + t_height + 0;

    ab_I = Array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","<","...")
    ab_F = Array("1","2","3","4","5","6","7","8","9","0","#",",","-",":"," ","<","...")
    ab_C = Array("А","Б","В","Г","Д","Е","Ё","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю","Я"," ","<","...")   
    ab_M = Array("all","artist","album","title","genre","date");
    itM = ab_M.length;

    if (lang == 1) ab = ab_I.concat("ая","09");
    if (lang == 2) ab = ab_C.concat("az","09");
    if (lang == 3) ab = ab_F.concat("az","ая");
       
    it = ab.length;

    it1 = Math.round(it/2);
    it2 = it - it1;
    ab1 = ab.splice(0,it1);
    ab2 = ab.splice(0,it2);

    if(on_mouse && line1) gr.FillSolidRect (x_col1, t_row1, ww / it1, t_height, sel_bg_color);
    if(on_mouse && line2) gr.FillSolidRect (x_col2, t_row2, ww / it2, t_height, sel_bg_color);
    if(on_mouse && line3) gr.FillSolidRect (x_col3, t_row3, ww / itM, t_height, sel_bg_color);

    gr.GdiDrawText(string, font, search ? sel_color : t_color, 10, t_row, ww , t_height, DT_SINGLELINE | DT_VCENTER);

    for (var i = 0; i < it1; i = i + 1) {
        color = x_color > ww / it1 * i && x_color < ww / it1 * (i + 1) && on_mouse && line1 ? sel_color : t_color;
        gr.GdiDrawText(ab1[i] == " " ? "_" : ab1[i], font, color, ww / it1 * i, t_row1, ww / it1 , t_height, DT_CENTER |DT_SINGLELINE | DT_VCENTER);   
    }
   
    for (var i = 0; i < it2; i = i + 1) {
        color = x_color > ww / it2 * i && x_color < ww / it2 * (i + 1) && on_mouse && line2 ? sel_color : t_color;
        gr.GdiDrawText(ab2[i] == " " ? "_" : ab2[i], font, color, ww / it2 * i, t_row2, ww / it2 , t_height, DT_CENTER |DT_SINGLELINE | DT_VCENTER);   
    }
   
    for (var i = 0; i < itM; i = i + 1) {
        color = (x_color > ww / itM * i && x_color < ww / itM * (i + 1) && on_mouse && line3) || tag_search == i + 1 ? sel_color : m_color;
        gr.GdiDrawText(ab_M[i], font2, color, ww / itM * i, t_row3, ww / itM , t_height, DT_CENTER |DT_SINGLELINE | DT_VCENTER);   
    }

//    gr.GdiDrawText(tag_search + "   " + search, font, RGB(200,200,200), ww - 100, 1, ww  , wh);
}

var ch;

function on_mouse_lbtn_up (x, y){
    if (!line1 && !line2 && !line3) return; // ???
    if (!search) previous_pll = plman.ActivePlaylist;
    library_view_idx();
   
    for (var i = 0; i <= it1; i = i + 1) {
        if (x > ww / it1 * i && x < ww / it1 * (i + 1) && line1) {ch = ab1[i]}
    }
    for (var i = 0; i <= it2; i = i + 1) {
        if (x > ww / it2 * i && x < ww / it2 * (i + 1) && line2) {ch = ab2[i]}
    }
    for (var i = 0; i <= itM; i = i + 1) {
        if (x > ww / itM * i && x < ww / itM * (i + 1) && line3) {
            tag_search = i + 1;
            tag_search_change();
            return;
        }
    }

    window.Repaint();
    if (ch == "az") {ch = ""; lang = 1; return};
    if (ch == "ая") {ch = ""; lang = 2; return};
    if (ch == "09") {ch = ""; lang = 3; return};
    if (ch == "<")  {ch = ""; string = string.substring(0,string.length - 1)};   
    if (ch == "..."){ch = ""; string = ""};

    string = string + ch;   
    string = string.charAt(0) == " " ? "" : string;
    string = string.replace("  "," ");
    if (string.length > 0 || search) pll_search();
}

var search = false;
var count;

function pll_search() {
   
    remove_pll("search");
   
    switch(tag_search) {
        case 1:
            search_query = "%artist% HAS " + string + " OR " + "%album% HAS " + string + " OR " + "%title% HAS " + string + " OR " + "%genre% HAS " + string + " OR " + "%date% HAS " + string;
            break;
        case 2:
            search_query = "%artist% HAS " + string;
            break;
        case 3:
            search_query = "%album% HAS " + string;
            break;
        case 4:
            search_query = "%title% HAS " + string;
            break;
        case 5:
            search_query = "%genre% HAS " + string;
            break;
        case 6:
            search_query = "%date% HAS " + string;
            break;
    }
   
    idx = plman.PlaylistCount;
    fb.CreateAutoPlaylist(idx, "search", search_query, sort, 0);
    count = fb.PlaylistItemCount(idx)
   
    if (count > 0) {
        fb.ActivePlaylist = idx; search = true
    } else {
//        fb.ActivePlaylist = previous_pll;   // ???
//        fb.ActivePlaylist = 0;            // ???
        fb.ActivePlaylist = lib_v_idx;    // ???
        remove_pll("search");
        search = false;
    }
}

function remove_pll(pll_name){
    search = false;
    remove_idx = fb.PlaylistCount;
    for (var i = 0; i < remove_idx; i++) {
       if (fb.GetPlaylistName(i) == pll_name) {fb.RemovePlaylist(i)}
    }
}

var lib_v_idx;
function library_view_idx(){
    idx = fb.PlaylistCount;
    for (var i = 0; i < idx; i++) {
       if (fb.GetPlaylistName(i) == "Library view") {lib_v_idx = i}
    }
}

function on_playback_starting(cmd, is_paused) {
    string = "";
    search = false;
    if (fb.GetPlaylistName(fb.ActivePlaylist) != "search") {remove_pll("search");}
}

var x_col1, x_col2;
var y_row;
var x_color;

function on_mouse_move(x,y) {
    window.SetCursor(32649);
    on_mouse = true;
//    line1 = y_row < t_row1 + t_height ? true : false;
    line1 = y_row > t_row1 && y_row < t_row1 + t_height ? true : false;
    line2 = y_row > t_row2 && y_row < t_row2 + t_height ? true : false;
    line3 = y_row > t_row3 && y_row < t_row3 + t_height ? true : false;
    y_row = y;
    x_color = x;

    for (var i = 0; i < it1; i = i + 1) {
        if (x > ww / it1 * i) {x_col1 = ww / it1 * i}             
    }
    for (var i = 0; i < it2; i = i + 1) {
        if (x > ww / it2 * i) {x_col2 = ww / it2 * i}             
    }
    for (var i = 0; i < itM; i = i + 1) {
        if (x > ww / itM * i) {x_col3 = ww / itM * i}             
    }     
    window.Repaint();
}

function on_size(){   
    ww = window.Width;   
    wh = window.Height;   
}   

function on_mouse_leave() {
    window.SetCursor(32512);
    on_mouse = false;
    window.Repaint();
}

function on_mouse_rbtn_up (x, y){ 
    var _menu = window.CreatePopupMenu();
    var i = 1;

    _menu.AppendMenuItem(0x00000000, i++, "all");
    _menu.AppendMenuItem(0x00000000, i++, "artist");
    _menu.AppendMenuItem(0x00000000, i++, "album");
    _menu.AppendMenuItem(0x00000000, i++, "title");
    _menu.AppendMenuItem(0x00000000, i++, "genre");
    _menu.AppendMenuItem(0x00000000, i++, "date");

    _menu.CheckMenuRadioItem(1, 6, tag_search);
    _menu.EnableMenuItem(tag_search, 1);   
   
    _menu.AppendMenuItem(0x00000800, 0, 0);   
    _menu.AppendMenuItem(0x00000000, 10, "Configure ...");

    ret = _menu.TrackPopupMenu(x, y);
    if (ret == 0) return;

    switch (ret) {
    case 1:
        tag_search = 1;
        tag_search_change();
        break;
    case 2:
        tag_search = 2;
        tag_search_change();
        break;
    case 3:
        tag_search = 3;
        tag_search_change();
        break;
    case 4:
        tag_search = 4;
        tag_search_change();
        break;
    case 5:
        tag_search = 5;
        tag_search_change();
        break;
    case 6:
        tag_search = 6;
        tag_search_change();
        break;
    case 10:   
        window.ShowConfigure();   
        break;   
    }
    _menu.Dispose();
    return true;
}

function tag_search_change(){
    window.SetProperty("tag_search", tag_search);
    if (string.length > 0) pll_search();
}
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #215 macarych » 02.02.2015, 17:10

Спасибо.
macarych M
Аватара
Репутация: 417
С нами: 15 лет 10 месяцев

Сообщение #216 kgena_ua » 02.02.2015, 19:33

macarych, а может rating добавить в меню.
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #217 macarych » 02.02.2015, 19:52

Думаю, хуже от этого не будет.
macarych M
Аватара
Репутация: 417
С нами: 15 лет 10 месяцев

Сообщение #218 seriousstas » 02.02.2015, 20:16

kgena_ua
Спасибо ! Удобно для мыши (и работает) , но с тачем (мульти) путаются символы ,
иногда нужно тыкать 2-3 раза (другие кнопки Фубара стартуют сразу) :
http://youtu.be/NgNAcfdXJmw
как я понял проблема с первым нажатием
Тестил на сенсорном моноблоке 21' и в машине 7'
c ELPlaylist
Тут скрины из машины :
http://pccar.ru/showpost.php?p=319477&postcount=1068
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 9 месяцев

Сообщение #219 kgena_ua » 02.02.2015, 23:00

seriousstas, тут все привязано к координатам положения мышки x и y. Если эти координаты находятся внутри ячейки, то выводится символ.
Размеры ячейки:
ширина = ширина панели / к-во символов в строке;
высота = координата строки + высота строки.
Я думаю (т.к. не имею в распоряжении тачскрин), что при нажатии могут "задеваться" две ячейки одновременно.
Можно попробовать увеличить высоту строки (ячейки):
стр.35
t_height = gr.CalcTextheight("abc", font) + 3; (увеличить выделенное);
Можно попробовать увеличить расстояние между строками:
стр.36-38
t_row1 = t_row + t_height + 0;
t_row2 = t_row1 + t_height + 0;
t_row3 = t_row2 + t_height + 0;
Можно увеличит ширину ячейки, выводя буквы в три строки.
seriousstas, а на цифровой раскладке, если увеличить высоту строки t_height (там меньше символов по ширине) сбои будут наблюдаться?

Добавлен пункт меню "рейтинг" :
Код: Выделить всё
function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }
function RGBA(r, g, b, a) { return ((a << 24) | (r << 16) | (g << 8) | (b)); }

var font = gdi.Font("arial",12,1);
var font2 = gdi.Font("arial",10,0);
var ww = window.Width;   
var wh = window.Height; 

DT_CENTER = 0x00000001;
DT_RIGHT = 0x00000002;
DT_SINGLELINE = 0x00000020;
DT_VCENTER = 0x00000004;

var t_color = RGB(180,180,180);
var m_color = RGB(100,100,100);
var sel_color = RGB(250,250,250);
var sel_bg_color = RGB(100,100,100);

var t_row = 1, t_row1, t_row2, t_row3, t_height;
var string = "", search_query;
var tag_search = window.GetProperty("tag_search", 1);
var previous_pll = plman.ActivePlaylist;

var sort = "%album artist%|%date%|%album%|%discnumber%|%tracknumber%|%title%";
var on_mouse = false;
var ab, ab1, ab2;
var ab_I, ab_C, ab_F, ab_M;
var it, it1, it2, itM;
var line1, line2;
var lang = 1;

function on_paint(gr) {
    gr.FillSolidRect (0, 0, ww, wh, RGB(30,30,30));
   
    t_height = gr.CalcTextheight("abc", font) + 3;
    t_row1 = t_row + t_height + 0;
    t_row2 = t_row1 + t_height + 0;
    t_row3 = t_row2 + t_height + 0;

    ab_I = Array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","<","...")
    ab_F = Array("1","2","3","4","5","6","7","8","9","0","#",",","-",":"," ","<","...")
    ab_C = Array("А","Б","В","Г","Д","Е","Ё","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю","Я"," ","<","...")   
    ab_M = Array("all","artist","album","title","genre","date","rating");
    itM = ab_M.length;

    if (lang == 1) ab = ab_I.concat("ая","09");
    if (lang == 2) ab = ab_C.concat("az","09");
    if (lang == 3) ab = ab_F.concat("az","ая");
       
    it = ab.length;

    it1 = Math.round(it/2);
    it2 = it - it1;
    ab1 = ab.splice(0,it1);
    ab2 = ab.splice(0,it2);

    if(on_mouse && line1) gr.FillSolidRect (x_col1, t_row1, ww / it1, t_height, sel_bg_color);
    if(on_mouse && line2) gr.FillSolidRect (x_col2, t_row2, ww / it2, t_height, sel_bg_color);
    if(on_mouse && line3) gr.FillSolidRect (x_col3, t_row3, ww / itM, t_height, sel_bg_color);

    gr.GdiDrawText(string, font, search ? sel_color : t_color, 10, t_row, ww , t_height, DT_SINGLELINE | DT_VCENTER);

    for (var i = 0; i < it1; i = i + 1) {
        color = x_color > ww / it1 * i && x_color < ww / it1 * (i + 1) && on_mouse && line1 ? sel_color : t_color;
        gr.GdiDrawText(ab1[i] == " " ? "_" : ab1[i], font, color, ww / it1 * i, t_row1, ww / it1 , t_height, DT_CENTER |DT_SINGLELINE | DT_VCENTER);   
    }
   
    for (var i = 0; i < it2; i = i + 1) {
        color = x_color > ww / it2 * i && x_color < ww / it2 * (i + 1) && on_mouse && line2 ? sel_color : t_color;
        gr.GdiDrawText(ab2[i] == " " ? "_" : ab2[i], font, color, ww / it2 * i, t_row2, ww / it2 , t_height, DT_CENTER |DT_SINGLELINE | DT_VCENTER);   
    }
   
    for (var i = 0; i < itM; i = i + 1) {
        color = (x_color > ww / itM * i && x_color < ww / itM * (i + 1) && on_mouse && line3) || tag_search == i + 1 ? sel_color : m_color;
        gr.GdiDrawText(ab_M[i], font2, color, ww / itM * i, t_row3, ww / itM , t_height, DT_CENTER |DT_SINGLELINE | DT_VCENTER);   
    }

//    gr.GdiDrawText("", font2, RGB(200,200,200), 0, 5, ww  , wh, DT_RIGHT);

}

var ch;

function on_mouse_lbtn_up (x, y){
    if (!line1 && !line2 && !line3) return; // ???
    if (!search) previous_pll = plman.ActivePlaylist;
    library_view_idx();
   
    for (var i = 0; i < it1; i = i + 1) {
        if (x > ww / it1 * i && x < ww / it1 * (i + 1) && line1) {ch = ab1[i]}
    }
    for (var i = 0; i < it2; i = i + 1) {
        if (x > ww / it2 * i && x < ww / it2 * (i + 1) && line2) {ch = ab2[i]}
    }
    for (var i = 0; i < itM; i = i + 1) {
        if (x > ww / itM * i && x < ww / itM * (i + 1) && line3) {
            tag_search = i + 1;
            tag_search_change();
            return;
        }
    }

    window.Repaint();
    if (ch == "az") {ch = ""; lang = 1; return};
    if (ch == "ая") {ch = ""; lang = 2; return};
    if (ch == "09") {ch = ""; lang = 3; return};
    if (ch == "<")  {ch = ""; string = string.substring(0,string.length - 1)};   
    if (ch == "..."){ch = ""; string = ""};

    string = string + ch;   
    string = string.charAt(0) == " " ? "" : string;
    string = string.replace("  "," ");
    if (string.length > 0 || search) pll_search();
}

var search = false;
var count;

function pll_search() {
   
    remove_pll("search");
   
    switch(tag_search) {
        case 1:
            search_query =  "%artist% HAS " + string + " OR " + "%album% HAS " + string + " OR " + "%title% HAS " + string + " OR " + "%genre% HAS " + string + " OR " + "%date% HAS " + string;
            break;
        case 2:
            search_query =  "%artist% HAS " + string;
            break;
        case 3:
            search_query =  "%album% HAS " + string;
            break;
        case 4:
            search_query =  "%title% HAS " + string;
            break;
        case 5:
            search_query =  "%genre% HAS " + string;
            break;
        case 6:
            search_query =  "%date% HAS " + string;
            break;
        case 7:
            search_query =  "rating HAS "  + string.charAt(0) + " OR " + "%rating% HAS " + string.charAt(0)
                            + " OR " + "rating HAS "  + string.charAt(1) + " OR " + "%rating% HAS " + string.charAt(1)
                            + " OR " + "rating HAS "  + string.charAt(2) + " OR " + "%rating% HAS " + string.charAt(2)
                            + " OR " + "rating HAS "  + string.charAt(3) + " OR " + "%rating% HAS " + string.charAt(3)           
                            + " OR " + "rating HAS "  + string.charAt(4) + " OR " + "%rating% HAS " + string.charAt(4)           
            ;
            break;
    }
   
    idx = plman.PlaylistCount;
    fb.CreateAutoPlaylist(idx, "search", search_query, sort, 0);
    count = fb.PlaylistItemCount(idx)
   
    if (count > 0) {
        fb.ActivePlaylist = idx; search = true
    } else {
//        fb.ActivePlaylist = previous_pll;   // ???
//        fb.ActivePlaylist = 0;            // ???
        fb.ActivePlaylist = lib_v_idx;    // ???
        remove_pll("search");
        search = false;
    }
}

function remove_pll(pll_name){
    search = false;
    remove_idx = fb.PlaylistCount;
    for (var i = 0; i < remove_idx; i++) {
       if (fb.GetPlaylistName(i) == pll_name) {fb.RemovePlaylist(i)}
    }
}

var lib_v_idx;
function library_view_idx(){
    idx = fb.PlaylistCount;
    for (var i = 0; i < idx; i++) {
       if (fb.GetPlaylistName(i) == "Library view") {lib_v_idx = i}
    }
}

function on_playback_starting(cmd, is_paused) {
    string = "";
    search = false;
    if (fb.GetPlaylistName(fb.ActivePlaylist) != "search") {remove_pll("search");}
}

var x_col1, x_col2;
var y_row;
var x_color;

function on_mouse_move(x,y) {
    window.SetCursor(32649);
    on_mouse = true;
//    line1 = y_row < t_row1 + t_height ? true : false;
    line1 = y_row >= t_row1 && y_row <= t_row1 + t_height ? true : false;
    line2 = y_row >= t_row2 && y_row <= t_row2 + t_height ? true : false;
    line3 = y_row >= t_row3 && y_row <= t_row3 + t_height ? true : false;
    y_row = y;
    x_color = x;

    for (var i = 0; i < it1; i = i + 1) {
        if (x > ww / it1 * i) {x_col1 = ww / it1 * i}
    }
    for (var i = 0; i < it2; i = i + 1) {
        if (x > ww / it2 * i) {x_col2 = ww / it2 * i}             
    }
    for (var i = 0; i < itM; i = i + 1) {
        if (x > ww / itM * i) {x_col3 = ww / itM * i}             
    }     
    window.Repaint();
}

function on_size(){   
    ww = window.Width;   
    wh = window.Height;   
}   

function on_mouse_leave() {
    window.SetCursor(32512);
    on_mouse = false;
    window.Repaint();
}

function on_mouse_rbtn_up (x, y){ 
    var _menu = window.CreatePopupMenu();
    var i = 1;

    _menu.AppendMenuItem(0x00000000, i++, "all");
    _menu.AppendMenuItem(0x00000000, i++, "artist");
    _menu.AppendMenuItem(0x00000000, i++, "album");
    _menu.AppendMenuItem(0x00000000, i++, "title");
    _menu.AppendMenuItem(0x00000000, i++, "genre");
    _menu.AppendMenuItem(0x00000000, i++, "date");
    _menu.AppendMenuItem(0x00000000, i++, "rating");

    _menu.CheckMenuRadioItem(1, i, tag_search);
    _menu.EnableMenuItem(tag_search, 1);   
   
    _menu.AppendMenuItem(0x00000800, 0, 0);   
    _menu.AppendMenuItem(0x00000000, 10, "Configure ...");

    ret = _menu.TrackPopupMenu(x, y);
    if (ret == 0) return;

    switch (ret) {
    case 1:
        tag_search = 1;
        tag_search_change();
        break;
    case 2:
        tag_search = 2;
        tag_search_change();
        break;
    case 3:
        tag_search = 3;
        tag_search_change();
        break;
    case 4:
        tag_search = 4;
        tag_search_change();
        break;
    case 5:
        tag_search = 5;
        tag_search_change();
        break;
    case 6:
        tag_search = 6;
        tag_search_change();
        break;
    case 7:
        tag_search = 7;
        tag_search_change();
        break;
    case 10:   
        window.ShowConfigure();   
        break;   
    }
    _menu.Dispose();
    return true;
}

function tag_search_change(){
    window.SetProperty("tag_search", tag_search);
    if (string.length > 0) pll_search();
}
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет 7 месяцев

Сообщение #220 seriousstas » 02.02.2015, 23:31

Можно попробовать увеличить высоту строки (ячейки):
Я это сразу сделал (увеличивал выделенные значения) - иначе управлять на 7` - только зубочисткой ,
но и если по умолчанию настройки - тоже неверно вводит символы .

Я думаю (т.к. не имею в распоряжении тачскрин), что при нажатии могут "задеваться" две ячейки одновременно.
Возможно, но почему только первое нажатие ?
Если посмотрите на видео - повторное нажатие и последующие выводят правильные символы .
И повторюсь - делал тэсты на совершенно разных ПК
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 9 месяцев

Пред.След.

Вернуться в Секреты foobar2000