-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdev-log.txt
More file actions
118 lines (86 loc) · 3.89 KB
/
dev-log.txt
File metadata and controls
118 lines (86 loc) · 3.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
2010年1月9日 V0.2完成(历时半个月):
1.歌词在状态栏同步显示
2.首选项>歌词设置
3.首选项>网络设置(设置代理服务器)
4.关联歌词,提供本地搜索,用户可自己关联歌词文件.
5.在线搜索,从网络上搜索歌词并下载(盗用了百度的mp3搜索,下载LRC歌词极其方便).
6.调整歌词偏移量(7种调整方式)(在工具栏增加"歌词慢了!","歌词快了!"两个按钮,方便实时调整,会实时保存偏移量到歌词文件)
7.自动识别歌词文件的编码方式.拒绝乱码.
其它更新:
1.一键恢复工具栏到默认布局,同时恢复窗口到默认大小
2.现在除了自动保存工具栏布局外,也会自动保存窗口大小和位置。
3.所依赖的SWT,JFace升级到最新的3.5版
2009年9月
系统全局热键设置完成
2009年8月23日
工具栏折行,右键锁定工具栏
新增音量控制
新增操作播放列表的工具栏
新增播放顺序选择下拉框
退出时自动保存工具栏布局,音量,播放顺序等参数
优化了进度条的拖动,可平滑拖动以控制播放进度
不爽的地方:
找不到正常一点的,进度条控制及音量控制组件只好用了Slider
下一功能:
系统全局热键设置
11:48 2009-8-21
TreeSelection selection = (TreeSelection) treeViewer.getSelection();
if (!selection.isEmpty()) {
for (Iterator iterator = selection.iterator(); iterator.hasNext();) {
移动到目标位置上后,移动的item继续保存选中状态,并且,移动前后的滚动条位置不应改变
16:02 2009-8-21
我错了。昨天一天的辛苦白费了
重头再来
原来所有的StructuredViewer自带DND的支持。
dragStart
validateDrop
validateDrop
validateDrop
performDrop
dragFinished
21:43 2009-8-20
现在拖动一个或多个文件到播放列表时会出现插入位置指示线
现在可以在播放列表内自由移动item
现在正在播放的item前会出现三角形标记
烦恼:
TableViewer在DND时FEEDBACK_INSERT_BEFORE/AFTER无效,改用TreeViewer
该死的TreeViewer会自动帮你排序。
去掉treeViewer.setSorter(new MyViewerSorter());一句即可。
但是
去掉后点表头就不能排序了。
最后,我在ViewSorter里加了一个enable变量,默认是false, compare的时候如果enble=false就直接返回0,这样就排不成了。
只在点表头的时候才让enable=true,处理完又立马将其置为false.
Search Playlist
搜索框试了addKeyListener和addVerifyListener均出现令人恼火的现象
最后用了ModifyListener
列表内的选中多个item移动算法!计算移动后的新位置!难啊,搞得俺不得不拿出纸和笔在本上慢慢推导:
测试用例:
比如有0,1,2,3,4,5,6,7,现在选中1,2,5,7要移动3后面,变成
0,3,1,2,5,4,6
再比如0,1,2,3,4,5,6,7,现在选中0,2,3,6,7移动到2后面,变成
1,0,2,3,6,7,4,5
推导出如下公式(所有变量从0开始)
假设目标位置为pos(用例1中的pos=4)
拖动前选中item的下标保存在dragItem数组中(用例1中dragItem=[1,2,5,7])
upcount表示相对于pos向前移动了的item的个数,就是位置>=pos的(用例1中upcount=2,分别是5,7)
i表示dragItem的下标(用例1中有4个要移动的item,i=0,1,2,3)
i2表示向前移动了的item的下标[第一个向前移动的i2=0]
先计算upcount
遍历dragItem, 只要是dragItem[i]>pos就upcount++;
然后就开始做移动操作了
第一步:先复制所有的要移动的item到pos,新位置的下标为
pos+i
第二步:删除移动过的item
for(i=0, i<dragItem.length;i++){
if(dragItem[i]<pos){//在pos前的
删除dragItem[i]-i
} else if(dragItem[i]>=pos){//在pos后的
删除dragItem[i] + upcount-(i2++)
}
}
这样,理论上播放列表内的拖放功能就实现了
====================== 分割线 ======================
今天研究了一天的DND!,靠还真是复杂。做做笔记
拖文件进来
自己拖自己
拖走